1. نظرة عامة

مرحبًا بك في الدرس التطبيقي حول تصنيف النصوص باستخدام TensorFlow Lite وFirebase. في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية استخدام TensorFlow Lite وFirebase لتدريب نموذج تصنيف النصوص وتفعيله في تطبيقك. يستند هذا الدرس التطبيقي حول الترميز إلى هذا المثال من TensorFlow Lite.
تصنيف النصوص هو عملية تعيين علامات أو فئات للنصوص وفقًا لمحتواها. وهي إحدى المهام الأساسية في معالجة اللغة الطبيعية (NLP) التي لها تطبيقات واسعة النطاق، مثل تحليل المشاعر وتصنيف المواضيع ورصد الرسائل غير المرغوب فيها ورصد النية.
تحليل المشاعر هو تفسير وتصنيف المشاعر (إيجابية وسلبية ومحايدة) ضمن البيانات النصية باستخدام أساليب تحليل النصوص. تتيح تحليلات المشاعر للأنشطة التجارية تحديد مشاعر العملاء تجاه المنتجات أو العلامات التجارية أو الخدمات في المحادثات والملاحظات على الإنترنت.
يوضّح هذا البرنامج التعليمي كيفية إنشاء نموذج تعلُّم آلي لتحليل المشاعر، وتحديدًا تصنيف النص على أنّه إيجابي أو سلبي. هذا مثال على التصنيف الثنائي أو التصنيف إلى فئتين، وهو نوع مهم وقابل للتطبيق على نطاق واسع من مشاكل تعلُّم الآلة.
أهداف الدورة التعليمية
- تدريب نموذج لتحليل المشاعر باستخدام TF Lite Model Maker
- نشر نماذج TF Lite في Firebase ML والوصول إليها من تطبيقك
- تتبُّع ملاحظات المستخدمين لقياس دقة النموذج باستخدام "إحصاءات Firebase"
- مراقبة أداء نموذج الملف الشخصي من خلال ميزة "مراقبة الأداء في Firebase"
- اختيار أحد النماذج المتعددة التي تم نشرها ليتم تحميلها من خلال "الإعداد عن بُعد"
- تجربة نماذج مختلفة من خلال ميزة "اختبار A/B من Firebase"
المتطلبات
- Xcode 11 (أو إصدار أحدث)
- الإصدار 1.9.1 (أو إصدار أحدث) من CocoaPods
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك في إنشاء تطبيقات 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'
في طريقة didFinishLaunchingWithOptions الخاصة بـ AppDelegate، استورِد 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))
}
}
}
في viewDidLoad من ViewController.swift، استبدِل طلب loadModel() بطريقة تنزيل النموذج الجديدة.
// 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 في "مكتبة المهام".
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 لقياس سرعة استنتاج النموذج الذي يتم تشغيله على جهاز المستخدم
- "إحصاءات Firebase" لقياس مدى جودة أداء النموذج في مرحلة الإنتاج من خلال قياس تفاعل المستخدمين
- استخدام ميزة "اختبار A/B من Firebase" لاختبار إصدارات متعددة من نموذجك
- هل تذكر أنّنا درّبنا إصدارَين من نموذج TFLite في وقت سابق؟ يُعدّ اختبار A/B طريقة جيدة لمعرفة الإصدار الذي يحقّق أداءً أفضل في مرحلة الإنتاج.
لمزيد من المعلومات حول كيفية الاستفادة من هذه الميزات في تطبيقك، اطّلِع على دروس البرمجة أدناه:
10. تهانينا!
في هذا الدرس التطبيقي حول الترميز، تعلّمت كيفية تدريب نموذج TFLite لتحليل المشاعر ونشره في تطبيقك على الأجهزة الجوّالة باستخدام Firebase. لمزيد من المعلومات عن TFLite وFirebase، يمكنك الاطّلاع على نماذج TFLite الأخرى وأدلة البدء في Firebase.
المواضيع التي تناولناها
- TensorFlow Lite
- Firebase ML
الخطوات التالية
- يمكنك قياس سرعة استنتاج النموذج باستخدام خدمة "مراقبة الأداء في Firebase".
- يمكنك نشر النموذج من Colab مباشرةً إلى Firebase من خلال واجهة برمجة التطبيقات الخاصة بإدارة النماذج في Firebase ML.
- أضِف آلية تتيح للمستخدمين تقديم ملاحظات حول نتيجة التوقّع، واستخدِم "إحصاءات Firebase" لتتبُّع ملاحظات المستخدمين.
- إجراء اختبار A/B على نموذج "متّجه الكلمات المتوسط" ونموذج MobileBERT باستخدام ميزة "اختبار A/B من Firebase"
مزيد من المعلومات
- مستندات Firebase Machine Learning
- مستندات TensorFlow Lite
- قياس أداء التطبيق باستخدام Firebase
- نماذج اختبار A/B باستخدام Firebase