SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis

SKEP将不同类型的情感知识整合在一起,为各种情感分析任务提供统一的情感表示。

模型解析

skep

Unsupervised Sentiment Knowledge Mining

情感词挖掘:PMI(Pointwise Mutual Information)

PMI方法仅依赖于少量的情感种子词,给出了每个种子词的词极性$WP(s)$。首先建立一个候选词对的集合,每个词对包含一个种子词,并满足预定义的词性模式。然后,一个词对的共现用PMI计算如下:
$$
PMI(w_1,w_2) = log \frac{p(w_1,w_2)}{p(w_1)p(w_2)}
$$
其中,$p(.)$表示通过计数估计的概率。

一个词的极性是由其PMI得分和所有正种子及负种子之间的差异决定的:
$$
WP(w) = \sum_{WP(s)=+}{PMI(w,s)} - \sum_{WP(s)=-}{PMI(w,s)}
$$
如果$WP(w)>0$,判定$w$为正向情感词,反之为负向情感词。

方面情感对

一个情感词与其最近的名词将被视为一个方面-情感对,最大距离被经验地限制为不超过3个token。

Sentiment Masking

Sentiment Masking主要是构造掩盖情感信息的语料。此过程包含情感检测和混合情感掩盖两部分:

Sentiment Detection with Knowledge

  1. 如果输入序列中的一个词也出现在知识库G中,那么这个词就被视为情感词。
  2. 情感词与其最近的名词(距离3以内)作为aspect-sentiment pair候选集,如果这样的 candidate也被发现在挖掘的知识G,那么它被认为是一个方面感情对。

Hybrid Sentiment Masking

由三种类型token生成:aspect-sentiment pairs, sentiment words, common tokens.

  1. Aspect-sentiment Pair Masking:随机选择最多2个aspect-sentiment pair进行mask,这种masking方法提供了捕获aspect word和sentiment word的组合的方法

  2. Sentiment Word Masking:对于未屏蔽的sentiment word,随机选取不超过10%的token进行mask。

  3. Common Token Masking:如果上两个步骤中的mask数量不足(低于10%),随机选取一定数量的common tokens进行掩盖。

Sentiment Pre-training Objectives

$\widetilde{X}$为sentiment masking之后产生的序列,模型需要恢复三个被替换的目标:

$$
L = L_{sw} + L_{wp} + L_{ap}
$$

Sentiment Word(SW) prediction: $L_{sw}$

利用 transformer encoder的output vector $\widetilde{x_i}$ 来恢复被屏蔽的情感词,$\widetilde{x_i}$被输入到一个softmax层,该层在整个vocab上产生一个归一化的概率向量$\widetilde{y_i}$,因此$L_{sw}$就是最大化下面的损失:
$$
\widehat{y}_i=softmax(\widetilde{x}_iW+b)
$$

$$
L_{sw}=-\sum^{i=n}_{i=1}{m_i\times y_i log{\widehat{y}_i}}
$$

$W$和$b$是输出层参数,当$i$-th位置的词语被屏蔽时,$m_i$=1,否则为0,$\widetilde{y_i}$为原始词$x_i$的独热编码表示。

Word Polarity(WP) prediction:$L_{wp}$

$L_{wp}$与$L_{sw}$类似,计算每个被mask掉的sentiment token

Aspect-sentiment Pair(AP)prediction: $L_{ap}$

论文中利用多标签分类对aspect-sentiment pair进行预测,使用最终的[CLS]来表示整个序列,利用sigmoid激活函数同时输出多个token的预测结果:
$$
\widehat{y}_a = sigmoid(\widetilde{x}_1W_{ap} + b_{ap})
$$

$$
L_{ap}=-\sum^{a=A}_{a=1}y_alog{\widehat{y}_a}
$$

其中,$x_1$表示[CLS]的输出向量,$A$为被掩盖的aspect-sentiment pairs数量,$\widehat{y}_a$为预测的词语概率分布,$y_a$为目标aspect-sentiment pair的独热编码表示($y_a$中多个位置为1)

Fine-tuning for Sentiment Analysis

我们验证了三个典型的情绪分析任务:句子级的情绪分类,方面级情绪分类和观点角色标记。

Sentence-level Sentiment Classification

这个任务是分类句子的情感极性。用【CLS】表示输入语句的整体表示形式。外接一个分类器来对整句进行情感极性分类。

Aspect-level Sentiment Classification

这个任务的目的是当给定一个上下文文本时,分析方面的细粒度情感。因此输入包含两个部分:aspect和上下文。

讲这两部分用[SEP]进行拼接,输入到transformer encoder中,利用[CLS]向量判断是否属于aspect-sentiment pair。

Opinion Role Labeling

这个任务是从输入文本中检测细粒度的观点。这个任务被转换成序列标记,它使用BIOS方案进行标记,并添加一个CRF层来预测标签。

参考文献

  1. SKPEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis