文章名:《Sentiment Analysis of Chinese Microblog Based on Stacked Bidirectional LSTM》
作者:JUNHAO ZHOU1 , YUE LU1 , HONG-NING DAI 1 , (Senior Member, IEEE), HAO WANG 2 , (Member, IEEE), AND HONG XIAO3
年份 2019
1 Introduction
当前的微博不再只是人们分享日常和趣事的平台,而且也是针对当前热点事件等可以发表个人言论和感受的网络站点。因此如何在微博段评论中提取有效信息成为研究热点。
A.Motivation
当前有很多研究微博短评的技术,基于词典和外部知识库等,目前遇到的挑战主要有以下几点:
(1)同一词在不同文本中表达的含义不一样。
(2)由于微博短评特点,用户表达情感极性词很经常是俚语或者其他非正式中文表达。
(3)微博评论文本长度有限,可以有几个单词或者一个句子组成一条评论。有许多隐含的上下文特征通常很难发现。当前的很多技术也没有关注上下文本特征,没有关注到长距离文本依赖最终判断情感极性造成失误。
B.Contributions
首次提出Continuous Bag-of-Words(CBOW)和Stacked bi-directional Long short-term memory(Stacked Bi-LSTM)两者结合的新模型,优势融合,缺点互补。
主要贡献如下:
a.结合两种模型优点,例如有学习有效丰富的语义信息和上下文信息。
b.通过分析研究从微博上爬取的约3000条评论(已标记情感极性,正负对半)。
c.对模型实验结果进行全面评估,包括训练中调整的参数等等。
2 Related Works
把现有的研究分成两种类型:(1)基于传统机器学习方法(2)基于深度学习方法
A.基于传统机器学习方法
再粗略细分成两个种类:a.基于情感词典 b. 基于机器学习
a.基于情感词典,作者所了解到的现有研究有以下几种:
在现有词典基础上创建专属微博中文文本的词典; 结合程度副词词典、否定词词典、网络词词典等相关词典,进一步扩展情感词典;将词典和监督机器学习方法结合。
以上提出的研究中都面临相同的词典问题:微博文本时常更新的缩写和俚语等特性造成词典无法持续有效使用。
b.基于机器学习方法
B.基于深度学习方法
作者了解的有以下几种:
基于神经网络的词嵌入技术可以克服传统词表示方法的困难;当前的研究大多都有考虑文本中的某个词语义特征,但却忽略了上下文隐含特征,并且大部分与上下文特征相关的研究方法都需要人工提取上下文信息,这种处理方法既耗费精力,又在处理大规模数据集的过程中难以适用。因此引入 RNN 和 Bi-LSTM 来自动提取文本特征。
本文提出了具有多层RNN和Bi-LSTM结合方法,来解决人工提取上下文特征问题,并且有效解决传统机器学习方法的问题。
3 Overview of methodology
选择从微博网站上爬取的文本作为词库,把每一条评论都当作一篇文档。准备好文本后,就进行数据预处理(蓝色框架部分),将要预处理的文本喂入CBOW,将每个文档的单词都映射成高维向量;将顺序词向量(从词嵌入模型得到)与已标记的评论作为Stacked Bi-directional Long Short Term Memory (Stacked Bi-LSTM)的输入(黄色框架部分)。最后,将输出结果喂入Softmax分类器,得出情感极性判断结果。
A.Corpus construction
利用微博开放的API爬取词库,然后进行数据预处理:去除噪音、无效符号、链接、移除停用词(利用jieba)和html标记、过滤与主题无关词汇(例如“图片评论”)等等。例子如下图。
B. Word Representation
引入CBOW模型,在特定窗口大小范围内,根据当前单词的上下文学习单词嵌入。刚开始训练时,作者将该窗口先设定成5个词,将分段评论在5字范围内的文本喂入CBOW。从Google提供的开源工具包,对CBOW算法进行了改进。由Turian等人和Dai等人表明,在100维的段落向量中可以达到最佳性能。因此作者在训练后设置了100维的段落向量。
C.Document Representation
D.Sentiment analysis
采用Softmax 分类器来完成情感极性预测任务。计算交叉熵来评估预测值和真实值之间的差距,计算每条评论的损失值。
4 Sentiment analysis based on stacked Bi-LSTM
模型基本框架如下:
表示X为N条评论集合。 Xn表示第n条评论的有K个词,任意一条评论的词嵌入都是D维向量,目标是精确预测每条评论的情感极性。为了准确评估模型的准确性,作者将中性、客观、保守评论统一过滤,仅留正负评论集。引入独热码(one-hot 编码的最大优势在于状态比较时仅仅需要比较一个bit,一定程度上从而简化了比较逻辑,减少了毛刺产生的概率。注:毛刺,指没有用并且还会干扰预测的信息),[1, 0] 表示负面,[0,1]表示正面,编码后可以获得每条评论的独热码。
以下详细说明模型处理三步骤:
A.Data Preprocessing
首先,取评论集的平均长度K,对每条评论进行长度截取。超过K长度的截断,截断后的文本作为下一段;不够K长度的用0补全。接着获得词嵌入向量, 如果一个词在词嵌入模型中没有相应的向量,用D维的零向量代替这个词。用嵌入值替换评论中的所有单词后,可以得到一系列K×D评论向量。 最后一步是将N个注释向量组合成N×K×D向量(N条评论片段,每条K个词,D维向量)。
B.Document Representation
the upper layyers(b/d) take the outputs from the lower layyers(a/c).再讲两层结果b和d融合成O向量作为最终结果输出。隐藏层的每一个节点都代表着LSTM单元,都各自独立拥有输入门(input gate即it)、遗忘门(forget gate即ft)、输出门(output gate即ot)。选择LS TM模型的变化之一来计算每个时间步长t在每一层的隐藏状态at,bt,ct和dt。
最后进行融合O向量
c.Sentiment prediction
将O向量作为输入喂入Softmax分类器,得到每条评论分段的情感标志y,再整合成改天评论的情感标志集Y={y1,y2,y3,...,yn}.那么该条评论的最终情感标志Y‘计算如下:
先求得已标注的每条评论的损失函数,再根据下式计算该模型的总体损失函数。
,n代表第n条评论。
5 Experimental results
A.Experimental Settings
(1)Dataset
作者从微博团队爬取了65,536条评论作为CBOW模型的输入,并随机选取了3000条评论(正负平衡)进行注释后作为训练模型的素材。
(2)Model setting
词嵌入向量维度设置为100,最大的评论分段长度为13个词,每批300条评论分段喂入模型。除了别的同行提出的研究方法模型外,作者另外设置了单层LSTM,单层Bi-LSTM,两层LSTM,这些模型的基本设置类似。上述模型的隐藏层大小都是64。
(3)Experimental performance evaluation
作者随机选择训练集和测试集,以减少不平衡的影响。 作者设计了9组实验, 前3组实验选择25%作为测试比率。 实验编号4至6选30%。 实验编号7号到9号选择40%作为测试比率。例在选取的3000条评论中选择25%的评论数据作为测试集,那么就是选择了750条,表格的实验数据显示随机抽取的评论数据正负面是平衡的。
作者通过对比与其他模型的预测准确率来评估本文模型的表现。公式计算如下:表示“同”。
B.Comparision with baseline models
结论:(1)结合CBOW模型准确度通常比没有结合该模型要高。(2)深度学习模型要比卷积机器学习方法要好。(3)LSTM处理数据比CNN表现更好。(4)本文提出的Stacked Bi-LSTM在与基准模型对比中准确度最高。(5)测试率的波动对结果影响不大。
C.Impacts of parameters
作者考虑了三种参数的变化对Stacked Bi-LSTM模型的测试影响。分别有:(1)Stacked Bi-LSTM模型的层数。(2)LSTM的单元数。(3)句子分段的最大词数。
(1)层数越多,提取的有效特征也就越多,2层准确度是88.0%,3层88.7%,4层89.2%。
6 Conclusion
未来作者会考虑改进数据预处理过程,提高处理效率。