ওয়েবের জন্য পাঠ্য শ্রেণিবিন্যাস নির্দেশিকা

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

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

কোডের উদাহরণ

টেক্সট ক্লাসিফায়ারের উদাহরণ কোডটি আপনার রেফারেন্সের জন্য জাভাস্ক্রিপ্টে এই কাজটি সম্পূর্ণরূপে বাস্তবায়ন করে। এই কোডটি আপনাকে কাজটি পরীক্ষা করতে এবং আপনার নিজস্ব টেক্সট ক্লাসিফিকেশন অ্যাপ তৈরি শুরু করতে সাহায্য করে। আপনি শুধুমাত্র আপনার ওয়েব ব্রাউজার ব্যবহার করে টেক্সট ক্লাসিফায়ার উদাহরণটি দেখতে, চালাতে এবং সম্পাদনা করতে পারেন।

সেটআপ

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

জাভাস্ক্রিপ্ট প্যাকেজ

টেক্সট ক্লাসিফায়ার কোড @mediapipe/tasks-text প্যাকেজের মাধ্যমে পাওয়া যায়। প্ল্যাটফর্ম সেটআপ গাইডে দেওয়া লিঙ্কগুলো থেকে আপনি এই লাইব্রেরিগুলো খুঁজে ও ডাউনলোড করতে পারবেন।

নিম্নলিখিত কমান্ড ব্যবহার করে লোকাল স্টেজিং-এর জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করতে পারেন:

npm install @mediapipe/tasks-text

আপনি যদি কোনো সার্ভারে ডেপ্লয় করতে চান, তাহলে jsDelivr-এর মতো একটি কন্টেন্ট ডেলিভারি নেটওয়ার্ক (CDN) পরিষেবা ব্যবহার করে সরাসরি আপনার HTML পৃষ্ঠায় নিম্নলিখিতভাবে কোড যোগ করতে পারেন:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

মডেল

MediaPipe টেক্সট ক্লাসিফায়ার টাস্কটির জন্য এমন একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই টাস্কের সাথে সামঞ্জস্যপূর্ণ। টেক্সট ক্লাসিফায়ারের জন্য উপলব্ধ প্রশিক্ষিত মডেলগুলো সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ-এর মডেলস সেকশনটি দেখুন।

একটি মডেল নির্বাচন করে ডাউনলোড করুন এবং তারপর সেটি আপনার প্রজেক্ট ডিরেক্টরিতে সংরক্ষণ করুন:

<dev-project-root>/assets/bert_text_classifier.tflite

নিচে দেখানো অনুযায়ী, baseOptions অবজেক্টের modelAssetPath প্যারামিটার ব্যবহার করে মডেলের পাথ নির্দিষ্ট করুন:

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

টাস্কটি তৈরি করুন

ইনফারেন্স চালানোর জন্য টাস্কটি প্রস্তুত করতে টেক্সট ক্লাসিফায়ারের TextClassifier.createFrom...() ফাংশনগুলোর মধ্যে একটি ব্যবহার করুন। আপনি প্রশিক্ষিত মডেল ফাইলের রিলেটিভ বা অ্যাবসোলিউট পাথ সহ createFromModelPath() ফাংশনটি ব্যবহার করতে পারেন। নিচের কোড উদাহরণটি TextClassifier.createFromOptions() ফাংশনের ব্যবহার প্রদর্শন করে। উপলব্ধ কনফিগারেশন অপশনগুলো সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন অপশনস দেখুন।

নিম্নলিখিত কোডটি দেখায় কিভাবে এই টাস্কটি বিল্ড এবং কনফিগার করতে হয়:

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

কনফিগারেশন বিকল্পগুলি

ওয়েব এবং জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনের জন্য এই টাস্কটিতে নিম্নলিখিত কনফিগারেশন অপশনগুলো রয়েছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
displayNamesLocale টাস্কের মডেলের মেটাডেটাতে প্রদত্ত ডিসপ্লে নামের জন্য ব্যবহৃত লেবেলের ভাষা নির্ধারণ করে (যদি তা উপলব্ধ থাকে)। ডিফল্ট হলো ইংরেজির জন্য en '। আপনি TensorFlow Lite Metadata Writer API ব্যবহার করে একটি কাস্টম মডেলের মেটাডেটাতে স্থানীয় লেবেল যোগ করতে পারেন। স্থানীয় কোড ইংরেজি
maxResults ফেরত দেওয়ার জন্য সর্বোচ্চ স্কোরপ্রাপ্ত শ্রেণিবিন্যাস ফলাফলের ঐচ্ছিক সংখ্যা নির্ধারণ করে। যদি < ০ হয়, তাহলে সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে। যেকোনো ধনাত্মক সংখ্যা -1
scoreThreshold এটি প্রেডিকশন স্কোরের থ্রেশহোল্ড নির্ধারণ করে, যা মডেল মেটাডেটাতে দেওয়া থ্রেশহোল্ডকে (যদি থাকে) বাতিল করে দেয়। এই মানের নিচের ফলাফলগুলো বাতিল করা হয়। যেকোনো ভাসমান বস্তু সেট করা হয়নি
categoryAllowlist অনুমোদিত ক্যাটাগরির নামের ঐচ্ছিক তালিকা নির্ধারণ করে। তালিকাটি খালি না থাকলে, যে সকল ক্লাসিফিকেশন ফলাফলের ক্যাটাগরির নাম এই সেটে নেই, সেগুলোকে ফিল্টার করে বাদ দেওয়া হবে। সদৃশ বা অজানা ক্যাটাগরির নাম উপেক্ষা করা হয়। এই অপশনটি categoryDenylist সাথে ব্যবহার করা যায় না এবং উভয়ই ব্যবহার করলে একটি ত্রুটি দেখা দেয়। যেকোনো স্ট্রিং সেট করা হয়নি
categoryDenylist যেসব ক্যাটাগরির নাম অনুমোদিত নয়, তার ঐচ্ছিক তালিকা নির্ধারণ করে। তালিকাটি খালি না থাকলে, যে সকল ক্লাসিফিকেশন ফলাফলের ক্যাটাগরির নাম এই তালিকায় রয়েছে, সেগুলো ফিল্টার করে বাদ দেওয়া হবে। সদৃশ বা অজানা ক্যাটাগরির নাম উপেক্ষা করা হয়। এই অপশনটি categoryAllowlist সাথে এককভাবে ব্যবহার করা যায় না এবং উভয়ই ব্যবহার করলে একটি ত্রুটি দেখা দেয়। যেকোনো স্ট্রিং সেট করা হয়নি

ডেটা প্রস্তুত করুন

টেক্সট ক্লাসিফায়ার টেক্সট ( String ) ডেটা নিয়ে কাজ করে। এই টাস্কটি ডেটা ইনপুটের প্রিপ্রসেসিং পরিচালনা করে, যার মধ্যে টোকেনাইজেশন এবং টেনসর প্রিপ্রসেসিং অন্তর্ভুক্ত।

সমস্ত প্রাক-প্রক্রিয়াকরণ classify() ফাংশনের মধ্যেই সম্পন্ন করা হয়। ইনপুট টেক্সটের আগে থেকে অতিরিক্ত কোনো প্রাক-প্রক্রিয়াকরণের প্রয়োজন নেই।

const inputText = "The input text to be classified.";

টাস্কটি চালান

টেক্সট ক্লাসিফায়ার অনুমান প্রক্রিয়া শুরু করার জন্য classify() ফাংশনটি ব্যবহার করে। টেক্সট ক্লাসিফিকেশনের ক্ষেত্রে, এর অর্থ হলো ইনপুট টেক্সটের জন্য সম্ভাব্য বিভাগগুলো ফেরত দেওয়া।

নিম্নলিখিত কোডটি টাস্ক মডেল ব্যবহার করে প্রসেসিং সম্পাদন করার পদ্ধতি প্রদর্শন করে।

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

ফলাফল পরিচালনা এবং প্রদর্শন করুন

টেক্সট ক্লাসিফায়ার একটি TextClassifierResult আউটপুট করে, যাতে ইনপুট টেক্সটের জন্য সম্ভাব্য ক্যাটাগরিগুলোর তালিকা থাকে। ক্যাটাগরিগুলো আপনার ব্যবহৃত মডেল দ্বারা নির্ধারিত হয়, তাই আপনি যদি ভিন্ন ক্যাটাগরি চান, তবে একটি ভিন্ন মডেল বেছে নিন, অথবা বিদ্যমান কোনো মডেলকে পুনরায় প্রশিক্ষণ দিন।

নিম্নলিখিতে এই টাস্কটির আউটপুট ডেটার একটি উদাহরণ দেখানো হলো:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

"an imperfect but overall entertaining mystery" ইনপুট টেক্সটটির উপর BERT-ক্লাসিফায়ার চালিয়ে এই ফলাফলটি পাওয়া গেছে।