1. לפני שמתחילים
ב-codelab הזה נלמד איך לעדכן את מודל סיווג הטקסט שנבנה ממערך הנתונים המקורי של תגובות ספאם בבלוג, אבל עם תוספת של תגובות משלכם, כדי שתוכלו לקבל מודל שפועל עם הנתונים שלכם.
דרישות מוקדמות
ה-codelab הזה הוא חלק מהמדריך לתחילת העבודה עם סיווג טקסט באפליקציות Flutter. ה-codelabs במסלול הזה הם רציפים. האפליקציה והמודל שעליהם תעבדו צריכים להיות כאלה שכבר יצרתם בעבר, כשעבדתם לפי ההוראות ב-codelab. אם עדיין לא השלמתם את הפעילויות הקודמות, עליכם להפסיק ולבצע אותן עכשיו:
- אימון מודל לזיהוי ספאם בתגובות באמצעות סדנת קוד של TensorFlow Lite Model Maker
- Create a Flutter app to detect comment spam codelab
מה תלמדו
- איך לעדכן את מודל סיווג הטקסט שיצרתם ב-Train a comment-spam detection model with TensorFlow Lite Model Maker codelab.
- איך להתאים אישית את המודל כדי לחסום את הספאם הנפוץ ביותר באפליקציה.
מה נדרש
- אפליקציית Flutter ומודל סינון הספאם שצפיתם בהם ובניתם אותם בפעילויות הקודמות.
2. שיפור סיווג הטקסט
- כדי לקבל את הקוד הזה, צריך לשכפל את המאגר הזה ולטעון את האפליקציה מהתיקייה
tfserving-flutter/codelab2/finished
. - אחרי שמפעילים את תמונת TensorFlow Serving Docker, באפליקציה שיצרתם, מזינים
buy my book to learn online trading
ולוחצים על gRPC > Classify.
האפליקציה יוצרת ציון ספאם נמוך כי אין הרבה מקרים של מסחר אונליין במערך הנתונים המקורי, והמודל לא למד שזה ספאם. ב-codelab הזה, תעדכנו את המודל עם נתונים חדשים כדי שהמודל יזהה את אותו משפט כספאם.
3. עריכה של קובץ CSV
כדי לאמן את המודל המקורי, נוצר מערך נתונים כקובץ CSV (lmblog_comments.csv
) שמכיל כמעט אלף תגובות שסומנו כספאם או כלא ספאם. (אפשר לפתוח את קובץ ה-CSV בכל כלי לעריכת טקסט כדי לבדוק אותו).
קובץ ה-CSV צריך לכלול שורה ראשונה עם תיאור של העמודות, שמסומנות בתוויות commenttext
ו-spam
. כל שורה עוקבת בנויה בפורמט הזה:
התווית שמשמאל מוקצה לה ערך של 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)
במהלך האימון, תוכלו לראות שהמודל עדיין מתאמן לרמת דיוק גבוהה:
דוחסים את כל התיקייה של /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
- מבטלים את הדחיסה של קובץ
mm_update_spam_savedmodel.zip
שהורד לתיקייה, ואז עוצרים את מופע מאגר Docker מה-codelab הקודם ומפעילים אותו מחדש, אבל מחליפים את ה-placeholderPATH/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
- פותחים את הקובץ
lib/main.dart
בעורך הקוד המועדף, ואז מחפשים את החלק שמגדיר את המשתניםinputTensorName
ו-outTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- מקצים מחדש את המשתנה
inputTensorName
לערךinput_1'
ואת המשתנהoutputTensorName
לערך'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- מעתיקים את הקובץ
vocab.txt
שהורדתם לתיקייהlib/assets/
כדי להחליף את הקובץ הקיים. - מסירים ידנית את אפליקציית Text Classification Flutter מהאמולטור של Android.
- מריצים את הפקודה
'flutter run'
בטרמינל כדי להפעיל את האפליקציה. - באפליקציה, מזינים
buy my book to learn online trading
ולוחצים על gRPC > Classify (סיווג).
עכשיו המודל השתפר והוא מזהה את ההודעה buy my book to online trading כספאם.
6. מזל טוב
אימנתם מחדש את המודל עם נתונים חדשים, שילבתם אותו עם אפליקציית Flutter ועדכנתם את הפונקציונליות כדי לזהות משפטי ספאם חדשים.