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
- Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
- 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
.