✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

איך בוט נולד. פרק:2 מה יש בתוך המכונה?

יאן קליאבר
|
Dec 10, 2017
alt="blogs"
alt="blogs"
Events
title="Google"
alt="blogs"
Event

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

INTENTS

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

ללא קשר לדרך בה נשאלה השאלה הבוט אמור להיות מסוגל לשייך את הקלט לאותה הכוונה  או באנגלית Intent והיא בדיקת יתרת עו"ש. בשבילנו Intent הוא בעצם ה use case שהבוט תומך בו. נגיד שהבוט שלנו תומך בשלושה Intents :  בדיקת יתרת עו"ש, העברה מחשבון לחשבון וניהול הוצאות. בהינתן העובדה ש- intent הוא use case נתמך ע"י בוט אז אוסף ה intents  מגדיר לי את עולם ההבנה של הבוט.

לכן אם אשאל את הצ'אטבוט שלי מה המניות המומלצות לרכישה תשובתו תהיה שהוא לא כל כך מבין במניות ועדיף לי להתייעץ עם יועץ השקעות.

UTTERANCES

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

והתשובה היא כמו בחיים אמיתיים נציג שרות שהולך לעבוד בבנק עובר הדרכה אז גם את הבוט אנחנו מלמדים. תהליך הלימוד של הבוט (training) הוא בעצם הזנתו ע"י אמירות לדוגמא שנקראות Utterances. הבוט ישתמש בטכניקות מרובות של בינה מלאכותית על מנת להבין לא רק את האמירות שסופקו כדוגמא אלא גם אמירות שונות שיידע לשייך כדומות לאלה שסופקו לו בתהליך הלימוד. אז בכדי לבדוק את יתרת העו"ש אני אספק utterances כמו "כמה כסף יש לי בחשבון?", "מה היתרה שלי?" והמצב האידיאלי הוא לאמן את הבוט עם 10-15 אמירות פר intent  שאני רוצה שיתמוך. חשוב לציין שעל בוט חכם לדעת לזהות אמירות שלאו דווקא היו חלק מתהליך הלימוד

ENTITIES

נחזור לדוגמא של הבוט הבנקאי שלנו. הבנו כבר שאמירות כמו "כמה כסף יש לי בעו"ש" ו"מה הצבירה בחסכונות" משויכות לאותו ה- intent. למרות שבשתי האמירות הכוונה היא לבדוק יתרה ברור לנו שמדובר ביתרות שונות – עו"ש וחסכונות. וכאן נכנסים לפעולה ה entities שהם בעצם פיסות מידע שאנחנו מחלצים מהאמירות של המשתמש כדי להציג את היתרה הספציפית שביקש. ראשית אנחנו מחלצים את ה- intent והוא בדיקת יתרה. מה- intent נחלץ את ה- entity  שמשויך אליו ונשמור אותו במשתנה שנוכל להשתמש בו בקריאה לשרות ה-   REST  שמביא את היתרות ממערכות הבנק. לדוגמה עבור intent בדיקת יתרה נגדיר entity בשם AccountType ונאפיין אותו ע"י שלוש אפשרויות - עו"ש, חסכונות, אשראי. בהינתן הקלט "כמה כסף יש לי בעובר ושב?" הבוט יבין שה- intent  הינו בדיקת יתרה וה- entity AccountType יאוכלס בערך "עו"ש".

בדוגמה הזאת השתמשתי ב- entity שהינו ספציפי לענף הבנקאות כמו סוג חשבון, קיימים גם entities גנריים כמו date, currency, duration ועוד רבים שמאוד שימושיים בלהבין את הפרטים המדויקים של ה intent.

INTELLIGENCE

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

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

מנגנון זה הינו מנגנון של בינה מלאכותית וזהו בדיוק המנגנון intelligence שהבוט שלנו צריך.

FLOW

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

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

הנושא הזה מעניין אותכם? אשמח לשוחח – yan.kliaver@oracle.com

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

10 טיפים לפרויקט צ'אטבוט מצליח

איך בוט נולד. פרק 1: מה זה?

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

INTENTS

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

ללא קשר לדרך בה נשאלה השאלה הבוט אמור להיות מסוגל לשייך את הקלט לאותה הכוונה  או באנגלית Intent והיא בדיקת יתרת עו"ש. בשבילנו Intent הוא בעצם ה use case שהבוט תומך בו. נגיד שהבוט שלנו תומך בשלושה Intents :  בדיקת יתרת עו"ש, העברה מחשבון לחשבון וניהול הוצאות. בהינתן העובדה ש- intent הוא use case נתמך ע"י בוט אז אוסף ה intents  מגדיר לי את עולם ההבנה של הבוט.

לכן אם אשאל את הצ'אטבוט שלי מה המניות המומלצות לרכישה תשובתו תהיה שהוא לא כל כך מבין במניות ועדיף לי להתייעץ עם יועץ השקעות.

UTTERANCES

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

והתשובה היא כמו בחיים אמיתיים נציג שרות שהולך לעבוד בבנק עובר הדרכה אז גם את הבוט אנחנו מלמדים. תהליך הלימוד של הבוט (training) הוא בעצם הזנתו ע"י אמירות לדוגמא שנקראות Utterances. הבוט ישתמש בטכניקות מרובות של בינה מלאכותית על מנת להבין לא רק את האמירות שסופקו כדוגמא אלא גם אמירות שונות שיידע לשייך כדומות לאלה שסופקו לו בתהליך הלימוד. אז בכדי לבדוק את יתרת העו"ש אני אספק utterances כמו "כמה כסף יש לי בחשבון?", "מה היתרה שלי?" והמצב האידיאלי הוא לאמן את הבוט עם 10-15 אמירות פר intent  שאני רוצה שיתמוך. חשוב לציין שעל בוט חכם לדעת לזהות אמירות שלאו דווקא היו חלק מתהליך הלימוד

ENTITIES

נחזור לדוגמא של הבוט הבנקאי שלנו. הבנו כבר שאמירות כמו "כמה כסף יש לי בעו"ש" ו"מה הצבירה בחסכונות" משויכות לאותו ה- intent. למרות שבשתי האמירות הכוונה היא לבדוק יתרה ברור לנו שמדובר ביתרות שונות – עו"ש וחסכונות. וכאן נכנסים לפעולה ה entities שהם בעצם פיסות מידע שאנחנו מחלצים מהאמירות של המשתמש כדי להציג את היתרה הספציפית שביקש. ראשית אנחנו מחלצים את ה- intent והוא בדיקת יתרה. מה- intent נחלץ את ה- entity  שמשויך אליו ונשמור אותו במשתנה שנוכל להשתמש בו בקריאה לשרות ה-   REST  שמביא את היתרות ממערכות הבנק. לדוגמה עבור intent בדיקת יתרה נגדיר entity בשם AccountType ונאפיין אותו ע"י שלוש אפשרויות - עו"ש, חסכונות, אשראי. בהינתן הקלט "כמה כסף יש לי בעובר ושב?" הבוט יבין שה- intent  הינו בדיקת יתרה וה- entity AccountType יאוכלס בערך "עו"ש".

בדוגמה הזאת השתמשתי ב- entity שהינו ספציפי לענף הבנקאות כמו סוג חשבון, קיימים גם entities גנריים כמו date, currency, duration ועוד רבים שמאוד שימושיים בלהבין את הפרטים המדויקים של ה intent.

INTELLIGENCE

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

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

מנגנון זה הינו מנגנון של בינה מלאכותית וזהו בדיוק המנגנון intelligence שהבוט שלנו צריך.

FLOW

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

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

הנושא הזה מעניין אותכם? אשמח לשוחח – yan.kliaver@oracle.com

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

10 טיפים לפרויקט צ'אטבוט מצליח

איך בוט נולד. פרק 1: מה זה?

לפרטים נוספים ויצירת קשר עם נציג אורקל

תודה הודעתך התקבלה

הודעתך לא התקבלה - נסה שוב מאוחר יותר

יאן קליאבר
Oracle

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות