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

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

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

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

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

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

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

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

تنفيذ الاستنتاج في بايثون

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

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

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

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

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

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

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

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

    • إذا كان النوع هو أحد أنواع Int، فقم بتحويله إلى قيمة مزدوجة/عائمة إلى المنصات المقابلة

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

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

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

    • سيتم تجاهله في حال توفُّر ملف التصنيف المرتبط في نتيجة الإخراج. البيانات الوصفية الخاصة بـ Tensor.