一、Background
命名实体分类(EC)和关系抽取(RE)在NLP中是热点话题。他们是相关的,但是大多数方法都是pipeline的,先进行NER,然后RE。然而,命名实体类型和关系通常是相互依赖的。如果已知实体类型,则可以减少他们之间可能关系的搜索空间,反之亦然。比如,‘Mercedes’,可能是一个人名,组织名,地名,如果上下文中存在‘live_in’关系,那么‘Mercedes’就是一个人名。因此,作者提出一个神经网络来处理两个任务。与计算任务成本的联合训练和多任务学习相比,作者建议学习一个联合分类层,该层在两个任务的输出上进行全局归一化。与CRF用于序列标注任务不同,作者将联合实体和关系分类问题建模为CRF层的长度为3的序列。特别地,我们识别给定句子的两个候选实体(单词或短语)的类型(我们称之为实体分类以将其与NER区分开)以及它们之间的关系。
二、Motivation
- EC和RE是有相关性的。
三、Model
3.1 Modeling Context and Entities
模型的框架如图二所示。
- Input: 给定一个输入句子和两个实体词,我们的模型要分辨实体的类型以及他们之间的关系。输入词用词向量表示。为了分辨实体词 e k e_k ek的类型,模型使用句子相对于 e k e_k ek的左半部分的上下文, e k e_k ek的词向量表示,右半部分上下文。为了分辨实体词 e i 和 e j e_i和e_j ei和ej的关系,句子被分成六部分建模: e i e_i ei左半部分, e i e_i ei, e i e_i ei右半部分, e j e_j ej左半部分, e j e_j ej, e j e_j ej右半部分。比如图一的句子和实体对(“Anderson”,“chief”),上下文拆分成:[]、[Anderson]、[,41,was the …]、[Anderson,41, was the]、[chief]、[Middle East correspondent for …]。
- Sentence Representation: 作者使用CNN模型表示输入句子的不同部分。训练一个CNN层用于提取实体特征,另一个CNN用于提取上下文特征。使用两个CNN层代替一个使模型更具灵活性。考虑到实体词通常比上下文要短,所以实体词的卷积核宽度要比上下文的小。此外,该架构简化了在未来工作中将实体表示从单词更改为字符。
卷积之后,对实体和上下文通过k-max pooling然后拼接得到最终结果。拼接向量 c z ∈ R C z , z ∈ { E C , R E } c_z\in R^{C_z},z\in \{EC,RE\} cz∈RCz,z∈{EC,RE},然后分别通过特定于任务的隐藏层: h z = t a n h ( V z T c z + b z ) h_z=tanh(V_z^Tc_z+b_z) hz=tanh(VzTcz+bz)
3.2 Global Normalization Layer
对于全局归一化,作者采用了线性链的CRF。它期望不同类别的分数作为输入。因此,首先要通过全连接层将隐藏层表示
h
z
∈
R
H
z
h_z\in R^{H_z}
hz∈RHz映射为向量
v
z
v_z
vz,
v
z
v_z
vz的输出大小为类别数:
N
=
N
E
C
+
N
R
E
N=N_{EC}+N_{RE}
N=NEC+NRE,
v
z
=
W
z
T
h
z
v_z=W^T_zh_z
vz=WzThz。
对于句子分类来说,CRF层的输入序列并不是很清晰。因此,我们建议用以下分数序列对联合实体和关系分类问题进行建模:
d
=
[
v
E
C
(
e
1
)
,
v
R
E
(
r
12
)
,
v
E
C
(
e
2
)
]
d=[v_{EC}(e_1),v_{RE}(r_{12}),v_{EC}(e_2)]
d=[vEC(e1),vRE(r12),vEC(e2)]
因此,我们可以近似地估计实体类型和关系的联合概率:
P
(
T
e
1
R
e
1
e
2
T
e
2
)
≈
P
(
T
e
1
)
⋅
P
(
R
e
1
e
2
∣
T
e
1
)
⋅
P
(
T
e
2
∣
R
e
1
e
2
)
P(T{e_1}R_{e_1e_2}T_{e_2})\approx P(T_{e_1})\cdot P(R_{e_1e_2}|T_{e_1})\cdot P(T_{e_2}|R_{e_1e_2})
P(Te1Re1e2Te2)≈P(Te1)⋅P(Re1e2∣Te1)⋅P(Te2∣Re1e2)
我们的直觉是关系和实体之间的依赖性强于两个实体之间的依赖关系。(???)CRF层使用开始和结束标记填充其长度为n = 3的输入,并计算预测序列y的分数:
s
(
y
)
=
∑
i
=
0
n
Q
y
i
y
i
+
1
+
∑
i
=
1
n
d
i
,
y
i
s(y)=\sum_{i=0}^nQ_{y_iy_{i+1}}+\sum_{i=1}^nd_{i,y_i}
s(y)=∑i=0nQyiyi+1+∑i=1ndi,yi,其中
Q
k
,
l
Q_{k,l}
Qk,l表示从类别k到类别l的转换分数,
d
p
,
q
d_{p,q}
dp,q表示类别q在位置p的分数。训练过程中,前向传播会计算所有可能标签序列的得分,得到正确标签序列
y
^
\hat y
y^的对数概率:
l
o
g
(
p
(
y
^
)
)
=
e
s
(
y
^
)
∑
y
~
∈
Y
e
s
(
y
~
)
log(p(\hat y))=\frac{e^{s(\hat y)}}{\sum_{\widetilde y\in Y}e^{s(\widetilde y)}}
log(p(y^))=∑y
∈Yes(y
)es(y^)
测试时,Viterbi算法得到最高分数的标签序列
y
∗
y^*
y∗。
四、Experiment
使用Roth and Yih, 2004的ERR数据集。评价指标为micro F1。
4.1 Experimental Setups
- Setup 1:Entity Pair Relations. Roth和Yih(2004, 2007); Kate和Mooney(2010)在ERR数据集上分别训练EC和RE模型。对于RE模块,他们只识别命名实体对的关系。在这个情况下,我们模型的查询实体只是命名实体对。这有助于EC任务。
- Setup 2:Table Filling. 作者follow了Miwa and Sasaki(2014);Gupta et al.(2016)的工作,将EC和RE的联合任务建模为表填充任务。对于长度为m的句子,我们创建了m*m的二维表格。Cell(i,j)表示词i和词j的关系。cell(k,k)表示词k的实体类型。follow之前的工作,我们只预测表格的一半,m(m+1)/2,如图3所示。这一步骤中,每个cell(i,j)(i!=j)分别输入到模型中。我们的模型输出cell(i,j)(i和j的关系)、cells(i,i)和(j,j)。为了用实体类填充对角线,我们通过使用多数投票来聚合特定实体的所有预测。
- Setup 3:Table Filling Without Entity Boundaries. 从步骤2得到的表格中每个实体分布在每行每列,利用ERR数据集的给定实体边界。为了研究实体边界对分类结果的影响,作者还考虑了另外一个表填充设置,忽略实体边界并为每个token分配一行/列。评估过程中,如果至少一个包含的cell正确分类,那么multi-token评分正确。
- Comparison。 设置一和设置二最大的不同就是无关系的实体对数目。(test set: ≈3k for setup 1, ≈121k for setup 2)。这使得设置2更具挑战性,设置3和设置2的无关系的实体对数目相同。为了应对这一点,我们在设置2和3的训练集中随机地对负实例进行子采样。
4.2 Experimental Results
softmax和CRF的对比:
作者的模型和其它论文对比:
五、Conclusion
作者介绍了一种全局标准化的CNN用于实体和关系的联合抽取。特别地,作者提出了一种利用线性链CRF同时预测实体类型和实体之间的关系的方法。