É 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 e as pontuações de confiança de todos os idiomas possíveis.
O Kit de ML reconhece texto em mais de 100 idiomas diferentes nos scripts nativos. Além disso, textos romanizados podem ser reconhecidos 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 é estaticamente vinculado ao app no momento da criação. | O download do modelo é feito 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 estará disponível imediatamente. | Talvez seja necessário aguardar o download do modelo para usá-lo pela primeira vez. |
Testar
- Explore o app de amostra para ver 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 Android do Kit de ML ao arquivo Gradle do módulo no nível do app, que geralmente é
app/build.gradle
. Escolha uma das seguintes dependências 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.4' }
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 o app para fazer o download automaticamente no dispositivo depois que ele for instalado na Play Store. Para fazer isso, adicione a seguinte declaração ao arquivo
AndroidManifest.xml
do seu 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 por meio da 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 download do modelo será feito 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, em seguida, transmita a string para o
método identifyLanguage()
de LanguageIdentifier
.
Por 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 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());
Acessar os possíveis idiomas de uma string
Para receber os valores de confiança dos idiomas mais prováveis de uma string, receba uma instância de LanguageIdentifier
e, em seguida, transmita a string para o método identifyPossibleLanguages()
.
Por 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 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
.