双阶段语义词向量生成方法与流程

文档序号:20444705发布日期:2020-04-17 22:39阅读:233来源:国知局
双阶段语义词向量生成方法与流程

本发明属于神经网络领域,具体涉及一种双阶段语义词向量生成方法。



背景技术:

词的表示问题是自然语言处理中的关键问题之一。词的表示方法是否适当,直接影响着句法分析、语义表示和篇章理解等任务的建模方法,也影响着信息检索、问答系统等应用系统的准确性和鲁棒性。

目前中文词的表示策略可以归纳为3种:传统的0-1表示,基于潜在语义信息的分布式表示和基于神经网络语言模型的分布式表示。传统的0-1表示有两方面问题:一方面0-1表示造成了数据稀疏,使得该种方式生成的词向量占用大量的空间;另一方面0-1表示只能区分不同的词语,但对于词义的表示没有任何贡献。基于神经网络语言模型很好地解决了维度灾害等问题,代表性工具有word2vec、glove等。但是它仍在存在另一个问题,它是一种词级表示方式,即只为一个词语生成一个词向量,而不能为多义词的不同词义生成不同的词向量,这会对下游任务造成一定的干扰,从而影响下游任务的效果。于是词义级表示方式开始被研究,它根据词语在语料中的语义为其生成特定的语义词向量。

目前,词义嵌入类的模型主要有两类:双阶段型和融合型。在双阶段型中,词义识别过程和词向量生成过程是串行的,而融合型模型则在词向量生成过程中完成词义的识别。国外最早使用双阶段模式的是schutze,他在1998年提出了上下文分组识别,以期望最大化为目标进行聚类来识别词义,然后生成词义向量。2010年,reisinger和moone将上下文表示为一元语法的特征向量,采用movfv聚类的方法来完成词义识别。sense2vec工具对词语添加了词性信息,以区分同义词的不同词义,但是它没有考虑不同词义的词性可能相同。后续双阶段模型的思路都与以上方法类似,都是在词义识别算法或文本建模方面进行优化。融合型模型利用词义识别和词向量生成本质上都需要对文本上下文进行计算的共通性,将两个过程合并为一个,以减小计算消耗。neelakantan在word2vec模型的基础上进行扩展,为每个多义词初始化固定数量的词向量,然后在语言模型的训练过程中选择合适的词向量进行更新。这一方法最大的限制在于它假设每个多义词具有相同数量的词义,而这一假设与事实悬殊较大。yangliu等人发现词向量生成过程中仅利用了词语的局部信息,对于全局信息并没有使用,所以他们利用这一缺陷,在词向量生成过程中加入文本的主题信息,提出了twe模型来生成语义词向量。

近年来涌现了elmo、gpt、bert等利用深度学习模型以及大语料库进行语言模型训练的模型。elmo使用lstm进行语言模型建模,模型训练完成后,对于下游任务,先将其文本输入elmo模型,然后使用网络前3层的输出共同进行词表示。bert则使用当前较流行的transformer进行建模,并且使用更大的语料库进行模型训练,而下游任务直接在此训练好的模型上进行微调即可,只是在输入输出方面需要稍作修改。这些模型虽然被证明在许多nlp任务上表现很好,但是它们并没有生成具体的词向量,缺少应用灵活性。

目前,国内在词表示方面和词向量生成工具方面的研究较少,曾琦利用lda模型对主题进行建模并对多义词进行语义标注。孙茂松利用中文知识库hownet得到义原向量来进行进一步的词向量的学习。李国佳在词义识别阶段使用了k-means聚类构建了一个双阶段模型,该方法的缺点与neelakantan的方法类似,需要提前为k-means算法设定中心簇数目,相当于需要提前确定词义生成的个数,可扩展性不够好。

总结已有的方法可以得知:0-1表示的缺点在于造成了维数灾害以及缺乏语义信息;词级别嵌入的缺点在于1)拥有多种词义的词语训练生成的词向量更加偏向于语料中出现更多的语义,语料中出现较少的语义被弱化;2)计算与某多义词相似度较高的结果中出现语义互不相关的内容;3)破坏了词向量空间原本的三角不等性,使得其质量下降;词义级别嵌入中,融合型模型可以压缩词向量的生成过程,但是其效果基于其所使用的聚类算法的效果,而目前大多数聚类算法的效果表现不如有监督模型分类算法。双阶段型模型忽略了词义识别和词向量生成过程之间的相似性,两个过程串行完成,效率低下,但是其对于生成词向量的质量有很高的保证。

改进现有的词向量生成工具word2vec、glove等,为具有多个义项的词语生成多个词向量,从而在下游任务中,对多义词使用具有义项区别的义项词向量,使得下游任务对于文本语义的捕获更加准确,从而使得下游任务的效果更好。



技术实现要素:

针对上述问题,本发明认为,词向量的生成过程是一次性的,而下游任务对于词向量的使用是多次的,则生成质量更高的词向量的需求大于对词向量生成过程减少时间开销的需求,所以本发明基于神经网络对于样本特征的提取能力,提出一种结合卷积神经网络(cnn)和支持向量机(svm)的双阶段语义词向量生成方法,由于包含特征提取器的构建、词义识别以及神经语言模型的构建、义项词向量生成两个阶段,可以生成高质量的语义词向量供下游任务使用。该方法包括如下5个步骤:

步骤1:文本矩阵化

从获取的文本中挑选出含有多义词w的子句si,将此子句si与多义词w在该子句si的义项类别ci组成一条训练样本(si,ci),将这样的样本组成的集合称为数据集,i=1,2,...,n。所述文本矩阵化就是将含有多义词w的子句si转换成一个q行m列的数据矩阵di,其中q是子句si转化成的数据矩阵的行数。

步骤2:特征提取器的构建

基于卷积神经网络(cnn)构建一个特征提取器,该特征提取器的结构包含6层,分别是输入层、卷积层、池化层、全连接层1、全连接层2和输出层。利用步骤1的文本矩阵化将语料库中每个训练样本(si,ci)中的si转换成对应的数据矩阵di作为所述特征提取器的输入,最终得到训练样本中子句si中w被预测为每个义项的概率值;使用交叉熵损失函数及反向调节算法对所述特征提取器的网络参数进行更新,在所述特征提取器训练好之后,保持所述特征提取器中各网络参数不变,采用验证数据矩阵集合验证训练好的所述特征提取器,得到验证完成的所述特征提取器;将含有多义词w的训练样本重新输入验证完成的所述特征提取器,则全连接层1重新输出的fi即为特征提取器提取到的子句si的特征向量。

步骤3:多义词语义识别

采用分类器svm进行多义词语义识别;对每条训练样本使用步骤2得到的特征向量fi作为所述分类器svm的输入,对所述分类器svm进行训练,对于训练好的分类器svm,将由步骤2得到的训练样本si的特征向量fi作为输入,即可对样本子句si中多义词w的语义进行识别,得到其预测义项类别

步骤4:神经语言模型的构建

构建一个神经语言模型,对所述神经语言模型的训练集进行处理,构建一棵哈夫曼树h,使用哈夫曼树结构构建输出层,加速所述神经语言模型的计算过程,使用层次softmax(hierarchicalsoftmax)算法完成所述神经语言模型的输出层的正向传播和反向调节。

步骤5:义项词向量的生成

义项词向量的生成,主要在于所述神经语言模型各层网络参数的更新,即层次softmax算法的正向传播过程及反向调节过程,最终得到每个词语的义项词向量。

本发明使用多个神经网络为多义词的不同语义生成了对应的词向量,解决了传统词级嵌入式中多义词只对应一个词向量的缺陷,且使用的语料库大小在可接受范围内。本发明采用卷积神经网络(cnn)和支持向量机(svm)结合的方式,一方面利用了卷积神经网络的特征提取能力,一方面利用了svm的泛化性以及鲁棒性,使得词义识别的效果更优,从而生成的语义词向量质量更高。

附图说明

图1为语义识别过程示意图

图2为义项词向量生成流程图

图3为文本矩阵化的过程示意图

图4为特征提取器结构示意图

图5为神经语言模型示意图

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

本发明提出的双阶段语义词向量生成方法分为三个阶段,并由5个步骤组成。其中第一阶段是文本矩阵化;第二阶段包括特征提取器的构建、语义识别2个步骤;第三阶段包括神经语言模型的构建、义项词向量的生成2个步骤。

步骤1:文本矩阵化

从获取的文本中挑选出含有多义词w的子句si,构成集合dw={s1,s2,s3...}(即含有歧义词的子句集合),将此子句si与多义词w在该子句的义项类别ci组成一条训练样本(si,ci),将这样的样本集合称为数据集,i=1,2,...,n。

取所述集合dw中出现频率最高的l个字符构成字汇表,为所述字汇表构建一个数据矩阵v,其大小记为l行m列,其中第r行对应字汇表中第r个字符的向量表示,即v中的每一行表示该行对应字符的初始化向量。矩阵v的值使用标准正态分布进行初始化,l是字汇表的大小。

如图3所示,对所述数据集中每个训练样本(si,ci)的子句si进行文本矩阵化,所述文本矩阵化就是将含有多义词w的子句si转换成一个q行m列的数据矩阵di,其中q是子句si转化成的数据矩阵的行数,其大小不超过所述训练语料库中最长的子句具有的字符的个数,且q值由用户根据实际情况指定,q<l;di是子句si中每个字的字符向量经过拼接之后又做了行数处理之后的结果。拼接的做法是,根据子句si的第k个字符从字汇表数据矩阵v中得到这个字符的向量表示,将其作为数据矩阵di第k行的值,k=1,2,...,q。行数处理的做法是,若di的行数大于q,则只取其前q行,若di的行数小于q,则补相应行数的0使其行数达到q。

步骤2:特征提取器的构建

本发明基于卷积神经网络(cnn)构建一个特征提取器,该特征提取器的结构如图4所示,所述特征提取器包含6层,分别是输入层、卷积层、池化层、全连接层1、全连接层2和输出层,其中,每一层的作用分别描述如下:

输入层:利用步骤1的文本矩阵化将样本(si,ci)中的si转换成对应的数据矩阵di作为所述特征提取器的输入;

卷积层:利用多个卷积核与矩阵di进行卷积运算抽取出每个训练样本中的子句si的局部特征,得到多个特征图,其中,为每个不同窗口大小的卷积共设置了256个卷积核,卷积的窗口值设置为[3,4,5];

池化层:使用最大池化,通过降采样的方法对卷积层得到的所述多个特征图进行压缩,得到池化后的特征图,然后将其拼接得到列向量ei;

全连接层1:根据该层的权重参数矩阵将所述列向量ei转化为列向量fi,该列向量fi的维度设置为128。fi表示所述特征提取器提取到的si的特征向量;

全连接层2:通过全连接层1得到的si的特征向量fi来计算si中多义词w被预测为每个义项的可能性,该可能性被表示为一个列向量。全连接层1和全连接层2之间使用dropout函数舍弃部分特征,防止所述特征提取器模型过拟合,提高所述特征提取器模型的泛化能力。所述全连接层2的维度与多义词w的义项数一致;

输出层:使用softmax函数将全连接层2得到的所述列向量的长度转化为1,得到子句si中w被预测为每个义项的概率值。

将由步骤1得到的文本矩阵化后的数据集按照8:2的比例分为训练集和验证集,然后使用交叉熵损失函数及反向调节算法对所述特征提取器的网络参数进行更新。当网络中的参数都收敛之后,保持所述网络中各网络参数不变,即得到训练完成的所述特征提取器。最后将含有多义词w的样本重新输入验证完成的所述特征提取器,则全连接层1重新输出的fi即为特征提取器提取到的子句si的特征向量。训练集和验证集都是在训练过程中使用的,网络一边训练一边验证。

步骤3:多义词语义识别

本发明将多义词语义识别作为分类任务来处理,采用分类器svm进行多义词语义识别。对每条训练样本使用步骤2得到的特征向量fi作为分类器svm的输入,以式(1)作为目标函数,对所述分类器svm进行训练。分类器svm模型的核心问题是寻求出在多维空间中能够区分正负类样本的最优分离超平面whyperx+b=0,其中whyper和b分别代表了该超平面的法向量与截距。式(1)中c为惩罚系数;ξ为松弛变量;xi(即fi)为子句si的特征向量;yi(即义项类别ci)为xi对应的类别标记。φ(x)为从低维空间到高维空间的非线性映射函数。

s.t.yi(whyperφ(xi)+b)≥1-ξi,c>0,ξi≥0,i=1,2,...,n(1)

对于训练好的分类器svm,将由步骤2得到的训练样本子句si的特征向量fi作为输入,即可对样本子句si中多义词w的语义进行识别,得到其预测义项类别此阶段的处理过程如图1所示。

步骤4:神经语言模型的构建

构建一个神经语言模型,所述神经语言模型的训练采用训练集d。首先,对于神经语言模型的训练集d(即歧义词与非歧义词的文本集合),按照步骤1的方法构建含有多义词w的文本集合dw={s1,s2,s3...},并构建集合dr=d-dw。然后对于dw中每条文本si,使用步骤1的文本矩阵化方法将其转换成矩阵di,使用步骤2构建好的特征提取器得到si的特征向量,按照步骤3中多义词识别过程得到子句si中多义词w的预测义项类别然后将文本si中多义词w替换为w′,其中即将多义词w与其预测义项类别进行字符串连接。最终得到新的文本集合d′w={s′1,s′2,s′3...}。合并集合,得到新的训练集d′=d′w+dr。

然后,对所述训练集d′中的训练样本进行分词、去停用词,然后统计每个词语的词频,按照词频降序排序,选取前l个词形成词汇表,并按照步骤1中的方式,为该词汇表构建一个数据矩阵v′,矩阵的大小为l行m列。根据词汇表中各词语的词频构建一棵哈夫曼树h。

最后,初始化包含三层网络的神经语言模型,使用当前词语wt的上下文context(wt)={wt-1,wt+1,...,wt-k,wt+k},其中,k是预先选取的上下文窗口的大小,本实施例中设置为3,训练所述神经语言模型,预测当前词wt。所述神经语言模型的结构如图5所示,所述神经语言模型每一层的作用如下所示:

输入层:从数据矩阵v′中获得当前词wt上下文的向量表示。各神经元的输入是一个m维的列向量。代表当前词wt左侧第一个词语wt-1的词向量,代表当前词wt右侧第一个词语wt+1的词向量,依次类推。

投影层:将输入层的词向量集合{wt-1,wt+1,...,wt-k,wt+k}映射成一个环境向量表示此处将输入层的各个词向量wt-1,wt+1,...,wt-k,wt+k相加取平均值得到

输出层:对传统神经语言模型的输出层进行了优化。使用哈夫曼树结构构建输出层,加速所述神经语言模型的计算过程,使用层次softmax(hierarchicalsoftmax)完成输出层的正向传播和反向调节,即投影层到输出层的softmax是沿着哈夫曼树一层一层的完成的。此处的哈夫曼树即上文中的h。哈夫曼树中的每个叶子节点类似神经网络输出softmax层的神经元,除根节点外的内部节点类似于神经网络隐藏层的神经元,根节点存储由投影层获得的环境向量

步骤5:义项词向量的生成

义项词向量的生成,主要在于所述神经语言模型各层网络参数的更新,即hierarchicalsoftmax算法的正向传播过程及反向调节过程。具体如下:

首先进行参数定义:

wt表示目标输出词语

表示根节点词向量

表示从根结点到wt所在叶子结点的路径上包含的结点总数

表示从根结点到wt所在叶子结点的路径上的第j个结点

表示结点对应的哈夫曼编码

表示结点对应的模型参数向量,

hierarchicalsoftmax算法正向传播的核心是找到所有合适的内部结点参数向量,使得训练样本达到最大似然。它每次训练使用一条训练样本,将正向传播过程中每一次二叉分支视作一次分类过程,将左分支(即编码为0的分支)视为正类,将右分支(即编码为1的分支)视作负类,使用sigmoid函数预测分类的概率。

从根结点到wt所在叶子结点的路径中,经过哈夫曼树某个结点的逻辑回归概率表达式如式(2)所示:

其中σ(x,θ)为sigmoid函数,公式如下:

则对于目标输出词wt,其最大似然函数为:

反向调节过程,hierarchicalsoftmax算法用负的对数似然函数作为损失函数,使用梯度下降法,对参数及生成根结点词向量的相关向量,即context(wt)中词语的向量进行更新,公式如式(5)-(8)所示,η代表所述神经语言模型的学习率

每次更新要将数据矩阵v′中词语wi的词向量进行更新,在下一次读取词语wi的词向量时,使用已经更新后的向量。迭代训练,直到所述神经语言模型收敛,最终数据矩阵v′中的各个行向量就是每个词语的义项词向量。此阶段的流程图如图2所示。

本发明使用多个神经网络为多义词的不同语义生成了对应的词向量,解决了传统词级嵌入式中多义词只对应一个词向量的缺陷,且使用的语料库大小在可接受范围内。本发明采用卷积神经网络(cnn)和支持向量机(svm)结合的方式,一方面利用了卷积神经网络的特征提取能力,一方面利用了svm的泛化性以及鲁棒性,使得词义识别的效果更优,从而生成的语义词向量质量更高。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围。凡采用等同替换或等效替换,这些变化是显而易见,一切利用本发明构思的发明创造均在保护之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1