情感分析问题可以划分为许多个细分的领域,下面的思维导图[2]展示了情感分析任务的细分任务:
其中词级别和句子级别的分析对象分别是一个词和整个句子的情感正负向,不区分句子中具体的目标,如实体或属性,相当于忽略了五要素中的实体和属性这两个要素。词级别情感分析,即情感词典构建,研究的是如何给词赋予情感信息。句子级/文档级情感分析研究的是如何给整个句子或文档打情感标签。而目标级情感分析是考虑了具体的目标,该目标可以是实体、某个实体的属性或实体加属性的组合。具体可分为三种:Target-groundedaspectbasedsentimentanalysis(TG-ABSA),Targetnoaspectbasedsentimentanalysis(TN-ABSA),Targetaspectbasedsentimentanalysis(T-ABSA).其中TG-ABSA的分析对象是给定某一个实体的情况下该实体给定属性集合下的各个属性的情感分析;TN-ABSA的分析对象是文本中出现的实体的情感正负向;T-ABSA的分析对象是文本中出现的实体和属性组合。下表例举了不同目标的情感分析任务:
2、情感分析常用文本预处理方法
2.1中文分词技术
词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键。研究表明特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。
中文分词主要分为两类方法:基于词典的中文分词和基于统计的(HMM,CRF)中文分词。举个例子:“网商银行是蚂蚁金服微贷事业部的最重要产品”,其对应的分词结果为:网商银行/是/蚂蚁金服/微贷事业部/的/最重要/产品。
当前我们讨论的分词算法可分为两大类:基于字典、词库匹配的分词方法;基于词频度统计(HMM,CRF)的分词方法。第一类方法应用词典匹配、汉语词法或其它汉语语言知识进行分词,核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。如:最大匹配法、最小分词方法等。这类方法简单、分词效率较高,但汉语语言现象复杂丰富,词典的完备性、规则的一致性等问题使其难以适应开放的大规模文本的分词处理。第二类基于统计的分词方法则基于字和词的统计信息,统计学认为分词是一个概率最大化问题,即拆分句子,基于语料库,统计相邻的字组成的词语出现的概率,相邻的词出现的次数多,就出现的概率大,按照概率值进行分词,所以一个完整的语料库很重要。
当前中文分词技术已经非常成熟,下表[3]展示了当前业界主流的分词服务支持的功能:
2.2去除停用词
停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为StopWords(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的。
2.3文本特征提取
2.3.1Bagofwords
BoW模型最初应用于文本处理领域,用来对文档进行分类和识别。其核心思想是建立一个词典库,该词典库包含训练语料库的所有词语,每个词语对应一个唯一识别的编号,利用one-hot文本表示。文档的词向量维度与单词向量的维度相同,每个位置的值是对应位置词语在文档中出现的次数,即词袋模型(BOW)BoW模型因为其简单有效的优点而得到了广泛的应用。如下示例,给定两句简单的文档:
文档1:“我喜欢跳舞,小明也喜欢。”
文档2:“我也喜欢唱歌。”
基于以上这两个文档,便可以构造一个由文档中的关键词组成的词典:
词典={1:“我”,2:“喜欢”,3:“跳舞”,4:“小明”,5:“也”,6:“唱歌”}
这个词典一共包含6个不同的词语,利用词典的索引号,上面两个文档每一个都可以用一个6维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数。这样,根据各个文档中关键词出现的次数,便可以将上述两个文档分别表示成向量的形式:
文档1:[1,2,1,1,1,0]
文档2:[1,1,0,0,1,1]
通过上面的例子可以看出,虽然BOW模型理解和实行起来简单,但是他有以下缺点问题:
(1)容易引起维度灾难问题,语料库太大,字典的大小为每个词的维度,高维度导致计算困难,每个文档包含的词语数少于词典的总词语数,导致文档稀疏。(2)仅仅考虑词语出现的次数,没有考虑句子词语之间的顺序信息,即语义信息未考虑。
2.3.2TF-IDF
如下示例可以清楚说明TF-IDF的计算方法:
假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。
一个计算文件频率(IDF)的方法是文件集里包含的文件总数除以测定有多少份文件出现过“母牛”一词。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是lg(10,000,000/1,000+1)=4。
最后的TF-IDF的分数为0.03*4=0.12。
2.3.3预训练模型
预训练模型的发展也反映了深度学习在NLP领域的进步。NLP领域的预训练模型大致可以分为以下两类:
基于词嵌入的预训练方法
基于语言模型的预训练方法
BERT提出后大火,也许是因为BERT的效果太好。目前绝大多数的预训练模型都是在BERT上改造而来。清华大学的王晓智和张正彦同学给出了目前的预训练模型关系图,这里引用一下,如下图所示:
总结
本篇博文主要介绍了情感分析任务的概述以及进行情感分析任务之前我们需要进行的准备工作,其中着重介绍了NLP领域最重要的预训练模型的主要里程碑。下一篇博文将着重介绍进行情感分析任务的具体方法,包括传统基于统计的方法和深度学习方法。
参考文献
PANGB,LEEL.Opinionminingandsentimentanalysis[J].FoundationsandTrendsinInformationRetrieval,2008,2(1-2):130-135.
BengioY,DucharmeR,VincentP,etal.Aneuralprobabilisticlanguagemodel.
MikolovT,ChenK,CorradoGS,etal.EfficientEstimationofWordRepresentationsinVectorSpace.
MikolovT,SutskeverI,ChenK,etal.DistributedRepresentationsofWordsandPhrasesandtheirCompositionality.
MatthewPeters,MarkNeumann,MohitIyyer,MattGardner,ChristopherClark,KentonLee,andLukeZettlemoyer.2018.DeepContextualizedWordRepresentations.
AlecRadford,KarthikNarasimhan,TimSalimans,andIlyaSutskever.2018.ImprovingLanguageUnderstandingbyGenerativePre-Training.
JacobDevlin,Ming-WeiChang,KentonLee,andKristinaToutanova.2018.BERT:Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding.