GPT
R

roberta-base-go_emotions

קוד פתוח

SamLowemit2022-09-15

  • transformers
  • pytorch
  • safetensors
  • roberta
  • text-classification

סיווג רגשות בטקסט לתוך 28 קטגוריות במקביל, בלי להסתפק בחלוקה שטחית לחיובי או שלילי. פתרון קל משקל שרץ מקומית ולא דורש מודל ענק.

  • 125Mפרמטרים
  • 514טוקנים בהקשר
  • 954 MBמשקל הקבצים
  • 619,417הורדות בחודש

מה זה

זהו עיבוד של roberta-base שאומן על מערך הנתונים go_emotions שמקורו בתגובות מרדיט. המטרה כאן היא סיווג מרובה תוויות, כלומר טקסט אחד יכול לקבל בו זמנית ציון לכמה רגשות שונים מתוך 28 אפשריים, כמו הכרת תודה, כעס, שעשוע או הקלה. המודל מחזיר 28 הסתברויות נפרדות עבור כל קלט, וכברירת מחדל מציבים סף של 0.5 כדי לקבוע מה קיים ומה לא.

בפועל, הביצועים שלו לא אחידים בכלל. רגשות מובהקים עם הרבה דוגמאות מגיעים לדיוק מרשים, למשל הכרת תודה מגיעה לציון F1 של 0.919 ושעשוע עומד על 0.829. לעומת זאת, רגשות עדינים או נדירים יותר כמו צער או הקלה מציגים אפס מוחלט תחת סף ברירת המחדל, פשוט כי אין עליהם כמעט דוגמאות במידע שעליו הוא אומן. אם מכוונים סף ייעודי לכל תווית בנפרד, מגיעים לציון F1 כולל של 0.541 או 0.611 במדידה משוקללת, שזה סביר לסיווג כל כך מורכב אבל רחוק מלהיות חסין מטעויות.

מתאים ל

  • ניתוח משוב משתמשים באנגלית

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

  • סינון והתרעה בקהילות מקוונות

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

  • תיוג רגשי לצ'אטבוטים

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

איפה זה נופל

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

שאלות
נפוצות

האם הוא מסוגל לעבד עברית?

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

האם שווה לעבוד עם סף של 0.5 לכל הרגשות?

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

איך מריצים

המודל שוקל פחות מגיגהבייט ורץ בלי בעיה על מעבד רגיל בכל שרת פשוט, בלי שום צורך בכרטיס מסך ייעודי. מריצים אותו דרך ספריית transformers בפייתון עם שורות בודדות של קוד pipeline סטנדרטי למשימת text-classification. אם המטרה היא פרודקשן עם זמני תגובה קצרים, קיימת גרסת ONNX כולל קוונטיזציה ל־INT8 שמקצצת 75 אחוז מגודל הקובץ וטסה על המעבד.

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

from transformers import pipeline

pipe = pipeline("text-classification", model="SamLowe/roberta-base-go_emotions")
print(pipe("שלום"))

הרישיון

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

  • שימוש מסחרי
  • שינוי הקוד
  • הפצה מחדש

הרישיון המלא בעמוד המודל ↗