严 鹏
(上海工程技术大学机械与汽车工程学院,上海 201620)
文本情感分析一般是对表达中的立场、情感、看法、偏向等人为倾向的剖析,作为新兴热点,其蕴含巨大的研究潜力,文本情感分类可认为是文本情感分析的重点研究方向[1-3]。依据表达的长短,文本情感分类为长文、段落和短句[4]。
研究文献表明,文本情感分类通常使用机器学习与情感规则方法[5-7]。基于机器学习方法需要人工进行特征提取,当文本数量过多时,需要消耗过多的人力和物力。针对这些问题,通过神经网络进行特征的自动提取成为新的趋势。
电子商务网站商品评论数据丰富,往往包含充足信息。以商品评论文本为对象进行情感分类,既有现实基础,也有积极的应用前景[8-13]。
当前使用的方法普遍需要消耗人力物力建立规则和提取特征,当该类方法应用于数据丰富的商品评论情感分类任务时,通常需要花费大量时间进行规则建立与特征提取。针对上述问题,本文提出基于XL-GSAtMSC 的商品评论情感分类模型,运用神经网络进行特征自动提取,通过与各类机器学习模型进行研究对比验证了该模型的有效性与实用性。
卷积神经网络[14](Convolutional Neural Networks,CNN)之前用来解析图片,现用于NLP 领域。CNN 一般由卷积、池化与全连接三层所构,如图1 所示。2014 年,Kim[14]使用提前生成的词向量来表达文本,利用卷积层提取特征进行分类。CNN 主要用于提取局部特征,因而忽略了文本上下文语义关系,对文本情感倾向性判断有一定影响。
Fig.1 The structure of CNN图1 CNN 结构
循环神经网络[15](Recurrent Neural Network,RNN)通常用于时序序列数据,通过神经元之间的连接形成有向循环,使神经元对前序的输出信息进行记忆,并在当前输出中应用,因此它能对输入序列可变的数据进行处理。该网络的记忆功能能在文本处理时考虑上文语义信息,因此广泛应用于NLP 任务,如情感分析、机器翻译和智能问答等子领域[16]。在实际应用中,RNN 采用线性序列结构进行反向传播,易导致梯度消失和梯度爆炸等问题,且难以并行运算。
Attention 机制[17]前期用来处理图片,2014 年Bahdanau等[18]在文本翻译时最先把Attention 机制结合NLP 使用,利用Attention 机制直接建立源语句与目标语句的联系,解决Seq2Seq(Sequence to Sequence)[19]无法处理长语句的缺陷,由此引发Attention 机制研究热潮。Attention 函数的本质可以描述为一个查询(query)到一系列键—值对(key-value)的映射。Attention 函数公式如式(1)所示,计算流程如图2所示。
Fig.2 Attention calculation process图2 Attention 计算流程
自回归语言模型[20](Auto Regressive Language Model)是根据前文的文本内容预测下一个可能出现的单词语言模型,即自左向右或自右向左的语言模型。该模型在结构设计上天然匹配自然语言生成任务,如文本摘要、机器翻译等。由于该模型结构设计上的缺陷,只能单独使用上文或下文信息,无法同时使用上下文信息。自回归语言模型如式(2)所示。
本文模型架构如图3 所示,由输入层、XLNet 层、Bi-GRU 层、Self-Attention 层、MSCNN 层、Softmax层和输出层组成。其中,输入层、XLNet 层将切分词转为数字表达,Bi-GRU层、Self-Attention 层、MSCNN层提取文本向量特征,Softmax 层对特征进行计算和分类,输出层输出结果。
Fig.3 The structure of model图3 Model 结构
为保证数据的真实性与可靠性,本文以网络购物平台京东商城的电子产品评论作为数据集进行情感分类研究。将网站获取的用户评论文本作为原始数据集,并使用人工标注的方法将文本进行初步情感分类,情感分为正面情感、负面情感和中性情感3 类[21]。文本预处理流程如图4所示。
Fig.4 Text preprocessing flow图4 文本预处理流程
由于原始数据集中存在语料重复、评论内容包含无用符号等情况,若不进行数据清洗直接使用原始数据集,可能无法从评论文本中获取正确的情感倾向性,从而导致模型准确率降低。
中文分词是数据预处理的一个重要环节,目的是将句子划分为一个个单独的词语,通过独立词获取整个句子的语义信息。数据集因包含较多网络用语,以及在线评论文本的特殊性,易导致普通的情感词典无法准确分词。本研究将网络用语词与口语化情感词添加进自定义情感词典以提高中文分词的准确性,并使用基于Python 语言的分词工具jieba 分词进行中文分词。
停用词通常指某类在文本分析中无用、无实义的词。为了加快模型训练与运行,应删掉这类停用词。本文使用“百度停用词表”去停用词,去除停用词后有利于更好地判断电商评论文本要表达的情感极性[22]。
文本预处理后得到20 000 条评论文本数据集,其中正面情感7 012 条,中性情感5 711 条,负面情感7 277 条,分别占比35%、28.6%和36.4%。在本模型中,将处理好的文本分为3 部分:训练样本用于训练模型,验证样本用于验证模型,测试样本用于测试模型,配比为7∶1∶2。正面情感数据集样例:“用一段时间感觉还不错可以”;负面情感数据集样例:“屏幕不错但是音质很差完全没有高低音可言介意音效 慎重”;中性情感数据集样例:“荣耀的性价比不高想说爱你不容易”。
XL-GSAtMSC 模型由XLNet层、Bi-GRU 层、Self-Attention 层和MSCNN层组成。
2.2.1 XLNet 层
当前NLP 任务大都使用Word2Vec 和Glove 预训练词向量,本文选用XLNet 生成词向量,因为它能更好体现句子层语义在空间上的关系。XLNet 属于自回归语言模型的变体,为解决自回归语言模型只能单独使用上文或者下文信息的缺点,引入排列语言模型(Permutation Language Model,PLM)和双流自注意力。
PLM 在保证位置编码不变的情况下,将输入序列顺序打乱,但是预测顺序仍按原始位置顺序编码进行预测。如果遍历所有分解方法PLM 就能学习到所有预测词的上下文信息,XLNet 就只对随机排列后的末尾数词进行预测。
PLM 的结构缺陷会导致无法知道下一个预测词为何词,因此需使用双流自注意力解决这个问题。双流自注意力有两个分离的信息流,分别是查询流和内容流。使用查询流的目的是找到所需预测词,该流Query 输入为预测词的位置信息;内容流为查询流提供其它词的内容向量,该流Query 输入为预测词的内容信息和位置信息。
XLNet 主体结构为Transformer-XL,原始Transformer 结构会导致无法捕获更长远文本的语义信息,因此Transformer-XL 采用片段级递归机制和相对位置编码机制对原始Transformer 进行结构优化。片段级递归机制在当前时刻计算时,通过循环递归方式利用上一时刻的隐藏状态信息,使每次计算可以利用更大范围的上下文信息,但是由于片段级递归机制会导致位置编码的重叠,因此采用相对位置编码。
2.2.2 Bi-GRU 层
门控循环单元(Gate Recurrent Unit,GRU)是循环神经网络RNN 的一种变体,与长短期记忆网络(Long-Short Term Memory,LSTM)一样可以学习单词之间的长距离依赖关系,并能有效解决RNN 梯度消失和优化困难等问题。大多数情况下GRU 与LSTM 模型效果相差不大,但是GRU将LSTM 的“遗忘门”和“输入门”合并为单独的“更新门”,同时也合并了cell state 和hidden state,使GRU 结构比LSTM简化很多,大大加快了模型的收敛速度,提高了训练效率。
单向GRU 只能使用之前时刻的时序特征进行后续时刻输出的预测,但忽略了未来的时序特征。在文本分析中,当前时刻词语的预测不仅与之前的时序信息相关,还可能与后续的文本信息相关,若忽略下文信息可能导致预测结果不准确。因此,本模型采用双向GRU(Bi-GRU)的网络结构,不仅能获取当前时刻词前文本的有效信息,还能保留当前词后文本的重要信息,最终基于这些重要信息对当前时刻词进行预测。
2.2.3 Self-Attention 层
Self-Attention 是注意力机制的变体。实际上卷积神经网络和循环神经网络都是对长文本序列的“局部编码”,无法轻易建立输入序列的长距离依赖特征,需要进行若干步骤计算累加才能捕获长距离依赖特征,距离越远越难捕获。而Self-Attention 能生成任意两个单词的连接权重,借此建立远距离依赖特征,从而能处理长文本序列。因为Self-Attention 中的Query 是对自身输入的变换,而经典Attention 的Query 是对外部输入的变换。
在Bi-GRU 层后添加Self-Attention 层不仅能在一定程度上减轻GRU 的长期记忆负担,还能学习到长文本内部的远距离依赖特征。除此之外,Self-Attention 还能增加并行运算,提高模型处理效率。
2.2.4 MSCNN 层
多核跳跃CNN(Multi-Skip CNN,MSCNN)能抽取丰富文本特征,运用融合数个尺寸卷积核的卷积层对Bi-GRU层的提取特征进行卷积操作。单尺寸核不能抽取数个类别特征,抽取数个特征需同时采取数个不同尺寸卷积核,一个卷积核可以抽取单类别特征,获取纵向差异信息。研究表明,先用一组大小为2、3、4 的一维卷积核进行初步特征提取,再分别接入大小为2 的一维卷积核进行视野扩大,能充分提取文本特征。
卷积层获取的特征为高维特征,着重词语在语序中的信息,有时可能忽略了词语本体语义信息。本模型在传统CNN 的基础上进行改进,添加Skip 层,直接引入Bi-GRU 输出特征,保留较多的低维特征,对卷积层提取特征起到信息补充作用。跳跃层打破对称性、线性依赖性,增强了网络的泛化能力,避免为网络引入多余参数与过多计算,在节省模型训练时间的同时增强模型准确率。
将Bi-GRU 提取的特征进行跳跃处理后直接进行pooling 处理,与池化层输出特征进行拼接,最后进行矩阵拉伸输出到分类层。MSCNN 结构如图5 所示。
Fig.5 The structure of MSCNN图5 MSCNN 结构
为保证各模型对比的公平性,本研究中所有模型都在相同环境下进行。本文使用当前构建深度学习模型与处理数据的主流语言Python,使用的深度学习框架为工业界主流的Tensorflow 框架进行实验,实验环境参数如表1 所示。
Table 1 Experimental environmental parameters表1 实验环境参数
为了对分类模型效果进行有效评测,本研究使用准确比(Accuracy)、精确比(Precision)、查全比(Recall)和F1 值(F1)这4 项测评标准,各测评标准公式分别如式(3)、(4)、(5)、(6)所示。
TP(True Positive)为把正样本识别成正类的个数,TN(True Negative)为把负样本识别成负类的个数,FP(False Positive)为把负样本识别成正类的个数,FN(False Negative)为把正样本识别成负类的个数。
本研究设计多个模型进行对比,其中传统机器学习模型为SVM、Bayes 和Logistic Regression(LR),深度学习模型为XL-GSAtMSC,对比结果如表2 所示。
Table 2 Model results表2 模型结果
从表2 可以看出,传统机器学习模型SVM、Bayes 和LR在评论情感多分类任务中各类评价指标数据相近,而本文提出的改进深度学习模型XL-GSAtMSC 在相同任务中各类评价指标数据均高于机器学习模型10%左右。由此可见,XL-GSAtMSC 对商品评论的情感多分类具有较好的实用性和较高的准确性。
本文提出的XL-GSAtMSC 模型着重于CNN 与RNN 改进内部结构的优化设计,并基于XLNet 改进文本矩阵化表示方式。从研究结果可以看出,该模型较传统情感词典和机器学习方法有很大优势,既克服了传统情感词典方法中领域词典不足的缺陷,又不用人为提取特征,预测结果得到很大提升,证明该模型可行及具有实用性。但本研究尚未与基于CNN 与RNN 改进的其它模型进行实验和比较,后续将从该方向拓展。