java意图_任务型对话(一)—— NLU/SLU(意图识别和槽值填充)

本文探讨任务型对话系统中的NLU(自然语言理解)模块,包括意图识别和槽值填充。通过实例说明意图和槽值的概念,并分析相关技术方案,如模型结构、损失函数和训练方法,涉及Bi-GRU、Attention机制和异步训练策略。
摘要由CSDN通过智能技术生成

1,概述

任务型对话系统越来越多的被应用到实际的场景中,例如siri,阿里小密这类的产品。通常任务型对话系统都是基于pipline的方式实现的,具体的流程图如下:

2f3b7ccd384f9b2a874afa701d9bbb61.png

整个pipline由五个模块组成:语音识别;自然语言理解;对话管理;自然语言生成;语音合成。现在越来越多的产品还融入了知识库,主要是在对话管理模块引入。在这里除了语音识别和语音合成模块不属于自然语言处理范畴且属于可选项之外,其他的三个模块都是必要的。

自然语言理解(NLU):主要作用是对用户输入的句子或者语音识别的结果进行处理,提取用户的对话意图以及用户所传递的信息。

对话管理(DM):对话管理分为两个子模块,对话状态追踪(DST)和对话策略学习(DPL),其主要作用是根据NLU的结果来更新系统的状态,并生成相应的系统动作。

自然语言生成(NLG):将DM输出的系统动作文本化,用文本的形式将系统的动作表达出来。

我们接下来将会详细讨论这四个模块(NLU,DST,DPL,NLG)。

2 意图识别和槽值填充

举一个简单的例子,以一个询问天气的任务型对话为例,根据专家知识,我们会预先定义该任务的意图和相应的槽,这句话该怎么理解呢?

比如用户输入:“今天深圳的天气怎么样?”,此时用户所表达的是查询天气,在这里我们可以认为查询天气就是一种意图,那具体查询哪里的天气,哪一天的天气?在这里用户也传递出了这些信息,(地点=深圳,日期=今天),而在这里地点和日期就是信息槽。

在一个任务型对话系统中会含有多种意图和槽值,对于意图识别来说本质上就是一个文本分类的任务,而对于槽值填充来说本质上是一个序列标注的任务(采用BIO的形式来标注)。

还是以“今天深圳的天气怎么样?”为例,在意图识别时用文本分类的方法将其分类到“询问天气”这个意图,而在做槽值填充时采用序列标注的方法可以将其标注为:

今            天          深                圳                的  天 气 怎 么  样

B_DATE  I_DATA  B_LOCATION  I_LOCATION  O  O  O  O  O  O

除了上述两个主要的内容,NLU中还会涉及到领域识别,语义消歧等。

3 相关技术方案

关于意图识别和槽值填充既可以作为两个单独的任务处理,也可以联合处理。由于两个任务之间的存在较大的相关性(意图和槽值之间有相关性),因此联合建模的效果一般会更好。接下来我们将介绍一些相关的论文:

论文一:A Joint Model of Intent Determination andSlot Filling for Spoken Language Understanding

先上论文的模型结构图,具体如下:

01f85ca37ea28103c8018fdab6746da6.png

1)模型结构

给定一个用户输入的句子$S = {w_1, w_2, ..., w_T}$,在这里$w_i$表示句子中第$i$个词,而$T$表示句子的长度。每个词使用词向量表示为$e(w_i)$,作者在这提出之前有相关工

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值