机器之心专栏
【资料图】
本文将分 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!模型资源站()即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
---|---|---|
MemNet | /project/memnet-2收录实现数量:7支持框架:PyTorch,TensorFlow | Aspect Level Sentiment Classification with Deep Memory Network |
AT-LSTM | /project/at-lstm | Attenion-Based LSTM for Aspect-level Sentiment Classification |
IAN | /project/ian收录实现数量:3支持框架:PyTorch,TensorFlow | Interactive Attention Networks for Aspect-Level Sentiment Classification |
AF-LSTM | /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模型。
一、Aspectlevel
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!模型平台获取实现资源:/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!模型平台获取实现资源:/project/at-lstm |
3、 IAN
本文作者认为目标和情境都可以单独建模,需要通过交互学习来学习它们自己的表现形式。在此基础上,提出了交互式注意网络(interactive attention networks, IAN),实现了目标和语境的注意力交互学习,并分别生成目标和语境的注意力表征。具体的,本文提出了基于长短期记忆网络(LSTM)和注意力机制的交互式注意力网络(Interactive Attention Networks,IAN)模型。情感分类网络利用与目标相关的注意力机制从上下文中获取重要信息,并计算上下文表示来进行情感分类。此外,网络利用上下文的交互信息监督目标的建模,这有助于判断情感。最后,将目标表示和上下文表示连接起来,IAN预测了目标在其上下文中的情感极性。
图4 IAN结构图
IAN模型由两部分组成,对目标和上下文进行交互建模。以单词嵌入为输入,采用LSTM网络来分别获得目标和其上下文在单词层面的隐藏状态。使用目标的隐藏状态和上下文的隐藏状态的平均值来监督注意力向量的生成,通过注意力机制来捕捉上下文和目标中的重要信息。通过这种设计,目标和上下文可以交互地影响其表示的生成。最后,串联目标表征和上下文表征作为最终表征,并被送入softmax函数用于属性级情感分类。单词嵌入层:将每个单词嵌入到一个低维实值向量中。词的嵌入可以看作是神经网络的参数,也可以看作是通过语言模型从适当的语料库中预先训练出来的。LSTM隐藏层:
得到上下文语境的隐藏状态、目标隐藏状态,以及上下文和目标的初始表征:
注意力层:将上下文与目标的表征分别送入注意力层,考虑目标对上下文的影响和上下文对目标的影响:
最终,得到目标与上下文的表征:
最后,将目标表征和上下文表征连接成一个向量d作为分类器。这里,使用一个非线性层将d投射到目标C类的空间中:
当前SOTA!平台收录IAN共3个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
IAN | 前往 SOTA!模型平台获取实现资源:/project/ian |
4、 AF-LSTM
本文主要是针对ATAE-LSTM的改进,提出了AF-LSTM。通过增加一个Word- Aspect Fusion(aspect与word融合层)分离各层的职责,使模型首先对aspect和words之间的关系进行建模,然后使注意力层专注于学习已经经过融合的上下文words的相对重要性。
图5AF-LSTM整体架构
Word-Aspect Fusion Attention Layer:模型输入是句子向量和aspect向量 s,句子长度为 L, 词向量维度为 k。LSTM layer:句子向量作为LSTM模型的输入,输出是隐藏层向量H,模型参数向量维度为 d。Word-Aspect Fusion Attention Layer:这一层是模型的重点。首先,对于LSTM的每个输出向量hiϵ H,都会学习word与aspect的联合表示,结果记为miϵR^d 。它对上下文单词h_i和aspect之间的关系进行了编码,为了学习h和s的联合表示,论文使用了associative memory operators 来得到m_i 。随后,经过编码的联合表示m1 ,m2,...,mL作为注意力层的输入,得到的结果进入Weighted Sum层进行加权求和。相对于ATAE-LSTM模型,这里最大的不同就是增加了一个word-aspect融合层,代替了原来的直接拼接的操作。这个操作就是用来建模acpect与words的关系,论文中对于这个操作定义了两个运算符,circular correlation和circular convolution ,分别定义如下:
总的来说,关联层的输出定义如下:
在学习h_i 和s的关联之前,还使用了一个可选的归一化层。接下来,将每个隐藏状态h_t和属性向量s通过关联运算符的组成用于学习注意力:
最终表示如下:
将句子的加权表示r传递到最后一层,该层将加权表示r转换为概率分布。这一层也包括一个线性转换层,然后是一个softmax函数。最后一层定义如下:
采用交叉熵损失函数进行优化:
当前SOTA!平台收录AF-LSTM共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
AF-LSTM | 前往 SOTA!模型平台获取实现资源:/project/af-lstm |
前往 SOTA!模型资源站()即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
标签: