‘Targeted Aspect-Based Sentiment Analysis via Embedding Commonsense Knowledge into an Attentive LSTM’

—-本文发表于2018年AAAI会议
本文提出了一种通过使用常识性知识的新方法来解决targeted aspect-based情感分析问题,该问题包含aspect-based情感分析(分析对于不同aspect的情感)和targeted情感分析(给定target,分析情感)。本文提出了一种分层注意力机制的LSTM结构(target-level和sentence-level),同时将情感相关概念的常识性知识引入到深度神经网络的端到端训练中进行情感分类。

虽然现有的方法对于上述两个方面的情感分析已经有了不错的结果,然而仍然面临以下三个问题:

  • 首先,对于给定的target,它可能有多个instance(实例,这里的意思是target多次出现)或者是一个multiple words,现有的做法认为所有instance同样重要,并简单的计算其平均值作为结果,这种简化往往会造成冲突。
  • 其次,现有方法所利用的分层注意力只将与给定目标和aspect相关的情感词的推理隐式地建模为黑箱过程。
  • 最后,现有的研究缺乏对深层神经网络外部知识的有效整合,如情感或常识知识,这些知识可以直接帮助识别aspect和情感极性。此外,如果没有任何约束,全局注意力模型可能倾向于编码与任务无关的信息。

本文的贡献主要体现在以下三点:

  • 提出了一种分层注意力模型,该模型首先明确地关注target,然后再关注整个句子
  • 我们扩展了经典的LSTM单元,其中包含了与外部知识集成的组件
  • 我们将情感常识性知识整合到一个深度神经网络中。

我们简单的介绍一下情感分析的几个子问题:ABSA,targeted sentiment analysis。以及在深度神经模型中加入外部知识。

Aspect-Based Sentiment Analysis(ABAS)

ABAS就是要分析每个aspect的情感极性,该问题最大的挑战是如何在整个句子中表达指定aspect的情感信息。该部分的研究也是从最初的基于特征工程的方法到基于神经网络的方法,再到引入注意力机制(对于句子中的每个单词,注意力向量量化其情感显著性以及与给定aspect的相关性)。

Targeted Sentiment Analysis

该任务是要分析句子中给定目标实体的情感。因此针对性的情感分析方法是至关重要的,比如,目标依赖LSTM (TDLSTM)和目标连接LSTM(YCLSTM)对情感目标与整个句子之间的交互作用进行建模。

Incorporating External Knowledge

本文提出的模型,Sentic LSTM,受Xu等的启发(add a knowledge recall gate to the cell state of LSTM),不同之处在于,我们使用外部知识来生成hidden output并控制信息流。

Methodology

Task Definition

Targeted ABSA的任务定义如下:
对于句子s,我们将所有提到的同一个target视为一个target。对于由m个单词组成的target t,定义T={t1,t2,…tm},其中ti指t的第i个单词。Targeted ABSA的任务可以划分为两个子任务:首先,对于一个预定义的集合,找到t的aspect categories;其次,对于t找到它相对于每个aspect的情感。我们举一个例子来说明情况:
“I live in [West London] for years. I like it and it is safe to live in much of [west London]. Except [Brent] maybe. ”
该句子中包含两个target,WestLondon和Brent。我们的目标是检测aspect和对应的情感极性。在该例子中,对[WestLondon],输出是[‘general’:positive;’safety’:positive];对[Brent]的输出是[‘general’:negative;’safety’:negative]。这里的aspect指的是general和safety。

Overview

本文的神经网络架构分为两部分:序列编码器和分层注意力。结构示意图如下所示:

Framework

对于给定的句子,首先用一个BiLSTM进行编码;目标级注意力(target-level attention)将目标表达式位置上的hidden outputs作为输入(用棕色高亮显示),并在这些单词上计算一个自注意向量vt;然后,使用target representation(即vt)和aspect嵌入来计算句子级注意力(sentence-level attention);句子级注意力组件为每个aspect和target对返回一个句子向量;最后这个句子向量将被送到一个分类器中给出情感极性。

Target-level attention

这里我们先对上文提到的T={t1,t2,…tm}做进一步的说明,即ti可以是连续的也可以是非连续的,例如对于上文的例子中的target [West London]的T为T={3,4,20,21}。记T对应的hidden outputs为H’={ht1,ht2,…htm},则target t的向量表达vt为:
vt=H’$\alpha$=$\sum_{j}{\alpha_jh_{tj}}$

其中$\alpha$是target注意力向量,计算公式如下:

$\alpha$=softmax(W(2)atanh(W(1)aH’))

注意计算$\alpha$只使用了H’,而且H’的m是变化的(H’是dh x m维的),所以这里的W(1)a是dm x dh维的,W(2)a是1 x dm维的。

Sentence-Level Attention Model

有了target注意力向量,结合aspect嵌入,我们便可以获得句子最终的嵌入(target-and-aspect-specific,计算公式如下:
$v^{a}{s,t}=H\beta=\sum{i}{\beta_ih_i}$

其中H=[h1,….,hL],是BiLSTM的输出,$\beta$是句子级别注意力向量。a指定aspect,s指定句子,t指定目标。对于指定的aspect和t,$\beta$的计算公式如下:

beta

个人觉得作者对该公式的解释存在模糊的地方,顺着作者的意思,在这里揣测了一下作者的意图。首先,它将target的表达vt和每个隐藏层状态拼接了一下(concatenating),然后接上一个多层神经网络(一层或者两层带tanh激活函数的全连接层),得到的输出和aspect嵌入va相乘,最后接一个softmax。

Commonsense Knowledge

在本文中,使用SenticNet为我们引入常识性知识,在这个知识库中,“rotten fish”有“KindOf-food”的属性,这可以提供信息让我们使用类似“restaurant”、“food quality”之类的aspect(个人理解这里的aspect选取可以基于这样的规则,SenticNet对每个实体的属性有一个打分,例如“rotten fish”的“KindOf-food”的打分为0.922,那么我们可以根据这些打分来选择aspect)。除此之外,该常识库还可以提供情感信息,比如“rotten fish”的“Arises-joy”的打分为0。我们需要将这些信息编码到我们的模型中。

Sentic LSTM

Sentic LSTM试图赋予概念(concept)两个重要的作用:1)帮助过滤从一个时间步(time step)流向下一个时间步的信息;2)向记忆单元提供补充信息。
在第i个时间步,我们假设一个常识性概念候选集将被触发(triggered)并且映射到一个低维空间。(关于这个候选集作者没有详述如何生成,关于如何映射,作者应该是采用AffectiveSpace中的方法。)我们定义一个包含K个概念的集合{$\mu_{i,1},…,\mu_{i,k}$},首先对这个集合做一个combine,即:$\mu_i=\frac{1}{K}\sum_j\mu{i,j}$

作者提到这里的K至多为4。在介绍Sentic LSTM之前,我们先回顾一下LSTM以方便对比,LSTM的公式如下:

LSTM

改进之后的Sentic LSTM公式如下:

Sentic LSTM

首先我们看到,作者假设情感概念(affective concepts)是控制token-level信息的有意义线索,于是$\mu_i$被用在各个门控单元中。其次,增加了一个知识输出门(knowledge output gate)$o^c_i$去输出概念级的知识(Wc$\mu_i$)。

实验

为了注入常识性知识,我们使用一个基于语法的概念分析器在每个时间步提取一组候选概念,并使用affecttivespace2作为概念嵌入。如果没有提取概念,则使用零向量作为概念输入。

相关文章
评论
分享
  • A Hierarchical Framework for Relation Extraction with Reinforcement Learning

    “A Hierarchical Framework for Relation Extraction with Reinforcement Learning”—-本文发表于2019年的AAAI会议,采用两层结构来进行关系抽取。 Hier...

    A Hierarchical Framework for Relation Extraction with Reinforcement Learning
  • SenticNet5 - Discovering Conceptual Primitives for Sentiment Analysis by Means of Context Embeddings

    “SenticNet5:Discovering Conceptual Primitives for Sentiment Analysis by Means of Context Embeddings”—-本文发表于2018年AAAI...

    SenticNet5 - Discovering Conceptual Primitives  for Sentiment Analysis by Means of Context Embeddings
  • Joint entity and relation extraction based on a hybrid neural network

    “Joint entity and relation extraction based on a hybrid neural network ”————-本文发表于2017年的NeuroComputing期刊上。利用神经网络的方法实现...

    Joint entity and relation extraction based on a hybrid neural network
  • End-To-End Memory Networks

    End-To-End Memory Networks—-本文发表于2015年的NIPS会议。人工智能研究面临的两大挑战是,建立能够在回答问题或完成任务时执行多个计算步骤的模型,以及能够描述顺序数据中的长期依赖关系的模型。在这项工作中,...

    End-To-End Memory Networks
  • Graph Neural Networks with Generated Parameters for Relation Extraction

    Graph Neural Networks with Generated Parameters for Relation Extraction—-本文发表于2019年ACL会议。本文提出了基于生成参数的图神经网络模型(GP-GNNs)...

    Graph Neural Networks with Generated Parameters for Relation Extraction
  • Context-Aware Representations for Knowledge Base Relation Extraction

    Context-Aware Representations for Knowledge Base Relation Extraction—-本文发表于2017年的EMNLP会议。这是一篇关于句子级别实体关系抽取的论文,考虑到传统方法只...

    Context-Aware Representations for Knowledge Base Relation Extraction
  • On the Estimation of Treatment Effect with Text Covariates

    On the Estimation of Treatment Effect with Text Covariates本文发表于2019年IJCAI会议。 IntroductionTreatment effect,是指一个变量(trea...

    On the Estimation of Treatment Effect with Text Covariates
  • Pytorch自定义损失函数

    Pytorch自定义损失函数本文以自己实现交叉熵损失函数为例(不彻底的实现),来简单说说在pytorch中自定义损失函数。首先我们看一下pytorch中的交叉熵损失函数是什么样的,这里我们简单放张图,网上还是有不少说这个的,可自行百度...

    Pytorch自定义损失函数
  • pytorch中LSTM对变长句子的处理

    pytorch中LSTM对变长句子的处理在自然语言处理问题中,以最简单的句子分类为例(比如句子级别情感分类),来说明LSTM对变长句子的处理。(看了网上关于这部分的介绍,大抵互相复制,但感觉都没有说清楚具体怎么用,通过实践,个人总结了...

    pytorch中LSTM对变长句子的处理
  • hexo-markdown使用笔记

    1.hexo的上下标问题:markdown表示下标可以在下标开始和结束处使用‘~’,但是不知道为啥在Typora好用,但在github网页端不好用。亲测一种非常好用的方法,类似于HTML的标签,即在下标开始和结束时使用sub标签(结束...

    hexo-markdown使用笔记
Please check the comment setting in config.yml of hexo-theme-Annie!