1- نظرة عامة
مرحبًا بك في ميزة "تصنيف النص" باستخدام TensorFlow Lite والدرس التطبيقي حول ترميز Firebase. في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية استخدام TensorFlow Lite وFirebase لتدريب نموذج تصنيف النصوص ونشره في تطبيقك. يستند هذا الدرس التطبيقي حول الترميز إلى هذا المثال من TensorFlow Lite.
تصنيف النص هو عملية تعيين علامات أو فئات للنص وفقًا لمحتواه. وهي إحدى المهام الأساسية في معالجة اللغات الطبيعية (NLP) مع تطبيقات واسعة النطاق، مثل تحليل المشاعر وتصنيف المواضيع ورصد الرسائل غير المرغوب فيها ورصد النوايا.
تحليل المشاعر هو تفسير وتصنيف المشاعر (الإيجابية والسلبية والمحايدة) في البيانات النصية باستخدام تقنيات تحليل النص. يسمح تحليل المشاعر للأنشطة التجارية بتحديد مشاعر العملاء تجاه المنتجات أو العلامات التجارية أو الخدمات في المحادثات والملاحظات على الإنترنت.
يوضّح هذا الدليل التعليمي كيفية إنشاء نموذج تعلُّم آلي لتحليل المشاعر، لا سيما تصنيف النص على أنّه إيجابي أو سلبي. هذا مثال على التصنيف الثنائي أو التصنيف ثنائي الفئات، وهو نوع مهم من مشاكل تعلُّم الآلة ينطبق على نطاق واسع.
ما ستتعرّف عليه
- تدريب نموذج تحليل المشاعر باستخدام TensorFlow Lite من خلال أداة إنشاء النماذج في TensorFlow Lite
- نشر نماذج TFLite في تكنولوجيا تعلُّم الآلة من Firebase والوصول إليها من تطبيقك
- تتبُّع ملاحظات المستخدمين لقياس دقة النموذج باستخدام "إحصاءات Firebase"
- أداء نموذج الملف الشخصي من خلال ميزة "مراقبة الأداء في Firebase"
- اختيار أحد النماذج المُنشَأة المتعدّدة التي يتم تحميلها من خلال أداة "الإعداد عن بُعد"
- يمكنك تجربة نماذج مختلفة من خلال ميزة "اختبار A/B من Firebase".
المتطلبات
- Xcode 11 (أو إصدار أحدث)
- CocoaPods 1.9.1 (أو إصدار أحدث)
كيف ستستخدم هذا البرنامج التعليمي؟
كيف تقيّم تجربتك في إنشاء تطبيقات Android؟
2- إنشاء مشروع في "وحدة تحكّم Firebase"
إضافة Firebase إلى المشروع
- انتقِل إلى وحدة تحكُّم Firebase.
- اختَر إنشاء مشروع جديد وأدخِل اسمًا لمشروعك "الدرس التطبيقي حول الترميز في iOS لتعلُّم الآلة من Firebase".
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 '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
من المفيد نشر نموذج في 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
، استبدِل viewDidLoad
التي تُستخدَم للاتّصال بـ 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 Task Library (Text) في ملفات التطبيق المُستندة إليها. تأكَّد من إضافة الاعتمادية ضمن بيان target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
شغِّل pod install
لتثبيت التبعية الجديدة.
تهيئة أداة تصنيف النصوص
سنُحمّل بعد ذلك نموذج تحليل الآراء الذي تم تنزيله من Firebase باستخدام رمز NLClassifier
في "مكتبة المهام".
ViewController.swift
لنُعلن عن متغير مثيل TFLNLClassifier. في أعلى الملف، استورِد التبعية الجديدة:
import TensorFlowLiteTaskText
يمكنك العثور على هذا التعليق أعلى الطريقة التي عدّلناها في الخطوة الأخيرة:
// TODO: Add a TFLNLClassifier property.
استبدل قائمة المهام بالتعليمة البرمجية التالية:
private var classifier: TFLNLClassifier?
يجب إعداد المتغيّر textClassifier
باستخدام نموذج تحليل الآراء الذي تم تنزيله من Firebase. ابحث عن هذا التعليق الذي أضفناه في الخطوة الأخيرة:
// TODO: Initialize an NLClassifier from the downloaded model
استبدل قائمة المهام بالتعليمة البرمجية التالية:
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 Analytics مدى جودة أداء نموذجك في الإنتاج من خلال قياس رد فعل المستخدم.
- اختبار A/B من Firebase لاختبار إصدارات متعددة من النموذج
- هل تذكُر أنّنا درّبنا نسختَين من نموذج TFLite سابقًا؟ يُعتبر اختبار A/B طريقة جيدة لمعرفة الإصدار الذي يحقق أداءً أفضل في مرحلة الإنتاج.
لمعرفة المزيد من المعلومات حول كيفية الاستفادة من هذه الميزات في تطبيقك، اطّلع على الدروس التطبيقية حول الترميز أدناه:
10- تهانينا!
في هذا الدرس التطبيقي حول الترميز، تعلمت كيفية تدريب نموذج TFLite لتحليل الآراء ونشره في تطبيقك المتوافق مع الأجهزة الجوّالة باستخدام Firebase. لمزيد من المعلومات حول TFLite وFirebase، يمكنك الاطّلاع على نماذج TFLite الأخرى وأدلة البدء الخاصة بمنصّة Firebase.
المواضيع التي تناولناها
- TensorFlow Lite
- Firebase ML
الخطوات التالية
- يمكنك قياس سرعة الاستنتاج في النموذج باستخدام ميزة "مراقبة الأداء في Firebase".
- يمكنك نشر النموذج من Colab مباشرةً إلى Firebase عبر واجهة برمجة التطبيقات لإدارة نماذج تعلُّم الآلة في Firebase.
- أضِف آلية للسماح للمستخدمين بتقديم ملاحظاتهم بشأن نتيجة التوقّع، واستخدِم "إحصاءات Firebase" لتتبُّع ملاحظات المستخدمين.
- يمكنك إجراء اختبار A/B على نموذج متوسط الكلمات المتجهة ونموذج MobileBERT باستخدام اختبار A/B من Firebase.
مزيد من المعلومات
- مستندات "تعلُّم الآلة" في Firebase
- مستندات TensorFlow Lite
- قياس أداء التطبيق باستخدام Firebase
- نماذج اختبار A/B باستخدام Firebase