הבעייתיות במידול שיח לכדי תוכנת צ'אטבוט

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

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

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

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

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

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

לדוגמה:

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

ל"סוכן הביטוח" יש כמובן גם מאפיינים שונים, אבל יש לו לפחות שני מאפיינים שונים לגמרי :

א' - הוא נציג של חברת ביטוח - מה שהמבוטח הוא לא.

ב' - סביר להניח שיש לו רישיון מתאים למכירת ביטוח.

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

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


מידול לכדי ארכיטקטורת תוכנה

אם נתבונן בדוגמה למידול מצב לכדי תוכנה נוכל לראות שניתן לתאר התהליך כך:

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

תהליך ההפשטה הוא מרכיב חשוב ביותר:

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

מי יכול לגעת בשיחה ?

כאשר אנו מנסים למדל שיח,

השלב הראשון הוא זיהוי האובייקטים. אובייקטים בהגדרה הם :

"anything that is visible or tangible and is relatively stable in form.”

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

מצאתם?

כן, זאת הבעיה…

למעשה חוץ מהעבודה הברורה שיש לנו שאני אנשים, אחרת אין שיחה, מה עוד אנו יכולים לזהות?

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

ובכל זאת שיחה מתקיימת ובעלת ממשות בעולם

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

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

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

סיכום

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

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

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



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