با TensorFlow Lite و Firebase طبقه بندی متن روی دستگاه را به برنامه خود اضافه کنید - iOS Codelab

1. بررسی اجمالی

classification_result_screen.png

به طبقه بندی متن با TensorFlow Lite و Codelab Firebase خوش آمدید. در این کد لبه یاد خواهید گرفت که چگونه از TensorFlow Lite و Firebase برای آموزش و استقرار یک مدل طبقه بندی متن در برنامه خود استفاده کنید. این Codelab بر اساس این مثال TensorFlow Lite است.

طبقه‌بندی متن، فرآیند اختصاص برچسب‌ها یا دسته‌بندی‌ها به متن با توجه به محتوای آن است. این یکی از وظایف اساسی در پردازش زبان طبیعی (NLP) با کاربردهای گسترده ای مانند تجزیه و تحلیل احساسات، برچسب گذاری موضوع، تشخیص هرزنامه، و تشخیص هدف است.

تحلیل احساسات تفسیر و طبقه بندی احساسات (مثبت، منفی و خنثی) در داده های متنی با استفاده از تکنیک های تحلیل متن است. تجزیه و تحلیل احساسات به کسب و کارها این امکان را می دهد که احساسات مشتری نسبت به محصولات، برندها یا خدمات را در گفتگوها و بازخوردهای آنلاین شناسایی کنند.

این آموزش نشان می دهد که چگونه می توان یک مدل یادگیری ماشین برای تجزیه و تحلیل احساسات، به ویژه طبقه بندی متن به عنوان مثبت یا منفی، ساخت. این نمونه‌ای از طبقه‌بندی باینری یا دو کلاسه است، یک نوع مهم و کاربردی از مشکلات یادگیری ماشین.

چیزی که یاد خواهید گرفت

  • با TF Lite Model Maker یک مدل تحلیل احساسات TF Lite را آموزش دهید
  • مدل های TF Lite را در Firebase ML مستقر کنید و از برنامه خود به آنها دسترسی داشته باشید
  • بازخورد کاربران را برای اندازه‌گیری دقت مدل با Firebase Analytics دنبال کنید
  • عملکرد مدل نمایه از طریق نظارت بر عملکرد Firebase
  • انتخاب کنید که کدام یک از چندین مدل مستقر شده از طریق Remote Config بارگیری شود
  • مدل های مختلف را از طریق Firebase A/B Testing آزمایش کنید

آنچه شما نیاز دارید

  • Xcode 11 (یا بالاتر)
  • CocoaPods 1.9.1 (یا بالاتر)

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

تجربه خود را در ساخت برنامه های اندروید چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. پروژه کنسول Firebase را ایجاد کنید

Firebase را به پروژه اضافه کنید

  1. به کنسول Firebase بروید.
  2. Create New Project را انتخاب کنید و نام پروژه خود را "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 بکشید.

9efb62a92f27e939.png

Firebase را به Podfile خود اضافه کنید و نصب pod را اجرا کنید.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

در روش didFinishLaunchingWithOptions در AppDelegate ، Firebase را در بالای فایل وارد کنید

import FirebaseCore

و یک تماس برای پیکربندی Firebase اضافه کنید.

FirebaseApp.configure()

پروژه را دوباره اجرا کنید تا مطمئن شوید که برنامه به درستی پیکربندی شده است و در هنگام راه اندازی خراب نمی شود.

4. یک مدل تحلیل احساسات را آموزش دهید

ما از TensorFlow Lite Model Maker برای آموزش یک مدل طبقه‌بندی متن برای پیش‌بینی احساس یک متن استفاده می‌کنیم.

این مرحله به عنوان یک نوت بوک پایتون ارائه می شود که می توانید آن را در Google Colab باز کنید.

در کولب باز کنید

پس از اتمام این مرحله، یک مدل تحلیل احساسات TensorFlow Lite خواهید داشت که برای استقرار در یک برنامه تلفن همراه آماده است.

5. یک مدل را در Firebase ML مستقر کنید

استقرار یک مدل در Firebase ML به دو دلیل اصلی مفید است:

  1. ما می توانیم اندازه نصب برنامه را کوچک نگه داریم و فقط در صورت نیاز مدل را دانلود کنیم
  2. مدل را می توان به طور منظم و با چرخه انتشار متفاوت از کل برنامه به روز کرد

این مدل را می توان از طریق کنسول یا به صورت برنامه نویسی با استفاده از Firebase Admin SDK مستقر کرد. در این مرحله از طریق کنسول مستقر می‌شویم.

ابتدا کنسول Firebase را باز کنید و روی Machine Learning در پنل ناوبری سمت چپ کلیک کنید. اگر برای اولین بار این را باز می کنید، روی «شروع به کار» کلیک کنید. سپس به "Custom" بروید و روی دکمه "Add model" کلیک کنید.

هنگامی که از شما خواسته شد، مدل sentiment_analysis را نام ببرید و فایلی را که در مرحله قبل از Colab دانلود کرده اید، آپلود کنید.

3c3c50e6ef12b3b.png

6. دانلود مدل از Firebase ML

انتخاب زمان دانلود مدل از راه دور از Firebase در برنامه شما می تواند مشکل باشد زیرا مدل های TFLite می توانند نسبتاً بزرگ شوند. در حالت ایده‌آل، می‌خواهیم از بارگیری مدل بلافاصله هنگام راه‌اندازی برنامه جلوگیری کنیم، زیرا اگر مدل ما فقط برای یک ویژگی استفاده شود و کاربر هرگز از آن ویژگی استفاده نکند، بدون دلیل حجم قابل توجهی از داده‌ها را دانلود کرده‌ایم. همچنین می‌توانیم گزینه‌های دانلود مانند واکشی مدل‌ها را هنگام اتصال به وای‌فای تنظیم کنیم. اگر می‌خواهید مطمئن شوید که مدل حتی بدون اتصال به شبکه نیز در دسترس است، مهم است که آن را بدون برنامه به‌عنوان پشتیبان نیز همراه کنید.

برای سادگی، مدل پیش‌فرض همراه را حذف می‌کنیم و همیشه وقتی برنامه برای اولین بار شروع می‌شود، مدلی را از 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 's 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 Task Library به شما کمک می کند مدل های TensorFlow Lite را تنها با چند خط کد در برنامه خود ادغام کنید. ما یک نمونه TFLNLClassifier با استفاده از مدل TensorFlow Lite که از Firebase دانلود شده است، مقداردهی اولیه می کنیم. سپس از آن برای طبقه بندی متن ورودی کاربران برنامه و نمایش نتیجه در رابط کاربری استفاده می کنیم.

وابستگی را اضافه کنید

به Podfile برنامه بروید و TensorFlow Lite Task Library (متن) را در وابستگی های برنامه اضافه کنید. اطمینان حاصل کنید که وابستگی را در اعلان 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 خود را وصل کنید و روی Run کلیک کنید ( execute.png ) در نوار ابزار Xcode.

برنامه باید بتواند به درستی احساس نقد فیلمی را که وارد می‌کنید پیش‌بینی کند.

classification_result_screen.png

9. برنامه را با ویژگی های Firebase بیشتر تقویت کنید

علاوه بر میزبانی مدل‌های TFLite، Firebase چندین ویژگی دیگر را برای تقویت موارد استفاده از یادگیری ماشین شما ارائه می‌کند:

  • نظارت بر عملکرد Firebase برای اندازه گیری سرعت استنتاج مدل شما که در دستگاه کاربران اجرا می شود.
  • Firebase Analytics برای اندازه‌گیری عملکرد خوب مدل شما در تولید با اندازه‌گیری واکنش کاربر.
  • تست Firebase A/B برای آزمایش چندین نسخه از مدل شما
  • آیا به یاد دارید که قبلاً دو نسخه از مدل TFLite خود را آموزش داده بودیم؟ تست A/B راه خوبی برای فهمیدن اینکه کدام نسخه در تولید بهتر عمل می کند!

برای کسب اطلاعات بیشتر در مورد نحوه استفاده از این ویژگی ها در برنامه خود، کدهای زیر را بررسی کنید:

10. تبریک می گویم!

در این کد لبه، شما یاد گرفتید که چگونه یک مدل TFLite تجزیه و تحلیل احساسات را آموزش دهید و آن را با استفاده از Firebase در برنامه تلفن همراه خود اجرا کنید. برای کسب اطلاعات بیشتر در مورد TFLite و Firebase، به سایر نمونه های TFLite و راهنمای شروع Firebase نگاهی بیندازید.

آنچه را پوشش داده ایم

  • TensorFlow Lite
  • Firebase ML

مراحل بعدی

  • سرعت استنتاج مدل خود را با Firebase Performance Monitoring اندازه گیری کنید.
  • مدل را از Colab مستقیماً از طریق Firebase ML Model Management API به Firebase مستقر کنید.
  • مکانیزمی را اضافه کنید که به کاربران امکان می دهد در مورد نتیجه پیش بینی بازخورد داشته باشند و از Firebase Analytics برای ردیابی بازخورد کاربران استفاده کنید.
  • A/B مدل میانگین کلمه برداری و مدل MobileBERT را با تست Firebase A/B تست کنید.

بیشتر بدانید

سوالی دارید؟

گزارش مسائل