ادغام طبقه بندی زبان طبیعی BERT

Task Library BertNLClassifier API بسیار شبیه به NLClassifier است که متن ورودی را در دسته‌های مختلف طبقه‌بندی می‌کند، با این تفاوت که این API به‌ویژه برای مدل‌های مرتبط با Bert که نیاز به توکن‌سازی Wordpiece و Sentencepiece خارج از مدل TFLite دارند، طراحی شده است.

ویژگی های کلیدی BertNLClassifier API

  • یک رشته را به عنوان ورودی می گیرد، طبقه بندی را با رشته و خروجی انجام می دهد جفت به عنوان نتایج طبقه بندی.

  • در متن ورودی، توکن‌سازی‌های متنی یا جمله‌ای خارج از نمودار را انجام می‌دهد.

مدل های BertNLClassifier پشتیبانی می شود

مدل های زیر با BertNLClassifier API سازگار هستند.

استنتاج را در جاوا اجرا کنید

مرحله 1: وابستگی Gradle و تنظیمات دیگر را وارد کنید

فایل مدل .tflite را در فهرست دارایی‌های ماژول Android که در آن مدل اجرا می‌شود، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه TensorFlow Lite را به فایل build.gradle ماژول اضافه کنید:

android {
    // Other settings

    // Specify tflite file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Text Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.4.4'
}

مرحله 2: استنتاج را با استفاده از API اجرا کنید

// Initialization
BertNLClassifierOptions options =
    BertNLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().setNumThreads(4).build())
        .build();
BertNLClassifier classifier =
    BertNLClassifier.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Category> results = classifier.classify(input);

برای جزئیات بیشتر به کد منبع مراجعه کنید.

استنتاج را در سوئیفت اجرا کنید

مرحله 1: CocoaPods را وارد کنید

غلاف TensorFlowLiteTaskText را در Podfile اضافه کنید

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.4.4'
end

مرحله 2: استنتاج را با استفاده از API اجرا کنید

// Initialization
let bertNLClassifier = TFLBertNLClassifier.bertNLClassifier(
      modelPath: bertModelPath)

// Run inference
let categories = bertNLClassifier.classify(text: input)

برای جزئیات بیشتر به کد منبع مراجعه کنید.

استنتاج را در C++ اجرا کنید

// Initialization
BertNLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
std::vector<core::Category> categories = classifier->Classify(input_text);

برای جزئیات بیشتر به کد منبع مراجعه کنید.

استنتاج را در پایتون اجرا کنید

مرحله 1: بسته pip را نصب کنید

pip install tflite-support

مرحله 2: استفاده از مدل

# Imports
from tflite_support.task import text

# Initialization
classifier = text.BertNLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

برای گزینه های بیشتر برای پیکربندی BertNLClassifier به کد منبع مراجعه کنید.

نتایج نمونه

در اینجا نمونه ای از نتایج طبقه بندی بررسی فیلم ها با استفاده از مدل MobileBert از Model Maker آورده شده است.

ورودی: "این یک سفر جذاب و اغلب تاثیرگذار است"

خروجی:

category[0]: 'negative' : '0.00006'
category[1]: 'positive' : '0.99994'

ابزار ساده CLI برای BertNLClassifier را با مدل و داده های آزمایشی خود امتحان کنید.

الزامات سازگاری مدل

BetNLClassifier API انتظار یک مدل TFLite با فراداده مدل TFLite اجباری را دارد.

فراداده باید شرایط زیر را برآورده کند:

  • input_process_units برای Wordpiece/Sentencepiece Tokenizer

  • 3 تانسور ورودی با نام‌های "ids"، "mask" و "segment_ids" برای خروجی توکنایزر

  • 1 تانسور خروجی از نوع float32، با یک فایل برچسب به صورت اختیاری. اگر یک فایل برچسب ضمیمه شده است، فایل باید یک فایل متنی ساده با یک برچسب در هر خط باشد و تعداد برچسب ها باید با تعداد دسته ها به عنوان خروجی مدل مطابقت داشته باشد.