口语理解(Spoken Language Understanding, SLU)[1]是口语对话系统中的关键组成部分。SLU根据说话者的意图利用自然语言查询提取语义成分, 即SLU包括意图检测和槽填充2个任务。这2个任务通常是分开处理的。
意图检测可以被看作语义层面的话语分类问题, 常采用支持向量机(Support Vector Machine, SVM)[2]和深度神经网络方法[3]解决这类问题。槽填充可以被视为序列标注任务, 可采用最大熵马尔可夫模型(Maximum Entropy Markov Model, MEMM)[4]、条件随机场(Conditional Random Field, CRF)[5]以及循环神经网络(Recurrent Neural Network, RNN)[6-8]完成这类任务。文献[9-10]提出意图检测和槽填充的联合模型, 用1个模型完整2个任务的训练和微调, 简化了SLU系统。
本文研究用词汇语义来标记单词, 即语义槽填充, 它是SLU的关键任务之一。例如, 在句子“Book a flight from Beijing to New York”中, “Beijing”应该被标记为出发城市, 而“New York”则应该被标记为到达城市。解决SLU中的语义槽填充问题的传统方法包括2类模型:生成模型和判别模型, 如隐马尔可夫模型(Hidden Markov Model, HMM)[11]和CRF[12-13]等。
近年来, 神经网络已经被应用在语义槽填充任务中。文献[14-15]利用RNN和长短期记忆神经网络(Long Short Term Memory, LSTM) [6]分析ATIS(Airline Travel Information System)数据库。同时, 词向量[16-18]将用于词表示的超高维稀疏向量投影到低维密集向量中, 已经被广泛应用于各种自然语言任务中。
标准ATIS[19-20]数据集具有以下特点:某些标签对应的样本较少, 导致预测效果较差; O标签较多, 分类器容易将不是O的标签标记为O标签。为此, 本文提出一种联合模型, 通过拆分标签来增加每个样本的监督信息。针对ATIS数据集样本稀少的问题, 增加预训练词向量, 引入外部语义信息并加以比较。
1 研究背景 1.1 SLU任务不同的SLU任务对应不同的语义表示形式。对于简单的SLU任务, 可以使用符合该任务语义结构的语义框架和语义槽直接建模输入。而对于较为复杂的SLU任务, 例如有很长短语的任务, 这种框架和语义槽方式就不再合适。IOB (Inside, Outside, Beginning)标注策略[21]用给定输入序列的状态序列标签来输出预测序列, 可以较好地解决这类问题。通常, 输出和输入序列已经对齐。在对齐中, 输入可以对应于空标签或单个标签。表 1为SLU任务中的IOB标注示例, 标注名称简短化, O表示对SLU任务无用的词, B表示短语开始, I为短语的延续。
![]() |
下载CSV 表 1 IOB标注示例 |
对于给定的一个长度为T的输入序列x1T、对应的输出标签序列y1T以及一个对齐A, 后验概率p近似于:
$ p\left( {y_1^T,x_1^T} \right) \approx \prod\limits_{t = 1}^T {p\left( {{y_t}\left| {x_{t - k}^{t + k}} \right.} \right)} $ | (1) |
其中, k为上下文窗口大小, t为对齐索引中的序数。
1.2 基于LSTM的SLURNN擅于处理序列问题。图 1为具有输入层x、隐藏层h和输出层y的RNN结构。LSTM与RNN相似, 只是隐藏层更新被专用记忆单元取代, 因此其可以更好地发现和利用序列中的长距离依赖关系[6]。与RNN[22-24]不同, LSTM使用具有线性激活功能的记忆单元来存储信息, 这在一定程度上避免了训练过程中梯度反向传播时发生的梯度爆炸和梯度消失问题。
![]() |
Download:
|
图 1 简单RNN结构 |
本文将LSTM应用于序列标注任务, 图 2为单个LSTM存储单元。
![]() |
Download:
|
图 2 LSTM单元内部结构 |
在序列标记任务中, 需要知道在预测时间点的过去和未来一段时间窗口内的信息, 本文采用双向LSTM(BiLSTM), 可以有效地利用过去的信息(通过前向隐层状态)和未来的信息(通过后向隐层状态), 并使用随时间反向传播的梯度下降算法BPTT训练网络, 如图 3所示。除了拼接所有时间步骤的前向和后向隐层状态之外, 还需要在序列的开头与结尾处进行特殊处理, 计算前向和后向LSTM网络隐层状态的方式与常规LSTM网络的方式一致。在编程实现BiLSTM算法时, 需要对整个句子做前向和后向计算, 并且需要在每个句子的前向/后向开始前将隐层状态重置为0, 通过批处理实现, 可以同时处理多个句子。
![]() |
Download:
|
图 3 BiLSTM结构 |
本文采用的ATIS数据集共包含5 871个句子, 句子中每个词都有一个标签, 标签类别共127种。在数据集中所有标签统计结果如图 4所示。
![]() |
Download:
|
图 4 ATIS数据集标签统计 |
从图 4可以看出, 数据集中的标签非常不平衡, 且分为3种形式:
1) 仅含有1种信息的标签, 即O标签。
2) 含有2种信息的标签, 如B-airline_name、I-round_trip等。
3) 含有3种信息的标签, 如B-fromloc.city_name、I-fromloc.city_name等。
因此, 本文提出一种采用标签拆分策略, 对3种形式的标签分别进行标签拆分:
1) 对于仅含有1种信息的标签, 即O标签, 拆分成“A”“NULL”“NULL”。
2) 对于含有2种信息的标签, 拆分成“A”“NULL”“C”。
3) 对于含有3种信息的标签, 拆分成“A”“B”“C”。
则127种标签分类问题转换成3次独立的分类问题:
1) 对于A类信息的分类, 是一个3类分类问题(B, I, O)。
2) 对于B类信息的分类, 是一个10类分类问题(fromloc, stoploc, arrive_date, arrive_time, depart_date, toloc, return_time, depart_time, return_date, NULL)。
3) 对于C类信息的分类, 是一个45类分类问题(day_number, round_trip, state_name等)。
在原来的分类问题中, O标签占了相当大的比重, 剩余的126个标签独立与O标签竞争, 通过拆分标签, 变成了B、I标签与O标签竞争, 缓解了数据不平衡。
2.2 联合模型上述拆分策略存在一个问题, 即在测试阶段, 可能出现3次独立分类的结果无法组合成一个有效的标签, 如“O-arrive_date”就不存在于原来的标签集合中。因此, 本文提出一种联合训练模型来解决这一问题。
BiLSTM模型对127种标签进行序列标注任务的过程如下:对于一个句子中的词, 其经过BiLSTM编码后的隐层状态为 h , 则特征 h 对当前词做127种分类的损失定义如下:
$ loss = - \sum\limits_{i = 0}^{126} {\left( {{y^{\left( i \right)}} \times \lg {{\hat y}^{\left( i \right)}}} \right)} $ | (2) |
$ \mathit{\boldsymbol{\hat y}} = \mathit{Softmax}\left( {\mathit{\boldsymbol{Wh}} + \mathit{\boldsymbol{b}}} \right) $ | (3) |
联合模型将拆分标签后的3次分类模型与原来的1次127种分类模型联合训练, 最终依然使用127种分类模型来预测, 其损失函数定义如下:
$ \begin{array}{l} L{\rm{oss}} = \alpha \times loss + {\alpha _1} \times los{s_1} + \\ \;\;\;\;\;\;\;\;\;\;{\alpha _2} \times los{s_2} + {\alpha _3} \times los{s_3} \end{array} $ | (4) |
$ los{s_1} = - \sum\limits_{i = 0}^2 {\left( {y_1^{\left( i \right)} \times \lg \hat y_1^{\left( i \right)}} \right)} $ | (5) |
$ {\mathit{\boldsymbol{\hat y}}_1} = \mathit{Softmax}\left( {{\mathit{\boldsymbol{W}}_1}\mathit{\boldsymbol{h}} + {\mathit{\boldsymbol{b}}_1}} \right) $ | (6) |
$ los{s_2} = - \sum\limits_{i = 0}^9 {\left( {y_2^{\left( i \right)} \times \lg \hat y_2^{\left( i \right)}} \right)} $ | (7) |
$ {{\mathit{\boldsymbol{\hat y}}}_2} = \mathit{Softmax}\left( {{\mathit{\boldsymbol{W}}_2}\mathit{\boldsymbol{h}} + {\mathit{\boldsymbol{b}}_2}} \right) $ | (8) |
$ los{s_3} = - \sum\limits_{i = 0}^{44} {\left( {y_3^{(i)} \times \lg \hat y_3^{(i)}} \right)} $ | (9) |
$ {\mathit{\boldsymbol{\hat y}}_3} = \mathit{Softmax}\left( {{\mathit{\boldsymbol{W}}_3}\mathit{\boldsymbol{h}} + {\mathit{\boldsymbol{b}}_3}} \right) $ | (10) |
其中, loss1、loss2、loss3分别表示3次独立分类的损失, α、α1、α2、α3用于调节各部分损失的权重, 且α+α1+α2+α3=1。
3 实验和结果分析 3.1 数据集和评价指标本文在SLU任务中的ATIS数据集上进行实验。数据集共包含5 871个句子, 切分成训练集(3 983个句子)、验证集(995个句子)和测试集(893个句子)。句子中每个词都有一个标签, 标签类别共127种。
本文采用的评价指标为F1值, 计算公式如下:
$ F1 = \frac{{2 \times \mathit{Precision} \times \mathit{Recall}}}{{\mathit{Precision} + \mathit{Recall}}} $ | (11) |
其中, Precision为准确率, Recall为召回率。
3.2 实验模型本文在ubuntu16.04LTS操作系统上基于tensorflow1.2搭建实验平台, 用于验证各种模型的有效性。其中, BiLSTM模型:前向和反向隐层节点数都设置为100, 随机初始化词嵌入维度为100;基于adam的批处理随机梯度下降算法优化模型:批大小为200, 学习率为0.02。此外, 为缓解过拟合问题, 本文引入dropout技术和L2正则化技术, dropout率为0.5, L2正则化系数为0.000 1。
由于ATIS数据集比较小, 因此若使用随机初始化词向量的方式, 将无法得到较好的词向量, 模型的分类性能也会受到影响。因此, 本文引入外部词嵌入以提升模型的分类性能:
1) BiLSTM+w2v300模型:在BiLSTM模型中添加谷歌word2vec预训练的词向量, 训练语料为谷歌新闻语料, 语料中包含约1 000亿个词, 预训练词嵌入词表大小为3 000 000, 维度为300。该模型首先在预训练词表中查找ATIS中的单词, 如果能够查找到, 则抽取其对应的词向量, 否则, 使用随机初始化方式生成词向量。
2) BiLSTM+glv300模型:在BiLSTM模型中添加Glove模型预训练的词向量, 训练语料来自互联网爬取, 语料中包含约420亿个词, 预训练词嵌入词表大小为1 917 494, 维度为300。该模型获取词向量方式与BiLSTM+w2v300模型相同。
3) BiLSTM+glv100模型:在BiLSTM模型中添加Glove模型预训练的词向量, 训练语料来自维基百科和千兆词, 语料中包含约60亿个词, 预训练词嵌入词表大小为400 000, 维度为100。该模型获取词向量方式与BiLSTM+w2v300模型相同。
3.3 结果分析实验结果如表 2所示, 其中, split代表引入标签拆分策略。
![]() |
下载CSV 表 2 不同模型F1值的对比 |
从表 2可以看出:
1) 通过比较BiLSTM和BiLSTM+glv100, 以及BiLSTM+split和BiLSTM+glv100+split, 结果表明引入外来预训练的词向量, 可以有效提高SLU的性能。这是因为模型通过外部词向量获取了外部语义信息。
2) 通过对比BiLSTM+w2v300、BiLSTM+glv300、BiLSTM, 发现BiLSTM的效果更好。这是因为嵌入的外来词向量维度较大, 导致模型参数过多, 从而产生副作用。
3) 通过比较BiLSTM和BiLSTM+split, 以及BiLSTM+glv100和BiLSTM+glv100+split, 结果表明拆分标签能明显提升SLU的性能。这是因为拆分标签的策略缓解了数据的不平衡。从联合模型的角度解释, 则是通过添加额外监督(3个独立的分类监督), 提升了原来的127种分类的效果。
BiLSTM和BiLSTM+split以及BiLSTM+glv100和BiLSTM+glv100+split测试集F1值随训练迭代轮数变化的曲线如图 5所示。如图 5(a)所示, 对比BiLSTM和BiLSTM+split的训练过程, 可以看到, 虽然两者曲线都有起伏, 但BiLSTM+split始终在BiLSTM曲线上方, 即达到相同的F1值, 前者需要更少的跌代轮数, 说明BiLSTM+split模型不光最终效果更好, 而且收敛更快, 不需要增加迭代轮数来提升效果。如图 5(b)所示, 对比BiLSTM+glv100和BiLSTM+glv100+split的训练过程, 发现BiLSTM+glv100+split始终在BiLSTM+glv100曲线上方, 前者在第10轮时F1值已经突破了94%, 而后者用了18轮才达到这一结果, 且前18轮两者差异明显, 进一步证明标签拆分策略能提升模型收敛速度。
![]() |
Download:
|
图 5 不同模型测试集F1值的变化 |
可以看到4个模型的F1值在上升期过后, 都有不同程度的波动甚至下降, 但是不论取哪一轮的测试结果, 经过标签拆分的模型都表现更好。
综合以上结论, 在BiLSTM和BiLSTM+glv100模型基础上引入标签拆分策略并联合训练模型可以提高模型收敛速度。
4 结束语本文提出一种标签拆分策略, 将1次127种标签分类转换成3次独立的分类, 并将其应用于BiLSTM, 组建联合模型。针对ATIS数据集资源较少的问题, 引入外部词嵌入以提升模型的分类性能。通过在ATIS数据集上进行对比实验, 结果表明, 标签拆分策略能有效提升模型收敛速度, 且模型通过外部词向量可获取外部语义信息, 提升模型的分类性能。下一步将引入注意力机制或CRF, 提升模型的分类性能。
[1] |
MORI R D, FREDERIC B, HAKKANI-TUR D, et al. Spoken language understanding[J]. IEEE Signal Processing Magazine, 2008, 25(3): 50-58. ( ![]() |
[2] |
HAFFNER P, TUR G, WRIGHT J H.Optimizing SVMs for complex call classification[C]//Proceedings of IEEE International Conference on Acoustics, Speech, and Signal Processing.Washington D.C., USA: IEEE Press, 2003: 632-635.
( ![]() |
[3] |
SARIKAYA R, HINTON G E, RAMABHADRAN B.Deep belief nets for natural language call-routing[C]//Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing.Washington D.C., USA: IEEE Press, 2011: 5680-5683.
( ![]() |
[4] |
MCCALLUM A, FREITAG D, PEREIRA F.Maximum entropy Markov models for information extraction and segmentation[C]//Proceedings of the 17th International Conference on Machine Learning.San Francisco, USA: Morgan Kaufmann Publishers Inc., 2000: 591-598.
( ![]() |
[5] |
RAYMOND C, RICCARDI G.Generative and discriminative algorithms for spoken language understanding[C]//Proceedings of International Speech Communication Association.Antwerp, Belgium: [s.n.], 2007: 1605-1608.
( ![]() |
[6] |
YAO Kaisheng, PENG Baolin, ZHANG Yu, et al.Spoken language understanding using long short-term memory neural networks[C]//Proceedings of Spoken Language Technology Workshop.Washington D.C., USA: IEEE Press, 2015: 189-194.
( ![]() |
[7] |
MESNIL G, DAUPHIN Y, YAO Kaisheng, 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. DOI:10.1109/TASLP.2014.2383614 ( ![]() |
[8] |
LIU Bing, LANE I.Recurrent neural network structured output prediction for spoken language understanding[C]//Proceedings of NIPS Workshop on Machine Learning for Spoken Language Understanding and Interactions.Montreal, Canada: [s.n.], 2015: 1-9.
( ![]() |
[9] |
GUO D, TUR G, YIH W T, et al.Joint semantic utterance classification and slot filling with recursive neural networks[C]//Proceedings of Spoken Language Technology Workshop.Washington D.C., USA: IEEE Press, 2015: 554-559.
( ![]() |
[10] |
XU Puyang, SARIKAYA R.Convolutional neural network based triangular CRF for joint intent detection and slot filling[C]//Proceedings of Automatic Speech Recognition and Understanding.Washington D.C., USA: IEEE Press, 2014: 78-83.
( ![]() |
[11] |
MINKER W, BENNACEF S, GAUVAIN J.A stochastic case frame approach for natural language understanding[C]//Proceedings of International Conference on Spoken Language.Washington D.C., USA: IEEE Press, 1996: 1013-1016.
( ![]() |
[12] |
RAYMOND C, RICCARDI G.Generative and discriminative algorithms for spoken language understanding[C]//Proceedings of International Speech Communication Association.Antwerp, Belgium: [s.n.], 2007: 1605-1608.
( ![]() |
[13] |
LAFFERTY J D, MCCALLUM A, PEREIRA F C N.Conditional random fields: probabilistic models for segmenting and labeling sequence data[C]//Proceedings of the 18th International Conference on Machine Learning.San Francisco, USA: Morgan Kaufmann Publishers Inc., 2001: 282-289.
( ![]() |
[14] |
MESNIL G, HE Xiaodong, DENG Li, et al.Investigation of recurrent-neural-network architectures and learning methods for spoken language understanding[C]//Proceedings of International Speech Communication Association.Lyon, France: [s.n.], 2013: 3771-3775.
( ![]() |
[15] |
KOLBOEK M, TAN Zhenghua, JENSEN J.Speech enhancement using long short-term memory based recurrent neural networks for noise robust speaker verification[C]//Proceedings of IEEE Spoken Language Technology Workshop.Washington D.C., USA: IEEE Press, 2016: 305-311.
( ![]() |
[16] |
BENGIO Y, DUCHARME R, VINCENT P, et al. A neural probabilistic language model[J]. Journal of Machine Learning Research, 2006, 3(6): 1137-1155. ( ![]() |
[17] |
吴旭康, 杨旭光, 陈园园, 等. 主题联合词向量模型[J]. 计算机工程, 2018, 44(2): 233-237. DOI:10.3969/j.issn.1000-3428.2018.02.040 ( ![]() |
[18] |
余冲, 李晶, 孙旭东, 等. 基于词嵌入与概率主题模型的社会媒体话题识别[J]. 计算机工程, 2017, 43(12): 184-191. DOI:10.3969/j.issn.1000-3428.2017.12.034 ( ![]() |
[19] |
HEMPHILL C T, GODFREY J J, DODDINGTON G R.The ATIS spoken language systems pilot corpus[C]//Proceedings of the Darpa Speech and Natural Language Workshop.Hidden Valley, USA: [s.n.], 1990: 96-101.
( ![]() |
[20] |
TUR G, HAKKANI-TUR D, HECK L.What is left to be understood in ATIS?[C]//Proceedings of Spoken Language Technology Workshop.Washington D.C., USA: IEEE Press, 2011: 19-24.
( ![]() |
[21] |
RAMSHAW L A, MARCUS M P. Text chunking using transformation-based learning[J]. Text Speech and Language Technology, 1995, 11: 82-94. ( ![]() |
[22] |
ELMAN J. Finding structure in time[J]. Cognitive Science, 1990, 14(2): 179-211. DOI:10.1207/s15516709cog1402_1 ( ![]() |
[23] |
PENG Baolin, YAO Kaisheng, JING Li, et al.Recurrent neural networks with external memory for spoken language understanding[C]//Proceeding of Natural Language Processing and Chinese Computing.Berlin, Germany: Springer, 2015: 25-35.
( ![]() |
[24] |
JORDAN M I. Serial order:A parallel distributed processing approach[J]. Advances in Psychology, 1997, 121: 471-495. DOI:10.1016/S0166-4115(97)80111-2 ( ![]() |