前面的博文Deep Memory Network 深度记忆网络已经非常详细地介绍了该种网络架构,下面我们来研究一下其在基于方面的情感分类的应用。Aspect Based Sentiment是一种细粒度的情感分析问题,一个句子中可能有多个aspect,并且这些aspect的极性可能是不一样的。该任务来自SemEval-14 task 4,要求正确预测所有aspect的极性。基于方面的情感分析,以下全部使用简称ABSA。
Aspect Level Sentiment Classification with Deep Memory Network
首先介绍的第一篇论文来自哈工大(EMNLP 2016),现在被所有的ABSA论文作为baseline模型。
这应该是第一篇采用Deep Memory Network来实现ABSA的工作。他们使用的模型如上图所示,是一个三跳(层)的记忆网络。该模型把sentence当作passage,aspect当作question。值得注意的是,aspect可能包含多个词,在多个词的条件下,原论文会对所有词的词向量求和取平均作为该aspect的表示。
模型主要包括两大部分,Attention layer和Linear layer。在Attention Layer中,模型将aspect向量作为输入,以此为依据在记忆m中选择重要的evidences。线性层则执行一种线性变换以提高效果。原论文在层与层之间共享了attention layer以及linear layer的参数,即之前博文Deep Memory Network 深度记忆网络提到的Layer-wise架构,线性变换能提高效果也是该架构提出者发现的。
Attetnion Layer
Attention Layer主要计算两种形式Attention:Content Attention和Location Attention。
- Content Attention:是以记忆网络的attention形式计算sentence每一个词对于aspect的重要程度,比较直观;
- Location Attention:用来衡量与aspect不同距离的词的重要程度。因为直观上看,离aspect越近的词越重要。
Content Attention
计算记忆中所有元素的加权之和:
其中是每个元素的权重,本质上是一种attention,计算方式如下:
作者认为该attention有两种优势:
- 可以根据记忆元素和aspect的语义相关程度来适应性地分配重要性得分。
- 可微,因此易于以端到端的方式实现。
Location Attention
作者在论文中一共提出了四种方式来计算location Attention。
-
方式1:
其中是词的embedding,是句子长度,是跳数,是词在句子中的的位置。 -
方式2:
即方式1的简化版本。 -
方式3:
把距离信息当作是参数,与embedding求和。 -
方式4:
在距离表示上添加一个门控单元来控制写入记忆中的单词语义的量。四种方式区别见上图
Multiple Hops
至于为什么是多跳,作者解释说多层能捕捉到多个层级的抽象信息。由于模型在一层计算的是加权平均,单层不能解决复杂的如否定(negative)、加强(intensification)、对比(contraction)等复杂的语言信息。多层可以学习到不同级别的文本抽象信息,能以更高、更抽象的级别获取表示。
Aspect Level Sentiment Classification
作者使用的loss函数是cross entropy,这个就不作解释了。
Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Classification
下面介绍的这篇论文来自IJCAI-2019,其结果也是目前非Bert模型中已发表论文的最高水平。这个模型相较于上面那一篇要复杂很多,是一篇名副其实的IJCAI论文。
这篇论文较于上一篇的改进之处在于:
- 整合了语义分析信息到记忆网络中而不是位置信息。
- 设计了辅助任务来学习整个句子的情感分布,这可以为目标aspect的情感分类提供想要的背景信息。
该论文提出模型被称作deep mask memory network with semantic dependency and context moment (DMMN-SDCM)。它基于记忆网络,引入语义分析信息来指导attention机制并有效学习其他aspect(非目标aspect)提供的信息。同时论文提出的context moment嵌入到了整个句子的情感分类,被设计用于为目标aspect提供背景信息。
模型主要包括以下三个部分:
- the semantic-dependency mask attention
- the inter-aspect semantic modeling
- the context-moment sentiment learning
- 除此之外还有基础的的embedding模块、memory building模块、实现分类的classification模块。
DMMN-SDCM整体架构
Embedding模块没有什么可讲的。
Memory Building模块使用一个双向的LSTM网络来获取记忆,其中
The semantic-dependency-mask attention模块提取语义信息,并且为不同层选择不同的记忆元素来指导attention机制,该模块的输出记作
The inter-aspect semantic modeling模块使用语义依赖信息和attention机制来获取其他aspect的有用信息,其输出记为。
The context-moment sentiment learning使用一个被称为context moment learning的任务来学习整个句子中所有aspect的信息,其输出记为。
以上三个模块的输出构成了sentiment representation:。
Classification模块就是一个前馈网络,将映射到目标分类:
文中使用的loss包含三个部分,交叉熵+辅助任务loss+正则:
辅助任务的loss稍后介绍。
Semantic-Dependency-Mask Attention
该模块依据语义依存分析树(semanticdependency parsing tree),来对不同计算跳数的context memory施加mask。在每一个计算步骤,该模块在aspect的表示和记忆单元之间使用attention机制。
语义分析树使用开源工具spaCy生成。
原作者将语义分析树上词到aspect的路径长度作为距离,来提取语义分析信息。施加掩码的语义分析信息如下:
以上述方式得到整个层的之后,以如下形式计算层的attention得分:
其中是上一层的计算结果,是aspect的表示。
attention输出以如下方式进行计算:
在最后一层,作者采用另一个先行层来施加线性变换,作为一个门控函数来控制传递的转化特征和输入特征的比例:
门控由以下方式生成:
Inter-Aspect Semantic Modeling
该模块将上一步得到的语义依存信息整合到attention机制。上一个模块得到了所有aspect的aspect-aware representation,组成了如下所示的aspect menory:
在此基础之上,为了得到aspect memory里面目标aspect的信息,再次使用依存分析信息进行了加权:
其中,由以下方式计算而来:
其中是语义距离(笔者认为是依存分析树上的距离),是依存分析树的高度,这些都make sense。
然后再次使用attention机制,来得到最终表示
Context-Moment Sentiment Learning
该模块实现辅助任务,目的是想借助aspect之间的关系来识别其极性。作者认为这种关系能为分类提供背景信息。moment实际上刻画的是所有aspect在句子s上的情感分布,它是概率统计学上的矩的意思。
Context Moment定义如下:
其中是一个期望操作符,是情感分布随机变量,代表当前矩的阶。很明显,是奇数时,,是偶数时,,为了统一,作者也将所有的moment归一化到了
论文中给出的一个示例,平均值被称为第一矩,方差被称为第二矩。平均值越高,说明整个句子的情感倾向越靠近postive。方差越接近1,说明句子里aspect之间越接近与对比关系(即一个aspect很差,另一个很好,或者反之;越接近0说明句子里的aspect直接的关系越接近于合作关系(它们极性越接近)。
作者再次使用了attention层再加上两层的前馈网络来学习表示mean的矩和表示variance的矩。附加任务使用的loss如下:
其中表示使用的moment的最高阶(读到这里笔者可以断定moment表示的不是时刻,而是矩的意思,参见矩估计)。
论文中将前述的第一矩和第二矩作为学习目标。
第一矩由以下方式得到:
其中由前面介绍的Semantic-Dependency-Mask Attention在一个句子上的所有aspect的输出取平均得到:
以上述同样的方式计算得来:
模型的最终效果以及各部分的贡献可以参见下表:
这篇论文实现的模型非常的复杂,是一篇名副其实的顶会论文,值得仔细去读一读。作者三次attention机制的使用,引入语法分析工具得到语义信息之后辅助任务的添加,等等思想非常值得借鉴。