Ir para o console

Identificar o idioma do texto com o kit de ML no Android

Você pode usar o kit de ML para identificar o idioma de uma string de texto. É possível identificar o idioma mais provável da string ou ver índices de confiança para todos os idiomas possíveis.

O kit de ML reconhece texto em 103 idiomas diferentes nos scripts nativos. Além disso, é possível reconhecer texto romanizado em árabe, búlgaro, chinês, grego, hindi, japonês e russo.

Consulte o guia de início rápido do kit de aprendizado de máquina no GitHub para ver um exemplo desta API em uso.

Antes de começar

  1. Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.
  2. Adicione as dependências das bibliotecas do Android do Kit de ML ao seu arquivo Gradle do módulo (nível de aplicativo), que geralmente é `app/build.gradle`:
    dependencies {
      // ...
    
      implementation 'com.google.firebase:firebase-ml-natural-language:18.1.1'
      implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:18.0.2'
    }
    

Identificar o idioma de uma string

Para identificar o idioma de uma string, encontre uma instância de FirebaseLanguageIdentification e envie a string para o método identifyLanguage().

Exemplo:

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

Se a chamada for bem-sucedida, um código de idioma BCP-47 é transmitido para o listener de sucesso, que indica o idioma do texto. Veja a lista completa de idiomas compatíveis. Se não for possível detectar um idioma com confiança, o código und (indeterminado) é transmitido.

Por padrão, o Kit de ML retorna um valor diferente de und somente quando identifica o idioma com um valor de confiança de pelo menos 0,5. Para alterar esse limite, envie um objeto FirebaseLanguageIdentificationOptions para getLanguageIdentification():

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

Identificar os possíveis idiomas de uma string

Para receber os valores de confiança dos idiomas mais prováveis de uma string, encontre uma instância de FirebaseLanguageIdentification e envie a string para o método identifyAllLanguages().

Exemplo:

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

Se a chamada for concluída, uma lista de objetos IdentifiedLanguage será transmitida para o listener de êxito. Você pode receber o código de idioma BCP-47 de cada objeto e o nível de confiança dessa informação. Veja a lista completa de idiomas compatíveis. Observe que esses valores indicam a confiança de que toda a string está no idioma especificado. O Kit de ML não identifica vários idiomas em uma única string.

Por padrão, o kit de ML retorna apenas idiomas com valores de confiança de pelo menos 0,01. Para alterar esse limite, envie um objeto FirebaseLanguageIdentificationOptions para getLanguageIdentification():

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

Se nenhum idioma atingir esse limite, a lista terá um item, com o valor und.