يمكنك استخدام أدوات تعلُّم الآلة لتحديد لغة سلسلة نصية. يمكنك معرفة اللغة الأكثر احتمالًا للسلسلة بالإضافة إلى نتائج الثقة لكل اللغات المحتملة للسلسلة.
تتعرّف ML Kit على النصوص بأكثر من 100 لغة مختلفة باستخدام النصوص البرمجية الأصلية. بالإضافة إلى ذلك، يمكن التعرّف على النص بالحروف اللاتينية للغة العربية والبلغارية والصينية واليونانية والهندية واليابانية والروسية. اطّلِع على القائمة الكاملة للغات والنصوص البرمجية المتوافقة.
مُجمَّعة | غير مجمّعة | |
---|---|---|
اسم المكتبة | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
التنفيذ | يتم ربط النموذج بتطبيقك بشكل ثابت في وقت الإنشاء. | يتم تنزيل النموذج ديناميكيًا من خلال "خدمات Google Play". |
تأثير حجم التطبيق | زيادة حجم التطبيق بمقدار 900 كيلوبايت تقريبًا | زيادة حجمها بمقدار 200 كيلوبايت تقريبًا |
وقت الإعداد | يتوفّر النموذج على الفور. | قد تحتاج إلى الانتظار إلى أن يتم تنزيل النموذج قبل استخدامه لأول مرة. |
جرّبه الآن
- يمكنك استخدام نموذج التطبيق للاطّلاع على مثال على استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
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>
يمكنك أيضًا التحقّق صراحةً من مدى توفّر النموذج وطلب تنزيله من خلال 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. // ... }
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. // ... } });
في حال نجاح الطلب، يتم تمرير رمز لغة BCP-47 إلى مستمع الحدث "النجاح"، ما يشير إلى لغة النص. إذا لم يتم رصد
لغة بشكلٍ موثوق، يتم تمرير الرمز
und
(غير محدّد).
لا تعرِض ML Kit تلقائيًا قيمة غير und
إلا عندما تُحدِّد
اللغة بقيمة ثقة لا تقل عن 0.5. يمكنك تغيير
هذا الحدّ الأدنى من خلال تمرير عنصر LanguageIdentificationOptions
إلى getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
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. // ... }
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. // ... } });
في حال نجاح المكالمة، يتم تمرير قائمة بعناصر IdentifiedLanguage
إلى IdentifiedLanguage
. من كل عنصر، يمكنك الحصول على رمز اللغة BCP-47 و
مقياس الثقة بأنّ السلسلة بتلك اللغة. يُرجى العِلم أنّ
هذه القيم تشير إلى الثقة بأنّ السلسلة بأكملها مكتوبة بلغة
معيّنة، ولا ترصد ML Kit لغات متعدّدة في سلسلة واحدة.
لا تعرض ML Kit تلقائيًا سوى اللغات التي تبلغ قيم الثقة فيها 0.01
على الأقل. يمكنك تغيير هذا الحدّ الأدنى من خلال تمرير عنصر
LanguageIdentificationOptions
إلى
getClient()
:
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
إذا لم تستوفِ أي لغة هذا الحدّ الأدنى، ستتضمّن القائمة عنصرًا واحدًا بالقيمة
und
.