Bir metin dizesinin dilini tanımlamak için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini ve dizenin tüm olası dilleri için güven puanlarını alabilirsiniz.
ML Kit, 100'den fazla farklı dildeki metinleri kendi ana dillerinde tanır. Ayrıca, Latin alfabesiyle yazılan metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için 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 uygulamanıza statik olarak bağlıdır. | Model, Google Play Hizmetleri üzerinden dinamik olarak indirilir. |
Uygulama boyutu etkisi | Boyutta yaklaşık 900 KB artış. | Boyutta yaklaşık 200 KB artış. |
Başlatma süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin örnek bir 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ını, 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 birlikte paket haline getirmek 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ı, Play Store'dan yüklendikten sonra modeli cihaza otomatik olarak indirecek şekilde yapılandırabilirsiniz. Bunun 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 ModuleInstallClient API üzerinden indirme isteğinde bulunabilirsiniz.
Yükleme zamanı modeli indirmelerini etkinleştirmezseniz veya açık bir şekilde indirme isteğinde bulunmazsanız model, tanımlayıcıyı ilk çalıştırdığınızda indirilir. İndirme tamamlanmadan önce yaptığınız istekler hiçbir sonuç vermez.
Bir dizenin dilini belirleme
Bir dizenin dilini tanımlamak için LanguageIdentification.getClient()
yöntemini çağırarak LanguageIdentifier
örneğini 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ı dinleyicisine metnin dilini belirten bir BCP-47 dil kodu iletilir. Güvenle hiçbir dil algılanmazsa und
(belirsiz) kodu aktarılır.
Varsayılan olarak ML Kit, dili en az 0,5 güven değeriyle tanımladığında und
dışında bir değer döndürür. getClient()
nesnesine bir 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 almak 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ılı dinleyiciye IdentifiedLanguage
nesneden oluşan bir liste iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olduğundan emin olabilirsiniz. Bu değerlerin, tüm dizenin belirtilen dilde olduğuna dair güveni gösterdiğini unutmayın. Makine Öğrenimi Kiti, tek bir dizede birden fazla dili tanımlamaz.
Varsayılan olarak ML Kit yalnızca en az 0, 01 güven değerine sahip dilleri döndürür. getClient()
nesnesine bir 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());
Hiçbir dil bu eşiği karşılamıyorsa listede und
değerine sahip tek bir öğe bulunur.