设为首页 - 加入收藏
广告 1000x90
您的当前位置:黄大仙www78345 > 交互主体 > 正文

智能语音平台:技能搭建与多轮交互

来源:未知 编辑:admin 时间:2019-06-07

  通过本文内容,你将了解在搭建智能语音平台的过程中,如何搭建一个技能以及支持不同的意图,他们的本质和边界是什么?

  ASR(Automatic Speech Recognition):接收音频返回字符串,可以根据不同的场景模式来定制ASR,比如智能冰箱语音ASR要更多的优化菜品种类等相关词语的识别,车载语音ASR就要更加关注有声内容的识别以及控制相关的词语识别。

  例如:冰箱食材管控技能,说法“枣吃完了”,但是误识别成了“早吃完了”,就需要针对食物种类识别进行加强优化。

  例如:“枣吃完了”,“枣”就代表食物种类,“吃完了”就代表食物数量为0。

  DM(Dialog Management):为对话系统的主体,控制着对话的架构和结构,从ASR/NLU组件接受输入,维护一些状态,与任务管理器(知识库)交互,并将输出传递给NLG/TTS模块。

  例如:“枣吃完了”,首先需要把冰箱里面的枣的数量置为0,“再去苏宁小店买2斤”,然后依据上文的输出以及本轮的输入去补全词槽,根据上文的食物种类“枣”,然后提取“苏宁小店”,“2斤”,“买”结合起来自动在苏宁小店购买2斤枣,这就是DM需要完成的事情。

  意图:用户的每一轮对话,都可以认为是一个意图,如“北京市今天天气怎么样”就对应着意图【查询天气】。

  语意槽:即从用户说法中提取出的关键字,如“我要去上海”,语意槽就是#地址#,取值“上海”。

  语音输入怎么触发意图,把相关的意图说法尽可能对应上设定的意图,把不相关的说法阻挡,本质上就是一个边界问题。

  句式B:有两个必要信息,“去”,“旅游”;非必要信息“上海”“明天”(为什么明天和上海相比另外两个信息而言是非必要呢?因为没了非必要信息,两个必要信息也能明白意图,但是没了两个必要信息的其中一个,就不能理解意图)。

  句式C:有两个必要信息,“去”,“旅游”;非必要信息“明天”,“北京”,“上海”。

  如果你单说旅游的话,可能有旅游杂志,旅游景点,旅游指南等多种意图,但是如果你加上了“去”,那就代表你想去旅游,是一个出行计划类意图。

  如果你单说去的话,可能有去吃饭,去购物,去旅游等多种意图,但是如果你加上了“旅游”,那就代表你想去旅游,是一个出行计划类意图。

  触发了去旅游的意图后,需要有出发地点、目的地,以及时间等必填参数才能完成服务,所以“目的地”“出发地”“时间”成为意图的两个“必填槽位”。

  我们可以总结如下,一句话的信息可以按照“信息类型”和“必要要素”来划分:

  所以,在配置意图句式的模块,对于是否触发意图这个边界而言,“必要要素”是可以不含有解析框架中的任何槽位的,但是必须包含必要意图信息。

  但是,对于一条完整的意图句式,一定要包含必要意图和必要槽位两个信息,必要槽位的信息可以有默认设置。

  这样我们就可以得出一个结论:在一个句式中,我们把必要意图信息按照顺序排列好的基础边界句式,只要符合这个边界的句式,全部可以匹配到这个意图。

  后续的工作就是把一些“非必要信息”配置上去以覆盖更多的句式,比如必要意图信息“去”“旅游”,非必要意图信息“上海”,“明天”,就可以组成句式如:

  在原有必要要素组成的基础句式基础上面,我们可以增加非必要要素的配置、排列组合和词库等,衣服和这个边界的更多句式。

  线性多轮解决问题得边界,是在一个意图的对话中,命中了必要意图信息,但是触发之后,却缺失了意图所请求服务必要要素(必填槽位信息)。

  “必填槽位信息”是已经事先被定义好的,线性多轮的存在位置,就是为了弥补这个缺失。

  当触发到必要意图的时候,但是没有必填槽位,就反馈寻找必填槽位信息,如果接下来的输入是所需要的必填槽位,就请求服务,如果对应不上必填槽位信息,就正常执行即可。

  周末无聊,你想看黄渤主演的综艺节目来打发无聊时光,这时候你就可以跟女朋友说:“你给我找找综艺节目。”

  然后,女朋友兴高采烈的给你搜罗着各类综艺,问你:“你想看搞笑的?智力的?还是什么?”

  这时候,女朋友就给你找出了黄渤参与的综艺类节目。然后,我们把对话置于智能语音助手上面就得出如下情况:

  通过以上的例子,我们可以得出:在用户第一轮对话后,我们可以知道了用户的意图(看综艺)。第二轮给出主演人的非必填槽位,那么在看综艺的这个意图上面是可以增加主演人的非必填槽位的,我们就可以去补充上意图的槽位,去相应用户的需求。

  边界:需要联系上文的意图,如果接下来对话涉及到的槽位信息可以替换或补充上文的槽位,就可以获得用户的完整意图信息。

  意图中的哪些槽位是可以改变的?比如:我想看综艺,也可以是我想看黄渤的综艺,又或者是我想看黄渤最新的综艺。

  哪些意图是可以做槽位改变的?比如:我想看综艺就可以有槽位的改变,我想去旅行对目的地,出发地的槽位进行改变,但是播控等一些简单基础意图就不需要了。比如:播放,声音大一点等都是单独执行的命令,没有必要增加其他的槽位信息。

  假如你想带你的女朋友去北京旅游,为了向女朋友展示你的体贴和细致,你想提前制定一下旅游计划,比如:你在大众点评筛选地点北京,人数2人,类别吃饭,然后给你推荐了许多吃饭地点。

  如果这时候你点击类别的景点,他就会为你筛选出来适合2个人在北京旅游的景点,这时候你不用再去输入北京和人数了。

  我们来看一下我们这两次的对话,第一个需求是吃饭的地点,第二个需求是旅游景点,很显然是不同的意图表达,但是地点北京和人数都是一致的,也就是说槽位信息是一样的。

  假如你第二轮对话把“那旅游景点有哪些呢?”改成“那明天呢?”,如果把“北京”,“2人”和“那明天呢”组合在一起,是不能构成完整的信息表达的。

  “跨意图非线性多轮”问题的边界:联系上文,上一个意图的槽位信息可以为下一个意图所用,才能获得用户完整意图信息。

  现在普遍的实现,失去配置一个意图的“输入前置语境”和“输出语境”,来限定某个意图在第二轮的触发。

  比如:在“查饭店”这个场景中,两个intent分别为“查饭店”和“查景点”。那么,在“查景点”这个跨意图的配置中,前置输入语境条件就是“查饭店”这个intent,触发“查景点”这个意图的必要要素就是“旅游景点”这四个字,然后槽位就是继承自“查饭店”的槽位。“旅游景点”的前置输入语境条件也可以是“查酒店”“查出行方式”等其他可以继承使用的槽位的意图。

  可以得知:如果我们在第一轮交互的时候,如果用户仅仅问“那旅游景点有哪些呢?”要么就不会出发意图,要么就是需要“线性多轮”或其他方式去补充必填槽位。而通过“跨意图非线性多轮”的配置,在符合前置语境的条件的情况下,是可以匹配上“查景点”这个意图,并且可以通过上文的槽位继承的方式形成“完整用户意图”去请求后续的服务。

本文链接:http://apkhealth.com/jiaohuzhuti/292.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top