PRBDN: 基于预训练的微博评论情感分类模型
2022-09-28雷鹏斌王志立吴宇凡梁思怡
雷鹏斌,秦 斌,王志立,吴宇凡,梁思怡,陈 宇
(1. 深圳大学 信息中心,广东 深圳 518061;2. 深圳大学 电子与信息工程学院,广东 深圳 518061)
0 引言
新型冠状病毒(COVID-19)感染的肺炎疫情牵动着全国人民的心,众多网民参与疫情相关话题的讨论。一个更有效的文本情感分类模型能帮助政府掌握真实社会舆论情况,科学高效地做好防控宣传和舆情引导工作,具有重要的研究价值和社会意义。
如何使一段文本得到更适合的文本向量表征,是文本情感分类的重中之重。Pennington等提出了基于词频共现矩阵的GloVe[1]模型,通过统计词与词共同出现的频次构建相关性矩阵,利用文本全部信息训练词向量。Huang等[2]提出一词多义的训练方法,分析处理汉字一词多义的情况,使用位置信息和全局信息学习多义词的词向量表示。Chen等[3]在中文上提出加入字向量的字词联合训练方法,将组成单词的汉字信息联合单词自身一起训练得到中文词向量。Peters等[4]使用双向LSTM模型学习词的上下文信息,提出了ELMO 模型,该模型训练的词向量有效地学习了句法、语法信息,提升了各项NLP的任务性能。Devlin等[5]使用Transformer特征提取器,引入Masked language model和Next sentence predict的预训练策略发布了预训练模型BERT。在11个经典的自然语言处理任务里取得了SOTA的成绩,之后Liu Y, Ott M, Goyal N等人针对中文数据改进了BERT的预训练策略,发布了中文预训练模型RoBERTa[6],在中文数据集上往往有着更好的表现。至今的大部分NLP任务都是基于BERT的下游任务,但针对不同任务,BERT的向量表征存在着一定的改进空间。具体而言,本文的贡献可归纳如下:
(1) 通过对预训练模型RoBERTa的多层Transformer进行动态加权融合与特征增强,得到不同粒度的文本表征,提高模型的语义空间表达能力;
(2) 在预训练模型基础上开发了一种面向下游目标任务的新结构进行文本情感分类;
(3) 通过真实场景下的疫情情绪数据集对提出的模型进行了评估,实验结果证明,本文提出的动态权重策略和下游任务结构的有效性。
1 相关工作
目前文本情感分类技术主要分为三类,基于情感字典的方法,基于机器学习和深度学习的方法。当前最常用的情感词典是WordNet网络的 SentiWordNet组件。该组件支持包括中文在内的世界上主要语言的情感词汇,但其中的英文词汇版本最为强大[7];国内部分研究人员也建立了中文专用的情感分析词库如SnowNLP[8],情感字典为每个情感词建立了三种极性: 正面(Positive)、负面(Negative)、中立(Objectivity),通过对文本中出现情感词的个数和极性进行加权计算得到情感类别。
基于机器学习的方法主要使用支持向量机(Support Vector Machine,SVM)、逻辑回归(Logistic Regression,LR)、贝叶斯网络(Bayesian Network)等传统分类器。Saqib Iqbal进行了社区媒体数据的情感分析相关研究,结果表明,朴素贝叶斯网络、支持向量机等分类器都是非常适用于社区媒体文档的情感分析方法,其中支持向量机的分类准确率最高[9]。Grosse等提出一个应用在Twitter评论的情感分析新框架,该框架能增量式地同时构建一个“观点树”和一个“冲突树”,并解决评论中普遍存在的情感矛盾等问题。该框架的另一大特点是能够增量学习,因此能够用于Twitter数据的实时分析[10]。
近年来,深度学习广泛应用于文本情感分析中。Kim[11]提出使用卷积神经网络进行句子建模,解决情感分类任务,在多个数据集上取得了很好的结果。Irsoy等人[12]提出使用循环神经网络以及长短时记忆网络模型用于情感分析,同时Chakraborty等人[13]证实该模型能够对情感预测分析的触点进行性能提升。Attention模型由Bahdanau等人[14]提出,最先被用于机器翻译,随后 Attention的变体形式被广泛应用于NLP的各个领域,曲昭伟和王源等人提出一种分层 Attention 网络情感分析算法,相比传统循环神经网络模型,该算法在性能上,提升了将近8个百分点。
2018年后,基于深层神经网络如ULMFiT[15]、OpenAI-GPT[16]、ELMo[17]和RoBERTa等预训练模型被先后提出,它们都是基于大量语料结合上下文语境通过联合预训练得到的预训练模型,然后对下游任务进行迁移学习。在多个公开数据集上都取得了更好的成绩,成为当前阶段解决文本情感分类问题的主流方式。我们的工作主要依赖基于Liu等人的中文预训练模型RoBERTa,其为我们提供了一个强大的基线,在此基础上,我们深入探索了新的网络结构和下游任务的方式。
2 模型
本文改进RoBERTa下游任务的方式可以分为两个子模块,分别是RoBERTa的Transformer语义精细化表征和下游任务语境过滤。
针对特定下游任务,我们基于预训练模型RoBERTa在该任务上的不足进行改进与优化,并提出了新的模型结构,称为PRBDN(Pretrain RoBERTa Bi-Dynamic Network)。
2.1 Transformer语义精细化表征
Ganesh等人[18]曾探寻过BERT的每一层Transformer学到了什么。通过大量实验证明了BERT每一层Transformer能表征不同层级结构化的语言信息,如BERT的低层网络学习到了短语级别的信息表征,中层网络学习到了丰富的语言学特征,而其高层网络则学习到了复杂的语义信息特征。在基于文章级别的情感分析任务中,需要在保留不同粒度语义属性(词、语法、句法)的前提下,对文本内容进行高度概括与抽象表达[19]。因而,仅使用Transformer的最后一层这种偏向于句法粒度的向量输出并不能满足情绪分析任务对内容表征的需求,为此本文提出了一种根据各层过滤信息获取输出层动态权重的的方法,对RoBERTa结构进行如下调整,详情如图1所示。
图1 PRBDN多层输出动态表征
为了根据样本自适应地捕获每一层Transformer的输出,我们将每一层的Transformer的输出向量进行加权相加,得到一个融合多层Transformer输出信息的语义表征向量R1,如式(1)所示,对于得到的输出向量,我们通过后接一个Unit为512的全连接层,对这融合12层RoBERTa信息的R1在高维空间进行转换,得到一个相较于经典RoBERTa最后一层拥有更丰富语义信息和句法关系的融合表征R0。
(1)
上式中i∈[1,12],其中Transformeri为RoBERTa中每一层的输出,wi为我们对每一层Transformer过滤后的向量训练得到的动态权重,其获得的方式如图2所示。
图2 RoBERTa多层输出动态权重(Weighted Dynamic Fusion)
为了使模型根据当前输入的样本自适应地分配每层Transformer该分配的权重,我们提取了每一层的输出向量Transformeri输入至Bil-STM中进行筛选得到精炼信息Hi,如式(2)所示。
Hi=BiLSTMunit=128(Transformeri)
(2)
再将每一层得到的精练信息Hi输入至一个Unit为1的全连接层,用来表征此类层信息的强度,并通过对12个神经元取Softmax得到每一层输出的权重wi作为分配12层Transformer的权重,如公式(3)所示。我们通过权重wi动态地融合了12层Transformer的信息。
(3)
2.2 下游任务语境过滤
实验证明文本分类中使用能捕获文本中的局部信息的TextCNN[20],或是关注方向信息和位置信息的LSTM等模型结构下接RoBERTa往往能提升文本分类模型的性能。如图3所示,在下游任务中,我们分别外接了BiLSTM与BiGRU作为语境信息精炼层,增强输入文本的文本方向与位置信息,得到表达更加充分的情感特征向量R1。
图3 RoBERTa BiLSTM & BiGRU-Dympooling
此外,对于得到的过滤信息,我们尝试使用了平均池化和最大池化对文本的全局信息和局部信息进行二次捕捉。实验表明,仅使用平均池化和最大池化的效果非常接近,由于输入的微博评论文本差异性较大,部分文本需要获取全局信息,而有些数据也需要局部的信息,于是我们动态地利用了两种池化策略的结果,对经过BilSTM&BiGRU层过滤的语义向量分别使用平均池化和最大池化的方式,得到两种不同的特征表达。这里复用动态获取Transformer权重的策略,训练两个动态权重来对两种池化策略的结果进行融合,把这种池化的策略称作Dympooling,如式(4)所示;最终将两种策略的输出进行加权融合得到表征情感的最终向量Re,如式(5)所示。
其中,Rmax和Raverage分别代表对精炼化的语意表征R1分别使用最大池化和平均池化的输出向量,α与β均在学习的过程中根据每一个样本自适应地学得。
在得到最后的语义精细化向量后,我们将自适应地获取全局信息和局部信息的特征向量Re通过下接Unit为3的全连接层做情感粒度的三分类,与使用独热编码后的真实标签计算交叉熵作为损失函数,以此来优化整体模型的参数。
3 实验
3.1 疫情期间网民情绪识别
问题定义疫情期间网民情绪识别是一个文本情感三分类任务,如表1所示。正文给定了微博ID和微博内容,其任务是通过微博内容对用户进行情绪分类,判断它的情感倾向。
表1 疫情期间网民情绪识别训练集实例
数据介绍给定的数据集收集了与“新冠肺炎”相关的230个主题关键词,时间跨度为2020年1月1日至2020年2月20日期间共计100万条微博数据,并对其中10万条数据进行人工标注,标注分为三类,分别为: 积极、中性和消极,数据集规模如表2所示。
表2 疫情期间网民情绪识别数据集规模
评估准则疫情期间网民情绪识别的评测指标为Macro-F1,其计算如式(6)~式(8)所示。其中,TP是真阳例,FP是假阳例,FN是假阴例,通过该公式计算得到每一类的F1分值,再将各类的F1值求平均,即Macro-F1为评定分类结果的指标。
3.2 数据处理
实验所使用的数据为上文提及的疫情期间网民情绪识别比赛提供的10w条已标注数据和90w条未标注数据。其中已标注数据文本长度如图4所示。
图4 各种长度分布出现概率
我们将90w条的无标签数据设置最大长度为256的文本进行分割,让更多的长文本评论信息得以利用,并将处理好的语料输入至RoBERTa_base模型,设置模型最大字长为256继续预训练,以加强预训练模型的泛化能力。
由于训练集和测试集的文本经去噪处理之后,得到的数据正文文本长度都在200以内,根据图4的长度分布,我们将Max Len调整为150,加快模型的训练与推断的速度。
3.3 参数设置
实验设置的超参数如表3所示,每一个双向LSTM的隐藏节点均为256,BERT微调Adam[21]使用的学习率为0.000 02,下游结构的学习率为0.0 001。Dropout[22]层的丢弃率为0.1,训练的Batch_Size为32。实验表明,本文模型能在前四个epoch内快速收敛。
表3 模型参数设置
3.4 多分类阈值搜索
经统计,训练集中标签情感极性为消极、中性、积极的比例为3∶12∶5,存在样本不均衡问题。而模型在训练过程中通过梯度下降反向传播来优化目标函数,往往会给标签为0(中性)的样本更高的分数来降低loss,从而导致模型倾向于给出更多预测为中性情感的标签。为此,我们设计了一种学习的策略,对输出的结果通过学习到的概率进行二次偏置,具体的方法如图5所示。
图5 多分类F1策略
对于已经收敛的模型,将所有的验证集输入至模型得到样本对每一个类别的预测概率P。此时P为一个N×3的矩阵,N为验证集样本的个数。
(9)
但由于F1_Score的函数曲线并非凸函数。为此我们通过对θ的权重使用随机游走的方式,让权重随机变化并记录变化权重后的F1。我们设置游走的步伐为1e-4,迭代步数为10万步,保存了让验证集F1能够更大的权重,并将此权重用于测试集的预测。实验证明,在通过权重在测试集的引入后样本不均衡的情况被缓解,实验效果得到提升。
3.5 评测结果
对于模型的验证,我们使用RoBERTa作为基线,对比了文本分类常用的下接TextCNN与我们提供的模型以比赛方评定的A版F1作为指标。最终的结果对比如表4所示。实验表明,本文提出的动态权重策略与下游结构在疫情期间网民情绪识别中相较于直接使用RoBERTa的CLS分类向量单模提高了2.9个百分点。对于上述提及的模型,我们对其分别使用BiLSTM和BiGRU的方法以及5折交叉验证的10个模型结果进行了简单的投票融合,较RoBERTa单模提高了3.6个百分点,有着更好的表现。
表4 结果对比表
续表
3.6 模型效果
为了进一步分析本文提出的模型效果,我们可视化文本向量以显示PRBDN的优势。如图6经过基线RoBERTa和PRBDN分别输出的文本向量利用Tsne[23]降维后可视化。我们随机选择了900个训练集数据,分别提取了使用RoBERTa的CLS分类的特征向量与利用PRBDN分类模型MLP前的特征向量,使用Tsne降至二维向量绘制散点图进行了可视化对比。可以看到,由PRBDN输出的文本向量具有更高的区分度,充分证明了我们的模型能够更有效地提炼出与情感任务相关的高层语义向量。
图6 文本向量可视化
4 结论
针对疫情情绪识别这一任务,本文提出了一种基于RoBERTa预训练模型实现情感分类下游任务的新模型,该模型能自适应地对Transformer_Encoder每一层的输出进行信息筛选,然后再进行语义整合,形成一种精细的语境化语义表示。之后再通过双向LSTM&GRU和动态的池化层进行信息过滤,得到更加精细的情感语义表征。实验表明,在现有语料和超参数空间下,本模型性能较优。同时,除了模型本身外,针对特定任务的数据处理,结果优化等方法对任务性能的提升也同样不可忽视。
5 不足与展望
大量实验[24-25]证明无监督数据的有效利用会大大提高预训练模型的语义理解与推理能力。本文中未对无监督的数据使用伪标签策略,即把预测结果中多数模型都一致认为的类别当作其正确的标签,然后将该标签及其对应的内容进行增量训练,因此在性能上并未达到最优。此外,对BERT模型进行剪枝和蒸馏,以降低模型的时间与空间复杂度,也是我们未来的研究目标之一。