ويمكنك استخدام أدوات تعلّم الآلة للتعرّف على لغة سلسلة من النصوص. ويمكنك الحصول على اللغة الأكثر ترجيحًا للسلسلة بالإضافة إلى نتائج الثقة لجميع اللغات الممكنة للسلسلة.
تتعرّف أدوات تعلّم الآلة على النصوص بأكثر من 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 إلى ملف الدرجة على مستوى التطبيق في الوحدة، والذي يكون عادةً
app/build.gradle
. اختر إحدى التبعيات التالية بناءً على احتياجاتك:لدمج النموذج مع تطبيقك:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.4' }
لاستخدام النموذج في "خدمات 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
.