Puoi utilizzare ML Kit per identificare la lingua di una stringa di testo. È possibile ottenere la lingua più probabile della stringa o ottenere punteggi di affidabilità per tutte le possibili lingue della stringa.
ML Kit riconosce il testo in 103 lingue diverse nei loro script nativi. Inoltre, il testo romanizzato può essere riconosciuto per arabo, bulgaro, cinese, greco, hindi, giapponese e russo.
Prima di iniziare
- Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android .
- Aggiungi le dipendenze per le librerie ML Kit Android al tuo modulo (a livello di app) File Gradle (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' }
Identifica la lingua di una stringa
Per identificare la lingua di una stringa, ottieni un'istanza di FirebaseLanguageIdentification
, quindi passa la stringa al metodo identifyLanguage()
.
Per 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, un codice lingua BCP-47 viene passato all'ascoltatore di successo, indicando la lingua del testo. Consulta l' elenco completo delle lingue supportate . Se nessuna lingua può essere rilevata con sicurezza, il codice und
(indeterminato) 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 questa soglia passando un oggetto FirebaseLanguageIdentificationOptions
a getLanguageIdentification()
:
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyLanguageConfidenceThreshold(0.34f)
.build());
Ottieni le possibili lingue di una stringa
Per ottenere i valori di affidabilità delle lingue più probabili di una stringa, ottenere un'istanza di FirebaseLanguageIdentification
e quindi passare la stringa al metodo identifyAllLanguages()
.
Per 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 riesce, un elenco di oggetti IdentifiedLanguage
viene passato al listener di successo. Da ogni oggetto, puoi ottenere il codice BCP-47 della lingua e la certezza che la stringa sia in quella lingua. Consulta l' elenco completo delle lingue supportate . Si noti che questi valori indicano la certezza che l'intera stringa è nella lingua data; ML Kit non identifica più lingue in una singola stringa.
Per impostazione predefinita, ML Kit restituisce solo le lingue con valori di confidenza di almeno 0,01. Puoi modificare questa soglia passando un oggetto FirebaseLanguageIdentificationOptions
a 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
.