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

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

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

  • يأخذ سلسلة واحدة كمدخل، ويقوم بالتصنيف باستخدام السلسلة والمخرجات أزواج كنتائج التصنيف.

  • تنفيذ رموز مميزة لقطع الكلمات أو قطع الجملة خارج الرسم البياني على النص المُدخل.

نماذج 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: تشغيل الاستدلال باستخدام واجهة برمجة التطبيقات

// 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: تشغيل الاستدلال باستخدام واجهة برمجة التطبيقات

// 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 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، مع ملف تسمية مرفق اختياريًا. إذا تم إرفاق ملف تسمية، فيجب أن يكون الملف ملفًا نصيًا عاديًا مع تسمية واحدة لكل سطر ويجب أن يتطابق عدد التسميات مع عدد الفئات كمخرجات النموذج.