دمج مصنف اللغة الطبيعية BERT

واجهة برمجة تطبيقات BertNLClassifier لمكتبة المهام تشبه إلى حد بعيد تصنيف NLClassifier الذي يصنف نص الإدخال إلى فئات مختلفة ، باستثناء أن واجهة برمجة التطبيقات هذه مصممة خصيصًا للنماذج ذات الصلة بـ Bert التي تتطلب رموز Wordpiece و Sentencepiece خارج نموذج TFLite.

الملامح الرئيسية لواجهة برمجة تطبيقات BertNLClassifier

نماذج BertNLClassifier المدعومة

النماذج التالية متوافقة مع BertNLClassifier API.

تشغيل الاستدلال في Java

الخطوة 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.3.0'
}

الخطوة 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);

انظر شفرة المصدر لمزيد من التفاصيل.

تشغيل الاستدلال في Swift

الخطوة 1: استيراد CocoaPods

أضف حجرة TensorFlowLiteTaskText في Podfile

target 'MySwiftAppWithTaskAPI' do
  use_frameworks!
  pod 'TensorFlowLiteTaskText', '~> 0.2.0'
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_file);
std::unique_ptr<BertNLClassifier> classifier = BertNLClassifier::CreateFromOptions(options).value();

// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);

انظر شفرة المصدر لمزيد من التفاصيل.

نتائج المثال

فيما يلي مثال على نتائج تصنيف مراجعات الأفلام باستخدام نموذج MobileBert من Model Maker.

المدخلات: "إنها رحلة ساحرة وغالبًا ما تكون مؤثرة"

انتاج:

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

جرب أداة CLI التجريبية البسيطة لتصنيف BertNLC مع نموذجك وبيانات الاختبار.

متطلبات توافق النموذج

تتوقع BetNLClassifier API نموذج TFLite مع بيانات تعريف إلزامية لنموذج TFLite .

يجب أن تستوفي البيانات الوصفية المتطلبات التالية:

  • input_process_units لـ Wordpiece / Sentencepiece Tokenizer

  • 3 موترلات إدخال بأسماء "معرفات" و "قناع" و "معرفات مقاطع" لإخراج الرمز المميز

  • 1 موتر الإخراج من النوع float32 ، مع ملف تسمية مرفق اختياريًا. إذا تم إرفاق ملف تسمية ، يجب أن يكون الملف عبارة عن ملف نصي عادي مع تسمية واحدة لكل سطر ويجب أن يتطابق عدد الملصقات مع عدد الفئات مثل مخرجات النموذج.