情感分析知识
当training数据不足以覆盖inference阶段遇到的特征时,是标注更多的数据还是利用现有外部知识充当监督信号?
基于机器学习、深度学习的情感分析方法,经常会遇到有标注数据不足,在实际应用过程中泛化能力差的局面。为了弥补这一缺点,学者们尝试引入外部情感知识为模型提供监督信号,提高模型分析性能。本文从常见的外部情感知识类型出发,简要介绍在情感分析中使用知识的一些代表性工作。
我们为什么要不断尝试在情感分析中融入知识呢?笔者以为有如下几点原因:
1)一般的文本分类任务只提供句子或文档级别的情感标签,引入情感词典等先验情感知识可以给情感文本引入更细粒度监督信号,使得模型能学到更适合情感分析任务的特征表示。
2)底层的词性、句法等分析任务能给下游的情感分类、抽取任务提供参考信息,如评价表达通常是形容词或形容词短语,而评价对象通常是名词;不同情感分析任务本身存在相互促进作用,如评价对象和评价词在句子中出现的距离通常比较近,联合抽取能同时提高两者的性能表现。
3)短文本评论通常略去了大量的背景常识知识,从文本本身通常难以推断真实情感倾向性。例如一条有关大选的推文内容是“I am so grateful for Joe Biden. Vote for #JoeBiden!!”,文本中并未涉及任何有关Trump的描述,要判断它关于Trump的立场倾向性时,需要了解的背景知识是,二者是这次大选的竞争对手,支持一个人就意味着反对另一个人。
那情感分析常用的知识又有哪些呢?
依据对知识获取途径的划分方式[1],我们简单总结了情感分析中常用的知识类型:
显性知识
一般情感词典(如MPQA,Bing Liu词典等),情感表情符;否定词(Negation)、强化词(Intensification)、连接词(Conjunction)等规则
SentiWordNet
ConceptNet,SenticNet
数据
数据 (Twitter、微博表情符弱标注数据)
领域数据集 (例如某一类别商品评论数据)
学习算法
词法、句法、语义依存等模型
多任务学习算法
预训练语言模型、词向量学习算法
其中,以情感词典最为常用。情感分析数据通常结合语言模型算法,产生情感向量表示作为下游任务输入;词法、句法分析模型一般直接为下游情感分析任务提供特征输入或者以多任务学习的方式参与到下游情感分析任务的训练过程中;结构化的外部知识库通常需要借助图算法进行特征挖掘,为文本提供更丰富的常识、情感上下文信息。
下表展示了几种常见的知识类型及其特点,我们将根据知识的获取途径及引入方式,结合具体论文阐述其使用方式。
知识类型 | 优点 | 缺点 |
---|---|---|
人工情感词典 | 质量高 | 规模小,静态,覆盖低 |
自动情感词典 | 规模大 | 静态、质量低 |
语言学规则 | 适用范围广 | 不够准确 |
预训练语言模型 | 上下文建模能力强 | 参数量大,训练时间长,运行速度慢 |
常识知识库 | 规模大、质量高、覆盖全 | 利用困难 |
目前,相关的情感分析工作可以大致分为以下几类:
引入情感词典知识
要说情感知识,大部分人首先会想到的就是人工编纂的情感词典,它简明直观、质量高、极性明确,使用方便,广泛应用在情感分类、情感元素抽取、情感原因发现、情感文本风格迁移等多种情感分析任务上。情感词区别于非情感词的地方在于,它们一般表征一定的情感/情绪状态,通常情感词典中还会给出其强度打分。类似的,现在网络上流行的部分表情符 (emoj,如:) 、:( 、、)也能表征某些情感/情绪状态。
图1 人工编纂的情感词典
我们在这里介绍一个同时使用情感词典中词的极性和打分的工作,看看前人们是如何在神经网络中把情感词的情感信息融入文本的情感表示中的。
给定一段评论文本,Teng等人[2]首先找出其中的情感相关词汇(如情感词、转折词、否定词),并计算其对文本整体情感极性的贡献程度,然后将每个词的贡献值乘上其情感得分作为局部的情感极性值,最终加上全局的情感极性预测值作为整个文本的情感得分。
图2 同时使用情感词典中词的极性和打分
虽然上述工作在计算情感得分时,考虑了not、very等否定词、强化词的得分信息,但是没有显式把这些词对周围词的情感语义表示的影响刻画出来,Qian等人[3]考虑到情感词、否定词、强化词在情感语义组合过程中起到的不同作用,对文本建模过程中对不同位置词的情感分布加以约束。例如,若一个词的上文是not等否定词,会带来not处文本情感语义的翻转。
图3 对不同位置词的情感分布加以约束
总体来看,情感词典作为一种易于获取、极性准确的情感知识,能够在标注语料之外,为情感分析提供额外的监督信号,既可以提升有监督模型的泛化能力,也能够为半监督、无监督模型提供一定的指导。
引入大规模无标注语料
语言建模作为一个典型的自监督学习任务,其语言模型产生的词表示作为下游任务网络模型的输入,表现出优越的性能,因而得到广泛的应用。如果能将情感知识融入到语言模型中,其产生的词表示必然对情感分析各子任务带来性能提升。
我们接着介绍一个在词向量中融入显式情感词典知识(实际使用的是表情符)的方法。
Tang等人[4]观察到,一般的词向量对于“good”和“bad”这种上下文相近但极性相反的词,给出的向量表示没有很强的区分性,不利于下游的各情感分析任务。Twitter和微博中有海量包含表情符的文本,利用这些情感极性明确的表情符可以过滤得到大量弱标注的情感文本。Tang等人使用这些语料,他们在普通的C&W模型基础上,引入情感得分相关的损失,将这些弱标注的情感信息融入词向量表示中,使“good”和“bad”这种上下文相近但情感不同的词的向量表示有明显的差异。在情感分类任务上,他们验证了融入情感表情符知识的有效性。在此基础上,他们还进一步自动构建大规模情感词典,该词典被[2]应用到Twitter情感分类任务上。
图4 将基于表情符过滤的弱标注情感信息融入词向量表示中
引入外部特征提取算法
除了准确的情感词知识,词法、句法、语义依存信息、评价词和评价表达等情感信息在文本的情感语义建模过程中也发挥了重要作用,这些知识不是显性存在于大规模的知识图谱中,而是存在于对应的人工标注数据中。一般利用学习算法从这些数据中训练用于提取特征的模型。
Tian等人[5]在近期的预训练BERT语言模型基础上,将文本中的评价对象(属性)、情感词等情感元素引入Mask Language Model预训练任务,进一步提高了BERT类模型在多个情感分类数据集上的性能。
图5 将多种情感元素引入Mask Language Model预训练任务
同[3]类似,Ke等人[6]在预训练语言模型中引入词级别的情感、词性知识。他们先给每个词预测词性信息,然后依据词性信息从SentiWordNet中推断其情感极性。基于获得的词性和情感信息,他们在一般的Masked Language Model基础上同时预测这些语言学标签,实现在预训练语言模型中注入情感知识。该模型在主流的情感分类、细粒度情感分析数据集上取得了目前最好的结果,证明引入词性和情感极性知识在预训练任务中的有效性。
图6 在预训练语言模型中引入词级别的情感、词性知识
Sun等人[7]提出在面向属性的情感分类(ABSA)任务上,引入Stanford parser解析得到的依存树信息辅助识别评价对象相关的评价词。他们将GCN在依存树上学习得到的表示与BLSTM学习到的特征结合,判断句子针对评价对象的情感极性。
图7 将GCN在依存树上学习得到的表示与BLSTM学习到的特征结合
在外部特征引入方式上,目前方法以两种方法为主:(1)直接作为特征输入模型 (2)以多任务学习的方式,作为辅助任务与主任务一同训练。这些方法的区别主要在引入特征类别或者辅助任务的任务设计。
引入常识知识
除了情感词典、情感词向量、情感预训练语言模型、文本特征抽取器外,结构化的外部知识也是很常见的一种情感知识来源。它的特点是规模大,覆盖面广,蕴含丰富的实体、事件或者常识概念间相关关系知识。结构化知识中具备高质量的关系类型,因而适用于需要推理、泛化的情感分析任务。
一个典型的需要泛化的任务是跨领域文本情感分类任务。源端和目标端的评价对象、评价词等情感相关特征差异较大,训练时模型依赖的源端分类特征未必会在目标端文本中出现,如何将这些情感特征进行对齐是一个重要且富有挑战性的问题。一类方法是使用通用情感词典作为pivot信息,建立源端、目标端共享特征的对齐,但这类方法只考虑共享的情感词信息,且通过文本本身学习到的情感表达对齐也不充分、准确,同时无法捕获到不同领域之间评价对象之间链接关系。
而结构化外部知识正好弥补了这些缺点,它蕴含情感词到非情感词、不同领域评价对象之间的关联关系。近年由于图表示算法的进步,学者们能够更高效的对这些结构化外部知识加以利用。
在跨领域情感文档情感分类任务上,Ghosal等人[8]在ACL2020上提出KinGDOM算法, 利用ConceptNet为所有领域构建一个小规模知识图谱,然后找出每个文档中独有的名词、形容词、副词集合,再依据从中抽取出一个文档相关的子图,进而提供一个由知识库知识提取而来的特征表示,与文档本身的情感表示一起做最后的情感分类。
图8 KinGDOM算法
类似地,在跨目标立场分类任务上,Zhang等人[9]利用SenticNet和EmoLex构建学习带情绪关系连接的语义-情绪图谱(SE-graph),并使用图卷积神经网络(GCN)学习节点表示。给定一段文本,他们使用SE-graph为每个词学习构建一个子图并学习其表示,得到的外部特征表示送入修改后的BLSTM隐层,与当前上下文特征进行融合。
图9 基于SE-graph 使用GCN学习节点表示
这两个工作都使用外部结构知识,扩展了输入特征空间,利用知识库中的连接将源端和目标端的评价词、评价对象等特征进行对齐,极大地丰富了情感上下文信息。
本文介绍了情感分析中引入外部知识的部分工作,简要介绍了现阶段情感分析常用的外部知识,从最常见的情感词典入手,逐步介绍基于情感词典的情感词向量、预训练语言模型,展示了使用多任务学习融合词性、依存句法等文本底层特征抽取器的工作,最后介绍了近期热门的使用结构化外部知识的文本情感迁移学习工作。我们可以看出,情感词典虽然最为简单,却是情感知识引入多种引入方式的基石,在情感分析算法中地位无出其右。
对于未来工作,一方面,由于目前的情感分析中知识引入的应用场景仍局限在情感分类任务中,有待扩展到情感抽取、情感(多样性)生成等各个情感分析任务上;另一方面,在情感分析专用预训练语言模型中融合结构化外部知识,增强预训练语言模型对情感分析相关世界知识的理解仍有待探索。
[1]刘挺,车万翔. 自然语言处理中的知识获取问题.
[2]Teng et al. Context-Sensitive Lexicon Features for Neural Sentiment Analysis.
[3]Qian et al. Linguistically Regularized LSTM for Sentiment Classification.
[4]Tang et al. Learning Sentiment-Specific Word Embedding for Twitter Sentiment Classification.
[5]Tian et al. SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis.
[6]Xu et al. SentiLARE: Sentiment-Aware Language Representation Learning with Linguistic Knowledge.
[7]Sun et al. Aspect-Level Sentiment Analysis Via Convolution over Dependency Tree.
[8]Ghosal et al. KinGDOM: Knowledge-Guided DOMain Adaptation for Sentiment Analysis.
[9]Zhang et al. Enhancing Cross-target Stance Detection with Transferable Semantic-Emotion Knowledge.