一种改进词向量模型的语义计算方法与流程

文档序号:12034582阅读:448来源:国知局
一种改进词向量模型的语义计算方法与流程

本发明涉及信息科学领域,具体是一种改进word2vec词向量模型的语义计算方法及系统。



背景技术:

将自然语言交给机器学习算法来处理,需要将语言进行数学化处理,词向量化就是一种方式。进行词向量化最简单的方式为独热码表示法(one-hotrepresentation),该方法通过创建一个词表库,并对词库中的每个词进行顺序编号来赋予每个词一个向量,向量的分量只有一个1,其他全为0。这种词向量表示法有2个缺点:(1)容易产生维数灾难;(2)不能很好的刻画词与词之间的相似性,即语义鸿沟。为了克服这种缺陷,hinton在1986年提出分布式表示方法(distributedrepresentation),其基本思想是通过训练将每个词映射成一个固定长度的k维实数短向量(k为正整数),然后将所有向量映射到向量空间,每个向量对应空间上的一个点,在空间上计算向量与向量之间的距离,就可以判断它们之间的相似度。分布式表示法的一种生成词向量的方式是利用神经网络算法,该方法通过训练神经网络最终得到词向量和语言模型。bengio于2003年提出神经网络语言模型(neuralnetworklanguagemodel),其核心思想是利用神经网络建立n-gram语言模型,将每个词表示成一个浮点向量,然后作为神经网络的输入,通过随机梯度算法对神经网络参数进行训练,训练完成之后同时得到语言模型和词向量。

目前比较广泛应用的词向量化方法是基于word2vec去训练得到词向量模型,word2vec训练词向量的过程,就是构建一个多层神经网络,然后在给定文本中获得对应的输入和输出,在训练过程中不断修正神经网络中的参数,最终得到词向量。word2vec的核心模型就是cbow模型(continuousbag-of-wordsmodel)和skip-gram模型(continuousskip-grammodel),cbow模型是根据当前词上下文的2n个词来预测当前词(设词窗大小为n),它的输入是周围词向量之和,输出是当前词词向量;而skip-gram模型是根据当前词本身来预测周围有哪些词,它的输入是当前词词向量,输出是上下文的词向量。传统word2vec训练词向量的效果,在语义功能上体现为简单的线性关系,比如说:“男人-皇帝=女人-皇后”、“医生-手术=老师-教学”等,正是由于这个特性,使得word2vec生成的词向量具有初步的语义推理能力。

然而,现有技术中的word2vec没有充分考虑词性因素,而词性是训练词向量的重要信息,因为词性本身就涵盖了语义信息和语法规则,利用词性信息可以很好的结合词语的搭配顺序、规律和关系,比如形容词后面可以加名词而不能加副词,因而影响了模型对语义的深层理解。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供了一种加入词性向量因素的改进word2vec词向量模型的语义计算方法及系统。

本发明通过以下的方案实现:一种改进词向量模型的语义计算方法,包括以下步骤:s1:语料预处理,对语料进行清理,规范化,分词操作;

s2:词性标注,对语料预处理后得到的词语进行标注词性;

s3:向量初始化,对词性标注后得到的词语和词性进行向量化;

s4:上下文向量整合,对词语的上下文词语向量及词性向量进行计算整合;

s5:构建哈夫曼树并训练网络,优化目标函数并判断误差是否达到阈值;

s6:向量获取,获取词语向量和词性向量。

s7:向量应用,应用词语向量和词性向量进行语义计算。

作为本发明的进一步改进,所述步骤s1中,具体包括:

s11:去除无关字符,包括去除标点符号和乱码;

s12:统一表达规范,将中文语料都转为中文简体,英文语料统一为英文小写;

s13:分词,使用jieba分词中的搜索引擎分词模式进行分词。

作为本发明的进一步改进,所述步骤s2中采用jieba分词词典进行词性标注。

作为本发明的进一步改进,所述步骤s3中,具体为:首先设定向量的维度,然后使用服从均匀分布的数据填充向量的每一维度。

作为本发明的进一步改进,所述步骤s5中,具体包括:

s51:构建哈夫曼树,该哈夫曼树的叶子节点为词向量;

s52:判断误差是否达到阈值,若未达到阈值,就继续训练网络,并返回步骤s4;若达到阈值,就停止训练,并执行步骤s6。

作为本发明的进一步改进,还包括步骤s7:对词语向量和词性向量进行应用,具体包括:

s71:词语向量余弦相似度的语义计算,输出常用词的前n个相似词,所述前n为正整数;

s72:词语和词性的语义计算,输出常用词对应的向量和词性向量的和的相似词;

s73:词语语义范围的语义计算,选取若干个情感类型的情感词,递归找出各个情感词相关的词语,并绘制关系图。

本发明还提供了一种词向量的语义计算系统,其包括:

语料预处理模块,用于进行语料预处理;

词性标注模块,用于对每个词的词性进行标注;

向量初始化模块,用于对词语向量和词性向量进行随机向量化;

上下文向量整合模块,用于将词语向量和词性向量求和,求和的结果除以词语个数得到向量均值,向量均值与中心词的词性向量取差值得到向量整合结果;

中心词向量调整模块,用于对中心词向量进行调整,优化目标函数;

向量获取模块,用于获取词语向量和词性向量。

作为本发明的进一步改进,所述语料预处理模块包括:

无关字符去除子模块,用于去除无关字符,包括去除标点符号和乱码;

表达规范子模块,用于统一表达规范,将中文语料都转为中文简体,英文语料统一为英文小写;

分词子模块,用于使用jieba分词中的搜索引擎分词模式进行分词。

作为本发明的进一步改进,所述词性标注模块采用jieba分词词典进行词性标注。

作为本发明的进一步改进,所述向量初始化模块通过设定向量的维度,然后使用服从均匀分布的数据填充向量的每一维度。

作为本发明的进一步改进,所述中心词向量调整模块包括:

训练子模块,用于构建哈夫曼树,该哈夫曼树的叶子节点为词向量;

误差判断子模块,用于判断误差是否达到阈值,若未达到阈值,就继续训练网络;若达到阈值,就停止训练。

作为本发明的进一步改进,还包括向量应用模块,用于对词语向量和词性向量进行应用;所述向量应用模块包括:

词语向量余弦相似度的语义计算子模块,用于输出常用词的前n个相似词,所述前n为正整数;

词语和词性的语义计算子模块,用于输出常用词对应的向量和词性向量的和的相似词;

词语语义范围的语义计算子模块,用于选取若干个情感类型的情感词,递归找出各个情感词相关的词语,并绘制关系图。

相比于现有技术,本发明加入了词性向量的考虑,并且根据现有的word2vec模型进行改进。同时,根据该改进后的模型进行了创新的应用,拓展了word2vec进行语义计算的功能。

为了更好地理解和实施,下面结合附图详细说明本发明。

附图说明

图1是本发明的改进词向量模型的语义计算方法的步骤流程图。

图2是现有技术的cbow和skip-gram模型示意图。

图3是现有技术的cbow模型的结构图。

图4是本发明改进后的模型示意图。

图5是本发明改进后的结构图。

图6是输出层的原理示意图。

图7是情感相关词语的关系图

图8是本发明的语义计算系统的框图。

具体实施方式

以下结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

本发明为了解决现有技术的缺陷,提供了一种改进word2vec词向量模型的语义计算方法及系统。

具体通过以下实施例进行介绍:

首先,先对本发明的改进词向量模型的语义计算方法的整体流程进行介绍。具体请参阅图1,其为本发明的改进词向量模型的语义计算方法的步骤流程图。本发明提供了一种改进词向量模型的语义计算方法,包括以下步骤:

s1:语料预处理。具体的所述步骤s1中包括:

s11:去除无关字符,包括去除标点符号和乱码。

s12:统一表达规范,将中文语料都转为中文简体,英文语料统一为英文小写。

s13:分词,使用jieba分词中的搜索引擎分词模式进行分词。

s2:词性标注,对语料预处理后得到的词语进行标注词性。具体的,所述步骤s2中采用jieba分词词典进行词性标注,可以标注句子分词后每个词的词性,词性标注集采用北大计算所词性标注集,属于基于统计模型的标注方法。

s3:向量初始化,对词性标注后得到的词语和词性进行向量化所述步骤s3中,具体为:首先设定向量的维度,然后使用服从均匀分布的数据填充向量的每一维度。

s4:上下文向量整合,对词语的上下文词语向量及词性向量进行计算整合,具体为:将词语向量和词性向量求和,求和的结果除以词语个数得到向量均值,向量均值与中心词的词性向量取差值得到向量整合结果。

s5:构建哈夫曼树并训练网络,优化目标函数并判断误差是否达到阈值;所述步骤s5中,具体包括:

s51:构建哈夫曼树,该哈夫曼树的叶子节点为词向量。

s52:判断误差是否达到阈值,若未达到阈值,就继续训练网络,并返回步骤s4;若达到阈值,就停止训练,并执行步骤s6。

s6:向量获取,获取词语向量和词性向量。

s7:对词语向量和词性向量进行应用。具体的,所述步骤s7包括:

s71:词语向量余弦相似度的语义计算,输出常用词的前n个相似词,所述前n为正整数。

s72:词语和词性的语义计算,输出常用词对应的向量和词性向量的和的相似词。

s73:词语语义范围的语义计算,选取若干个情感类型的情感词,递归找出各个情感词相关的词语,并绘制关系图。

以下具体介绍本发明的具体原理和过程:

首先,本发明需要针对现有的word2vec词向量化模型进行改进,具体的改进步骤如下:

步骤1.首先建立词语与词性的词典。

现有的词向量训练方法,无论是神经概率语言模型还是word2vec,都没有考虑词性,这对训练词向量来说是一种信息缺失。因此在本发明中,以cbow模型为例,输入上下文的词性向量并且将它们加入到训练的过程中,成为与上下文词向量共同预测当前词词向量的重要信息,所以跟传统方法不同,一开始要先对语料中所有的词分别构建词语和词性一一对应的词典。

另外,如果加入词性训练仅从改变语料方面考虑而不改模型和源码,可以直接导入由词语和词性先后一一对应的混合语料,在训练模型设置窗口词时将窗口设置为原来的2倍,其他训练参数不变,因为在jieba分词中每一个词都附带而且唯一匹配一个词性,这种改语料不改模型的方法跟本发明中通过改模型的方法有所不同。

步骤2.初始化词向量的同时,通过同样的方法来初始化词性向量。

在以往的方法中,用神经网络训练得到词向量的第一步便是随机初始化词向量,然后投入神经网络中训练,进而不断调整各种参数包括词向量本身,本发明以初始化词向量的方法来随机初始化词性向量,目的是让词向量和词性向量保持维度相等

步骤3.模型训练过程加入词性向量的考虑。

原来的word2vec中用的两个重要模型——cbow模型(continuousbag-of-wordsmodel)和skip-gram模型(continuousskip-grammodel)。请同时参阅图2,其为现有技术的cbow和skip-gram模型示意图。两个模型都包含三层:输入层、投影层和输出层,cbow模型是在已知当前词wt的上下文wt-2,wt-1,wt+1,wt+2的前提下,预测当前词wt,而skip-gram模型则相反,是在已知当前词wt的前提下,预测上下文wt-2,wt-1,wt+1,wt+2。对于这两个模型,word2vec给出了两套框架,分别基于层次softmax(hierarchicalsoftmax)和负采样(negativesampling)来设计。

进一步再参阅图3,其为现有技术的cbow模型的结构图。

该结构包含三层:输入层、投影层和输出层。

1.输入层:包含context(w)中2n个词的词向量v(context(w)1),v(context(w)2),…,v(context(w)2n)。

2.投影层:将输入层的2n个词向量做求和累加,即

3.输出层:输出层对应一棵二叉树,以语料中出现过的词为叶子节点,以各词在语料中出现的次数作为权值构造出来的哈夫曼树,利用哈夫曼树上每一个分支都当做一次二分类,每一次分类就产生一个概率,将这些概率乘起来就是所需的p(w|context(w))。

本发明针对已有的word2vec方法进行改进,加入对词性因素的考虑,对于使用cbow模型的word2vec,改进后的模型如图4和图5所示,其分别为改进后的模型示意图和结构图。

其中w表示词word,f表示词性flag。

假设context(w)由w前后各n个词和对应的n个词性共同构成,以样本(context(w),w)为例,对这四个层做简要说明。

1.输出层(inputlayer):选择窗口词的时候抽出每个窗口词以及它的词性所对应的向量,包含context(w)中2n个词语向量v(context(w)1),v(context(w)2),…,v(context(w)2n)以及这些词对应的2n个词性向量v(context(f)1),v(context(f)2),…,v(context(f)2n)。

2.投影层(projectionlayer):将输入层的2n个词向量和对应的2n个词性向量做求和累加,即将词向量和词性向量共同构成的窗口内所有向量求和,为

3.整合层(subtractionlayer):词语向量和词性向量求和,求和的结果除以词语个数得到向量均值,引入整合层,用于减去中心词的词性向量,向量均值与中心词的词性向量取差值得到向量整合结果nw。

4.输出层(outputlayer):输出层对应一棵二叉树,以语料中出现过的词为叶子节点,以各词在语料中出现的次数当权值构造出来的哈夫曼树,利用哈夫曼树上每一个分支都当做一次二分类,每一次分类就产生一个概率,将这些概率乘起来就是所需的p(w|context(w))。

接着,在对现有的word2vec模型进行改进后,需要对模型进行训练,其中对于cbow模型来说,训练过程的步骤如下:

步骤1.随机初始化词向量和词性向量,使用服从均匀分布的数据填充向量的每一维度。

步骤2.将中心词的上下文窗口内的词语和词性向量累加求和,因为上下文已经考虑了词性,所以该向量实际上是融合了词性的向量因素的一个结果。

步骤3.求和累加之后,除以词语个数得到向量均值,向量均值与中心词的词性向量取差值得到向量整合结果。

步骤4.构建哈夫曼树,构建哈夫曼树的叶子节点是词向量而不包括词性向量,原因是哈夫曼树是以各词在语料中出现的次数作为权值来构造,相比单独的词语来说,词性出现的次数要多得多,因为一个词性对应很多个词,如果也用词性构造哈夫曼树,就会出现不合理的情况,平摊误差的时候只平摊给词向量,词性向量不进行更新,因为上下文的词和词性向量的索引是一一对应的,而改进方案的目的是对词向量进行更新,词性向量本身相当于“催化剂”的作用,用于影响词向量的优化过程,它本身的参数不进行优化。

步骤5.判断误差是否达到阈值,若未达到阈值,就继续训练网络,若达到阈值,就停止训练。

步骤6.向量获取,分别输出词语及其词性向量。

请同时参阅图6,其为输出层的原理示意图,以下具体输出层概率计算的原理:

层次softmax(hierachicalsoftmax)是一种对输出层进行优化的策略,它利用哈夫曼树来计算概率值,语料的词以出现的次数当权值来构造哈夫曼树,叶子节点为n个,分别对应词典中的词,相对应的非叶子节点就有n-1个,假设约定将权值较大的子节点放在左边并且编码为1,将权值较小的子节点放在右边并且编码为0,将一个节点分类时,分到左边为负类,分到右边为正类,那么逻辑回归得到一个节点被分为正类的概率为:

被分为负类的概率为:对于每一个叶子节点都有一条从根节点到它的路径,这个路径要经过若干个中间节点,每个中间节点都当做一次二分类,每一次分类就产生一个概率,将这些概率乘起来就是所需的p(w|context(w))。例如对于出现次数为3的这个叶子节点,从根节点到这个节点中间共经历了4次分支(在这里用有向边来表示),将每次分类结果的概率写出来就是:

1.第一次:

2.第二次:

3.第三次:

4.第四次:

哈夫曼树中必有一条从根节点到词w的唯一路径,计算叶节点的概率就是将路径上每个分类器的概率相乘,对于词典的每个词w,假设pw表示从根节点到w对应节点路径,lw表示pw中包含节点的个数,表示词w的哈夫曼编码,表示路径中非叶子节点对应的向量,故:

其中

经过推导得到对数似然函数之后,求最大概率,而关于该输出层的概率计算,在改进后的模型中,也采用相同的原理。

以下结合具体例子,针对改进后的word2vec模型的应用和效果进行说明:

本发明改进的word2vec方法,利用词性向量提供更加丰富的信息,在训练词向量的过程中加入词性的考虑。

例如对于句子,“我很喜欢做数学题”,如果按照经典word2vec的cbow模型方法,就是用前面3个词“我很喜欢做”去预测下一个词也就是第4个词“数学题”,现在加入词性的信息变成“我pron(指示代词)很喜欢adv(副词)做v(动词)数学题n(名词)”,原来是4个词,现在加上词对应的词性提供的向量信息,共同来预测第4个词。特别地,词性是事先随机初始化之后的,在调整优化的时候没有优化这些向量。

改进词向量模型之后,本发明从模型的效果上证明本方法拓展了word2vec在语义计算上的功能。

另外,本发明用多种方法来检验词向量化的效果,同时将改进后的模型做了创新的应用,包括词语和词性的语义计算、词语语义范围的语义计算,跟改进前的word2vec方法结果做对比证明,本装置拓展了word2vec在语义计算上的功能,丰富了词向量的语义信息。本发明的词向量方法,效果优于改进前word2vec的词向量化方法,检验方法如下:

1.词语向量余弦相似度的语义计算,输出常用词的前n个相似词,输出相似度进行对比。

2.词语和词性的语义计算,输出常用词对应的向量和词性向量的和的相似词,观察是否有语义的规律。

例如:

打对应向量[2.1,-1.2,0.3]

v(动词)对应向量[0.2,-3.0,-2.0]

打+v(动词)求和之后[2.3,-4.2,-1.7]

假如“打”输出一个向量,“v(动词)”也输出一个向量那么“打”(向量)+“v”(向量)的结果去找前n个相似词,输出的是球(打球)、架(打架)等名词,而避免出现其他词性或者像“打太阳”这种不符合语义的名词“太阳”这类情况。

3.测试模型得到少量常用词的前n个相似词及相似度,以相似度的平均值降序排序,观察语义的相似度是否与向量的相似度正相关。

例如:

通过降序排序后:

4.词语语义范围的语义计算,选取若干个情感类型的情感词,递归找出各个情感词相关的尽可能多且质量高的词语,并绘制关系图,如图7所示。

这个是通过多层嵌套的方法去寻找某领域相似词的关系,从而来拓展情感词典,比如说原来的情感词典没办法找到“蓝瘦”、“香菇”这种情感新词,通过这种方法,能够较好地扩充情感词典。

加入词性的词向量改进模型,拓展了word2vec在语义计算上的功能,丰富了词向量的语义信息,可以结合词向量和词性向量进行语义计算。

另外,请同时参阅图8,其为本发明的语义计算系统的框图。本发明还提供了一种词向量的语义计算系统,其包括:语料预处理模块1,词性标注模块2,向量初始化模块3,上下文向量整合模块4,中心词向量调整模块5,向量获取模块6,向量应用模块7。

所述语料预处理模块1,用于进行语料预处理。

所述词性标注模块2,用于对每个词的词性进行标注。具体的,所述词性标注模块采用jieba分词词典进行词性标注。

所述向量初始化模块3,用于对词语向量和词性向量进行随机向量化。具体的,所述向量初始化模块通过设定向量的维度,然后使用服从均匀分布的数据填充向量的每一维度。

所述上下文向量整合模块4,用于将词语向量和词性向量求和,求和的结果除以词语个数得到向量均值,向量均值与中心词的词性向量取差值得到向量整合结果。

所述中心词向量调整模块5,用于构建哈夫曼树并训练网络,优化目标函数并判断误差是否达到阈值。

所述向量获取模块6,用于获取词语向量和词性向量。

所述向量应用模块7,用于对词语向量和词性向量进行应用。

进一步,所述语料预处理模块1包括:无关字符去除子模块11、表达规范子模块12和分词子模块13。

所述无关字符去除子模块11,用于去除无关字符,包括去除标点符号和乱码。

所述表达规范子模块12,用于统一表达规范,将中文语料都转为中文简体、英文语料统一为英文小写。

所述分词子模块13,用于使用jieba分词中的搜索引擎分词模式进行分词。

进一步,所述中心词向量调整模块5包括:构建子模块51和误差判断子模块52。

所述构建子模块51,用于构建哈夫曼树,该哈夫曼树的叶子节点为词向量。

所述误差判断子模块52,用于判断误差是否达到阈值,若未达到阈值,就继续训练网络;若达到阈值,就停止训练。

进一步,所述向量应用模块7包括:词语向量余弦相似度的语义计算子模块71、词语和词性的语义计算子模块72和词语语义范围的语义计算子模块73。

所述词语向量余弦相似度的语义计算子模块71,用于输出常用词的前n个相似词,所述前n为正整数。

所述词语和词性的语义计算子模块72,用于输出常用词对应的向量和词性向量的和的相似词。

所述词语语义范围的语义计算子模块73,用于选取若干个情感类型的情感词,递归找出各个情感词相关的词语,并绘制关系图。

本发明中的词向量的语义计算系统与上述的哈弗曼树改进词向量模型的语义计算方法的原理相同,故这里就不赘述。

相比于现有技术,本发明加入了词性向量因素的考虑,并根据现有的word2vec模型进行改进。同时,根据该改进后的模型进行了创新的应用,拓展了word2vec进行语义计算的功能。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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