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