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

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

text-classification-result.png

ברוכים הבאים לסיווג הטקסט עם TensorFlow Lite ומעבדת הקוד של Firebase. במעבדת קוד זה תלמד כיצד להשתמש ב-TensorFlow Lite וב-Firebase כדי לאמן ולפרוס מודל סיווג טקסט לאפליקציה שלך. מעבד קוד זה מבוסס על דוגמה זו של TensorFlow Lite.

סיווג טקסט הוא תהליך של הקצאת תגים או קטגוריות לטקסט בהתאם לתוכן שלו. זוהי אחת המשימות הבסיסיות בעיבוד שפה טבעית (NLP) עם יישומים רחבים כגון ניתוח סנטימנטים, תיוג נושאים, זיהוי דואר זבל וזיהוי כוונות.

ניתוח סנטימנטים הוא פירוש וסיווג של רגשות (חיוביים, שליליים ונייטרליים) בתוך נתוני טקסט באמצעות טכניקות ניתוח טקסט. ניתוח סנטימנטים מאפשר לעסקים לזהות את סנטימנט הלקוחות כלפי מוצרים, מותגים או שירותים בשיחות מקוונות ובמשוב.

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

מה תלמד

  • אימון מודלים של ניתוח סנטימנטים של TF Lite עם TF Lite Model Maker
  • פרוס דגמי TF Lite ל-Firebase ML וקבל גישה אליהם מהאפליקציה שלך
  • שלב מודלים של ניתוח סנטימנטים של TF Lite באפליקציה שלך באמצעות ספריית המשימות TF Lite

מה אתה צריך

  • גרסת Android Studio האחרונה.
  • קוד לדוגמה.
  • מכשיר בדיקה עם Android 5.0+ ושירותי Google Play 9.8 ואילך, או אמולטור עם שירותי Google Play 9.8 ואילך
  • אם משתמשים במכשיר, כבל חיבור.

איך תשתמש במדריך זה?

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

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

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

2. קבל את הקוד לדוגמה

שכבו את מאגר GitHub משורת הפקודה.

$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git

אם לא התקנת git, אתה יכול גם להוריד את הפרויקט לדוגמה מדף GitHub שלו או על ידי לחיצה על קישור זה .

3. ייבא את אפליקציית המתנע

מ-Android Studio, בחר את ספריית codelab-textclassification-android-master ( android_studio_folder.png ) מהורדת קוד לדוגמה ( קובץ > פתח > .../codelab-textclassification-android-master/start).

כעת אתה אמור לפתוח את פרויקט ההתחלה ב-Android Studio.

4. הפעל את אפליקציית המתנע

כעת, לאחר שייבאת את הפרויקט לאנדרואיד Studio, אתה מוכן להפעיל את האפליקציה בפעם הראשונה. חבר את מכשיר האנדרואיד שלך ולחץ על הפעל ( execute.png ) בסרגל הכלים של Android Studio.

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

2fb4e69fafb2e3ed.png

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

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

  1. עבור אל מסוף Firebase .
  2. בחר הוסף פרויקט .
  3. בחר או הזן שם פרויקט.
  4. בצע את שלבי ההגדרה הנותרים במסוף Firebase, ולאחר מכן לחץ על צור פרויקט (או הוסף Firebase, אם אתה משתמש בפרויקט קיים של Google).

6. הוסף את Firebase לאפליקציה

  1. ממסך הסקירה הכללית של הפרויקט החדש שלך, לחץ על סמל אנדרואיד כדי להפעיל את זרימת העבודה של ההגדרה.
  2. הזן את שם החבילה של Codelab: org.tensorflow.lite.codelabs.textclassification

הוסף קובץ google-services.json לאפליקציה שלך

לאחר הוספת שם החבילה ובחירה בהרשמה**, לחץ על הורד את google-services.json** כדי להשיג את קובץ התצורה של Firebase Android ולאחר מכן העתק את הקובץ google-services.json לספריית * app * בפרויקט שלך.

הוסף תוסף Google-Services לאפליקציה שלך

עקוב אחר ההוראות ב-Firebase Console ועדכן את קבצי build.gradle.kts כדי להוסיף את Firebase לאפליקציה שלך.

הפלאגין google-services משתמש בקובץ google-services.json כדי להגדיר את האפליקציה שלך לשימוש ב-Firebase.

סנכרן את הפרויקט שלך עם קבצי Gradle

כדי להיות בטוח שכל התלות זמינות לאפליקציה שלך, עליך לסנכרן את הפרויקט שלך עם קבצי Gradle בשלב זה. בחר קובץ > סנכרן פרויקט עם קבצי Gradle מסרגל הכלים של Android Studio.

7. הפעל את האפליקציה עם Firebase

כעת, לאחר שהגדרת את התוסף google-services עם קובץ ה-JSON שלך, אתה מוכן להפעיל את האפליקציה עם Firebase. חבר את מכשיר האנדרואיד שלך ולחץ על הפעל ( execute.png ) בסרגל הכלים של Android Studio.

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

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

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

שלב זה מוצג כמחברת Python שתוכל לפתוח בגוגל קולאב. אתה יכול לבחור זמן ריצה > הפעל הכל כדי להפעיל את כל המחברת בבת אחת.

פתוח ב-Colab

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

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

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

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

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

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

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

3c3c50e6ef12b3b.png

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

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

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

בקובץ app/build.gradle.kts , הוסף את התלות של Firebase Machine Learning.

app/build.gradle.kts

מצא את ההערה הזו:

// TODO 1: Add Firebase ML dependency

אז תוסיף:

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

כשתבקש מ-Android Studio לסנכרן את הפרויקט שלך, בחר סנכרן עכשיו .

אז בואו נוסיף קצת קוד כדי להוריד את הדגם מ-Firebase.

MainActivity.java

מצא את ההערה הזו:

// TODO 2: Implement a method to download TFLite model from Firebase

אז תוסיף:

  /** Download model from Firebase ML. */
  private synchronized void downloadModel(String modelName) {
      CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
            .requireWifi()
            .build();
      FirebaseModelDownloader.getInstance()
              .getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
              .addOnSuccessListener(model -> {
                  try {
                      // TODO 6: Initialize a TextClassifier with the downloaded model

                      predictButton.setEnabled(true);
                  } catch (IOException e) {
                      Log.e(TAG, "Failed to initialize the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model initialization failed.",
                              Toast.LENGTH_LONG)
                              .show();
                      predictButton.setEnabled(false);
                  }
              })
              .addOnFailureListener(e -> {
                      Log.e(TAG, "Failed to download the model. ", e);
                      Toast.makeText(
                              MainActivity.this,
                              "Model download failed, please check your connection.",
                              Toast.LENGTH_LONG)
                              .show();

                      }
              );

}

לאחר מכן, קרא לשיטת downloadModel בשיטת onCreate של הפעילות.

MainActivity.java

מצא את ההערה הזו:

// TODO 3: Call the method to download TFLite model

אז תוסיף:

downloadModel("sentiment_analysis");

11. שלבו את הדגם באפליקציה שלכם

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

הוסף את התלות

עבור לקובץ Gradle של האפליקציה והוסף את ספריית המשימות של TensorFlow Lite (טקסט) בהתלות של האפליקציה.

app/build.gradle

מצא את ההערה הזו:

// TODO 4: Add TFLite Task API (Text) dependency

אז תוסיף:

implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")

כשתבקש מ-Android Studio לסנכרן את הפרויקט שלך, בחר סנכרן עכשיו .

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

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

MainActivity.java

בואו נכריז על משתנה מופע NLClassifier. מצא את ההערה הזו:

// TODO 5: Define a NLClassifier variable

אז תוסיף:

private NLClassifier textClassifier;

אתחל את המשתנה textClassifier עם מודל ניתוח הסנטימנט שהוורד מ-Firebase. מצא את ההערה הזו:

// TODO 6: Initialize a TextClassifier with the downloaded model

אז תוסיף:

textClassifier = NLClassifier.createFromFile(model.getFile());

סיווג טקסט

לאחר הגדרת מופע textClassifier , אתה יכול להריץ ניתוח סנטימנט עם קריאה אחת לשיטה.

MainActivity.java

מצא את ההערה הזו:

// TODO 7: Run sentiment analysis on the input text

אז תוסיף:

List<Category> results = textClassifier.classify(text);

ליישם עיבוד לאחר

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

MainActivity.java

מצא את ההערה הזו:

// TODO 8: Convert the result to a human-readable text

הסר את הקוד שיוצר את טקסט תוצאת הדמה:

String textToShow = "Dummy classification result.\n";

אז תוסיף:

String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
  Category result = results.get(i);
  textToShow += String.format("    %s: %s\n", result.getLabel(),
                              result.getScore());
}
textToShow += "---------\n";

12. הפעל את האפליקציה האחרונה

שילבת את מודל ניתוח הסנטימנטים באפליקציה, אז בואו נבדוק אותו. חבר את מכשיר האנדרואיד שלך ולחץ על הפעל ( execute.png ) בסרגל הכלים של Android Studio.

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

img/text-classification-result.png

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

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

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

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

14. מזל טוב!

במעבדת הקוד הזה, למדת כיצד לאמן מודל 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.

למד עוד

יש שאלה?

דווח על בעיות