ইন্টিগ্রেট প্রাকৃতিক ভাষা ক্লাসিফায়ার

টাস্ক লাইব্রেরির NLClassifier এপিআই ইনপুট টেক্সটকে বিভিন্ন বিভাগে শ্রেণীবদ্ধ করে, এবং এটি একটি বহুমুখী এবং কনফিগারযোগ্য API যা বেশিরভাগ পাঠ্য শ্রেণিবিন্যাসের মডেলগুলি পরিচালনা করতে পারে।

NLC Classifier API-এর মূল বৈশিষ্ট্য

  • ইনপুট হিসাবে একটি একক স্ট্রিং নেয়, স্ট্রিং এবং আউটপুটগুলির সাথে শ্রেণীবিভাগ সম্পাদন করে শ্রেণীবিন্যাস ফলাফল হিসাবে জোড়া.

  • ইনপুট পাঠ্যের জন্য ঐচ্ছিক রেজেক্স টোকেনাইজেশন উপলব্ধ।

  • বিভিন্ন শ্রেণীবিভাগ মডেল মানিয়ে কনফিগারযোগ্য.

সমর্থিত NLC ক্লাসিফায়ার মডেল

নিম্নলিখিত মডেলগুলি NLClassifier API-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার গ্যারান্টি দেওয়া হয়েছে।

জাভাতে অনুমান চালান

একটি Android অ্যাপে NLClassifier কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য পাঠ্য শ্রেণিবিন্যাস রেফারেন্স অ্যাপটি দেখুন।

ধাপ 1: Gradle নির্ভরতা এবং অন্যান্য সেটিংস আমদানি করুন

.tflite মডেল ফাইলটি Android মডিউলের সম্পদ ডিরেক্টরিতে অনুলিপি করুন যেখানে মডেলটি চালানো হবে৷ নির্দিষ্ট করুন যে ফাইলটি সংকুচিত করা উচিত নয়, এবং মডিউলের build.gradle ফাইলে TensorFlow Lite লাইব্রেরি যোগ করুন:

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: কোকোপড আমদানি করুন

Podfile এ TensorFlowLiteTaskText পড যোগ করুন

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_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);

আরো বিস্তারিত জানার জন্য সোর্স কোড দেখুন.

উদাহরণ ফলাফল

এখানে মুভি পর্যালোচনা মডেলের শ্রেণীবিভাগ ফলাফলের একটি উদাহরণ।

ইনপুট: "আমার সময় কি একটি অপচয়।"

আউটপুট:

category[0]: 'Negative' : '0.81313'
category[1]: 'Positive' : '0.18687'

আপনার নিজস্ব মডেল এবং পরীক্ষার ডেটা সহ NLCclassifier-এর জন্য সাধারণ CLI ডেমো টুল ব্যবহার করে দেখুন।

মডেল সামঞ্জস্যের প্রয়োজনীয়তা

ব্যবহারের ক্ষেত্রে নির্ভর করে, NLClassifier API TFLite মডেল মেটাডেটা সহ বা ছাড়া একটি TFLite মডেল লোড করতে পারে। TensorFlow Lite Metadata Writer API ব্যবহার করে প্রাকৃতিক ভাষার শ্রেণীবিভাগের জন্য মেটাডেটা তৈরির উদাহরণ দেখুন।

সামঞ্জস্যপূর্ণ মডেল নিম্নলিখিত প্রয়োজনীয়তা পূরণ করা উচিত:

  • ইনপুট টেনসর: (kTfLiteString/kTfLiteInt32)

    • মডেলের ইনপুটটি হয় একটি kTfLiteString টেনসর কাঁচা ইনপুট স্ট্রিং বা একটি kTfLiteInt32 টেনসর হওয়া উচিত কাঁচা ইনপুট স্ট্রিংয়ের রেজেক্স টোকেনাইজড সূচকগুলির জন্য৷
    • ইনপুট টাইপ kTfLiteString হলে, মডেলের জন্য কোনো মেটাডেটার প্রয়োজন নেই।
    • ইনপুট টাইপ kTfLiteInt32 হলে, ইনপুট টেনসরের মেটাডেটাতে একটি RegexTokenizer সেট আপ করতে হবে।
  • আউটপুট স্কোর টেনসর: (kTfLiteUInt8/kTfLiteInt8/kTfLiteInt16/kTfLiteFloat32/kTfLiteFloat64)

    • শ্রেণীবদ্ধ প্রতিটি বিভাগের স্কোরের জন্য বাধ্যতামূলক আউটপুট টেনসর।

    • যদি টাইপটি Int প্রকারের মধ্যে একটি হয়, তাহলে এটিকে দ্বিগুণ/সংশ্লিষ্ট প্ল্যাটফর্মে ভাসাতে ডিকুয়ান্টাইজ করুন

    • বিভাগ লেবেলের জন্য আউটপুট টেনসরের সংশ্লিষ্ট মেটাডেটাতে একটি ঐচ্ছিক সংশ্লিষ্ট ফাইল থাকতে পারে, ফাইলটি প্রতি লাইনে একটি লেবেল সহ একটি প্লেইন টেক্সট ফাইল হওয়া উচিত, এবং লেবেলের সংখ্যাটি মডেল আউটপুট হিসাবে বিভাগের সংখ্যার সাথে মেলে। উদাহরণ লেবেল ফাইল দেখুন।

  • আউটপুট লেবেল টেনসর: (kTfLiteString/kTfLiteInt32)

    • প্রতিটি বিভাগের জন্য লেবেলের জন্য ঐচ্ছিক আউটপুট টেনসর, আউটপুট স্কোর টেনসরের মতো একই দৈর্ঘ্যের হওয়া উচিত। এই টেনসর উপস্থিত না থাকলে, API ক্লাসের নাম হিসাবে স্কোর সূচক ব্যবহার করে।

    • আউটপুট স্কোর টেনসরের মেটাডেটাতে সংশ্লিষ্ট লেবেল ফাইলটি উপস্থিত থাকলে উপেক্ষা করা হবে।