ادغام طبقه بندی زبان طبیعی

API NLClassifier Task Library، متن ورودی را در دسته‌های مختلف طبقه‌بندی می‌کند، و یک API همه کاره و قابل تنظیم است که می‌تواند اکثر مدل‌های طبقه‌بندی متن را مدیریت کند.

ویژگی های کلیدی NLClassifier API

  • یک رشته را به عنوان ورودی می گیرد، طبقه بندی را با رشته و خروجی انجام می دهد جفت به عنوان نتایج طبقه بندی.

  • Regex Tokenization اختیاری برای متن ورودی موجود است.

  • قابل تنظیم برای تطبیق مدل های طبقه بندی مختلف.

مدل های NLClassifier پشتیبانی شده

سازگاری مدل های زیر با NLClassifier API تضمین شده است.

استنتاج را در جاوا اجرا کنید

برای مثالی از نحوه استفاده از 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 (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: استنتاج را با استفاده از 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 از شاخص های امتیاز به عنوان نام کلاس استفاده می کند.

    • اگر فایل برچسب مرتبط در فراداده تانسور امتیاز خروجی وجود داشته باشد نادیده گرفته خواهد شد.