(ACL, 2020)SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis
本文工作:
- 通过在BERT的预训练中引入情感知识,提高模型在Sentence-level Sentiment Classification、Aspect-level Sentiment Classification、Opinion Role Labeling上的效果。
- 设计了三个不同的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方式,依次执行的分别是:
- Aspect-sentiment Pair Masking,很好理解,对于标注出的a-s pair,直接把两个词一起mask掉(每句最多mask两个pair)。
- Sentiment Word Masking,对于第一步未mask掉的情感词(包括没有对应aspect的),这里再去尝试mask,这一步最多mask掉句中10%的词。
- 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在product
和fast
两个位置为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.