É possível usar o Kit de ML para identificar o idioma de uma string de texto. Você pode obter o idioma mais provável da string, bem como pontuações de confiança para todas as os idiomas possíveis da string.
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. Consulte 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 | Cerca de 900 KB de aumento. | Cerca de 200 KB de aumento. |
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. |
Faça um teste
- Teste o app de exemplo para um exemplo de uso dessa API.
Antes de começar
No arquivo
build.gradle
no nível do projeto, inclua a propriedade repositório Maven nas seçõesbuildscript
eallprojects
.Adicione as dependências das bibliotecas do Android do Kit de ML ao arquivo arquivo do Gradle no nível do app, que geralmente é
app/build.gradle
. Escolha uma destas opções: as 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.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 que o app faça o download automático do modelo para o dispositivo depois que ele for instalado pela Play Store. Para isso, adicione a seguinte declaração ao arquivo 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 pelo 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 é feito na primeira vez que você executa o identificador. Solicitações feitas por você 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
acesse uma instância de LanguageIdentifier
e depois 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, uma
O código de idioma BCP-47 é
transmitido para o listener de êxito, indicando o idioma do texto. Em caso negativo
se o idioma for detectado com confiança,
und
(indeterminado) é transmitido.
Por padrão, o Kit de ML retorna um valor diferente de und
somente quando identifica
a linguagem com um nível de confiança de pelo menos 0,5. É possível mudar isso
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 obter os valores de confiança dos idiomas mais prováveis de uma string, adquira uma
instância de LanguageIdentifier
e, em seguida, transmita a string para o
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 à
listener de sucesso. Em cada objeto, é possível receber o código BCP-47 do idioma e
o nível de confiança de que a string está no idioma em questão. Observe que
esses valores indicam a confiança de que toda a string no objeto
idioma; 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. Você pode alterar esse limite passando um
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