Android'de ML Kit ile metnin dilini belirleyin

-yer tutucu12 l10n-yer

Bir metin dizisinin dilini belirlemek için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini alabilir veya dizenin olası tüm dilleri için güven puanları alabilirsiniz.

ML Kit, yerel komut dosyalarındaki 103 farklı dildeki metni tanır. Ayrıca, romanlaştırılmış metin Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça olarak tanınabilir.

Sen başlamadan önce

  1. Henüz yapmadıysanız, Android projenize Firebase'i ekleyin .
  2. Modülünüze (uygulama düzeyinde) ML Kit Android kitaplıklarının bağımlılıklarını ekleyin (genellikle app/build.gradle ):
    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'
    }
    

Bir dizenin dilini tanımlayın

Bir dizenin dilini tanımlamak için bir FirebaseLanguageIdentification örneği alın ve ardından dizeyi defineLanguage identifyLanguage() yöntemine iletin.

Örneğin:

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.
              // ...
            }
          });

Çağrı başarılı olursa, başarılı dinleyiciye metnin dilini belirten bir BCP-47 dil kodu iletilir. Desteklenen dillerin tam listesine bakın. Hiçbir dil güvenle algılanamazsa, und (belirlenmemiş) kodu iletilir.

Varsayılan olarak, ML Kit, yalnızca dili en az 0,5'lik bir güven değeriyle tanımladığında und dışında bir değer döndürür. Bir FirebaseLanguageIdentificationOptions nesnesini getLanguageIdentification() ileterek bu eşiği değiştirebilirsiniz:

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

Bir dizenin olası dillerini alın

Bir dizenin en olası dillerinin güven değerlerini almak için, bir FirebaseLanguageIdentification örneği alın ve ardından dizeyi defineAllLanguages identifyAllLanguages() yöntemine iletin.

Örneğin:

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.
              // ...
            }
          });

Çağrı başarılı olursa, başarılı dinleyiciye IdentifiedLanguage nesnelerinin bir listesi iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olduğuna dair güveni alabilirsiniz. Desteklenen dillerin tam listesine bakın. Bu değerlerin, tüm dizenin verilen dilde olduğuna dair güveni gösterdiğine dikkat edin; ML Kit, tek bir dizede birden çok dili tanımlamaz.

Varsayılan olarak, ML Kit yalnızca güven değerleri en az 0,01 olan dilleri döndürür. Bir FirebaseLanguageIdentificationOptions nesnesini getLanguageIdentification() ileterek bu eşiği değiştirebilirsiniz:

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

Hiçbir dil bu eşiği karşılamıyorsa, listede und değerine sahip bir öğe olacaktır.