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

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

الميزات الرئيسية في NLClassifier API

  • تتلقّى هذه الدالة سلسلة واحدة كإدخال، وتنفّذ عملية التصنيف باستخدام السلسلة، وتُخرج أزواج <label, score=""> كنتائج التصنيف.</label,>

  • تتوفّر ميزة تقسيم الرموز المميزة باستخدام التعبيرات العادية (Regex) بشكل اختياري للنص المُدخَل.

  • يمكن ضبطه للتكيّف مع نماذج التصنيف المختلفة.

نماذج NLClassifier المتوافقة

نضمن توافق الطُرز التالية مع واجهة برمجة التطبيقات NLClassifier.

تشغيل الاستنتاج في 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
    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.

تشغيل الاستنتاج في Swift

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

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

تشغيل الاستنتاج في Python

الخطوة 1: تثبيت حزمة pip

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'

جرِّب أداة العرض التوضيحي البسيطة لواجهة سطر الأوامر الخاصة بـ NLClassifier باستخدام النموذج وبيانات الاختبار الخاصة بك.

متطلبات التوافق مع الطراز

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

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

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

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

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

    • إذا كان النوع أحد أنواع Int، يجب إلغاء تكميمه إلى double/float على المنصات المعنية

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

  • موتر تصنيف الناتج: (kTfLiteString/kTfLiteInt32)

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

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