场景如下:
主人:帮我找一下附近的咖啡馆
小乐:找到多家咖啡馆,请选择第几个?
主人:帮我找一家有WiFi的
小乐:找到多家附近有WiFi的咖啡馆,请选择第几个?
主人:哪家是晚上9点后依然营业的?
小乐:找到多家附近的、有WiFi的、晚上9点后依然营业的咖啡馆,请选择第几个?
主人:请按评分排序
小乐:已经按评分排序,请选择第几个?
主人:第一个
小乐:电机咖啡馆,距你2公里。你是要导航过去,还是给那里打电话?
主人:导航过去
小乐:好的,即将为你导航到电机咖啡馆
看似很复杂,我们该怎么做呢?
1. 首先分析梳理业务
2. 找出对话中都有哪些意图?
3. 意图中包含哪些词槽?
业务就是导航去附近的某个地方,可以是附近的加油站,附近的餐厅,附近的咖啡厅或者是附近的厕所。
意图就是导航,目的地就是词槽,像这样的抽象的地方,系统并没有提供系统词槽,所以我们要 “自定义目的地” 词槽,
继续分析:文中提到有WIFI的咖啡厅,应该属于咖啡厅里的一项功能。所以再创建一个功能词槽:
“晚上九点后依然营业”:我们从中找出 “晚上九点后” 是一个时间词槽,时间词槽系统已经提供,直接使用即可。
我们自定义目的地的意图创建完成,包含三个词槽,
需求是不管是否选择了时间和功能,都是可以进行意图最终触发,所以我们的触发规则要这么定义:
这样就可以识别出用户的:有WiFi的、晚上9点后依然营业的咖啡馆。
不过用户还提到 “附近的” ,我们可以在后续对话模板里添加特征词来表示,也可以在上面添加一个词槽来表示。
我们往下继续分析:“请按评分排序”,我们需要创建一个排序的意图,词槽定义为user_sort,可以按评分排序,环境排序等等,看实际需求。
“选择第几个”,我们需要创建一个 “选择” 意图,并且枚举出用户将会说的第几个。一般手机页面显示十条就够了:
“你是要导航过去,还是给那里打电话?” :意图识别后,需要具体做什么?那我们再创建一个意图,“DO”,词槽值“导航,打电话”等等,后续可以根据业务自行添加
OK ,我们的意图总共是四个:
意图创建好了,我们可以去创建对话样本和对话模板然后进行训练了,尽量创建多的对话样本。
可以创建对话模板:
创建附近的特征词,
样本创建好了,开始训练吧。
一切准备就绪,开始验证:
完美
关注公众号,大家有关于UNIT的问题,可以一起讨论哈
是的是的,欢迎把你的场景也分享出来
感谢分享,扫盲了
这样看来,这个应用场景可以拓展到其他地方,很赞
这个思路不错,可以根据此场景举一反三。
注意:训练时,“闲聊负例样本” 要勾选,我忘记勾了。