任务式对话中的自然语言理解

2020-10-21 14:26:27 浏览数 (1)

作者 | 沈磊,vivo算法工程师

整理 | DataFunTalk

导读:随着人工智能技术的发展,智能对话的应用场景越来越多,目前已经成为了研究的热点。天猫精灵,小度小度,腾讯叮当,这些智能助手都是智能对话在业界的应用。智能助手的对话方式可分为三种:任务式对话 ( 用户输入指令,智能助手执行指令任务 ),问答式对话 ( 用户输入问题,智能助手回复答案 ),闲聊式对话。那么智能助手如何理解用户的指令,最终完成指令任务呢?任务型语音对话的处理流程主要包括:语音识别,自然语言理解,对话管理、对话生成,语音合成 ( 图1 )。要理解用户的指令,就需要对用户输入进行自然语言理解,也就是对转换为文本的用户输入进行分析,得到用户的意图和关键信息。在图1中,这一部分由绿色虚线圈出,主要包括领域 ( domain )、意图 ( intent ) 和槽 ( slot ) 的预测。本文主要介绍这一部分,即领域识别、意图识别和槽抽取的主流方法和研究进展。

图1 任务型对话处理流程

领域识别、意图识别和槽抽取具体指什么?我们来举例说明。例如,用户说:"我想听蔡徐坤的情人",系统需要识别出这句话是属于音乐领域,用户的意图是"播放",句子中的槽 ( 关键信息 ) 是"歌手:蔡徐坤"和"歌曲:情人"。这样才能去资源库找到资源 ( 歌曲"蔡徐坤-情人" ) 然后执行"播放"动作。这个例子很简单,但实际情况比较复杂。由于语言本身的特性,任务式对话系统中的自然语言理解有很多难点。

01

自然语言理解的难点

1. 语言的复杂性

语言本身很复杂,虽然有很多语法去描述,但语言不是只用语法就可以描述完全的。比如用户输入:"这首歌太难听了我想听世界上最最最好听的","你为什么找了一首哈狗帮的歌我要听bigbang的歌","播放风吹麦浪我不好安慰一下",这些输入的主要意图只是句子的一部分。

2. 语言的随意性

不同于书面用语,用户的说法很口语化,有时不符合语法,比如有播放意图的,"有没有什么故事给我听",或者控制类的,"别讲了"。

3. 语言的鲁棒性

在语音识别的过程中会产生错字,自然语言理解模块需要对这些错字有容错和纠错的能力。如"我想听葫芦娃十集"识别成了"我想听葫芦娃石级",自然语言理解模块需要能够对内容进行抽取和纠正。

4. 语言的歧义性

有时,用户输入还会有歧义性。比如,用户输入"关闭放华晨宇的山海",用户到底是想关闭还是播放,这里存在歧义。

因此,任务式对话系统中的自然语言理解,面临很大的挑战。下面对自然语言理解的主流方法和研究进展进行介绍。

02

规则方法

自然语言理解使用的算法可分为规则方法和机器学习方法。

意图判断和槽抽取的规则方法有FST算法、trie树等。其主要流程是:首先进行模板配置,当接收到输入的句子时,将其在已经配置的模板中进行匹配,匹配到的模板信息作为意图和槽返回。

例如,针对"开空调"这个意图,可以做如下的配置 ( 此处可把模板简单地理解为正则表达式 ):

(请|帮我)(打开|启动)(这个|那个)?(空调|电视机|音箱)(啊|吧)?

模板可能展开的路径如图:

图2 模板展开路径

假设用户输入为:"帮我打开空调",那么匹配路径如图3中红色箭头所示:

图3 模板匹配示例

规则方法首先要配置模板 ( pattern ),因此其覆盖度和准确度依赖于模板配置的质量。配置模板这一特性,同时造就了规则方法的优点和缺点。规则方法的优点是配置可及时更新,如果需要增加支持的模板,只需要在系统内加入相应的配置即可。缺点是模板质量较差的话会影响规则方法的效果,同时日积月累之后,形成的大量模板会增加维护成本。

规则方法可以覆盖大部分用户说法,但是无法覆盖长尾的用户输入。而对于前面提到的几个语言理解的问题,如问题1.1语言的复杂性和问题1.2语言的随意性,规则方法可以通过配置更复杂的模板和更灵活的模板来解决部分问题,但也可能引入误召回。

而机器学习的方法不需要配置模板,只要有足够的标注数据,就可以进行学习。

03

机器学习的方法

1. 传统机器学习的方法

深度学习出现之前,使用传统机器学习的方法处理用户意图和关键信息。机器学习方法将槽的预测定义为标签序列预测问题,见图4。例如句子"我想听蔡徐坤的情人",每个字对应的标签如表1所示。

较为典型的一种方法是使用SVM对意图进行多分类,对每个字进行槽的多分类。预测意图输入的特征是句子的人工特征,预测槽输入的特征是当前字及其周围的文本特征。

表1 槽标签 ( B: beginning,M: middle,E: end )

图4 自然语言理解的SVM模型

这种方法较为依赖人工特征的质量,而人工提取的特征很难将有效特征覆盖完全。

2. 深度学习模型

近年来,随着深度学习的发展,出现了使用深度学习进行自然语言理解的方法。深度学习方法改用词向量作为输入特征,这种利用大规模语料自动学习出来的词向量,实践证明比人工特征效果更好。领域分类和意图分类较为类似,可以使用CNN模型。槽标签序列预测这种序列建模问题,可以使用RNN,LSTM等序列模型,见图5。

图5 自然语言理解的深度学习模型

使用神经网络 ( 如LSTM ) 预测的槽标签,有时会有前后不连贯的现象,如预测序列为"O B-singer I-song O"。所以通常会在神经网络之后加上CRF架构,CRF可以对标签的前后连接关系进行建模,所以加上CRF之后能避免标签不连贯的现象,从而提高预测的准确率。

机器学习的方法,可以在一定程度上解决之前提出的语言理解的前三个问题,可以从复杂和口语化的语句中提取出意图和关键信息,也有一定的容错能力。

图5所示的深度学习架构,存在一个问题,即,由于领域分类、意图分类和槽抽取这三个任务是顺序的关系,整体累积的错误会越来越大。假设每个模型的正确率都是0.9,整体流程的正确率会远小于0.9。因此,研究人员提出了意图分类和槽抽取联合模型。

3. 联合模型

联合模型对于意图分类和槽抽取任务进行联合训练和联合测试,这样在训练中,一个任务可以用到另一个任务的信息,从而提高整体预测的准确率。在联合模型中,仍然将意图看作多分类任务,槽抽取看作标签序列预测。输入句子经过神经网络,得到表征句子的向量序列,可以将这个向量序列输入分类层进行槽标签预测,同时可以对向量序列进行pooling操作,得到表征意图的向量,再输入分类层进行意图预测。神经网络可以使用CNN,RNN、LSTM或者transformer,如图6所示。

图6 领域分类、意图分类和槽抽取的联合模型

上面的模型将领域、意图看作多分类任务,槽抽取看作标签序列预测。还有一些模型将槽抽取看作标签序列预测,而领域和意图作为序列最后的标签进行预测。

假设w0, w1, w2,…, wn-1是句子的输入序列,y1, y2,…, yn-1是要预测的标签序列,而最后一个输入wn为"EOS" ( 结束符 ),对应的输出是"d_i",即意图和领域相结合的标签。

图7 领域分类、意图分类和槽抽取的联合模型,将领域和意图作为预测序列的一部分

联合模型还有一些变体,认为intent向量 ( intent向量指表征句子意图的向量,是意图分类层的输入 ) 和slot向量 ( slot向量指表征slot的向量,是slot分类层的输入 ) 之间可以有更多的交互。因此会在得到的slot向量中加入intent向量,形成新的slot向量,然后对其进行槽标签分类。同理,在得到的intent向量中加入slot向量,形成新的intent向量,然后再对其进行意图分类。这样会更好地将两个任务的信息进行交互,提升模型预测能力。

图8 联合模型变体

04

总结

目前工业界的主流方法是规则 模型。规则方法开发相对简单,可以快速覆盖大部分用户输入;模型方法通过标注数据和训练模型,可以在规则方法的基础上解决长尾输入。而对于文章开头提到的几个难点:语言的复杂性,规则系统可以通过配置模板解决部分问题,统计模型也可以将其中主要的意图和槽抽取出来;对于语言的随意性,规则系统可以通过配置解决部分问题,统计模型也可以接受一定程度上的随意输入;对于语言的鲁棒性,目前统计模型有一定的容错能力;对于语言的歧义性,规则和模型都无法很好地解决,即使由人来判定,也不能准确地判定用户的意图,这时就需要借助更多的信息,如用户的多轮交互信息来解决。总之,目前的任务型对话系统的自然语言理解,还存在很多未解的问题,未来需要我们更多的研究和探索,去更好地理解用户的输入内容。

05

参考资料

1. Xiaojie Wang, Caixia Yuan, Recent Advances on Human-Computer Dialogue, CAAI Transactions on Intelligence Technology, Volume 1, Issue 4, 2016, Pages 303-312.

2. Horvitz, E., & Paek, T.(1999). A computational architecture for conversation. Courses and Lectures International.

3. Jeong M, Lee G G. Jointly predicting dialog act and named entity for spoken language understanding[C]//Spoken Language Technology Workshop, 2006. IEEE. IEEE, 2006: 66-69.

4. Henderson M, Gašić M, Thomson B, et al. Discriminative spoken language understanding using word confusion networks[C]// Spoken Language Technology Workshop. IEEE, 2012:176-181.

5. Xu P, Sarikaya R. Joint intent detection and slot filling using convolutional neural networks[C]//Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing. 2014.

6. Mesnil G, Dauphin Y, Yao K, et al. Using recurrent neural networks for slot filling in spoken language understanding[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2015, 23(3): 530-539.

7. Liu C, Xu P, Sarikaya R. Deep contextual language understanding in spoken dialogue systems[C]//Sixteenth annual conference of the international speech communication association. 2015.

8. Liu, B., & Lane, I. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. Interspeech2016a.

9. Liu B, Lane I. Joint online spoken language understanding and language modeling with recurrent neural networks[J]. arXiv preprint arXiv:1609.01462, 2016b.

10. Bing Liu and Ian Lane. 2015. Recurrent neural network structured output prediction for spoken language understanding. In Proc. NIPS Workshop on Machine Learning for Spoken Language Understanding and Interactions.

11. Raymond, Christian, and Giuseppe Riccardi. "Generative and discriminative algorithms for spoken language understanding." Eighth Annual Conference of the International Speech Communication Association. 2007.

12. Chen Y N, Hakkani-Tür D, Tür G, et al. End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding[C]//INTERSPEECH. 2016: 3245-3249.

13. Hakkani-Tür D, Tür G, Celikyilmaz A, et al. Multi-Domain Joint Semantic Frame Parsing Using Bi-Directional RNN-LSTM[C]//Interspeech. 2016: 715-719.

14. Shi Y, Yao K, Chen H, et al. Contextual spoken language understanding using recurrent neural networks[C]//Acoustics, Speech and Signal Processing (ICASSP), 2015 IEEE International Conference on. IEEE, 2015: 5271-5275.

15. Guo D, Tur G, Yih W, et al. Joint semantic utterance classification and slot filling with recursive neural networks[C]//Spoken Language Technology Workshop (SLT), 2014 IEEE. IEEE, 2014: 554-559.

16. Yu S, Shen L, Zhu P C, Chen J S. ACJIS: A Novel Attentive Cross Approach For Joint Intent Detection And Slot Filling. IJCNN 2018: 1-7.

17. 自然语言理解-从规则到深度学习,http://www.sohu.com/a/164124053_729525

今天的分享就到这里,谢谢大家。

作者介绍:

沈磊,vivo公司北京AI研究院AI算法工程师,主要方向为自然语言理解和自动问答。目前主要负责基于知识图谱的问答开发工作。

0 人点赞