میتوانید از ML Kit برای شناسایی زبان رشته نوشتار استفاده کنید. میتوانید محتملترین زبان رشته و همچنین امتیازهای اطمینان برای همه زبانهای احتمالی رشته را دریافت کنید.
ML Kit نوشتار را به بیشاز ۱۰۰ زبان مختلف با خطوط بومی آنها تشخیص میدهد. علاوهبراین، نوشتار رومیسازیشده برای زبانهای عربی، بلغاری، چینی، یونانی، ژاپنی، روسی، و هندی قابلتشخیص است. فهرست کامل زبانها و خطهای پشتیبانیشده را ببینید.
| موجود در بستهبندی | تفکیکشده | |
|---|---|---|
| نام کتابخانه | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
| پیادهسازی | مدل در زمان ساخت بهصورت ایستا به برنامه شما پیوند داده میشود. | مدل بهطور پویا ازطریق «خدمات Google Play» بارگیری میشود. |
| تأثیر اندازه برنامه | حدود ۹۰۰ کیلوبایت افزایش اندازه. | حدود ۲۰۰ کیلوبایت افزایش اندازه. |
| زمان مقداردهی اولیه | مدل بلافاصله دردسترس است. | ممکن است لازم باشد قبلاز اولین استفاده منتظر بمانید تا مدل بارگیری شود. |
امتحان کنید
- با برنامه نمونه بازی کنید تا نمونهای از استفاده از این API را ببینید.
قبلاز شروع
در فایل
build.gradleسطح پروژه، حتماً مخزن Maven مربوط به Google را در هر دو بخشbuildscriptوallprojectsاضافه کنید.وابستگیهای کتابخانههای ML Kit Android را به فایل gradle سطح برنامه واحدتان اضافه کنید، که معمولاً
app/build.gradleاست. یکی از وابستگیهای زیر را براساس نیازهایتان انتخاب کنید:برای دستهبندی مدل با برنامه:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }برای استفاده از مدل در «خدمات Google Play»:
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» استفاده کنید، میتوانید برنامهتان را بهگونهای پیکربندی کنید که پساز نصب برنامهتان از «فروشگاه Play»، مدل را بهطور خودکار در دستگاه بارگیری کند. برای انجام این کار، بیانیه زیر را به فایل
AndroidManifest.xmlبرنامهتان اضافه کنید:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>همچنین میتوانید دردسترس بودن مدل را بهطور صریح بررسی کنید و ازطریق خدمات Google Play ModuleInstallClient API درخواست بارگیری کنید.
اگر بارگیری مدل در زمان نصب را فعال نکنید یا درخواست بارگیری صریح نکنید، مدل اولینباری که شناسه را اجرا میکنید بارگیری میشود. درخواستهایی که قبلاز تکمیل بارگیری ارسال میکنید نتیجهای دربر نخواهد داشت.
شناسایی زبان رشته
برای شناسایی زبان رشته، LanguageIdentification.getClient() را فراخوانی کنید تا
نمونهای از LanguageIdentifier را دریافت کنید، و سپس رشته را به
روش identifyLanguage() از LanguageIdentifier ارسال کنید.
برای مثال:
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. // ... }
جاوا
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. // ... } });
اگر تماس موفقیتآمیز باشد،
کد زبان BCP-47 به
شنونده موفقیت منتقل میشود و زبان نوشتار را نشان میدهد. اگر هیچ زبانی با اطمینان شناسایی نشود، کد und (نامشخص) ارسال میشود.
بهطور پیشفرض، ML Kit فقط زمانی مقداری غیراز und برمیگرداند که زبان را با مقدار اطمینان حداقل ۰٫۵ شناسایی کند. میتوانید این آستانه را با ارسال یک شیء LanguageIdentificationOptions به getClient() تغییر دهید:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
جاوا
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
دریافت زبانهای احتمالی یک رشته
برای دریافت مقادیر اطمینان از محتملترین زبانهای یک رشته، نمونهای از LanguageIdentifier را دریافت کنید و سپس رشته را به روش identifyPossibleLanguages() ارسال کنید.
برای مثال:
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. // ... }
جاوا
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. // ... } });
اگر تماس موفقیتآمیز باشد، فهرستی از اشیاء IdentifiedLanguage به
شنونده موفقیت ارسال میشود. از هر شیء میتوانید کد BCP-47 زبان و
اطمینان از اینکه رشته به آن زبان است را دریافت کنید. توجه داشته باشید که
این مقادیر نشاندهنده اطمینان از این است که کل رشته به زبان دادهشده است؛
ML Kit چند زبان را در یک رشته شناسایی نمیکند.
بهطور پیشفرض، ML Kit فقط زبانهایی را برمیگرداند که مقدار اطمینان آنها حداقل
۰٫۰۱ باشد. میتوانید این آستانه را با ارسال یک
شیء LanguageIdentificationOptions به
getClient() تغییر دهید:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
جاوا
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
اگر هیچ زبانی این آستانه را برآورده نکند، فهرست یک مورد با مقدار
und دارد.