意圖用來定義對話工廠內用戶表述的一種意向,比如查天氣、訂機票、是本人等一個完整的意圖可包含:意圖名稱、意圖別名、用戶問法、問法模板等信息。
意圖基本信息
意圖名稱:意圖名稱在機器人內不能重復。如. 申請公積金貸款。
意圖別名:意圖面向用戶可理解的一種表述,當機器人識別到兩個相近的意圖時,會主動用意圖別名澄清訪問。機器人澄清示例. 請問您是要申請公積金貸款,還是使用公積金支付房貸?
意圖問法
意圖問法包括兩類:用戶問法和問法模板。在意圖的問法配置中,給意圖添加用戶問法和問法模板。輸入完成后,enter可快捷添加問法。
在問法模板中,有時需要配置槽位參數,這時需要我們先創建全局槽位,槽位名稱我們可以自定義,然后在識別方法中選擇自建或系統內置的實體,根據槽位的特性,選擇數組還是單值,選擇是否加密,配置完成后點擊確定即可。
用戶問法
用戶問法:用戶表達該意圖的各種不同的表述方式,用戶問法應更多覆蓋給類不同的表述方式
相似的表達方式,比如:我要買火車票、買火車票、買一張火車票
不同表達的方式,比如:我要買火車票、我要坐火車出行、坐火車到xx去玩
注意:每個意圖的用戶問法建議5條以上
劃詞標注:用戶問法中包含了特定的參數信息,使用劃詞標注可以提升機器人識別用戶參數的效果,特別對于使用相同識別方式的兩個參數有更大的幫助。
例如:我要買從北京到杭州的火車票
在這句話中,北京和杭州都是中國的城市,如果您直接說”北京”或者”杭州”,是沒有辦法直接識別哪個是出發地哪個是目的地。利用劃詞標注,我們可以根據用戶描述中的樣例說法找到出發地和目的地。
標注后,用戶有相似的說法“我要買從天津到廣州的火車票”,機器人可以識別到“天津”和“廣州”到對應的參數
標注方法:在編輯框中,用光標選中詞,即可標注該詞到對應的意圖參數上。標注完成后,保存話術后即生效。
問法模板
問法模板(原LGF):通過模板匹配來表示用戶的問法。問法模板支持以下元素
元素 | 說明 | 示例 |
${} | 代表意圖參數(槽位),配置時可以引用意圖內定義的參數,${參數名} | ${城市} 其中“城市”是用戶定義的意圖參數名 |
[] | 可選符 | [請|麻煩]幫我打水 用戶說了“幫我打水”、“請幫我打水”、“麻煩幫我打水”都可以匹配到問法模板。 |
() | 必選符 | 附近的(餐館|飯店) 用戶說了“附近的餐館”、“附近的飯店”可以匹配到問法模板,用戶說了“附近的酒店”或“附近的”則不可以匹配到模板。 |
| | 或 | 小明的(電話|聯系方式) 用戶說了“小明的電話”或“小明的聯系方式”都可以匹配到問法模板。 |
.{下限,上限} | 指定數量的文本 | .{0,3}${日期}${城市}的天氣 .{0,3}代表任意0~3個字,用戶說了“查一下明天北京的天氣”、“我想問后天杭州的天氣”、“下周一上海的天氣”都可以匹配到問法模板。 |
注意:元素里面使用到的符號都是英文符號
問法模板(LGF)配置實踐
最簡單的LGF
最簡單的LGF就是普通的文本,比如下面的“今天的北京天氣“,在勾選嚴格匹配的情況下,這個LGF表達僅僅能匹配一個輸入,也就是原封不動的“今天的北京天氣“今天的北京天氣
可選部分
使用“[]“可以標明,文本中的某個部分是可有可無的,比如下面的“的“,在這樣的LGF表達下,能匹配兩個輸入,“今天北京天氣“和“今天北京的天氣“今天北京[的]天氣我們可以在不同的地方加入可選標記,能讓句子的表達能力翻倍(x2),比如下面的表達就能匹配4個輸入今天北京[的]天氣[預報]
邏輯或
使用“|“可以表達某個部分“邏輯或關系“,比如下面的時間部分,可以表達3個時間中的任意一個,使得總共可以匹配的輸入數量擴展到了12(xn,n表示候選的個數)需要注意的是,使用“|“的時候為了避免表達歧義,建議使用“()“做隔離表達,如下所示:(今天|明天|后天)北京[的]天氣[預報]除了可以使用“()“來隔離外,如果邏輯或部分同時也是可選部分,那么使用“[]“也能形成天然的隔離,如下所示:(今天|明天|后天)北京[的]天氣[預報|情況|狀況]
參數表達
以上的例子都屬于LGF的文本表達,但是在對話工廠構建對話的過程中,會有很多的參數填充,比如上述的天氣的例子,需要知道“時間“和“地點“2個參數在LGF中可以使用”${}”引用具體的參數(注意:是參數名,而不是來源名詞),那么如下表達就能命中非常多具體表達如:“明天杭州的天氣情況“,“2號廣州天氣“,“大后天深圳天氣狀況“等等${date}${city}[的]天氣[預報|情況|狀況]
通配符泛化
LGF的“可選部分“和“邏輯或“等手段都是對表達能力的一種增強,但在一些應用中仍無法滿足泛化能力的需求,比如下面的表達中,開發者想覆蓋更多的多樣的前后綴[請問|查下|告訴我]${date}${city}[的]天氣[預報|情況|狀況][如何|怎么樣|好不好]為了對應這樣的需求,LGF也支持通配符,表示方式是“.{下限,上限}“,例子如下:.{0,3}${date}${city}[的]天氣[預報|情況|狀況].{0,3}比如“.{0,3}“表示能匹配0個(沒有)到3個任意字符(UTF字符,中文字算一個),上述的表述方式能兼容一些前后綴的情況。但是,切記這樣的泛化是很不可控的,可能會導致一些其他表述被誤識別,通配符泛化建議在10個字以內。
常見錯誤
錯誤類型 | 錯誤配置 | 錯誤說明 | 正確配置 |
語法錯誤 | 我想聽劉德華[的歌 | 只有“[”,沒有對應的“]” | 我想聽劉德華[的歌] |
我想聽<歌手>的歌 | 引用參數應該使用${參數名} | 我想聽${歌手}的歌 | |
引用的參數沒有定義 | 我想聽${歌手}的歌 | 在意圖基礎配置中,沒有定義“歌手”參數 | 在意圖基本信息配置中完成參數定義 |
模板中只有可選部分 | [我想聽][${歌手}][的歌] | 模板內容全是可選部分,意味著用戶不輸入也能匹配到這個模板,不是符合模板的配置 | 我想聽[${歌手}][的歌] 模板中包含“我想聽”這種非可選部分 |
意圖管理
對話工廠內定義的意圖可以在意圖管理中進行設置
編輯:編輯意圖的基本信息,包括意圖名稱、意圖別名、創建全局槽位(注意:意圖名稱是定義意圖的信息,意圖使用后不建議修改意圖名稱)。
發布:將意圖的配置發布到線上環境(發布對話機器人的時候,會同步發布意圖;只有單獨修改問法配置的時候可使用此發布功能)。
導出:支持單個意圖導出,批量導出和全量導出。導入意圖包括意圖的基本信息,意圖的問法配置。基本信息不推薦在導出文件中編輯修改,問法配置可以在導入文件中增加。
導入:支持導入意圖。導入意圖可以新增意圖和新增意圖問法。
下線:支持對已發布的意圖做下線操作。
搜索:可以使用意圖名稱檢索機器人內的意圖。