Use o Kit de ML para identificar o idioma de uma string de texto. É possível identificar o idioma mais provável da string, bem como os índices de confiança para todos os idiomas possíveis.
O Kit de ML reconhece texto em mais de 100 idiomas diferentes nos scripts nativos. Além disso, é possível reconhecer texto romanizado em árabe, búlgaro, chinês, grego, hindi, japonês e russo. Consulte a lista completa de idiomas e scripts aceitos.
Agrupadas | Não agrupado | |
---|---|---|
Nome da biblioteca | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Implementação | O modelo é vinculado de forma estática ao app no momento da criação. | O modelo é baixado dinamicamente pelo Google Play Services. |
Impacto do tamanho do app | Aumento de cerca de 900 KB. | Aumento de cerca de 200 KB. |
Tempo de inicialização | O modelo fica disponível imediatamente. | Talvez seja necessário esperar o download do modelo antes do primeiro uso. |
Faça um teste
- Teste o app de exemplo para conferir um exemplo de uso dessa 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 no nível do app do módulo, que geralmente é
app/build.gradle
. Escolha uma das dependências a seguir com base nas suas necessidades:Para agrupar o modelo com o app:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
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 ele for instalado na Play Store. Para fazer isso, adicione a declaração abaixo 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 pela API ModuleInstallClient do Google Play Services.
Se você não ativar os downloads do modelo no momento da instalação ou solicitar um download explícito, o modelo será transferido na primeira vez em 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 para o listener de êxito, indicando o idioma do texto. Se nenhum
idioma for detectado com seguranç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());
Identificar os possíveis idiomas de uma string
Para receber os níveis de confiança dos idiomas mais prováveis de uma string, use 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 para o
listener de êxito. Você pode receber o código de idioma BCP-47 de cada objeto e
o nível de confiança dessa informação. Observe que
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 níveis 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 atender a esse limite, a lista terá um item com o valor
und
.