Bir metin dizesinin dilini tanımlamak için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini ve dizenin olası tüm dilleri için güven puanlarını alabilirsiniz.
ML Kit, yerel komut dosyalarındaki 100'den fazla dildeki metinleri tanır. Buna ek olarak, Latin alfabesi kullanılan metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için de tanınabilir. Desteklenen dillerin ve komut dosyalarının tam listesini inceleyin.
Gruplandırılanlar | Grup halinde olmayanlar | |
---|---|---|
Kitaplık adı | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
Uygulama | Model, derleme sırasında statik olarak uygulamanıza bağlıdır. | Model, Google Play Hizmetleri aracılığıyla dinamik olarak indirilir. |
Uygulama boyutu etkisi | Yaklaşık 900 KB boyut artışı. | Yaklaşık 200 KB boyut artışı. |
Başlatma zamanı | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu örnek API'yi görmek için örnek uygulamayı inceleyin.
Başlamadan önce
Proje düzeyindeki
build.gradle
dosyanıza Google'ın Maven deposunu hembuildscript
hem deallprojects
bölümlerine eklediğinizden emin olun.ML Kit Android kitaplıklarının bağımlılıklarını, modülünüzün genellikle
app/build.gradle
olan gradle dosyasına ekleyin. İhtiyaçlarınıza bağlı olarak aşağıdaki bağımlılıklardan birini seçin:Modeli uygulamanızla birlikte gruplandırmak için:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.4' }
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, modelin kullanılabilirliğini açıkça kontrol edebilir ve Google Play Hizmetleri ModuleInstallClient API üzerinden indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmeleri etkinleştirmez veya açık indirme isteğinde bulunursanız model, tanımlayıcıyı ilk kez çalıştırdığınızda indirilir. İndirme tamamlanmadan önce yaptığınız istekler hiçbir sonuç vermez.
Bir dizenin dilini tanımlama
Bir dizenin dilini tanımlamak amacıyla LanguageIdentifier
örneğini almak için LanguageIdentification.getClient()
yöntemini çağırın ve ardından dizeyi LanguageIdentifier
işlevinin 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. // ... } });
Arama başarılı olursa başarılı bir dinleyiciye bir BCP-47 dil kodu iletilerek mesajın dilini belirtir. Hiçbir dil güvenli bir şekilde algılanmazsa und
kodu (belirsiz) iletilir.
Varsayılan olarak ML Kiti und
dışında bir değer ancak dili en az 0, 5 güven değerine sahip olarak tanımladığında döndürür. getClient()
eşiğine LanguageIdentificationOptions
nesnesi 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 öğrenme
Bir dizenin en olası dillerinin güven değerlerini almak için bir LanguageIdentifier
örneği alın ve ardından dizeyi identifyPossibleLanguages()
yöntemine geçirin.
Ö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 başarılı dinleyiciye IdentifiedLanguage
nesnesinin listesi iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin bu dilde olduğuna dair güven alabilirsiniz. Bu değerlerin, dizenin tamamının belirli bir dilde güvenli olduğunu gösterdiğini unutmayın. ML Kiti tek bir dizede birden fazla dili tanımlamaz.
Varsayılan olarak ML Kit yalnızca en az 0, 01 güven değerlerine sahip dilleri döndürür. getClient()
bölümüne LanguageIdentificationOptions
nesnesi geçirerek 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 dili karşılayan dil yoksa listede und
değerine sahip bir öğe bulunur.