מכונות חושבות ומחשבים עם רגשות

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

ניתוח ואינטגרציה של סנטימנט

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

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

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

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

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

  1. צריך לנתח את הטקסט באופן אוטומטי, ולהיות מסוגל לסווג כל הודעה לציון מסוים על פי המילים המופיעות בו.
  2. בגלל הניסוח האנושי, הניסוח לא תמיד יהיה פשוט בסגנון "סוני הוא מכשיר מצוין" אלא לפעמים נפתל ("הציפייה שהמכשיר יהיה מצוין לא נענתה") או אפילו אירוני ("זה מכשיר ממש מעולה, נתקע כל 10 דקות"). שני הניסוחים האחרונים יובילו סיווג פשוט שמבוסס על מילות מפתח להסקת מסקנות מוטעות.
  3. לעיתים יש השוואה בין שני דגמים, וצריך יכולת לפצח את התחביר. לדוגמא המשפט "המכשיר של סמסונג, שלא כמו המכשיר של סוני, הוא מצוין" מכיל בתוכו את המשפט "המכשיר של סוני הוא מצוין" אבל המשמעות היא בדיוק הפוכה.
  4. יכולת מתקדמת היא לבודד רכיבים ומאפיינים שונים מתוך חוות הדעת. למשל לפרק את הטקסט הבא "לסוני מסך מעולה, מעבד מהיר אבל הסוללה נגמרת מהר וממשק המשתמש מסורבל. סה"כ מכשיר טוב אבל במחיר כזה היינו מצפים ליותר"

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

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

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

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

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

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

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

weka – פרויקט כריית מידע בג'אווה

פרויקטים של עיבוד טקסט בג'אווה:

ling pipe, GATE, UIMA, jtmt

4 מחשבות על “מכונות חושבות ומחשבים עם רגשות

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

    • צחי, אכן מעניין מאוד.
      ואם כבר, תסתכלו על הלינק הבא, שהראה לי אחי, מולי טייר:
      https://github.com/DanielRapp/twss.js
      זה אלגוריתם שמקבל משפט, וקובע האם ניתן לענות עליו במשפט האלמותי "that's what she said".
      מה שעוד מעניין זה שהמימוש כולו נעשה בעזרת node.js שזו טכנולוגיה לג'אווה סקריפט בצד השרת (!). פרויקט מעניין מאוד שתופס תאוצה ואולי נקדיש לו פוסט בעתיד.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s