تقوم واجهة برمجة تطبيقات NLClassifier
الخاصة بمكتبة المهام بتصنيف نص الإدخال إلى فئات مختلفة، وهي واجهة برمجة تطبيقات متعددة الاستخدامات وقابلة للتكوين يمكنها التعامل مع معظم نماذج تصنيف النص.
الميزات الرئيسية لواجهة برمجة تطبيقات NLClassifier
يأخذ سلسلة واحدة كمدخل، ويقوم بالتصنيف باستخدام السلسلة والمخرجات
يتوفر رمز Regex الاختياري لإدخال النص.
شكلي للتكيف مع نماذج التصنيف المختلفة.
نماذج NLClassifier المدعومة
نضمن أن تكون النماذج التالية متوافقة مع NLClassifier
API.
نموذج تصنيف مشاعر مراجعة الفيلم .
النماذج ذات مواصفات
average_word_vec
التي تم إنشاؤها بواسطة TensorFlow Lite Model Maker لتصنيف النص .نماذج مخصصة تلبي متطلبات توافق النموذج .
تشغيل الاستدلال في جافا
راجع التطبيق المرجعي لتصنيف النص للحصول على مثال حول كيفية استخدام 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) مؤشرات النتيجة كأسماء فئة.
سيتم تجاهله إذا كان ملف التسمية المرتبط موجودًا في البيانات التعريفية لموتر نتيجة الإخراج.