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

1. نظرة عامة

نتيجة تصنيف النص.png

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

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

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

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

ما ستتعلمه

  • قم بتدريب نماذج تحليل المشاعر TF Lite باستخدام TF Lite Model Maker
  • انشر نماذج TF Lite على Firebase ML وقم بالوصول إليها من تطبيقك
  • قم بدمج نماذج تحليل المشاعر TF Lite في تطبيقك باستخدام مكتبة مهام TF Lite

ماذا ستحتاج

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

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

اقرأها من خلال فقط اقرأها وأكمل التمارين

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

مبتدئ متوسط بارع

2. احصل على نموذج التعليمات البرمجية

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

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

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

3. قم باستيراد تطبيق البداية

من Android Studio، حدد الدليل codelab-textclassification-android-master ( android_studio_folder.png ) من تنزيل نموذج التعليمات البرمجية ( ملف > فتح > .../codelab-textclassification-android-master/start).

يجب أن يكون لديك الآن مشروع البداية مفتوحًا في Android Studio.

4. قم بتشغيل تطبيق البداية

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

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

2fb4e69fafb2e3ed.png

5. إنشاء مشروع وحدة تحكم Firebase

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

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

6. أضف Firebase إلى التطبيق

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

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

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

أضف البرنامج المساعد لخدمات جوجل إلى التطبيق الخاص بك

اتبع الإرشادات الموجودة على وحدة تحكم Firebase لتحديث ملفات build.gradle.kts لإضافة Firebase إلى تطبيقك.

يستخدم المكوّن الإضافي google-services ملف google-services.json لتهيئة تطبيقك لاستخدام Firebase.

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

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

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

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

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

8. تدريب نموذج تحليل المشاعر

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

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

فتح في كولاب

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

9. نشر نموذج على Firebase ML

يعد نشر نموذج في Firebase ML مفيدًا لسببين رئيسيين:

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

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

أولاً، افتح Firebase Console وانقر على Machine Learning في لوحة التنقل اليمنى. انقر فوق "البدء" إذا كنت تفتح هذه المرة الأولى. ثم انتقل إلى "مخصص" وانقر على زر "إضافة نموذج".

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

3c3c50e6ef12b3b.png

10. قم بتنزيل النموذج من Firebase ML

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

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

في ملف app/build.gradle.kts ، أضف تبعية Firebase Machine Learning.

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 Studio مزامنة مشروعك، اختر "مزامنة الآن" .

ثم دعونا نضيف بعض التعليمات البرمجية لتنزيل النموذج من 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 (نصية) في تبعيات التطبيق.

app/build.gradle

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

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

ثم أضف:

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

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

تهيئة مصنف النص

بعد ذلك، سنقوم بتحميل نموذج تحليل المشاعر الذي تم تنزيله من 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 Studio.

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

img/text-classification-result.png

13. قم بتعزيز التطبيق بمزيد من ميزات Firebase

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

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

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

14. تهانينا!

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

ما قمنا بتغطيته

  • TensorFlow لايت
  • فايربيس مل

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

  • قم بقياس سرعة استنتاج النموذج الخاص بك من خلال مراقبة أداء Firebase.
  • انشر النموذج من Colab مباشرة إلى Firebase عبر Firebase ML Model Management API.
  • أضف آلية للسماح للمستخدمين بتقديم تعليقات على نتيجة التنبؤ، واستخدم Firebase Analytics لتتبع تعليقات المستخدمين.
  • اختبار A/B لنموذج Average Word Vector ونموذج MobileBERT مع اختبار Firebase A/B.

يتعلم أكثر

لدي سؤال؟

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