פרויקט תעשייתי – 234313 [#39] Summarization Tool for

Download Report

Transcript פרויקט תעשייתי – 234313 [#39] Summarization Tool for

‫פרויקט תעשייתי – ‪234313‬‬
‫‪[#39] Summarization Tool for Hebrew Text‬‬
‫מצגת סיום‬
‫מנחים‪ :‬ניר משולם וד"ר מירי רבינוביץ' ‪ -‬רפא"ל‬
‫סטודנטים‪ :‬גיא ויינר ויונתן כורם‬
‫מרכז מקצועי‪ :‬פרופ' מיקי אלעד‬
‫סמסטר אביב ‪2011‬‬
‫מטרות‬
‫‪ .1‬פיתוח מודול לדירוג אוטומטי של משפטים במסמך‪ .‬המודול מקבל כקלט מסמך‬
‫וקובץ ‪ XML‬המכיל את תוצרי ניתוח המסמך כפי שנפלטו ממודול ‪ NLP‬שפותח‬
‫ברפא"ל‪ .‬ה‪ XML-‬מכיל ניתוח מורפולוגי וסמנטי של המילים במסמך‪.‬‬
‫‪ .2‬פיתוח ממשק משתמש נוח הממחיש את יכולות המודול המדרג על ידי הצגת‬
‫משפטי המפתח של המסמך‪ .‬הממשק מספק למשתמש שליטה באופן הצגת‬
‫התוצאות (כמות המשפטים המוצגים‪ ,‬סדר הופעתם וכדומה)‪.‬‬
‫‪ .3‬פיתוח התוצר הסופי (מודול ‪ +‬ממשק) המאפשר עבודה‪/‬חקר‪/‬פיתוח עתידי בצורה‬
‫נוחה‪.‬‬
‫מתודולוגיה‬
‫‪ .1‬קריאת מאמרים תיאורטיים ומחקריים העוסקים בנושא הדירוג האוטומטי‪ ,‬והסקת‬
‫מסקנות שהשפיעו על פעולות המודול ואופן הפיתוח‪.‬‬
‫‪ .2‬פיתוח המודול ב‪ C#-‬בסביבת ‪.NET4.0‬‬
‫‪ .3‬פיתוח ממשק המשתמש ב‪ API-‬של ‪.WinForms‬‬
‫‪ .4‬שימוש בכלי ה‪ Serialization-‬של ‪:C#‬‬
‫•‬
‫ייצור אובייקט בזמן ריצה המכיל את הניתוח שנעשה ברפא"ל‪.‬‬
‫•‬
‫שמירה וטעינה של קובץ ההיסטוריה של הקורפוס‪.‬‬
‫מתודולוגיה (המשך)‬
‫‪ .5‬שימוש ב‪:MultiThreading-‬‬
‫•‬
‫מקבול התהליך של הכנת מבני הנתונים המייצגים את המסמך לקראת עבודה‪.‬‬
‫•‬
‫מקבול הרצת האלגוריתמים לדירוג המשפטים‪.‬‬
‫‪ .6‬שימוש בקובץ קונפיגורציה (‪ )Settings File‬כדי להשיג שליטה רחבה על אופן פעולת‬
‫המודול המדרג‪.‬‬
‫הישגים‬
‫‪ .1‬פרמטריזציה‬
‫•‬
‫קביעת סוג המילים שינופו מתוך המסמך בשלב של בניית מבני הנתונים לפי‬
‫סוגם המורפולוגי – ערכים מספריים‪ ,‬מילות יחס‪ ,‬מילות שאלה וכדומה‪.‬‬
‫•‬
‫קביעת אלגוריתמי הדירוג שיורצו ומשקלם בשקלול הסופי‪.‬‬
‫•‬
‫קביעת ספים מספריים שונים הנחוצים לאלגוריתמים מסוימים‪ .‬לדוגמה‪:‬‬
‫האלגוריתם ‪ Coverage‬דורש סף מספרי על מנת לקבוע האם מילה נחשבת‬
‫"מילת מפתח"‪.‬‬
‫•‬
‫קביעת ספים מספריים לשם תהליכים נוספים במודול‪ .‬לדוגמה‪ :‬ההחלטה האם‬
‫שני משפטים "דומים מדי" ולכן רק אחד מהם ייכלל בפלט‪.‬‬
‫הישגים (המשך)‬
‫‪ .2‬תמצות קורפוס מסמכים‬
‫•‬
‫המודול תוכנן לעבוד גם על קבוצת מסמכים הקשורים כולם באותו נושא‪ .‬לכן‬
‫שמרנו גם מידע גלובלי שמסייע להבחין במילים הקשורות לנושא שבו עוסקים‬
‫כלל המסמכים‪.‬‬
‫•‬
‫אנו שומרים את מספר המופעים הכולל של כל משפחת מילים בקורפוס‪ ,‬וכן את‬
‫מספר המסמכים שבהם היא הופיעה‪ ,‬בקובץ שייקרא מעתה היסטוריה‪.‬‬
‫•‬
‫אלגוריתמי דירוג מסוימים משתמשים במידע זה כדי לדרג מילים ומשפטים‬
‫(מפורט בהמשך)‪.‬‬
‫•‬
‫המידע שבקובץ ההיסטוריה מתעדכן בכל תמצות‪ ,‬אם המשתמש בוחר בכך‪.‬‬
‫הישגים (המשך)‬
‫הישגים (המשך)‬
‫‪ .4‬מימוש מספר מבני נתונים שונים המייצגים את המסמך‪:‬‬
‫•‬
‫מבנה הנתונים העיקרי הוא מערך פסקאות שכל אחת מהן מורכבת ממשפטים‬
‫הבנויים ממערך מילים‪.‬‬
‫•‬
‫גרף – כל מילה במסמך מיוצגת ע"י צומת ויש קשת בין שני צמתים אם המילים‬
‫שהם מייצגים מופיעות באותו משפט‪.‬‬
‫•‬
‫מילונים המקשרים מזהה משפחת מילים לכל המילים בעלות המזהה הזה‪.‬‬
‫ישנם שני מילונים; אחד מחזיק מזהים הקשורים לדמיון דקדוקי והשני מחזיק‬
‫מזהים הקשורים לדמיון סמנטי‪.‬‬
‫אופן פעולת המודול המדרג‬
‫קלט‬
‫קבצי ‪XML‬‬
‫‪XML De-Serialization‬‬
‫המערכת‬
‫המתמצתת‬
‫מסמך לתמצות‬
‫‪Text Pre-Processing‬‬
‫ניפוי מילים מיותרות והשלמת בניית המסמך‬
‫עידון קובץ ההיסטוריה‬
‫הרצת אלגוריתמי דירוג למשפטים‬
‫שילוב הדירוגים במטרה לתת ציון לכל משפט‬
‫פלט‬
‫פליטת אחוז מסוים של המשפטים החשובים‬
‫ביותר‪ ,‬תוך מניעת יתירות בתמצות‬
‫פליטת הציונים של כל המשפטים לניתוח‬
‫מודולים עתידיים (אופציונלי)‬
‫וקטור המשקלים של האלגוריתמים‬
‫• כאמור‪ ,‬הציון הסופי לכל משפט בתמצות ניתן באמצעות שקלול התוצאות של כלל‬
‫אלגוריתמי הדירוג כקומבינציה לינארית שלהם‪.‬‬
‫• ערכנו ניסיון למצוא את וקטור המשקלים "האופטימלי" בעזרת קירוב ‪Least Squares‬‬
‫באופן הבא‪:‬‬
‫• דירגנו כל מסמך שהיה לנו באופן ידני (כלומר את המשפטים שבו) ואז פתרנו מערכת‬
‫משוואות שכל שורה בה מייצגת משפט יחיד‪ .‬לבסוף מיצענו את הוקטורים שקיבלנו‬
‫מכל המסמכים לקבלת וקטור יחיד‪ .‬תהליך זה נעשה מספר פעמים על כמה וריאציות‬
‫של מצב ההיסטוריה‪ ,‬אשר ביחס אליה הרצנו את האלגוריתמים‪.‬‬
‫• למתמצת ישנם פרמטרים רבים נוספים המשפיעים על אופן פעולתו‪ ,‬אך אנו בחרנו‬
‫"להקפיא" את ערכיהם לצורך ניתוח זה‪.‬‬
‫וקטור המשקלים – ניתוח התוצאות‬
‫• לאחר מציאת המשקלים כיילנו את המערכת לפיהם ובדקנו את תוצאות הדירוג מול‬
‫הדירוג הידני‪.‬‬
‫• בשקף הבא מוצג גרף המשווה את תוצאות הדירוג האוטומטי מול הדירוג הידני עבור‬
‫שני מסמכים שונים‪.‬‬
‫• ניתן לראות מהגרף שקיים פער ניכר בין התוצאות עבור חלק מהמשפטים‪ ,‬ולפיכך יש‬
‫מקום לשפר את וקטור המשקלים שמצאנו‪.‬‬
‫וקטור המשקלים – ניתוח התוצאות (המשך)‬
‫‪14‬‬
‫השוואת תוצאות הדירוג עבור שני מסמכים‬
‫‪12‬‬
‫מסמך ראשון‪ ,‬דירוג אוטומטי‬
‫‪10‬‬
‫מסמך ראשון‪ ,‬דירוג ידני‬
‫מסמך שני‪ ,‬דירוג אוטומטי‬
‫ציון המשפט‬
‫‪8‬‬
‫מסמך שני‪ ,‬דירוג ידני‬
‫‪6‬‬
‫‪4‬‬
‫‪2‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪7‬‬
‫‪8‬‬
‫‪9‬‬
‫‪14‬‬
‫‪13‬‬
‫‪12‬‬
‫‪11‬‬
‫‪10‬‬
‫מספרי משפטים (לפי סדר הופעתם במסמך)‬
‫‪15‬‬
‫‪16‬‬
‫‪17‬‬
‫‪18‬‬
‫‪19‬‬
‫‪20‬‬
‫‪21‬‬
‫‪22‬‬
‫‪23‬‬
‫וקטור המשקלים – ניתוח התוצאות (המשך)‬
‫• כזכור‪ ,‬יש פרמטרים רבים נוספים המשפיעים על אופן פעולת המודול ש"הקפאנו" על‬
‫ערכים מסוימים כדי למצוא את הוקטור‪ .‬ייתכן כי ערכים אלו אינם אופטימליים בפני‬
‫עצמם וכדאי לשנותם על מנת לקבל תוצאות איכותיות יותר‪.‬‬
‫• תוצאות האלגוריתמים השונים לא נמצאות כולן באותו תחום‪ ,‬וכן התפלגויות התוצאות‬
‫בכל תחום שונות‪ .‬רוב האלגוריתמים מנורמלים במטרה לקבל תוצאות בין ‪ 0‬ל‪ ,1-‬אך‬
‫אנו סבורים שהתפלגות זהה של התוצאות בתחום הייתה גורמת לחישוב "נכון יותר"‬
‫של המשקלים‪.‬‬
‫• ייתכן כי קומבינציה לינארית אינה מתאימה כאן‪ ,‬ואולי יש צורך בשיטת שקלול שונה‬
‫לחלוטין (כגון קומבינציה ריבועית‪ ,‬שימוש במסווגים ועוד)‪.‬‬
‫ממשק המשתמש‬
‫המסמך המקורי מול תמצותו‪:‬‬
‫ממשק המשתמש (המשך)‬
‫שליטה על אופן הצגת המשפטים‪:‬‬
‫מסקנות להמשך עבודה‬
‫• יש להמשיך את החקר הניסיוני על מנת להביא את המתמצת לרמת תוצאות רצויה‪.‬‬
‫• אם השימוש בשקלולים (ליניאריים או לא) יעמוד בעינו‪ ,‬רצוי לבצע את החקר על סמך‬
‫מסמכים רבים‪ ,‬ובשיתוף אנשים רבים‪.‬‬
‫• כיוון שיש מסמכים ובעיקר כתבות אשר אינם בנויים לפי הנחות הקלט שלנו‪ ,‬ועלולים‬
‫להכיל מבנים טקסטואליים לא רגילים (למשל כותרות משנה)‪ ,‬יש מקום להמשיך‬
‫לשכלל את המתמצת כדי שיוכל לטפל במקרי קצה‪.‬‬