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

1- نظرة عامة

text-classification-result.png

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

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

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

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

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

  • تدريب نماذج تحليل المشاعر باستخدام TensorFlow Lite من خلال أداة إنشاء النماذج في TensorFlow 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، وانقر على تشغيل ( execute.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 وانقر على "تعلُّم الآلة" في لوحة التنقّل اليمنى. انقر على "البدء". إذا كنت تفتح هذه المرة الأولى بعد ذلك، انتقِل إلى "مخصّص" وانقر على الزر "إضافة نموذج".

أدخِل اسمًا للنموذج 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 (Text) في ملفات الاعتماد الخاصة بالتطبيق.

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، وانقر على تشغيل ( execute.png) في شريط أدوات "استوديو Android".

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

img/text-classification-result.png

13- تحسين أداء التطبيق باستخدام المزيد من ميزات Firebase

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

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

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

14- تهانينا!

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

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

  • TensorFlow Lite
  • Firebase ML

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

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

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

هل لديك سؤال؟

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