1. نظرة عامة
مرحبًا بك في برنامج Text Classification with TensorFlow Lite and Firebase التعليمي. في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية استخدام TensorFlow Lite وFirebase لتدريب نموذج تصنيف النصوص ونشره في تطبيقك. يستند هذا الدرس التطبيقي حول الترميز إلى هذا المثال على TensorFlow Lite.
تصنيف النصوص هو عملية تعيين علامات أو فئات للنصوص وفقًا لمحتواها. وهي إحدى المهام الأساسية في معالجة اللغات الطبيعية (NLP) التي لها تطبيقات واسعة النطاق، مثل تحليل المشاعر وتصنيف المواضيع ورصد الرسائل غير المرغوب فيها ورصد النية.
تحليل المشاعر هو تفسير وتصنيف المشاعر (إيجابية وسلبية ومحايدة) ضمن البيانات النصية باستخدام أساليب تحليل النصوص. تتيح ميزة "تحليل المشاعر" للأنشطة التجارية تحديد مشاعر العملاء تجاه المنتجات أو العلامات التجارية أو الخدمات في المحادثات والملاحظات على الإنترنت.
يوضّح هذا البرنامج التعليمي كيفية إنشاء نموذج تعلُّم آلة لتحليل المشاعر، وتحديدًا تصنيف النص على أنّه إيجابي أو سلبي. هذا مثال على التصنيف الثنائي أو التصنيف إلى فئتين، وهو نوع مهم وقابل للتطبيق على نطاق واسع من مشاكل تعلُّم الآلة.
أهداف الدورة التعليمية
- تدريب نماذج تحليل المشاعر في TF Lite باستخدام TF Lite Model Maker
- نشر نماذج TF Lite في Firebase ML والوصول إليها من تطبيقك
- دمج نماذج تحليل المشاعر في TF Lite في تطبيقك باستخدام "مكتبة مهام TF Lite"
المتطلبات
- أحدث إصدار من استوديو Android
- نموذج التعليمات البرمجية
- جهاز اختبار يعمل بالإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث ويتضمّن "خدمات 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"، اختَر دليل codelab-textclassification-android-master
( ) من عملية تنزيل نموذج الرمز البرمجي (ملف > فتح > .../codelab-textclassification-android-master/start).
يجب أن يكون مشروع البدء مفتوحًا الآن في "استوديو Android".
4. تشغيل التطبيق النموذجي
بعد استيراد المشروع إلى "استوديو Android"، يمكنك تشغيل التطبيق للمرة الأولى. وصِّل جهاز Android وانقر على تشغيل ( ) في شريط أدوات "استوديو Android".
من المفترض أن يتم تشغيل التطبيق على جهازك. يحتوي هذا التطبيق على واجهة مستخدم بسيطة تسهّل دمج نماذج تصنيف النصوص واختبارها في الخطوات التالية. في هذه المرحلة، إذا حاولت توقّع المشاعر، سيعرض التطبيق بعض النتائج الوهمية فقط.
5- إنشاء مشروع في "وحدة تحكّم Firebase"
إضافة Firebase إلى المشروع
- انتقِل إلى وحدة تحكّم Firebase.
- انقر على إضافة مشروع.
- اختَر اسم مشروع أو أدخِله.
- اتّبِع خطوات الإعداد المتبقية في وحدة تحكّم Firebase، ثم انقر على "إنشاء مشروع" (أو "إضافة Firebase"، إذا كنت تستخدم مشروعًا حاليًا على Google).
6. إضافة Firebase إلى التطبيق
- من شاشة النظرة العامة لمشروعك الجديد، انقر على رمز Android لبدء سير عمل الإعداد.
- أدخِل اسم حزمة التطبيق الخاص بدرس البرمجة:
org.tensorflow.lite.codelabs.textclassification
إضافة ملف google-services.json إلى تطبيقك
بعد إضافة اسم الحزمة واختيار "تسجيل"**، انقر على "تنزيل ملف google-services.json**" للحصول على ملف إعداد Firebase Android، ثم انسخ ملف google-services.json
إلى الدليل *app
* في مشروعك.
إضافة إضافة google-services إلى تطبيقك
اتّبِع التعليمات الواردة في "وحدة تحكّم Firebase" لتعديل ملفات build.gradle.kts
من أجل إضافة Firebase إلى تطبيقك.
يستخدم المكوّن الإضافي google-services ملف google-services.json لإعداد تطبيقك لاستخدام Firebase.
مزامنة مشروعك مع ملفات Gradle
للتأكّد من توفّر جميع التبعيات لتطبيقك، عليك مزامنة مشروعك مع ملفات Gradle في هذه المرحلة. انقر على ملف (File) > مزامنة المشروع مع ملفات Gradle (Sync Project with Gradle Files) من شريط أدوات "استوديو Android".
7. تشغيل التطبيق باستخدام Firebase
بعد إعداد المكوّن الإضافي google-services
باستخدام ملف JSON، يمكنك الآن تشغيل التطبيق باستخدام Firebase. وصِّل جهاز Android وانقر على تشغيل ( ) في شريط أدوات "استوديو Android".
من المفترض أن يتم تشغيل التطبيق على جهازك. في هذه المرحلة، من المفترض أن يستمر إنشاء تطبيقك بنجاح.
8. تدريب نموذج تحليل المشاعر
سنستخدم أداة TensorFlow Lite Model Maker لتدريب نموذج تصنيف النصوص من أجل التنبؤ بمشاعر نص معيّن.
يتم تقديم هذه الخطوة كدفتر ملاحظات Python يمكنك فتحه في Google Colab. يمكنك اختيار وقت التشغيل > تشغيل الكل لتنفيذ جميع دفاتر الملاحظات في آنٍ واحد.
الفتح في Colab
بعد الانتهاء من هذه الخطوة، سيكون لديك نموذج لتحليل المشاعر باستخدام TensorFlow Lite، وهو جاهز للنشر في تطبيق على الأجهزة الجوّالة.
9. تفعيل نموذج في Firebase ML
إنّ نشر نموذج على Firebase ML مفيد لسببَين رئيسيَّين:
- يمكننا الحفاظ على صغر حجم تثبيت التطبيق وتنزيل النموذج فقط عند الحاجة
- يمكن تحديث النموذج بانتظام ووفقًا لدورة إصدار مختلفة عن دورة إصدار التطبيق بأكمله
يمكن نشر النموذج إما من خلال وحدة التحكّم أو آليًا باستخدام حزمة تطوير البرامج (SDK) الخاصة بمشرف Firebase. في هذه الخطوة، سننفّذ عملية النشر من خلال وحدة التحكّم.
أولاً، افتح وحدة تحكّم Firebase وانقر على "التعلم الآلي" في لوحة التنقّل اليمنى. انقر على "البدء" إذا كنت تفتح هذه الصفحة للمرة الأولى. بعد ذلك، انتقِل إلى "مخصّص" وانقر على زر "إضافة نموذج".
عندما يُطلب منك ذلك، أدخِل اسم النموذج sentiment_analysis
وحمِّل الملف الذي نزّلته من Colab في الخطوة السابقة.
10. تنزيل النموذج من Firebase ML
قد يكون تحديد الوقت المناسب لتنزيل النموذج البعيد من Firebase إلى تطبيقك أمرًا صعبًا لأنّ نماذج TFLite يمكن أن تصبح كبيرة نسبيًا. من الأفضل تجنُّب تحميل النموذج فور تشغيل التطبيق، لأنّه إذا كان نموذجنا يُستخدم لميزة واحدة فقط ولم يستخدمها المستخدم أبدًا، سنكون قد نزّلنا كمية كبيرة من البيانات بدون سبب. يمكننا أيضًا ضبط خيارات التنزيل، مثل جلب النماذج فقط عند الاتصال بشبكة Wi-Fi. إذا أردت التأكّد من توفّر النموذج حتى بدون اتصال بالشبكة، من المهم أيضًا تجميعه بدون التطبيق كنسخة احتياطية.
لتبسيط العملية، سنزيل النموذج المجمَّع التلقائي وننزّل دائمًا نموذجًا من 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" مزامنة مشروعك، اختَر مزامنة الآن.
بعد ذلك، لنضِف بعض الرموز لتنزيل النموذج من 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" مزامنة مشروعك، اختَر مزامنة الآن.
تهيئة مصنّف النصوص
بعد ذلك، سنحمّل نموذج تحليل المشاعر الذي تم تنزيله من Firebase باستخدام NLClassifier
في Task Library.
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 وانقر على تشغيل ( ) في شريط أدوات "استوديو Android".
يجب أن يكون التطبيق قادرًا على توقّع المشاعر بشكل صحيح في مراجعة الفيلم التي تُدخلها.
13. تعزيز أداء التطبيق باستخدام المزيد من ميزات Firebase
بالإضافة إلى استضافة نماذج TFLite، توفّر Firebase العديد من الميزات الأخرى لتعزيز حالات استخدام تعلُّم الآلة:
- Firebase Performance Monitoring لقياس سرعة استنتاج النموذج الذي يتم تشغيله على جهاز المستخدم
- "إحصاءات Firebase" لقياس مدى جودة أداء النموذج في مرحلة الإنتاج من خلال قياس تفاعل المستخدمين
- "اختبار A/B من Firebase" لاختبار إصدارات متعددة من نموذجك
- هل تذكر أنّنا درّبنا إصدارَين من نموذج TFLite في وقت سابق؟ يُعدّ اختبار A/B طريقة جيدة لمعرفة الإصدار الذي يحقّق أداءً أفضل في مرحلة الإنتاج.
لمزيد من المعلومات حول كيفية الاستفادة من هذه الميزات في تطبيقك، اطّلِع على دروس البرمجة أدناه:
14. تهانينا!
في هذا الدرس التطبيقي حول الترميز، تعلّمت كيفية تدريب نموذج TFLite لتحليل الآراء ونشره في تطبيقك على الأجهزة الجوّالة باستخدام Firebase. لمزيد من المعلومات عن TFLite وFirebase، يمكنك الاطّلاع على نماذج TFLite الأخرى وأدلة البدء في Firebase.
المواضيع التي تناولناها
- TensorFlow Lite
- Firebase ML
الخطوات التالية
- يمكنك قياس سرعة استنتاج النموذج باستخدام خدمة "مراقبة الأداء في Firebase".
- يمكنك نشر النموذج من Colab مباشرةً إلى Firebase من خلال واجهة برمجة التطبيقات "إدارة نماذج تعلُّم الآلة من Firebase".
- أضِف آلية تتيح للمستخدمين تقديم ملاحظات حول نتيجة التوقّع، واستخدِم "إحصاءات Firebase" لتتبُّع ملاحظات المستخدمين.
- إجراء اختبار A/B لنموذج Average Word Vector ونموذج MobileBERT باستخدام ميزة "اختبار A/B من Firebase"
مزيد من المعلومات
- مستندات Firebase Machine Learning
- مستندات TensorFlow Lite
- قياس أداء التطبيق باستخدام Firebase
- نماذج اختبار A/B باستخدام Firebase