Bir metin dizesinin dilini tanımlamak için Makine Öğrenimi Kiti'ni kullanabilirsiniz. Dizenin en olası dilini ve dizenin olası tüm dilleri için güven puanlarını alabilirsiniz.
ML Kit, 100'den fazla farklı dildeki metinleri yerel alfabelerinde tanır. Ayrıca Latin alfabesiyle yazı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 | Gruplandırılmamış | |
---|---|---|
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 boyutunun etkisi | Yaklaşık 900 KB boyut artışı. | Yaklaşık 200 KB boyut artışı. |
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ıza, hembuildscript
hem deallprojects
bölümlerinize Google'ın Maven deposunu dahil ettiğinizden emin olun.ML Kit Android kitaplıklarının bağımlılıklarını, modülünüzün uygulama düzeyindeki gradle dosyasına ekleyin. Bu dosya genellikle
app/build.gradle
olur. İhtiyaçlarınıza göre aşağıdaki bağımlılıklardan birini seçin:Modeli uygulamanızla gruplandırmak için:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.5' }
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ı, 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, model kullanılabilirliğini açıkça kontrol edebilir ve Google Play Hizmetleri ModuleUploadClient API üzerinden indirme isteğinde bulunabilirsiniz.
Yükleme zamanı model indirmelerini etkinleştirmez veya açık indirme isteğinde bulunmazsanız model, tanımlayıcıyı ilk çalıştırdığınızda indirilir. İndirme işlemi tamamlanmadan önce yaptığınız istekler sonuç vermez.
Dizenin dilini belirleme
Bir dizenin dilini tanımlamak için LanguageIdentification.getClient()
yöntemini çağırarak LanguageIdentifier
örneği alın, 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 başarılı dinleyiciye metnin dilini belirten bir BCP-47 dil kodu iletilir. Hiçbir dil güvenli bir şekilde algılanmazsa und
(belirsiz) kodu iletilir.
Varsayılan olarak ML Kit, yalnızca en az 0,5 güven değeriyle dili tanımladığında und
dışında bir değer döndürür. getClient()
öğesine 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 alma
Bir dizenin en olası dillerinin güven değerlerini elde etmek için LanguageIdentifier
örneğini 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ı işleyiciye IdentifiedLanguage
nesnelerinden oluşan bir liste aktarılır. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olup olmadığını öğrenebilirsiniz. Bu değerler, tüm dizenin belirtilen dilde olduğunun güvenilirliğini gösterir. ML Kit, tek bir dizede birden fazla dil tanımlamaz.
ML Kit, varsayılan olarak yalnızca en az 0,01 güven değerine sahip dilleri döndürür. getClient()
adresine LanguageIdentificationOptions
nesnesi 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 dil yoksa listede und
değerine sahip bir öğe bulunur.