É possível usar o Kit de ML para identificar o idioma de uma string de texto. É possível ver o idioma mais provável da string, bem como as pontuações de confiança para todos os idiomas possíveis dela.
O Kit de ML reconhece texto em mais de 100 idiomas diferentes nos scripts nativos. Além disso, o texto romanizado pode ser reconhecido em árabe, búlgaro, chinês, grego, hindi, japonês e russo. Veja a lista completa de linguagens e scripts compatíveis.
Agrupadas | Desagrupado | |
---|---|---|
Nome da biblioteca | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implementação | O modelo é vinculado estaticamente ao app no tempo de build. | O download do modelo é feito dinamicamente pelo Google Play Services. |
Impacto no tamanho do app | Aumento de cerca de 900 KB. | Aumento de cerca de 200 KB. |
Horário de inicialização | O modelo está disponível imediatamente. | Talvez seja necessário aguardar o download do modelo para usar o modelo pela primeira vez. |
Testar
- Teste o app de exemplo para ver um exemplo de uso da API.
Antes de começar
No arquivo
build.gradle
no nível do projeto, inclua o repositório Maven do Google nas seçõesbuildscript
eallprojects
.Adicione as dependências das bibliotecas do Android do Kit de ML ao arquivo Gradle do módulo no nível do app, que geralmente é
app/build.gradle
. Escolha uma das dependências a seguir com base nas suas necessidades:Para agrupar o modelo e o app:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.5' }
Para usar o modelo no 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 você optar por usar o modelo no Google Play Services, poderá configurar seu app para fazer o download automático do modelo no dispositivo depois que o app for instalado da Play Store. Para fazer isso, adicione a seguinte declaração ao arquivo
AndroidManifest.xml
do app:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Também é possível verificar explicitamente a disponibilidade do modelo e solicitar o download usando a API ModuleInstallClient do Google Play Services.
Se você não ativar os downloads do modelo de tempo de instalação ou solicitar o download explícito, o modelo será transferido na primeira vez que você executar o identificador. As solicitações feitas antes da conclusão do download não produzem resultados.
Identificar o idioma de uma string
Para identificar o idioma de uma string, chame LanguageIdentification.getClient()
para
receber uma instância de LanguageIdentifier
e transmita a string para o
método identifyLanguage()
de LanguageIdentifier
.
Exemplo:
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 a chamada for bem-sucedida, um código de idioma BCP-47 será transmitido ao listener de êxito, indicando o idioma do texto. Se nenhum idioma for detectado com confiança, o código und
(indeterminado) será transmitido.
Por padrão, o Kit de ML retorna um valor diferente de und
somente quando identifica o idioma com um valor de confiança de pelo menos 0,5. É possível alterar esse
limite transmitindo um objeto LanguageIdentificationOptions
para getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
Encontrar os idiomas possíveis de uma string
Para conferir os valores de confiança dos idiomas mais prováveis de uma string, acesse uma
instância de LanguageIdentifier
e transmita a string para o
método identifyPossibleLanguages()
.
Exemplo:
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 a chamada for bem-sucedida, uma lista de objetos IdentifiedLanguage
será transmitida ao
listener de êxito. Você pode receber o código BCP-47 do idioma e
o nível de confiança de que a string está nesse idioma usando cada objeto. Esses valores indicam a confiança de que toda a string está no idioma especificado. O Kit de ML não identifica vários idiomas em uma única string.
Por padrão, o Kit de ML retorna apenas idiomas com valores de confiança de pelo menos
0,01. É possível alterar esse limite transmitindo um objeto LanguageIdentificationOptions
para 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 nenhum idioma atingir esse limite, a lista terá um item com o valor
und
.