שיטות מקובלות להבנת שפה טבעית בצ'אטבוט

השכבה הבסיסית והחשובה ביותר לפיתוח צ'אטבוט (Chatbot) מתוחכם, חשוב להבין, לפחות ברמה בסיסית, את הדרכים המקובלות היום בתעשייה להתמודדות עם השפה הטבעית. באקדמיה קיים תחום התמחות שלם אשר ממוקם בין בלשנות לבין מדעי המחשב, ועוסק בניסיון "להבין" שפה טבעית. באנגלית התחום קרוי: NLP - Natural Language Processing, ובעברית יש לו שם נהדר שרק מעטים מכירים: "בלשנות חישובית".

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

אי התמודדות

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

כיצד זה עובד בפועל

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


באופן ידני

השיטה הפשוטה והטובה ביותר היא כמובן השיטה הידנית. מפתח הצ'אטבוט יושב ומסמן ידנית את המשמעות של כל משפט נתון. כך לדוגמה עובדות פלטפורמות כמו api.ai , wit.ai , luis.ai. למרות העובדה ששלושתן מתהדרות בסיומות דומיין המרמזות על יכולת בינה מלאכותית (ai - Artificial intelligence), בפועל, נכון לזמן כתיבת שורות אלה, הדרך שלהן לחלץ את המשמעות של משפט בשפה טבעית היא הנגשת כלים למנהל הצ'אטבוט כך שיוכל לעשות זאת בעצמו.

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


סטטיסטיקה

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

השיטה הסטטיסטית היא הטובה ביותר שקיימת היום, אולם יש לה שני חסרונות מהותיים:

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

מה בעצם נאמר?

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


מכונה לומדת

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

הנה טקסט לדוגמה:

"פריחת הדובדבן ביפן היא נהדרת."

"פרחי הדובדבן הם ממש יפים."

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

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

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

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

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

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

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


יחסים בין המילים מתוך מבנה משפטים

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

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


סיכום

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



More articles

Overview of common methods for Natural Language Processing in Chatbots

We've already talked about it - Repetition in the Chatbot

The correct way to build a Chatbot that gathers critical information

How is asking, and how is answering

Chatbot? what is this?


Go back to: All articles