Android এর জন্য ভাষা সনাক্তকরণ নির্দেশিকা

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

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

কোড উদাহরণ

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

কোডটি ডাউনলোড করুন

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

উদাহরণ কোড ডাউনলোড করতে:

  1. নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করার জন্য আপনার গিট ইন্সট্যান্স কনফিগার করুন, তাই আপনার কাছে শুধুমাত্র ল্যাঙ্গুয়েজ ডিটেক্টর উদাহরণ অ্যাপের ফাইল আছে:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

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

মূল উপাদান

নিম্নলিখিত ফাইলগুলিতে পাঠ্য শ্রেণিবিন্যাস উদাহরণ অ্যাপের জন্য গুরুত্বপূর্ণ কোড রয়েছে:

  • LanguageDetectorHelper.kt - ভাষা আবিষ্কারক শুরু করে এবং মডেল নির্বাচন পরিচালনা করে।
  • ResultsAdapter.kt - সনাক্তকরণের ফলাফলগুলি পরিচালনা করে এবং ফর্ম্যাট করে।
  • MainActivity.kt - LanguageDetectorHelper এবং ResultsAdapter কল করা সহ অ্যাপ্লিকেশনটি প্রয়োগ করে।

সেটআপ

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

নির্ভরতা

ভাষা সনাক্তকারী com.google.mediapipe:tasks-text লাইব্রেরি ব্যবহার করে। আপনার Android অ্যাপ ডেভেলপমেন্ট প্রজেক্টের build.gradle ফাইলে এই নির্ভরতা যোগ করুন। আপনি নিম্নলিখিত কোড সহ প্রয়োজনীয় নির্ভরতা আমদানি করতে পারেন:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

মডেল

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

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

<dev-project-root>/src/main/assets

ModelName প্যারামিটারের মধ্যে মডেলের পথ নির্দিষ্ট করুন।

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

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

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

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

আপনি কিভাবে একটি টাস্ক তৈরি করবেন তার একটি উদাহরণ দেখতে পারেন কোড উদাহরণ LanguageDetectorHelper ক্লাস initDetector() ফাংশনে।

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

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

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

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

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

String inputText = "Some input text for the language detector";

টাস্ক চালান

ল্যাঙ্গুয়েজ ডিটেক্টর ইনপুট টেক্সট প্রসেস করতে এবং টেক্সটের ভাষার ভবিষ্যদ্বাণী করতে LanguageDetector.detect() পদ্ধতি ব্যবহার করে। আপনার অ্যাপের সাথে অ্যান্ড্রয়েড ইউজার ইন্টারফেস থ্রেড ব্লক করা এড়াতে সনাক্তকরণ কার্যকর করার জন্য আপনার একটি পৃথক এক্সিকিউশন থ্রেড ব্যবহার করা উচিত।

নিম্নলিখিত কোডটি প্রদর্শন করে কিভাবে একটি পৃথক এক্সিকিউশন থ্রেড ব্যবহার করে টাস্ক মডেলের সাথে প্রক্রিয়াকরণ চালানো যায়।

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

আপনি কোড উদাহরণে একটি টাস্ক কিভাবে চালাতে হয় তার একটি উদাহরণ দেখতে পারেন LanguageDetectorHelper ক্লাস detect() ফাংশন।

হ্যান্ডেল এবং প্রদর্শন ফলাফল

ল্যাঙ্গুয়েজ ডিটেক্টর সেই ভবিষ্যদ্বাণীগুলির সম্ভাব্যতা সহ ভাষার ভবিষ্যদ্বাণীগুলির একটি তালিকা সমন্বিত একটি 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." .

আপনি কোডের উদাহরণ ফলাফল অ্যাডাপ্টার ক্লাস এবং ViewHolder অভ্যন্তরীণ ক্লাসে ফলাফলগুলি কীভাবে প্রদর্শন করবেন তার একটি উদাহরণ দেখতে পারেন।