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

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

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

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

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

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

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

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

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

برای مثالی از نحوه استفاده از 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)

    • ورودی مدل باید یک رشته ورودی خام تانسور kTfLiteString یا یک تانسور kTfLiteInt32 برای شاخص‌های توکن‌شده regex رشته ورودی خام باشد.
    • اگر نوع ورودی kTfLiteString باشد، هیچ ابرداده ای برای مدل مورد نیاز نیست.
    • اگر نوع ورودی kTfLiteInt32 باشد، باید یک RegexTokenizer در فراداده تانسور ورودی تنظیم شود.
  • تانسور امتیاز خروجی: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • تانسور خروجی اجباری برای امتیاز هر دسته طبقه بندی شده.

    • اگر نوع یکی از انواع Int است، آن را به سکوهای مربوطه دوبرابر/ شناور کنید

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

  • تانسور برچسب خروجی: (kTfLiteString/kTfLiteInt32)

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

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