随着自然语言处理技术的快速发展, 问答系统已经成为人工智能的前沿领域[1], 例如小米公司的“小爱同学”、苹果公司的“Siri”, 它们能够为用户提供良好的人机交互体验. 相似度匹配[2]是问答系统抽取答案的重要途径之一, 抽取答案的准确性决定了一个问答系统的质量[3].
Kumar等[4]通过DMN (动态内存网络)构造了一个改进的问答系统, 该系统主要用于处理输入序列并进行训练. Wang等[5]提出了一种基于注意力机制的Bi-GRU-CapsNet模型, 该模型采用了一种新的“向量输入、输出”传递方案, 其中神经元的输入和输出是向量. Santos等[6]提出了一个具有特征权重的问题和答案的注意力集中双向注意力机制(Attentive pooling). Peters 等[7]提出了一种新的深层语境化单词表示方法ESIM + ELMo, 其中词向量是学习深度双向语言模型(biLM)内部状态的函数. Zhou等[8]提出了一种多视图响应选择模型(Multiview), 该模型集成了来自两个不同视图(单词序列视图和话语序列视图)的信息. 尽管上述方法注意力机制等方法提高了问答匹配的准确性, 但包含语义层次信息的相似度匹配和中文分词错误仍然没有解决.
根据实验研究, 本文针对问答系统中的上述问题提出一种基于正负样本和Bi-LSTM[9]的文本相似度匹配模型(PN-Bi-LSTM), 该模型不仅解决了包含语义层次信息的相似度匹配和中文分词错误造成的问题, 还提高了中文问答系统问答匹配的准确性.
1 模型框架为了最大化问题与正确答案之间的相似度, 并且与错误答案之间的相似度最小, 构建的数据集中, 问答对存在的形式如表1所示.
Q是一个问题陈述, A+是正确答案, A−是错误答案. 通过神经网络计算每个句子的特征, 然后输出问题和答案之间的相似度差. 目标函数是保证相似区间最大. 当用户输入问题时, 系统将输出最合适的答案. 本文采用正负答案样本训练神经网络模型, 模型输入是问题和正负答案样本的代表向量. 我们需要截断或补充问答语句, 使句子长度一致并用于神经网络的训练.
问答系统中的句子分词错误会对实验结果产生很大的影响, 使用双层嵌入向量[10]表示方法, 可以有效地减少分词引起的实验误差.
另外, 在提取句子特征之前, 我们采用了内部注意力机制(IARNN)[11], 避免了特征的向后偏移力问题. 然后, 将注意机制处理的时间序列信息输入到Bi-LSTM模型中, 通过LSTM[12]选择序列特征.
在问答对匹配过程中, 对于给定的问题(Q)和答案池{a1, a2,…, am}(m是答案池中的答案数, 且至少包括一个正确答案), 则需要检索答案池中与问题(Q)相关的正确答案(an)(1≤n≤m). 因此需要计算Q与每个候选答案之间的相似度, 并将最相似的候选答案记录为最佳答案. 如果最佳答案恰好是在基本事实中, 则该问题的答案将被成功地检索出来, 并算做top-1准确率[13].
我们提出模型的总体框架如图1所示.
2 主要方法 2.1 双层嵌入向量表示
问答系统中的句子的向量表示是文本特征生成的重要步骤. 利用LSTM神经网络处理匹配任务时需要获得句子的向量表示, 而句子分词错误会对实验结果产生很大的影响, 因此采用双层嵌入向量模型表示方法, 可以有效地减少分词引起的实验误差. 双层嵌入向量模型如图2所示.
如图2所示, 在对所有的问答句子进行分词后, 通过Word2Vec[14]模型进行单词和字符向量训练, 得到所有单词和字符的训练模型. 利用单词嵌入和字符嵌入模型, 得到了字符向量和单词向量. 最后, 将句子中的字符向量和单词向量进行策略性组合, 得到每个句子的向量.
由于单词嵌入和字符嵌入长度不一致, 我们首先采用零向量来补充单词嵌入, 再加权单词和字符的向量表示, 改进模型的最终句子向量由Sen表示:
$Sen = \alpha * Se{n_{\rm {word}}} + \beta * Se{n_{\rm {character}}}$ | (1) |
其中,
句子中的单词之间可能存在协同效应, 这会降低测试集中模型的准确性. 由于RNN[15]注重时序性, 所以t时刻的神经网络模型包含了所有先前时刻的序列信息. 在RNN框架中加入注意力机制以获得更多的加权信息.
由于框架中包含了更多的前向信息, 因此会选择靠近句尾的文本特征, 从而导致特征向后偏移和权重偏差. 为了解决上述问题, 在特征提取之前, 采用内部注意力机制. 在计算句子时间信息方面过程时, 内部注意力机制结构如图3所示.
如图3所示, 在LSTM训练之前, 注意力机制提取了表示句子的
${\widetilde x_t} = {\alpha _t} * {x_t}$ | (2) |
其中,
${\alpha _t} = \sigma \left( {r_q^{\rm T}{M_{qi}}{x_t}} \right)$ | (3) |
其中,
2.3 Bi-LSTM神经网络模型
RNN是一种能够存储历史状态的时间序列网络结构. 然而, 由于梯度爆炸和梯度消失, 多层RNN在计算上下文信息时往往会受到限制. LSTM是RNN的一种变体, 主要解决RNN长距离梯度计算的问题. 在LSTM结构中, 隐藏层向量为
$\left\{ {\begin{array}{l} {i_t} = \sigma \left( {{W_i}x(t) + {U_i}(t - 1) + {b_i}} \right) \\ {f_t} = \sigma \left( {{W_f}x(t) + {U_f}(t - 1) + {b_f}} \right) \\ {o_t} = \sigma \left( {{W_o}x(t) + {U_o}(t - 1) + {b_o}} \right) \\ {\widetilde C_t} = \tanh \left( {{W_c}x(t) + {U_c}(t - 1) + {b_c}} \right) \\ {C_t} = {i_t} * {\widetilde C_t} + {f_t} * {C_{t - 1}} \\ {h_t} = {o_t} * \tanh \left( {{C_t}} \right) \\ \end{array}} \right.$ | (4) |
其中,
Bi-LSTM可以解决单向LSTM无法计算逆序上下文信息的问题. 将正向序列和反向序列组合以获得输出:
${r_t} = {\overrightarrow h _t}||{\overleftarrow h _t}$ | (5) |
其中,
训练后的神经网络模型能最大化问题与正确答案之间的相似度, 最小化问题与错误答案之间的相似度. 目标函数是使正样本和负样本之间的差异最大化. 其他问答系统一般只计算向量间的余弦相似度, 而不涉及语义层面的深度相似度计算, 这有相当大的局限性. 因此, 我们提出一种包含语义的相似度计算[16]来定义一个目标函数:
$L = \max \left\{ {0,M - {{Sim}}\left( {Q,{A^ + }} \right) + {{Sim}}\left( {Q,{A^ - }} \right)} \right\}$ | (6) |
其中, M为最大区间值, 取值为0.1, Sim为问答语句的语义和文本联合相似度计算方法, 定义如下:
${{Sim}}\left( {Q,A} \right) = {\theta _1} * {{Si}}{{{m}}_{\rm {semantic}}}\left( {Q,A} \right) + {\theta _2} * {{Si}}{{{m}}_{\rm {text}}}\left( {Q,A} \right)$ | (7) |
其中,
两行圆形分别表示问答语句, 每个圆形代表一个单词. 语义相似度计算方法解释为: 问句Q中有m个词向量, 分别是{q1, q2,…, qm}; 答案语句A中有n个词向量, 分别是{a1, a2,…, an}. 首先计算量q1和a1–an之间的余弦相似度, 记录q1和a1–an之间相似度最大的相似度值, 同理计算q2–qm和a1–an之间最大相似度值, 然后再计算问句Q中所有词向量的最大相似度值之和.
同理对于答案语句A, 计算出A中所有词向量最大相似度值之和, 最后将两个最大相似度相加除以两个句子的长度之和, 得到Q和A之间的语义相似度, 解释如下:
${{Si}}{{{m}}_{\rm {semantic}}} = \frac{{\displaystyle\sum\nolimits_{i = 1}^m {{Q_{\max }} + \displaystyle\sum\nolimits_{i = 1}^n {{A_{\max }}} } }}{{m + n}}$ | (8) |
式中,
$\begin{split} & {Q_{\max }} = Max\left( {\operatorname{cos} \left( {{q_i},{a_1}} \right),\cdots,\operatorname{cos} \left( {{q_i},{a_n}} \right)} \right) \\ & {A_{\max }} = Max\left( {\operatorname{cos} \left( {{q_1},{a_i}} \right),\cdots,\operatorname{cos} \left( {{q_m},{a_i}} \right)} \right) \\ & {{Sim} _{\rm {text}}}\left( {q,a} \right) = \operatorname{cos} \left( {q,a} \right) = \frac{{\left\| {q \cdot a} \right\|}}{{\left\| q \right\| \cdot \left\| a \right\|}} \\ \end{split} $ | (9) |
为了避免局部最优解的问题, 我们选择Adam作为优化器. 在Bi-LSTM层中, 我们添加Dropout[17]机制来避免过拟合问题.
3 实验及结果 3.1 实验数据集本文使用的数据集是公共数据集DuReader[18], 并提取了其中50000个问题样本和90563个答案样本. 问题陈述的平均长度为60个字符, 回答语句的平均长度为80个字符. 在整个答案库中, 每个问题平均有2个正确答案. 在训练集中, 我们选择4万个问题组成24万个训练样本, 其中4万个是正样本, 20万个是负样本, 每个问题有1个正样本和5个负样本. 正样本是一个问题和它的正确答案的配对. 负样本是一个问题和从90563个答案中随机抽取一个错误答案的配对. 在测试集中, 剩余的10000个问题被用来构建100万个样本, 其中1万个是正样本, 99万个是负样本, 每个问题有一个正样本和99个负样本. 我们将每个问题的答案池大小设置为100, 并根据每个答案池记录top-1的准确率. 我们采用top-k准确率和训练、测试集的损失作为模型的评价标准.
3.2 实验设置本文提出的模型是用Python语言和TensorFlow[19]神经网络框架实现的. 使用Jieba和Gensim工具进行分词和词向量预训练. 单词向量预训练窗口设置为5, 向量维数设置为100. 此外, 我们将问题语句的长度设置为60, 将答案语句的长度设置为80. 目标函数的最大区间值M设为0.1.
在神经网络超参数设置方面, 我们选择Adam作为Bi-LSTM网络的优化器, 并将LSTM层数设为两层. 我们的Dropout参数的值设置为0.5, 隐层节点数设置为200, 学习率设置为0.1, LSTM输出特征通过最大池化层进行选择.
3.3 实验结果在词向量的预训练阶段, 我们对字符嵌入、单词嵌入和双层嵌入进行了一系列比较实验. 双层嵌入在训练集上的准确度比其他方法高1~4个百分点, 且损失函数性能更好, 在测试集上的准确度比其他方法高1~2个百分点. 因此, 改进的双层嵌入可以解决分词导致的误差和序列信息丢失的问题. 实验结果如表2所示.
在相似度计算阶段, 语义相似度计算方法在训练集上比余弦相似度计算方法高2个百分点, 在测试集上高出7个百分点, 所以语义相似度计算方法优于余弦相似度计算方法, 实验结果如表3所示.
本文提出的模型PN-Bi-LSTM与其他现有的方法相比具有很大的优势良好的性能. 实验结果如表4所示.
为了验证PN-Bi-LSTM在不同应用需求下的有效性, 我们在测试集上采用F1值[20]、召回率、top-2准确率、top-3准确度作为我们的性能指标. PN-Bi-LSTM和其他6种比较模型的实验结果见表5.
如表5所示, 无论top-k准确率的k值如何, PN-Bi-LSTM的性能都优于其他几种模型. PN-Bi-LSTM在F1和召回率下也表现良好, 表明我们提出的方法在不同的性能指标下都是有效.
为了验证PN-Bi-LSTM的有效性, 我们提出了一种新的评价标准. 当一个模型在训练集上top-1准确率第一次达到50%时, 记录训练步数. 使用较少步数的模型可以更快地从问答语句中提取有用的信息. 表6显示了模型首次达到50%准确率时所采取的步骤数.
如表6所示, PN-Bi-LSTM可以用最少的步数top-1达到50%的准确率. 从这个角度看, 该方法是有效的, 对问答语句有较高的敏感性.
4 结论与展望本文基于正负样本, 提出了一个包含语义信息的双层嵌入Bi-LSTM模型,该模型大大提高了中文问答匹配的准确性.
实验结果表明, 本文提出的方法模型优于其他几种问答方法. 在测试集上top-1的准确度可达78.34%, 在训练集上损失可降至0.98. 此外, 我们采用F1值、召回率和top-k准确率来验证PN-Bi-LSTM的有效性, 实验结果表明, PN-Bi-LSTM在不同的性能指标下具有鲁棒性并且是有效的. 最后, 我们提出了一个新的性能指标来验证PN-Bi-LSTM在语句信息提取方面比其他几种方法更有效. 因此, 本文的研究具有应用和实用价值.
在未来, 我们将进一步使用不同问答系统评估提出的模型, 例如基于文章内容的答案预测. 此外, 我们将增加数据量, 来进一步验证PN-Bi-LSTM在不同数据集上的性能.
[1] |
桑瑞婷. 面向高校迎新的机器人问答系统研究[硕士学位论文]. 重庆: 重庆理工大学, 2019.
|
[2] |
卢超. 基于深度学习的句子相似度计算方法研究[硕士学位论文]. 太原: 中北大学, 2019.
|
[3] |
徐雄. 基于深度学习的问答系统研究. 湖北师范大学学报(自然科学版), 2019, 39(1): 10-18. |
[4] |
Kumar A, Irsoy O, Ondruska P, et al. Ask me anything: Dynamic memory networks for natural language processing. Proceedings of the 33rd International Conference on International Conference on Machine Learning. New York City, NY, USA. 2016. 1378–1387.
|
[5] |
Wang Q, Xu CM, Zhou YM, et al. An attention-based Bi-GRU-CapsNet model for hypernymy detection between compound entities. Proceedings of 2018 IEEE International Conference on Bioinformatics and Biomedicine. Madrid, Spain. 2018. 1031–1035.
|
[6] |
Dos Santos C, Tan M, Xiang B, et al. Attentive pooling networks. arXiv: 1602.03609, 2016.
|
[7] |
Peters M E, Neumann M, Iyyer M, et al. Deep contextualized word representations. Proceedings of 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. New Orleans, LA, USA. 2018. 2227–2237.
|
[8] |
Zhou XY, Dong DX, Wu H, et al. Multi-view response selection for human-computer conversation. Proceedings of 2016 Conference on Empirical Methods in Natural Language Processing. Austin, TX, USA. 2016. 372–381.
|
[9] |
Huang ZH, Xu W, Yu K. Bidirectional LSTM-CRF models for sequence tagging. arXiv: 1508.01991, 2015.
|
[10] |
李琳, 李辉. 一种基于概念向量空间的文本相似度计算方法. 数据分析与知识发现, 2018, 2(5): 48-58. |
[11] |
Wang BN, Liu K, Zhao J. Inner attention based recurrent neural networks for answer selection. Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). Berlin, Germany. 2016. 1288–1297.
|
[12] |
Graves A. Supervised Sequence Labelling. Berlin, Heidelberg: Springer. 2012. 5–13.
|
[13] |
Adomavicius G, Zhang JJ. Classification, ranking, and top-k stability of recommendation algorithms. INFORMS Journal on Computing, 2016, 28(1): 129-147. DOI:10.1287/ijoc.2015.0662 |
[14] |
Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space. arXiv: 1301.3781, 2013.
|
[15] |
İrsoy O, Cardie C. Deep recursive neural networks for compositionality in language. Proceedings of the 27th International Conference on Neural Information Processing Systems. Montreal, QC, Canada. 2014. 2096–2104.
|
[16] |
周艳平, 李金鹏, 蔡素. 基于同义词词林的句子语义相似度方法及其在问答系统中的应用. 计算机应用与软件, 2019, 36(8): 65-68. |
[17] |
Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: A simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 2014, 15(1): 1929-1958. |
[18] |
He W, Liu K, Liu J, et al. Dureader: A chinese machine reading comprehension dataset from real-world applications. Proceedings of the Workshop on Machine Reading for Question Answering. Melbourne, Australia. 2017. 37–46.
|
[19] |
Abadi M, Agarwal A, Barham P, et al. Tensorflow: Large-scale machine learning on heterogeneous distributed systems. arXiv: 1603.04467, 2016.
|
[20] |
赵明, 董翠翠, 董乔雪, 等. 基于BIGRU的番茄病虫害问答系统问句分类研究. 农业机械学报, 2018, 49(5): 271-276. |