يمكنك استخدام "حزمة تعلّم الآلة" لتحديد لغة سلسلة نصية. يمكنك الحصول على اللغة الأكثر احتمالاً للسلسلة بالإضافة إلى درجات الثقة لجميع اللغات المحتملة للسلسلة.
تتعرّف حزمة تعلّم الآلة على النصوص بأكثر من 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.