API NLClassifier
Task Library، متن ورودی را در دستههای مختلف طبقهبندی میکند، و یک API همه کاره و قابل تنظیم است که میتواند اکثر مدلهای طبقهبندی متن را مدیریت کند.
ویژگی های کلیدی NLClassifier API
یک رشته را به عنوان ورودی می گیرد، طبقه بندی را با رشته و خروجی انجام می دهد
Regex Tokenization اختیاری برای متن ورودی موجود است.
قابل تنظیم برای تطبیق مدل های طبقه بندی مختلف.
مدل های NLClassifier پشتیبانی شده
مدلهای زیر با NLClassifier
API سازگار هستند.
مدلهایی با مشخصات
average_word_vec
که توسط TensorFlow Lite Model Maker برای طبقهبندی متن ایجاد شدهاند.مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از NLClassifier
در برنامه اندروید، به برنامه مرجع طبقه بندی متن مراجعه کنید.
مرحله 1: وابستگی Gradle و تنظیمات دیگر را وارد کنید
فایل مدل .tflite
. را در فهرست داراییهای ماژول اندروید که مدل اجرا میشود، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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.3.0'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.3.0'
}
مرحله 2: استنتاج را با استفاده از API اجرا کنید
// 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.2.0'
end
مرحله 2: استنتاج را با استفاده از API اجرا کنید
// 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_file);
std::unique_ptr<NLClassifier> classifier = NLClassifier::CreateFromOptions(options).value();
// Run inference
std::vector<core::Category> categories = classifier->Classify(kInput);
برای جزئیات بیشتر به کد منبع مراجعه کنید.
نتایج نمونه
در اینجا نمونه ای از نتایج طبقه بندی مدل بررسی فیلم آورده شده است.
ورودی: "چه اتلاف وقت من است."
خروجی:
category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'
ابزار آزمایشی ساده CLI را برای NLClassifier با مدل و داده های آزمایشی خود امتحان کنید.
الزامات سازگاری مدل
بسته به مورد استفاده، NLClassifier
API میتواند یک مدل TFLite را با یا بدون فراداده مدل TFLite بارگیری کند. نمونههایی از ایجاد ابرداده برای طبقهبندیکنندههای زبان طبیعی با استفاده از TensorFlow Lite Metadata Writer API را ببینید.
مدل های سازگار باید شرایط زیر را برآورده کنند:
تانسور ورودی: (kTfLiteString/kTfLiteInt32)
تانسور امتیاز خروجی: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)
تانسور خروجی اجباری برای امتیاز هر دسته طبقه بندی شده.
اگر نوع یکی از انواع Int است، آن را به سکوهای مربوطه دوبرابر/ شناور کنید
میتواند یک فایل مرتبط اختیاری در فراداده مربوط به تانسور خروجی برای برچسبهای دستهبندی داشته باشد، فایل باید یک فایل متنی ساده با یک برچسب در هر خط باشد، و تعداد برچسبها باید با تعداد دستهها به عنوان خروجی مدل مطابقت داشته باشد. نمونه فایل برچسب را ببینید.
تانسور برچسب خروجی: (kTfLiteString/kTfLiteInt32)
تانسور خروجی اختیاری برای برچسب برای هر دسته، باید به اندازه طول تانسور امتیاز خروجی باشد. اگر این تانسور وجود نداشته باشد، API از شاخص های امتیاز به عنوان نام کلاس استفاده می کند.
اگر فایل برچسب مرتبط در فراداده تانسور امتیاز خروجی وجود داشته باشد نادیده گرفته خواهد شد.