دمج مصنِّف اللغة الطبيعية بتنسيق BERT

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

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

  • يتم أخذ سلسلة واحدة كمدخل، ويتم إجراء التصنيف مع السلسلة المخرجات <label, Score=""> الأزواج كنتائج تصنيف.</label,>

  • تنفيذ نصوص Word خارج الرسم البياني أو الجملة عمليات إنشاء رموز مميّزة على النص المُدخَل.

طُرز 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
    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);

اطّلِع على المصدر الرمز لمزيد من التفاصيل.

تنفيذ الاستنتاج باستخدام نظام Swift

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

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 من مصمم النماذج.

الإدخال: "إنّها رحلة ساحرة ومؤثّرة في كثير من الأحيان"

إخراج:

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

جرِّب استخدام أداة CLI التجريبية البسيطة BertNLClassifier باستخدام نموذجك الخاص وبيانات الاختبار.

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

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

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

  • enter_process_units لأداة إنشاء رموز مميّزة لقطعة الكلمات/الجمل

  • 3 قوّات إدخال تحمل أسماء "ids" و"mask" و"segment_ids" لمخرجات أداة إنشاء الرموز المميّزة

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