Android-এ ML Kit ব্যবহার করে টেক্সটের ভাষা শনাক্ত করা

টেক্সটের কোনও স্ট্রিংয়ের ভাষা শনাক্ত করতে আপনি ML Kit ব্যবহার করতে পারবেন। আপনি স্ট্রিংয়ের সবচেয়ে সম্ভাব্য ভাষা এবং স্ট্রিংয়ের সব সম্ভাব্য ভাষার জন্য কনফিডেন্স স্কোর পেতে পারেন।

ML Kit ১০০টিরও বেশি বিভিন্ন ভাষায় তাদের নিজস্ব স্ক্রিপ্টে টেক্সট শনাক্ত করে। এছাড়াও, রোমানাইজড টেক্সট আরবি, বুলগেরিয়ান, চাইনিজ, গ্রিক, হিন্দি, জাপানি ও রাশিয়ান ভাষার জন্য শনাক্ত করা যেতে পারে। যেসব ভাষা ও স্ক্রিপ্ট কাজ করে তার সম্পূর্ণ তালিকা দেখুন।

একত্রিতআনবান্ডেল করা
লাইব্রেরির নামcom.google.mlkit:language-idcom.google.android.gms:play-services-mlkit-language-id
প্রয়োগবিল্ড করার সময় মডেলটি আপনার অ্যাপের সাথে স্ট্যাটিক লিঙ্ক করা হয়।Google Play পরিষেবার মাধ্যমে মডেল ডায়নামিক ডাউনলোড করা হয়।
অ্যাপের সাইজের প্রভাবপ্রায় ৯০০ কেবি সাইজ বৃদ্ধি।সাইজ প্রায় ২০০ কেবি বেড়ে যায়।
শুরু করার সময়মডেলটি সঙ্গে সঙ্গে উপলভ্য হয়ে যাবে।প্রথমবার ব্যবহারের আগে মডেল ডাউনলোড হওয়ার জন্য অপেক্ষা করতে হতে পারে।

এটি ব্যবহার করে দেখুন

শুরু করার আগে

  1. আপনার প্রোজেক্ট-লেভেল build.gradle ফাইলে, buildscript এবং allprojects, দুটি বিভাগেই Google-এর Maven রিপোজিটরি অন্তর্ভুক্ত করতে ভুলবেন না।

  2. আপনার মডিউলের অ্যাপ-লেভেল গ্রেডেল ফাইলে ML Kit Android লাইব্রেরির জন্য ডিপেন্ডেন্সি যোগ করুন, যা সাধারণত app/build.gradle হয়। আপনার প্রয়োজন অনুযায়ী নিম্নলিখিত ডিপেন্ডেন্সিগুলির মধ্যে থেকে একটি বেছে নিন:

    আপনার অ্যাপের সাথে মডেল বান্ডেল করতে:

    dependencies {
      // ...
      // Use this dependency to bundle the model with your app
      implementation 'com.google.mlkit:language-id:17.0.6'
    }
    

    Google Play পরিষেবায় মডেল ব্যবহার করার জন্য:

    dependencies {
      // ...
      // Use this dependency to use the dynamically downloaded model in Google Play Services
      implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0'
    }
    
  3. আপনি যদি Google Play Services-এ মডেল ব্যবহার করার বিকল্প বেছে নেন, তাহলে Play Store থেকে আপনার অ্যাপ ইনস্টল করার পরে, ডিভাইসে অটোমেটিক মডেল ডাউনলোড করার জন্য আপনার অ্যাপ কনফিগার করতে পারবেন। এটি করতে, আপনার অ্যাপের AndroidManifest.xml ফাইলে নিচের ঘোষণা যোগ করুন:

    <application ...>
          ...
          <meta-data
              android:name="com.google.mlkit.vision.DEPENDENCIES"
              android:value="langid" >
          <!-- To use multiple models: android:value="langid,model2,model3" -->
    </application>
    

    এছাড়াও, আপনি Google Play পরিষেবা ModuleInstallClient API-এর মাধ্যমে মডেলের উপলভ্যতা স্পষ্টভাবে চেক করতে এবং ডাউনলোড করার অনুরোধ করতে পারবেন।

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

স্ট্রিংয়ের ভাষা শনাক্ত করা

কোনও স্ট্রিংয়ের ভাষা শনাক্ত করতে, LanguageIdentifier-এর ইনস্ট্যান্স পেতে LanguageIdentification.getClient()-এ কল করুন এবং তারপর স্ট্রিংটি LanguageIdentifier-এর identifyLanguage() পদ্ধতিতে পাস করুন।

যেমন:

Kotlin

val languageIdentifier = LanguageIdentification.getClient()
languageIdentifier.identifyLanguage(text)
        .addOnSuccessListener { languageCode ->
            if (languageCode == "und") {
                Log.i(TAG, "Can't identify language.")
            } else {
                Log.i(TAG, "Language: $languageCode")
            }
        }
        .addOnFailureListener {
            // Model couldn’t be loaded or other internal error.
            // ...
        }

Java

LanguageIdentifier languageIdentifier =
        LanguageIdentification.getClient();
languageIdentifier.identifyLanguage(text)
        .addOnSuccessListener(
                new OnSuccessListener<String>() {
                    @Override
                    public void onSuccess(@Nullable String languageCode) {
                        if (languageCode.equals("und")) {
                            Log.i(TAG, "Can't identify language.");
                        } else {
                            Log.i(TAG, "Language: " + languageCode);
                        }
                    }
                })
        .addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        // Model couldn’t be loaded or other internal error.
                        // ...
                    }
                });

কলটি সফল হলে, একটি BCP-47 ভাষা কোড সাকসেস লিসেনারে পাস করা হয়, যা টেক্সটের ভাষা নির্দেশ করে। কোনও ভাষা নিশ্চিতভাবে শনাক্ত করা না গেলে, কোড und (অনির্ধারিত) পাস করা হয়।

ডিফল্ট হিসেবে, ML Kit শুধুমাত্র তখনই und ছাড়া অন্য কোনও ভ্যালু রিটার্ন করে যখন এটি অন্তত ০.৫ কনফিডেন্স ভ্যালু সহ ভাষা শনাক্ত করে। LanguageIdentificationOptions অবজেক্টকে getClient()-এ পাস করে আপনি এই থ্রেশহোল্ড পরিবর্তন করতে পারবেন:

Kotlin

val languageIdentifier = LanguageIdentification
        .getClient(LanguageIdentificationOptions.Builder()
                .setConfidenceThreshold(0.34f)
                .build())

Java

LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
        new LanguageIdentificationOptions.Builder()
                .setConfidenceThreshold(0.34f)
                .build());

কোনও স্ট্রিংয়ের সম্ভাব্য ভাষা পান

কোনও স্ট্রিংয়ের সবচেয়ে সম্ভাব্য ভাষার কনফিডেন্স ভ্যালু পেতে, LanguageIdentifier-এর একটি ইনস্ট্যান্স পান এবং তারপরে স্ট্রিংটিকে identifyPossibleLanguages() পদ্ধতিতে পাস করুন।

যেমন:

Kotlin

val languageIdentifier = LanguageIdentification.getClient()
languageIdentifier.identifyPossibleLanguages(text)
        .addOnSuccessListener { identifiedLanguages ->
            for (identifiedLanguage in identifiedLanguages) {
                val language = identifiedLanguage.languageTag
                val confidence = identifiedLanguage.confidence
                Log.i(TAG, "$language $confidence")
            }
        }
        .addOnFailureListener {
            // Model couldn’t be loaded or other internal error.
            // ...
        }

Java

LanguageIdentifier languageIdentifier =
        LanguageIdentification.getClient();
languageIdentifier.identifyPossibleLanguages(text)
        .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() {
            @Override
            public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
                for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
                    String language = identifiedLanguage.getLanguageTag();
                    float confidence = identifiedLanguage.getConfidence();
                    Log.i(TAG, language + " (" + confidence + ")");
                }
            }
        })
        .addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        // Model couldn’t be loaded or other internal error.
                        // ...
                    }
                });

কলটি সফল হলে, IdentifiedLanguage অবজেক্টের একটি তালিকা সাকসেস লিসেনারে পাস করা হয়। প্রতিটি অবজেক্ট থেকে, আপনি ভাষার BCP-47 কোড এবং স্ট্রিংটি সেই ভাষায় আছে কিনা সেই ব্যাপারে কনফিডেন্স পাবেন। মনে রাখবেন যে এইসব ভ্যালু থেকে বোঝা যায় যে পুরো স্ট্রিংটি প্রদত্ত ভাষায় লেখা হয়েছে কিনা; ML Kit একটি স্ট্রিংয়ে একাধিক ভাষা শনাক্ত করে না।

ডিফল্ট হিসেবে, ML Kit শুধুমাত্র সেইসব ভাষা রিটার্ন করে যেগুলির কনফিডেন্স ভ্যালু অন্তত ০.০১। আপনি LanguageIdentificationOptions অবজেক্টকে getClient()-এ পাস করানোর মাধ্যমে এই থ্রেশহোল্ড পরিবর্তন করতে পারবেন:

Kotlin

val languageIdentifier = LanguageIdentification
      .getClient(LanguageIdentificationOptions.Builder()
              .setConfidenceThreshold(0.5f)
              .build())

Java

LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(
      new LanguageIdentificationOptions.Builder()
              .setConfidenceThreshold(0.5f)
              .build());

কোনও ভাষা এই থ্রেশহোল্ড পূরণ না করলে, তালিকায় একটি আইটেম থাকে, যার ভ্যালু হল und।