میتوانید از 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اضافه کنید.وابستگیهای کتابخانههای 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>همچنین میتوانید بهطور صریح دردسترس بودن مدل را بررسی کنید و ازطریق ModuleInstallClient API در خدمات Google Play درخواست بارگیری کنید.
اگر بارگیری مدل در زمان نصب را فعال نکنید یا درخواست بارگیری صریح نکنید، مدل اولین باری که شناسه را اجرا میکنید بارگیری میشود. درخواستهایی که قبلاز تکمیل بارگیری ارسال میکنید نتیجهای دربر نخواهد داشت.
تشخیص زبان رشته
برای شناسایی زبان یک رشته، 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 فقط زبانهایی را برمیگرداند که مقدار اطمینان آنها حداقل
۰٫۰۱ باشد. میتوانید این آستانه را با ارسال یک
شیء 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 خواهد داشت.