دليل التعرّف على اللغة في نظام التشغيل Android

تتيح لك مهمة MediaPipe Language Detector تحديد لغة جزء من النص. هذه طريقة استخدام "أداة رصد اللغة" مع تطبيقات Android. الرمز النموذج الموصوف في هذه التعليمات على GitHub.

يمكنك مشاهدة هذه المهمة وهي قيد التنفيذ من خلال عرض العرض التوضيحي. مزيد من المعلومات حول الإمكانات والنماذج وخيارات الضبط هذه المهمة، راجع نظرة عامة.

مثال على الرمز البرمجي

ويقدِّم مثال الرمز البرمجي الخاص بأداة Language Detector عملية تنفيذ بسيطة المهمة كمرجع لك. يساعدك هذا الرمز في اختبار هذه المهمة والبدء في في إنشاء ميزة التعرّف على اللغة. يمكنك تصفح مثال على رمز أداة التعرّف على اللغة على GitHub.

تنزيل الرمز

توضّح لك التعليمات التالية كيفية إنشاء نسخة على الجهاز من هذا المثال. باستخدام أداة سطر الأوامر للتحكم في إصدار git.

لتنزيل نموذج الرمز:

  1. استنساخ مستودع git باستخدام الأمر التالي:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. يمكنك اختياريًا ضبط مثيل git لاستخدام عملية الدفع المتناثر لذا، لديك فقط ملفات تطبيق Language Detector النموذجي:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

للحصول على تعليمات حول كيفية إعداد وتشغيل مثال باستخدام "استوديو Android" يمكنك الاطّلاع على تعليمات إعداد الرمز البرمجي في القسم دليل إعداد Android

المكوّنات الرئيسية

تحتوي الملفات التالية على التعليمة البرمجية المهمة لتصنيف النص مثال للتطبيق:

  • LanguageDetectorHelper.kt - يؤدي هذا الخيار إلى إعداد أداة رصد اللغة ومعالجة اختيار النموذج.
  • ResultsAdapter.kt - يتعامل مع نتائج الرصد وينسقها.
  • MainActivity.kt - لتنفيذ التطبيق، بما في ذلك طلب الرقم LanguageDetectorHelper ResultsAdapter

ضبط إعدادات الجهاز

يصف هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير مشاريع الرموز البرمجية خصيصًا لاستخدام أداة Language Detector. للحصول على معلومات عامة عن إعداد بيئة التطوير الخاصة بك لاستخدام مهام MediaPipe، بما في ذلك متطلبات إصدار نظام التشغيل، راجع دليل إعداد Android

التبعيات

تستخدم أداة رصد اللغة مكتبات com.google.mediapipe:tasks-text. إضافة هذا تعتمد على ملف build.gradle الخاص بمشروع تطوير تطبيق Android. يمكنك استيراد الموارد التابعة المطلوبة باستخدام الرمز التالي:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

الطراز

تتطلّب مهمة أداة رصد اللغة MediaPipe نموذجًا مدرَّبًا متوافقًا مع هذه الوحدة. المهمة. لمزيد من المعلومات عن النماذج المُدرَّبة المتاحة لأداة رصد اللغة، يُرجى الاطّلاع على نظرة عامة على المهمة قسم النماذج.

حدد النموذج ونزّله ثم خزّنه في دليل المشروع:

<dev-project-root>/src/main/assets

حدِّد مسار النموذج ضمن مَعلمة ModelName.

إنشاء المهمة

يمكنك استخدام إحدى دوال createFrom...() لإنشاء المهمة. تشير رسالة الأشكال البيانية تقبل الدالة createFromOptions() خيارات الإعداد للّغة. الجديدة. يمكنك أيضًا إعداد المهمة باستخدام المصنع في createFromFile(). الأخرى. تقبل الدالة createFromFile() مسارًا نسبيًا أو مطلقًا ملف النموذج المدرَّب. لمزيد من المعلومات حول ضبط المهام، يُرجى الاطّلاع على خيارات الإعداد:

يوضح الرمز التالي كيفية إنشاء هذه المهمة وإعدادها.

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

يمكنك الاطّلاع على مثال على كيفية إنشاء مهمة في مثال الرمز البرمجي. LanguageDetectorHelper الفئة initDetector().

خيارات الإعداد

تتضمّن هذه المهمة خيارات الضبط التالية لتطبيقات Android:

اسم الخيار الوصف نطاق القيمة القيمة الافتراضية
maxResults تحدّد هذه السياسة الحد الأقصى الاختياري لتوقّعات اللغة الأعلى تقييمًا إرجاع. إذا كانت هذه القيمة أقل من صفر، فسيتم عرض جميع النتائج المتاحة. أي أرقام موجبة -1
scoreThreshold لتعيين الحد الأدنى لنتيجة التنبؤ الذي يلغي الحد المقدم في بيانات التعريف للنموذج (إن وجدت). يتم رفض النتائج التي تكون أدنى من هذه القيمة. أي عدد عائم لم يتم ضبط الوضع
categoryAllowlist تحدِّد هذه السياسة القائمة الاختيارية لرموز اللغات المسموح بها. إذا لم تكن فارغة، توقعات اللغة التي ليس رمز اللغة بها في هذه المجموعة بفلترته. يقتصر هذا الخيار على تؤدي categoryDenylist واستخدام كلتاهما إلى حدوث خطأ. أي سلاسل لم يتم ضبط الوضع
categoryDenylist تحدِّد هذه السياسة القائمة الاختيارية لرموز اللغات غير المسموح بها. في حال حذف ستتم تصفية تنبؤات اللغة غير الفارغة التي يوجد رمز لغتها في هذه المجموعة . لا ينطبق هذا الخيار إلا على categoryAllowlist. استخدام كلتا النتيجتين إلى خطأ. أي سلاسل لم يتم ضبط الوضع

تجهيز البيانات

تعمل "أداة رصد اللغة" مع بيانات النصوص (String). تتعامل المهمة مع إدخال البيانات المعالجة المسبقة، بما في ذلك الترميز والمعالجة المسبقة لـ Tenor. الكل تتم معالجة عمليات المعالجة المسبقة ضمن دالة detect(). ليست هناك حاجة إلى المعالجة المسبقة الإضافية لنص الإدخال مسبقًا.

String inputText = "Some input text for the language detector";

تنفيذ المهمة

تستخدم ميزة "رصد اللغة" أسلوب LanguageDetector.detect() لمعالجة الإدخال النص والتنبؤ بلغة النص. يجب استخدام عملية تنفيذ منفصلة سلسلة محادثات لتنفيذ عملية الرصد من أجل تجنُّب حظر مستخدم Android واجهة المستخدم مع تطبيقك.

يوضح الرمز التالي كيفية تنفيذ المعالجة باستخدام المهمة باستخدام سلسلة محادثات منفصلة.

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

يمكنك الاطّلاع على مثال على كيفية تنفيذ مهمة في مثال الرمز البرمجي LanguageDetectorHelper الفئة detect().

التعامل مع العملاء وعرض النتائج

تُخرج ميزة "التعرّف على اللغة" عنصر LanguageDetectorResult يتألّف من قائمة من التوقعات اللغوية إلى جانب الاحتمالات المتعلقة بتلك التنبؤات. تشير رسالة الأشكال البيانية فئات اللغة تم تحديدها في النموذج، راجع النظرة العامة على المهمة قسم النماذج للاطّلاع على تفاصيل حول النموذج الذي تستخدمه.

في ما يلي مثال على بيانات الإخراج من هذه المهمة:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

تم الحصول على هذه النتيجة من خلال تنفيذ النموذج على نص الإدخال: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

يمكنك الاطّلاع على مثال على كيفية عرض النتائج في مثال الرمز البرمجي ResultsAdapter الفئة وفئة ViewHolder الداخلية.