CopyRE
模型包括编码器和解码器两部分
编码器:将输入的句子(源句子)转换为固定长度的语义向量
解码器:读取该矢量并直接生成三元组
Encoder
编码器使用Bi-RNN对输入句子进行编码。
Decoder
解码器会直接生成三元组。
-
1、 解码器生成三元组的关系
-
2、解码器采用copy mechanism 从源句子中复制第一个实体(头实体)
-
3、解码器采用copy mechanism 从源语句中复制第二个实体(尾实体)
-
4、重复这个过程,解码器可以生成多个三元组。当生成了所有有效的三元组时,解码器会生成NA三元组,代表“停止”,NA三元组由NA关系和NA实体对组成
CopyRE公式表示
如图所示,解码器按照模块可分为:
- Predict Relation:关系预测
- EntityCopy (Copy the First Entity、Copy the SecondEntity):实体复制(头实体、尾实体)
- EXtracted triplets:三元组抽取
Encoder
如上图所示,编码器使用Bi-RNN对输入句子进行编码。
o
t
E
,
h
t
E
=
B
i
R
N
N
(
x
t
,
h
t
−
1
E
)
o_{t}^{E} , h_{t}^{E} = BiRNN(x_{t}, h_{t-1}^{E})
otE,htE=BiRNN(xt,ht−1E)
s
=
[
h
n
E
→
;
h
n
E
←
]
s = [\overrightarrow{h_{n}^{E} } ;\overleftarrow{h_{n}^{E} }]
s=[hnE;hnE]
Decoder
如上图所示,解码时,每三个时间步为一个循环提取一个三元组,依次生成三元组的关系(Predict Relation)、从原句中复制第一个实体(Copy the First Entity)、从原句中复制第二个实体(Copy the Second Entity),构成完整的三元组。解码器不断重复上面三步生成多个三元组,生成了所有有效的三元组时,解码器生成NA三元组,停止。
o
t
D
,
h
t
D
=
g
(
u
t
,
h
t
−
1
D
)
o_{t}^{D} , h_{t}^{D} = g(u_{t}, h_{t-1}^{D})
otD,htD=g(ut,ht−1D)
h
0
D
←
s
h_{0}^{D}{\leftarrow} s
h0D←s
u
t
=
[
v
t
;
c
t
]
⋅
W
u
u^{t} = [v^{t};c^{t}] \cdot W^{u}
ut=[vt;ct]⋅Wu
Predict Relation
q
r
=
s
e
l
u
(
o
t
D
⋅
W
r
+
B
r
)
q^{r} = selu(o_{t}^{D}\cdot W^{r}+B^{r})
qr=selu(otD⋅Wr+Br)
q
N
A
=
s
e
l
u
(
o
t
D
⋅
W
N
A
+
B
N
A
)
q^{NA} = selu(o_{t}^{D}\cdot W^{NA}+B^{NA})
qNA=selu(otD⋅WNA+BNA)
p
r
=
s
o
f
t
m
a
x
(
[
q
r
;
q
N
A
]
)
p^{r} = softmax([q^{r};q^{NA}])
pr=softmax([qr;qNA])
p
r
p^{r}
pr作为下一时间步的
v
t
+
1
v^{t+1}
vt+1输出到一阶段
EntityCopy
Copy the First Entity
q
i
e
=
s
e
l
u
(
[
o
t
D
;
o
i
E
]
⋅
w
e
)
q^{e}_{i} = selu([o_{t}^{D};o_{i}^{E}]\cdot w^{e})
qie=selu([otD;oiE]⋅we)
p
e
=
s
o
f
t
m
a
x
(
[
q
e
;
q
N
A
]
)
p^{e} = softmax([q^{e};q^{NA}])
pe=softmax([qe;qNA])
p
e
p^{e}
pe作为下一时间步的
v
t
+
1
v^{t+1}
vt+1输出到一阶段
Copy the Second Entity
M i = { 1 , i ≠ k 0 , i = k M_{i} =\left\{\begin{matrix} 1, i≠k \\0,i=k \end{matrix}\right. Mi={1,i=k0,i=k
p
e
=
s
o
f
t
m
a
x
(
[
M
⊗
q
e
;
q
N
A
]
)
p^{e} = softmax([M\otimes q^{e};q^{NA}])
pe=softmax([M⊗qe;qNA])
p
e
p^{e}
pe作为下一时间步的
v
t
+
1
v^{t+1}
vt+1输出到一阶段
EXtracted triplets
符号声明
X = [ x 1 , x 2 , . . . , x n ] X = [x_{1},x_{2},...,x_{n}] X=[x1,x2,...,xn]
符号 | 含义 |
---|---|
X = [ x 1 , x 2 , . . . , x n ] X = [x_{1},x_{2},...,x_{n}] X=[x1,x2,...,xn] | 输入句子s转换成的词向量矩阵 |
t ( 0 ≤ t ≤ n ) t(0\le t\le n) t(0≤t≤n) | 表示当前位置(时间步长) |
B i R N N ( ) BiRNN() BiRNN() | 双向RNN模型 |
n n n | 输入句子的长度 |
M M M | 掩码矩阵 |
q r q^{r} qr | 有效关系的置信向量 |
q e q^{e} qe | 原句子中所有词汇的置信向量 |
q N A q^{NA} qNA | NA关系或实体的置信向量 |
o t D o_{t}^{D} otD | 时间步长为t时的解码器输出 |
h t D h_{t}^{D} htD | 时间步长为t时的解码器隐状态输出 |
c t c_{t} ct | 注意力向量 |
v t v_{t} vt | 复制的实体嵌入 |
参考:
CopyRE: Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism, ACL 2018
NLP中实体关系三元组抽取模型范式总结