Identifique el idioma del texto con ML Kit en Android

Puede utilizar ML Kit para identificar el idioma de una cadena de texto. Puede obtener el idioma más probable de la cadena u obtener puntuaciones de confianza para todos los idiomas posibles de la cadena.

ML Kit reconoce texto en 103 idiomas diferentes en sus escrituras nativas. Además, se puede reconocer texto romanizado en árabe, búlgaro, chino, griego, hindi, japonés y ruso.

Antes de que empieces

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Android .
  2. Agregue las dependencias de las bibliotecas de Android ML Kit al archivo Gradle de su módulo (nivel de aplicación) (generalmente 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'
    }
    

Identificar el idioma de una cadena.

Para identificar el idioma de una cadena, obtenga una instancia de FirebaseLanguageIdentification y luego pase la cadena al método identifyLanguage() .

Por ejemplo:

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

Si la llamada tiene éxito, se pasa un código de idioma BCP-47 al oyente exitoso, indicando el idioma del texto. Consulta la lista completa de idiomas admitidos . Si no se puede detectar ningún idioma con seguridad, se pasa el código und (indeterminado).

De forma predeterminada, ML Kit devuelve un valor distinto de und solo cuando identifica el idioma con un valor de confianza de al menos 0,5. Puedes cambiar este umbral pasando un objeto FirebaseLanguageIdentificationOptions a getLanguageIdentification() :

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

Obtener los posibles idiomas de una cadena

Para obtener los valores de confianza de los idiomas más probables de una cadena, obtenga una instancia de FirebaseLanguageIdentification y luego pase la cadena al método identifyAllLanguages() .

Por ejemplo:

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

Si la llamada tiene éxito, se pasa una lista de objetos IdentifiedLanguage al oyente exitoso. De cada objeto, puede obtener el código BCP-47 del idioma y la confianza de que la cadena está en ese idioma. Consulta la lista completa de idiomas admitidos . Tenga en cuenta que estos valores indican la confianza de que toda la cadena está en el idioma dado; ML Kit no identifica varios idiomas en una sola cadena.

De forma predeterminada, ML Kit devuelve solo idiomas con valores de confianza de al menos 0,01. Puedes cambiar este umbral pasando un objeto FirebaseLanguageIdentificationOptions a getLanguageIdentification() :

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

Si ningún idioma alcanza este umbral, la lista tendrá un elemento, con el valor und .