1. סקירה כללית
ברוכים הבאים לסיווג טקסט עם TensorFlow Lite ו-codelab של Firebase. בקודלאב הזה תלמדו איך להשתמש ב-TensorFlow Lite וב-Firebase כדי לאמן ולפרוס מודל לסיווג טקסט באפליקציה. הקודלאב הזה מבוסס על הדוגמה הזו ל-TensorFlow Lite.
סיווג טקסט הוא תהליך הקצאת תגים או קטגוריות לטקסט בהתאם לתוכן שלו. זוהי אחת המשימות הבסיסיות בעיבוד שפה טבעית (NLP), עם יישומים רחבים כמו ניתוח סנטימנטים, תיוג נושאים, זיהוי ספאם וזיהוי כוונה.
ניתוח סנטימנטים הוא פרשנות וסיווג של רגשות (חיוביים, שליליים וניטרליים) בנתוני טקסט באמצעות שיטות לניתוח טקסט. ניתוח סנטימנטים מאפשר לעסקים לזהות את הלך הרוח של הלקוחות ביחס למוצרים, למותגים או לשירותים אחרים שמופיעים בשיחות ובמשוב באינטרנט.
במדריך הזה תלמדו איך ליצור מודל למידת מכונה לניתוח סנטימנטים, ובמיוחד לסיווג טקסט כחיובי או שלילי. זו דוגמה לסיווג בינארי – או שני סיווגים, – בעיה חשובה ורלוונטית ללמידת מכונה.
מה תלמדו
- אימון מודל ניתוח סנטימנטים של TF Lite באמצעות יוצר המודלים של TF Lite
- פריסת מודלים של TF Lite ב-Firebase ML וגישה אליהם מהאפליקציה
- לעקוב אחר משוב המשתמשים כדי למדוד את דיוק המודל באמצעות Firebase Analytics
- מעקב אחר ביצועי מודל הפרופיל באמצעות 'מעקב אחר ביצועים ב-Firebase'
- בחירת אחד מכמה מודלים שנפרסו לטעינה דרך Remote Config
- התנסות במודלים שונים באמצעות Firebase A/B Testing
מה צריך
- Xcode 11 (או גרסה מתקדמת יותר)
- CocoaPods 1.9.1 (או גרסה מתקדמת יותר)
איך תוכלו להשתמש במדריך הזה?
איזה דירוג מגיע לחוויה שלך עם בניית אפליקציות ל-Android?
2. יצירת פרויקט במסוף Firebase
הוספת Firebase לפרויקט
- נכנסים למסוף Firebase.
- בוחרים באפשרות Create New Project (יצירת פרויקט חדש) ומזינים את השם 'Firebase ML iOS Codelab'.
3. לקבלת הפרויקט לדוגמה
הורדת הקוד
מתחילים בהעתקה (cloning) של הפרויקט לדוגמה והרצה של 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 וגוררים אותו לרמה הבסיסית (root) של פרויקט Xcode.
מוסיפים את Firebase ל-Podfile ומפעילים את pod install.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
בשיטה didFinishLaunchingWithOptions
של AppDelegate
, מייבאים את Firebase בחלק העליון של הקובץ
import FirebaseCore
וצריך להוסיף קריאה כדי להגדיר את Firebase.
FirebaseApp.configure()
מריצים שוב את הפרויקט כדי לוודא שהאפליקציה מוגדרת בצורה נכונה ולא קורסת בזמן ההפעלה.
4. אימון מודל לניתוח סנטימנטים
אנחנו נשתמש ב-TensorFlow Lite Model Maker כדי לאמן מודל לסיווג טקסט כדי לחזות סנטימנט של טקסט מסוים.
השלב הזה מוצג כ-notebook של Python שאפשר לפתוח ב-Google Colab.
פתיחה ב-Colab
אחרי שתסיימו את השלב הזה, יהיה לכם מודל ניתוח סנטימנטים של TensorFlow Lite שמוכן לפריסה באפליקציה לנייד.
5. פריסת מודל ב-Firebase ML
יש שתי סיבות עיקריות לפרוס מודל ב-Firebase ML:
- אנחנו יכולים לשמור על גודל קטן של התקנת האפליקציה ולהוריד את המודל רק אם יש צורך
- אפשר לעדכן את המודל באופן קבוע, ומחזור הגרסאות שלו שונה מזה של האפליקציה כולה
אפשר לפרוס את המודל דרך המסוף או באופן פרוגרמטי באמצעות Firebase Admin SDK. בשלב הזה נפרוס דרך המסוף.
קודם כול, פותחים את מסוף 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)) } } }
ב-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 (Text) ליחסי התלות של האפליקציה. חשוב להוסיף את יחסי התלות בהצהרה target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
מריצים את pod install
כדי להתקין את התלות החדשה.
איך מפעילים מסווג טקסט
לאחר מכן נטענו את המודל לניתוח סנטימנטים שהורדתם מ-Firebase באמצעות NLClassifier
של ספריית המשימות.
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
, אפשר להריץ ניתוח סנטימנטים באמצעות הפעלת method אחת.
ViewController.swift
בשיטה classify(text:)
, מחפשים את התגובה לביצוע משימות:
// 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 Performance Monitoring כדי למדוד את מהירות ההסקה של המודל שפועל במכשיר של המשתמשים.
- Firebase Analytics כדי למדוד את הביצועים של המודל בסביבת הייצור על ידי מדידת התגובה של המשתמשים.
- Firebase A/B Testing כדי לבדוק כמה גרסאות של המודל
- זכרתם שאימנו קודם שתי גרסאות של מודל TFLite? בדיקת A/B היא דרך טובה לגלות איזו גרסה מניבה ביצועים טובים יותר בסביבת הייצור!
מידע נוסף על השימוש בתכונות האלה באפליקציה זמין ב-Codelabs בהמשך:
10. כל הכבוד!
בקודלאב הזה למדתם איך לאמן מודל TFLite לניתוח רגשות ולפרוס אותו באפליקציה לנייד באמצעות Firebase. כדי לקבל מידע נוסף על TFLite ועל Firebase, אפשר לעיין בדוגמאות אחרות של TFLite ובמדריכים לתחילת העבודה ב-Firebase.
הנושאים שטיפלנו בהם
- TensorFlow Lite
- Firebase ML
השלבים הבאים
- אפשר למדוד את מהירות ההסקה של המודל באמצעות מעקב אחר ביצועים ב-Firebase.
- פריסת המודל מ-Colab ישירות ל-Firebase באמצעות Firebase ML Model Management API.
- ניתן להוסיף מנגנון כדי לאפשר למשתמשים לשלוח משוב על תוצאת החיזוי, ולהשתמש ב-Firebase Analytics כדי לעקוב אחר משוב המשתמשים.
- בדיקת A/B באמצעות Firebase A/B Testing ומודל ממוצע של Word Vector ומודל MobileBERT.
מידע נוסף
- מסמכי התיעוד של Firebase Machine Learning
- מסמכי תיעוד של TensorFlow Lite
- מדידת ביצועים של אפליקציות באמצעות Firebase
- מודלים לבדיקות A/B ב-Firebase