基于CNN卷积层和BiLSTM的中文短文本相关性度量方法
技术领域
本发明涉及自然语言处理技术领域,具体涉及一种基于CNN(卷积神经网)卷积层和BiLSTM(双向长短期记忆网络)的中文短文本相关性度量方法。
背景技术
文本数据在互联网数据中占很大部分,目前实时新闻、文章标题、聊天记录、搜索问题、商品评论等等均可以称为文本。对于这些文本的相关性度量研究在如问答系统、信息检索等自然语言处理任务中具有关键性的作用。对于文本语义相关性度量,目前大多采用基于卷积神经网络(CNN)的方法,然而卷积神经网络模型的卷积层主要提取的是文本中的局部特征,而非全局特征,而且经过池化层往往会丢失一部分特征,比如位置信息、空间相对关系信息等。对于图像处理来说,可能并不一定需要这些丢失的信息,只要可以提取出主要特征就可以完成相应任务。而对于具有时序性的文本来说,这些丢失的信息却起着至关重要的作用,例如“事半功倍”意思为只用一半的力气,而收到了加倍的功效,若将其位置打乱,可能就变为“事倍功半”,即做事的方法费力大,收效小。因此,现有基于卷积神经网络的文本相关性度量方法的准确性还有待提升。
发明内容
本发明所要解决的是现有基于卷积神经网络的文本相关性度量方法会丢失部分特征,而影响其准确性的问题,提供一种基于CNN卷积层和BiLSTM的中文短文本相关性度量方法。
为解决上述问题,本发明是通过以下技术方案实现的:
基于CNN卷积层和BiLSTM的中文短文本相关性度量方法,包括步骤如下:
步骤1、基于孪生神经网络作为框架,将CNN卷积层用于模拟中文文本的分词过程,并通过将CNN卷积层与BiLSTM网络层采取串行的方式相结合,即将CNN卷积层的输出作为BiLSTM网络的输入,构建CBiLSTM神经网络模型;所CBiLSTM神经网络模型包括输入层、字向量嵌入层、CNN卷积层、BiLSTM网络层、文本语义向量表示层及向量相似性度量层;
在输入层,对输入的中文短文本进行预处理,将中文短文本进行语句切割,处理为以字为单位的形式,得到预处理后的中文短文本;
在字向量嵌入层,先利用Word2vec训练中文维基百科语料得到字向量,再将预处理后的中文短文本中的每个字与字向量进行映射,将中文短文本向量化;
在CNN卷积层,对向量化的中文短文本进行特征提取,得到中文短文本向的浅层特征;
在BiLSTM网络层,对中文短文本向的浅层特征进行特征提取,得到中文短文本的语义向量;
在向量相似性度量层,利用向量相似性度量公式计算2个中文短文本的语义向量的距离;
步骤2、将给定的中文语料集输入到步骤1所构建的CBiLSTM神经网络模型中,对CBiLSTM神经网络模型进行训练,通过最小化模型的损失函数,不断迭代并利用梯度更新参数,得到最终的CBiLSTM神经网络模型;
步骤3、将2个待比较中文短文本输入到步骤2所得到的最终的CBiLSTM神经网络模型中,得到2个待比较中文短文本的语义向量的距离。
上述步骤1中,经BiLSTM网络层处理后,中文短文本语义向量T为各时间步输出门向量的平均值,即:
其中:p为BiLSTM网络的隐藏层节点数;n为BiLSTM网络的时间步数,该时间步数与中文短文本中字的个数相同;
代表时间步的其中一个方向→、第n个时间步输出门向量的第i维的值,
代表时间步的另一个方向←、第n个时间步输出门向量的第i维的值。
上述步骤1中,向量相似性度量公式为:
其中:d为2个中文短文本的语义向量的距离,
和
分别为2个中文短文本的语义向量T
x和T
y第i维的值,p为BiLSTM网络的隐藏层节点数。
上述步骤2中,损失函数Loss为:
其中:N为中文语料集中中文短文本样本的个数,y为2个中文短文本样本是否匹配的标签,d为2个中文短文本样本的语义向量的距离,margin为设定的距离阈值,且margin>0。
与现有技术相比,本发明针对中文提出了串行结合CNN卷积层和BiLSTM的文本相关性度量算法,该算法通过孪生神经网络作为框架,使用Word2vec训练的中文字向量作为输入,首先会经过去掉池化层的CNN提取到文本的n-gram信息,然后输入到BiLSTM网络中继续提取不同粒度的文本特征,更准确的对文本语义进行编码。最终将文本向量化,通过计算两个向量的距离来表示相关性。本发明采用去掉池化层的CNN提取文本的n-gram信息,可有效避免池化层所造成的特征损失,在中文短文本的相关性度量上具有较好的准确性,且在计算效率上较快,不要求很高的配置。
附图说明
图1为Siamese结构示意图。
图2为卷积操作示意图。
图3为BiLSTM结构示意图。
图4为本发明CBiLSTM神经网络的结构示意图。
图5为CCKS2018数据集BiLSTM节点数对准确率影响。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,并参照附图,对本发明进一步详细说明。
一、Siamese网络结构
Siamese网络是一种神经网络的框架,用于非线性度量学习相似性信息,Siamese本意为“暹罗人”或“泰国人”,后在英语中为“孪生”、“连体”,首次提出是用于验证支票签名与预留在银行的签名是否一致,后被应用于多个领域。Siamese网络一般有两个输入,这两个输入会进入到两个相同的神经网络结构中,可以为CNN或LSTM等,而且这两个子网络可以共享权值,最终将输入映射到新的空间,形成新空间中的向量表示,再根据向量相似性度量公式计算两者的相关性。Siamese结构如图1所示。
二、卷积神经网络
卷积神经网络(CNN)实质是多层感知机的变体,首次应用是LeCun提出的LeNet-5,其后在图像处理领域掀起热潮,可以直接将图片作为输入,省去了传统识别算法中复杂的特征提取以及数据建模过程,且可以取得较优的结果。卷积神经网络关键在于其局部感受野、权值共享及池化层(Pooling层)。局部感受野可以提取到局部特征,然后综合起来即可得到全局信息,减少连接;而权值共享则是利用同一卷积核进行卷积操作,有效减少了网络的参数,同时拥有平移不变性;经过池化层可以有效减少数据处理量,且保留有用特征,得到特征映射层。卷积神经网络主要包括输入层、卷积层、激励层、池化层、全连接层和输出层。
(1)输入层
主要对输入数据进行预处理,以便卷积层进行操作,对于图片输入可能需要进行去均值、归一化及PCA降维操作,而对于文本输入则可能需要数据清洗去噪声、词嵌入等操作。
(2)卷积层
卷积操作是卷积神经网络中关键的步骤之一,在输入上进行局部加权,可以提取文本的n-gram信息,卷积核的选择对特征的提取也非常重要,图2为卷积操作示意图。
(3)激励层
激励层的主要作用是将卷积层输出的结果做非线性映射,解决线性模型不能解决的问题,模拟更细微的变化。常用的激活函数有sigmoid、ReLU、tanh等,但是卷积神经网络中一般使用RELU函数。
(4)池化层
池化层主要作用是将特征进行降维,把冗余信息去除,提取其中最重要的作用,除此之外,还保证特征不变性以及防止过拟合,一般分为最大池化和均值池化。但是同时也会存在丢失一些特征的问题,这些特征有可能是比较重要的特征。
(5)全连接层
全连接层中神经元与前一层所有神经元都存在权重连接,连接所有特征,输出到输出层进行具体的任务操作。
三、长短期记忆神经网络
长短期记忆神经网络(LSTM)是在原始循环神经网络中加入了记忆单元,解决了原始循环神经网络长期依赖、梯度消失、梯度爆炸等问题,循环神经网络展开后由多个相同的结构连接,每次会将上一次的状态与当前输入数据一同进行训练和学习,直至结束。LSTM神经网络中加入了记忆单元,用来决定遗忘哪些信息或需要记住哪些信息,数据输入之后,会首先判断是否需要遗忘,剩下的信息会储存在记忆单元中,该记忆单元的信息会一直传递到训练结束,LSTM包括输入门、遗忘门、输出门和单元状态。
LSTM有效解决了循环神经网络面临的问题,也存在很多变体,其中效果不错且应用广泛的是双向长短期记忆网络(BiLSTM),可以同时获取上下文信息,提取更丰富的特征,BiLSTM实际是将前向LSTM和后向LSTM叠加组成,结构如图3所示。
四、基于CNN卷积层和BiLSTM串行结合的中文短文本相关性算法
本发明所提出的一种基于CNN卷积层和BiLSTM的中文短文本相关性度量方法,包括步骤如下:
(1)基于孪生神经网络作为框架构建CBiLSTM神经网络模型。
CBiLSTM神经网络模型,如图4所示,包括输入层、字向量嵌入层、CNN卷积层、BiLSTM网络层、文本语义向量表示层及向量相似性度量层。其中,CNN卷积层用于模拟中文文本的分词过程,并将CNN卷积层与BiLSTM网络层采取串行的方式相结合,即将CNN卷积层的输出作为BiLSTM网络的输入。
1.1)在输入层,对输入的中文短文本进行预处理,将中文短文本进行语句切割,处理为以字为单位的形式,得到预处理后的中文短文本。
相较于英文文本,中文短文本的分词往往会产生误差,而这些误差会叠加到最终结果上,而影响文本相关性度量的准确性。为此,本发明决定在输入层将基于字向量来对中文短文本进行预处理,以消除在分词阶段产生的误差,最终形成文本t={w1,w2,...,wn},其中wi表示中文短文本中的第i个字,n为中文短文本中字的个数。
1.2)在字向量嵌入层,先利用Word2vec训练中文维基百科语料得到字向量,再将预处理后的中文短文本中的每个字与字向量进行映射,将中文短文本向量化。
字向量嵌入层主要将文本中的每个字映射为一个低维的表示向量。其首先利用Word2vec训练中文维基百科语料,从而得到字向量。在本实施例中,选取的字向量为300维。然后将输入层输入的文本t={w
1,w
2,...,w
n}通过查表将每个字与字向量进行映射,转化为低维向量,形如
m为向量的维度大小。
1.3)在CNN卷积层,对向量化的中文短文本进行特征提取,得到中文短文本向的浅层特征。
考虑到传统卷积神经网络CNN中池化层可能会将部分特征丢失,本发明将其去掉,而仅利用关键的卷积层来提取文本的特征。设置卷积核尺寸为cs,提取不同的特征,卷积核的个数与字向量的维度m相同,对输入的向量化文本
使用滤波器W
c∈R
m*cs进行2维卷积,即对输入层的文本向量自左向右滑动计算,最终会产生一个特征向量C∈R
n -cs+1,其中每个元素的卷积计算如下所示:
ci=f(Wc*vi:j+b)
其中:Wc和b为卷积神经网络中的参数,分别是权重和偏置。而vi:j表示窗口内字向量矩阵,j为i+cs-1,窗口长度即为该向量矩阵的列数,*表示点积。在卷积过程中,在卷积过程中,使用有效填充,对文本向量进行窄卷积。经以过m个卷积核的卷积计算后,得到特征矩阵x=[C1,C2,…,Cm]∈Rm*(n-cs+1)。
为了增加特征的表达能力,将卷积后的值输入到激活函数中。本发明选取修正线性函数(ReLU)作为激活函数,计算公式如下所示:
xo=max(0,x)
ReLU函数是分段的线性函数,收敛速度较快,当输入为负数时,神经元不会被激活,相应的参数也不会更新。
1.4)在BiLSTM网络层,对中文短文本向的浅层特征进行特征提取,得到中文短文本的语义向量。
将CNN卷积层提取的浅层特征xo(xo∈Rm*(n-cs+1))输入到BiLSTM网络层,其中设置BiLSTM网络层的网络层数为l,隐藏层节点数为p,长短期记忆网络主要利用输入门、遗忘门、输出门机制实现特征提取,因此将特征向量xo输入到三个门中,经过计算之后输出文本语义向量。
①遗忘门
通过遗忘门,可以决定在上一时间步的单元状态ct-1中需要保留多少信息到当前时间步的状态中,计算公式如下所示:
ft=σ(Wf·[ht-1,xt]+bf)
其中:σ为激活函数sigmoid,·表示普通矩阵相乘,Wf表示遗忘门的权重,Wf∈Rp *(p+m),ht-1指的是上一时间步隐藏层的输出,ht-1∈Rp*1,xt则是当前时间步输入层的输入,xt∈Rm*1,bf是指偏置,bf∈Rp*1,[ht-1,xt]表示向量ht-1与向量xt的拼接运算。
②输入门
输入门主要决定当前时间步输入层的输入x
t中应该保存哪些信息i
t到记忆单元c
t中,同时需要计算得出当前时间步的暂时状态
最终更新记忆单元c
t,其中,i
t,
c
t∈R
p *1,·表示普通矩阵相乘,*表示矩阵点积。双曲正切函数tanh值域为(-1,1),输出均值为0,收敛速度快。计算公式如下所示:
it=σ(Wi·[ht-1,xt]+bi)
③输出门
输出门主要决定记忆单元ct中有哪些信息ot需要输出到当前输出值ht中,计算公式如下所示:
ot=σ(Wo·[ht-1,xt]+bo)
而LSTM网络最终输出则是由输出门与记忆单元共同作用的,最终输出的ht∈Rp*1,计算公式如下所示:
ht=ot*tanh(ct)
④中文短文本语义向量
经BiLSTM处理后,中文短文本语义向量T为各时间步输出门向量的平均值,计算公式如下:
其中:p为BiLSTM网络的隐藏层节点数;n为BiLSTM网络的时间步数,该时间步数与中文短文本中字的个数相同;←和→分别代表一个时间步的两个不同的方向,
代表→方向、第n个时间步输出门向量的第i维的值。
1.5)在向量相似性度量层,利用向量相似性度量公式计算2个中文短文本的语义向量的距离。
本实施例中,选取的相似性度量公式为欧式距离,两个文本通过以上网络训练后输出各自的文本向量Tx和Ty,然后利用以下公式进行计算:
其中:d为2个中文短文本的语义向量的距离,
和
分别为2个中文短文本的语义向量第i维的值,p为BiLSTM网络的隐藏层节点数。
(2)将给定的中文语料集输入到步骤1所构建的CBiLSTM神经网络模型中,对CBiLSTM神经网络模型进行训练,通过最小化模型的损失函数,不断迭代并利用梯度更新参数,得到最终的CBiLSTM神经网络模型。其中损失函数为:
其中:N为中文语料集中中文短文本样本的个数,y为2个中文短文本样本是否匹配的标签,d为2个中文短文本样本的语义向量的距离,margin为设定的距离阈值,且要求margin>0。
(3)将2个待比较中文短文本输入到步骤2所得到的最终的CBiLSTM神经网络模型中,得到2个待比较中文短文本的语义向量的距离。
五、实验结果与分析
1)实验数据集
为了验证本发明提出的CBiLSTM神经网络模型,现使用了三种数据集进行测试,分别是ChineseSTS、ChineseLCQMC和CCKS2018。如表1所示:
表1 用于评估本文模型的数据集
2)评价指标
为了评估本文设计的网络模型,引入了精确率(Precision)、召回率(Recall)、F1值(F-Measure)以及准确率(Accuracy)。在分类任务中,各个指标的计算都依据正负样本的分类结果,用混淆矩阵表2示如下:
表2 正负样本分类结果
其中TP为正确分类到正例的样本数,FP为错误分为正例的负样本数,FN为错误分为反例的正样本数,TN为正确分类到反例的样本数。
精确率(Precision)计算公式如下:
召回率(Recall)计算公式如下:
F1值(F-Measure)计算公式如下:
准确率(Accuracy)计算公式如下:
3)实验结果与分析
表3列举了本实验的配置要求,经在多个平台中测试,发现本发明所构建的神经网络模型模型并不要求非常高的配置,实验中并没有使用GPU。
表3 实验配置情况
实验环境 |
具体配置 |
操作系统 |
Ubuntu18.04/Windows10 |
CPU |
Intel(R)Core(TM)i5-5200 |
内存 |
12GB |
开发语言 |
Python3.6 |
开发平台 |
Tensorflow框架 |
字向量训练工具 |
Word2vec |
因为本发明选取的小规模样本集(几万量级),所以将数据集划分为训练集、验证集和测试集,使用交叉验证来调整模型。使用Word2vec预训练的300维字向量初始化文本表示,实验中使用的参数如表4所示。同时对参数使用网格搜索确定,卷积层中滑动窗口在[2,3,4,5]之间选择,对于隐藏层节点数在[50,150,200,300]之间选择,节点数对准确率的影响如图5所示,设置BiLSTM层的网络层数为3。另外本发明还选取了初始学习率为1e-3的Adam优化器调整参数。
表4 本文模型参数选取情况
分别对数据集ChineseSTS、ChineseLCQMC和CCKS2018进行了测试,将①卷积神经网络模型(简称CNN,源于文献Shen Y,He X,Gao J,Deng L,Mesnil G.Learning semanticrepresentations using convolutional neural networks for web search[C].InProceedings of the 23rd International Conference on World Wide Web.ACM,NewYork,NY,USA,2014,pp 373-374)、②双向长短期记忆网络模型(简称BiLSTM,源于文献Neculoiu P,Versteegh M,Rotaru M.Learning text similarity with siameserecurrent networks[C].In Proceedings of the1st Workshop on RepresentationLearning for NLP,Berlin,2016,pp148-157)、③带有池化层的标准CNN与BiLSTM直接串行组合网络模型(简称CNN-BiLSTM,源于文献Rhanoui M,Mikram M,Yousfi S,Barzali S.Acnn-bilstm model for document-level sentiment analysis[J].Mach.Learn.Knowl.Extr,2019,1:832-847)、④带有池化层的标准CNN与BiLSTM并行组合网络模型(简称CNN∪BiLSTM,源于文献郭浩,许伟,卢凯,唐球.基于CNN和BiLSTM的短文本相似度计算方法[J].信息技术与网络安全,2019,38(6):61-64+68)与⑤本发明模型(简称CBiLSTM)与进行对比,如表5、6和7所示:
表5 ChineseTST数据集实验结果
表6 ChineseLCQMC数据集实验结果
表7 CCKS2018数据集实验结果
从表中可以看出,本发明CBiLSTM神经网络模型使用去掉池化层的卷积神经网络与长短期记忆网络的串行结合,其模型在对中文数据集进行处理时,从精确率(Precision)、召回率(Recall)、F1值(F-Measure)以及准确率(Accuracy)上均相优于其他网络模型,证明本发明采取去掉池化层的CNN提取文本n-gram信息的方法,可有效避免池化层所造成的特征损失。
需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。