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

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

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

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

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

  • شكلي للتكيف مع نماذج التصنيف المختلفة.

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

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

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

راجع التطبيق المرجعي لتصنيف النص للحصول على مثال حول كيفية استخدام 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.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

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

// 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 .

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

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

أضف جراب TensorFlowLiteTaskText في Podfile

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

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

// 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_path);
std::unique_ptr<NLClassifier> classifier = NLClassifier::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.NLClassifier.create_from_file(model_path)

# Run inference
text_classification_result = classifier.classify(text)

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

نتائج المثال

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

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

انتاج:

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

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

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

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

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

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

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

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

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

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

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

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

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