【论文阅读】Knowledge-Enriched Transformer for Emotion Detection in Textual Conversations (EMNLP 2019)

Motivation

人们的对话中通常包含着很多情感信息。但是人们通常在对对话进行情感分析的时候具有如下两个特点:

  1. 考虑上下文的信息。
  2. 人们本身具有一定的commonsense knowledge,利用commonsense knowledge进行对话分析。
    1

所以针对如上两个特点,本文提出了Knowledge-Enriched Transformer(KET)模型,该模型使用了层次的self-attention来得到文档的上下文关系,而且与之前方法不同,context和response分别作为encoder和decoder(bert 是将context和response进行concat,然后只用了encoder进行训练)。并且通过一个context-aware affective graph attention来加入commonsense knowledge。

Method

Transformer —— Attention is All You Need(https://arxiv.org/abs/1706.03762):

Transformer的motivation之一是减少序列的计算开销,而且在一些情况下确实也比rnn、cnn好很多。

  1. 由于句子在encoder部分时不是序列性的,所以加入了position embedding表示当前词的位置信息。
  2. Multi-head attention是多个Scaled Dot-Product Attention叠加。
  3. Feed Forward:全连接网络,包括两个线性变换和一个ReLU激活输出。
  4. Decoder部分相较于encoder多了一个attention,这个attention将encoder的输出也作为一个输入。

KET model

2

  1. 知识库检索:
    使用的额外知识:
  • Commonsense knowledge base ConceptNet (Speer et al., 2017):多语言的数据库,数据以三元组的形式存储<concept1, relation, concept2>,并且对这个三元组具有一个 [1, 10] 区间内的置信度打分。
  • Emotion lexicon NRC VAD (Mohammad, 2018a):包括2w个左右的英语单词,每个词对应一个三元组,<valence (negative-positive), arousal (calm-excited), and dominance (submissive-dominant)>。
    针对每个非停用词词,从数据库中抽取出所有三元组得到对应的实体,去掉实体中的停用词和不在词表内的,再去掉置信度低于1的三元组,根据VAD词典查询得到每个实体的VAD三元组得分,构成新的三元组<实体,置信度,VAD>。
  1. Embdedding:
    对context和response中所有词得到word embedding和position embedding。对实体得到word embedding。
  2. Dynamic Context-Aware Affective Graph Attention
    由于不同的实体对当前词的影响不同,所以采用attention的方法对当前的实体进行加权来得到所有实体的总体表示。我们可以认为,一个重要的实体是和文本具有很强的关联性,并且要有一定的情感强度。所以在attention机制中考虑了相关性和情感性两个方面。
  • 相关性:对当前句子的单词进行hierarchical pooling得到句子的表示,对所有句子求均值得到当前对话的总体表示,通过计算当前的实体表示和这个的总体表示cos相似度得到实体的相关性。
    $$rel_k = min-max(s_k) * abs(cos(CR(X^i), c_k))$$
  • 情感性:根据单词的VAD值计算得到:
    $$aff_k = min-max(||V(c_k)-1/2, A(c_k)/2||_2)$$
  • 将相关性和情感性联合起来接softmax得到当前实体的attention weight,并加权求和得到实体的总体表示。
    $$w_k = \lambda_k * rel_k + (1-\lambda_k) * aff_k $$
  1. Hierarchical Self-Attention:
    将实体表示和word embedding concat作为输入,用一层transform encoder得到每个句子的表示,再输入到一层transform encoder得到当前context的表示。同样,在对response计算过程,类似于transformer 的decoder的部分。

Experiments

实验证明加入commonsense是十分有效的。对于每部分的参数和model analysis的实验也很充足。