إضافة ميزة "تصنيف النص" على الجهاز إلى تطبيقك باستخدام TensorFlow Lite وFirebase - درس تطبيقي حول الترميز في Android

1- نظرة عامة

text-classification-result.png

مرحبًا بك في ميزة "تصنيف النص" باستخدام TensorFlow Lite والدرس التطبيقي حول ترميز Firebase. في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية استخدام TensorFlow Lite وFirebase لتدريب نموذج تصنيف النصوص ونشره في تطبيقك. يستند هذا الدرس التطبيقي حول الترميز إلى هذا المثال من TensorFlow Lite.

تصنيف النص هو عملية تعيين علامات أو فئات للنص وفقًا لمحتواه. ويشكّل ذلك إحدى المهام الأساسية في معالجة اللغات الطبيعية (NLP) من خلال تطبيقات واسعة النطاق، مثل تحليل الآراء وتصنيف المواضيع ورصد المحتوى غير المرغوب فيه ورصد الأهداف.

تحليل المشاعر هو تفسير وتصنيف المشاعر (الإيجابية والسلبية والمحايدة) في البيانات النصية باستخدام تقنيات تحليل النص. يتيح تحليل الآراء للأنشطة التجارية تحديد مدى شعور العملاء تجاه المنتجات أو العلامات التجارية أو الخدمات في المحادثات والملاحظات على الإنترنت.

يشرح هذا البرنامج التعليمي كيفية إنشاء نموذج تعلُّم الآلة لتحليل الآراء، وخاصةً تصنيف النص على أنه إيجابي أو سلبي. هذا مثال على التصنيف الثنائي - أو فئتين - وهو نوع مهم وقابل للتطبيق على نطاق واسع من مشكلات التعلم الآلي.

المعلومات التي ستطّلع عليها

  • تدريب نماذج تحليل الآراء في TF Lite باستخدام أداة إنشاء النماذج TF Lite
  • تفعيل نماذج TF Lite في تقنية تعلُّم الآلة في Firebase والوصول إليها من تطبيقك
  • دمج نماذج تحليل الآراء في TF Lite في تطبيقك باستخدام مكتبة مهام TF Lite

المتطلبات

  • أحدث إصدار من استوديو Android
  • نموذج التعليمات البرمجية.
  • جهاز اختباري يعمل بالإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث، والإصدار 9.8 من "خدمات Google Play" أو إصدار أحدث، أو محاكي بالإصدار 9.8 من "خدمات Google Play" أو إصدار أحدث
  • استخدام كابل توصيل في حال استخدام جهاز

كيف ستستخدم هذا البرنامج التعليمي؟

القراءة فقط اقرأها وأكمِل التمارين

كيف تقيّم تجربتك في إنشاء تطبيقات Android؟

حديث متوسط بارع

2- الحصول على الرمز النموذجي

استنسِخ مستودع GitHub من سطر الأوامر.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

في حال عدم تثبيت git، يمكنك أيضًا تنزيل نموذج المشروع من صفحته في GitHub أو من خلال النقر على هذا الرابط.

3- استيراد تطبيق إجراء التفعيل

من "استوديو Android"، اختَر دليل codelab-textclassification-android-master ( android_studio_folder.png) من نموذج تنزيل الرمز (ملف > فتح > .../codelab-textclassification-android-master/start).

من المفترض أن يكون مشروع البدء مفتوحًا الآن في "استوديو Android".

4. تشغيل تطبيق إجراء التفعيل

بعد أن استوردت المشروع إلى "استوديو Android"، أصبحت جاهزًا لتشغيل التطبيق لأول مرة. اربط جهاز Android، وانقر على تشغيل ( التنفيذ.png) في شريط أدوات "استوديو Android".

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

2fb4e69fafb2e3ed.png

5- إنشاء مشروع على "وحدة تحكُّم Firebase"

إضافة Firebase إلى المشروع

  1. انتقِل إلى وحدة تحكُّم Firebase.
  2. اختَر إضافة مشروع.
  3. اختَر اسم المشروع أو أدخِله.
  4. اتّبِع خطوات الإعداد المتبقية في "وحدة تحكُّم Firebase"، ثم انقر على "إنشاء مشروع" (أو "إضافة Firebase"، إذا كنت تستخدم مشروعًا حاليًا على Google).

6- إضافة Firebase إلى التطبيق

  1. من شاشة النظرة العامة لمشروعك الجديد، انقر على رمز Android لبدء عملية الإعداد.
  2. أدخِل اسم حزمة الدرس التطبيقي حول الترميز: org.tensorflow.lite.codelabs.textclassification.

إضافة ملف google-services.json إلى تطبيقك

بعد إضافة اسم الحزمة واختيار "تسجيل"**، انقر على تنزيل google-services.json** للحصول على ملف إعداد Firebase لنظام التشغيل Android، ثم انسخ الملف google-services.json إلى الدليل *app* في مشروعك.

إضافة المكوّن الإضافي "خدمات Google" إلى تطبيقك

اتّبِع التعليمات الواردة في "وحدة تحكُّم Firebase" لتعديل ملفات build.gradle.kts لإضافة Firebase إلى تطبيقك.

يستخدم المكوّن الإضافي "خدمات Google" ملف google-services.json لضبط تطبيقك على استخدام Firebase.

مزامنة مشروعك مع ملفات Gradle

وللتأكد من أن جميع التبعيات متاحة لتطبيقك، يجب عليك مزامنة مشروعك مع ملفات Gradle في هذه المرحلة. حدد ملف > مزامنة المشروع مع ملفات Gradle من شريط أدوات "استوديو Android"

7- تشغيل التطبيق باستخدام Firebase

بعد أن أعددت المكوّن الإضافي google-services باستخدام ملف JSON، أصبحت جاهزًا لتشغيل التطبيق من خلال Firebase. اربط جهاز Android، وانقر على تشغيل ( التنفيذ.png) في شريط أدوات "استوديو Android".

من المفترض أن يتم تشغيل التطبيق على جهازك. في هذه المرحلة، من المفترض أن يستمر إنشاء تطبيقك بنجاح.

8- تدريب نموذج تحليل الآراء

سنستخدم TensorFlow Lite model Maker لتدريب نموذج تصنيف النصّ للتنبؤ بشعور نص معيّن.

يتم عرض هذه الخطوة على شكل ورقة ملاحظات Python يمكنك فتحها في Google Colab. يمكنك اختيار وقت التشغيل > تنفيذ الكل (Run all) لتنفيذ ورقة الملاحظات بالكامل في وقت واحد

الفتح في Colab

بعد الانتهاء من هذه الخطوة، سيكون لديك نموذج تحليل آراء TensorFlow Lite جاهز للنشر على تطبيق للأجهزة الجوّالة.

9- نشر نموذج في تعلُّم الآلة في Firebase

يكون نشر نموذج لتعلُّم الآلة في Firebase مفيدًا لسببَين رئيسيَين:

  1. يمكننا الحفاظ على صغر حجم تثبيت التطبيق وتنزيل النموذج عند الحاجة فقط
  2. يمكن تحديث النموذج بانتظام ومن خلال دورة إصدار مختلفة عن تلك التي يستغرقها التطبيق بأكمله.

يمكن نشر النموذج إما عبر وحدة التحكّم أو آليًا باستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase. في هذه الخطوة، سننشرها عبر وحدة التحكّم.

أولاً، افتح وحدة تحكُّم Firebase وانقر على "تعلُّم الآلة" في لوحة التنقّل اليمنى. انقر على "البدء". إذا كنت تفتح هذه المرة الأولى ثم انتقل إلى "Custom" (مخصص) وانقر فوق "إضافة نموذج" .

أدخِل اسمًا للنموذج sentiment_analysis وحمِّل الملف الذي نزّلته من Colab في الخطوة السابقة عندما يُطلب منك ذلك.

3c3c50e6ef12b3b.png

10- تنزيل النموذج من تعلُّم الآلة في Firebase

قد يكون اختيار وقت تنزيل النموذج البعيد من Firebase في تطبيقك أمرًا صعبًا لأنّ نماذج TFLite يمكن أن يزداد حجمها نسبيًا. من الناحية المثالية، نريد تجنب تحميل النموذج فورًا عند تشغيل التطبيق، لأنه إذا تم استخدام نموذجنا لميزة واحدة فقط ولم يستخدم المستخدم هذه الميزة مطلقًا، سننزِّل كمية كبيرة من البيانات بدون سبب. يمكننا أيضًا ضبط خيارات التنزيل، مثل استرجاع النماذج عند الاتصال بشبكة Wi-Fi فقط. وإذا أردت التأكّد من إتاحة النموذج حتى بدون الاتصال بالشبكة، من المهم أيضًا تجميعه بدون استخدام التطبيق كنسخة احتياطية.

ولتبسيط الأمر، سنزيل النموذج التلقائي المجمّع وننزِّل دائمًا نموذجًا من Firebase عند بدء تشغيل التطبيق للمرة الأولى. بهذه الطريقة، عند إجراء تحليل الآراء، يمكنك التأكّد من أنّ الاستنتاج يتم باستخدام النموذج المقدَّم من Firebase.

في ملف app/build.gradle.kts، أضِف اعتمادية تعلُّم الآلة من Firebase.

app/build.gradle.kts

البحث عن هذا التعليق:

// TODO 1: Add Firebase ML dependency

بعد ذلك، أضِف ما يلي:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

عندما يطلب "استوديو Android" مزامنة مشروعك، اختَر المزامنة الآن.

لنُضِف بعد ذلك بعض الرموز البرمجية لتنزيل النموذج من Firebase.

MainActivity.java

البحث عن هذا التعليق:

// TODO 2: Implement a method to download TFLite model from Firebase

بعد ذلك، أضِف ما يلي:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

بعد ذلك، يمكنك استدعاء طريقة downloadModel في طريقة onCreate للنشاط.

MainActivity.java

البحث عن هذا التعليق:

// TODO 3: Call the method to download TFLite model

بعد ذلك، أضِف ما يلي:

downloadModel("sentiment_analysis");

11- دمج النموذج في تطبيقك

تساعدك مكتبة مهام Tensorflow Lite في دمج نماذج TensorFlow Lite في تطبيقك باستخدام بضعة أسطر من الرموز البرمجية. سنبدأ بإعداد مثيل NLClassifier باستخدام نموذج TensorFlow Lite الذي تم تنزيله من Firebase. سنستخدمه بعد ذلك لتصنيف إدخال النص من مستخدمي التطبيق وعرض النتيجة على واجهة المستخدم.

إضافة التبعية

انتقِل إلى ملف Gradle الخاص بالتطبيق وأضِف TensorFlow Lite Task Library (النص) إلى ملحقات التطبيق.

app/build.gradle

البحث عن هذا التعليق:

// TODO 4: Add TFLite Task API (Text) dependency

بعد ذلك، أضِف ما يلي:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

عندما يطلب "استوديو Android" مزامنة مشروعك، اختَر المزامنة الآن.

إعداد مصنِّف نص

بعد ذلك، سنُحمِّل نموذج تحليل الآراء الذي تم تنزيله من Firebase باستخدام رمز NLClassifier في "مكتبة المهام".

MainActivity.java

لنُعلن عن متغير مثيل NLClassifier. البحث عن هذا التعليق:

// TODO 5: Define a NLClassifier variable

بعد ذلك، أضِف ما يلي:

private NLClassifier textClassifier;

يجب إعداد المتغيّر textClassifier باستخدام نموذج تحليل الآراء الذي تم تنزيله من Firebase. البحث عن هذا التعليق:

// TODO 6: Initialize a TextClassifier with the downloaded model

بعد ذلك، أضِف ما يلي:

textClassifier = NLClassifier.createFromFile(model.getFile());

تصنيف النص

بعد إعداد مثيل textClassifier، يمكنك إجراء تحليل الآراء باستخدام طلب طريقة واحدة.

MainActivity.java

البحث عن هذا التعليق:

// TODO 7: Run sentiment analysis on the input text

بعد ذلك، أضِف ما يلي:

List<Category> results = textClassifier.classify(text);

تنفيذ مرحلة ما بعد المعالجة

وأخيرًا، سنحول مخرجات النموذج إلى نص وصفي لعرضه على الشاشة.

MainActivity.java

البحث عن هذا التعليق:

// TODO 8: Convert the result to a human-readable text

إزالة الرمز الذي يُنشئ نص النتيجة الوهمي:

String textToShow = "Dummy classification result.\n";

بعد ذلك، أضِف ما يلي:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12- تشغيل التطبيق النهائي

لقد قمت بدمج نموذج تحليل الآراء مع التطبيق، لذا دعنا نختبره. اربط جهاز Android، وانقر على تشغيل ( التنفيذ.png) في شريط أدوات "استوديو Android".

يجب أن يكون التطبيق قادرًا على توقّع شعور مراجعة الفيلم التي تدخلها بشكل صحيح.

img/text-classification-result.png

13- عزِّز أداء التطبيق بمزيد من ميزات Firebase

بالإضافة إلى استضافة نماذج TFLite، يوفّر Firebase العديد من الميزات الأخرى لتعزيز حالات استخدام التعلم الآلي:

  • ميزة "مراقبة أداء Firebase" لقياس سرعة استنتاج النموذج التي يتم تنفيذها على أجهزة المستخدمين الخاص بك.
  • تقيس أداة Firebase Analytics مدى جودة أداء نموذجك في الإنتاج من خلال قياس رد فعل المستخدم.
  • تتيح لك ميزة "اختبار A/B من Firebase" اختبار نُسخ متعدّدة من نموذجك.
  • هل تتذكر أننا تدربنا على نسختين من نموذج TFLite في وقت سابق؟ يُعتبر اختبار A/B طريقة جيدة لمعرفة الإصدار الذي يحقق أداءً أفضل في مرحلة الإنتاج.

لمعرفة المزيد من المعلومات حول كيفية الاستفادة من هذه الميزات في تطبيقك، اطّلع على الدروس التطبيقية حول الترميز أدناه:

14- تهانينا

في هذا الدرس التطبيقي حول الترميز، تعلمت كيفية تدريب نموذج TFLite لتحليل الآراء ونشره في تطبيقك للأجهزة الجوّالة باستخدام Firebase. لمزيد من المعلومات حول TFLite وFirebase، يمكنك الاطّلاع على نماذج TFLite الأخرى وأدلة البدء الخاصة بمنصّة Firebase.

المواضيع التي تناولناها

  • TensorFlow Lite
  • Firebase ML

الخطوات التالية

  • يمكنك قياس سرعة استنتاج النموذج باستخدام ميزة "مراقبة الأداء في Firebase".
  • يمكنك نشر النموذج من Colab مباشرةً إلى Firebase عبر واجهة برمجة التطبيقات لإدارة نماذج تعلُّم الآلة في Firebase.
  • أضف آلية للسماح للمستخدمين بتقديم ملاحظات حول نتيجة التوقع، واستخدم Firebase Analytics لتتبع تعليقات المستخدمين.
  • يمكنك إجراء اختبار A/B على نموذج متوسط الكلمات المتجهة ونموذج MobileBERT باستخدام اختبار A/B من Firebase.

مزيد من المعلومات

هل لديك سؤال؟

الإبلاغ عن المشاكل