זהו פרויקט מחקרי שמטרתו היא ליצור מודל קלסיפיקציה במטרה לסווג ציטוטים מפרוטוקלי ישיבות הכנסת (ישיבות המליאה וישיבות הועידות) לאחד משמונה נושאים: חינוך, קורונה, רווחה, כלכלי, נשים ולהט"ב, בריאות, בטחון, בטחון פנים. קוד זה נכתב בהוקרה לפרויקט "בטא מחוקקים", ונוצר במסגרת הקורס "עיבוד שפה טבעית לעברית" באוניברסיטה העברית.
הפרויקט מתבסס על דאטא שנאסף מפרוטוקולים ציבוריים של ישיבות המליאה והועדות בכנסת, הכתובים בשפה העברית. הפרוטוקולים חולקו לציטוטים באופן כרונולוגי, כאשר תחילת וסיום ציטוט מוגדרים ע"י החלפת דוברים. פרויקט זה התמקד בציטוטים באורך 15-150 מילים.
- דאטא גולמי לאחר עיבוד ראשוני - עקב מגבלות נפח הקבצים של GitHub, לא התאפשר להעלות את קבצי הדאטא במלואם. ניתן למצוא גרסה אחודה, מעובדת ומסוננת של הדאטא הגולמי בקובץ PreprocessedData.zip. אודה שוב לפרויקט "בטא מחוקקים" שסייעו רבות באיסוף ועיבוד הדאטא עליו מתבסס הפרויקט.
- דאטא מתויג ידנית - במסגרת הפרויקט, תויגו ידנית כ-2,700 ציטוטים ל-15 תגיות אפשריות (וכן תגית נוספת של "ללא נושא"). קובץ הדאטא המתויג נמצא בשלמותו בקובץ full_classification_df.csv
כאמור, מטרת הפרויקט היתה ליצור מודל קלסיפיקציה supervised מסוג multi-label עבור 8 תגיות אפשריות. כיוון שהדאטא המקורי מכיל מיליוני ציטוטים ואינו מתויג, הפרויקט כלל יצירת תיוג אוטומטי ראשוני אשר שימש לבחירת ציטוטים שהועברו לתיוג ידני אנושי. מתודולוגיית העבודה:
- יצירת תיוג אוטומטי ראשוני - על מנת לבחור ציטוטים אשר בסבירות גבוהה יחסית משתייכים לנושא מסוים, בוצא תיוג אוטומטי ראשוני באמצעות מודל topic modeling (ובפרט LDA). לאחר יצירת 8 מודלים שונים (שכל אחד מהם מתבסס על דגימה אקראית בגודל אחר מתוך הדאטא, וקיבל כהיפרפרמטר מספר שונה של נושאים), נבחרו מכל מודל נושאים נבחרים אשר המילים המאפיינות אותם הצביעו על אחד מנושאי התיוג הרצויים לפרויקט. כל ציטוט ששויך לנושא מסוים ע"י אחד המודלים הנ"ל קיבל תגית התואמת את הפרשנות האנושית לרשימת המילים המאפיינת את אותו הנושא. בסה"כ נוצרו בשלב זה 15 תגיות אפשריות.
- תיוג ידני - עבור כל נושא שתויג אוטומטית בשלב הקודם, נבחרו מספר מאות הציטוטים שמידת הבטחון של המודל בהם היתה הגבוהה בית ציטוי אלו הועברו לתיוג ידני אנושי. המתייגים האנושיים קיבלו ציטוטים והתבקשו לשייך אותם לאחד מ-15 הנושאים שהוגדרו בשלב הקודם, או לחילופין לתייג אותם בתור חסרי נושא (כלומר לציין כי אינם משתייכים לאף אחד מ-15 הנושאים הנ"ל, או שאין להם נושא מובהק). בשלב זה נאספו כ-2,700 ציטוטים מתויגים, מתוכם 60% מתויגים בנושא מסוים (כלומר אינם מתויגים בתור חסרי נושא).
- בחירת דאטא לאימון - הדאטא הסופי שנבחר לאימון הנו תת קבוצה של הציטוטים שתויגו ידנית בשלב הקודם, ממנה הוסרו ציטוטים המשויכים לתגיות שמספר הדגימות המתויגות בהם הנו קטן מ-100. בסיום שלב זה נותרו 2458 ציטוטים מתויגים, מתוכם 55% משויכים לנושא כלשהו (והיתר מתויגים מפורשות בתור "ללא נושא").
- אימון מודל קלסיפיקציה - בסיומו של תהליך מחקרי (ראו פירוט בקובץ ה-PDF המצורף המתאר את המחקר) אומנו מספר מודלים על גרסאות שונות של הדאטא ובאמצעות שיטות וקטוריזציה שונות. המודל שנבחר הוא מודל רגרסיה לוגיסטית עם פרמטר רגולריזציה C=2 שאומן על דאטא מאוזן (כלומר דאטא שהוסרו ממנו דגימות המתויגות כחסרות נושא על מנת להשיג איזון כמותי בכמות הדגימות לכל מחלקה) באמצעות וקטוריזציית Bag of Words. כפי שניתן לראות במחברות הקוד המצורפות, נבחנו היפר-פרמטרים שונים ומודלים שונים לפתרון הבעיה.
המודל הנבחר השיג ערך accuracy של 0.540, ערך macro precision של 0.768, ערך macro recall של 0.517 וערך macro f1 של 0.564. עם זאת, חשוב לציין כי רוב הבלבול של המודל הוא בתגית "ללא נושא", ולציין כי 92.4% מהציטוטים עליהם נבחן המודל שויכו לנושא הנכון או סומנו כחסרי נושא (כלומר היקף הטעות בה דובר הציטוט קיבל קרדיט על עיסוק בנושא קונקרטי שלא עסק בו היתה נמוכה מאוד). לפירוט על התוצאות והבלבול של המודל בין נושאים שונים ראו את קובץ ה-PDF המצורף.
בתיקיית notebooks תוכלו למצוא מחברות המציגות את תהליך המחקר באופן כרונולוגי לפי שלבים, מניתוח הדאטא הראשוני, דרך התיוג האוטומטי ועד לבנית והערכת מודל הקלסיפיקציה. באותה התיקיה תוכלו למצוא גם קובץ utility המכיל פונקציות שימושיות בהן נעשה שימוש כדי לנקות את הדאטא וכדי לאמן ולהעריך את המודלים השמור בניתוב הבא.
לכל שאלה או פניה בנוגע לפרויקט, אתם מוזמנים לפנות אלי במייל - [email protected]