黄泽民 吴迎岗
(广东工业大学计算机学院 广东 广州 510006)
随着通信网络和移动应用的快速发展,各种社交媒体也渐渐兴旺,网络用户越来越多,用户通过各种通信媒体来评论热点事件、表达自己的感受,从而产生了大量带有感情色彩的文本信息,这些情感倾向对政府相关部门或商家都有很大用处,但是这些海量文本的评论形式复杂多样,仅靠人工处理存在工作量重和实时性较差等问题,如Hu等[1]依托WordNet词典计算待处理文本的情感得分,虽取得了较好的预测效果,但存在大量人工标注工作。自然语言处理领域的文本情感分析[2]可以从这些复杂多样的信息中提取情感倾向,从而应用于各种需要情感倾向的场景。
目前,情感分析模型主要有基于机器学习和基于神经网络等方法。基于机器学习的方法,如Pang等[3]应用支持向量机、朴素贝叶斯和最大熵等情感分析方法,在分析影评文本情感上有较好的效果,但是在各媒体平台中,存在评论文本长度不一致、表达不规整的问题,导致传统的机器学习方法需要面临样本人工结构化、表达稀疏和计算繁杂等问题,不能获得理想的结果。基于神经网络的方法,杨云龙等[4]提出通过GRU获得语义特征和整体标量信息;然后在初始胶囊层用动态路由算法进行迭代后,获取到融合文本整体属性的向量化表示,最后在主胶囊层获得更准确的文本特征,并根据每个特征的特征表示强弱来分析文本的情感极性,从而在测试集有着不错的预测效果。谌志群等[5]提出采用BERT模型生成文本的动态向量表征,然后词表征输入到双向LSTM网络中进行情感分类,取得了不错的预测结果。Salur等[6]将不同的词向量化方法,如FastText、Word2Vec等,与不同的深度学习方法(GRU、LSTM、BiLSTM)适当整合在一起,提取了不同的特征,结合这些特征来训练和预测分类。Ma等[7]利用特征复合内存网络(FCMN)提取三种特征去更好地表示上下文单词的词向量,而且策略性地结合特征表示和词嵌入以提高注意力机制的作用,从而在测试集的情感预测方面有较好效果。赵亚欧等[8]使用预训练好的基于字符的向量初始化ELMo层,然后利用了多尺度卷积神经网络二次抽取词向量的特征,将特征融合后以生成句子的语义表征,此方法能明显提高预测准确率。上述学者虽都取得较好的分类效果,但没有综合考虑中文词汇的多义词性质、上下文信息和词语之间的联系特征对情感分析的影响。
基于统计机器学习的方法虽然提高了准确率,但人工结构化数据需要先验知识才能使得该方法应用于规模较大的样本集,导致效率下降。基于神经网络的方法可以自动提取特征,但使用单一的神经网络不能够充分提取句子特征和词语特征,且基于神经网络的模型输入是句子的词向量,若仅用Word2vec、glove等学习来的词向量作为向量表示,学习到的只是静态向量,即不能够学习到多义词本身具有的灵活性运用,会减低文本情感倾向的准确预测。综上,本文提出的结合BERT和卷积双向简单循环网络模型能解决以上问题,且在卷积层注入LRN和在循环网络中实现训练的并行化,有效地提高预测准确率和减少训练时间。
结合BERT和卷积双向简单循环网络模型如图1所示。数据预处理是对评论文本分词和去噪;BERT层是对句子词静态向量的重构,以生成融合语境的词向量表征;卷积层二次提取词语特征,利用LRN优化特征图;BiSRU提取文本的上下文信息;最后情感分类使用Softmax回归。
图1 文本情感分析模型
评论文本存在各种无用信息和每个句子长短不一,需对评论文本进行预处理:对评论文本利用正则表达式进行去噪,如标点符号、表情等;然后对语料的每一条独立文本进行分词,并且会去除干扰词和停用词等,分词后只包含具有语义信息的词语集合,且保证分词数目不超过设置的最大长度减2,因为剩下的两个位置用来存放句首标志和分句标志;预处理后对文本的每个分词进行静态向量映射,用来初始化BERT模型,此时的向量表示不能解决多义词问题。
自然语言处理的预训练模型[9]有动态模型BERT[10],其采用了融合特征能力强的双向Transformer模型,预训练效果相比静态模型Word2vec[11]能解决多义词表征问题;相比动态模型ELMO模型[12]和GPT模型[13]有更强的语境融合能力。BERT预训练模型如图2所示。
图2 BERT的网络模型
BERT模型的输入向量ei由三种不同的向量对应元素相加而成。第一种为词静态向量,可由Word2vec工具得到;第二种为位置向量,用来保存分词在语料序列中的相对位置或绝对位置;第三种为句向量,由于本文的情感预测是句子级别的情感分析,即输入是一个句子,故仅使用一个句向量,且对每个句子添加一个[CLS]标志向量(可用于下游的分类任务)和句尾[SEP]标志向量(用作两个句子的分隔符)。
本文利用了谷歌的预训练模型来微调BERT模型,由于BERT是随机掩码模型,掩码词可能在微调阶段未出现过,故对被掩码词用[mask]标志替代、语料其他词替代或不变处理,来保证模型的泛化性。
Transformer结构如图3所示。其中多头注意力子层是词向量化的关键,由8个自注意力机制组成。
图3 Transformer模型结构
BERT在操作中是基于矩阵计算的,全部输入向量拼接成向量矩阵E,E={e1,e2,…,en},交付给自注意力机制,其输出见式(1)和式(2)。
Q=EWQ,K=EWK,V=EWV
(1)
(2)
计算出自注意力的输出后,通过式(3)和式(4)得出多头注意力机制的输出,记为X。
(3)
X=MultiHead(Q,K,V)=
concat(Attention1,Attention2,…,Attention8)·W
(4)
取BERT模型最后一层的输出向量矩阵记为T={t1,t2,…,tn},矩阵T的维度与BERT输入矩阵E相同,每个向量表示分词的无歧义深度向量表示,作为下游任务的输入。
卷积神经网络是能在给定的结构中总结出具有特征性的局部预测器,将它们结合以生成特征矩阵来表示该结构,捕获最具有任务特征的局部特征。BERT层的输出向量矩阵T作为卷积神经网络的输入,卷积核在句子词向量矩阵上滑动,卷积核与对应的句子词向量矩阵窗口上进行对应元素相乘后作和,其值作为最后特征矩阵的一个特征值,所有特征值组成一幅特征图,其计算式为式(5)、式(6)和式(7)。
xi=⊕Ti:i+t-1
(5)
ci=f(wc·xi+bc)
(6)
y={c1,c2,…,ci,…,cn-t+1}
(7)
式中:卷积核大小为t;xi为第i个窗口的拼接向量,即xi=⊕Ti:i+t-1=[Ti,Ti+1,…,Ti+t-1],xi∈Rt×M(M为词向量维度);权重矩阵wc∈Rt×M和偏置bc都通过参数估计过程进行学习;f为激励函数,去线性化处理;ci表示特征图的第i个特征值,为标量,ci∈R;y为卷积完成得到的特征图。
本文模型使用多个卷积核,(1) 充分提取特征;(2) 为LRN优化特征图的归一化做前提。将所有的特征图经过ReLU去线性化和最大池化处理后,送入LRN局部优化层,来优化所有的特征图。
局部响应归一化LRN层[14]模仿了生物神经系统的“侧抑制”机制,使局部神经元之间竞争响应机会,让响应较大的值变得相对更大,并抑制其他响应较小的神经元。卷积神经网络在池化后利用LRN优化使同一个特征图的特征值都有相似的方差,能加快模型的收敛速度和提高特征提取能力。本文的LRN使用通道内归一化模式,即在同一个特征图上操作。LRN的计算公式见式(8)。
(8)
式中:a、b分别表示在同一个特征图的原特征值和LRN优化后的特征值;n表示局部归一化区域的大小,设为5;α为缩放因子,设为1;β为指数项,设为5;k为平滑操作,设为1;∑是以当前特征值为中心的区域内计算平方和,即1×n×n个特征值的平方和,不满1×n×n个特征值的会补零后再求平方和。
每个原始特征图的每一个特征值都是除以一个系数来达到归一化的目的,该系数为式(8)等式右边的分母部分。经过LRN优化后的各个特征图与原始特征图的维度相同,对所有经LRN优化后的所有特征图连接成表示句子特征的特征向量,作为BiSRU层的输入。
长短期记忆网络LSTM的出现,通过对循环层的重新设计来避免了RNN网络的长期依赖问题和梯度消失的问题,并有效解决了历史链接问题,但LSTM神经网络的训练很难并行化。本文提出的SRU模型不仅具有LSTM的能力,也具有并行计算的能力,它平衡了输入的顺序依赖和独立性,简化了计算状态的过程。SRU模型[15]的网络结构如图4所示。
图4 SRU模型的网络结构
在图4中,Qt表示在t时刻的输入,ft表示忘记门,rt表示在t时刻复位门,At和Ht别表示当前时刻t的细胞状态和最终输出,At-1表示上一时刻t-1的细胞状态,σ和g代表Sigmoid函数和激活函数(双曲正切或ReLU),⊙表示矩阵对应元素的乘法运算。
SRU模型使用丢弃连接,即当前时刻的输入消除了对上一时刻Ht-1的依赖性,以下是SRU模型的计算公式:
ft=σ(WfQt+bf)
(9)
rt=σ(WrQt+br)
(10)
yt=σ(W*Qt)
(11)
At=ft⊙At-1+(1-ft)⊙yt
(12)
Ht=rt⊙g(At)+(1-rt)⊙Qt
(13)
式中:Wf、Wr和W*是参数矩阵;bf、br是偏置,都是训练时要学习的参数向量。
从式(9)到式(11)可以看到Ht-1的依赖性被消除了,通过式(12)和式(13)可以快速地实现,因为输出不再依赖于输入Ht-1,从而可以批次处理所有时间步的矩阵相乘,明显提高计算速度。
利用双向SRU允许模型在序列内部向前和向后看任意远的距离。BiSRU模型是由两个SRU网络通过上下叠加形成的,每一个时刻会同时存在相反方向的SRU中,将卷积层的输出向量分别输入到正反序SRU,会得到SRU每个时间步的输出,每一个时间步的计算公式为:
(14)
将每一个时间步的正反序叠加值进行拼接,拼接的方式能在线性时间内高效地运算,最后得到全部时间步的输出。BiSRU模型的输出输入到全连接dropout层,该层在训练时会概率性地随机作用于隐藏层的节点,使其暂时被选择隐藏掉而不工作,但是其权重会被保留,从而提高了模型的泛化能力,在本文的dropout比率为0.5。最后,利用Softmax回归得到预测概率分布,取概率值最大的为预测结果。
实验的数据集为中文版本的Twitter数据集,包含2万多条中文标注语料,其中积极情感句子8 700多条,消极句子8 100多条,中性句子5 500条。由于数据不平衡会造成分类器在训练的过程中严重偏向样本较多的类别,使模型的综合性能大大下降,因此,本文为保证训练集各类别的数目相同,都设为5 000条,各类别剩余的数据集作为测试集或者验证集。为验证模型在文本情感分析的有效性,使用评价标准为准确率(Precision)、召回率(Recall)和F1(F-measure)值。计算式如式(15)-式(17)所示。公式的参数含义见表1。
表1 公式参数含义
Precision表示预测为某个类别的样本数目与真正类别的样本数目的比值。
(15)
Recall表示预测为某个类别中的真实类别数目与所有真实类别数目的比值。
(16)
由于上述两种经常矛盾,故引入综合评价指标F1,计算如下:
(17)
本文的情感分类是三分类,因此在计算出各个类别对应的准确率和召回率后,采用平均值作为分类器性能的评价指标。
本文模型的各层参数设置如下:词向量维度为768维;由于汉语中词语之间的距离过大会导致语义联系较弱,故卷积核粒度分别为3、4和5,激活函数选择ReLU,因ReLU是无上界函数,适应LRN的“侧抑制”原理;SRU隐藏层节数为128;损失函数为交叉熵函数(学习率为0.000 01);模型优化器为Adam;训练批次长度为32;epoch为10;最后的Dense层使用3分类。
为验证本文方法的有效性,在相同的实验环境下,将本文情感分析模型与其他情感分析混合模型进行对比,最后结果如表2所示。
表2 与其他模型的性能比较
基线模型1是直接将BERT的输出连接到全连接层后输入到Softmax分类器得出的结果,相对基线模型,本文模型的准确率能提高近4百分点;对比模型2和模型3是为了验证BERT预训练模型的有效性,因为BERT预训练解决了多义词表征问题和利用了融合文本能力强的Transformer作为预训练模型的子结构,从而使模型分析能力大大提升,且BERT模型使用的是预训练的方式,是从大语料集合中训练语义向量,而非在任务语料中训练,使得训练出来的词向量表征拥有更高的泛化程度;与模型4和模型5作对比是为了验证BiSRU模型的语义学习的有效性,由于LSTM和SRU模型能对历史信息进行策略性的过滤和保留,使得语义学习的能力更强;与模型6对比是为了验证卷积层注入LRN层的预测效果,由表2可知注入LRN层后预测准确率明显提高;对比模型7和模型8是为了验证本文模型与基于BERT的单一模型的有效性,由表2可知,相比基于BERT的单一特征提取模型,本文利用的混合模型能更好地提取文本特征,在各个评价指标都有不同程度的提升。最终的实验结果表明,本文提出的结合BERT和卷积双向简单循环网络的文本情感分析在测试集上有很好的表现,证明了本文模型的有效性。
本文的模型分别与BERT-CNN-BiLSTM、BERT-CNN-LSTM等模型的每一个epoch的训练时间进行比较,结果如图5所示,在相同的实验环境下,本文模型的训练时间明显缩小。BERT预训练模型总参数大小为110 MB,如果利用计算复杂度高的LSTM网络作为下游任务的模型,无疑会导致训练时间大大增加,故本文利用了SRU模型的并行化的计算能力,在保证准确率的条件下,能有效地减少训练时间。
图5 每个epoch的训练时间
本文提出的结合BERT和卷积双向简单循环网络的文本分析模型实现了文本情感倾向的三分类,在实验数据集上的预测结果表明,本文提出的模型能够提取融合文本语境的词表征,然后利用该词表征作为下游策略模型的输入,并在卷积层注入LRN层和循环网络中并行化参数估计过程,从而有效提升模型的情感分析的总体性能。