يمكنك استخدام حزمة تعلّم الآلة لتحديد لغة سلسلة من النصوص. يمكنك الحصول على لغة السلسلة الأكثر احتمالاً بالإضافة إلى درجات الثقة لجميع اللغات المحتملة للسلسلة.
تتعرّف مجموعة أدوات تعلّم الآلة على النص في أكثر من 100 لغة مختلفة في نصوصها الأصلية. بالإضافة إلى ذلك، يمكن التعرف على النص بالأحرف اللاتينية بالنسبة إلى العربية والبلغارية والصينية اليونانية والهندية واليابانية والروسية. يمكنك الاطّلاع على قائمة كاملة باللغات والنصوص البرمجية المتوافقة.
مُجمَّعة | غير مجمعة | |
---|---|---|
اسم المكتبة | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
التنفيذ | يكون النموذج مرتبطًا بشكلٍ ثابت بتطبيقك في وقت الإصدار. | يتم تنزيل النموذج ديناميكيًا من خلال "خدمات Google Play". |
تأثير حجم التطبيق | زيادة في الحجم بمقدار 900 كيلوبايت تقريبًا. | زيادة في الحجم بمقدار 200 كيلوبايت تقريبًا. |
وقت الإعداد | يتوفّر الطراز على الفور. | قد تضطر إلى الانتظار حتى يتم تنزيل النموذج قبل الاستخدام لأول مرة. |
جرّبه الآن
- يمكنك تجربة نموذج التطبيق من أجل يمكنك الاطّلاع على مثال حول استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
build.gradle
على مستوى المشروع، تأكد من تضمين مستودع Maven في كلٍّ من القسمَين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
من العناصر إلى
مستمع للنجاح. ومن كل كائن، يمكنك الحصول على رمز BCP-47 للغة
الثقة في أن السلسلة بهذه اللغة. لاحظ أن
تشير هذه القيم إلى الثقة في أن السلسلة بأكملها
واللغة لا تتعرّف مجموعة أدوات تعلُّم الآلة على لغات متعددة في سلسلة واحدة.
تعرض 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