一种结合Doc2vec和卷积神经网络的情感分类方法与流程

文档序号:13682888阅读:187来源:国知局
技术领域本发明属于涉及情感分类方法领域,尤其涉及一种结合Doc2vec和卷积神经网络的情感分类方法。

背景技术:
情感分析是一种常见的自然语言处理(NLP)方法的应用,特别是在以提取文本的情感内容为目标的分类方法中。情感分类已经有很多有用的实践,比如企业分析消费者对产品的反馈信息,或者检测在线评论中的差评信息。常见的情感分类方法主要有支持向量机,最大熵以及随机游走等浅层学习方法。这些方法在建模的过程中使用的函数简单,计算方法也比较简单,容易实现而且计算量较小,在有限的样本和计算单元的条件下导致其对复杂函数的表达能力受到限制,同时对于复杂的分类问题,这些方法的泛化能力也在一定程度上受到制约。卷积神经网络(CNN)属于深层网络,深层网络可以通过学习一种深层的非线性的网络结构来弥补这一约束,深层网络采用分布式表示输入数据的表征,与此同时,深层网络也展现了它强大的特征学习能力,即其可以从少量的样本集中抓取到数据的本质特征。CNN不仅包含了深层网络的这些优点,并且可以特征提取和模式分类同时进行,而且CNN的模型有稀疏连接和权重共享这两个特点,可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。情感文本的向量表示一般有两种表达方式,One-hotRepresentation和DistributedRepresentation。One-hotRepresentation最大的问题是无法分析词与词之间的语义关系,此外这种方法还容易发生维数灾难。DistributedRepresentation方法则很好地克服了这些缺点,其中word2vec就是DistributedRepresentation的典型代表。虽然word2vec很好的分析了词与词之间的语义关系并且解决了维数灾难问题,但是没有考虑到词与词之间的顺序问题,因此不同的句子可能会有相同的表示,从而导致误判率较高。Doc2vec跟word2vec很相似,Doc2vec在word2vec的模型的基础上增加了一个段落向量(ParagraphId)。Doc2vec不但考虑到了词与词之间的语义关系,并且解决了维数灾难,还考虑到了词与词之间的顺序问题。所以,相对于其它方法,结合Doc2vec和卷积神经网络来处理情感分类问题可显著提高情感分类的准确率。

技术实现要素:
针对以上现有技术的不足,提出了一种可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强、可显著提高情感分类的准确率的结合Doc2vec和卷积神经网络的情感分类方法。。本发明的技术方案如下:一种结合Doc2vec和卷积神经网络的情感分类方法,,其包括以下步骤:步骤1:从网上搜集情感文本语料集,标记类别,将文本里的数据表示成一个句子,并将情感文本语料分为训练集语料和测试集语料;步骤2:从网上搜集情感词典,并采用基于词典逆向最大匹配算法和统计分词策略相结合的中文分词算法对步骤1中的训练集语料和测试集语料进行分词处理,然后去除停用词;步骤3:采用Doc2vec对步骤2中分词处理并去除停用词后的训练集语料和测试集语料训练出词向量模型并得到文本向量;步骤4:将步骤3中的语料中的训练集语料的文本向量输入卷积神经网络CNN训练出情感分类模型;步骤5:将步骤3中的测试集语料的文本向量输入卷积神经网络CNN,根据步骤4中已经训练好的情感分类模型进行情感类别分类并计算出情感分类的准确率。进一步的,所述步骤1进行标记类别采用人工标记类别,将情感表现为积极情绪的文本标签设定为1,将情感表现为消极情绪的文本标签设定为2。并且去除文本的首尾空格。进一步的,所述步骤2的情感词典分为正面情感词词典和负面情感词词典,分词处理包括分级构造分词词典,由核心词典和临时词典两部分构成分词词典集合;采用二级哈希结构存储构造核心词典,选取情感词典作为临时词典加载的语料,分词词典初步构成后,分词系统进入步骤3。进一步的,对情感文本进行分词时,如果临时词典中有新统计的词,该词的词频加一,否则将该新词重新加入临时词典;累计词频后判断词频是否满足设定阈值,若满足则移到核心词典中,并在临时词典中清空该词条。统计记录学习情感文本的数量,若大于预定值,则清空临时词典;采用更新后的核心词典中的词条作为分词依据。进一步的,步骤3使用Doc2vec中基于HierarchicalSoftmax算法的PV-DM模型,将步骤2中处理好的的语料输入模型中,把每个长度可变段落和对应段落中的每个词分别映射成唯一的段落向量和唯一的词向量,将所有文本向量和所有对应的词向量累加或者连接起来,作为输出层Softmax的输入。构建目标函数,在训练过程中保持文本向量不变,使用随机梯度上升法进行词向量更新,在预测阶段保持已经更新好的词向量和输出层Softmax的参数不变,重新利用随机梯度上升法训练待预测的文本,得到最终的文本向量并将这些文本向量处理成可以使用CNN的数据格式。进一步的,所述步骤4具体为:首先构建完整的6层CNN网络,分别为文本向量层,卷积层,子采样层,卷积层,子采样层和全连接的softmax层;然后将步骤3中的语料中的训练集的文本向量输入到已经搭建好的卷积神经网络CNN模型中进行训练,训练分为两个阶段:首先是向前传播阶段,将样本输入卷积神经网络CNN网络,计算相应的实际输出Op;然后是向后传播阶段,计算出实际输出Op与相应的理想输出Yp的误差,再按极小化误差的方法反向传播调整权矩阵。经过两个阶段的训练后即得到训练好的情感分类模型。进一步的,所述步骤5具体为:将步骤3中的语料中的测试集的文本向量输入CNN,根据步骤4中已经训练好的模型进行情感类别分类,如果实际输出文本的标签等于1,判定该文本表现的是积极情绪,如果实际输出文本的标签不等于1,即标签等于2,判定该文本表现的是消极情绪,统计实际输出文本的标签与期望输出文本的标签之间不同的个数,计算情感分类的准确率。本发明的优点及有益效果如下:本发明选用Doc2vec来表示特征,选用CNN来训练特征并完成分类。该两种方法相结合不仅解决了特征表示时词与词之间的语义关系问题,词与词之间的顺序问题和维数灾难问题,还考虑到了选用CNN来训练特征可以弥补浅层特征学习方法的不足。并且可以特征提取和模式分类同时进行,CNN模型的稀疏连接和权重共享两个特点可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。结合Doc2vec和CNN来处理情感分类问题可显著提高情感分类的准确率。附图说明图1是本发明提供优选实施例结合Doc2vec和卷积神经网络的情感分类方法。具体实施方式以下结合附图,对本发明作进一步说明:如图1所示,如图1所示,本发明结合Doc2vec和CNN的情感分类方法的具体步骤是:步骤1:搜集情感文本语料集,人工标记类别,如情感表现为积极情绪的文本标签为1,情感表现为消极情绪的文本标签为2。并且去除文本的首尾空格,将文本里的数据表示成一个句子,这样方便后续的处理工作。并将语料集分为训练集和测试集。训练集用来训练情感分类的模型,测试集用来测试模型分类的效果。步骤2:首先搜集情感词典,情感词典是文本情感分析的基础资源,实际就是情感词的集合。从广义上讲,指包含感情倾向性的短语或者句子;从狭义上讲,指包含有感情倾向性的词语集合。情感词典一般包含两个部分,正面情感词词典和负面情感词词典。然后对步骤1中的语料集进行中文分词,本文使用的分词方法是基于词典逆向最大匹配算法和统计分词策略相结合的中文分词算法。分级构造分词词典,由核心词典和临时词典两部分构成分词词典集合。统计出权威性的词条语料,采用二级哈希结构存储构造核心词典。选取情感词典作为临时词典加载的语料。分词词典初步构成后,分词系统进入自主学习的阶段,对情感文本进行分词时,如果临时词典中有新统计的词,该词的词频加一,否则将该新词重新加入临时词典。累计词频后判断词频是否满足设定阈值,若满足则移到核心词典中,并在临时词典中清空该词条。统计记录学习情感文本的数量,若大于预定值,则清空临时词典。采用更新后的核心词典中的词条作为分词依据,采用逆向最大匹配算法进行情感文本的分词。分完词后,每个文本是由以空格隔开的单词组成的文本语料。然后搜集停用词表,人工删除停用词表中对实验有用的词汇,并根据停用词表去除分完词后的语料中的停用词。去除停用词是为了节省存储空间和提高效率。步骤3:采用Doc2vec对步骤2中的语料训练出词向量模型并得到文本向量。Doc2vec是用来得到词和文本深层特征的浅层模型,它不但考虑到了各词之间的语义关系,而且也考虑到了词与词之间的顺序,能够很好的表示出词与文本的特征。Doc2vec用到两个重要的模型——PV-DBOW和PV-DM模型,针对PV-DBOW和PV-DM两种模型又给出了两套算法——HierarchicalSoftmax和NegativeSampling。本文使用基于HierarchicalSoftmax算法的PV-DM模型。PV-DM模型的输入是一个长度可变的段落(ParagraphId)和该段落中的所有单词(Words),本文中的ParagraphId代表的是情感文本。输出是根据ParagraphId和Words预测出的单词。PV-DM模型的训练过程:将每个ParagraphId和Words分别映射成唯一的段落向量(ParagraphVector)和唯一的词向量(WordVector),并且将所有ParagraphVector按列放入矩阵D和所有WordVector按列放入矩阵W中。将ParagraphVector和WordVector累加或者连接起来,作为输出层Softmax的输入。输出层Softmax是以ParagraphId中的词条作为叶子结点,词条在文本语料中出现的次数当作权值,构造的哈弗曼(Huffman)树。建立目标函数:1TΣt=kT-klogp(wt|wt-k,...,wt+k)---(1)]]>其中T代表词向量的个数,wt,wt-k等代表每个词向量。p(wt|,wt-k,...,wt+k)=eywtΣieyi---(2)]]>每个yi是每个词向量i的未规范化对数概率,yi的计算公式为:y=b+Uh(wt-k,...,wt+k;W,D)(3)其中U,b是Softmax的参数,h是由从D和W矩阵中提取的ParagraphVector和WordVector累加或者连接构成的。在训练过程中,ParagraphId保持不变,文本中的所有单词共享着同一个ParagraphVector,相当于每次在预测单词的概率时,都利用了整个文本的语义。对这个目标函数进行优化,从而求得最优的词的向量表示。利用随机梯度上升法对上式的目标函数进行优化,得到迭代过程中词u的向量θu的更新公式为:θu=θu+η[Lx(u)-σ(w(x~)Tθu)]w(x~)---(4)]]>的更新公式为:θu∈Rn表示词u对应的一个辅助向量,Lx(u)表示词u的标签,表示词对应的向量,σ是一个逻辑回归函数,表示词的标签,η表示学习率。在迭代过程中词u的向量θu和词的向量都在原来的基础上进行了更新,使得向量对词的表达能力更强,向量随着更新而不断进化,向量的表示质量也随着提升。在预测阶段,给待预测的文本重新分配一个ParagraphId,词向量和输出层Softmax的参数保持训练阶段得到的参数不变,重新利用随机梯度上升法训练待预测的文本。待收敛后,最终得到了文本的ParagraphVector。并将这些ParagraphVector处理成可以使用CNN的数据格式。步骤4:将步骤3中的语料中的训练集的文本向量输入到CNN训练出情感分类模型。首先需要构建完整的CNN网络。CNN与传统的神经网络有所不同,在CNN中,层与层之间的神经元节点不再是全连接形式,CNN利用层与层之间局部空间相关性,相邻每一层的神经元节点只与和它相近的上层神经元节点连接,这样大大降低了神经网络架构的参数规模。本文所用的CNN一共有6层:第一层为文本向量层,由于本文所训练的文本向量为100维,当文本向量映射到文本向量层时相当于生成一张10*10的图像。第二层是卷积层,多个卷积滤波器作用于文本向量层,每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项,不同卷积滤波器生成不同的局部特征(featuremap)。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置并且使CNN模型参数数量大大降低。在一个卷积层,上一层的特征maps被一个可学习的卷积核进行卷积,然后通过一个激活函数,就可以得到输出特征map。每一个输出map可能是组合卷积多个输入maps的值:Xjl=f(Σi∈MjXil-1*kijl+bjl)---(6)]]>这里表示第l层的j特征map,表示第l-1层的i特征map,Mj表示选择的输入maps的集合,为卷积核,是每一层唯一的偏移,f表示一个激活函数。第三层是子采样层,对于子采样层来说,有N个输入maps,就有N个输出maps,只是每个输出map都变小了。Xjl=f(βjldown(Xjl-1)+bjl)---(7)]]>down(.)表示一个下采样函数,f表示一个激活函数,表示第l层的j特征map,表示第l-1层的i特征map,这里对输入文本的不同n*n的块的进行求和。因此输出文本在两个维度上都缩小了n倍。每个输出map都对应一个属于自己的乘性偏置β和一个加性偏置b。第四层和第五层依然是分别是卷积层和子采样层。第六层是一个全连接的Softmax层,得到每个类目的概率输出。然后进行训练:训练分为两个阶段:向前传播阶段和向后传播阶段。第一阶段,向前传播阶段:从样本集中取一个样本(X,Yp),将X输入网络,计算相应的实际输出Op。在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,得到最后的输出结果):Op=Fn(...(F2(F1(XpW(1))W(2))...)W(3))(8)Fn代表CNN的第n层,W(n)表示第n层的权值。第二阶段,向后传播阶段:计算实际输出Op与相应的理想输出Yp的差,EN=12Σn=1NΣk=1c(tkn-ykn)2---(9)]]>其中表示第n个样本对应的标签的第k维,表示第n个样本对应的网络输出的第k个输出,N表示训练样本的个数,c表示类别的个数(本文为两类)。按极小化误差的方法反向传播调整权矩阵。也就是通过对应的标签用BP算法来得到实际输出Op与相应的理想输出Yp的误差对网络权值的导数,然后再通过权值更新方法去更新权值。ΔWl=-η∂E∂Wl---(10)]]>其中Wl代表l层的权值,η表示学习率,E表示误差。经过两个阶段的训练后即得到训练好的情感分类模型。步骤5:将步骤3中的语料中的测试集的文本向量输入CNN,根据步骤4中已经训练好的模型进行情感类别分类,如果实际输出文本的标签等于1,判定该文本表现的是积极情绪,如果实际输出文本的标签不等于1(即标签等于2),判定该文本表现的是消极情绪,统计实际输出文本的标签与期望输出文本的标签之间不同的个数,计算情感分类的准确率。以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1