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

تصنف واجهة برمجة تطبيقات NLClassifier الخاصة بمكتبة المهام نص الإدخال إلى فئات مختلفة ، وهي واجهة برمجة تطبيقات متعددة الاستخدامات وقابلة للتكوين يمكنها التعامل مع معظم نماذج تصنيف النص.

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

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

  • يتوفر رمز Regex الاختياري لإدخال النص.

  • قابل للتكوين لتكييف نماذج التصنيف المختلفة.

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

النماذج التالية مضمونة لتكون متوافقة مع NLClassifier API.

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

راجع التطبيق المرجعي لتصنيف النص للحصول على مثال على كيفية استخدام NLClassifier في تطبيق Android.

الخطوة 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 Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-text:0.3.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}

الخطوة 2: قم بتشغيل الاستدلال باستخدام API

// Initialization, use NLClassifierOptions to configure input and output tensors
NLClassifierOptions options =
    NLClassifierOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setInputTensorName(INPUT_TENSOR_NAME)
        .setOutputScoreTensorName(OUTPUT_SCORE_TENSOR_NAME)
        .build();
NLClassifier classifier =
    NLClassifier.createFromFileAndOptions(context, modelFile, options);

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

انظر التعليمات البرمجية المصدر لمزيد من الخيارات لتكوين NLClassifier .

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

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

أضف حجرة TensorFlowLiteTaskText في Podfile

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

الخطوة 2: قم بتشغيل الاستدلال باستخدام API

// Initialization
var modelOptions:TFLNLClassifierOptions = TFLNLClassifierOptions()
modelOptions.inputTensorName = inputTensorName
modelOptions.outputScoreTensorName = outputScoreTensorName
let nlClassifier = TFLNLClassifier.nlClassifier(
      modelPath: modelPath,
      options: modelOptions)

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

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

تشغيل الاستدلال في C ++

// Initialization
NLClassifierOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();

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

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

نتائج المثال

فيما يلي مثال على نتائج التصنيف الخاصة بنموذج مراجعة الفيلم .

الإدخال: "يا له من مضيعة لوقتي."

انتاج:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

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

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

اعتمادًا على حالة الاستخدام ، يمكن لواجهة برمجة تطبيقات NLClassifier تحميل نموذج TFLite مع أو بدون بيانات تعريف نموذج TFLite . شاهد أمثلة على إنشاء البيانات الوصفية لمصنفات اللغة الطبيعية باستخدام TensorFlow Lite Metadata Writer API .

يجب أن تفي النماذج المتوافقة بالمتطلبات التالية:

  • موتر الإدخال: (kTfLiteString / kTfLiteInt32)

    • يجب أن يكون إدخال النموذج إما سلسلة إدخال خام موتر kTfLiteString أو موتر kTfLiteInt32 لمؤشرات regex المميزة لسلسلة الإدخال الأولية.
    • إذا كان نوع الإدخال هو kTfLiteString ، فلا يلزم وجود بيانات وصفية للنموذج.
    • إذا كان نوع الإدخال هو kTfLiteInt32 ، فيجب إعداد RegexTokenizer في البيانات الوصفية لموتّر الإدخال.
  • موتر درجة الإخراج: (kTfLiteUInt8 / kTfLiteInt8 / kTfLiteInt16 / kTfLiteFloat32 / kTfLiteFloat64)

    • موتر الإخراج الإلزامي لنتيجة كل فئة مصنفة.

    • إذا كانت الكتابة هي أحد أنواع Int ، فقم بإلغاء تحديدها لمضاعفة / تعويم الأنظمة الأساسية المقابلة

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

  • موتر تسمية الإخراج: (kTfLiteString / kTfLiteInt32)

    • يجب أن يكون موتر الإخراج الاختياري للتسمية لكل فئة بنفس طول موتر درجة الإخراج. إذا لم يكن هذا الموتر موجودًا ، فإن واجهة برمجة التطبيقات تستخدم فهارس النتيجة كأسماء فئة.

    • سيتم تجاهله إذا كان ملف التسمية المرتبط موجودًا في البيانات الوصفية لموتّر درجات الإخراج.