想了解任务型对话机器人,我们先从自然语言理解聊起
摘要:本文中主要介绍对话系统中的自然语言理解模块(NLU),NLU是对话系统中非常重要的一个模块,主要包括意图识别和槽位填充。
一、引言
随着移动互联网和智能终端的快速发展,任务型对话机器人的应用越来越广泛。任何一款成熟的对话机器人产品都离不开任务型对话系统。目前,对于任务型对话系统工业界主流的做法都是采用一套较为固定的pipline方式实现。具体的流程图如下:
整个pipline由三大模块组成:自然语言理解(NLU);对话管理(DM);自然语言生成(NLG)。现在越来越多的产品还融入了知识库,主要是在对话管理模块引入。在这里自然语言理解、对话管理、自然语言生成都属于自然语言处理技术。在语音会话时,会在输入和输出端加上语音识别(ASR)和语音合成(TTS)。自然语言理解(NLU):主要作用是对用户输入的句子或者语音识别的结果进行处理,提取用户的对话意图以及用户所传递的信息。
对话管理(DM):对话管理分为两个子模块,对话状态追踪(DST)和对话策略学习(DPL),其主要作用是根据NLU的结果来更新系统的状态,并生成相应的系统动作。
自然语言生成(NLG):将DM输出的系统动作文本化,用文本的形式将系统的动作表达出来。
以上每个模块在学术界都对应着一个研究领域,本文中主要介绍对话系统中的自然语言理解模块(NLU),NLU是对话系统中非常重要的一个模块,主要包括意图识别和槽位填充。下面将介绍意图识别和槽位填充的概念以及近几年用于意图识别和槽位填充的主流方法。
二、意图识别和槽位填充概念
(1)意图识别
意图识别,顾名思义就是判断用户要做什么,比如一个用户向机器人问了一个问题,于是机器人就需要判断这个用户他问的是天气、是旅游还是问某部电影的信息呢?说到底意图识别就是一个文本分类的问题。既然对应文本分类,那么首先就需要将明确有哪几类意图,也就是说我们需要预先定义好意图的类别然后才能考虑意图识别的问题。那么如何定义意图类别呢,它不像情感分类任务那样,不管什么场景,都能划分成积极、消极和中立情感三分类;我们讲意图分类是需要将其置于特定的场景中来考虑的,不同应用场景就有不同的意图分类。比如在美团APP上,它把用户的搜索意图分为订外卖、订酒店、订旅游门票、订电影票、订机票等类别。
(2)槽位填充
理解一段文字的一种方法是标记出对句子有意义的词或记号。在自然语言处理领域,这个问题被称为语义槽填充问题。
在对话系统中,槽填充过程一般指从用户一句话中抽取出关键信息,将用户隐式的意图转化为显式的指令从而让计算机理解。语义槽一般用来表示用户的需求,如出发地、到达地、出发时间等信息,作为意图识别的关键字,是进行下一步对话的提示信息。
在对话系统中,填槽的意义有两个,一个是作为条件分支进行多轮对话,还有一个是作为信息补全更明确的表达出用户的意图。换言之,填槽不仅是补全用户意图的方式,而且前序槽位的填写还会起到指导后续信息补全走向的作用。
三、意图识别和槽位填充方法
关于意图识别和槽值填充既可以作为两个单独的任务处理,也可以联合处理。由于两个任务之间的存在较大的相关性(意图和槽值之间有相关性),因此联合建模的效果一般会更好。接下来我们将介绍一些相关的论文方法。
论文1:A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding
(1)概述
该文章为针对SLU(Spoken Language Understanding)的意图-槽填充联合模型,文章的出色之处在于提供了一个同时在文本分类和文本标记两个nlp基本任务中都取得卓越成绩的基于RNNs的联合模型。循环神经网络(RNNs),在文本分类任务中被证明可取得较好的结果。由于意图识别和槽填充有相当的联系,所以论文作者提出一个适合于两种任务的联合模型。
在文中,作者采用了RNNs的改进版门控循环神经网络(GRU),GRU具有随着时序学习每个词(token)的表征的特性,通过这个特性可以预测每个插槽,同时,一个max-pooling层可以捕捉句子的全局特征从而实现意图识别。GRU捕捉到的每个token的特征和max-pooling层捕捉的句子全局特征是被两个任务所共享的,譬如,假如一句话的意图是找到一个航班,那么他更有可能有出发以及目的城市,反之亦然。实验证明了联合模型比分开的每个模型效果都要更好一些。文章选用了United loss function作为策略,实验结果证明了该篇论文在两个任务中都取得了state-of-the-art的结果。
(2)模型结构
(3)定义损失
(4)模型结果
实验结果展示如下,第二列是每个方法使用的特征,其中,W,N和S分别代表单词、命名实体和语义特征,在CQUD数据集中,W代表每一个中文字特征表示。可以看到CRF的结果比SVM好,表明CRF更加适合序列标注任务。另外,RNN打败了CRF,因为RNN可以捕捉长依赖关系。而R-CRF模型结合了RNN和CRF模型的优点,可以模拟标签转移和得到整个序列的全局的优点。对于填槽任务来说,sentence simplification是最好的办法,它使用了依存分析来提取句中关键词。RecNN使用dl提取的语义信息,但是他的效果比sentence simplification更差,作者认为可能的原因是语料的规模不够大。总的来说,论文在ID和SF领域分别提升了1.59%和1.24%的准确率。
联合模型和分开的模型的对比:
论文2:Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
(1)概述
这篇文章主要介绍了使用Attention-Based RNN模型识别意图和槽填充(slot filling)。意图识别通常使用分类的方法将句子分为相应的意图种类。槽填充则可以看做是序列标注问题,即对于给定的句子中的每个词分别打上相应的标签。例如句子“first/class/fares/from/boston/to/denver.”,每个词对应的标签为”B-class_type/I-class_type/O/O/B-fromloc/B-toloc”。槽填充既可以用RNN模型也可以用encoder-dedoder 模型解决。即源输入是句子序列,目标输出则是标注序列,同时意图识别也可以用encoder-dedoder 模型解决。即源输入是句子序列,目标输出则是意图种类。但是对与槽填充来说,句子与相应的标签是一 一对应的,也就是说有“explicit alignment”。作者提出了两种模型,一种是将“alignment information”加入到encoder-dedoder 模型中,另一种就是将“alignment information”和”attention“加入到RNN模型中来解决槽填充和意图识别问题。
(2)联合模型
联合意图识别和槽位填充的基于注意力的RNN模型如下图所示:
在用于序列标记的双向RNN中,每个时间步的隐藏状态都携带整个序列的信息,但是信息可能会随着向前和向后传播而逐渐丢失。因此,在进行时槽位预测时,我们不仅希望在每个步骤中仅使用对齐的隐藏状态,还希望查看是否使用上下文向量为我们提供了任何其他支持信息,尤其是那些需要长期依赖的信息未被隐藏状态完全捕获。
在模型中,双向RNN(BiRNN)沿正向和反向读取源序列。文章中RNN采用了长短时记忆网络(LSTM)。插槽标签依赖关系在前向RNN中建模。类似于上述编码器-解码器体系结构中的编码器模块,每个步骤的隐藏状态是前向状态和后向状态的串联。每个隐藏状态都包含整个输入单词序列的信息,并重点关注单词周围的部分。然后将此隐藏状态与上下文向量组合以产生标签分布,其中上下文向量计算为RNN隐藏状态的加权平均值。
对于意图识别和槽填充的联合建模,文中采用双向RNN的隐藏状态来生成意图类分布。不加入注意力机制时,先对隐藏状态向量最大池化,然后输入到逻辑回归中来进行意图分类。加入注意力机制时,则取得隐藏状态向量加权平均值。
值得注意的是,与利用显式对齐输入的基于注意力的编码器/解码器模型相比,基于注意力的RNN模型具有更高的计算效率。在模型训练期间,编码器-解码器插槽填充模型两次读取输入序列,而基于注意力的RNN模型只读取一次输入序列。
(3)实验结果
表1显示了提出模型的槽填充F1分数。表2将槽填充模型性能与先前报告的结果进行了比较。
表3显示了文章提出的意图模型和先前方法之间的意图分类错误率。
表4显示了与先前报告的结果相比,在意图检测和槽填充方面的联合训练模型性能。
进一步验证联合训练模型的性能,文章将提出的模型应用于其他ATIS数据集,并通过10倍交叉验证对它们进行评估。编码器-解码器和基于注意力的RNN方法均取得了可喜的结果。
【参考】
[1] Zhang X, Wang H. A joint model of intent determination and slot filling for spoken language understanding[C]//IJCAI. 2016, 16: 2993-2999.
[2] Liu, B., & Lane, I. (2016). Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. Interspeech.
[3] https://www.jianshu.com/p/cec045c55175?utm_campaign=haruki
[4] https://zhuanlan.zhihu.com/p/92909762
本文分享自华为云社区《任务型对话机器人之自然语言理解(一)》,原文作者:小蜜蜂~ 。