基于双向编码转换器和文本卷积神经网络的微博评论情感分类

2021-05-11 05:37徐凯旋潘亚磊
复杂系统与复杂性科学 2021年2期
关键词:卷积编码向量

徐凯旋,李 宪,潘亚磊

(青岛大学 a.复杂性科学研究所;b.未来研究院,山东 青岛 266071)

0 引言

情感分类是情感分析中的一项基本任务,是对带有感情色彩的主观性文本进行分析、推理的过程[1]。它与传统的文本主题分类又不相同,传统主题分类是分析文本讨论的客观内容,而情感分类是要从文本中得到它是否支持某种观点的信息。情感分类也是文本分类的一种形式,其中必须将一段文本分类作为预定的情感分类之一,这是有监督的机器学习问题[2]。情感分类模型要求其输入是固定大小的数字向量。因此,需要将文本转换为固定大小的矢量,该矢量对文本的有意义的信息进行编码[3]。为此,已经提出了许多统计和深度学习NLP模型。

Mikolov[4]在2013年提出Word2vec模型,该模型有两种训练方法:1)通过周围单词预测当前单词;2)通过当前单词预测局部窗口单词。该模型将高维向量映射到低维空间中,解决了独热编码的维数爆炸问题;但是受到训练方法的影响,模型只考虑到了词的局部信息,没有考虑到词与局部窗口外单词的联系,词和向量属于一对一的关系,无法解决多义词的问题。2014年,Kim[5]提出基于Word2vec的文本卷积神经网络(Text Convolutional Neural Network,Text-CNN)模型用于句子分类任务,由Word2vec词向量作为文本卷积神经网络的输入,通过卷积操作进行特征检测,得到多个特征映射,然后通过池化操作对特征进行筛选,过滤噪音,提取关键信息用来分类。Jeffrey Pennington等人[6]在2014年提出了一种新的单词全局向量表示模型(Global Vectors for Word Representation,Glove),该模型是全局对数线性回归模型,采用全局矩阵分解和局部上下文窗口方法来学习词向量,将统计信息与局部上下文窗口方法的优点结合起来,其效果确实得到了提升。随后Peters[7]在2018年提出了嵌入语言模型(Embedding from Language Models,ELMo),采用双向LSTM结构,能够学习到单词用法的复杂特性。同年,OPEN AI[8]提出生成式预训练转换器模型(Generative Pre-trained Transformer,GPT),该模型采用单向转换器结构[9],转换器独特的自注意力机制,能够更加准确地提取句子特征。随后Google研究人员发布了双向编码转换器(Bidirectional Encoder Representations from Transformers,BERT)[10],这是一种基于Transformer架构的深层双向语言模型,并在许多流行的NLP任务中改进了最新技术神经网络语言模型的预训练,如ELMo、GPT、BERT等模型相继出现,ELMo、GPT模式受模型以及算法的影响,对于多分句文本的语义提取不如BERT的效果理想。其中BERT以及基于BERT改进的预训练语言模型在多种自然语言任务上取得了最佳结果,Google发布了BERT中文预训练模型,加快了中文文本处理的进展。2019年,CMU和Google Brain团队发布了XLNet[11]模型,XLNet是一种通用的自回归预训练模型,融合了当前最优自回归模型长文本转换器(Transformer-Extra Long)[12]的思路,通过最大化所有可能的因式分解顺序的对数似然,学习双向语境信息。但是XLNet模型在中文处理方面不成熟,没有可用的中文预训练模型。

上述研究对微博评论情感分类提供了参考和依据,本文采用BERT-Text CNN模型,从微博爬取评论,对其进行预处理,输入到BERT模型中,利用BERT独特自注意力机制的双向编码转换器结构获得具有句子全局特征的字向量,将字向量输入到Text CNN中以提取语义以及上下文联系等高阶特征,进而得到高精度的分类结果,以及与ELMo-Text CNN模型、GPT模型、BERT模型进行比较,经simplifyweibo_4_moods数据集的验证结果显示,该模型具有较好的分类结果。

图1 情感分类流程图

1 模型框架

1.1 情感分类流程图

基于BERT-Text CNN情感分类流程图,如图1所示。本文将从微博获取的评论进行清洗、截断、序列标注,将预处理后的数据输入BERT中文预训练模型,接入Text CNN模型,进行微调,以达到理想的分类效果。本文采用的模型包含两部分结构:BERT模型和Text CNN模型。两个模型进行层级连接。该模型总体结构如图2所示。

1.2 BERT模型

BERT的模型结构是一种多层双向转换器结构,与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预训练深度双向表示。转换器是一个编码-解码的结构,如图3所示。在转换器的编码过程中,数据首先会经过自注意力模块得到加权的特征向量:

图2 双向编码转换器和文本卷积神经网络模型

(1)

其中,Q,K,V分别由3个嵌入向量得到。

特征向量Z经过前馈神经网络得到单词编码:

FFN(Z)=max(0,ZW1+b1)W2+b2

(2)

BERT的输入是由标记词嵌入、句子词嵌入和位置词嵌入3个部分组成,其中:1)字符嵌入表示当前字的嵌入;2)段落嵌入表示当前字所在句子的索引嵌入;3)位置嵌入表示当前字所在位置的索引嵌入。输入如图4所示,例如“今天我中奖了,我请客吃饭”。

BERT输出则是输入各字对应的融合全文语义信息后的向量表示。BERT作为一个预训练模型,其预训练方法采用的是掩码语言模型和下一句预测模型[13]。掩码语言模型:输入向量的15%的字符会被随机掩饰掉。在训练模型时,一个向量会被多次输入到模型中用于参数学习,但是Google并没有在每次都掩饰掉这些单词,而是在确定要掩饰掉的单词之后,80%的时候会直接替换为“[Mask]”,10%的时候将其替换为其它任意单词,10%的时候会保留原始标记。

图3 转换器模型

图4 BERT输入表示

下一句预测模型:判断句子B是否是句子A的下文。如果是的话输出“Is Next”,否则输出“Not Next”。训练数据的生成方式是从语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合Is Next关系,另外50%的第二句话是随机从预料中提取的,它们符合Not Next关系。

1.3 Text CNN模型

将BERT输出的具有全局特征的字向量作为Text CNN的输入,区别于图像卷积[14],图像卷积采用的是二维向量,文本卷积采用的是一维向量,本文采用的是一维卷积层-最大池化层-分类层的结构模式,添加丢弃层以防止模型训练过程中出现过拟合、过度参数化等现象,结构如图5所示。经过预处理后的一个长度为n的文本序列,通过BERT预训练模型编码得到每个字的特征映射:

exi=E[xi]

(3)

其中,xi表示对应位置字符i的字向量,E[xi]表示字向量在模型中训练好的稠密向量。序列的特征映射表示为

ei:n=ex1⊕ex2⊕…⊕exn

ex1表示处于序列中第一位的向量,⊕表示串联运算符。词向量经过一维卷积层得到特征映射ci:

ci=f(wi*exi+b)

(4)

其中,wi表示权重,b表示偏差。

特征映射表示为

c=[c1,c2,…,cn]

(5)

经过最大化池化层得到特征向量:

(6)

经过全连接层得出分类结果:

(7)

2 实验处理

2.1 实验环境

图5 文本卷积神经网络模型

表1 实验环境配置

2.2 数据预处理及参数设定

本实验采用的数据集是用Web Scrapy从微博爬取的评论,筛选出10 000条长度在60以内的评论,将数据进行清洗、序列标注。该数据集分为4种情感评论,其中喜悦约4 000条,愤怒、厌恶、低落各约2 000条。字段说明如表2所示。例子如表3所示。

表2 标签

表3 数据实例

针对每个标签随机抽取2 000条作为训练集(共计8 000条训练集),额外爬取500条作为测试集。将训练集进行分词、标签化、截断、填充等步骤最终得到可以输入模型的文本,本文采用的是基于BERT的中文预训练模型,网络层12层,隐藏层768层,自注意力头数为12个,参数大小为110M。

模型优化方法采用Adam梯度下降和交叉熵损失函数方法,经调试设定学习率为0.000 4,设置批量大小为32,为了避免模型在训练中出现过拟合、过度参数化等现象,设置丢弃层参数为0.4。实验参数如表4所示。测试集统计标签数如图6所示。

图6 测试集统计

表4 实验参数配置

2.3 实验指标

本研究采用宏精确率(Micro_P)、宏召回率(Micro_R)以及综合指标宏F1值(Micro_F1)作为情感分类模型的评测指标,由于是4分类任务,所以公式如下:

其中,Pi预测分类标签为i的正确的评论数除以预测结果为该类的评论总数;Ri是预测分类标签为i的正确的评论数除以该类的测试集总数。

3 实验结果及分析

模型迭代过程中,损失曲线如图7所示。由图7看出,模型在训练了5次(迭代1 300次)的时候,损失曲线趋于平稳,分类效果达到最佳。该模型在测试集数目不变的情况下,测试精度随着训练数目增加如图8所示。图8表明,随着训练数据的增加,模型准确率逐渐提高,少量的数据集很难达到想要的模型准确率,模型的准确率需要大量的数据支持。

图7 损失曲线

图8 准确率-训练数据数目变化

部分测试实例如表5所示。BERT-Text CNN及对比模型各个类别测试精确度结果如表6所示。其对应的柱状图如图9所示。由图9可以看出,BERT-Text CNN精确率优于其他模型;标签“愤怒”和“厌恶”的精确率普遍低于标签“喜悦”和“低落”,经数据对比得到,“愤怒”和“厌恶”数据集中含有部分相似的消极性词语,影响了模型的判断,说明不同的数据集对模型的精度影响不同。

表5 测试实例

表6 精确度测试

图9 各类别精确率

BERT-Text CNN及对比模型在本文数据集以及simplifyweibo_4_moods数据集的测试结果如表7和表8所示。由表7和表8可以看出,BERT-Text CNN模型Micro_P、Micro_R、Micro_F1值均高于其他模型,证实了该模型的优越性;BERT-Text CNN的Micro_F1比BERT的分类模型高出2~3个百分点,证明Text CNN具有提高文本语义提取的能力;BERT的Micro_F1值高于ELMo-Text CNN模型和GPT模型,证明BERT对文本语义的表征能力高于GPT和ELMo模型;BERT-Text CNN能够更好地解决微博评论情感分类问题。

表7 本文数据集

表8 simplifyweibo_4_moods数据集

4 结论

本文针对微博情感细粒度分类问题,采用了BERT-Text CNN进行分类,相对于ELMo-Text CNN、GPT、BERT分类模型,具有更好的文本分类效果。实验表明,BERT模型在接入CNN之后,会上升2~3个百分点,是因为CNN具有很强的提取局部特征的能力,BERT-Text CNN具有强大的捕获句子中语义和长距离依赖关系的能力,提升了情感分类效果。实验结果表明BERT-Text CNN在情感分类方面是一个合理的模型。

然而,由于BERT预训练模型的参数量巨大,在不同的应用环境下想要模型达到理想的精确度,需要不同大量的数据支持,需要很大成本;由于BERT的预训练的掩码机制,虽然通过它可以实现双向语言模型的训练,但是由于微调语料中没有掩码这样会导致预训练和在下游任务上进行微调时的部分不一致,而如果能够在这些方面做出改进,那么相信模型的性能会有进一步的提高。

猜你喜欢
卷积编码向量
向量的分解
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
聚焦“向量与三角”创新题
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
卷积神经网络的分析与设计
从滤波器理解卷积
Genome and healthcare
基于傅里叶域卷积表示的目标跟踪算法