1. نظرة عامة
مرحبًا بك في برنامج Text Classification with TensorFlow Lite and Firebase التعليمي. في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية استخدام TensorFlow Lite وFirebase لتدريب نموذج تصنيف النصوص ونشره في تطبيقك. يستند هذا الدرس التطبيقي حول الترميز إلى هذا المثال على TensorFlow Lite.
تصنيف النصوص هو عملية تعيين علامات أو فئات للنصوص وفقًا لمحتواها. وهي إحدى المهام الأساسية في معالجة اللغات الطبيعية (NLP) التي لها تطبيقات واسعة النطاق، مثل تحليل المشاعر وتصنيف المواضيع ورصد الرسائل غير المرغوب فيها ورصد النية.
تحليل المشاعر هو تفسير وتصنيف المشاعر (إيجابية وسلبية ومحايدة) ضمن البيانات النصية باستخدام أساليب تحليل النصوص. تتيح ميزة "تحليل المشاعر" للأنشطة التجارية تحديد مشاعر العملاء تجاه المنتجات أو العلامات التجارية أو الخدمات في المحادثات والملاحظات على الإنترنت.
يوضّح هذا البرنامج التعليمي كيفية إنشاء نموذج تعلُّم آلة لتحليل المشاعر، وتحديدًا تصنيف النص على أنّه إيجابي أو سلبي. هذا مثال على التصنيف الثنائي أو التصنيف إلى فئتين، وهو نوع مهم وقابل للتطبيق على نطاق واسع من مشاكل تعلُّم الآلة.
أهداف الدورة التعليمية
- تدريب نموذج تحليل المشاعر في TF Lite باستخدام TF Lite Model Maker
- نشر نماذج TF Lite في Firebase ML والوصول إليها من تطبيقك
- تتبُّع ملاحظات المستخدمين لقياس دقة النموذج باستخدام "إحصاءات Firebase"
- قياس أداء نموذج الملف الشخصي من خلال "مراقبة أداء Firebase"
- اختيار أحد النماذج المتعدّدة التي تم نشرها ليتم تحميلها من خلال "الإعداد عن بُعد"
- تجربة نماذج مختلفة من خلال ميزة "اختبار A/B من Firebase"
المتطلبات
- Xcode 11 (أو إصدار أحدث)
- CocoaPods 1.9.1 (أو إصدار أحدث)
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك في إنشاء تطبيقات Android؟
2. إنشاء مشروع في "وحدة تحكّم Firebase"
إضافة Firebase إلى المشروع
- انتقِل إلى وحدة تحكّم Firebase.
- اختَر إنشاء مشروع جديد وأطلِق على مشروعك اسم "Firebase ML iOS Codelab".
3- الحصول على المشروع التجريبي
تنزيل الرمز
ابدأ بنسخ المشروع النموذجي وتشغيل pod update
في دليل المشروع:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
إذا لم يكن git مثبّتًا لديك، يمكنك أيضًا تنزيل المشروع النموذجي من صفحة GitHub أو من خلال النقر على هذا الرابط. بعد تنزيل المشروع، شغِّله في Xcode وجرِّب تصنيف النصوص للتعرّف على طريقة عمله.
إعداد Firebase
اتّبِع التعليمات الواردة في المستندات لإنشاء مشروع جديد على Firebase. بعد الحصول على مشروعك، نزِّل ملف GoogleService-Info.plist
الخاص بمشروعك من وحدة تحكّم Firebase واسحبه إلى جذر مشروع Xcode.
أضِف Firebase إلى ملف Podfile ونفِّذ الأمر pod install.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
في طريقة AppDelegate
الخاصة بـ didFinishLaunchingWithOptions
، استورِد Firebase في أعلى الملف
import FirebaseCore
وأضِف طلبًا لضبط Firebase.
FirebaseApp.configure()
أعِد تشغيل المشروع للتأكّد من ضبط التطبيق بشكلٍ صحيح وعدم تعطُّله عند التشغيل.
4. تدريب نموذج تحليل المشاعر
سنستخدم أداة TensorFlow Lite Model Maker لتدريب نموذج تصنيف النصوص من أجل التنبؤ بمشاعر نص معيّن.
يتم تقديم هذه الخطوة كدفتر ملاحظات Python يمكنك فتحه في Google Colab.
الفتح في Colab
بعد الانتهاء من هذه الخطوة، سيكون لديك نموذج لتحليل المشاعر باستخدام TensorFlow Lite، وهو جاهز للنشر في تطبيق على الأجهزة الجوّالة.
5- تفعيل نموذج في Firebase ML
إنّ نشر نموذج على Firebase ML مفيد لسببَين رئيسيَّين:
- يمكننا الحفاظ على صغر حجم تثبيت التطبيق وتنزيل النموذج فقط عند الحاجة
- يمكن تحديث النموذج بانتظام ووفقًا لدورة إصدار مختلفة عن دورة إصدار التطبيق بأكمله
يمكن نشر النموذج إما من خلال وحدة التحكّم أو آليًا باستخدام حزمة تطوير البرامج (SDK) الخاصة بمشرف Firebase. في هذه الخطوة، سننفّذ عملية النشر من خلال وحدة التحكّم.
أولاً، افتح وحدة تحكّم Firebase وانقر على "التعلم الآلي" في لوحة التنقّل اليمنى. انقر على "البدء" إذا كنت تفتح هذه الصفحة للمرة الأولى. بعد ذلك، انتقِل إلى "مخصّص" وانقر على زر "إضافة نموذج".
عندما يُطلب منك ذلك، أدخِل اسم النموذج sentiment_analysis
وحمِّل الملف الذي نزّلته من Colab في الخطوة السابقة.
6. تنزيل النموذج من Firebase ML
قد يكون تحديد الوقت المناسب لتنزيل النموذج البعيد من Firebase إلى تطبيقك أمرًا صعبًا لأنّ نماذج TFLite يمكن أن تصبح كبيرة نسبيًا. من الأفضل تجنُّب تحميل النموذج فور تشغيل التطبيق، لأنّه إذا كان نموذجنا يُستخدم لميزة واحدة فقط ولم يستخدمها المستخدم أبدًا، سنكون قد نزّلنا كمية كبيرة من البيانات بدون سبب. يمكننا أيضًا ضبط خيارات التنزيل، مثل جلب النماذج فقط عند الاتصال بشبكة Wi-Fi. إذا أردت التأكّد من توفّر النموذج حتى بدون اتصال بالشبكة، من المهم أيضًا تجميعه بدون التطبيق كنسخة احتياطية.
لتبسيط العملية، سنزيل النموذج المجمَّع التلقائي وننزّل دائمًا نموذجًا من Firebase عند بدء تشغيل التطبيق للمرة الأولى. بهذه الطريقة، يمكنك التأكّد عند إجراء تحليل المشاعر من أنّ الاستنتاج يتم باستخدام النموذج المقدَّم من Firebase.
في أعلى ModelLoader.swift
، استورِد وحدة Firebase.
import FirebaseCore import FirebaseMLModelDownloader
بعد ذلك، نفِّذ الطرق التالية.
static func downloadModel(named name: String, completion: @escaping (CustomModel?, DownloadError?) -> Void) { guard FirebaseApp.app() != nil else { completion(nil, .firebaseNotInitialized) return } guard success == nil && failure == nil else { completion(nil, .downloadInProgress) return } let conditions = ModelDownloadConditions(allowsCellularAccess: false) ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in switch (result) { case .success(let customModel): // Download complete. // The CustomModel object contains the local path of the model file, // which you can use to instantiate a TensorFlow Lite classifier. return completion(customModel, nil) case .failure(let error): // Download was unsuccessful. Notify error message. completion(nil, .downloadFailed(underlyingError: error)) } } }
في ViewController.swift
، استبدِل استدعاء loadModel()
بطريقة تنزيل النموذج الجديدة.viewDidLoad
// Download the model from Firebase print("Fetching model...") ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in guard let customModel = customModel else { if let error = error { print(error) } return } print("Model download complete") // TODO: Initialize an NLClassifier from the downloaded model }
أعِد تشغيل تطبيقك. بعد بضع ثوانٍ، من المفترض أن يظهر سجلّ في Xcode يشير إلى أنّه تم تنزيل النموذج عن بُعد بنجاح. جرِّب كتابة بعض النصوص وتأكَّد من أنّ سلوك التطبيق لم يتغيّر.
7. دمج النموذج في تطبيقك
تساعدك "مكتبة المهام" في TensorFlow Lite على دمج نماذج TensorFlow Lite في تطبيقك باستخدام بضعة أسطر من الرموز البرمجية. سنبدأ بإنشاء مثيل TFLNLClassifier
باستخدام نموذج TensorFlow Lite الذي تم تنزيله من Firebase. بعد ذلك، سنستخدمه لتصنيف النص الذي أدخله مستخدمو التطبيق وعرض النتيجة على واجهة المستخدم.
إضافة التبعية
انتقِل إلى ملف Podfile الخاص بالتطبيق وأضِف "مكتبة مهام TensorFlow Lite" (النص) في تبعيات التطبيق. تأكَّد من إضافة التبعية ضمن بيان target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
نفِّذ الأمر pod install
لتثبيت التبعية الجديدة.
تهيئة مصنّف النصوص
بعد ذلك، سنحمّل نموذج تحليل المشاعر الذي تم تنزيله من Firebase باستخدام NLClassifier
في Task Library.
ViewController.swift
لنعرّف متغيّر مثيل TFLNLClassifier. في أعلى الملف، استورِد التبعية الجديدة:
import TensorFlowLiteTaskText
ابحث عن هذا التعليق فوق الطريقة التي عدّلناها في الخطوة الأخيرة:
// TODO: Add a TFLNLClassifier property.
استبدِل TODO بالرمز التالي:
private var classifier: TFLNLClassifier?
اضبط قيمة المتغيّر textClassifier
باستخدام نموذج تحليل المشاعر الذي تم تنزيله من Firebase. ابحث عن التعليق الذي أضفناه في الخطوة الأخيرة:
// TODO: Initialize an NLClassifier from the downloaded model
استبدِل TODO بالرمز التالي:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
تصنيف النص
بعد إعداد مثيل classifier
، يمكنك إجراء تحليل المشاعر باستخدام استدعاء طريقة واحدة.
ViewController.swift
في طريقة classify(text:)
، ابحث عن التعليق TODO:
// TODO: Run sentiment analysis on the input text
استبدِل التعليق بالرمز التالي:
guard let classifier = self.classifier else { return }
// Classify the text
let classifierResults = classifier.classify(text: text)
// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)
8. تشغيل التطبيق النهائي
لقد دمَجت نموذج تحليل المشاعر في التطبيق، لذا لنختبره. وصِّل جهاز iOS وانقر على تشغيل ( ) في شريط أدوات Xcode.
يجب أن يكون التطبيق قادرًا على توقّع المشاعر بشكل صحيح في مراجعة الفيلم التي تُدخلها.
9. تعزيز أداء التطبيق باستخدام المزيد من ميزات Firebase
بالإضافة إلى استضافة نماذج TFLite، توفّر Firebase العديد من الميزات الأخرى لتعزيز حالات استخدام تعلُّم الآلة:
- Firebase Performance Monitoring لقياس سرعة استنتاج النموذج الذي يتم تشغيله على جهاز المستخدم
- "إحصاءات Firebase" لقياس مدى جودة أداء النموذج في مرحلة الإنتاج من خلال قياس تفاعل المستخدمين
- "اختبار A/B من Firebase" لاختبار إصدارات متعددة من نموذجك
- هل تذكر أنّنا درّبنا إصدارَين من نموذج TFLite في وقت سابق؟ يُعدّ اختبار A/B طريقة جيدة لمعرفة الإصدار الذي يحقّق أداءً أفضل في مرحلة الإنتاج.
لمزيد من المعلومات حول كيفية الاستفادة من هذه الميزات في تطبيقك، اطّلِع على دروس البرمجة أدناه:
10. تهانينا!
في هذا الدرس التطبيقي حول الترميز، تعلّمت كيفية تدريب نموذج 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