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

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

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

वेब कंटेनर इंस्टॉल करने से पहले

  1. अगर आपने पहले से Firebase को नहीं जोड़ा है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
  2. अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर app/build.gradle) में ML Kit Android लाइब्रेरी के लिए डिपेंडेंसी जोड़ें:
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
    
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7'
    }
    

स्ट्रिंग की भाषा की पहचान करना

किसी स्ट्रिंग की भाषा की पहचान करने के लिए, FirebaseLanguageIdentification का इंस्टेंस पाएं. इसके बाद, स्ट्रिंग को identifyLanguage() तरीके में पास करें.

उदाहरण के लिए:

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

अगर कॉल पूरा होता है, तो सक्सेस लिसनर को एक BCP-47 भाषा कोड भेजा जाता है. इससे टेक्स्ट की भाषा का पता चलता है. इस्तेमाल की जा सकने वाली भाषाओं की पूरी सूची देखें. अगर किसी भी भाषा का पक्के तौर पर पता नहीं चल पाता है, तो कोड und (पहले से तय नहीं किया गया) पास किया जाता है.

डिफ़ॉल्ट रूप से, एमएल किट und के अलावा कोई और वैल्यू सिर्फ़ तब दिखाता है, जब वह कम से कम 0.5 कॉन्फ़िडेंस वैल्यू वाली भाषा की पहचान करती है. FirebaseLanguageIdentificationOptions ऑब्जेक्ट को getLanguageIdentification() पर पास करके, इस थ्रेशोल्ड को बदला जा सकता है:

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyLanguageConfidenceThreshold(0.34f)
                        .build());

स्ट्रिंग के लिए संभावित भाषाएं पाना

सबसे ज़्यादा संभावना वाली भाषाओं में कॉन्फ़िडेंस वैल्यू पाने के लिए, FirebaseLanguageIdentification का इंस्टेंस पाएं. इसके बाद, स्ट्रिंग को identifyAllLanguages() तरीके में पास करें.

उदाहरण के लिए:

FirebaseLanguageIdentification languageIdentifier =
        FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyAllLanguages(text)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
              for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
                String language = identifiedLanguage.getLanguageCode();
                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 सिर्फ़ ऐसी भाषाएं दिखाता है जो कम से कम 0.01 कॉन्फ़िडेंस वैल्यू होती हैं. इस थ्रेशोल्ड को बदलने के लिए, FirebaseLanguageIdentificationOptions ऑब्जेक्ट को getLanguageIdentification() पर पास करें:

FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
        .getInstance()
        .getLanguageIdentification(
                new FirebaseLanguageIdentificationOptions.Builder()
                        .setIdentifyAllLanguagesConfidenceThreshold(0.5f)
                        .build());

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