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

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

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

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

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

  • פיתוח אפליקציה בסיסית של סגנון העברת הודעות
  • פיתוח מודל למידת מכונה של תגובות ספאם
  • צריך לעדכן את האפליקציה כדי להשתמש במודל למידת מכונה לסינון ספאם

מה תלמדו

  • איך לעדכן את מודל סיווג הטקסט שיצרתם במסלול לסיווג טקסט בנייד – 'תחילת העבודה עם סיווג טקסט בנייד'
  • איך להתאים אישית את המודל כך שיחסום את הספאם הכי נפוץ באפליקציה

למה תזדקק?

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

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

כדי לקבל את הקוד בשביל זה, אפשר לשכפל את המאגר הזה ולטעון את האפליקציה מ-TextClassificationStep2. אפשר למצוא את המזהה בנתיב TextClassificationOnMobile->Android.

הקוד הסיום זמין גם בתור TextClassificationStep3.

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

f111e21903d6fd1f.png

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

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

c96613a0a4d1fef0.png

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

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

המבנה של קובץ ה-CSV הוא שהשורה הראשונה תתאר את העמודות – כאן הן מופיעות בתוויות commenttext ו-spam.

כל שורה הבאה מופיעה בפורמט הזה:

64c0128548e1d082.png

התווית שמימין מוגדרת כ-true עבור ספאם ו-FALSE אם היא לא ספאם. במקרה הזה, שורה 3 נחשבת כספאם.

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

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), ואז אפשר להשתמש בו כדי לאמן מודל חדש.

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

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

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

אם יש לכם גישה ל-Google Colab, יש לך אפשרות להפעיל אותה ישירות מכאן. אחרת, לקבל את הקוד מהמאגר ולהריץ אותו בסביבת ה-notebook לבחירתך.

הנה הקוד המעודכן:

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)

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

8886033d1f8161c.png

עוברים על ה-notebook כדי להוריד את קובצי המודל, ה-vocab והתוויות. בשלב הבא, משלבים אותם ב-Android.

5. עדכון האפליקציה ל-Android

  1. פותחים את האפליקציה ב-Android Studio ומוודאים שהאפשרות Android מסומנת בחלק העליון של הכלי לניתוח פרויקטים.
  2. מאתרים את קובץ assets שמכיל את התוויות, המודל ואוצר המילים מהגרסה הישנה של קובץ המודל.

91116524e9016ed4.png

  1. לוחצים לחיצה ימנית על תיקיית הנכסים.
  2. בתפריט, בוחרים באפשרות של פתיחת התיקייה באמצעות מנהל הקבצים של מערכת ההפעלה. (הצגה ב-Finder ב-Mac, כפי שמוצג. הקובץ יהיה הצגה ב-Explorer ב-Windows, ואז פתיחה ב-Files או בסגנון דומה ב-Linux).

25f63f9629657e85.png

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

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

גרסה מלאה של הקוד זמינה במאגר בתור TextClassificationStep3.

6. עדכון האפליקציה ל-iOS

כדי לקבל את הקוד בשביל זה, אפשר לשכפל את המאגר הזה ולטעון את האפליקציה מ-TextClassificationStep2. אפשר למצוא את המזהה בנתיב TextClassificationOnMobile->Android.

הקוד הסיום זמין גם בתור TextClassificationStep3.

אם עבדתם ב-Codelab הקודם, במכשיר תהיה גרסת iOS של TextClassificationStep2 שפועלת עם המודל הבסיסי. כדי להתחיל מהגרסה הקיימת של האפליקציה, צריך לקחת את הגרסה הזו מהמאגר. היא תפעל עם המודל הראשון שאומן על נתוני תגובות ספאם, ויכול להיות שתראו תוצאות כאלה:

553b845565b5b822.png

קל מאוד לעדכן את האפליקציה כדי להשתמש במודל החדש. הדרך הקלה ביותר היא פשוט לעבור לסייר הקבצים, לקבל את הגרסאות החדשות של model.tflite, vocab ו-labels.txt ולהעתיק אותן לספריית הפרויקט.

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

9031ec260b1857a3.png

7. מזל טוב

זהו! אימון מחדש של המודל באמצעות נתונים חדשים והוספתו לאפליקציות ל-Android ול-iOS מאפשרים לעדכן את הפונקציונליות בלי לכתוב קוד חדש!

השלבים הבאים

המודל הזה הוא רק צעצוע, שמאומן על 1,000 פריטי נתונים בלבד.

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

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

יש כל כך הרבה אפשרויות, ואנחנו נחקור אותן ב-Codelabs עתידיים בקורס הזה!