当前位置:   article > 正文

【自然语言处理】【细粒度情感分析】细粒度情感分析:了解文本情感的What、How、Why

细粒度情感分析
细粒度情感分析:了解文本情感的What、How、Why
Knowing What,How and Way:A Near Complete Solution for Aspect-based Sentiment Analysis

论文地址:https://arxiv.org/pdf/1911.01616.pdf

一、细粒度情感分析

​ 细粒度情感分析任务ABSA(Aspect Based Sentiment Analysis)的目标是解决各类情感分析任务,其包括任务ATE(Aspect Term Extraction)、OTE(Opinion Term Extraction)和ATC(Aspect Term Sentiment Classification)。举例说明一下这些任务。给定一个例句
Waiters are very friendly and the pasta is simply average. \text{Waiters are very friendly and the pasta is simply average.} Waiters are very friendly and the pasta is simply average.
ATE的目标是抽取 Waiters \text{Waiters} Waiters pasta \text{pasta} pasta,ATC的目标是为ATE抽取出的aspect进行情感分类,OTE是抽取导致情感极性的词 friendly \text{friendly} friendly average \text{average} average

​ 虽然这几个任务看起来容易混淆,但是任务边界其实十分清晰。如下图所示,顶上的三个正方形表示ABSA的三个目标,其中aspect term表示需要句子中要目前讨论的目标(waiter),opinion term表示评论观点的术语或者短语(friendly),aspect category表示将aspect分类到预先定义的类别,例如“服务”或者“食物”。

​ 中间层的圆圈表示具体的子任务。研究人员认为独立去解决这些子任务是不够的,提出了两两成对解决这些子任务。但是,这样仍然不足以完成的描绘出整个情感的状态。例如,先前的例子中,能够确定 waiters \text{waiters} waiters是正向情感,但是无法给出为什么是正向的线索,只有确定了 friendly \text{friendly} friendly,才能真正理解导致情感正向的原因。Fan等人提出给定aspect,抽取对应opinion term的任务,该任务并不会预测情感。联合抽取aspect和opinion的任务也并不能解决二者间配对的问题。aspect抽取和情感分类联合任务中不能为aspect抽取opinion term。综合分析这些子任务的缺陷,论文提出了新的子任务ASTE(Aspect Sentiment Triplet Extraction),其在所有子任务中的位置如下图中的实心圆。

在这里插入图片描述

二、方法简介

​ 新子任务ASTE,该任务的目标是从句子中抽取三元组(What,How,Why),其中What表示aspect,How表示情感极性,Why表示为什么具有这样的情感极性。例如从句子“Waiters are very friendly and the pasta is simply average”中抽取三元组(Waiters, positive, friendly)。

​ 论文针对任务ASTE,提出了一种两阶段框架的解决方案。第一阶段,提取aspect term、opinion term以及判断情感极性。这个阶段会将任务转换为两个序列标注任务,一个序列标注任务用来确定aspect term及其情感极性,另一个序列标注则是用来确定opinion term。第二阶段,将aspect和opinion进行配对。

三、问题的形式化

​ 给定一个长度为 T T T的句子 X = { x 1 , … , x T } X=\{x_1,\dots,x_T\} X={x1,,xT},ASTE的任务是抽取情感三元组。

​ 首先,会将aspect抽取及情感极性判断转换为一个统一的序列标注任务,标注的标签为 Y T S = \mathcal{Y}^{\mathcal{TS}}= YTS={B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU, O}。句子 X X X在这个统一的序列标注任务中会得到预测标签 Y T S = { y 1 T S , … , y T T S } , y i T S ∈ Y T S Y^{\mathcal{TS}}=\{y_1^{\mathcal{TS}},\dots,y_T^{\mathcal{TS}}\},y_i^{\mathcal{TS}}\in\mathcal{Y}^{\mathcal{TS}} YTS={y1TS,,yTTS},yiTSYTS

​ 其次,opinion抽取也会转换为序列标注任务,标注标签为 Y O P T = { B,I,E,S } ∪ { O } \mathcal{Y}^{\mathcal{OPT}}=\{\text{B,I,E,S}\}\cup\{O\} YOPT={B,I,E,S}{O},对应于句子 X X X的预测标签为 Y O P T = { y 1 O P T , … , y T O P T } , y i O P T ∈ Y O P T Y^{\mathcal{OPT}}=\{y_1^{\mathcal{OPT}},\dots,y_T^{\mathcal{OPT}}\},y_i^{\mathcal{OPT}}\in\mathcal{Y}^{\mathcal{OPT}} YOPT={y1OPT,,yTOPT},yiOPTYOPT

​ 最后,前面2个序列标注任务会得到aspect集合 { T 1 , T 2 , … , T n } \{T_1,T_2,\dots,T_n\} {T1,T2,,Tn}和opinion集合 { O 1 , O 2 , . . . , O m } \{O_1,O_2,...,O_m\} {O1,O2,...,Om}。然后,两两配对得到aspect-opinion对集合 { ( T 1 , O 1 ) , ( T 1 , O 2 ) , . . . , ( T n , T m ) } \{(T_1,O_1),(T_1,O_2),...,(T_n,T_m)\} {(T1,O1),(T1,O2),...,(Tn,Tm)},然后从中选出正确的aspect-opinion对。

1. 抽取apsect并判断情感;2. 抽opinion;3. 判断aspect-opinion对

四、模型概览

在这里插入图片描述

​ 上图是整个模型的结构,其是一个两阶段的框架。第一阶段会预测两种类型的标签,分别是apsect边界和情感极性的统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS和opinion边界标签 Y O P T \mathcal{Y}^{\mathcal{OPT}} YOPT。具体来说,左边的模型包含两个堆叠的BiLSTM,用于预测 Y T S \mathcal{Y}^{\mathcal{TS}} YTS。下面的BiLSTM用于执行一个预测apsect的辅助任务,并将产生的辅助信号传递给上面的BiLSTM,上面的BiLSTM用于保证情感的连接性,并最终使用BG组件将所有的信息进行汇合后来预测统一标签。第一阶段右边的模型用于预测opinion的边界,即 Y O P T \mathcal{Y}^{\mathcal{OPT}} YOPT。整个句子会输入至GCN中,并通过aspect和opinion的依赖关系进行学习。然后,学习到的向量分别被输入至2个不同的模块 TG \text{TG} TG BiLSTM O P T \text{BiLSTM}^{OPT} BiLSTMOPT,TG模块会结合aspect的边界信息来预测opinion的边界, BiLSTM O P T \text{BiLSTM}^{OPT} BiLSTMOPT则直接预测opinion的边界。

​ 第二阶段会基于第一阶段抽取的aspect和opinion来枚举所有可能的aspect-opinion对,然后基于apsect和opinion的相对距离来产生position embedding,利用BiLSTM编码后能够分别得到apsect和opinion的向量,将两者向量进行拼接后输入二分类器即可。

五、第一阶段

1. aspect抽取和情感极性判断

​ 在上面“问题的形式化”中,将aspect抽取和情感判断转换成了统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS并使用序列标注进行解决。论文认为预测aspect的边界有助于预测整个统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS,因此会使用一个称为 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT的双向LSTM来预测apsect的边界,预测的结果 Y T \mathcal{Y}^\mathcal{T} YT { B , I , E , S , O } \{B,I,E,S,O\} {B,I,E,S,O},且模型 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT隐藏层的输出表示为 h T = [ LSTM → T ( x ) ; LSTM ← T ( x ) ] h^{\mathcal{T}}=[\text{LSTM}_{\rightarrow}^{\mathcal{T}}(x);\text{LSTM}_{\leftarrow}^{\mathcal{T}}(x)] hT=[LSTMT(x);LSTMT(x)]。随后, h T h^{\mathcal{T}} hT会被输入着一个称为 BiLSTM S \text{BiLSTM}^S BiLSTMS的双向LSTM来预测标签 Y S \mathcal{Y}^{\mathcal{S}} YS,其隐藏层输出为 h s = [ LSTM → S ( x ) ; LSTM ← S ( x ) ] h^s=[\text{LSTM}_{\rightarrow}^{S}(x);\text{LSTM}_{\leftarrow}^{S}(x)] hs=[LSTMS(x);LSTMS(x)] Y S \mathcal{Y}^{\mathcal{S}} YS={B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU}。(简单总结,第一层BiLSTM预测边界 Y T \mathcal{Y}^\mathcal{T} YT,隐藏层输出 h T h^{\mathcal{T}} hT,第二层BiLSTM输入 h T h^{\mathcal{T}} hT来预测 Y S \mathcal{Y}^{\mathcal{S}} YS,隐藏层输出为 h s h^s hs。预测 Y T \mathcal{Y}^\mathcal{T} YT是为了让预测 Y S \mathcal{Y}^{\mathcal{S}} YS的边界时更加准确。)

​ 通常一个apsect是由多个token组成的,为了避免预测 Y S \mathcal{Y}^{\mathcal{S}} YS时,多个token的情感不一致。因此,这里会通过gate机制实现一个称为Sentiment Consistency(SC)模块(BiLSTM机制包含三个gate,这里的gate感觉上有点多余)
g t = σ ( W g h t S + b ) h ~ t S = g t ⊙ h t S + ( 1 − g t ) ⊙ h ~ t − 1 S

gt=σ(WghtS+b)h~tS=gthtS+(1gt)h~t1S
gt=σ(WghtS+b)h~tS=gthtS+(1gt)h~t1S
其中, W g \textbf{W}^g Wg b g \textbf{b}^g bg是SC模块的模型参数, ⊙ \odot 是element-wise乘法, σ \sigma σ是sigmoid函数。通过该gate可以降低情绪标签剧烈变化的风险。

​ 前面的 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT会预测aspect的边界 Y T \mathcal{Y}^\mathcal{T} YT并得到 h T h^{\mathcal{T}} hT,若希望基于 Y T \mathcal{Y}^\mathcal{T} YT来预测 Y S \mathcal{Y}^{\mathcal{S}} YS,那么 Y T \mathcal{Y}^\mathcal{T} YT中的标签会有三种转换情况。举例来说,若 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT在某个位置预测的标签是B,那边该标签转换后的结果一定是B-POS、B-NEG、B-NEU中的一个。因此,这里使用一个基于转移矩阵实现的Boundary Guidance(BG)模块。该模块中存在一个可训练的转移矩阵 W t r ∈ R ∣ Y T ∣ × ∣ Y S ∣ \textbf{W}^{tr}\in\mathbb{R}^{|\mathcal{Y}^{\mathcal{T}}|\times |\mathcal{Y}^{\mathcal{S}}|} WtrRYT×YS,其中某一个具体取值 W i , j t r \textbf{W}_{i,j}^{tr} Wi,jtr表示从标签 Y T i \mathcal{Y}^{\mathcal{T}_i} YTi转移至标签 Y S j \mathcal{Y}^{\mathcal{S}_j} YSj的概率。具体的过程为
z t T = p ( y t T ∣ x t ) = Softmax ( W T h t T ) z t S ′ = ( W t r ) ⊤ z t T

ztT=p(ytT|xt)=Softmax(WThtT)ztS=(Wtr)ztT
ztT=p(ytTxt)=Softmax(WThtT)ztS=(Wtr)ztT
其中, W T \textbf{W}^{\mathcal{T}} WT是可训练参数, z t S ′ z_t^{S'} ztS是获得的统一标签概率分布。( z t S ′ z_t^{S'} ztS不是最终的统一标签概率,只是其中一部分,之后还会进行一个合并。)

z t S ′ z_t^{S'} ztS在预测统一标签时并没有合并opinion的信息,显然opinion信息对于预测apsect的位置会有很大的帮助。因此这里会将带有opinion信息的向量 h O P T h^{\mathcal{OPT}} hOPT(后面会介绍怎么得到该向量)和 h ~ t S \tilde{h}_t^S h~tS进行拼接合并,得到一个更强大的向量 h U h^\mathcal{U} hU,然后基于 h U h^\mathcal{U} hU在预测一次统一标签的概率分布,
z t S = p ( y t S ∣ x t ) = Softmax ( W S h t U ) z_t^S=\textbf{p}(y_t^S|x_t)=\text{Softmax}(\textbf{W}^Sh_t^{\mathcal{U}}) ztS=p(ytSxt)=Softmax(WShtU)
现在,有两个统计标签的预测概率,分布是 z t S z_t^S ztS z t S ′ z_t^{S'} ztS,现在讨论怎么将两者结合在一起。这里希望学习到一个权重,两者按这个权重进行加权求和。

​ 这里的权重分 α t ∈ R \alpha_t\in\mathbb{R} αtR的计算是基于称为apsect边界集中度分 c t c_t ct,具体来说
c t = ( z t T ) ⊤ z t T α t = ϵ c t

ct=(ztT)ztTαt=ϵct
ct=(ztT)ztTαt=ϵct
其中, c t c_t ct是一个0到1的值,其越大表示模型在预测边界时的置信度越高, ϵ \epsilon ϵ是一个超参数。

​ 最终预测统一标签的概率分布为
z t T S = α t z t S ′ + ( 1 − α t ) z t S z_t^{\mathcal{TS}}=\alpha_t z_t^{\mathcal{S'}}+(1-\alpha_t)z_t^{\mathcal{S}} ztTS=αtztS+(1αt)ztS

2. opinion 抽取

​ 前面介绍了aspect抽取和情感极性判断,这里会介绍opinion抽取的内容。此外,前面在预测 z t S z_t^S ztS时,使用了 h O P T h^{\mathcal{OPT}} hOPT,因此本部分也会介绍该向量的由来。

​ 先前的一些研究表明aspect抽取和opinion抽取是互利的,而且直观上也能够判断aspect和opinion是经常共现的。因此,这里希望利用apsect的信息来指导opinion的抽取。具体来说,这里会将句子进行embedding,然后输入至GCN中来学习不同词之间的依赖。GCN的邻接矩阵是基于句子的依赖解析构造的,称为 W G C N ∈ R ∣ L ∣ × ∣ L ∣ \textbf{W}^{GCN}\in\mathbb{R}^{|\mathcal{L}|\times |\mathcal{L}|} WGCNRL×L,其中 L \mathcal{L} L是句子的长度。例如,第 i i i个单词和第 j j j个单词具有依赖关系,那么 W i , j G C N \textbf{W}^{GCN}_{i,j} Wi,jGCN W j , i G C N \textbf{W}_{j,i}^{GCN} Wj,iGCN均有值1,否则为0。(GCN输出的向量表示为 h O h^{\mathcal{O}} hO)

​ 为了能够利用apsect信息来辅助opinion抽取,这里设计了一个辅助任务来集成aspect的边界信息和GCN的输出,称这部分为Target Guidance(TG)模块。具体来说,就是将apsect边界预测的隐向量 h T h^{\mathcal{T}} hT和GCN输出的向量 h O h^{\mathcal{O}} hO进行拼接,然后用于预测opinion的边界 Y T G = { B , I , E , S } ∪ { O } \mathcal{Y}^{\mathcal{TG}}=\{B,I,E,S\}\cup\{O\} YTG={B,I,E,S}{O}
z t T G = p ( y t O P T ∣ x t ) = Softmax ( W T G [ h t T ; h t O ] ) z_t^{\mathcal{TG}}=\textbf{p}(y_t^{\mathcal{OPT}}|x_t)=\text{Softmax}(\textbf{W}^{\mathcal{TG}}[h_t^{\mathcal{T}};h_t^{\mathcal{O}}]) ztTG=p(ytOPTxt)=Softmax(WTG[htT;htO])
​ 除了将 h O h^{\mathcal{O}} hO h T h^{\mathcal{T}} hT合并外,另一部分是将 h O h^{\mathcal{O}} hO送入一个称为 B i L S T M OPT BiLSTM^{\text{OPT}} BiLSTMOPT的双向LSMT中,然后输出一个上下文编码向量 h O P T h^{OPT} hOPT(前面计算 h U h^\mathcal{U} hU会用到),然后利用其进行opinion边界预测
z t O P T = p ( y t O P T ∣ x t ) = Softmax ( W O P T h t O P T ) z_t^{\mathcal{OPT}}=\textbf{p}(y_t^{\mathcal{OPT}}|x_t)=\text{Softmax}(\textbf{W}^{\mathcal{OPT}}h_t^{\mathcal{OPT}}) ztOPT=p(ytOPTxt)=Softmax(WOPThtOPT)

3. 训练

​ 前面的过程会输出 z t T z_t^{\mathcal{T}} ztT z t T S z_t^{\mathcal{TS}} ztTS z t T G z_t^{\mathcal{TG}} ztTG z t O P T z_t^{\mathcal{OPT}} ztOPT,这里使用交叉熵计算损失函数
L I = − 1 T ∑ t = 1 T I ( y t I , g ) ∘ l o g ( z t I ) \mathcal{L}^{\mathcal{I}}=-\frac{1}{T}\sum_{t=1}^T\mathbb{I}(y_t^{\mathcal{I,g}})\circ log(z_t^{\mathcal{I}}) LI=T1t=1TI(ytI,g)log(ztI)
其中, I \mathcal{I} I是任务指示符和其可能的取值 T , T S , T G , O P T \mathcal{T,TS,TG,OPT} T,TS,TG,OPT I ( y ) \mathbb{I}(y) I(y)表示one-hot编码, y t I , g y_t^{\mathcal{I,g}} ytI,g表示任务 I \mathcal{I} I在时间步t处的标签。总的损失函数为所有损失函数之和
J ( θ ) = L T + L T S + L T G + L O P T \mathcal{J}(\theta)=\mathcal{L}^{\mathcal{T}}+\mathcal{L}^{\mathcal{TS}}+\mathcal{L}^{\mathcal{TG}}+\mathcal{L}^{\mathcal{OPT}} J(θ)=LT+LTS+LTG+LOPT
总结: L T \mathcal{L}^{\mathcal{T}} LT用于计算aspect的边界, L T S \mathcal{L}^{\mathcal{TS}} LTS用于结合opinion信息计算apsect边界和情感极性, L T G \mathcal{L}^{\mathcal{TG}} LTG用于结合apsect边界信息计算opinion的边界, L O P T \mathcal{L}^{\mathcal{OPT}} LOPT用于直接计算opinion的边界。

六、第二阶段

​ 经过第一阶段后,每个句子都会输出两个标签集合,分别是apsect和opinion,记为 { T 1 , T 2 , … , T n } \{T_1,T_2,\dots,T_n\} {T1,T2,,Tn} { O 1 , O 2 , … , O m } \{O_1,O_2,\dots,O_m\} {O1,O2,,Om},其中 n n n m m m表示数量。枚举所有可能的aspect-opinion对来生成候选对池 { ( T 1 , O 1 ) , ( T 2 , O 2 ) , … , ( T n , O m ) } \{(T_1,O_1),(T_2,O_2),\dots,(T_n,O_m)\} {(T1,O1),(T2,O2),,(Tn,Om)},接下来就是判断每个aspect-opinion对是否有效。

1. 位置嵌入(position embedding)

​ 为了能够利用aspect和opinion的位置关系,这里会计算aspect中心词至opinion中心词之间单词的数量,用于表示两者的距离。为了便于训练,将aspect和opinion间的距离当做其位置索引,从而创建出position embedding(位置嵌入)。索引为0表示该单词既不是apsect,也不是opinion。可以观察下表中的 ( W a i t e r , f r i e n d l y ) (Waiter,friendly) (Waiter,friendly) ( f u g u s a s h i m i , f r i e n d l y ) (fugu sashimi,friendly) (fugusashimi,friendly)的位置索引。

在这里插入图片描述

2. 成对编码与分类

​ 这里将Glove词向量和position embedding进行拼接,然后输入至BiLSTM层来编码aspect和opinion上下文信息。将aspect和opinion位置输出的词向量进行各自平均,并将得到的2个向量进行拼接。最后将拼接后的向量送至softmax层进行分类。

​ 训练时使用标注好的aspect-opinion对,测试时直接使用模型在候选对池上进行预测。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/551801
推荐阅读
相关标签
  

闽ICP备14008679号