يمكنك استخدام أدوات تعلّم الآلة لتحديد لغة سلسلة من النصوص. ويمكنك الحصول على لغة السلسلة، بالإضافة إلى نتائج الثقة لجميع اللغات المحتملة للسلسلة.
تتعرّف أدوات تعلّم الآلة على النصوص بأكثر من 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.5' }
لاستخدام النموذج في "خدمات 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
(غير محدَّد).
تعرض أدوات تعلّم الآلة تلقائيًا قيمة أخرى غير 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
إلى
المستمع الناجح. من كل كائن، يمكنك الحصول على رمز BCP-47 الخاص باللغة والتأكد من أنّ السلسلة في تلك اللغة. يُرجى العِلم أنّ هذه القيم تشير إلى الثقة في أنّ السلسلة كاملةً باللغة المحدّدة، إلا أنّ أدوات تعلّم الآلة لا تتعرّف على لغات متعددة في سلسلة واحدة.
تعرض أدوات تعلّم الآلة تلقائيًا اللغات التي تكون فيها قيم الثقة 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
.