ওয়েবের জন্য ভাষা সনাক্তকরণ নির্দেশিকা

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

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

কোডের উদাহরণ

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

সেটআপ

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

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

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

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

npm install @mediapipe/tasks-text

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

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

মডেল

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

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

<dev-project-root>/app/shared/models

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

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

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

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

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

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

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

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

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
maxResults সর্বোচ্চ স্কোরপ্রাপ্ত ভাষার ভবিষ্যদ্বাণীর ঐচ্ছিক সর্বোচ্চ সংখ্যা নির্ধারণ করে যা ফেরত দেওয়া হবে। যদি এই মান শূন্যের চেয়ে কম হয়, তাহলে সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হয়। যেকোনো ধনাত্মক সংখ্যা -1
scoreThreshold এটি প্রেডিকশন স্কোরের থ্রেশহোল্ড নির্ধারণ করে, যা মডেল মেটাডেটাতে দেওয়া থ্রেশহোল্ডকে (যদি থাকে) বাতিল করে দেয়। এই মানের নিচের ফলাফলগুলো বাতিল করা হয়। যেকোনো ভাসমান বস্তু সেট করা হয়নি
categoryAllowlist অনুমোদিত ভাষা কোডগুলির ঐচ্ছিক তালিকা নির্ধারণ করে। তালিকাটি খালি না থাকলে, যে ভাষা কোড এই সেটে নেই, সেই ভাষা পূর্বাভাসগুলি ফিল্টার করে বাদ দেওয়া হবে। এই বিকল্পটি categoryDenylist সাথে ব্যবহার করা যায় না এবং উভয়ই ব্যবহার করলে একটি ত্রুটি দেখা দেয়। যেকোনো স্ট্রিং সেট করা হয়নি
categoryDenylist যেসব ভাষা কোড অনুমোদিত নয়, তার ঐচ্ছিক তালিকা নির্ধারণ করে। তালিকাটি খালি না থাকলে, যেসব ভাষার কোড এই সেটের অন্তর্ভুক্ত, সেগুলোর পূর্বাভাস ফিল্টার করে বাদ দেওয়া হবে। এই বিকল্পটি categoryAllowlist এর সাথে এককভাবে ব্যবহারযোগ্য এবং উভয়ই ব্যবহার করলে একটি ত্রুটি দেখা দেয়। যেকোনো স্ট্রিং সেট করা হয়নি

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

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

const inputText = "The input text for the detector.";

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

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

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

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

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

Language Detector টাস্কটি একটি LanguageDetectorResult আউটপুট করে, যাতে ভাষা পূর্বাভাসের একটি তালিকার সাথে সেই পূর্বাভাসগুলোর সম্ভাবনাও থাকে। নিচে এই টাস্কের আউটপুট ডেটার একটি উদাহরণ দেখানো হলো:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

ইনপুট টেক্সটে মডেলটি চালানোর মাধ্যমে এই ফলাফলটি পাওয়া গেছে: "Il ya beaucoup de bouches qui parlent et fort peu de têtes qui pensent." .

এই টাস্কের ফলাফল প্রসেস এবং ভিজ্যুয়ালাইজ করার জন্য প্রয়োজনীয় কোডের একটি উদাহরণের জন্য, উদাহরণটি দেখুন।