梳理|对话系统中的DST

欢迎直接到我的博客查看最近文章:www.pkudodo.com。更新会比较快,评论回复我也能比较快看见,排版也会更好一点。

原始blog链接:   http://www.pkudodo.com/2019/06/09/1-12/

 

最近看了任务型对话中的SLU和DST部分,感觉里面方法结构很多,论文看多了以后脑袋就乱了。所以写篇文章给自己梳理一下,这篇文章先写DST部分,其他部分以后会再更新出来。

也正是因为这样,所以这篇文章的正确性还有待考究。有很大可能性会在未来的某个时间对文章的内容做一些修改。大家看一看就好了。

 

chatbot对话类型

chatbot对话分为任务型、闲聊型、推荐型、知识问答型。这里讨论一下任务型和闲聊型。

任务型:以小米的小爱同学为例,通常负责为用户执行任务,例如订票、查阅信息、控制家电等。这类任务需要维护一个系统状态,知晓当前用户的意图、完成任务还需要的信息等,最后确定用户实际任务需求并执行灯舞。

闲聊型:以微软的小冰为例,通常在开放域环境下聊天,即没有特定的领域、任务,满足用户的情感交流需要。

 

任务型对话

任务型对话的处理方式有pipeline和端到端两种结构,pipeline定义了数个模块,以一条line的形式串联起来共同完成一个任务,如下图所示。端到端的代表为memory network,至于这块我还没有看相关论文,因此不作展开。

 

pipline模块

其核心模块组成是NLU->DM->NLG,先通俗来讲,NLU负责对用户输入进行理解,随后进入DM模块,负责系统状态的追踪以及对话策略的学习,控制系统的下一步动作,而NLG则配合系统将要采取的动作生成合适的对话反馈给用户。

其中若用户的输入是语音形式,则在NLU的输入前需再添加一个ASR语音识别模块,负责将语音信号转换为文本信号。DM对话管理器内部又可分为DST(对话状态追踪)和DPL(对话策略学习),DST(对话状态追踪)根据用户每一轮的输入更新当前的系统状态,而DPL则根据当前的系统状态决定下一步采取何种动作。NLG将语言生成后,若用户采用语音交互方式,则还需要TTS(语音合成)模块将文本转换为语音。

 

pipline工作原理直观理解

ASR:这部分在论文中大部分都是一笔带过,因为它的任务比较单一,只负责将语音转换为文本信号。不过值得一提的是,有些论文提起ASR的输入并不是唯一的,因为语音识别可能会存在一定错误,因此一般会输出多个可能的句子,每个句子同时附带一个置信度,表示这个句子正确的概率。这种方式在论文中被称为N-best,及前N个最有可能的句子。

NLU:语言理解模块,用户语音转文本后称为用户Utterance,NLU负责对用户Utterance进行领域/意图分类及槽值对填充。其中领域和意图分类是为了让系统明白用户的对话所处领域及意图,方便后续调用相应的model去识别(并不是一个model跑遍所有的领域意图,就好像树一样,根据领域/意图的分类,在树中找到对应的model。当然model结构可能是一样的,不同的是训练采用的数据是对应领域/意图的)。完成一个任务需要去弄清楚一些条件,比如说点一杯咖啡,根据领域/意图分类,系统判断用户的意图是点咖啡,此时系统需要弄明白是什么咖啡,甜度怎么样等等。所以会检索点咖啡所需要的槽值对,这个时候后台检索发现完成这个任务需要弄明白{咖啡类型=?,甜度=?}(其中咖啡类型和甜度被称为槽(slot)),这个时候系统会反馈回去问用户咖啡类型是什么?甜度是多少?用户反馈后,NLU再对用户Utterance内容进行识别,发现咖啡类型是摩卡,即槽“咖啡类型”的值(value)为“摩卡”,这个过程被称为槽填充。同时这个过程也很容易被人联想到命名实体识别这一方法。当然了,考虑到系统的准确率,

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值