יצירת מודל מותאם אישית לסיווג טקסט באמצעות TensorFlow Lite Model Maker

1. לפני שמתחילים

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

דרישות מוקדמות

ה-codelab הזה הוא חלק מהמדריך לתחילת העבודה עם סיווג טקסט באפליקציות Flutter. ה-codelabs במסלול הזה הם רציפים. האפליקציה והמודל שעליהם תעבדו צריכים להיות כאלה שכבר יצרתם בעבר, כשעבדתם לפי ההוראות ב-codelab. אם עדיין לא השלמתם את הפעילויות הקודמות, עליכם להפסיק ולבצע אותן עכשיו:

מה תלמדו

מה נדרש

  • אפליקציית Flutter ומודל סינון הספאם שצפיתם בהם ובניתם אותם בפעילויות הקודמות.

2. שיפור סיווג הטקסט

  1. כדי לקבל את הקוד הזה, צריך לשכפל את המאגר הזה ולטעון את האפליקציה מהתיקייה tfserving-flutter/codelab2/finished.
  2. אחרי שמפעילים את תמונת TensorFlow Serving Docker, באפליקציה שיצרתם, מזינים buy my book to learn online trading ולוחצים על gRPC > Classify.

8f1e1974522f274d.png

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

2bd68691a26aa3da.png

3. עריכה של קובץ CSV

כדי לאמן את המודל המקורי, נוצר מערך נתונים כקובץ CSV ‏ (lmblog_comments.csv) שמכיל כמעט אלף תגובות שסומנו כספאם או כלא ספאם. (אפשר לפתוח את קובץ ה-CSV בכל כלי לעריכת טקסט כדי לבדוק אותו).

קובץ ה-CSV צריך לכלול שורה ראשונה עם תיאור של העמודות, שמסומנות בתוויות commenttext ו-spam. כל שורה עוקבת בנויה בפורמט הזה:

62025273971c9a7f.png

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

אם אנשים שולחים ספאם לאתר שלכם עם הודעות לגבי מסחר אונליין, אתם יכולים להוסיף דוגמאות לתגובות ספאם בתחתית האתר. לדוגמה:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true
  • שומרים את הקובץ בשם חדש, למשל lmblog_comments.csv, כדי שאפשר יהיה להשתמש בו לאימון מודל חדש.

בהמשך שיעור ה-Lab הזה, תשתמשו בדוגמה שסופקה, נערכה ואוחסנה ב-Cloud Storage עם עדכונים של מסחר אונליין. אם רוצים להשתמש במערך נתונים משלכם, אפשר לשנות את כתובת ה-URL בקוד.

4. אימון מחדש של המודל באמצעות הנתונים החדשים

כדי לאמן מחדש את המודל, אפשר פשוט להשתמש מחדש בקוד מ- (SpamCommentsModelMaker.ipynb), אבל להפנות אותו למערך הנתונים החדש של קובץ ה-CSV, שנקרא lmblog_comments_extras.csv. אם רוצים את המחברת המלאה עם התוכן המעודכן, אפשר למצוא אותה בכתובת SpamCommentsUpdateModelMaker.ipynb.

אם יש לכם גישה ל-Colaboratory, אתם יכולים להפעיל אותו ישירות. אחרת, אפשר לקבל את הקוד מהמאגר ולהריץ אותו בסביבת המחברת שבחרתם.

קטע הקוד המעודכן נראה כך:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',   
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv', 
          extract=False)

במהלך האימון, תוכלו לראות שהמודל עדיין מתאמן לרמת דיוק גבוהה:

96a1547ddb6edf5b.png

דוחסים את כל התיקייה של /mm_update_spam_savedmodel ומורידים את הקובץ mm_update_spam_savedmodel.zip שנוצר.

# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/

5. מפעילים את Docker ומעדכנים את אפליקציית Flutter

  1. מבטלים את הדחיסה של קובץ mm_update_spam_savedmodel.zip שהורד לתיקייה, ואז עוצרים את מופע מאגר Docker מה-codelab הקודם ומפעילים אותו מחדש, אבל מחליפים את ה-placeholder‏ PATH/TO/UPDATE/SAVEDMODEL בנתיב המוחלט של התיקייה שבה מאוחסנים הקבצים שהורדתם):
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
  1. פותחים את הקובץ lib/main.dart בעורך הקוד המועדף, ואז מחפשים את החלק שמגדיר את המשתנים inputTensorName ו-outTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. מקצים מחדש את המשתנה inputTensorName לערך input_1' ואת המשתנה outputTensorName לערך 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. מעתיקים את הקובץ vocab.txt שהורדתם לתיקייה lib/assets/ כדי להחליף את הקובץ הקיים.
  2. מסירים ידנית את אפליקציית Text Classification Flutter מהאמולטור של Android.
  3. מריצים את הפקודה 'flutter run' בטרמינל כדי להפעיל את האפליקציה.
  4. באפליקציה, מזינים buy my book to learn online trading ולוחצים על gRPC > Classify (סיווג).

עכשיו המודל השתפר והוא מזהה את ההודעה buy my book to online trading כספאם.

6. מזל טוב

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

מידע נוסף