1. לפני שמתחילים
ב-Codelab הזה נסביר איך לעדכן את מודל סיווג הטקסט, שנבנה ממערך הנתונים המקורי של תגובות הספאם בבלוג, אבל שופר באמצעות תגובות משלכם, כדי שתוכלו לקבל מודל שפועל עם הנתונים שלכם.
דרישות מוקדמות
ה-codelab הזה הוא חלק מתוכנית הלימודים Get started with mobile text classification (איך מתחילים לעבוד עם סיווג טקסט בנייד). ה-Codelabs במסלול הזה הם רציפים. האפליקציה והמודל שעליהם תעבדו צריכים להיות כאלה שנבנו קודם, כשעבדתם לפי ההוראות בתוכנית הלימודים הראשונה. אם עדיין לא השלמתם את הפעילויות הקודמות, עליכם להפסיק ולבצע אותן עכשיו:
- יצירת אפליקציה בסיסית בסגנון אפליקציית הודעות
- יצירת מודל ללמידת מכונה לזיהוי תגובות ספאם
- עדכון האפליקציה לשימוש במודל למידת מכונה לסינון ספאם
מה תלמדו
- איך מעדכנים את מודל סיווג הטקסט שיצרתם בתוכנית הלימודים 'איך מתחילים לעבוד עם סיווג טקסט בנייד'
- איך להתאים אישית את המודל כדי לחסום את הספאם הנפוץ ביותר באפליקציה
הדרישות
- אפליקציית ההודעות ומודל סינון הספאם שראיתם ובניתם בפעילויות הקודמות.
2. שיפור סיווג הטקסט
אפשר לקבל את הקוד על ידי שיבוט המאגר הזה וטעינת האפליקציה מ-TextClassificationStep2. אפשר למצוא את המידע הזה בנתיב TextClassificationOnMobile->Android.
קוד הסיום זמין גם בשבילכם בתור TextClassificationStep3.
אם תפתחו את אפליקציית ההודעות שבניתם ותנסו לשלוח את ההודעה הזו, תקבלו ציון ספאם נמוך מאוד:

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

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

התווית מימין היא 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. אם רוצים את המחברת המלאה עם התוכן המעודכן, אפשר למצוא אותה בכתובת 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)
במהלך האימון, תוכלו לראות שהמודל עדיין יתאמן לרמת דיוק גבוהה:

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

- לוחצים לחיצה ימנית על תיקיית הנכסים.
- בתפריט, בוחרים באפשרות לפתוח את התיקייה באמצעות מנהל הקבצים של מערכת ההפעלה. (Reveal in Finder ב-Mac, כמו שמוצג. האפשרות תהיה הצגה בסייר ב-Windows, או פתיחה בקבצים או דומה ב-Linux).

- הפעולה הזו תפתח את הספרייה שמכילה את המודל, אוצר המילים והתוויות במנהל הקבצים של מערכת ההפעלה. מעתיקים את אלה החדשים שיצרתם בשלב הקודם ומדביקים אותם במקום אלה.
אין צורך לבצע שינויים בקוד באפליקציה. מפעילים פתרונות חכמים ומבצעים בדיקה, ואז רואים תוצאות כמו אלה שמופיעות למעלה, שבהן המודל השתפר בזיהוי התרחיש של הטקסט 'מסחר אונליין'.
גרסה סופית של הקוד זמינה במאגר כ-TextClassificationStep3.
6. עדכון האפליקציה ל-iOS
אפשר לקבל את הקוד על ידי שיבוט המאגר הזה וטעינת האפליקציה מ-TextClassificationStep2. אפשר למצוא את המידע הזה בנתיב TextClassificationOnMobile->Android.
קוד הסיום זמין גם בשבילכם בתור TextClassificationStep3.
אם עבדתם על ה-codelab הקודם, תהיה לכם גרסת iOS של TextClassificationStep2 שפועלת עם מודל הבסיס. אם רוצים להתחיל מהגרסה הקיימת שלנו, פשוט לוקחים אותה מהמאגר. הוא יפעל עם המודל הראשון שאומן על נתוני הספאם בתגובות, ואולי תראו תוצאות כאלה:

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

7. מזל טוב
זהו! הצלחתם לאמן מחדש את המודל עם נתונים חדשים ולהוסיף אותו לאפליקציות שלכם ל-Android ול-iOS, וכך לעדכן את הפונקציונליות שלהן בלי לכתוב קוד חדש.
השלבים הבאים
המודל הזה הוא רק מודל לדוגמה, שאומן על 1,000 פריטי נתונים בלבד.
במהלך העיון בעיבוד שפה טבעית, יכול להיות שתרצו לעבוד עם מערכי נתונים גדולים יותר. אפשר גם להגדיר צינור אימון רציף. כך, כשנתונים חדשים מגיעים ומסומנים כספאם, המערכת יכולה לאמן מחדש מודל באופן אוטומטי בשרת עורפי, ואז לפרוס את המודל הזה באמצעות Firebase Model Hosting.
המשתמשים שלכם מקבלים מודל מעודכן בצורה חלקה, בלי שתצטרכו להעתיק ולהדביק אותו כנכס, לקמפל מחדש ולהפיץ מחדש. לדוגמה, אפשר להשתמש בהגדרת תצורה מרחוק ב-Firebase כדי לנהל את ערך הסף לשליחת ספאם, במקום הערך 0.8 שמוגדר כרגע.
יש כל כך הרבה אפשרויות, ונלמד עליהן בסדנאות קוד עתידיות בקורס הזה.