כשמבצעים בקשה לזיהוי כוונה, אפשר לספק הקשר דיבור כדי לתת רמזים למזהה הדיבור. ההנחיות האלה יכולות לעזור בזיהוי במצב שיחה ספציפי.
התאמה אוטומטית של הדיבור
התכונה "התאמה אוטומטית לדיבור" משפרת את הדיוק של זיהוי הדיבור של הנציג, על ידי שימוש אוטומטי במצב השיחה כדי להעביר ישויות רלוונטיות וביטויי אימון כרמזים להקשר הדיבור בכל הבקשות לזיהוי כוונה. התכונה הזו מופעלת כברירת מחדל.
הפעלה או השבתה של התאמת דיבור אוטומטית
כדי להפעיל או להשבית את התכונה "התאמה אוטומטית לדיבור":
- נכנסים למסוף Dialogflow ES.
- בוחרים את הנציג בחלק העליון של התפריט בסרגל הצד הימני.
- לוחצים על כפתור ההגדרות settings ליד שם הנציג.
- לוחצים על הכרטיסייה דיבור.
- גוללים לקטע שיפור האיכות של זיהוי הדיבור.
- מפעילים או משביתים את האפשרות הפעלת התאמה אוטומטית לדיבור.
עיצוב הנציג לשיפור זיהוי הדיבור
כשההתאמה האוטומטית לדיבור מופעלת, אתם יכולים לבנות את הנציג כך שינצל את היתרונות שלה. בקטעים הבאים מוסבר איך אפשר לשפר את זיהוי הדיבור באמצעות שינויים מסוימים בביטויי ה-intent לאימון, בהקשרים ובישויות של הנציג.
ביטויי אימון והקשרים
- אם תגדירו ביטויי אימון עם ביטוי כמו "אף סתום", ביטוי דומה של משתמש הקצה יזוהה באופן מהימן כ "אף סתום" ולא כ "אף סתם".
כשיש בסשן הקשרים פעילים, התאמת הדיבור האוטומטית תתמקד בעיקר בביטויי האימון של כוונות שבהן כל הקשרי הקלט פעילים. לדוגמה, עם שני הקשרים פעילים, "pay-bill" ו-"confirmation", כל הכוונות הבאות ישפיעו על התאמת הדיבור האוטומטית: כוונות עם הקשר קלט יחיד "pay-bill", כוונות עם הקשר קלט יחיד "confirmation" וכוונות עם שני הקשרי קלט, "pay-bill" ו-"confirmation".
כשלסשן אין הקשרים פעילים, התאמת הדיבור האוטומטית תטה בעיקר לביטויי ה-training של כוונות ללא הקשרי קלט.
- אם יש לכם פרמטר חובה שמאלץ את Dialogflow להציג הנחיות למילוי משבצות, התאמת הדיבור האוטומטית תטה באופן משמעותי לכיוון הישות שמתמלאת.
בכל המקרים, התאמת הדיבור האוטומטית רק משפיעה על זיהוי הדיבור, ולא מגבילה אותו. לדוגמה, גם אם Dialogflow מבקש מהמשתמש פרמטר נדרש, המשתמשים עדיין יוכלו להפעיל כוונות אחרות, כמו כוונה ברמה העליונה של "דיבור עם נציג".
ישויות מערכת
אם מגדירים ביטוי לאימון שמשתמש בישות המערכת @sys.number, ומשתמש הקצה אומר "I want two", יכול להיות שהמערכת תזהה את זה בתור "to", "too", "2" או "two".
כשההתאמה האוטומטית לדיבור מופעלת, Dialogflow משתמש בישות @sys.number כרמז במהלך זיהוי הדיבור, ויש סיכוי גבוה יותר שהפרמטר יחולץ כ-"2".
ישויות בהתאמה אישית
אם מגדירים ישות בהתאמה אישית לשמות של מוצרים או שירותים שהחברה מציעה, ומשתמש הקצה מזכיר את המונחים האלה בביטוי, יש סיכוי גבוה יותר שהם יזוהו. אם יש ביטוי לאימון "I love Dialogflow", שבו "Dialogflow" מסומן כישות @product, התאמת הדיבור האוטומטית תתעדף את "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כדי לפשט את הלוגיקה של מילוי הבקשה.
- מגדירים ישות
ישויות של ביטויים רגולריים
ישויות של ביטויים רגולריים יכולות להפעיל התאמה אוטומטית של דיבור לרצפים של אותיות וספרות כמו "ABC123" או "12345" אם מגדירים ובודקים אותן כמו שצריך.כדי לזהות את הרצפים האלה באמצעות הקול, צריך להטמיע את כל ארבע הדרישות הבאות:
1. דרישת כניסה של ביטוי רגולרי
אפשר להשתמש בכל ביטוי רגולרי כדי לחלץ ישויות מקלט טקסט, אבל רק ביטויים מסוימים יגרמו להתאמה אוטומטית של הדיבור להטות את זיהוי הדיבור לרצפים של ספרות או תווים אלפאנומריים מאויתים.
בישות של הביטוי הרגולרי, לפחות רשומה אחת צריכה לעמוד בכל הכללים הבאים:
- צריך להתאים לתווים אלפאנומריים מסוימים, לדוגמה:
\d,\w,[a-zA-Z0-9] - לא יכול להכיל רווחים לבנים
או\s, אבל מותר להשתמש ב-\s*וב-\s? - לא אמור להכיל קבוצות לחילוץ או קבוצות ללא חילוץ
() - לא צריך לנסות להתאים תווים מיוחדים או סימני פיסוק כמו:
` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ |
הרשומה הזו יכולה לכלול מערכות תווים []
וכמתים של חזרה כמו *, ?, +, {3,5}.
2. דרישות להגדרת פרמטרים
מסמנים את הישות של הביטוי הרגולרי כפרמטר Intent חובה, כדי שאפשר יהיה לאסוף אותו במהלך מילוי המשבצות. כך אפשר להטות את ההתאמה האוטומטית של הדיבור לזיהוי רצפים, במקום לנסות לזהות כוונה ורצף בו-זמנית. אחרת, יכול להיות שהשאלה "Where is my package for ABC123" תזוהה בטעות בתור "Where is my package 4ABC123".
3. דרישה להוספת הערות לביטויי אימון
אל תשתמשו בישות regexp בשביל הערה לביטוי אימון של Intent. כך הפרמטר יזוהה כחלק ממילוי המשבצות.
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}
פתרון עקיף לביטויים רגולריים
התמיכה המובנית של התאמת דיבור אוטומטית בישויות של ביטויים רגולריים משתנה בהתאם לשפה.
אסימונים של מחלקות דיבור
לשפות נתמכות ב-$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.
- זיהוי רצפים ארוכים של תווים הוא משימה מאתגרת. מספר התווים שמתועדים בכל פעם קשור ישירות לאיכות של קלט האודיו.
לדוגמה, אם השילוב שלכם פועל על אודיו של שיחת טלפון, צריך להפעיל מודלים משופרים של דיבור כדי לזהות באופן מהימן רצפים אלפאנומריים שארוכים יותר מ-4 או 5 תווים, או רצפים של ספרות שארוכים יותר מ-10 תווים.
אם פעלתם לפי כל ההנחיות לישויות של ביטויים רגולריים, ועדיין לא הצלחתם לתעד את כל הרצף בתור אחד, אתם יכולים לנסות כמה חלופות שיותר מתאימות לשיחה:
- כשמאמתים את הרצף מול מסד נתונים, כדאי להצליב נתונים עם פרמטרים אחרים שנאספו, כמו תאריכים, שמות או מספרי טלפון, כדי לאפשר התאמות חלקיות. לדוגמה, במקום לבקש מהמשתמש רק את מספר ההזמנה, אפשר לבקש גם את מספר הטלפון שלו. עכשיו, כשה-webhook שולח שאילתה למסד הנתונים כדי לבדוק את סטטוס ההזמנה, הוא יכול להסתמך קודם על מספר הטלפון, ואז להחזיר את ההזמנה עם ההתאמה הכי קרובה לחשבון הזה. כך Dialogflow יכול לשמוע בטעות "AVC" במקום "ABC", ועדיין להחזיר למשתמש את סטטוס ההזמנה הנכון.
- אם מדובר ברצפים ארוכים במיוחד, כדאי לתכנן תהליך שמעודד את משתמשי הקצה לעצור באמצע כדי שהבוט יוכל לאשר את הפרטים תוך כדי התהליך. לפרטים נוספים, קראו את המדריך הזה.