Android'de ML Kit ile metnin dilini belirleme

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

ML Kit, kendi yerel alfabelerindeki 103 farklı dildeki metni tanır. Ayrıca romanlaştırılmış metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için tanınabilir.

Sen başlamadan önce

  1. Henüz yapmadıysanız Android projenize Firebase'i ekleyin .
  2. ML Kit Android kitaplıklarının bağımlılıklarını modülünüze (uygulama düzeyi) Gradle dosyasına 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ımlama

Bir dizenin dilini tanımlamak için FirebaseLanguageIdentification örneğini alın ve ardından dizeyi 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üvenli bir şekilde algılanamazsa und (belirsiz) kodu iletilir.

Varsayılan olarak ML Kit, yalnızca dili en az 0,5 güven değeriyle tanımladığında und dışında bir değer döndürür. FirebaseLanguageIdentificationOptions nesnesini getLanguageIdentification() öğesine 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 elde etmek için FirebaseLanguageIdentification örneğini alın ve ardından dizeyi 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 IdentifiedLanguage nesnelerinin bir listesi başarı dinleyicisine 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, dizenin tamamının verilen dilde olduğuna dair güveni gösterdiğini unutmayın; ML Kit, tek bir dizede birden çok dili tanımlamaz.

Varsayılan olarak ML Kit yalnızca güven değeri en az 0,01 olan dilleri döndürür. FirebaseLanguageIdentificationOptions nesnesini getLanguageIdentification() öğesine 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 bulunur.