摘要
目前最新的命名实体识别系统在很大程度上依赖于人工标注特征以及领域相关的知识,从而能够更加有效地学习可利用的、小型的、监督训练语料。在论文中,我们提出了两种新型的神经网络结构——一种依赖于双向LSTM和条件随机场(CRF),另外一种是受移近/规约解析( shift-reduce)的启发,使用基于转移(transition-based)的方法去构建、标记句子段。我们的模型依赖于两个关于单词的信息来源:(i)从监督语料库中学习的基于字符的单词表示和(ii)从未注释语料库中学习的无监督单词表示。在NER方面,我们的模型在四种没有存储任何语言相关的知识或资源的语言中获得了较好的性能。
1.介绍
命名实体识别(NER)是一种具有挑战的学习问题。一方面,在大部分语言和相关领域中,只有非常少的可利用的训练数据,另一方面,在能够被命名的单词之间存在非常小的约束,因此,NER的通用化是非常困难的。结果是,通过详细地构建单词特征以及语言相关的知识资源(例如,地名录)来解决NER问题被广泛地使用。不幸地是,当将NER应用到一个新的语言和领域时,这种方式是非常耗时的。从未注释的语料中进行无监督学习提供了一种可选择的策略,该策略能够从少量标注数据中获得更好地通用性。然而,即使是广泛依赖无监督特征的系统(Collobert等,2011; Turian等,2010; Lin和Wu,2009; Ando和Zhang,2005b等)也使用这种策略来增强而不是替代手工设计的特征(例如,关于特定语言中的大写模式和特征类的知识)和专业知识资源(例如,地名录)。
在论文中,我们提出的用于NER的神经网络结构除了使用少量的监督训练数据和未标记的语料库之外,不使用语言相关的资源或特征。我们的模型被设计用于获取两种直觉(intuitions.)。首先,由于名称经常由多个字符组成,对于每一个字符的标记进行联合推理决策是非常重要的。我们比较了两种模型,(i)一个双向LSTM,上面加一个条件随机场(LSTM+CRF,第二节),(ii)由基于转移的解析启发的使用栈LSTM去构建和标注输入句子块的模型(S-LSTM,第三节)。其次,对于“作为一个名字”的字符级证据(token-level evidence)包括单词证据(被标记为名称的单词是什么样的?)和分配证据(被标记的单词往往出现在语料库中?)。为了获得单词的特征,我们使用基于字符的单词表示模型(Ling et al., 2015b)去获得分布式特征,我们将这些特征与分布表示相结合。我们的单词表示联合了上述特征,并且使用dropout保证训练的模型能够去学习值得信赖的证据。
在英语、荷兰语、德语以及西班牙语上使用LSTM-CRF的实验都证明了我们能够获得较好的NER性能,并且在没有任何人工标注特征的条件下,在英语上获得非常好的性能(第五节)。尽管基于转移的算法在性能上不如LSTM-CRF模型,但是也远远超过了之前提出的方法。
2.LSTM-CRF模型
我们首先对LSTM和CRF进行简短地描述,然后提出它们的混合标注结构。这种结构与Collobert et al. (2011) 以及Huang et al. (2015).提出的相似。
2.1 LSTM
循环神经网络(RNNs)是用来处理序列数据的神经网络中的一种。它们将输入看作一个向量序列
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)并且返回另一个向量序列
(
h
1
,
h
2
,
.
.
.
,
h
n
)
(h_1,h_2,...,h_n)
(h1,h2,...,hn),这个序列用来表示输入中每一步的相关信息。在理论上,尽管RNNs能够学习到长期依赖信息,但是实际上,RNNs会倾向于去学习输入中最近距离的信息(Bengio et al., 1994)。长短期记忆网络(LSTMs)通过使用一个记忆单元被设计用来解决这个问题,并且能够捕获长距离的依赖。LSTM通过使用若干门去控制输入到记忆单元的信息,以及上一时刻状态的遗忘信息。我们使用下面的公式去实现:
i
t
=
σ
(
W
x
i
x
t
+
W
h
i
h
t
−
1
+
W
c
i
c
t
−
1
+
b
i
)
i_t=\sigma(W_{xi}x_t+W_{hi}h_{t-1}+W_{ci}c_{t-1}+b_i)
it=σ(Wxixt+Whiht−1+Wcict−1+bi)
c
t
=
(
1
−
i
t
)
⊙
c
t
−
1
+
i
t
⊙
t
a
n
h
(
W
x
c
x
t
+
W
h
c
h
t
−
1
+
b
c
)
c_t=(1-i_t)\odot c_{t-1}+i_t\odot tanh(W_{xc}x_t+W_{hc}h_{t-1}+b_c)
ct=(1−it)⊙ct−1+it⊙tanh(Wxcxt+Whcht−1+bc)
o
t
=
σ
(
W
x
o
x
t
+
W
h
o
h
t
−
1
+
W
c
o
c
t
+
b
o
)
o_t=\sigma(W_{xo}x_t+W_{ho}h_{t-1}+W_{co}c_t+b_o)
ot=σ(Wxoxt+Whoht−1+Wcoct+bo)
h
t
=
o
t
⊙
t
a
n
h
(
c
t
)
h_t=o_t\odot tanh(c_t)
ht=ot⊙tanh(ct)
其中,
σ
\sigma
σ是sigmod函数,
⊙
\odot
⊙是按元素乘。
对于一个给定的输入句子
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)包含n个单词,每个单词表示为一个d维的向量,一个LSTM计算句子中每个单词左侧句子信息
h
⃗
t
\vec h_t
ht。很自然地,每个单词的右侧句子信息也应该具有有用的信息
h
←
t
\overleftarrow h_t
ht,这可以通过使用一个按相反方向读取相同输入的LSTM来实现。我们将前一个LSTM作为前向LSTM(forward),后一个LSTM作为反向LSTM(backword),这两个网络分别使用两组不同的参数。最终,前向LSTM和反向LSTM组合成了双向LSTM。
通过该模型得到得每个单词的表示是由其上文信息和下文信息组合得到得,
h
t
=
[
h
→
t
;
h
←
t
]
h_t=[\overrightarrow h_t;\overleftarrow h_t]
ht=[ht;ht]。这种表示能够有效地包含单词的上下文信息,这在大量标注应用中是非常有效的。
2.2 CRF标注模型
一个非常简单但有效的有效标记模型是使用
h
t
h_t
ht作为特征来为每个输出
y
t
y_t
yt做出独立的标注决策(Ling et al。,2015b)。尽管单独的模型在诸如词性标注(POS)之类的简单问题上取得了成功,但是当输出标签之间存在强烈的依赖关系时,其独立的分类决策是有限的。命名实体识别(NER)就是这一类的任务,因为用于表示一种可解释的标签序列的“语法”强加了几个硬约束(例如,I-PER不能遵循B-LOC;详见§2.4),这是不可能用独立假设进行建模的。
因此,不单独使用该模型进行标注建模,我们通过使用条件随机场来对其进行联合建模。对于一个输入句子:
X
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
X=(x_1,x_2,...,x_n)
X=(x1,x2,...,xn)
我们将P看作是双向LSTM网络输出的分数矩阵。矩阵P的大小为
n
×
k
n\times k
n×k,其中
k
k
k是标签数,
P
i
,
j
P_{i,j}
Pi,j对应着句子中第
i
i
i个单词取第
j
j
j个标签的分数。对于一个预测序列:
y
=
(
y
1
,
y
2
,
.
.
.
,
y
n
)
y=(y_1,y_2,...,y_n)
y=(y1,y2,...,yn)
我们定义它的分数为:
s
(
X
,
y
)
=
∑
i
=
0
n
A
y
i
,
y
i
+
1
+
∑
i
=
1
n
P
i
,
y
i
s(X,y)=\sum_{i=0}^{n}A_{y_i,y_{i+1}}+\sum_{i=1}^{n}P_{i,y_i}
s(X,y)=i=0∑nAyi,yi+1+i=1∑nPi,yi
其中,
A
A
A是一个转移分数矩阵(状态转移矩阵),
A
i
,
j
A_{i,j}
Ai,j表示标注
i
i
i转移到标注
j
j
j的分数。
y
0
y_0
y0和
y
n
y_n
yn是序列的开始和结束标注。最终
A
A
A是一个大小为
k
+
2
k+2
k+2的方阵。
对于序列
y
y
y在所有可能标注序列下出现的概率,由softmax计算得:
p
(
y
∣
X
)
=
e
s
(
X
,
y
)
∑
y
~
∈
Y
X
e
s
(
X
,
y
~
)
p(y|X)=\frac{e^{s(X,y)}}{\sum_{\tilde{y}\in Y_X}e^{s(X,\tilde{y})}}
p(y∣X)=∑y~∈YXes(X,y~)es(X,y)
在训练过程中,我们通过最大化上式的对数概率来进行:
l
o
g
(
p
(
y
∣
X
)
)
=
s
(
X
,
y
)
+
l
o
g
(
∑
y
~
∈
Y
X
e
s
(
X
,
y
~
)
)
log(p(y|X))=s(X,y)+log(\sum_{\tilde{y}\in Y_X}e^{s(X,\tilde{y})})
log(p(y∣X))=s(X,y)+log(y~∈YX∑es(X,y~))
=
s
(
X
,
y
)
+
l
o
g
a
d
d
y
~
∈
Y
X
s
(
X
,
y
~
)
(
1
)
=s(X,y)+logadd_{\tilde{y}\in Y_X}s(X,\tilde{y})\qquad (1)
=s(X,y)+logaddy~∈YXs(X,y~)(1)
其中,
Y
X
Y_X
YX表示输入
X
X
X中所有可能的标注序列。从上述公式中可以看出,我们鼓励我们的网络去产生一个有效的输出标注序列。在解码阶段,我们预测出获得最大评分的输出序列,其中,序列由下式给出:
y
∗
=
a
r
g
m
a
x
y
~
∈
Y
X
s
(
X
,
y
~
)
(
2
)
y^*=argmax_{\tilde{y}\in Y_X}s(X,\tilde y)\quad(2)
y∗=argmaxy~∈YXs(X,y~)(2)
由于我们只是对输出之间的二元交互进行建模,因此等式1求和以及等式2中的最大后验序列y *可以使用动态编程来计算。
2.3 参数及训练
对于输入序列中的每一个字符来说,与其标注决策相关的分数
P
i
,
y
i
P_{i,y_i}
Pi,yi被定义为由双向LSTM得到的该单词的上下文信息的点积,这与Ling等人的POS标注模型完全相同(2015b)。 并且这个分数和状态转移的分数
A
y
i
−
1
,
y
i
A_{y_{i-1},y_i}
Ayi−1,yi联合了起来。这种结构展示在图1。其中,圆圈代表观察到的变量,棱形是其父母节点的确定性函数,双圆圈是随机变量。
因此,该模型的参数包含决定分数
A
y
i
−
1
,
y
i
A_{y_{i-1},y_i}
Ayi−1,yi的矩阵,以及产生分数矩阵
P
P
P的参数(即双向LSTM中隐藏单元的参数、全连接层线性权重向量和单词向量)。正如在2.2部分中,令
x
i
x_i
xi表示输入句子中每个单词的单词的词向量,并且
y
i
y_i
yi是该单词对应的标签。我们将在第4节中去讨论如何对向量
x
i
x_i
xi进行建模。句子每个单词词向量的序列作为双向LSTM的输入,其最终输出每个单词的上文和下文的表示,如2.1中所述。
这两种类型的表示(上文和下文的表示)被连接为
c
i
c_i
ci并线性投影到大小等于标注类别数目的层上(即全连接层分类)。我们不直接使用此层的softmax来计算损失,而是使用前面描述的CRF来考虑相邻标签的相关性,从而产生对每个词标注
y
i
y_i
yi的最终预测。**此外,我们观察到在
c
i
c_i
ci和CRF层之间添加隐藏层会略微改善我们的结果。**使用了此模型的报告的所有结果中都包含此额外的隐藏层。在给出输入的单词序列以及对应的NER标签序列的条件下,参数被训练以最大化等式1。
2.4 标注方法
命名实体识别的任务是为句子中的每个单词都分配给相应的命名实体的标签。单个命名实体可以跨越句子中的多个字符。在序列标注中,标注句子通常以IOB格式(内部,外部,开始)表示,即如果字符是命名实体的开头,则该字符被标记为B标签,如果它在命名实体内但不是第一个标记,则标记为I标签,否则为O标签。但是,我们决定使用IOBES标记方法,这是一种常用于命名实体识别的IOB变体,它对单例实体(S)的信息进行编码,并明确标记命名实体(E)的结尾。使用这种方案,以高置信度标记单词作为I标签会缩小后续单词到I标签或E标签的选择,但是,IOB方案只能确定后续单词不能是内部另一个标签。Ratinov和Roth(2009)以及Dai等人(2015)表明,使用像IOBES这样更具表现力的标记方案可以略微提高模型性能。但是,我们没有观察到相对于IOB标记方案的显着改进。