需求是这样的:
打开APP里的导航模块(集成第三方),打开语音,说“我要去人民大学”,程序通过接口获取与人民大学匹配的列表。
这时候需求就来了,
1. 允许用户手动点击选择(很常见的功能,不做讨论)
2. 允许用户说 “第几个”,比如说第一个,则开启导航到中国人民大学,如果说第二个,则开启导航到人民大学地铁站。
3. 允许用户说出列表中的其中一个地点,比如说“地铁站”,则开启导航到人民大学地铁站,如果说东门,则开启导航到人民大学东门。
这样的功能百度地图其实已经实现,跟百度AI的PM大牛请教了一下,总结如下:
首先需要建立两个意图:
1. 导航意图,词槽为地点location
2. 选择意图,词槽为第几个。
当用户说出“我要去人民大学”,首先UNIT识别出导航的意图,找出location这个词槽值,调用第三方接口,获取与人民大学相似的列表数据,展现在客户端页面。
然后页面等待用户再次说话(可以给用户友好的语音提示,比如说,请选择第几个,或请说出您要到的具体位置),这时候就会有两种情况,
(一)用户说“选择第二个”,这时候,UNIT进行意图识别,识别出选择意图,然后把“第二个”这个值返回给客户端,客户端根据上一个意图的结果进行这次意图的选择。选中第二个,开启导航。
(二)用户说“我要去地铁站”,这时候,UNIT进行意图识别,再次识别出导航意图,把地铁站这个词槽的值返回给客户端,客户端需要做业务上的处理,把地铁站与上一个意图结果进行文本匹配,如果匹配上,就是用户所要去的地方,相当于(人民大学 + 地铁站),找到最终位置。
如果没有匹配上的话,则重新调用第三方列表接口,查询出列表,再次让用户选择,直到用户选中结果集的其中一个,否则,这个过程是循环往复的。
这样的好处是,用户想改变导航的目的地提供简单的解决方案,比如说用户第一次说“我要去人民大学”,可是他不想去了,想去北京大学,那只要继续说出“我要去北京大学” 即可。
这样的需求就需要定义多个意图同时完成,需要业务上进行特殊处理。
谢谢:)
很棒的方案,填完词槽再加个确认,完美!
哈哈。
楼主威武,看好楼主,信楼主得永生
特征词也很好用.但和这个逻辑区别不大.
还是希望资源API能更丰富点.能把意图词槽返回给DuerOS就好了.
能得到词槽其实怎么搞都好.现在因为我用的Dueros.那边没法得到返回的词槽..头痛.
肯定是要先预存家和公司位置的.UNIT是同步的.所以也不用身份识别.知道是家.然后去取自己的数据就行
另外还可以添加对话模板来定义“我要去公司”以及“我要回家”,加一个特征词,这样导航去公司,我想要去公司,去公司,等等,都可以识别。
谢谢谢谢。
我的分析,如果有误,请大家讨论纠正:
1. 像家和公司这样不固定的东东,肯定是要在APP里进行设置保存的。
2. 公司,家应该是词槽的值。
3. 我要回家/公司,首先UNIT能识别出导航的意图。
4. 意图识别出来了,那么客户端需要特殊的逻辑处理,查询客户端存储“家”的地址是哪里,然后开启导航
哈,整理的东西贴出来,给大家提供思路,也方便我以后翻阅,双赢嘛
可以可以 都是精品贴~哈哈
“请告诉我家在哪里 ”这种还是需要特殊标记的吧~
如果用户说"我要回家","我要去公司".这种怎么实现呢.讨论讨论.
我现在想的只有返回特殊的结果.然后自己处理.
可以可以,文章更新频率很高的蛮
关注公众号,大家有关于UNIT的问题,可以一起讨论哈
哈哈。其实还是百度AI比较牛而已
哇,好厉害!赞!