APP下载

微博情感分析综述*

2022-01-24王春东莫秀良杨文军

计算机工程与科学 2022年1期
关键词:词典注意力向量

王春东,张 卉,莫秀良,杨文军

(天津理工大学计算机科学与工程学院,天津 300384)

1 引言

微博(MicroBlog)是一种可以在网上便捷地发布或获取消息的微型博客,普通用户可以通过WEB、WAP及其它客户端,以一般不多于140字的文字量或者图片、短视频等方式随时在微博上发布消息。由于这种操作具有方便快捷的特点,微博赢得了大量的用户[1]。根据官方统计显示,截止到2020年3月,微博的月活跃用户达到了5.5亿,日活跃用户达到了2.41亿,相比于去年同期分别增长了8.5千万和3.8千万。由此可见,微博已经成为了公众在网络上发表评论并以此来表达自己的观点和诉求的主要途径之一。

不难发现用户发表的微博里所携带的情感因素,不仅能影响微博传播的广度和深度,还能感染其他用户的情绪,甚至使得某种情感在短时间内快速积累,造成社会舆论的爆发[2]。尤其是一些事关公众人身安全的破坏性事件,由于舆论信息的不对称性,往往会引发社会恐慌。例如2020年,因为新冠疫情的原因多国禁止粮食出口,尽管当时国内粮食储备充足,但关于“粮荒”的舆论信息还是在国内引发了“抢米抢面”事件。因此,对微博舆情的情感分析有必要被纳入到公共突发事件管理范围内。识别微博舆论的情感,洞悉公众对某些突发事件的态度和反应,并以此来对微博舆论进行有效的干预和引导,对促使社会舆论良性发展有着很重要的意义[3,4]。

情感分析的概念最初由Nasukawa等[5]提出,情感分析是指从写下的文字中提取出人们的情感或观点。目前情感分析方法主要有基于情感词典的方法、基于机器学习的方法和基于深度学习的方法,其中研究热度最高的是基于深度学习的方法。基于情感词典的方法[6]需要先建立情感词典,然后以情感词典为依据进行情感计算。基于机器学习的方法[7 - 12]需要先进行人工特征提取,然后采用机器学习算法对微博文本进行情感分类,常用的分类算法有NB(Naïve Bayes)、SVM(Support Vector Machine)、ME(Maximum Entropy)、KNN(K-Nearest Neighbor Classification)和CRF(Conditional Random Field) 等。基于深度学习的方法[13 - 16]不需要人工特征提取且具有较强的语义表达能力,常用的神经网络模型有CNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)、LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)等。

近年来很多研究者将注意力机制[6]引入到自然语言处理NLP(Natural Language Processing)任务中,用以解决深度学习在提取语义信息时会忽略重要词汇的特殊作用以及难以考虑到全部文本信息的问题。2017年Vaswani等[17]提出了Transformer模型,模型中使用的自注意力(Self-Attention)机制可以充分考虑到每个词在全局的作用。2018年Devlin等[18,19]在Transformer模型的基础上提出了BERT(Bidirectional Encoder Representations from Transformers)模型,自此很多研究者开始基于BERT模型进行情感分析方法的研究。

本文后续章节安排如下:第1节介绍一些相关知识点;第2节介绍微博情感分析的准备工作,即数据采集和预处理;第3节介绍主流的情感分析方法,即基于情感词典的、基于机器学习的和基于深度学习的方法;第4节介绍注意力机制和BERT模型在情感分析中的应用;第5节总结现有情感分析方法的不足并探讨未来的发展趋势;第6节对本文做一个全面的总结。

2 相关定义

2.1 词向量

由于计算机无法直接读懂人类所创造的词汇,不能直接处理文本数据,因此需要将文本数据转化为计算机可以识别的数值化的数据,即将文本数据转换成词向量,词向量的表示如图1所示。

Figure 1 Word vector representation of One-Hot coding图1 One-Hot编码的词向量表示

将文本数据表示为词向量的过程,也可以称为词嵌入的过程,主要有基于统计学的和基于语言模型的2种方式。基于统计学的方法有词袋模型、One-Hot编码和TF-IDF(Term Frequency- Inverse Document Frequency)[20]等;基于语言模型的方法有著名的word2vec和后文将重点介绍的BERT等。word2vec[21,22]是谷歌提出的一种基于深度学习的开源词嵌入工具,主要包括2种模型,即跳字模型(Skip-Gram)和连续词袋模型CBOW(Continuous Bag Of Words) 。 文献[23]中介绍了3种提取词向量的方式,分别是TF-IDF、word2vec和一种加权的word2vec。

2.2 注意力机制

人类在观察物体的时候,总会把视觉的注意力有选择地局限在某些重点部位,自动忽略一些非必要的信息。例如,我们在阅读的时候,通常只有少量要被读取的词会被关注和处理。人类视觉的这种特点正是注意力机制(Attention Mechanism)的思想起源。注意力机制模拟的是人类观察事物的过程,2014年Mnih等[24]首次在图像处理领域使用了注意力机制。

最初的注意力机制大多都是依附于Encoder-Decoder模型实现的,模型结构如图2所示,对于不同的输入给予不同的注意力关注,即对需要重点关注的部分赋予较大的权重,对非重点关注部分赋予较小的权重。

Figure 2 Structure model of attention mechanism图2 注意力机制图示

基于这种Encoder-Decoder模型,Bahdanau等[25]创新性地将注意力机制应用到了机器翻译中,其翻译过程可以看作是一个使用注意力机制来理解语义并预测输出的过程。若将源文本看成是一个键-值对序列,分别用K=(k1,k2,…,kN)和V=(v1,v2,…,vN)表示,则可以将该预测过程看作是一个查询过程,查询序列用Q=(q1,q2,…,qM)表示,其中,N为键-值对序列长度,M为查询序列长度,其计算过程可以归纳如下:

(1)计算相似度:计算qt和每一个ki的相似度得分eti,常用的计算方法如式(1)所示:

(1)

(2)归一化:使用softmax函数对式(1)中计算的得分进行归一化处理,得到每个键的权重ati,如式(2)所示:

(2)

(3)加权求和:将每个键的权重ati与其在V中对应的值vi加权求和,作为注意力的输出,如式(3)所示:

Attention(qt,K,V)=∑iativi

(3)

其中,W和U代表可以学习的参数矩阵,h代表参数向量,[;]代表向量的拼接操作。

不同类型的注意力关注范围不同,组合方式也不同,本文对注意力机制进行了分类,整理如表1和表2所示。

Table 1 Classifing attention mechanism according to the attention scope

Table 2 Classifing attention mechanism according to the combination mode

2.3 自注意力机制

自注意力机制[30]源自于Cheng等[32]提出的内部注意力机制,是一种作用在源文本序列内部或目标文本序列内部的特殊的注意力机制。自注意力机制主要用于捕获同一个文本(句子)之间的语义信息,是注意力机制在Q=K=V时的一种改进。

RNN在提取文本内部信息的时候,随着文本序列长度的增加,网络在学习后面的字词时对前面字词的记忆会越来越少,很容易出现梯度消失或梯度爆炸等问题。另外,RNN在进行计算的时候必须把前一时刻的输出作为后一时刻的输入,没办法并行计算。

自注意力机制可以在序列内部建立长距离依赖关系[33 - 35],自注意力机制会计算每个词和所有词之间的权重,不管2个词之间的距离有多大,它们之间的路径长度都是1。自注意力机制以矩阵运算的方式进行并行运算,运算速度快于RNN。因此,在提取文本内部特征的时候,自注意力机制明显优于RNN。

3 微博语料的获取和预处理

3.1 微博语料的获取

采集微博数据的途径主要有2种:一种是通过微博上公开的API接口来采集;另一种是通过爬虫程序来采集[36]。

(1)基于公开API。

微博开放平台上提供了一些公开的API接口,开发者在通过微博公开平台认证后,可以通过符合微博格式规定的GET和POST方法来调用这些接口。

使用微博开放平台提供的API采集数据相对简单,但是普通的开发者用户每小时只能访问这些接口1 000次,这给采集微博数据带来了一定的困难。另外,微博对搜索条数也进行了限制,一般只显示一页以内的搜索内容,对其他的内容则采取了屏蔽或不显示的策略。所以,使用微博公开平台API这种采集方式并不适合实时的、大规模的微博数据采集。

(2)基于爬虫程序。

爬虫程序可以自动抓取网页上的信息,一般根据预先设定好的规则,从一个URL开始抓取页面,在抓取该页面的时候,会将该页面中新的URL放入到采集列表,然后根据一定的策略选择下一个要抓取的页面,直到采集列表为空或者采集到的数据满足一定的条件为止。具体流程如图3所示。

Figure 3 Process of crawling data by crawler图3 爬虫爬取数据的流程

虽然爬虫能够自动抓取网络数据,但是微博有着很强的反爬虫机制,例如登录机制、验证码、验证块拖条、限制单个用户单位时间内的访问次数等,因此传统的爬虫程序并不适用于获取大量微博的数据。现在很多研究者在大规模采集微博数据时采用的方法都是把API接口访问和爬虫程序结合起来。文献[37,38]中描述了如何改进爬虫程序以使其适用于大规模采集微博数据。

3.2 微博语料的预处理

在获取到微博语料之后,需要对微博语料进行预处理,将计算机不能识别的非结构化的文本数据转换成计算机可以识别的结构化数据。微博语料预处理的流程如下:首先对文本数据进行分词,然后进行词性标注、停用词删除等操作,接着进行句法分析,最后根据需要生成词向量。

在预处理过程中,词性标注、停用词删除、句法分析和词向量生成等步骤,中文的处理方式与英文的处理方式相差不大,唯独分词的过程中文要比英文复杂很多。中文不像英文那样,每个单词之间都有空格,在分析中文文本的时候,需要有专门的分词算法来辅助计算机识别中文文本中的词语、短语和固定搭配等。

最初的中文分词是基于分词词典和规则的,文献[39]中描述了如何构建一个完备的分词词典以及随着词典规模不断增大该如何提高检索效率。随后机器学习和深度学习也被应用到了中文分词当中,本文对中文分词方法进行整理,如表3所示。张婧等[40]提出了一种针对微博语料的分词方法,该方法可以进行自主学习,能从大规模未标注的语料中挑选出具有标注价值的微博分词语料。

Table 3 Chinese word segmentation method

4 传统情感分析方法

4.1 基于情感词典的情感分析方法

基于情感词典进行情感分析只需要将预处理后的词汇与情感词典中的词汇进行匹配,然后根据词匹配程度计算情感得分并判断情感极性,该方法计算简单且不需要额外的资源。文献[48,49]中介绍了基于情感词典进行情感分析的代表性研究。基于情感词典进行情感分析的核心在于情感词典的构建。情感词典是指一些带有固定的情感倾向的名词、动词、形容词和副词等词汇的集合,例如带有积极情感的词汇“愉快”“高兴地”“英雄”,带有消极情感倾向的词汇 “伤心”“悲伤地”“汉奸”等。目前使用比较广泛的中文情感词典有知网的HowNet[50]、台湾大学的NTUSD(National Taiwan University Sentiment Dictionary)[51]和大连理工大学情感本体库[52]等。

情感词典的构建是一个工作量巨大且复杂的工程。传统的情感词典构建方法大多是基于语义相似度的,其核心思想是度量候选词与正负情感标签之间的距离,一般采用逐点互信息PMI(Point-wise Mutual Information)作为度量方法[6]。另有姚天昉等[53]基于主题模型建立情感词典。近年来随着人工智能的快速发展,很多人开始使用基于机器学习的方法[54]和基于深度神经网络的方法[55]来构建情感词典。

为了增强要表达的情感,用户在微博上发布消息的时候通常都会使用一些情感色彩很强烈的情感符号,如表情符号、流行网络用语、情感副词或程度副词等。因此,在对微博内容进行情感分析的时候必须要考虑到这些情感符号的作用。文献[56,57]中分别阐述了情感符号的重要性和如何基于情感符号来分析微博内容的情感倾向。

基于情感词典的情感分析方法操作简单,但通常其情感分类精度比基于机器学习的方法和基于深度学习的方法要低,这主要是因为:(1)情感词典的构建难度较大,构建的情感词典一般是领域内适用,这就使得基于情感词典的方法通用性较差,鲁棒性较低;(2)中文本身存在很多的一词多义和反讽等现象,同一个词在不用的语境下会有不同的情感倾向。另外,微博语料的时效性强,更新速度快,网络上每天都会产生大量的网络新词,如“锦鲤”“盘他”等,若情感词典不能及时更新,就很有可能误判这些词的情感倾向,导致分析结果出现较大偏差。

4.2 基于机器学习的情感分析方法

基于机器学习的情感分析方法需要从大量的语料中进行特征筛选,筛选方式主要是人工筛选,然后用选择好的特征表示整个文本,最后采用机器学习算法对文本进行分类。基于机器学习的情感分析方法可分为有监督的和无监督的2种方式。

(1)有监督的机器学习方法。

采用有监督的机器学习方法进行情感分析,首先需要对大量的微博数据进行人工标注,即标注出每一条微博文本的情感倾向,然后将这些标注好的数据用作训练集,进行文本分类的训练。常用的分类方法有朴素贝叶斯NB、支持向量机SVM、最大熵ME、K近邻KNN和条件随机场CRF等方法。

Pang等[7]使用电影评论作为基础数据,分别采用了机器学习方法中的NB、ME和SVM 3种分类器实现了对影评数据的二分类。

另有Ni等[8]同样将情感分析看作是一个二分类问题,再分别用NB、SVM和Recchio方法进行情感分类,同时还选择了卡方(Chi)和信息增益(IG)进行特征选择。Ye等[9]在旅游博客评论数据集上,对NB、SVM和N-Gram等情感分析方法进行了比较,实验结果表明,SVM和N-Gram的分类效果优于NB的分类效果。而Yang等[10]则利用网络博客语料库对SVM和CRF进行了比较,证明CRF的分类结果优于SVM的。

(2)无监督的机器学习方法。

有监督的机器学习方法虽然精度较高,但是高度依赖于人工数据的标注。通常人工标注数据不仅工作量巨大,而且还会存在不一致性等问题。无监督的机器学习方法则不需要人工标注数据,但是其精度一般较低。采用无监督的机器学习方法进行情感分析,通常需要选取基准的情感词汇,然后进行主题划分,常用的方法有概率潜在语义分析模型PLSA(Probabilistic Latent Semantic Analysis)[11]和潜在狄利克雷分配模型LDA(Latent Dirichlet Allocation)[12]等。PLSA和LDA一般用于处理文档级别的长文本,对于微博等短文本并不适用,为此Yan等[58]提出了针对短文本主题建模的BTM(Biterm Topic Model)模型,显式地建立单词共现模式。

基于机器学习的中文微博情感研究相较于英文起步较晚,且研究资源和方法也比较落后,这主要是由于以下几个原因:中文文本在进行情感分析前需要进行分词处理;中文中存在很多一词多义、褒义贬用、贬义褒用等现象;中文文本的上下文关联性较大。针对中文文本,Zhao等[59]基于CRF来捕捉句子情感的语境约束,同时引入冗余特征来捕捉情感类之间的冗余标签; 李寿山等[60]基于中文研究了NB、EM、SVM和随机梯度下降4种分类方法,并基于Stacking进行组合分类,在不同领域中使用不同的组合方法。

4.3 基于深度学习的情感分析方法

相较于基于机器学习的方法,基于深度学习的方法不需要人工提取特征,它可以自动提取初级特征并组合成为高级特征,然后自动进行情感分类。在诸多神经网络模型中,适用于情感分析的主要有卷积神经网络CNN[14]和循环神经网络RNN。

卷积神经网络CNN是一种通过卷积核来进行局部特征计算的神经网络。CNN具有分层抽取特征的能力,且可进行多层次的深度组合,经常被用到图像识别中。Kim[15]提出了适用于文本分类的TextCNN,在TextCNN中文本数据通过词嵌入的方式被映射成词向量,然后用所有的词向量构成一个矩阵作为CNN的输入。该模型中的CNN网络结构相当简单,只包含1个卷积层和1个池化层,但却在多个数据集上取得了当时最好的准确率。针对微博文本,刘龙飞等[16]以词为单位训练词向量,然后将训练好的词向量送入到CNN中,进行句子特征的提取并依此判断情感倾向,这证明了CNN能够提取短文本的句子特征,适用于微博情感分类。

循环神经网络RNN是由很多需要串行计算的神经网络单元组成的,每个单元的输入都包含前一个单元的输出,这使得RNN具有记忆性,适合处理具有序列性质的数据。文本数据正好具有这种序列性,例如“猫吃老鼠”与“老鼠吃猫”,尽管文字是一样,但是由于文字序列的不同,表达的意思完全不相同。

图4描述了基于RNN进行情感分析的过程,RNN中的每个神经单元依次读取文字信息,hi为隐藏的输出单元,每一个hi中都包含了hi-1中的信息,因此最后一个隐藏的输出单元hN中包含了前面所有文字的语义信息,最后分类器根据hN中的信息来进行情感分类。

Figure 4 Process of sentiment analysis based on RNN图4 采用RNN进行情感分析的过程

RNN模型需要根据文本长度设置神经单元数目,当文本数据过长的时候,RNN中的单元数据过多,就会出现梯度消失或梯度爆炸[61]。为此很多研究在RNN的基础上做出了改进,本文整理如表4所示。

Table 4 Improvement of RNN

5 基于BERT模型的情感分析方法

5.1 情感分析中引入注意力机制

基于深度学习的情感分析方法通常将文本当作一个整体进行编码,并不能充分考虑到情感符号的效果。而基于情感词典的情感分析方法则过于依赖情感因素的影响,不能充分考虑到整个文本之间的语义关系[66,67]。另外,基于深度学习的方法通常只是对单条微博进行分析,没有考虑到全局的文本结构和情感因素。为了解决上述问题,现在很多的研究者都将注意力机制引入到了情感分析中[32,68]。本文总结了近两年来注意力机制在情感分析中的使用情况,如表5所示。

Table 5 Application of attention mechanism in sentiment analysis

5.2 Transformer模型

Transformer模型是由Vaswani等[17]提出的,它是一个用Self-Attention实现的Encoder- Decoder模型。通常Encoder-Decoder模型的核心结构都是基于RNN实现的,但是RNN存在无法并行运算且容易出现梯度消失或梯度爆炸等一系列问题。为此,Transformer模型中使用Self- Attention代替了传统的RNN。

从图5中可以看出,Encoder的输入是一句话的词向量表示,随后加上这句话的位置编码信息,然后经过一个Self-Attention层,该层能帮助Encoder在编码每个字的时候查看到该字的前后字的信息;Self-Attention层的输出会进入到一个Add&Norm层,Add表示将Self-Attention层的输入和输出进行相加,Norm表示将相加过的输出做归一化处理;归一化的结果会传入一个全连接的前馈神经网络,然后再进行一次Add&Norm操作。

Figure 5 Structure model of Encoder in Transformer图5 Transformer中Encoder部分图示

BERT模型最主要的部分就是基于上述这种Encoder模型实现的。

5.3 BERT模型

BERT是谷歌的 Devlin 等[18]在2018年提出的一个语言模型,它基于双向的Transformer模型实现,其结构如图6所示,其中E1,E2,…,EN表示输入,T1,T2,…,TN表示输出。

Figure 6 Structure of BERT model 图6 BERT模型结构图

BERT模型的输入是3个向量的和,分别是词向量、分段向量和位置信息。其中,词向量表示对当前词的编码,分段向量表示对当前词所在句子的位置编码,位置向量表示对当前词的位置编码,每一句话使用CLS和SEP作为开头和结尾的标记。

为了增强模型的语义表示能力,BERT在预训练的时候同时考虑到了每个词左右两边的词,创新性地提出了2个预训练任务:MLM(Masked LM)和NSP(Next Sentence Prediction)。MLM任务是指给定一句话,随机抹去其中的一个或几个词,用剩余的词去预测这几个词分别是什么,一般随机抹去15%的词汇;NSP任务是指给定一篇文章中的2句话,判断第2句话在文章中是否紧跟在第1句话之后。BERT在NLP领域的很多任务中取得了很好的结果,例如情感分类、问答系统等。

5.4 基于BERT的情感分析方法介绍

利用BERT模型进行微博情感分析属于BERT的一个下游任务,一般需要利用预训练好的BERT模型生成文本的向量表示,然后再采用相关的分类算法进行情感分类。BERT生成词向量的过程不同于word2vec,BERT生成词向量是一个动态的过程,能更充分地考虑到语义之间的信息。表6中总结了最近一年来使用BERT模型进行情感分析的方法。

Table 6 Methods of sentiment analysis based on BERT

6 研究不足与未来趋势

随着互联网的快速普及和微博用户数量的迅速增加,越来越多的研究者开始关注微博情感分析,本文对现有情感分析方法进行了总结:

(1)基于情感词典的方法。基于情感词典的方法操作简单且有着不错的分类效果,但是严重依赖于情感词典,一旦文中出现情感词典中没有的词将很难判断出情感倾向。另外,微博文本中的词汇时效性强,情感词典的更新速度很难满足网络词汇快速变化的现状。

(2)基于机器学习的方法。基于机器学习的方法需要以人工的方式从原始特征空间中选取出符合标准的特征子集,这在一定程度上保留了特征的原始含义,具有较强的可解释性。但是,这种方法严重依赖于特征工程,很多时候人工特征提取的好坏直接影响到分类的结果。

(3)基于深度学习的方法。基于深度学习的方法不需要人工提取特征,能充分考虑到文本的上下文语义信息,分类效果优于基于情感词典的方法和基于机器学习的方法。但是,基于深度学习的方法在提取语义信息时只是针对单条微博文本进行编码,不能结合全部微博数据,也不能充分考虑到表情符号的作用。

为了解决深度学习方法不能对影响分类效果的情感词汇给予更多关注的问题,研究者将Attention机制应用到了深度学习模型当中。Attention机制不仅可以考虑到全部的文本信息,还能为关键词汇分配更高权重,进而可以加强模型提取有用信息、减弱无用信息的能力。谷歌提出的BERT模型,本质上就是基于Self-Attention实现的深度神经网络模型,其情感分类效果明显优于其它的神经网络模型。因此,在情感分析未来的发展中,注意力机制的使用肯定会是一个很重要的研究方向。

微博用户发布的消息常常会伴随着图像或视频,但是目前的微博情感分析方法大多数是基于文本数据的,缺少对图像、视频等数据的情感分析。因此,未来的发展中,研究者应该深入对图像、视频等数据的分析。

7 结束语

为了监督和引导微博舆论,对微博内容进行情感分析是非常必要的。采集微博数据的方式主要通过微博公开的API和爬虫程序,采集到数据后需要对数据进行预处理操作,如分词、去停用词和句法分析等;另外,还需要根据需求将非结构化的文本数据转化为计算机能够识别的结构化数据,即将文本数据向量化。对预处理后的数据进行情感分析的方法主要有基于情感词典的方法、基于机器学习的方法和基于深度学习的方法。为了提高情感分类的精度,很多研究者将注意力机制引入到了深度学习模型中,取得了很好的分类效果。目前在NLP领域取得突破的BERT模型就是基于注意力机制实现的,注意力机制在NLP领域有着举足轻重的地位。

猜你喜欢

词典注意力向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
如何培养一年级学生的注意力
米兰·昆德拉的A-Z词典(节选)
米沃什词典
词典引发的政治辩论由来已久 精读
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线