إضافة ميزة "تصنيف النص" على الجهاز إلى تطبيقك باستخدام TensorFlow Lite وFirebase - درس تطبيقي حول الترميز في iOS

1- نظرة عامة

segmentation_result_screen.png

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

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

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

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

المعلومات التي ستطّلع عليها

  • تدريب نموذج تحليل الآراء في TF Lite باستخدام أداة إنشاء النماذج TF Lite
  • تفعيل نماذج TF Lite في تقنية تعلُّم الآلة في Firebase والوصول إليها من تطبيقك
  • تتبُّع ملاحظات المستخدمين لقياس دقة النموذج باستخدام "إحصاءات Firebase"
  • أداء نموذج الملف الشخصي من خلال ميزة "مراقبة الأداء في Firebase"
  • اختيار نموذج من بين النماذج المنشورة المتعددة التي يتم تحميلها من خلال ميزة "الإعداد عن بُعد"
  • يمكنك تجربة نماذج مختلفة من خلال ميزة "اختبار A/B من Firebase".

المتطلبات

  • Xcode 11 (أو إصدار أعلى)
  • CocoaPods 1.9.1 (أو إصدار أحدث)

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

القراءة فقط اقرأها وأكمِل التمارين

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

حديث متوسط بارع

2- إنشاء مشروع على "وحدة تحكُّم Firebase"

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

  1. انتقِل إلى وحدة تحكُّم Firebase.
  2. اختَر إنشاء مشروع جديد وأدخِل اسمًا لمشروعك "الدرس التطبيقي حول الترميز في 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.

9efb62a92f27e939.png

أضِف 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 مفيدًا لسببَين رئيسيَين:

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

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

أولاً، افتح وحدة تحكُّم Firebase وانقر على "تعلُّم الآلة" في لوحة التنقّل اليمنى. انقر على "البدء". إذا كنت تفتح هذه المرة الأولى ثم انتقل إلى "Custom" (مخصص) وانقر فوق "إضافة نموذج" .

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

3c3c50e6ef12b3b.png

6- تنزيل النموذج من تعلُّم الآلة في Firebase

قد يكون اختيار وقت تنزيل النموذج البعيد من 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 Task Library (النص) إلى ملحقات التطبيق. تأكَّد من إضافة الاعتمادية ضمن بيان 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، وانقر على تشغيل ( التنفيذ.png) في شريط أدوات Xcode.

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

segmentation_result_screen.png

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 Analytics لتتبع تعليقات المستخدمين.
  • يمكنك إجراء اختبار A/B على نموذج متوسط الكلمات المتجهة ونموذج MobileBERT باستخدام اختبار A/B من Firebase.

مزيد من المعلومات

هل لديك سؤال؟

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