Puoi utilizzare ML Kit per identificare la lingua di una stringa di testo. Puoi ottenere la lingua più probabile della stringa, nonché i punteggi di affidabilità per tutte le lingue possibili della stringa.
ML Kit riconosce il testo in più di 100 lingue diverse nei rispettivi sistemi di scrittura. Inoltre, è possibile riconoscere il testo romanizzato per arabo, bulgaro, cinese, greco, hindi, giapponese e russo. Consulta l'elenco completo delle lingue e degli script supportati.
In bundle | Disaggregato | |
---|---|---|
Nome della raccolta | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implementazione | Il modello è collegato staticamente alla tua app in fase di compilazione. | Il modello viene scaricato dinamicamente 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. | Potresti dover attendere il download del modello prima del primo utilizzo. |
Prova
- Prova l'app di esempio per vedere un esempio di utilizzo di questa API.
Prima di iniziare
Nel file
build.gradle
a livello di progetto, assicurati di includere il repository Maven di Google nelle sezionibuildscript
eallprojects
.Aggiungi le dipendenze per le librerie Android ML Kit al file Gradle a livello di app del modulo, che di solito è
app/build.gradle
. Scegli una delle 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 la tua app in modo che scarichi automaticamente il modello sul dispositivo dopo l'installazione dal Play Store. Per farlo, aggiungi la seguente dichiarazione al file
AndroidManifest.xml
dell'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 controllare esplicitamente la disponibilità del modello e richiedere il download tramite l'API ModuleInstallClient di Google Play Services.
Se non abiliti i download del modello in fase di installazione o non richiedi il download esplicito, il modello viene scaricato la prima volta che esegui l'identificatore. Le richieste effettuate prima del completamento del download non producono risultati.
Identificare la lingua di una stringa
Per identificare la lingua di una stringa, chiama LanguageIdentification.getClient()
per
ottenere un'istanza di LanguageIdentifier
, quindi passa la stringa al
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, al listener di esito positivo viene passato un codice lingua BCP-47, che indica la lingua del testo. Se non viene rilevata
alcuna lingua con certezza, viene passato il codice
und
(indeterminato).
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 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());
Ottenere le lingue possibili di una stringa
Per ottenere i valori di confidenza delle lingue più probabili di una stringa, ottieni un'istanza di LanguageIdentifier
e poi passa la stringa al 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 trasmesso un elenco di oggetti IdentifiedLanguage
al listener di esito positivo. Da ogni oggetto puoi ottenere il codice BCP-47 della lingua e
la certezza che la stringa sia in quella lingua. Tieni presente che
questi valori indicano la certezza che l'intera stringa sia nella lingua
specificata; ML Kit non identifica più lingue 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
oggetto LanguageIdentificationOptions
a
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 solo elemento con il valore
und
.