APP下载

基于正负样本和Bi-LSTM的文本相似度匹配模型①

2021-04-23周艳平朱小虎

计算机系统应用 2021年4期
关键词:集上向量语义

周艳平,朱小虎

(青岛科技大学 信息科学技术学院,青岛 266061)

随着自然语言处理技术的快速发展,问答系统已经成为人工智能的前沿领域[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所示.

表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所示.

图1 模型总体框架

2 主要方法

2.1 双层嵌入向量表示

问答系统中的句子的向量表示是文本特征生成的重要步骤.利用LSTM 神经网络处理匹配任务时需要获得句子的向量表示,而句子分词错误会对实验结果产生很大的影响,因此采用双层嵌入向量模型表示方法,可以有效地减少分词引起的实验误差.双层嵌入向量模型如图2所示.

如图2所示,在对所有的问答句子进行分词后,通过Word2Vec[14]模型进行单词和字符向量训练,得到所有单词和字符的训练模型.利用单词嵌入和字符嵌入模型,得到了字符向量和单词向量.最后,将句子中的字符向量和单词向量进行策略性组合,得到每个句子的向量.

图2 双层嵌入向量模型

由于单词嵌入和字符嵌入长度不一致,我们首先采用零向量来补充单词嵌入,再加权单词和字符的向量表示,改进模型的最终句子向量由Sen表示:其中,S enword表示单词嵌入向量表示,S encharacter表示字符嵌入向量表示.α与β 之和为常数1,本文将α 设为0.6.通过双层嵌入将句子表示为100 维向量,然后通过内部注意力机制提取句子向量的特征.

2.2 内部注意力机制

句子中的单词之间可能存在协同效应,这会降低测试集中模型的准确性.由于RNN[15]注重时序性,所以t时刻的神经网络模型包含了所有先前时刻的序列信息.在RNN 框架中加入注意力机制以获得更多的加权信息.

由于框架中包含了更多的前向信息,因此会选择靠近句尾的文本特征,从而导致特征向后偏移和权重偏差.为了解决上述问题,在特征提取之前,采用内部注意力机制.在计算句子时间信息方面过程时,内部注意力机制结构如图3所示.

如图3所示,在LSTM 训练之前,注意力机制提取了表示句子的xt的时间信息.该算法将每次的平均特征输出作为最后一次输出,避免了特征信息的丢失.此过程中进行了最大值池化操作,这使每个时刻都会增加注意力机制的权重.在注意力机制计算 αt后,我们得到如下输出:

其中,xt是时间t处的原始输入时序特征向量,αt定义如下:

其中,σ是一个Sigmoid 函数,因此αt的值介于0和1 之间;rq是关于注意力机制的隐藏层的权重;Mqi是一个注意力矩阵,它将问答句子转换为单词嵌入空间.

图3 内部注意力机制结构

2.3 Bi-LSTM 神经网络模型

RNN是一种能够存储历史状态的时间序列网络结构.然而,由于梯度爆炸和梯度消失,多层RNN在计算上下文信息时往往会受到限制.LSTM是RNN的一种变体,主要解决RNN 长距离梯度计算的问题.在LSTM结构中,隐藏层向量为ht时,时刻t的状态更新如下:

其中,it,ft,ot,Ct分别是输入门的输出值、遗忘门的输出值、输出门的输出值和存储单元的输出值,σ是Sigmoid函数;W,U,R是LSTM 神经网络的参数.

Bi-LSTM 可以解决单向LSTM 无法计算逆序上下文信息的问题.将正向序列和反向序列组合以获得输出:

2.4 目标函数与相似度计算

训练后的神经网络模型能最大化问题与正确答案之间的相似度,最小化问题与错误答案之间的相似度.目标函数是使正样本和负样本之间的差异最大化.其他问答系统一般只计算向量间的余弦相似度,而不涉及语义层面的深度相似度计算,这有相当大的局限性.因此,我们提出一种包含语义的相似度计算[16]来定义一个目标函数:

其中,M为最大区间值,取值为0.1,Sim为问答语句的语义和文本联合相似度计算方法,定义如下:

其中,Simtext是向量的余弦相似度计算方法,Simsemantic是向量的语义相似度计算方法.θ1与θ2之和是常数1,本文设置 θ1为0.6.语义相似度计算方法的简化过程如图4所示.

图4 语义相似度计算过程

两行圆形分别表示问答语句,每个圆形代表一个单词.语义相似度计算方法解释为:问句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之间的语义相似度,解释如下:

式中,Qmax为问题句中每个词的最大相似度之和,Amax为回答句中每个词的最大相似度之和:

为了避免局部最优解的问题,我们选择Adam 作为优化器.在Bi-LSTM 层中,我们添加Dropout[17]机制来避免过拟合问题.

3 实验及结果

3.1 实验数据集

本文使用的数据集是公共数据集DuReader[18],并提取了其中50 000个问题样本和90 563个答案样本.问题陈述的平均长度为60个字符,回答语句的平均长度为80个字符.在整个答案库中,每个问题平均有2个正确答案.在训练集中,我们选择4 万个问题组成24 万个训练样本,其中4 万个是正样本,20 万个是负样本,每个问题有1个正样本和5个负样本.正样本是一个问题和它的正确答案的配对.负样本是一个问题和从90 563个答案中随机抽取一个错误答案的配对.在测试集中,剩余的10 000个问题被用来构建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 预训练方法实验对比

在相似度计算阶段,语义相似度计算方法在训练集上比余弦相似度计算方法高2个百分点,在测试集上高出7个百分点,所以语义相似度计算方法优于余弦相似度计算方法,实验结果如表3所示.

表3 不同相似度计算方法比较

本文提出的模型PN-Bi-LSTM与其他现有的方法相比具有很大的优势良好的性能.实验结果如表4所示.

表4 各模型Top-1 准确率和损失对比

为了验证PN-Bi-LSTM在不同应用需求下的有效性,我们在测试集上采用F1 值[20]、召回率、top-2 准确率、top-3 准确度作为我们的性能指标.PN-Bi-LSTM和其他6 种比较模型的实验结果见表5.

表5 模型在测试集上性能指标对比

如表5所示,无论top-k准确率的k值如何,PNBi-LSTM的性能都优于其他几种模型.PN-Bi-LSTM在F1和召回率下也表现良好,表明我们提出的方法在不同的性能指标下都是有效.

为了验证PN-Bi-LSTM的有效性,我们提出了一种新的评价标准.当一个模型在训练集上top-1 准确率第一次达到50%时,记录训练步数.使用较少步数的模型可以更快地从问答语句中提取有用的信息.表6显示了模型首次达到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在不同数据集上的性能.

猜你喜欢

集上向量语义
真实场景水下语义分割方法及数据集
向量的分解
关于短文本匹配的泛化性和迁移性的研究分析
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
师如明灯,清凉温润
汉语依凭介词的语义范畴
几道导数题引发的解题思考
2008年高考考前模拟试题(二)及略解