需求是这样的:
打开APP里的导航模块(集成第三方),打开语音,说“我要去人民大学”,程序通过接口获取与人民大学匹配的列表。
这时候需求就来了,
1. 允许用户手动点击选择(很常见的功能,不做讨论)
2. 允许用户说 “第几个”,比如说第一个,则开启导航到中国人民大学,如果说第二个,则开启导航到人民大学地铁站。
3. 允许用户说出列表中的其中一个地点,比如说“地铁站”,则开启导航到人民大学地铁站,如果说东门,则开启导航到人民大学东门。
这样的功能百度地图其实已经实现,跟百度AI的PM大牛请教了一下,总结如下:
首先需要建立两个意图:
1. 导航意图,词槽为地点location
2. 选择意图,词槽为第几个。
当用户说出“我要去人民大学”,首先UNIT识别出导航的意图,找出location这个词槽值,调用第三方接口,获取与人民大学相似的列表数据,展现在客户端页面。
然后页面等待用户再次说话(可以给用户友好的语音提示,比如说,请选择第几个,或请说出您要到的具体位置),这时候就会有两种情况,
(一)用户说“选择第二个”,这时候,UNIT进行意图识别,识别出选择意图,然后把“第二个”这个值返回给客户端,客户端根据上一个意图的结果进行这次意图的选择。选中第二个,开启导航。
(二)用户说“我要去地铁站”,这时候,UNIT进行意图识别,再次识别出导航意图,把地铁站这个词槽的值返回给客户端,客户端需要做业务上的处理,把地铁站与上一个意图结果进行文本匹配,如果匹配上,就是用户所要去的地方,相当于(人民大学 + 地铁站),找到最终位置。
如果没有匹配上的话,则重新调用第三方列表接口,查询出列表,再次让用户选择,直到用户选中结果集的其中一个,否则,这个过程是循环往复的。
这样的好处是,用户想改变导航的目的地提供简单的解决方案,比如说用户第一次说“我要去人民大学”,可是他不想去了,想去北京大学,那只要继续说出“我要去北京大学” 即可。
这样的需求就需要定义多个意图同时完成,需要业务上进行特殊处理。
谢谢谢谢
关注了,期待更多更新
果然专业!
去现场确认了..unit发布到dueros的技能没有userid.小道说的3月份之前.哎.
这一篇你也看看,希望对你有所帮助
https://ai.baidu.com/forum/topic/show/497239
一直在关注导航,看了一些论文,感觉都不知道怎么实现,这方案不错
加油吧
谢谢各位
关注中
楼主威武,看好楼主,信楼主得永生
很棒的方案,填完词槽再加个确认,完美!
厉害~
导航技能的使用场景在音响上实现不了的,因为导航是一种动态场景。
从导航的例子扩展过来是因为搜索结果是列表,与打车、酒店或者票务类的重业务技能比较类似,在想这种形式该采取什么样的语音报告方式,以及报告的内容可以给用户带来更好的体验。
没有屏幕的导航总感觉怪怪的,看不到路线,看不到路况,看不到多条路线没法进行选择最优路线。
如果实在要在音响设备上做导航的话,我的建议是越简单越好,
1. 尽量提示用户一次把所有信息说完,尽量不要出现列表,比如说“我要去人民大学西门”
2. 如果出现列表,也进行简要的播报,比如人民大学列出了三条“人民大学(地铁站),人民大学(西门),人民大学(东门)”,那么播放内容应该是“请问您到人民大学 的 地铁站,西门,还是东门?”
3. 用户询问路况(语音提示路况),这个百度导航应该已经实现,可以参考。
第二个问题已经明确,谢谢!
关于第一个问题的话,我认为需要根据业务的使用场景来决定是否需要播报,当前的使用场景是在车载导航仪上,确实会有GUI界面的辅助。换一个场景,在音响上打车,这个时候跟用户说了目的地(比如说,人民大学)以后,出来一个目的地的搜索列表,这个时候用户没有打开手机进行GUI界面的辅助,此时需要通过语音信息的播报来完成目的地的选择,所以此处关于语音报告的内容及规则还是需要明确的。
我觉得是:
只说一句:为您找到如下结果(结果呈现在GUI界面上),请问选择第几个?
回答:第二个的时候,匹配第二条搜索结果(把第二条的结果填充到词槽),并开始导航。
你的第一个问题:我认为从产品的角度无需播报。因为等播报完,估计几十秒过去了,这是不可忍受的。
第二个问题:意图就是选择,词槽就是第几个。词槽值可以枚举出你业务里最大的数,比如你的列表就10个,那么设置十个值就可以了。
第一个,第二个。。。第十个,这样UNIT就能识别出你是选择的意图。把第几个返回给客户端,那么客户端需要做逻辑处理,选择当前列表中的第几个。
有个问题,在业务执行过程中:
1、语音报告搜索结果:搜索结果为导航列表(首页放10条结果),报告的方式是什么,逐条报告吗,还是语音只报告部分,剩下内容由GUI界面辅助呈现?报告的内容是多少,用户的短时记忆内容有限。
2、用户语音选择:如果是“人民大学+地铁站”,这种区别性很强的特征词,能让UNIT很好的识别。但是对于“第二个”这种比较模糊,如何能够做到精确的映射和匹配,这个地方的意图是怎么设置和处理的,保证后台能准确执行用户的选择。
就像我13楼说的.现在UNIT的资源API没有用户信息..所以有一些和Duer合一起用的方案不好解决.
如果直接说“我要回家”或者“我要去公司”,当前的解决方案主要为:在使用app的时候,会提醒用户设置家和公司的地址,这样说我要回家或者我要去公司,后台在用户中心将该类地址信息抽取出来,直接执行就好了。