Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Clas
这篇博文是Deep Memory Network在Aspect Based Sentiment方向上的应用的一部分,如果你已经熟知深度记忆网络并且看过其在ABSA的应用,只想看这篇论文,可以跳过直接阅读本文。如果没有,建议阅读完整版。
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网络来获取记忆 m 1 ∗ , m 1 2 , . . . , m n ∗ {m_1^*,m_1^2,...,m_n^*} m1∗,m12,...,mn∗,其中 m i ∗ = ( h i ← , h i → ) m_i^*=(\overleftarrow{h_i},\overrightarrow{h_i}) mi∗=(hi,hi)
The semantic-dependency-mask attention模块提取语义信息,并且为不同层选择不同的记忆元素来指导attention机制,该模块的输出记作 v s d v_{sd} vsd
The inter-aspect semantic modeling模块使用语义依赖信息和attention机制来获取其他aspect的有用信息,其输出记为 v i m v_{im} vim。
The context-moment sentiment learning使用一个被称为context moment learning的任务来学习整个句子中所有aspect的信息,其输出记为 v c m v_{cm} vcm。
以上三个模块的输出构成了sentiment representation: v = { v s d , v i m , v c m } v=\{ v_{sd}, v_{im}, v_{cm}\} v={vsd,vim,vcm}。
Classification模块就是一个前馈网络,将 v v v映射到目标分类: y = s o f t m a x ( W c v + b c ) y=softmax(W_cv+b_c) y=softmax(Wcv+bc)
文中使用的loss包含三个部分,交叉熵+辅助任务loss+
L
2
L_2
L2正则:
L
=
∑
s
∈
S
(
−
∑
t
∈
T
∑
i
=
1
C
)
g
i
t
l
o
g
y
i
t
+
λ
m
l
m
(
s
)
+
λ
∥
θ
∥
2
2
L=\sum_{s\in S}(-\sum_{t\in T}\sum_{i=1}^C)g_i^tlogy_i^t+\lambda_ml_m(s) + \lambda \left \| \theta \right \|^2_2
L=s∈S∑(−t∈T∑i=1∑C)gitlogyit+λmlm(s)+λ∥θ∥22
辅助任务的loss稍后介绍。
Semantic-Dependency-Mask Attention
该模块依据语义依存分析树(semantic dependency parsing tree),来对不同计算跳数的context memory施加mask。在每一个计算步骤,该模块在aspect的表示和记忆单元之间使用attention机制。
语义依存分析树使用开源工具spaCy生成。
原作者将语义依存分析树上词到aspect的路径长度作为距离,来提取语义分析信息。施加掩码的语义分析信息如下:
m
i
∗
=
{
m
i
∗
,
i
f
d
i
s
t
(
w
i
,
w
t
)
≤
l
0
,
o
t
h
e
r
w
i
s
e
m_i^*=\begin{cases} m_i^*, & \ if \ dist(w_i,w_t) \leq l \\ 0, & \ otherwise \end{cases}
mi∗={mi∗,0, if dist(wi,wt)≤l otherwise
以上述方式得到整个层的
{
m
1
l
,
.
.
.
,
m
i
l
,
.
.
.
,
m
n
l
}
\{m_1^l,...,m_i^l,...,m_n^l\}
{m1l,...,mil,...,mnl}之后,以如下形式计算
l
l
l层的attention得分:
α
i
l
=
s
o
f
t
m
a
x
(
W
A
L
l
(
m
i
l
,
v
s
d
l
−
1
,
v
t
)
+
b
A
L
l
)
\alpha_i^l = softmax(W_{AL}^l(m_i^l,v_{sd}^{l-1},v_t)+b_{AL}^l)
αil=softmax(WALl(mil,vsdl−1,vt)+bALl)
其中
v
s
d
v_{sd}
vsd是上一层的计算结果,
v
t
v_t
vt是aspect的表示。
attention输出
i
l
A
L
i_l^{AL}
ilAL以如下方式进行计算:
i
l
A
L
=
∑
i
=
1
n
α
i
l
m
i
l
i_l^{AL}=\sum_{i=1}^n\alpha_i^lm_i^l
ilAL=i=1∑nαilmil
在最后一层,作者采用另一个先行层来施加线性变换,作为一个门控函数来控制传递的转化特征和输入特征的比例:
v
s
d
l
=
(
W
o
i
l
A
L
+
b
o
)
∗
T
+
v
s
d
l
−
1
∗
(
1
−
T
)
v_{sd}^l=(W_oi_l^{AL}+b_o)*T+v_{sd}^{l-1}*(1-T)
vsdl=(WoilAL+bo)∗T+vsdl−1∗(1−T)
门控
T
T
T由以下方式生成:
T
=
σ
(
W
t
v
s
d
l
−
1
)
+
b
t
T=\sigma(W_tv_sd^{l-1})+b_t
T=σ(Wtvsdl−1)+bt
Inter-Aspect Semantic Modeling
该模块将上一步得到的语义依存信息整合到attention机制。上一个模块得到了所有aspect的aspect-aware representation,组成了如下所示的aspect menory:
M
=
{
v
s
d
1
,
v
s
d
2
,
.
.
.
,
v
s
d
3
}
M=\{v_{sd1},v_{sd2},...,v_{sd3}\}
M={vsd1,vsd2,...,vsd3}
在此基础之上,为了得到aspect memory里面目标aspect的信息,再次使用依存分析信息进行了加权:
M
′
=
{
v
s
d
1
′
,
v
s
d
2
′
,
.
.
.
,
v
s
d
3
′
}
M'=\{v'_{sd1},v'_{sd2},...,v'_{sd3}\}
M′={vsd1′,vsd2′,...,vsd3′}
其中
v
s
d
1
′
=
λ
i
∗
(
v
s
d
i
,
v
s
d
t
)
v'_{sd1}=\lambda_i*(v_{sd_i},v_{sd_t})
vsd1′=λi∗(vsdi,vsdt),
λ
i
\lambda_i
λi由以下方式计算而来:
λ
i
=
1
−
d
i
s
t
(
w
i
,
w
t
)
d
e
p
t
h
\lambda_i=1-\frac{dist(w_i,w_t)}{depth}
λi=1−depthdist(wi,wt)
其中
d
i
s
t
(
w
i
,
w
t
)
dist(w_i,w_t)
dist(wi,wt)是语义距离(笔者认为是依存分析树上的距离),
d
e
p
t
h
depth
depth是依存分析树的高度,这些都make sense。
然后再次使用attention机制,来得到最终表示
v
i
m
v_{im}
vim
β
i
=
s
o
f
t
m
a
x
(
W
i
m
v
s
d
i
′
)
+
b
i
m
\beta_i=softmax(W_{im}v'_{sd_i})+b_{im}
βi=softmax(Wimvsdi′)+bim
v
i
m
=
∑
i
p
β
i
∗
v
s
d
i
′
v_{im}=\sum_i^{p}\beta_i*v'_{sd_i}
vim=i∑pβi∗vsdi′
Context-Moment Sentiment Learning
该模块实现辅助任务,目的是想借助aspect之间的关系来识别其极性。作者认为这种关系能为分类提供背景信息。moment实际上刻画的是所有aspect在句子s上的情感分布,它是概率统计学上的矩的意思。
Context Moment定义如下:
μ
i
=
E
(
(
x
−
μ
)
i
)
\mu_i=\textbf{E}((\textbf{x}-\mu)^i)
μi=E((x−μ)i)
其中
E
\textbf{E}
E是一个期望操作符,
x
x
x是情感分布随机变量,
i
i
i代表当前矩的阶。很明显,
i
i
i是奇数时,
μ
i
∈
[
−
1
,
1
]
\mu_i\in[-1, 1]
μi∈[−1,1],
i
i
i是偶数时,
μ
i
∈
[
1
,
0
]
\mu_i\in[1, 0]
μi∈[1,0],为了统一,作者也将所有的moment归一化到了
[
1
,
0
]
[1, 0]
[1,0]
论文中给出的一个示例,平均值被称为第一矩,方差被称为第二矩。平均值越高,说明整个句子的情感倾向越靠近postive。方差越接近1,说明句子里aspect之间越接近与对比关系(即一个aspect很差,另一个很好,或者反之;越接近0说明句子里的aspect直接的关系越接近于合作关系(它们极性越接近)。
作者再次使用了attention层再加上两层的前馈网络来学习表示mean的矩和表示variance的矩。附加任务使用的loss如下:
l
m
(
s
)
=
∑
i
=
1
k
μ
i
l
n
(
u
i
′
)
+
(
1
−
μ
i
)
l
n
(
1
−
u
i
′
)
l_m(s)=\sum_{i=1}^k\mu_iln(u'_i)+(1-\mu_i)ln(1-u'_i)
lm(s)=i=1∑kμiln(ui′)+(1−μi)ln(1−ui′)
其中
k
k
k表示使用的moment的最高阶(读到这里笔者可以断定moment表示的不是时刻,而是矩的意思,参见矩估计)。
论文中将前述的第一矩和第二矩作为学习目标。
第一矩由以下方式得到:
v
m
e
a
n
=
W
μ
1
v
s
1
v_{mean}=W_{\mu1}v_s^1
vmean=Wμ1vs1
μ
1
′
=
s
i
g
m
o
i
d
(
W
μ
1
(
v
m
e
a
n
;
v
g
l
o
b
a
l
)
)
\mu_1'=sigmoid(W_{}\mu_1(v_{mean};v_{global}))
μ1′=sigmoid(Wμ1(vmean;vglobal))
其中
v
g
l
o
b
a
l
v_{global}
vglobal由前面介绍的Semantic-Dependency-Mask Attention在一个句子上的所有aspect的输出取平均得到:
v
g
l
o
b
a
l
=
1
p
∑
i
p
v
s
d
i
v_{global}=\frac{1}{p}\sum_i^pv_{sd_i}
vglobal=p1i∑pvsdi
v
v
a
r
i
a
n
c
e
v_{variance}
vvariance以上述同样的方式计算得来:
v
c
m
=
(
v
m
e
a
n
,
v
v
a
r
i
a
n
c
e
)
v_{cm}=({v_{mean}, v_{variance}})
vcm=(vmean,vvariance)
模型的最终效果以及各部分的贡献可以参见下表:
这篇论文实现的模型非常的复杂,是一篇名副其实的顶会论文,值得仔细去读一读。作者三次attention机制的使用,引入语法分析工具得到语义信息之后辅助任务的添加,等等思想非常值得借鉴。