Android'de ML Kit ile metnin dilini belirleme

Bir metin dizesinin dilini tanımlamak için Makine Öğrenimi Kiti'ni kullanabilirsiniz. Dizenin en olası dilini veya dizenin olası tüm dilleri için güven puanları alabilirsiniz.

ML Kit, yerel alfabelerinde 103 farklı dildeki metinleri tanır. Ayrıca Latin alfabesiyle yazılan metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için de tanınabilir.

Başlamadan önce

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

Dizenin dilini belirleme

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

Örnek:

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 listesini inceleyin. Hiçbir dil güvenli bir şekilde algılanamazsa und (belirsiz) kodu iletilir.

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

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

Bir dizenin olası dillerini alma

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

Örnek:

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ı işleyiciye IdentifiedLanguage nesnelerinden oluşan bir liste aktarılır. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olup olmadığını öğrenebilirsiniz. Desteklenen dillerin tam listesini inceleyin. Bu değerler, tüm dizenin belirtilen dilde olduğunun güvenilirliğini gösterir. ML Kit, tek bir dizede birden fazla dil tanımlamaz.

ML Kit, varsayılan olarak yalnızca en az 0,01 güven değerine sahip dilleri döndürür. getLanguageIdentification() adresine FirebaseLanguageIdentificationOptions nesnesi ileterek bu eşiği değiştirebilirsiniz:

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

Bu eşiği karşılayan dil yoksa listede und değerine sahip bir öğe bulunur.