paper title:《Chinese NER Using Lattice LSTM》
摘要
对于中文命名实体识别,我们研究了一种lattice结构的lstm模型(lattice-structured LSTM),这个模型能够对输入的字符序列以及序列中能够与字典相匹配的隐藏的词信息一同编码。
相比于基于字粒度的方法,lattice的能够更好的利用字以及字序列的信息。相比于词粒度的方法,lattice避免了分词带来的错误。门控循环单元能够使得模型选择最相关的字和词,得到更好的NER结果。在多种数据的实验中表明,lattice的性能优于基于字粒度和词粒度的lstm,能够得到best结果。
1 引言
近几年,作为信息抽取领域中的基本任务,命名实体识别(NER)得到了持续的研究关注。NER一直被看作是一项序列标注问题,他的实体边缘和类别标记一起被预测出来。英文NER中最好的结果是通过lstm-crf模型将字信息融入到词表示中得到的。
中文NER与分词有关,特别是实体的边界就是词的边界。中文NER的一种方式是先分词,然后对词序列进行NER标注。这种分词->NER的pipeline很容易受到传播错误,因为在分词中命名实体是OOV(out-of-vocabulary)的重要来源,而且错误的分割实体边缘也会导致NER的错误。这种问题在开放领域更为严重,因为交叉领域中的词分割还存在很多待解决问题。所以词粒度的性能要比字粒度的性能要好。
基于字粒度的NER的缺点是忽略了字以及字序列的信息。解决方法是利用lattice结构的lstm将句子中潜在的词信息融入到字粒度的lstm-crf中。
如上图,通过将句子与自动得到的较大的词典匹配构建一个字-词的lattice结构。例子中是得到了“长江大桥”“大桥”“长江”可以消除文中潜在命名实体的歧义,例如与文中的“江大桥”。
因为一个lattice中的字-词会有指数级的路径,所以构建了一个lattice lstm结构自动控制信息流从句子开始流到句子结尾。
如上图,通过门单元动态的将不同路径得到的词输送到相应的字符。在NER数据上训练,lattice lstm能够自动的在文中找到更多的词信息来达到更好的NER性能。与只依赖于字信息和只只依赖于词信息的NER相比,lsttice lstm 能够不受分词错误的影响,并将明确的词信息作用于字序列标注上的优点。
2 相关工作
神经网络运用与NER的方法:
- Hammerton :单向lstm,第一次将神经网络应用于NER
- Collobert :CNN-CRF
- dos Santos:character CNN + cnn-crf
- 最多的:lstm-crf
- Lample:character LSTM
基于字序列的标注成为中文NER的主流方法。在统计上来看,对于字粒度和词粒度的NER
方法的讨论表明字粒度的性能更优,对于神经网络中的NER方法也是如此。
另外,lattice lstm要优于word LSTM和character LSTM.
本模型不需要分词也不需要考虑多任务的设置。
NER任务中会经常使用外部信息源,尤其是词典特征被广泛使用。在本论文中是在大量自动分词的文本中使用预训练的word embedding 词典。同时类似与语言模型的半监督方法也可以到lattice lstm中。
lattice 结构的RNN可以看作是树结构的RNN向DAGs(Directed acyclic graph,有向无环图)的延伸。本文中的lattice lstm是以字符为中心的lattice-lstm-crf序列标注模型,对于词,有循环单元但是没有隐藏单元。
是第一个将字符与词混合起来构建lattice的,也是都一个将word-character lattice 应用于不用分词的中文NER任务中的。
3 模型
使用lstm-crf作为主要的网络结构。
一般将输入序列表示为 s = c 1 , c 2 . . . c m s = c_{1},c_{2}...c_{m} s=c1,c2...cm
其中, c j c_{j} cj代表第j个字符。也可以把输入表示为 s = w 1 , w 2 . . . w m s = w_{1},w_{2}...w_{m} s=w1,w2...wm,其中 w j w_{j} wj表示句子分词后的第j个词。本文中应用t(i,k)表示索引j,代表第i个单词的第k个字符。比如“南京市 长江大桥”,索引从1开始,那么t(1,2) = 2(京),t(2,3) = 6(大)。
运用BIOES(begin intermediate other end single)标注策略进行字粒度和词粒度的NER标注。
3.1 Character-Based Model
字粒度的ner模型如上图所示。
运用lstm-crf模型计算字序列 c 1 , c 2 . . . . c m c_{1},c_{2} ....c_{m} c1,c2....cm,每个字符 c j c_{j} cj通过字向量查找表(character embedding lookup table)得到。
X j c = e c ( c j ) ( 1 ) X_{j}^{c} = e^{c}(c_{j}) \qquad(1) Xjc=ec(cj)(1)
双向lstm计算字向量 x 1 , x 2 . . . x m x_{1},x_{2} ...x_{m} x1,x2...xm得到隐藏层结果 ( → h 1 c ) , ( → h 2 c ) . . . ( → h m c ) \overrightarrow(h_{1}^{c}),\overrightarrow(h_{2}^{c}) ...\overrightarrow(h_{m}^{c}) (h1c),(h2c)...(hmc)以及反向的 ( ← h 1 c ) , ( ← h 2 c ) . . . ( ← h m c ) \overleftarrow(h_{1}^{c}),\overleftarrow(h_{2}^{c}) ...\overleftarrow(h_{m}^{c}) (h1c),(h2c)...(