Android पर एमएल किट की मदद से, टेक्स्ट की भाषा की पहचान करना

टेक्स्ट की किसी स्ट्रिंग की भाषा की पहचान करने के लिए, ML Kit का इस्तेमाल किया जा सकता है. आपको स्ट्रिंग की सबसे संभावित भाषा के साथ-साथ, स्ट्रिंग की सभी संभावित भाषाओं के लिए कॉन्फ़िडेंस स्कोर मिल सकते हैं.

ML Kit, 100 से ज़्यादा भाषाओं में लिखे गए टेक्स्ट को उनकी मूल स्क्रिप्ट में पहचान सकता है. इसके अलावा, रोमन लिपि में लिखे गए टेक्स्ट को इन भाषाओं के लिए पहचाना जा सकता है: ऐरेबिक, बल्गेरियन, चाइनीज़, ग्रीक, हिन्दी, जैपनीज़, और रशियन. इस्तेमाल की जा सकने वाली भाषाओं और स्क्रिप्ट की पूरी सूची देखें.

बंडल किए गएअनबंडल किया गया
लाइब्रेरी का नामcom.google.mlkit:language-idcom.google.android.gms:play-services-mlkit-language-id
लागू करनामॉडल को बिल्ड टाइम में, आपके ऐप्लिकेशन से स्टैटिक तौर पर लिंक किया जाता है.मॉडल को Google Play Services के ज़रिए डाइनैमिक तरीके से डाउनलोड किया जाता है.
ऐप्लिकेशन के साइज़ का असरसाइज़ में करीब 900 केबी की बढ़ोतरी हुई है.साइज़ में करीब 200 केबी की बढ़ोतरी होती है.
शुरू होने में लगने वाला समयमॉडल तुरंत उपलब्ध हो जाता है.पहली बार इस्तेमाल करने से पहले, मॉडल को डाउनलोड होने में समय लग सकता है.

इसे आज़माएं

शुरू करने से पहले

  1. अपने प्रोजेक्ट-लेवल की build.gradle फ़ाइल में, पक्का करें कि आपने Google की Maven रिपॉज़िटरी को buildscript और allprojects, दोनों सेक्शन में शामिल किया हो.

  2. अपने मॉड्यूल की ऐप्लिकेशन-लेवल की gradle फ़ाइल में, 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 Services में मॉडल का इस्तेमाल करने के लिए:

    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 services ModuleInstallClient API के ज़रिए, मॉडल की उपलब्धता की जांच की जा सकती है. साथ ही, डाउनलोड करने का अनुरोध किया जा सकता है.

    अगर आपने इंस्टॉल-टाइम मॉडल डाउनलोड करने की सुविधा चालू नहीं की है या आपने मॉडल को साफ़ तौर पर डाउनलोड करने का अनुरोध नहीं किया है, तो मॉडल को पहली बार आइडेंटिफ़ायर चलाने पर डाउनलोड किया जाता है. डाउनलोड पूरा होने से पहले किए गए अनुरोधों से कोई नतीजा नहीं मिलता.

किसी स्ट्रिंग की भाषा का पता लगाना

किसी स्ट्रिंग की भाषा का पता लगाने के लिए, LanguageIdentification.getClient() को कॉल करें, ताकि LanguageIdentifier का इंस्टेंस मिल सके. इसके बाद, स्ट्रिंग को 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 के अलावा कोई दूसरी वैल्यू तब ही दिखाता है, जब उसे कम से कम 0.5 के कॉन्फ़िडेंस स्कोर के साथ भाषा का पता चलता है. getClient() ऑब्जेक्ट को getClient() में पास करके, इस थ्रेशोल्ड को बदला जा सकता है:LanguageIdentificationOptions

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 ऑब्जेक्ट की सूची, success listener को पास की जाती है. हर ऑब्जेक्ट से, आपको भाषा का BCP-47 कोड और यह जानकारी मिल सकती है कि स्ट्रिंग उस भाषा में है या नहीं. ध्यान दें कि इन वैल्यू से यह पता चलता है कि पूरी स्ट्रिंग, दी गई भाषा में है या नहीं. ML Kit, एक स्ट्रिंग में कई भाषाओं की पहचान नहीं करता.

डिफ़ॉल्ट रूप से, ML Kit सिर्फ़ उन भाषाओं का पता लगाता है जिनके लिए कॉन्फ़िडेंस वैल्यू कम से कम 0.01 होती है. getClient() ऑब्जेक्ट को getClient() में पास करके, इस थ्रेशोल्ड को बदला जा सकता है:LanguageIdentificationOptions

Kotlin

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

Java

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

अगर कोई भी भाषा इस थ्रेशोल्ड को पूरा नहीं करती है, तो सूची में एक आइटम होता है. इसकी वैल्यू und होती है.