Identificare la lingua del testo con ML Kit su Android

Puoi utilizzare ML Kit per identificare il linguaggio di una stringa di testo. Puoi ottenere la lingua più probabile della stringa o ottenere punteggi di confidenza per tutte le lingue possibili della stringa.

ML Kit riconosce i testi in 103 lingue diverse nei loro script nativi. Inoltre, il testo romanizzato può essere riconosciuto in arabo, bulgaro, cinese, greco, hindi, giapponese e russo.

Prima di iniziare

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
  2. Aggiungi al modulo le dipendenze per le librerie Android di ML Kit file Gradle (a livello di app) (di solito 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'
    }

Identificare il linguaggio di una stringa

Per identificare la lingua di una stringa, recupera un'istanza di FirebaseLanguageIdentification e poi passa la stringa al metodo identifyLanguage().

Ad esempio:

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 la chiamata ha esito positivo, Il codice lingua BCP-47 è passati all'ascoltatore di successo, indicando la lingua del testo. Consulta l'elenco completo delle lingue supportate. In caso contrario la lingua possa essere rilevata con sicurezza, il codice und (non determinato) viene passato.

Per impostazione predefinita, ML Kit restituisce un valore diverso da und solo quando identifica la lingua con un valore di confidenza di almeno 0,5. Puoi modificare passando un oggetto FirebaseLanguageIdentificationOptions alla getLanguageIdentification():

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

Ottenere le possibili lingue di una stringa

Per ottenere i valori di confidenza delle lingue più probabili di una stringa, ottieni un istanza di FirebaseLanguageIdentification e poi passa la stringa Metodo identifyAllLanguages().

Ad esempio:

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 la chiamata ha esito positivo, viene passato un elenco di IdentifiedLanguage oggetti alla chiamata ascoltatori di successo. Da ciascun oggetto puoi ottenere il codice BCP-47 del linguaggio l'affidabilità della stringa in quella lingua. Consulta le elenco completo delle lingue supportate. Tieni presente che questi valori indicano la confidenza con cui l'intera stringa si trova lingua; ML Kit non identifica più linguaggi in una singola stringa.

Per impostazione predefinita, ML Kit restituisce solo le lingue con valori di confidenza pari almeno a 0,01. Puoi modificare questa soglia passando un parametro FirebaseLanguageIdentificationOptions oggetto in getLanguageIdentification():

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

Se nessuna lingua soddisfa questa soglia, l'elenco conterrà un elemento con il valore und.