API NLClassifier
Task Library، متن ورودی را در دستههای مختلف طبقهبندی میکند، و یک API همه کاره و قابل تنظیم است که میتواند اکثر مدلهای طبقهبندی متن را مدیریت کند.
ویژگی های کلیدی NLClassifier API
یک رشته را به عنوان ورودی می گیرد، طبقه بندی را با رشته و خروجی انجام می دهد
Regex Tokenization اختیاری برای متن ورودی موجود است.
قابل تنظیم برای تطبیق مدل های طبقه بندی مختلف.
مدل های NLClassifier پشتیبانی شده
سازگاری مدل های زیر با NLClassifier
API تضمین شده است.
مدلهایی با مشخصات
average_word_vec
که توسط TensorFlow Lite Model Maker برای طبقهبندی متن ایجاد شدهاند.مدل های سفارشی که الزامات سازگاری مدل را برآورده می کنند.
استنتاج را در جاوا اجرا کنید
برای مثالی از نحوه استفاده از NLClassifier
در برنامه اندروید، به برنامه مرجع طبقه بندی متن مراجعه کنید.
مرحله 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: استنتاج را با استفاده از 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.4.4'
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_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
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 از شاخص های امتیاز به عنوان نام کلاس استفاده می کند.
اگر فایل برچسب مرتبط در فراداده تانسور امتیاز خروجی وجود داشته باشد نادیده گرفته خواهد شد.