MemNet、AT-LSTM、IAN、AF-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(二)
机器之心 2023-06-18 13:12 发表于北京
以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型
机器之心专栏
本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 3 期进行连载,共介绍 18 个在推荐系统任务上曾取得 SOTA 的经典模型。
- 第 1 期:CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM
- 第 2 期:MemNet、AT-LSTM、IAN、AF-LSTM
- 第 3 期:Bert on ABSA、ASGCN、GAN、Sentic GCN
您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(一)
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
MemNet | https://sota.jiqizhixin.com/project/memnet-2 收录实现数量:7 支持框架:PyTorch,TensorFlow |
Aspect Level Sentiment Classification with Deep Memory Network |
AT-LSTM | https://sota.jiqizhixin.com/project/at-lstm | Attenion-Based LSTM for Aspect-level Sentiment Classification |
IAN | https://sota.jiqizhixin.com/project/ian 收录实现数量:3 支持框架:PyTorch,TensorFlow |
Interactive Attention Networks for Aspect-Level Sentiment Classification |
AF-LSTM | https://sota.jiqizhixin.com/project/af-lstm 收录实现数量:1 支持框架:PyTorch |
Learning to Attend via Word-Aspect Associative Fusion for Aspect-Based Sentiment Analysis |
情感分析(sentiment analysis)是指利用计算机技术对文本、图像、音频、视频甚至跨模态的数据进行情绪挖掘与分析。广义上讲,情感分析还包括对观点、态度、倾向的分析等。情感分析是自然语言处理的一个重要的研究领域。情感分析主要涉及两个对象,即评价的对象(包括商品、服务、组织、个体、话题、问题、事件等)和对该对象的态度、情感等。情感分析在社会的舆情管理、商业决策、精准营销等领域有着广泛的应用。从情感分析的数据来源角度看,可分为人脸情感分析、语音情感分析、肢体语言情感分析、文本情感分析和生理模式情感分析等,本文聚焦于文本的情感分析,这也是目前网络内容理解中使用的重要技术(如无特别说明,下文中提到的情感分析均为文本情感分析)。
在自然语言处理中,情感分析属于典型的文本分类问题,即把需要进行情感分析的文本划分为其所属类别。主流的情感分析方法有两种:基于词典的方法和基于机器学习算法的方法。基于词典的方法主要通过制定一系列的情感词典和规则,拆解文本、提取关键词、计算情感值,最后通过情感值来作为文本的情感倾向判断依据。这种方法往往会忽略其词顺序、语法和句法,将这段文本仅仅看做是一个词集合,因此不能充分的表达文本语义信息。而引入深度学习技术的机器学习方法,利用词嵌入技术可以避免文字长短不均带来的处理困难;使用深度学习抽象特征,可以避免大量人工提取特征的工作;模拟词与词之间的联系,有局部特征抽象化和记忆功能,因此,深度学习技术在情感分析中发挥了越来越重要的作用。
目前情感分析用到的深度学习神经网络有多层神经网络(MLP)、卷积神经网络(CNN)和长短期记忆模型(LSTM),具体不同的模型通过交叉验证技术选取最优参数(比如,几层模型、每层节点数、Dropout 概率等)。情感分析的模型主要分为三个层面,分别为:Document level、Sentence level和Aspect level。其中,Document level是将整个文本作为分析单元并假设该文本讨论的对象为单一实体且情感、观点都是鲜明、清晰的,即neural、positive or negative 。Sentence level则是以每个句子作为单独的分析对象,由于句子与句子间可能存在某些关联,因此我们不能将其认为是观点明确的。而对于Aspect level其分类粒度更细,即我们需要抽取出targets不同层面相互独立的评价,并进行总结综合得到最后的情感。
本文回顾情感分析中必备的TOP模型。一些经典的自然语言处理领域的模型,例如XLNet、Bert及各种变体,适用于NLU、文本生成、情感分析等多个领域,本文均不涉及。本文只专注于专门的sentiment analysis模型。
一、Aspect level
1、 MemNet
本文引入memory network,并且和LSTM不同的是注意力计算的输入是直接的word embedding而不是经过LSTM 之后的隐藏层。给定一句话,包括n个words 和一个 aspect word w_i ,之后通过预测句子 s 的情感极性来当作该 aspect 的情感极性。
图1 深度记忆网络有三个计算层(跳,hops),用于属性级情感分类的说
如图1所示,图左边部分,给定一个句子 s = w_1,w_2,…,w_i,…w_n和 aspect word w_i,并获取每个 word 的 embedding vector 分别记为 e_1,e_2,…,e_i,…e_n(因为实际情况中 aspect 可能不止一个单词,所以为了方便能都用 w_i表示,在 aspect 为多个 word 的情况时,得到其中每个 word 的 embedding vector 之后求和取平均。)之后将这些 words 分为两部分:aspect 部分和 context 部分,其中 context 部分的 word vectors {e_1,e_2,…,e_{i-1},e_{i+1},…e_n}被合在一起作为外部记忆 m ∈ R^{d×(n-1)}。
图右边部分由多个计算层组成,每个计算层都是两路的,一路是 attention layer,另一路是 linear layer。在 hop 1 中利用注意力机制来实现对外部记忆的内容寻址,其中 aspect vector 作为 Attention 中的查询向量。之后将Attention layer 的结果和 aspect vector 经过线性变换之后的结果求和作为最终结果,并作为下一个 hop 的输入。之后按 hop1 同样的方式执行多次,这样可以使更多的外部记忆中的内容(context 内容)选择。因为当第一次 context 中有的部分被送入 Attention 中,那么第二次查询时,查询向量就包含了一部分原本是 context 的内容,那么之后找到的内容肯定更多(因为查询中有 context 内容,所以能匹配的内容也更多)。最后,将最后一层的 hop 的输出作为整个句子的表示并用于情感分类。每个计算层(hop)中的参数是共享的,所以无论构建一个计算层还是多个计算层其参数量是相同的。
本文的Attention 部分包含 Content Attention(注意内容)和 Location Attention(注意地址)两部分。一方面,不同context word对于句子的语义表示贡献不一样;另一方面,不同的context word对于特定aspect的情感倾向的重要性也是不一样的。
content attention:在hop1的attention中,可以把关键词向量W_i认为是query,word词嵌入认为是key和value,寻找句子和属性词之间的关系:
location attention:作用是加大对属性词的周围词的注意力,具体作者在文中提出了四种location attention。
Model 1:作者用下面这个公式计算 memory vector m_i:
Model 2:这是model 1的简化版本,对不同跳数的w_i使用相同的位置向量v_i。位置向量v_i 的计算方法如下:
Model 3:将位置向量v_i看作是一个参数,用向量加法计算一块内存,即:
Model 4:位置向量也被看作是参数。与Model 3不同的是,位置表征被视为神经门,以控制多少百分比的词的语义写入存储器中。将位置向量v_i送入一个sigmoid函数σ,用元素相乘法计算m_i:
多层计算层的必要性
首先多层计算层在得到抽象表示方面被广泛使用。因为单层计算层只包含一个 attention layer,不足以处理复杂计算,即模型能力不强,所以作者提出使用多层计算层来提升模型的处理能力。
分类部分
直接使用softmax来进行分类。
当前SOTA!平台收录MemNet共7个模型实现。
项目 | SOTA!平台项目详情页 |
MemNet |
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/memnet-2 |
2、 AT-LSTM
Aspect level sentiment是个fine-grained细粒度的任务,是针对一个句子中陈述的不同属性(aspect)进行分类,过去是直接对一个整句子判断情感极性,而不考虑句子内部不同部分的sentiment。这种方法提出时,神经网络模型在属性级情感分类任务的表现差强人意。例如上文介绍的TD-LSTM、TC-LSTM 方法只考虑了 target 没有考虑 aspect。进一步可以理解为之前的工作只考虑一句话中选定的一个 target(即 entity or aspect),然而,一句话中可能出现多个 aspect 。作者考虑引入attention。
LSTM with Aspect Embedding(AE-LSTM)。因为 aspect 信息很重要,所以作者提出要给 aspect 找 embedding vector。因为一句话中可能出现多个 aspect ,所以每个 aspect 应当有各自对应的 embedding vector 。作者用v_{a_i}来代表第 i 个 aspect 的 embedding vector,其维度为 d_a,所以可以表示为 v_{a_i}∈R^{d_a}。而所有 aspect 的 embedding vector 组成的 embedding matrix 用 A 表示,A∈R^{d_a×|A|},其中,|A|代表 A 中的向量个数。
Attention-based LSTM (AT-LSTM)。为了抓住一句话中对应于属性重要部分的信息,作者提出了一种 attention mechanism,示意图如下:
图2 基于注意力的LSTM结构。属性嵌入用来决定注意力权重和句子表征。{w_1, w_2, ...., w_N }表示长度为N的句子中的词向量,v_a表示属性嵌入,α是注意权重,{h_1, h_2, ...... , h_N }是隐藏向量
首先将 sequence 经过 LSTM layor 之后得到的 output h_i与当前考虑的 aspect v_a进行拼接。用 H 表示 [h_1,…,h_N]这个矩阵,其中 N 为该 sequence 的长度,H∈R^{d×N}, d 为h_i的维度也即 LSTM layer 中神经元个数。之后对拼接后的向量做 Attention 操作得到整句话的表示 r :
最后的句子表示法是:
得到这个句子最后的表示之后,将其放入一个 linear layor 得到维度为情感类别个数的输出,之后用 softmax 处理来得到最后结果。
Attention-based LSTM with Aspect Embedding (ATAE-LSTM)。将 AE、AT 合起来,其形式如下图:
图3 基于注意力的LSTM的结构与属性嵌入。属性嵌入与词的嵌入一起被作为输入。{w_1, w_2, ...., w_N }代表一个长度为N的句子中的词向量,v_a代表属性嵌入,{h_1, h_2, ...... , h_N }是隐藏向量
在AE-LSTM中使用属性信息的方法是让属性嵌入在计算注意权重时发挥作用。为了更好地利用属性信息,将输入的属性嵌入附加到每个词的输入向量中。这样一来,输出的隐藏表征(h_1, h_2, ..., h_N)可以拥有来自输入属性(v_a)的信息。因此,在接下来计算注意力权重的步骤中,词语和输入属性之间的相互依赖性可以被建模。
最后,训练的目标是使所有句子的y和yˆ的交叉熵误差最小:
项目 | SOTA!平台项目详情页 |
AT-LSTM | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/at-lstm |