基于词向量Doc2vec的双向LSTM情感分析*
2019-01-02张俊飞毕志升吴小玲
张俊飞 毕志升 吴小玲
(广州医科大学基础医学学院 广州 511436)
1 引言
文本情感分析是一个在自然语言上执行的主观任务,是对自然语言表达的词语、句子或篇章进行情感判断,其中词语的情感分析是其他层次研究的前提[1]。进入互联网时代,各个行业中文本评价信息在以井喷式增长,进一步提高文本信息情感分析的精确度能够为用户购买决策、政府舆论导向、商家商机把握等提供咨询服务。文本情感分析主要从情感倾向和情感强度两个维度对主观信息进行情感判断。在一些研究中也把情感倾向称为情感极性、语义倾向,可以分为正面(褒义)、负面(贬义)和中立三个层次,中立表示没有情感。情感强度表达主要通过两种方法实现:1)通过合适强度的情感词语,如“good”情感强度要小于“excellent”等;2)使用情感程度副词,如“非常”、“十分”、“一点点”等。
文本情感分析是对情感主观信息的挖掘,是计算机科学、计算语言学、自然语言处理等领域的研究热点之一。从信息技术发展的角度,文本情感分析技术有如下三种:1)基于情感词典的文本情感分析[2~3],情感词典包含积极词和消极词,通过情感词的分值计算实现情感类别输出。然而,此种方法忽略了词语的语义信息和词序特征,在句子和篇章级别的情感分析中会丢失很多情感信息。2)基于机器学习的情感分析,如利用SVM进行微博情感分析[4]、基于朴素贝叶斯情感分类算法[5]等。这种方法同基于情感词典有着同样丢失情感信息的特征,且需要做大量的特征提取工作。3)基于深度学习的情感分析,深度学习以不用再提取数据特征和处理线性不可分先天优势成为了文本情感分析研究的热点。刘龙飞等[6]证实了基于卷积神经网络的微博情感倾向性分析是有效的;王树恒等[7]整合词向量Word2vec和双向LSTM(Long short term memory networks)实现维吾尔语文本情感分析,并证实了比其他深度学习模型具有更高的情感分析准确率。
本研究借鉴先前学者研究成果,提出了利用词嵌入技术Doc2vec和双向长短期记忆网络LSTM进行文本情感分析方案,并详细对比阐述了Word2vec和长短期记忆网络LSTM,最后基于Question Pairs语义等价数据集语料和评教评语语料,通过两组对比试验:Word2vec和Doc2vec词向量生成对比实验、LSTM和双向LSTM评教评语情感分析对比实验,验证提出方案的有效性。
2 词嵌入技术:Word2vec、Doc2vec
不同形式的数据应用到深度学习模型中,通常输入的数据需要被标记成标量值,如卷积神经网络使用像素值作为输入,logistic回归使用一些可以量化的特征值作为输入,强化学习模型使用奖励信号来进行更新。Word2vec和Doc2vec实现一个向量表示一个词,应用到基于深度学习的NLP中。
词语的向量化表示有两种:One-Hot representation方式和词向量Distributed representation。One-Hot representation方式把每个词表示成一个只包含0和1的长向量,向量的维度是词典的大小,1的位置对应词在词典中的位置,如“评教”表示为[0 0 0 0 0 1 0 0 0 0 0…]。显然,这种方式存在如下问题:1)词典的大小决定了向量的维度,通常词典较大易造成向量的维度灾难;2)向量大部分为0值,非常稀疏,不利于处理任务;3)没有考虑词语之间的语义或语法关系,不适合词汇语义的比较运算。Word2vec和Doc2vec模型利用词的上下文信息环境将一个词从One-Hot representation方式映射为一个低维、稠密的K维实数向量(K为模型中超参数),是Distributed representation方式。
Word2vec词向量分布式表达来源于上下文的词预测模型,Mikolov等[8]提出 CBOW(Continuous Bag-of-Word)和Skip-gram(Continuous Skip-gram)两个模型,分别使用三层神经网络对语言建模预测上下文单词出现的概率。CBOW根据语句词语上下文信息预测该词语,Skip-gram则是利用当前词语推测上下文信息。两种模型都包含三层:输入层、投影层、输出层。如图1所示,以CBOW模型为例介绍其原理如下:首先wt为输出层词语,Context(wt)为其上下文,单侧个数为c,总长度为2c。利用One-Hot编码生成输入层和输出层词语向量:v(Context(wt-c))、v(Context(wt-c+1))、v(Context(wt))…v(Context(wt+c))。在投影层将2c个输入层向量求和(或取均值、直接拼接起来),即 xw=输出层通过Hierarchical Softmax或Negative Sampling降低训练复杂度,Hierarchical Softmax采用一棵Huffman树,以语料中出现的词为叶子节点,以词频为权重构成,其中叶子节点共N(即语料词典的长度)个。使用霍夫曼树来代替传统的神经网络,可以提高模型训练的效率,然而对于生僻的词语运算量将会很大。Negative Sampling摒弃了霍夫曼树,采用了负采样和二元逻辑回归的方法求解模型参数。基于Negative Sampling的CBOW模型算法流程如下所示,其中采用随机梯度上升法进行梯度迭代。
图1 CBOW模型
Algorithm:基于Negative Sampling的CBOW模型算法
输入:基于CBOW的语料训练样本,词向量的维度大小M,CBOW的上下文大小2c,步长η,负采样的个数neg。
过程:
1)随机初始化所有的模型参数θ,利用One-Hot编码初始化所有的词向量w;
2)对于每个训练样本(Contex(t w0),w0),负采样出neg个负例中心词wi,i=1,2,…,neg;
3)进行梯度上升迭代过程,对于训练集中的每一个样本(Contex(t w0),w0,w1,…,wneg)做如下处理:
(2)for i=0 to neg,计算:
(3)对于Context(w)中
的每一个词向量xk(共2c个)进行更新:
(4)如果梯度收敛,则结束梯度迭代,否则回到步骤3)继续迭代;
输出:词汇表每个词对应的模型参数θ,所有的词向量xk
当利用Word2vec词向量表示一个词的时候,Mikolov等给出了一个著名等式“king-man+woman=queen”,形象地说明了词向量处理文本的魔力。然而,当考虑到词语之间的排列顺序对句子或文本信息的影响,利用Word2vec词向量求和(或取均值、直接拼接起来)就显得差强人意。Doc2vec模型在Word2vec模型的基础上做出了改进,增加了词序语义的分析。Doc2vec模型把文档特征向量看作是一个表示当前文档中的其余部分信息或者主题信息的向量[9~10]。
Doc2Vec也有两种模型,分别为Distributed Memory(DM) 和 Distributed Bag-of-Words(DBOW)。DM模型在给定上下文和文档向量的情况下预测单词的概率,DBOW模型在给定Paragraph向量的情况下预测文档中一组随机单词的概率。如图2所示,以DM模型为例介绍Doc2Vec原理。DM模型在训练时,首先将每个文档ID和语料库中的所有词初始化一个One-Hot编码向量,然后将文档向量和上下文词语向量输入模型,投影层将这些向量累加(或取均值、直接拼接起来)得到中间向量,作为输出层的输入。输出层同样可以采用Hierarchical Softmax或Negative Sampling降低训练复杂度。在一个文档的训练过程中,文档ID保持不变,共享着同一个Paragraph向量,相当于在预测单词的概率时,利用了整个句子的语义。
图2 DM模型
3 深度神经网络技术:LSTM、双向LSTM
RNN(Recurrent Neural Networks)通过使用反向传播和记忆的机制,处理任意长度的序列,具备保持信息能力,可以将信息按照时间状态进行传递,但是其存在梯度爆炸或消失[11]和长期依赖问题。梯度问题影响网络结构的误差反向传递,长期依赖是指相隔较远的语义相关信息。Hochreiter[12]等提出了一种RNN的变种LSTM,用一个记忆单元对原RNN中的隐层节点进行替换,可以学习长期依赖信息。这个记忆单元由记忆细胞、输入门、遗忘门和输出门组成,其中记忆细胞用来存储和更新历史信息,三个门结构通过Sigmoid函数来决定信息的保留程度。LSTM模型能避免RNN的梯度问题,具有更强的“记忆能力”,能够很好地利用上下文特征信息,并保留文本的顺序信息,自动选择特征进行分类。[13]
图3 LSTM内部结构
LSTM内部结构如图3所示,其算法伪代码如下所示。遗忘门、输入门、输出门在当前时刻t接受上文信息ht-1和当前输入xt,然后与权重矩阵相乘,再与偏置量相加,最后利用Sigmod激活函数进行信息过滤;Gt表示tanh层创建的新候选值向量;St表示由状态St-1更新后的新细胞状态;Ot运行Sigmod层确定细胞状态输出部位;细胞状态经过tanh处理与 Ot相乘,最终输出 ht。
Algorithm:LSTM算法
输入:上文信息输入ht-1,当前输入信息xt
过程:
其中σ、tanh表示Sigmod函数、双曲正切函数;W、b表示权重矩阵、偏置向量;ft、it、Ot表示忘记门、输入门、输出门;ht表示最后的输出;
损失函数表示为l(t)=f(ht,yt)=‖ht-yt‖2,yt表示t时刻的输出标签;
输出:t时刻输入信息的输出ht
单向LSTM网络是以历史顺序处理序列的,忽略了当前信息之后的信息[14]。单向LSTM输出状态ht包含了t时刻之前的上文信息,为了得到下文信息,使用反向即将输入逆序处理的循环神经网络,构建更加强有力的基于LSTM的双向循环神经网络,来对时序数据进行建模。如图4所示,通过双向LSTM的隐藏层中保存有两个值A参与正向计算和A'参与反向计算。正向计算时,隐藏层的St与St-1有关;反向计算时,隐藏层的 St与 St+1有关。双向LSTM输出结果需要并联在一起,再交给后面的层来处理。
图4 双向LSTM内部结构
4 实验
为了验证本文提出的基于词向量Doc2vec的双向LSTM情感分析有效性,设计了两组对比实验:Word2vec和Doc2vec词向量生成对比实验、LSTM和双向LSTM评教评语情感分析对比实验。第一组实验采用Quora发布的Question Pairs语义等价数据集作为语料库;第二组实验采用本校多年教学评价评语,并把它们分成训练语料和测试语料两部分。在本文实验中使用TensorFlow作为深度学习平台,利用Gensim Python包实现对Wor2vec和Doc2vec词向量编程。为了更好地实现Python环境兼容和管理,采用Anaconda作为管理工具,并安装Keras高层框架,实现对神经网络库模块化。
4.1 Word2vec和Doc2vec词向量生成对比实验
Question Pairs语义等价数据集语料库包含了40多万对标注好的问题对,如果两个问题语义等价,则is_duplicate值为1,否则为0。具体格式如表1所示。
表1 Question Pairs语义等价数据集
在语料词向量生成过程中,Word2vec采用CBOW模式,Doc2vec采用DM模式,输出端两者都采用Negative Sampling进行训练。基于Word2vec和Doc2vec的句子对匹配方法主要分为三步:1)训练语料库的Doc2vec和Word2vec模型;2)分别用Doc2vec和Word2vec得到句子的向量表示;3)计算句子向量的余弦相似度,即为两个句子的匹配程度。当匹配相似度值大于指定阈值的时候,认为它们语义等价,label值为1,否则为0。最后比较label值和语料库中的is_duplicate值,计算准确度,得到如表2数据。由表2数据可知,Doc2vec对句子的表达优于Word2vec。
表2 基于Word2vec和Doc2vec的相似度判断准确率
4.2 LSTM和双向LSTM评教评语情感分析对比实验
本校多年教学评价评语数据每条都由量化评分和质性评语组成。实验设计质性评价评语集合为待情感分析的语料库中的数据属性;量化分数映射为语料库中标签值,如表3所示。
表3 标签映射规则
该实验设计流程如下;
首先,需要对训练语料库进行分词处理、去停用词等数据预处理,并进行One-Hot编码。分词采用结巴分词[15]系统精确模式,采用动态规划找出基于词频的最大切分组合,支持加载外部词库,对与未登录词采用HMM模型、Viterbi算法发现新词。
其次,采用Gensim python包、Doc2Vec的DM模型、Negative Sampling进行输出训练,生成词向量。
最后,把生成的词向量输入分别输入到双向LSTM和LSTM中,进行情感分析训练。双向LSTM输出结果需要利用 tf.contact(outputs,2)函数并联并进行转置操作,LSTM则可直接输出结果。两种深度神经网络最后都接一个全连接层进行softmax分类。经过每次迭代,输出损失函数值(loss)和模型准确率(accuracy)。本文经过25次迭代,双向LSTM的loss值下降到0.0584,accuracy达到0.9542;LSTM的loss值下降到0.0674,accuracy达到0.9242。利用生成的训练模型,进行测试集验证,双向LSTM的loss达到0.1547,accuracy为0.9357;LSTM的loss达到0.1647,accuracy为0.9057。由此可见双向LSTM较单向LSTM在教学评价评语情感分析中具有更高的准确率。
5 结语
本文针对词向量技术Word2vec没有充分考虑文档词序语义,LSTM没有利用下文信息实现情感分析判断,提出基于词向量Doc2vec的双向LSTM情感分析方案。通过对Word2vec的CBOW模式及模式输出端Negative Sampling训练阐述,引入词向量Doc2vec的介绍;利用LSTM原理介绍,过渡到双向LSTM的描述。最后陈述了两组对比试验:Word2vec和Doc2vec词向量生成对比实验、LSTM和双向LSTM评教评语情感分析对比实验。第一组实验验证了Doc2vec引入文档向量到词向量计算过程中,保存了文档词序语义信息,对句子的表达优于Word2vec。第二组实验使用了评教评语语料,分别利用LSTM和双向LSTM进行情感分析,从输出情感标识的损失函数值和精确度说明了双向LSTM具有更高的精准度。