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

1- نظرة عامة

segmentation_result_screen.png

مرحبًا بك في ميزة "تصنيف النص" باستخدام 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 إلى المشروع

  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 ML لسببَين رئيسيَّين:

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

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

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

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

3c3c50e6ef12b3b.png

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 وانقر على تشغيل ( التنفيذ.png) في شريط أدوات Xcode.

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

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

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

هل لديك سؤال؟

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