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

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

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

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

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

מה תלמדו

מה תצטרך להכין

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

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

  1. כדי לקבל את הקוד של הקוד הזה, צריך לשכפל את המאגר הזה ולטעון את האפליקציה מהתיקייה tfserving-flutter/codelab2/finished.
  2. אחרי שמפעילים את התמונה של TensorFlow 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 ועדכון של אפליקציית Fluter

  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. יש להסיר באופן ידני את האפליקציה 'סיווג טקסט' של אמולטור Android.
  3. מריצים את הפקודה 'flutter run' במסוף כדי להפעיל את האפליקציה.
  4. באפליקציה, מזינים buy my book to learn online trading ולוחצים על gRPC > Classify.

עכשיו המודל משופר לזיהוי קניית הספר שלי למסחר מקוון כספאם.

6. מזל טוב

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

מידע נוסף