Bir metin dizesinin dilini belirlemek için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini ve dizenin olası tüm dillerine ait güven puanlarını alabilirsiniz.
ML Kit, 100'den fazla farklı dildeki metinleri kendi alfabelerinde tanır. Ayrıca Arapça, Bulgarca, Çince, Hintçe, Japonca, Rusça ve Yunanca için Latin alfabesiyle yazılmış metinler tanınabilir. Desteklenen dillerin ve komut dosyalarının tam listesini inceleyin.
Gruplandırılanlar | Paket halinde sunulmayan | |
---|---|---|
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 | Boyut yaklaşık 900 KB artar. | Boyut yaklaşık 200 KB artar. |
İlk kullanıma hazırlama süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin kullanımına dair bir örnek 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ümüne eklediğinizden emin olun.ML Kit Android kitaplıklarına ait bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle
app/build.gradle
) ekleyin. İ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' }
Google Play Hizmetleri'ndeki modeli kullanmayı tercih ederseniz uygulamanız Play Store'dan yüklendikten sonra modeli otomatik olarak cihaza indirecek şekilde yapılandırabilirsiniz. Bunu yapmak için uygulamanızın
AndroidManifest.xml
dosyasına aşağıdaki bildirimi ekleyin:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>
Modelin kullanılabilirliğini açıkça kontrol edebilir ve Google Play Hizmetleri ModuleInstallClient API aracılığıyla indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmelerini etkinleştirmezseniz veya açıkça indirme isteğinde bulunmazsanız, model, tanımlayıcıyı ilk çalıştırdığınızda indirilir. İndirme tamamlanmadan önce yaptığınız istekler sonuç vermez.
Bir dizenin dilini belirleme
Bir dizenin dilini belirlemek için LanguageIdentification.getClient()
çağrısı yaparak LanguageIdentifier
örneğini alın ve ardından dizeyi LanguageIdentifier
öğesinin 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. Dil güvenle algılanmazsa und
(belirlenmemiş) kodu iletilir.
Varsayılan olarak ML Kit, dili yalnızca en az 0,5 güven değerine sahip bir güven değeriyle tanımladığında und
dışında bir değer döndürür. LanguageIdentificationOptions
nesnesini getClient()
'ye 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 oluşturun ve 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. // ... } });
Arama başarılı olursa IdentifiedLanguage
nesnelerinin listesi başarı dinleyicisine iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olduğundan emin olma düzeyini alabilirsiniz. Bu değerlerin, dizenin tamamının belirtilen dilde olduğundan emin olma düzeyini gösterdiğini unutmayın. ML Kit, tek bir dizede birden fazla dili tanımlamaz.
ML Kit, varsayılan olarak yalnızca güven değeri en az 0,01 olan dilleri döndürür. LanguageIdentificationOptions
nesnesini getClient()
ileterek 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());
Bu eşiği karşılayan bir dil yoksa listede und
değerine sahip bir öğe bulunur.