To be Closer: Learning to Link up Aspects with Opinions
北京理工大学
新加坡科技设计大学
字节跳动
Abstract
依赖解析树[1]有助于在基于方面的情感分析(ABSA)中发现观点词,而从现成的依赖解析器中获取的树是静态的,可能不是最优的。
[1]Huang B, Carley K M. Syntax-aware aspect level sentiment classification with graph attention networks[J]. arXiv preprint arXiv:1909.02606,2019.
所以,本文的目标是通过学习产生一个以方面为中心的树结构来缩短方面词与相应观点词之间的距离,与标准的依赖解析树相比,方面词和观点词更接近以方面为中心的树结构。学习过程中允许树状结构自适应地将方面词和观点词联系起来,使之能够更好地识别ABSA任务中的情感极性。
作者在五个基于方面的情感数据集上进行了实验,且在SemEval Restaurant14上,方面词和观点词之间的平均距离至少缩短了19%。
1 Introduction
基于方面的情绪分析(ABSA)旨在确定句子中对特定目标表达的情绪极性。例如,在“the battery life of this laptop is very long, but the price is too high”这句话中,对方面词“battery life”表达的情绪是积极的,而对“price”表达的情绪是消极的。
早期研究成果的重点是使用注意机制来模拟方面词和语境词之间的交互作用,但这种方式忽略了低频词汇。最近的研究表明,句子的句法结构有助于识别与体词相关的情感特征。然而,不幸的是,这些方法有两个缺点:
- 从现有的依赖解析器中获得的树是静态的,不能处理多个方面词与观点词之间的复杂关系。
- 不准确的解析树可能会导致错误向下游传播。
尽管有些工作已经缓解树表示的问题,但现有的方法依然依赖于外部的解析树。依赖解析树不是为了ABSA而设计的,而是为了表达语法关系。具体来说,方面词通常是名词或名词短语,而依赖关系树的根通常是动词或副词。有统计表明,90%的句子依赖树的根不是方面词,这可能会妨碍模型捕获观点词和方面词之间的关系。

Loving the harry potter movie marathon:喜欢《哈利波特》系列电影
作者在本文中提出了一个能够学习以方面词为中心的句法树的模型,称之为ACLT,通过注意力机制和矩阵树定理(MTT)实现,并加入一个软约束来激励方面词成为树结构的根。
本文贡献:
- 提出了一个以方面词为中心的潜在树来连接方面词和观点词。
- ACLT能够比标准解析树更好地将方面和观点词关联起来。
- 能够将方面词和观点词之间的平均距离缩短至少19%。
2 Model
2.1 Sentence Encoder
首先从句子编码器中获取上下文的表示。
给定一个句子 s = [ w 1 , . . . , w n ] s=[w_1,...,w_n] s=[w1,...,wn],对应方面词为 a = [ w i , . . . , w j ] ( 1 ≤ i ≤ j ≤ n ) a=[w_i,...,w_j](1\leq{i\leq{j\leq{n}}}) a=[wi,...,wj](1≤i≤j≤n),作者使用BERT来获取每个单词的上下文表示。
输入: x = ( [ C L S ] w 1 , . . . , w n [ S E P ] w i , . . . , w j [ S E P ] ) x=([CLS]w_1,...,w_n[SEP]w_i,...,w_j[SEP]) x=([CLS]w1,...,wn[SEP]wi,...,wj[SEP])
输出:
H
=
[
h
1
,
.
.
.
,
h
n
]
H=[h_1,...,h_n]
H=[h1,...,hn],其中
h
i
h_i
hi表示第
i
i
i个token
的上下文表示
2.2 Aspect-Centric Tree Inducer
接下来,作者使用Kirchhoff(基尔霍夫)矩阵树的一个变体来产生所有可能的潜在树的分布。底层的树诱导器是一个潜在变量模型,它将树结构视为潜在变量。
Kirchhoff(基尔霍夫)矩阵树定理:对于一个无向图 G G G,它的生成树个数等于其基尔霍夫矩阵任何一个 N − 1 N−1 N−1阶主子式的行列式的绝对值。
所谓的 N − 1 N−1 N−1阶主子式就是对于一个任意的一个 r r r,将矩阵的第 r r r行和第 r r r列同时删去得到的新矩阵。
基尔霍夫矩阵的一种求法(矩阵树定理):
基 尔 霍 夫 矩 阵 K = 度 数 矩 阵 D − 邻 接 矩 阵 A 基尔霍夫矩阵K=度数矩阵D − 邻接矩阵A 基尔霍夫矩阵K=度数矩阵D−邻接矩阵A
度数矩阵 ( i , i ) (i,i) (i,i)表示 i i i这点的度,其余点均为0。邻接矩阵 ( i , j ) (i,j) (i,j)表示 ( i , j ) (i,j) (i,j)连的边数;特别的,若 i = j i=j i=j,则为0。
给定语句中每个节点(token
)的上下文表示
h
∈
R
d
h\in\mathbb{R}^d
h∈Rd,其中
d
d
d是节点表示的维数。首先通过两个前馈神经网络(FNN)和双线性函数,用节点表示
h
i
h_i
hi和
h
j
h_j
hj计算第
i
i
i和第
j
j
j节点之间的成对未归一化边缘分数
e
i
j
e_{ij}
eij:
e
i
j
=
(
t
a
n
h
(
W
p
h
i
)
)
T
W
b
(
t
a
n
h
(
W
c
h
j
)
)
e_{ij}=(tanh(W_ph_i))^TW_b(tanh(W_ch_j))
eij=(tanh(Wphi))TWb(tanh(Wchj))
其中
W
p
∈
R
d
×
d
W_p\in\mathbb{R}^{d\times{d}}
Wp∈Rd×d和
W
c
∈
R
d
×
d
W_c\in\mathbb{R}^{d\times{d}}
Wc∈Rd×d是两个FNN的权值,
W
b
∈
R
d
×
d
W_b\in\mathbb{R}^{d\times{d}}
Wb∈Rd×d是BiLinear的权值。
e
i
j
e_{ij}
eij可以看作是具有n个节点的图
G
G
G的一个加权邻接矩阵,其中每个节点对应句子中的一个词。
原文好像出错了,这里的 e i j e_{ij} eij应该是一个数字,不是 d × d d\times{d} d×d维矩阵
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{aligned…
然后需要计算根分数
r
i
r_i
ri,表示第
i
i
i个节点被选为结构根的概率:
r
i
=
W
r
h
i
r_i=W_rh_i
ri=Wrhi
其中
W
r
∈
R
1
×
d
W_r\in\mathbb{R}^{1\times{d}}
Wr∈R1×d是Linear的权值。
计算潜在结构的依赖边的边际概率:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{aligned…
其中
A
∈
R
n
×
n
A\in\mathbb{R}^{n\times{n}}
A∈Rn×n表示两个节点之间边的权重,
L ∈ R n × n L\in\mathbb{R}^{n\times{n}} L∈Rn×n表示图 G G G的拉普拉斯矩阵,
L ‾ ∈ R n × n \overline{L}\in\mathbb{R}^{n\times{n}} L∈Rn×n将根节点考虑在内而进一步计算。
用
P
i
j
P_{ij}
Pij表示节点
i
,
j
i,j
i,j的边缘概率分布,而
P
i
r
P^r_i
Pir为节点
i
i
i表示为根节点的边缘概率。那么:
P
i
j
=
(
1
−
δ
1
,
j
)
A
i
j
[
L
‾
−
1
]
j
j
−
(
1
−
δ
i
,
1
)
A
i
j
[
L
‾
−
1
]
j
i
\boldsymbol{P}_{i j}=\left(1-\delta_{1, j}\right) \boldsymbol{A}_{i j}\left[\overline{\boldsymbol{L}}^{-1}\right]_{j j} -\left(1-\delta_{i, 1}\right) \boldsymbol{A}_{i j}\left[\overline{\boldsymbol{L}}^{-1}\right]_{j i}
Pij=(1−δ1,j)Aij[L−1]jj−(1−δi,1)Aij[L−1]ji
P i r = exp ( r i ) [ L ‾ − 1 ] i 1 \boldsymbol{P}_{i}^{r}=\exp \left(\boldsymbol{r}_{i}\right)\left[\overline{\boldsymbol{L}}^{-1}\right]_{i 1} Pir=exp(ri)[L−1]i1
其中 δ \delta δ为Kronecker delta(两者相等,则其输出值为1,否则为0), P ∈ R n × n P\in\mathbb{R}^{n\times{n}} P∈Rn×n可以看作是图的一个加权邻接矩阵。
克罗内克函数的输入值一般是两个整数,如果两者相等,则其输出值为1,否则为0。
Root Refinement
尽管MTT诱导的树十分成功,但在没有结构监督的情况下,MTT仍然会产生任意的树,而这些树不适合具体的任务。因此假设诱导树结构的根是在方面词里,能够让模型更好的关联方面词和观点词。在这种假设下,作者提出使用软约束诱导方面词成为树的根节点:
L
a
=
−
∑
i
=
1
L
(
t
i
log
(
P
i
r
)
+
(
1
−
t
i
)
log
(
1
−
P
i
r
)
)
\mathcal{L}_{a}=-\sum_{i=1}^{L}\left(t_{i} \log \left(\boldsymbol{P}_{i}^{r}\right)+\left(1-t_{i}\right) \log \left(1-\boldsymbol{P}_{i}^{r}\right)\right)
La=−i=1∑L(tilog(Pir)+(1−ti)log(1−Pir))
其中
t
i
∈
{
0
,
1
}
t_i\in\{0,1\}
ti∈{0,1}表示第
i
i
i个token
是否为方面词,损失越少方面词成为树的根节点的概率越大,也能减少训练过程中MTT的搜索空间。
由于信息主要在相邻节点之间传播,所以在早期的迭代过程中总是产生一个随机结构。随着根被调整到方面词上,且当损失较小时,结构变得更加精细,树诱导器更有可能产生一个以方面为中心的潜在结构。作者在后面的实验也表明,根细化损失能够成功地引导生成以方面词为根的树。
2.3 Tree Encoder
对于给定上下文表示
h
h
h和对应的方面中心图
P
P
P,通过注意力机制编码
s
i
p
=
∑
k
=
1
n
P
k
i
h
k
+
P
i
r
h
a
s
i
c
=
∑
k
=
1
n
P
i
k
h
i
s
i
=
tanh
(
W
s
[
s
i
p
,
s
i
c
,
h
i
]
)
\begin{aligned} \boldsymbol{s}_{i}^{p} &=\sum_{k=1}^{n} \boldsymbol{P}_{k i} \boldsymbol{h}_{k}+\boldsymbol{P}_{i}^{r} \boldsymbol{h}_{a} \\ \boldsymbol{s}_{i}^{c} &=\sum_{k=1}^{n} \boldsymbol{P}_{i k} \boldsymbol{h}_{i} \\ \boldsymbol{s}_{i} &=\tanh \left(\boldsymbol{W}_{s}\left[\boldsymbol{s}_{i}^{p}, \boldsymbol{s}_{i}^{c}, \boldsymbol{h}_{i}\right]\right) \end{aligned}
sipsicsi=k=1∑nPkihk+Pirha=k=1∑nPikhi=tanh(Ws[sip,sic,hi])
其中
s
i
p
s_i^p
sip表示从可能的父节点
h
i
h_i
hi收集到的信息,
s i c s_i^c sic表示从可能的子节点 h i h_i hi收集到的信息,
h a h_a ha表示根节点,
最后得到第 i i i个词的结构化表示 s i s_i si
2.4 Classifier
利用
s
0
s_0
s0(是每个句子的结构化方面感知表示)来计算不同情绪极性的概率:
y
p
=
softmax
(
W
p
s
0
+
b
p
)
y_{p}=\operatorname{softmax}\left(\boldsymbol{W}_{p} \boldsymbol{s}_{0}+\boldsymbol{b}_{p}\right)
yp=softmax(Wps0+bp)
其中
W
p
W_p
Wp和
b
p
b_p
bp为分类器的参数,
y
p
y_p
yp为预测的情绪概率分布。
分类器的目标是使下面的loss函数最小化:
L
s
=
−
log
P
(
y
∣
x
)
\mathcal{L}_{s}=-\log P(y \mid \mathbf{x})
Ls=−logP(y∣x)
其中
y
∈
{
p
o
s
i
t
i
v
e
,
n
e
g
a
t
i
v
e
,
n
e
u
t
r
a
l
}
y\in\{positive, negative, neutral\}
y∈{positive,negative,neutral}
而最终的目标是一个多任务学习的函数,是根细化和分类器损失的加权和:
L
=
α
L
a
+
(
1
−
α
)
L
s
\mathcal{L}=\alpha \mathcal{L}_{a}+(1-\alpha) \mathcal{L}_{s}
L=αLa+(1−α)Ls
其中的超参数
α
\alpha
α需要根据验证集中的性能来选择。
3 Experiments
3.1 Experimental Setup
作者一共在五个基准数据集上评估了ACLT模型
3.2 Baselines
作者在文章中选择了三类较为先进的基线模型:
- 无语法信息模型:TNet-AS,BERT-PT,BERT-PAIR,BERT-SRC
- 依赖解析树模型: ASGCN,CDT,BiGCN,ASGCN+BERT,R-GAT+BERT
- 潜在树模型:KumaGCN+BERT
3.3 Main Results
实验结果表明语法信息确实有利于ABSA任务,ACLT能在方面词和上下文之间建立联系
ACLT是否缩短了方面词和观点词之间的距离?
实验结果证实了假设,诱导树结构的根落在方面词上,确实使模型能够比标准的解析树更好地关联方面和观点词
3.4 模型分析
不同树表示的效果
- 包含句法信息的模型通常优于普通的BERT-SRC,表明句法信息有利于ABSA任务。
- ACLT和ACLT+GCN模型始终优于其他依赖树的模型,表明以方面词为中心的树确实能够有效地为ABSA任务构建方面词和上下文词之间的关系。
- ACLT+GCN在Rest14和Twitter数据集上的表现优于ACLT,说明使用GCN可以在一定程度上提高模型性能。
根细化有效吗?
ACLT模型将方面词作为根节点的比例明显提高了
修剪树的作用
完整的树结构对于ACL是非常重要的,树结构只要发生修剪,F1值都会下降;而反观其他模型,进行修剪后F1值反而还会上升。因此,ACLT模型对ABSA任务中,关联方面词和观点词更加紧密。
消融实验
- 根细化对模型性能的提升很大。
- 将根节点固定在方面词的第一个词上导致模型性能下降,表明计算各方面词成为根的概率非常关键。
4 Conclusion
- 本文观察到在ABSA任务中,方面词和语法解析树的根节点不一致(依赖解析树一般以谓语作为根节点),因此导致方面词和观点词之间的路径变长了,不利于方面词和观点词联系起来。
- 因此,本文首先使用句子编码器,将句子和方面词一起送入BERT进行编码得到句子表示;然后计算语法树的边权重以及计算将方面词作为根节点的概率;构造两个目标函数,最大化方面词成为根节点、最小化方面词情感分类误差,综合这两个目标函数得到最后的语法树。
- 结果发现ACLT模型的语法树,方面词和观点词具有更短的距离,有利于提升ABSA任务表现。