הוסף סיווג טקסט במכשיר לאפליקציה שלך עם TensorFlow Lite ו-Firebase - iOS Codelab

1. סקירה כללית

classification_result_screen.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
  • ניסוי עם דגמים שונים באמצעות Firebase A/B Testing

מה אתה צריך

  • Xcode 11 (או יותר)
  • CocoaPods 1.9.1 (או יותר)

כיצד תשתמש במדריך זה?

קרא אותו רק עד הסוף קראו אותו והשלימו את התרגילים

איך תדרג את החוויה שלך בבניית אפליקציות אנדרואיד?

טִירוֹן ביניים בקיא

2. צור פרויקט מסוף Firebase

הוסף את Firebase לפרויקט

  1. עבור אל מסוף Firebase .
  2. בחר צור פרויקט חדש ותן שם לפרויקט שלך "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 'FirebaseMLModelDownloader', '9.3.0-beta'

בשיטת didFinishLaunchingWithOptions של AppDelegate שלך, ייבא את Firebase בחלק העליון של הקובץ

import FirebaseCore

והוסף קריאה כדי להגדיר את Firebase.

FirebaseApp.configure()

הפעל את הפרויקט שוב ​​כדי לוודא שהאפליקציה מוגדרת כהלכה ואינה קורסת בעת ההשקה.

4. אימון מודל ניתוח סנטימנטים

נשתמש ב-TensorFlow Lite Model Maker כדי לאמן מודל סיווג טקסט כדי לחזות סנטימנט של טקסט נתון.

שלב זה מוצג כמחברת Python שתוכל לפתוח בגוגל קולאב.

פתוח ב-Colab

לאחר סיום שלב זה, יהיה לך מודל ניתוח סנטימנט TensorFlow Lite שמוכן לפריסה באפליקציה לנייד.

5. פרוס מודל ל-Firebase ML

פריסת מודל ל-Firebase ML שימושית משתי סיבות עיקריות:

  1. אנחנו יכולים לשמור על גודל התקנת האפליקציה קטן ולהוריד את הדגם רק במידת הצורך
  2. ניתן לעדכן את הדגם באופן שוטף ועם מחזור שחרור שונה מכל האפליקציה

ניתן לפרוס את המודל דרך המסוף, או פרוגרמטית, באמצעות Firebase Admin SDK. בשלב זה נפרוס דרך הקונסולה.

ראשית, פתח את מסוף Firebase ולחץ על Machine Learning בחלונית הניווט השמאלית. לחץ על 'התחל' אם אתה פותח את הפעם הראשונה. לאחר מכן נווט אל "מותאם אישית" ולחץ על כפתור "הוסף דגם".

כשתתבקש, תן שם למודל sentiment_analysis והעלה את הקובץ שהורדת מ-Colab בשלב הקודם.

3c3c50e6ef12b3b.png

6. הורד דגם מ-Firebase ML

הבחירה מתי להוריד את הדגם המרוחק מ-Firebase לאפליקציה שלך יכולה להיות מסובכת מכיוון שדגמי TFLite יכולים לגדול יחסית. באופן אידיאלי אנו רוצים להימנע מטעינת הדגם מיד עם השקת האפליקציה, שכן אם הדגם שלנו משמש לתכונה אחת בלבד והמשתמש לעולם לא ישתמש בתכונה זו, נוריד כמות משמעותית של נתונים ללא סיבה. אנו יכולים גם להגדיר אפשרויות הורדה כמו שליפת דגמים בלבד כאשר הם מחוברים ל- wifi. אם אתם רוצים להבטיח שהדגם זמין גם ללא חיבור לרשת, חשוב לאגד אותו גם ללא האפליקציה כגיבוי.

למען הפשטות, נסיר את דגם ברירת המחדל המצורף ותמיד מורידים דגם מ-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 (טקסט) בתלויות של האפליקציה. ודא שאתה מוסיף את התלות תחת הצהרת target 'TextClassification' .

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

הפעל pod install כדי להתקין את התלות החדשה.

אתחול מסווג טקסט

לאחר מכן נטען את מודל ניתוח הסנטימנט שהורד מ-Firebase באמצעות NLClassifier של ספריית המשימות.

ViewController.swift

בואו נכריז על משתנה מופע TFNLCLlassifier. בחלק העליון של הקובץ, ייבא את התלות החדשה:

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 שלך ולחץ על הפעל ( execute.png ) בסרגל הכלים Xcode.

האפליקציה אמורה להיות מסוגלת לחזות נכון את הסנטימנט של ביקורת הסרט שאתה מזין.

classification_result_screen.png

9. הפעל את האפליקציה עם תכונות נוספות של Firebase

מלבד אירוח דגמי ה-TFLite שלך, Firebase מספקת מספר תכונות אחרות כדי להעצים את מקרי השימוש שלך בלמידה חישובית:

  • ניטור ביצועי Firebase כדי למדוד את מהירות ההסקה של המודל שלך הפועל במכשיר של המשתמשים.
  • Firebase Analytics כדי למדוד את ביצועי המודל שלך בייצור על ידי מדידת תגובת המשתמש.
  • Firebase A/B Testing לבדיקת גרסאות מרובות של הדגם שלך
  • האם זכרתם שאימנו שתי גרסאות של דגם ה-TFLite שלנו קודם לכן? בדיקת A/B היא דרך טובה לגלות איזו גרסה מתפקדת טוב יותר בייצור!

למידע נוסף על איך למנף את התכונות האלה באפליקציה שלך, עיין במעבדות הקוד שלהלן:

10. מזל טוב!

במעבדת הקוד הזה, למדת כיצד לאמן מודל TFLite לניתוח סנטימנט ולפרוס אותו באפליקציה לנייד שלך באמצעות Firebase. למידע נוסף על TFLite ו-Firebase, עיין בדוגמאות אחרות של TFLite ובמדריכי ההתחלה של Firebase.

מה שכיסינו

  • TensorFlow Lite
  • Firebase ML

הצעדים הבאים

  • מדוד את מהירות מסקנות המודל שלך עם ניטור ביצועי Firebase.
  • פרוס את המודל מ-Colab ישירות ל-Firebase באמצעות ה-API לניהול מודלים של Firebase ML.
  • הוסף מנגנון שיאפשר למשתמשים לקבל משוב על תוצאת החיזוי, והשתמש ב-Firebase Analytics כדי לעקוב אחר משוב משתמשים.
  • בדיקת A/B את מודל Average Word Vector ואת מודל MobileBERT עם בדיקות A/B של Firebase.

למד עוד

יש שאלה?

דווח על בעיות