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

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

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

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

  • توکن‌سازی Regex اختیاری برای متن ورودی موجود است.

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

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

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

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

برای مثالی از نحوه استفاده از NLClassifier در یک برنامه اندروید، به برنامه مرجع طبقه‌بندی متن مراجعه کنید.

مرحله ۱: وارد کردن وابستگی Gradle و سایر تنظیمات

فایل مدل .tflite را در دایرکتوری assets ماژول اندروید که مدل در آن اجرا خواهد شد، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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'
}

مرحله ۲: اجرای استنتاج با استفاده از 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

مرحله ۲: اجرای استنتاج با استفاده از 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);

برای جزئیات بیشتر به کد منبع مراجعه کنید.

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

مرحله ۱: نصب بسته pip

pip install tflite-support

مرحله ۲: استفاده از مدل

# 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 را با مدل و داده‌های آزمایشی خودتان امتحان کنید.

الزامات سازگاری مدل

بسته به مورد استفاده، API NLClassifier می‌تواند یک مدل TFLite را با یا بدون فراداده مدل TFLite بارگذاری کند. نمونه‌هایی از ایجاد فراداده برای طبقه‌بندی‌کننده‌های زبان طبیعی با استفاده از API نویسنده فراداده TensorFlow Lite را ببینید.

مدل‌های سازگار باید شرایط زیر را داشته باشند:

  • تانسور ورودی: (kTfLiteString/kTfLiteInt32)

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

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

    • اگر نوع یکی از انواع Int است، آن را به دو برابر/اعشاری کردن به پلتفرم‌های مربوطه، dequantize کنید.

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

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

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

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