Bir metin dizesinin dilini belirlemek için ML Kit'i kullanabilirsiniz. Dize için en olası dilin yanı sıra dizenin olası tüm dilleri için güven puanlarını alabilirsiniz.
ML Kit, 100'den fazla farklı dilin özgün alfabelerindeki metinleri tanır. Ayrıca, Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için romanize metin tanınabilir. Desteklenen dillerin ve komut dosyalarının tam listesini inceleyin.
Gruplandırılanlar | Paketsiz | |
---|---|---|
Kitaplık adı | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Uygulama | Model, derleme zamanında uygulamanıza statik olarak bağlanır. | Model, Google Play Hizmetleri aracılığıyla dinamik olarak indirilir. |
Uygulama boyutunun etkisi | Yaklaşık 900 KB boyut artışı. | Boyut yaklaşık 200 KB artar. |
Başlatma süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin örnek kullanımını görmek için örnek uygulamayı inceleyin.
Başlamadan önce
Proje düzeyindeki
build.gradle
dosyanızda, Google'ın Maven deposunu hembuildscript
hem deallprojects
bölümlerinize eklediğinizden emin olun.ML Kit Android kitaplıklarının bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle
app/build.gradle
) eklenmelidir. İhtiyaçlarınıza göre aşağıdaki bağımlılıklardan birini seçin:Modeli uygulamanızla paketlemek için:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }
Modeli Google Play Hizmetleri'nde kullanmak için:
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' }
Modeli Google Play Hizmetleri'nde kullanmayı seçerseniz uygulamanızı, Play Store'dan yüklendikten sonra modeli cihaza otomatik olarak indirecek şekilde yapılandırabilirsiniz. Bunu yapmak için uygulamanızın
AndroidManifest.xml
dosyasına aşağıdaki beyanı ekleyin:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Ayrıca Google Play Hizmetleri ModuleInstallClient API aracılığıyla modelin kullanılabilirliğini açıkça kontrol edebilir ve indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmelerini etkinleştirmezseniz veya açık indirme isteğinde bulunmazsanız model, tanımlayıcıyı ilk kez çalıştırdığınızda indirilir. İndirme tamamlanmadan önce gönderdiğiniz istekler sonuç vermez.
Bir dizenin dilini belirleme
Bir dizenin dilini tanımlamak için LanguageIdentifier
örneği almak üzere LanguageIdentification.getClient()
'ü çağırın ve ardından dizeni LanguageIdentifier
'un identifyLanguage()
yöntemine iletin.
Örneğin:
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. // ... } });
Çağrı başarılı olursa metnin dilini belirten bir BCP-47 dil kodu başarı dinleyicisine iletilir. Güvenilir bir dil algılanmazsa und
(belirsiz) kodu iletilir.
ML Kit, varsayılan olarak yalnızca dili en az 0,5 güven değeriyle tanımladığında und
dışında bir değer döndürür. LanguageIdentificationOptions
nesnesini getClient()
'a ileterek bu eşiği değiştirebilirsiniz:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
Bir dizenin olası dillerini alma
Bir dizenin en olası dillerinin güven değerlerini almak için LanguageIdentifier
örneği alın ve ardından dizeyi identifyPossibleLanguages()
yöntemine iletin.
Örneğin:
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. // ... } });
Çağrı başarılı olursa başarı dinleyicisine IdentifiedLanguage
nesnelerinin listesi iletilir. Her nesneden dilin BCP-47 kodunu ve dize için güven puanını alabilirsiniz. Bu değerlerin, dizenin tamamının belirli bir dilde olma olasılığını gösterdiğini unutmayın. ML Kit, tek bir dizede birden fazla dili tanımlamaz.
ML Kit varsayılan olarak yalnızca güvenilirlik değeri en az 0, 01 olan dilleri döndürür. LanguageIdentificationOptions
nesnesini getClient()
'e göndererek bu eşiği değiştirebilirsiniz:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Hiçbir dil bu eşiği karşılamazsa listede und
değerine sahip bir öğe bulunur.