כשמבצעים בקשה לזיהוי כוונה, אפשר לספק הקשר של הדיבור כדי לתת רמזים למערכת לזיהוי דיבור. הרמזים האלה יכולים לעזור בזיהוי במצב שיחה ספציפי.
התאמה אוטומטית של הדיבור
התכונה 'התאמה אוטומטית של דיבור' משפרת את הדיוק של זיהוי הדיבור של הסוכן שלכם. היא עושה זאת באמצעות שימוש אוטומטי במצב השיחה כדי להעביר ישויות רלוונטיות וביטויי אימון כרמזים להקשר הדיבור לכל הבקשות לזיהוי כוונות. התכונה הזו מופעלת כברירת מחדל.
הפעלה או השבתה של התאמה אוטומטית של הדיבור
כדי להפעיל או להשבית את ההתאמה האוטומטית של הדיבור:
- עוברים אל מסוף Dialogflow ES.
- בוחרים את הסוכן בחלק העליון של תפריט סרגל הצד הימני.
- לוחצים על לחצן ההגדרות settings לצד שם הסוכן.
- בוחרים בכרטיסייה דיבור.
- גוללים לקטע שיפור האיכות של זיהוי הדיבור.
- מפעילים או משביתים את האפשרות הפעלה של התאמה אוטומטית של הדיבור.
עיצוב סוכן לשיפורים בזיהוי דיבור
אם מפעילים את ההתאמה האוטומטית של הדיבור, אפשר לבנות את הסוכן כך שינצל את היתרונות שלה. בקטעים הבאים מוסבר איך אפשר לשפר את זיהוי הדיבור באמצעות שינויים מסוימים בביטויים לאימון, בהקשרים ובסוגי הישויות של הסוכן.
ביטויים להדרכה והקשרים
- אם מגדירים ביטויי אימון עם ביטוי כמו 'stuffy nose' (אף סתום), ביטוי דומה של משתמש הקצה ייקלט באופן מהימן כ-'stuffy nose' ולא כ-'stuff he knows'.
אם יש הקשרים פעילים בסשן, התאמה אוטומטית של הדיבור תטה את רוב ההתאמות לכיוון הביטויים לאימון של כוונות שבהן כל ההקשרים של הקלט פעילים. לדוגמה, אם יש שני הקשרים פעילים, pay-bill ו-confirmation, כל הכוונות הבאות ישפיעו על ההתאמה האוטומטית של הדיבור: כוונות עם הקשר קלט יחיד pay-bill, כוונות עם הקשר קלט יחיד confirmation וכוונות עם שני הקשרי קלט pay-bill ו-confirmation.
התאמה אוטומטית של הדיבור לבקשה הבאה.אם בסשן אין הקשרים פעילים, ההתאמה האוטומטית של הדיבור תתבסס בעיקר על ביטויי ההדרכה של כוונות ללא הקשרים של קלט.
- אם יש לכם פרמטר חובה שמכריח את Dialogflow להציג הנחיות למילוי משבצות, ההתאמה האוטומטית של הדיבור תהיה מוטה מאוד לכיוון הישות שממלאת את המשבצת.
בכל המקרים, ההתאמה האוטומטית של הדיבור רק משפיעה על זיהוי הדיבור, ולא מגבילה אותו. לדוגמה, גם אם Dialogflow מציג למשתמש הנחיה להזין פרמטר נדרש, המשתמש עדיין יוכל להפעיל כוונות אחרות, כמו כוונת "שיחה עם נציג" ברמה העליונה.
ישויות מערכת
אם מגדירים משפט אימון שמשתמש ב@sys.number
ישות מערכת
,
והמשתמש אומר "I want two", יכול להיות שהמערכת תזהה את זה בתור "to", "too", "2" או "two".
כשההתאמה האוטומטית של הדיבור מופעלת, מערכת Dialogflow משתמשת בישות @sys.number כרמז במהלך זיהוי הדיבור, ויש סיכוי גבוה יותר שהפרמטר יחולץ כ-2.
ישויות מותאמות אישית
אם מגדירים ישות בהתאמה אישית לשמות של מוצרים או שירותים שהחברה מציעה, ויש מונחים כאלה בביטוי של משתמש הקצה, יש סיכוי גבוה יותר שהם יזוהו. אם משתמשים במשפט לאימון 'I love Dialogflow', שבו 'Dialogflow' מסומן כיישות @product, המערכת תדע להתאים את ההטיות של ההכרה האוטומטית של הדיבור (ASR) למשפטים כמו 'I love Dialogflow', 'I love Cloud Speech' ולכל שאר הערכים ביישות @product.
חשוב במיוחד להגדיר מילים נרדפות ברורות לישויות כשמשתמשים ב-Dialogflow כדי לזהות דיבור. נניח שיש לכם שני ערכים של ישות @product: Dialogflow ו-Dataflow. מילים נרדפות ל-Dialogflow יכולות להיות: Dialogflow, dialogue flow, dialogue builder, Speaktoit, speak to it, API.ai, API dot AI. אלה מילים נרדפות טובות כי הן כוללות את הווריאציות הנפוצות ביותר. אין צורך להוסיף את המילים "the dialogue flow builder" כי המילים "dialogue flow" כבר כוללות את זה.
- יכול להיות שיהיה קשה להבין כוונות של משתמשים שאומרים מספרים עוקבים אבל שונים.
לדוגמה, יכול להיות שהמשפט "אני רוצה שני מארזים של 16" יתפרש כ-2 מארזים של 16 או כ-216 מארזים. התאמה של הדיבור יכולה לעזור להבחין בין המקרים האלה אם מגדירים ישויות עם ערכים שמאויתים:
- מגדירים יישות
quantityעם רשומות:zeroone...twenty - מגדירים ישות
productאוsizeעם ערכים:sixteen packtwo ounce...five liter - רק מילים נרדפות של ישויות משמשות להתאמת הדיבור, כך שאפשר להגדיר ישות עם ערך הפניה
1ומילה נרדפת אחתoneכדי לפשט את לוגיקת הביצוע.
- מגדירים יישות
ישויות Regexp
ישויות של ביטויים רגולריים יכולות להפעיל התאמה אוטומטית של דיבור לרצפים אלפאנומריים ולרצפים של ספרות כמו "ABC123" או "12345" אם הן מוגדרות ונבדקות בצורה נכונה.כדי לזהות את הרצפים האלה באמצעות קול, צריך להטמיע את כל ארבע הדרישות הבאות:
1. דרישת קבלה של ביטוי רגולרי
אפשר להשתמש בכל ביטוי רגולרי כדי לחלץ ישויות מקלט טקסט, אבל רק ביטויים מסוימים ינחו את ההתאמה האוטומטית של הדיבור להטות את ההכרה של הדיבור לטובת רצפים אלפאנומריים או רצפים של ספרות שמאויתים.
ביישות של הביטוי הרגולרי, לפחות ערך אחד צריך לעמוד בכל הכללים הבאים:
- צריך להתאים לתווים אלפאנומריים, לדוגמה:
\d, \w, [a-zA-Z0-9] - לא יכולים להיות רווחים לבנים
או\s, אבל מותרים\s*ו-\s? - לא צריך לכלול קבוצות לחילוץ או קבוצות שלא לחילוץ
() - לא מנסה להתאים תווים מיוחדים או סימני פיסוק כמו:
` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |
הערך הזה יכול להכיל קבוצות של תווים [] וגם כמתים של חזרה כמו *, ?, +, {3,5}.
2. דרישה להגדרת פרמטר
מסמנים את ישות ה-regexp כפרמטר חובה של כוונת המשתמש, כדי שאפשר יהיה לאסוף אותה במהלך מילוי המשבצות. ההגדרה הזו מאפשרת להתאמה אוטומטית של הדיבור להטות את התוצאות לטובת זיהוי רצף, במקום לנסות לזהות כוונה ורצף בו-זמנית. אחרת, יכול להיות שהשאלה "איפה החבילה שלי מספר ABC123" תזוהה בטעות כשאלה "איפה החבילה שלי מספר 4ABC123".
3. דרישה להוספת הערות לביטויי אימון
אין להשתמש בישות regexp עבור הערה של ביטוי אימון לזיהוי כוונות. כך מוודאים שהפרמטר נפתר כחלק מהשלמת המשבצת.
4. דרישה לבדיקה
דוגמאות
לדוגמה, ישות של ביטוי רגולרי עם רשומה אחת ([a-zA-Z0-9]\s?){5,9} לא תפעיל את הכלי לזיהוי רצף דיבור כי היא מכילה קבוצה לחילוץ.
כדי לפתור את הבעיה, פשוט מוסיפים עוד רשומה ל-[a-zA-Z0-9]{5,9}. עכשיו תוכלו ליהנות מהיתרונות של הכלי לזיהוי רצפים כשמבצעים התאמה ל-'ABC123', אבל ה-NLU עדיין יתאים קלט כמו 'ABC 123' בזכות הכלל המקורי שמאפשר רווחים.
בדוגמאות הבאות לביטויים רגולריים, הביטויים מותאמים לרצפים אלפאנומריים:
^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]
בדוגמאות הבאות של ביטויים רגולריים, הביטויים מותאמים לרצפים של ספרות:
\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}
פתרון עקיף ל-Regexp
התמיכה המובנית של 'התאמה אוטומטית של דיבור' בישויות של ביטויים רגולריים משתנה בהתאם לשפה.
כאן מפורטות השפות הנתמכות ב-$OOV_CLASS_ALPHANUMERIC_SEQUENCE וב-$OOV_CLASS_DIGIT_SEQUENCE.
אם השפה שלכם לא מופיעה ברשימה, תוכלו לעקוף את המגבלה הזו. לדוגמה, אם רוצים שמזהה עובד שכולל שלוש אותיות ואחריהן שלוש ספרות יזוהה בצורה מדויקת, אפשר ליצור את הסוכן עם הישויות והפרמטרים הבאים:
- הגדרת ישות
digitשמכילה 10 רשומות של ישויות (עם מילים נרדפות):0, 01, 1...9, 9 - הגדרת ישות
letterשמכילה 26 רשומות של ישויות (עם מילים נרדפות):A, AB, B...Z, Z - הגדרת ישות
employee-idשמכילה רשומה אחת של ישות (ללא מילים נרדפות):@letter @letter @letter @digit @digit @digit - משתמשים ב-
@employee-idכפרמטר בביטוי לאימון.
בדיקה של התאמת הדיבור
כשבודקים את יכולות ההתאמה של הנציג לדיבור עבור ביטוי אימון מסוים או התאמה לישות, לא כדאי לעבור ישירות לבדיקת ההתאמה עם ההצהרה הקולית הראשונה בשיחה. צריך להשתמש רק בקלט של קול או אירועים לאורך כל השיחה לפני ההתאמה שרוצים לבדוק. ההתנהגות של הסוכן כשבודקים אותו בדרך הזו תהיה דומה להתנהגות שלו בשיחות ייצור בפועל.
מגבלות
ההגבלות הבאות חלות:
- התאמה לדיבור לא זמינה לכל מודלי הדיבור ולכל שילובי השפות. כדי לבדוק אם האפשרות 'התאמת מודל' זמינה לשילוב של מודל הדיבור והשפה שלכם, אפשר לעיין בדף התמיכה בשפות של Cloud Speech.
- התאמה אוטומטית של דיבור לא פועלת ב-Actions on Google (Google Assistant), כי זיהוי הדיבור מתבצע על ידי Actions on Google לפני שליחת הנתונים ל-Dialogflow.
- קשה לזהות רצפים ארוכים של תווים. מספר התווים שמתועדים בכל תור קשור ישירות לאיכות של קלט האודיו.
לדוגמה, אם השילוב פועל על אודיו של שיחות טלפון, צריך להפעיל מודלים משופרים של דיבור כדי לזהות באופן מהימן רצפים אלפאנומריים באורך של יותר מארבעה או חמישה תווים, או רצפים של ספרות באורך של יותר מ-10 תווים.
אם פעלת לפי כל ההנחיות לגבי ישויות של ביטויים רגולריים
ואתה עדיין מתקשה לתעד את כל הרצף בתור אחד,
אפשר לנסות חלופות נוספות לשיחה:
- כשמאמתים את הרצף מול מסד נתונים, כדאי להשוות עם פרמטרים אחרים שנאספו, כמו תאריכים, שמות או מספרי טלפון, כדי לאפשר התאמות חלקיות. לדוגמה, במקום לבקש מהמשתמש רק את מספר ההזמנה, כדאי לבקש גם את מספר הטלפון שלו. מעכשיו, כש-webhook שולח שאילתה למסד הנתונים כדי לברר את סטטוס ההזמנה, הוא יכול להסתמך קודם על מספר הטלפון, ואז להחזיר את ההזמנה שהכי מתאימה לחשבון הזה. לדוגמה, יכול להיות ש-Dialogflow ישמע לא נכון את האותיות "ABC" ויחשוב ששמע "AVC", אבל עדיין יחזיר למשתמש את סטטוס ההזמנה הנכון.
- אם הרצף ארוך במיוחד, כדאי לתכנן תהליך שמעודד את משתמשי הקצה להשהות את הרצף באמצע כדי שהבוט יוכל לאשר את הפעולות תוך כדי. פרטים נוספים זמינים בהדרכה הזו.