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

۱. مرور کلی

صفحه نمایش نتیجه طبقه بندی.png

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

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

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

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

آنچه یاد خواهید گرفت

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

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

  • Xcode نسخه ۱۱ (یا بالاتر)
  • کوکو پادز ۱.۹.۱ (یا بالاتر)

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

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

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

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

۲. ایجاد پروژه کنسول فایربیس

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

  1. به کنسول فایربیس بروید.
  2. گزینه «ایجاد پروژه جدید » را انتخاب کنید و نام پروژه خود را «Firebase ML iOS Codelab» بگذارید.

۳. نمونه پروژه را دریافت کنید

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

با کلون کردن پروژه نمونه و اجرای pod update در دایرکتوری پروژه شروع کنید:

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

اگر گیت را نصب ندارید، می‌توانید پروژه نمونه را از صفحه گیت‌هاب آن یا با کلیک روی این لینک دانلود کنید. پس از دانلود پروژه، آن را در Xcode اجرا کنید و با طبقه‌بندی متن بازی کنید تا با نحوه کار آن آشنا شوید.

فایربیس را راه‌اندازی کنید

برای ایجاد یک پروژه جدید Firebase، مستندات را دنبال کنید. پس از ایجاد پروژه، فایل GoogleService-Info.plist پروژه خود را از کنسول Firebase دانلود کرده و آن را به ریشه پروژه Xcode بکشید.

9efb62a92f27e939.png

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

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

در متد didFinishLaunchingWithOptions از AppDelegate ، فایل Firebase را در بالای فایل import کنید.

import FirebaseCore

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

FirebaseApp.configure()

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

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

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

این مرحله به صورت یک دفترچه یادداشت پایتون ارائه شده است که می‌توانید آن را در Google Colab باز کنید.

باز در کولاب

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

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

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

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

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

ابتدا کنسول فایربیس را باز کنید و در پنل ناوبری سمت چپ روی Machine Learning کلیک کنید. اگر اولین بار است که این کنسول را باز می‌کنید، روی «شروع به کار» کلیک کنید. سپس به «سفارشی» بروید و روی دکمه «افزودن مدل» کلیک کنید.

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

3c3c50e6ef12b3b.png

۶. دانلود مدل از 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))
          }
  }
}

در 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 را مشاهده کنید که نشان می‌دهد مدل از راه دور با موفقیت دانلود شده است. سعی کنید متنی را تایپ کنید و تأیید کنید که رفتار برنامه تغییر نکرده است.

۷. مدل را در برنامه خود ادغام کنید

کتابخانه وظایف 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 کتابخانه Task بارگذاری خواهیم کرد.

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)

۸. برنامه نهایی را اجرا کنید

شما مدل تحلیل احساسات را در برنامه ادغام کرده‌اید، پس بیایید آن را آزمایش کنیم. دستگاه iOS خود را وصل کنید و روی اجرا () کلیک کنید. اجرا.png ) در نوار ابزار Xcode.

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

صفحه نمایش نتیجه طبقه بندی.png

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

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

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

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

۱۰. تبریک می‌گویم!

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

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

  • تنسورفلو لایت
  • فایربیس ام‌ال

مراحل بعدی

  • سرعت استنتاج مدل خود را با نظارت بر عملکرد Firebase اندازه‌گیری کنید.
  • مدل را از Colab مستقیماً از طریق API مدیریت مدل Firebase ML در Firebase مستقر کنید.
  • مکانیزمی اضافه کنید تا کاربران بتوانند در مورد نتیجه پیش‌بینی بازخورد بدهند و از Firebase Analytics برای پیگیری بازخورد کاربر استفاده کنید.
  • با استفاده از تست A/B در Firebase، مدل Average Word Vector و مدل MobileBERT را با هم تست A/B کنید.

اطلاعات بیشتر

سوالی دارید؟

گزارش مشکلات