Puoi utilizzare ML Kit per identificare il linguaggio di una stringa di testo. Puoi ottenere la lingua più probabile della stringa, nonché i punteggi di confidenza per tutte le lingue possibili della stringa.
ML Kit riconosce il testo in più di 100 lingue diverse nei suoi script nativi. Inoltre, il testo romanizzato può essere riconosciuto in arabo, bulgaro, cinese, greco, hindi, giapponese e russo. Consulta le elenco completo di lingue e script supportati.
In bundle | Non raggruppati | |
---|---|---|
Nome libreria | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implementazione | Il modello è collegato in modo statico alla tua app al momento della creazione. | Il modello viene scaricato in modo dinamico tramite Google Play Services. |
Impatto delle dimensioni dell'app | Aumento delle dimensioni di circa 900 kB. | Aumento delle dimensioni di circa 200 kB. |
Tempo di inizializzazione | Il modello è disponibile immediatamente. | Potrebbe essere necessario attendere il download del modello prima del primo utilizzo. |
Prova
- Prova l'app di esempio per per vedere un esempio di utilizzo di questa API.
Prima di iniziare
Nel file
build.gradle
a livello di progetto, assicurati di includere la proprietà Repository Maven in entrambe le sezionibuildscript
eallprojects
.Aggiungi le dipendenze per le librerie Android ML Kit agli file gradle a livello di app, che in genere è
app/build.gradle
. Scegli un'opzione tra le seguenti dipendenze in base alle tue esigenze:Per raggruppare il modello con la tua app:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
Per l'utilizzo del modello in Google Play Services:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }
Se scegli di utilizzare il modello in Google Play Services, puoi configurare dell'app per scaricare automaticamente il modello sul dispositivo una volta dal Play Store. A tale scopo, aggiungi la seguente dichiarazione a il file
AndroidManifest.xml
della tua app:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Puoi anche verificare esplicitamente la disponibilità del modello e richiedere il download tramite L'API ModuleInstallaClient di Google Play Services.
Se non attivi i download dei modelli al momento dell'installazione o richiedi un download esplicito, il modello viene scaricato la prima volta che esegui l'identificatore. Le tue richieste prima del completamento del download non producono risultati.
Identificare il linguaggio di una stringa
Per identificare la lingua di una stringa, richiama LanguageIdentification.getClient()
a
ottenere un'istanza di LanguageIdentifier
, quindi passare la stringa
Metodo identifyLanguage()
di LanguageIdentifier
.
Ad esempio:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .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. In caso contrario
la lingua sia rilevata con sicurezza, il codice
und
(non determinato) superato.
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 LanguageIdentificationOptions
a getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
Ottieni le possibili lingue di una stringa
Per ottenere i valori di confidenza delle lingue più probabili di una stringa, ottieni un
di LanguageIdentifier
e poi passa la stringa
Metodo identifyPossibleLanguages()
.
Ad esempio:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); 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
la certezza che la stringa sia in quella lingua. 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
LanguageIdentificationOptions
oggetto in
getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Se nessuna lingua soddisfa questa soglia, l'elenco contiene un elemento con il valore
und