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