(ACL, 2020)引入情感知识的BERT预训练

(ACL, 2020)SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis

本文工作:

  1. 通过在BERT的预训练中引入情感知识,提高模型在Sentence-level Sentiment ClassificationAspect-level Sentiment Classification、Opinion Role Labeling上的效果。
  2. 设计了三个不同的loss,同时优化。

Overview

本文的重点在于pre-training任务的设计,大致是基于BERT的MLM任务做的改动,结构图如下。

我们自底向上,一步步拆解。

数据标注

1. 情感词的标注

由于原始数据中不带有情感知识,所以首先要做的是数据中情感知识的标注。主要分为以下几步:

第一,引用了[1]中处理过的数据,选出最高频的一些情感词后做了一下筛选,结果得出了46个正负情感词。这些词称为seed words

positive word negative word
great, good, like, just, will, well, even, love, best, better, back, want, recommend, worth, easy, sound, right, excellent, nice, real, fun, sure, pretty, interesting, stars too, little, bad, game, down, long, hard, waste, disappointed, problem, try, poor, less, boring, worst, trying, wrong, least, although, problems, cheap

第二,根据模式匹配[2]在每句句子中找出candidate words。

第三,计算candidate word和seed word之间的Pointwise Mutual Information (PMI)[2]: \[ \operatorname{PMI}\left(w_{1}, w_{2}\right)=\log \frac{p\left(w_{1}, w_{2}\right)}{p\left(w_{1}\right) p\left(w_{2}\right)} \tag{1} \] 根据一个candidate word和所有seed word的PMI,可以得到该词最终的情感极性(seed word的极性开始是给定的)。 \[ \mathrm{WP}(w)= \sum_{\mathrm{WP}(s)=+} \operatorname{PMI}(w, s) -\sum_{\mathrm{WP}(s)=-} \operatorname{PMI}(w, s) \tag{2} \]

2. Aspect-sentiment pair

除了找出文本中的情感词外,作者还找出了每个情感词具体描述的是哪个方面。实现方式比较简单,与情感词最近(距离不超过3个词)的名词就作为该情感词对应的aspect词。

3. 一个例子

以图中的句子为例,fast、appreciated都是找到的正向情感词,而product-fast则是一个aspect-sentiment pair(后称a-s pair)。

Masking

知道了句中有哪些情感词和a-s pair之后,下一步的任务就是做mask了。本文提出了三种mask方式,依次执行的分别是:

  1. Aspect-sentiment Pair Masking,很好理解,对于标注出的a-s pair,直接把两个词一起mask掉(每句最多mask两个pair)。
  2. Sentiment Word Masking,对于第一步未mask掉的情感词(包括没有对应aspect的),这里再去尝试mask,这一步最多mask掉句中10%的词。
  3. Common Token Masking,如果前两步mask掉的token还不足10%,这里再用和BERT相同的mask方式来进行补充。

预测和优化

做完mask后开始优化,损失函数由三种不同的loss组成: \[ L=L_{s w}+L_{w p}+L_{a p} \tag{3} \] 其中\(L_{sw}\)是指情感词(Sentiment Word)预测,和MLM方式相同,只不过大部分预测的词都是情感词。个人理解这里应该是包括上面Common Token Masking的非情感词的。

第二个是\(L_{wp}\),词语极性(Word Polarity)的预测,对于mask掉的情感词,预测其极性。这里应该只会预测那些情感词。

第三部分\(L_{ap}\)稍为复杂。它以多标签分类的形式,利用[CLS]输出一个vocab大小为长度的multi-hot向量来预测句中被mask掉的所有 a-s pair。举个例子,上面图中的pair为product-fast,所以该loss的label在productfast两个位置为1,其他位置全为0。而如果句中有两个pair,则应该有4个位置为1。

另外,这里的多标签的预测是通过对各个位置算sigmoid得出的,而不是整个向量维度上做softmax。作者的解释是,前者在预测时考虑了pair中两个词之间的关系,而不是像后者一样独立预测的。这里暂时有点没理解。

实验与结果

实验结果中比较有意思的是以下ablation study的结果。\(\text{RoBERTa}_{base}\)作为本文的baseline和base model。

可以看到几点:

  • 针对情感词做mask和预测的做法,能够在前两个任务上带来比较大的提升,且是Sentence-Level Classification任务的主要提升来源。
  • a-s pair的预测在两个需要细粒度/aspect信息的任务上带来的比较大的提升。
  • AP-I是指在做AP预测时用softmax(上面提到的),而这里的结果表明了作者的实现方式优于独立预测的方式。
  • 词性预测的loss带来的提升就比较一般。

总结

这篇文章对BERT pre-training的设计感觉还挺有意思的,可以反复参考想想启发。

参考文献

[1] Qiao Qian, Minlie Huang, Jinhao Lei, and Xiaoyan Zhu. 2017. Linguistically regularized LSTM for sentiment classification. In ACL 2017.

[2] Peter D Turney. 2002. Thumbs up or thumbs down?: semantic orientation applied to unsupervised classi- fication of reviews. In ACL 2002.