Android'de Makine Öğrenimi Kiti ile metinlerin dilini belirleyin

Bir metin dizesinin dilini tanımlamak için Makine Öğrenimi Kiti'ni kullanabilirsiniz. Şunları yapabilirsiniz: dizenin en olası dilini bulur veya tüm dizelere ilişkin dizenin olası dillerine değineceğiz.

ML Kit, yerel alfabelerinde 103 farklı dildeki metinleri tanır. Ayrıca, Latince yazılmış metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça

Başlamadan önce

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

Dizenin dilini belirleme

Bir dizenin dilini tanımlamak için şunun bir örneğini alın: FirebaseLanguageIdentification ve ardından dizeyi identifyLanguage() yöntemini çağırın.

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

Arama başarılı olursa, BCP-47 dil kodu başarı dinleyicisine iletilmelidir. Bkz. desteklenen dillerin tam listesini inceleyin. Yanıt hayır ise dil güvenli bir şekilde algılandığında und kodu (belirsiz) iletilir.

ML Kit, varsayılan olarak yalnızca und dışında bir değer döndürdüğünde güven değeri en az 0,5’tir. Bu ayarı değiştirebilirsiniz. eşiğine (FirebaseLanguageIdentificationOptions) getLanguageIdentification():

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 seçin ve daha sonra, dizeyi identifyAllLanguages() yöntemini çağırın.

Ö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 nesnelerinden oluşan bir liste yardımcı olmaktır. Her nesneden dilin BCP-47 kodunu alabilir ve dizenin o dilde olduğundan emin olun. Bkz. desteklenen dillerin tam listesini inceleyin. Lütfen bu değerler, tüm dizenin belirtilen dil; Makine Öğrenimi Kiti, tek bir dizede birden fazla dili tanımlamaz.

ML Kit varsayılan olarak yalnızca en az şu güven değerine sahip dilleri döndürür: 0,01. Bu eşiği, Müşteri Eşleştirme için FirebaseLanguageIdentificationOptions nesne getLanguageIdentification():

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

Bu eşiği karşılayan dil yoksa listede şu değeri içeren bir öğe bulunur: und