王 昆,郑 毅,方书雅,刘守印
(华中师范大学物理科学与技术学院,武汉 430079)
(*通信作者电子邮箱syliu@mail.ccnu.edu.cn)
情感分析(Sentiment Analysis,SA)是自然语言处理(Natural Language Processing,NLP)中一个非常重要的子领域。近些年在学术界获得广泛的关注,在现实中也具有重要的应用前景[1]。
实际生活中,用户在互联网上产生的文本中包含的情感是复杂的、多方面的,用户在一段文本中会表达出在不同方面的不同情感倾向。基于这个事实,Liu[2]提出了方面级情感分析(Aspect-Based Sentiment Analysis,ABSA)任务,旨在分类出文本在不同方面所包含的情感,实现文本的多维度情感理解功能。但是,因为ABSA 任务的复杂性,人工提取文本中的方面及其表达的情感非常困难,所以相关数据集稀缺,初期的工作主要集中在如何提取方面的研究[3]。近几年,Pontiki 等[4-5]在SemEval比赛中增加了基于ABSA 的子任务,同时给出了短文本ABSA 数据集,于是开始有大量的学者针对ABSA 任务中方面信息利用和情感上下文问题提出各种解决方法。目前ABSA 任务的主流解决方案包括早期复杂的特征工程方法[6-7]以及近期的神经网络算法[8-11]。已有研究结果表明,神经网络算法优于特征工程方法[1]。在神经网络算法中,Wang 等[8]首次基于注意力机制和长短时记忆网络(Long Short-Term Memory,LSTM)提出ATAE-LSTM(ATtention-based LSTM with Aspect Embedding)模型,利用方面语义来搜寻文本中与之相关位置的内容,在短文本ABSA 数据集上性能优于单纯的LSTM[12]。Ma等[9]注意到方面及其上下文的协调性,在ATAELSTM 的基础上进一步提出了交互式注意力模型(Interactive Attention Network,IAN),考虑了文本与方面语义之间的交互,进一步提升了情感分类正确率。Huang 等[10]注意到IAN的池化层忽略了文本与方面中的每个词之间的相互关系,提出了没有池化层的AOA-LSTM(Attention Over Attention LSTM)模型,取得了比IAN 更优的分类结果。Xue 等[11]首次提出结合卷积神经网络(Convolutional Neural Network,CNN)[13]和门控机制[14]的GCAE(Gated Convolutional network with Aspect Embedding)模型,利用门控单元从文本中筛选出与方面相关的信息,取得了更高的正确率。
虽然关于方面级情感分析的带标签数据稀缺,但是非方面级情感分析的标记数据集很丰富,Chen 等[15]提出将转移胶囊网络(Transfer Capsule Network,TransCap)用于将迁移非方面级情感分析中的知识到方面级情感分类,自此该领域的研究开始倾向于使用迁移学习算法。同时,随着语言模型的不断发展,Devlin 等[16]提出的文本预训练模型BERT(Bidirectional Encoder Representation from Transformers)在处理文本分类任务中表现出色,摒弃了卷积和循环神经网络的结构,使用双向Transformer[17]搭建整体网络,预训练过程中能够从浅入深地学习到语言中包含的语法语义[18]。BERT 同样适用于ABSA 任务,Sun 等[1]利用方面来构建疑问句,并结合BERT 模型提出BERT-pair-QA-M 等模型,实验结果表明在短文本ABSA 数据集上比使用神经网络算法的分类结果更优。Gao 等[19]在BERT 的基础上提出TD-BERT 模型,通过抽取BERT编码层特定位置的特征进行方面级情感分类,进一步提升分类性能,表明BERT在特征提取方面具有优越性能。
在长文本ABSA 任务上,由于在方面上表达的情感信息只存在于该方面相关的语句中,因此如何挖掘文本中与方面有关的上下文是一个非常重要的挑战。袁丁等[20]基于GCAE,提出了CNN-GCAE 模型,利用字词向量联合模型对数据进行预处理,克服了GCAE 模型在数据预处理方面的不足,提高了在长文本AI Challenger2018 细粒度情感分析比赛数据集上的召回率[20]。
以上现有的神经网络算法仍然存在如下问题:首先,基于循环神经网络的模型仍然存在一定的梯度消失,而基于卷积神经网络的模型没有考虑到文本的时序关系,在长文本ABSA任务上的泛化能力较差;其次,因为BERT 的最长输入序列长度固定,超过这个长度将被直接截断,被截断的文本可能仍然具有没有被利用的信息。所以,对于长文本还需要进一步的数据处理,神经网络模型的性能还有进一步提升的空间。同时,AI Challenger2018 细粒度情感分析比赛数据集上将方面分为粗粒度方面和细粒度方面两个层次,对于粒度方面的利用研究目前还在初步阶段,如何把现有的模型应用在这个数据集上是一个挑战。
针对以上问题,本文提出文本筛选和改进BERT 的算法来处理长文本的ABSA 任务。该算法首先利用文本筛选网络(Text Filter Network,TFN)对文本中的每个语句进行粗粒度方面的分类,得到部分语句,再对部分语句按次序进行组合,输入到BERT-Pair-ATT 情感分类模型中进行训练和预测。BERT-Pair-ATT 模型使用句子对的方式来处理输入。因为原始BERT 模型直接将每个位置点的输出进行平均得到特征向量,没有体现出每个位置的重要程度,所以本文在BERT 的顶层增加一个注意力层,对BERT 的输出特征赋予不同的权重。实验结果表明,使用本文算法在长文本方面情感分析数据集上的结果比原始BERT高0.58%。本文主要工作为:
1)设计了文本筛选网络TFN,利用LSTM来提取层次方面中粗粒度方面的文本特征,同时结合了注意力机制来对文本中每个部分进行特征加权,最终筛选出和粗粒度方面相关的文本(部分语句),对数据进行充分的预处理。
2)先利用TFN 对原始文本进行一次文本筛选,再将带有方面信息的文本(部分语句)连同细粒度方面同时输入至BERT-Pair-ATT 中进行特征提取,BERT-Pair-ATT 模型充分提取方面中包含的语义特征,提高了长文本ABSA任务的性能。
本文重点研究长文本在粗粒度和细粒度两个层次下所包含的情感。对于一段文本,需要分类出在预定义的粗粒度方面下的每个细粒度方面所包含的4 种情感趋势。情感趋势的集合表示为E={“未提及”,“积极”,“中性”,“消极”}。统一起见,本文将文本表示为S,S可以由单个字符char的集合来表示,即Sc={char1,char2,…,charc_num};经过jieba 分词软件分词可以在词word的角度表示为Sw={word1,word2,…,wordw_num};经过分句之后在句子sent上表示为句子的组合Ss={sent1,sent2,…,sents_num},其中c_num、w_num和s_num分别为文本的包含的字符总数、单词总数和句子总数。Ss经过一定方法筛选之后的集合表示为Sf={sf1,sf2,…,sfm},m为Sf中句子总数,Sf为Ss的子集。粗粒度方面(Coarse Aspect)表示为CA={CA1,CA2,…,CAp},细粒度方面(Fine Aspect)表示为FA={FA1,FA2,…,FAq},其中p、q代表的集合中方面的总数,FA集合中的元素是将CA中元素进一步细粒度划分得到的。
本文的算法框架如图1 所示,分为两个步骤:第一步首先对数据集中的原始文本进行分句算法处理得到句子组合Ss={sent1,sent2,…,sents_num}。为保证句子的次序,依次将每个句子与每个粗粒度方面的组合{senti,CAr}输入至TFN 模型中判断这个句子是否与此粗粒度方面相关,相关则输出1,反之输出0,其中r为CA 中第r个粗粒度方面。最终得到所有相关语句的集合Sf={sf1,sf2,…,sfm},其中m≤s_num;当所有语句都与粗粒度方面无关时,选取原始文本,此时m=s_num。这一步能够压缩数据集中文本的长度,增强数据在第二步的信息效度。第二步利用基于BERT 的BERT-Pair-ATT 模型进行方面级情感分类,其输入采用句子对的方式,第一个文本为Sf中句子按照次序组合起来的新文本,第二个文本为CAr层次下的每个FA,例如“位置”层次下的“交通是否便利”,输出为情感趋势E中的类标签。
图1 本文算法框架Fig.1 Framework of proposed algorithm
TFN 模型的任务是对数据集的文本中的每个句子按照与之相关的粗粒度方面进行正确分类,筛选出对于第二步有分类价值的部分语句。本文设计的TFN 模型整体框架如图2 所示。主要包含了词嵌入层、两个LSTM 编码器[12]、注意力层和二分类器模块。本文利用词嵌入模型Word2Vec[21-22]在原始语料库上预先训练出一个领域相关的词嵌入模型作为词嵌入层的模型参数,大小为v×d,v为词汇表的大小,d为词嵌入的维度。通过LSTM 模型分别对句子和粗粒度方面文本建模,分别得到大小为h×l和h×c的对应嵌入向量,其中h为LSTM的隐藏层的维度,l、c分别为分句后语句和粗粒度方面在词层面的长度。利用注意力机制,得到原始文本与粗粒度方面的注意力权重。最后用权重与句嵌入向量相乘的结果作为分类器的特征向量输入,分类出这个句子是否和粗粒度方面是相关的。以下将具体介绍单独模块细节。
图2 TFN模型架构Fig.2 TFN model architecture
1.3.1 LSTM编码器
如图3所示的LSTM 结构[12],分别对语句以及粗粒度方面建模。输入的语句由l个词组成{ws1,ws2,…,ws}l,粗粒度方面由c个词组成{wa1,wa2,…,wac}。输入至词嵌入层,得到每个词的向量表示wi∈Rd,对于没有出现在词表中的词,本文使用U(-0.25,0.25)的均匀分布随机初始化,然后通过LSTM 网络得到语句的张量表示Sh=[hs1,hs2,…,hsl],Sh∈Rh×l以及粗粒度方面的张量表示F=[ha1,ha2,…,hac],F∈Rh×c,其中hk为LSTM的隐藏层在每一个时间点k上的输出,LSTM 的隐藏层的输出具体的计算公式如式(1)~(6)所示:
其中:ik、fk、ok分别为输入门、遗忘门和输出门在k时刻的输出;和cellk分别为k时刻的中间量和状态量;Wi、Wf、Wo、Wc为权重矩阵;bi、bf、bo、bc为偏置向量;σ为Sigmoid函数;“⊙”符号为矩阵对应元素相乘。
图3 LSTM结构Fig.3 LSTM structure
1.3.2 注意力模块
注意力机制在情感分析中广泛应用,在情感分析任务中有很多模型中都嵌入了注意力机制[8-10]。本文提出一种基于注意力机制的架构,将粗粒度方面的信息与原始文本同时考虑进来,共同计算对于语句中每个词的注意力分数。在方面情感分析中,Wang 等[8]证明了方面对于相关任务的重要性,并且本文认为除了文本整体的语义,一些和粗粒度方面相关的词或者词组能够有效地帮助分类相关方面,所以本文提出使用注意力机制来学习文本中不同词对于粗粒度方面的权重。粗粒度方面的句嵌入F通过均值池化层进行处理得到favg∈Rh×1,即如式(7)所示:
通过将Sh和favg作为注意力模块的输入,可以得到favg对于Sh中的每个时间点输出的注意力权重weight∈Rn×1,本文注意力模块的相似度计算准则为尺度点乘,按照式(8)计算权重:
其中softmax函数为指数归一化函数,定义如式(9)所示:
利用权重向量weight对句嵌入向量Sh进行加权并与粗粒度方面的语义嵌入向量favg进行拼接(concatenate)得到最终的特征表示y∈R2h×1,如式(10)所示:
1.3.3 分类器
分类器包含了两层前馈神经网络:第一层使用大小为h的全连接层学习参数W1∈R2h×h;第二层使用大小为2 的全连接层学习另一组权重W2∈Rh×2。y输入至这两层前馈网络得到输出特征向量v,最终对v进行softmax 运算得到输出output,公式如式(11)~(12)所示:
BERT是一种语言表征模型,在大型的语料库上进行预训练,然后利用预训练模型的模型参数在其他的NLP 任务上进行微调。BERT-Pair-ATT 模型基于BERT 原始模型进行改进,具体的模型结构如图4所示。
图4 BERT-pair-ATT模型架构Fig.4 BERT-pair-ATT model architecture
Sun 等[1]提出构造疑问句的方式来处理ABSA 任务,并且得到了性能提升,同时本文数据集中的细粒度方面都具有疑问句的形式,例如“交通是否便利”,因为这种数据形式,所以BERT-Pair-ATT 将文本语句作为第一个文本,细粒度方面作为第二个文本作为输入。BERT-Pair-ATT 的输出与标准的BERTBASE[16]结构不同,BERTBASE的结构将首位的特征作为分类特征,利用这个分类特征输入至全连接层来分类至具体的类别,而本文利用注意力机制,对所有的位置的特征进行处理,在其上添加注意力层,随机初始化两个矩阵W3∈Rb×b,W4∈Rb×1来学习所有位置上的哪些特征对于分类的任务更加有价值,其中b为BERT 模型隐层维度,W3、W4在训练过程中不断调整学习所有位置的输出中与分类任务更为相关的部分。注意力层的分数计算见式(13),其中,EB为BERT 的编码层的输出,EB∈RL×b。式(14)~(15)将score权重与编码器的输出相乘得到加权的特征feature,再将每个位置的特征加权平均得到最终的分类特征,并输入到全连接层进行分类。全连接层的权重为W3∈Rb×4,偏置为b3,最终得到预测的情感标签label。
实验采用AI Challenger 2018 比赛中的细粒度情感分析数据集。此数据集为目前国内最大的公开中文方面情感分析数据集,其中训练集和测试集分别含有10.5 万和1.5 万条餐饮评论,文本为段落级别的长文本,并且每段文本给出了6 个粗粒度方面(“位置”“服务”“价格”“环境”“菜品”“其他”)和总计20 个细粒度方面的4 类情感(“未提及”:-2,“中性”:0,“积极”:1,“消极”:-1)。作为模型验证,实验选取其中的“位置”粗粒度下的“交通是否便利”“距离商圈远近”“是否容易寻找”3 个细粒度方面进行分析。由于任务是多标签分类,最终数据集的数量按照细粒度方面的数目扩展3 倍至31.5 万和4.5万条,训练集的数量统计如表1所示。
表1 训练集上的标签统计Tab.1 Label statistics on training set
表2 中展示了从训练集中随机选取一个评论文本及其在“位置”粗粒度方面下的情感倾向值。对于其中的评论文本样例,在“位置”粗粒度方面下,仅提及其中关于商圈的信息,所以在其层次下的各个细粒度方面下的情感只在“商圈是否远近”上表达一种积极的情感,并未提及其他方面。样例具体的情感倾向标签如表2所示。
表2 数据集评论文本样例Tab.2 Sample of review text in dataset
TFN 模型的训练数据来源于AI Challenger 2018比赛中的细粒度情感分析数据集。评论文本由多个评论句组成。为了利用原始数据集中的粗粒度方面的信息来提取出与之相关的评论句,假设一段评论文本在一个粗粒度下的任意一个细粒度方面上的情感标签不为“未提及”,则表明这段评论文本中至少有一个评论句在提及这个粗粒度方面。基于这个假设,本文算法利用词向量来计算原文中所有词与粗粒度词之间的余弦相似度来筛选出最相关的词,提取出该词所在的句子作为正类,同时随机选取该粗粒度下的细粒度方面下全部都为“未提及”的评论中的评论句作为负类,这一类语句并没有在提及这个粗粒度方面。经过上述算法的处理,最终得到针对“位置”粒度的检测数据集,汇总的数据集的标签统计如表3。为了保证数据集的完整性,采用了大约相同数目的标签分布。
表3 TFN模型数据集标签统计Tab.3 Label statistics of TFN model dataset
由表1 可见数据集的标签具有分布不平衡的特性。因为在不平衡数据集上正确率不能准确衡量数量少的类别上的分类性能,而macro-F1 能够客观准确计算每一个类别上的分类性能,所以实验采用macro-F1 值来对模型的分类性能进行评价。首先在四类情感标签上分别计算出F1值,然后对每个标签上的F1 进行加权平均得到最终模型在本文数据集上的macro-F1值,这样可以有效抑制数据不平衡对评价值的影响。F1的计算公式如式(16)~(18)所示:
其中:i表示在第i个情感标签上的计算的评价指标;R为召回率(Recall);P为精准率(Precision);TP为正类情感标签被模型预测为正类的样本数量(True Positive);FN为正类情感标签被模型预测为负类的样本数量(False Negative);FP为负类情感标签被模型预测为正类的样本数量(False Positive)。最终的macro-F1指标计算公式如式(19):
实验将TFN+BERT-Pair-ATT 与如下相关模型进行对照实验:
1)GCAE[11]。它是一种卷积网络结合门控机制的深度学习网络,通过门控机制来模拟注意力机制筛选出属性相关的信息作为特征。
2)ATAE-LSTM[8]。该模型将属性的词嵌入分别添加至评论文本作为LSTM 的输入以及LSTM 的隐藏层作为注意力函数的输入,最终将注意力层的输出与LSTM 隐藏层的加权和作为分类器的特征。
3)IAN[9]。利用交互式的注意力网络处理ABSA 任务,作为对比,本文将任务中的在原文本出现的属性替换为预定义的类别属性,即“交通是否便利”“距离商圈远近”“是否容易寻找”,从而使得IAN能够适用于本文任务。
4)AOA-LSTM[10]。该模型包含了两个双向长短时记忆网络(Bi-LSTM)以及AOA 模块,借鉴了注意力机制的思想。同样的本文将属性修改为预定义的属性以适用于本文任务作为对比。
5)BERT-Single。只考虑原始文本,采用全原始连接层进行微调,因为文本对应了多个标签,针对每个标签进行训练与验证。
6)BERT-Pair。输入评论文本以及细粒度方面作为句子对分类任务,并只采用原始的全连接的方式进行微调。
前四类模型的文本嵌入层采用Word2Vec 算法来预训练参数,后两类模型采用BERT文本表示法。
实验中所有的模型都基于PyTorch[23]深度学习框架,使用4 块1080TiGPU 进行训练推理。Word2Vec 的词嵌入维度d为300,词典的大小v为20 000。TFN 使用的LSTM 隐层维度为300,在训练中使用Adam 优化器(Adaptive Moment Estimation),学习率设置为0.001,β1=0.9,β2=0.99,训练过程中的批处理大小为256,全局迭代5次,为了防止过拟合,在网络的每一层加入Dropout[24],丢弃概率(Dropout rate)为0.2。前四类对比模型都使用Adam 优化器,学习率为0.001,批处理大小设置为32,迭代次数设置为10。BERT-Single、BERTPair 以及BERT-Pair-ATT 都使用BERTBASE作为基础模型架构,表4 为基于BERTBASE的文本表示法的相关模型的训练参数设置,且在预训练初期使用warm-up 技巧进行预热[16]。以上所有的模型要优化的损失函数全部为负指数的似然函数-log(P(y|x)),其中(x,y)为(输入,目标标签)。
表4 BERT参数设置Tab.4 BERT parameter setting
TFN 训练过程中在训练集和测试集上的top1 正确率如图5 所示,由于加入Dropout,训练集上的正确率低于测试集,最终TFN在测试集上的最高正确率为92.82%。
图5 TFN训练中top1正确率曲线Fig.5 Top1 accuracy curves in TFN training
实验的相关模型都经过10次实验,取10次中最好的结果保存得到表5 实验结果。由表5 中的数据可以在本文数据集上得到一些结论:1)除了BERT-Single 模型,其他使用BERT为基础文本表示法的模型比CNN 或者循环神经网络(Recurrent Neural Network,RNN)文本表示法的模型表现更加优异;2)本文提出的BERT-Pair-ATT 模型比BERT-Pair 模型在macro-F1 上高出0.27%,并且在每个标签下的F1 都有提升;3)本文提出的文本筛选和BERT-Pair-ATT 的模型架构能够提升传统的单模型的性能,其中TFN+BERT-Pair-ATT 模型取得了最高的结果,使单模型BERT-Pair-ATT 的macro-F1 再次提升0.31%。
由于BERT-Single没有利用方面中的信息,导致最终的分类结果不佳。在考虑利用方面之后,BERT-Pair 模型在macro-F1 上提高了4.14%。BERT 预训练语言模型因为预先在大型语料库上进行充分训练,已经学习到了语言中的相关信息,因此最终的训练结果基于都优于基于Word2Vec表示法的相关模型;并且使用了句子对方式用于长文本方面情感分析任务上的BERT 模型,只需要训练一个模型参数就能够带来性能上的提升。对于长文本的处理,本文算法采取的是神经网络来策略截短,而不是使用注意力机制来自适应地选取,此方式能够降低BERT 模型的计算开销,将输入控制在BERT的限制长度内,同时也能够保留充足的信息,所以使用TFN模型来预处理数据集,增强了BERT 的输入文本信息的有效性,使性能进一步提升。
表5 不同模型的实验结果对比Tab.5 Experimental results comparison of different models
本文利用文本筛选和改进BERT 算法来处理长文本方面情感分析任务。首先基于原始数据集的标签构造新的数据集用来训练文本筛选模型TFN,其次,利用TFN 模型筛选出评论中粗粒度方面相关的部分语句,然后使用句子对方式作为BERT的输入方式,并且在输出层进一步添加注意力层。通过与相关深度学习模型的对比分析,本文模型能进一步提升长文本ABSA任务的性能。
本文通过TFN 模型对语句进行筛选,其正确率还需要进一步提升,接下来的工作中将结合主题模型进一步提高长文本处理能力,得到更加准确的文本筛选模型,从而提升整体算法的性能。