作者在中文的NER任务上提出了一个新颖的lattice-structured LSTM,编码输入字符序列和所有与词库匹配的潜在词语。与基于字符的方法相比,我们的模型明确地利用了单词和单词序列信息。与基于单词的方法相比,lattice LSTM不会受到分词错误的影响。门控循环神经元允许模型选择最相关的字符和单词,以此得到更好的结果。在各种数据集的实验表明,与基于字符和单词的方法相比,lattice LSTM的性能是最好的。
命名实体识别是信息抽取的基本任务,以序列标注的方式解决。目前英语NER的最好的方案是LSTM-CRF模型,将字符信息集成到单词表示中。
中文NER与分词息息相关。特别地,命名实体边界通常也是词边界。一个很传统的中文NER做法就是,在序列标注之前先分词。然而,这会引入一定的噪声,因为一些命名实体是OOV词,不正确的单词边界会导致错误。这个问题在开放域中可能很严重,因为跨域分词仍然是一个未解决的问题。所以对于中文NER来说,基于字符的方法优于基于单词的方法。
基于字符的NER方法的一个缺点就是没利用单词和单词序列信息。为了解决这个问题,我们通过使用lattice-structured LSTM表示句子中的词典单词,将潜在的单词信息整合到基于字符的LSTM-CRF中。如Figure1所示,我们通过将句子与自动获得的大词典进行匹配来构造单词字符点阵。比如单词序列长江大桥、长江、大桥可用于消除上下文中潜在的相关命名实体的歧义,比如人名“江大桥”。
考虑到有大量的单词-字符路径,我们使用lattice LSTM结构自动地控制信息流流动。如图2所示,神经元用于动态地将信息从不同的路径路由到每个字符。通过训练NER数据,lattice LSTM可以学习从上下文中自动找到更有用的单词以获得更好的NER性能。与基于字符和基于字的NER方法相比,我们的模型具有在字符序列标记利用单词信息而不受分词错误的优点。
第一个用于NER任务的神经网络模型是单向LSTM模型;接着是CNN-CRF模型;字符级别的CNN模型;大多数最近的工作都利用了LSTM-CRF结构。Huang et al(2015)使用了手工拼写特征;Ma and Hovy(2016)和Chiu and Nichols(2016)使用字符级别的CNN表示拼写特征;Lample et al(2016)使用字符级别的LSTM代替。
如何更好地利用中文NER的单词信息受到了持续的研究关注,其中分词信息已被用作NER的软特征,并且使用双重分解研究了联合分割和NER。虽然上述方法可能受到分词训练数据和分词错误的影响,但我们的方法不需要分词器。
有研究在NER中引入外部信息。特别是,词典特征已被广泛使用。Peters et al.(2017)预训练字符级别的语言模型来增强词表示。Yang et al(2017)通过多任务学习利用跨域和跨语言知识。我们通过在大型自动分词的文本上预训练好词向量。
lattice-structured RNN可以视为树结构RNN的拓展。现有工作相比,我们的lattice LSTM在动机和结构上都不同。例如,被设计用于以字符为中心的lattice-LSTM CRF序列标注任务,它有单词的循环神经元但没有隐藏层向量。据我们所知,我们是第一个为混合字符和词典单词设计新的lattice LSTM表示法,并且第一个使用单词字符 lattice 表示无分词的中文NER。
我们follow了最好的英文NER模型,使用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也可以表示为单词序列 s = w 1 , w 2 , . . . , w n s=w_1,w_2,...,w_n s=w1,w2,...,wn, w i w_i wi表示第i个单词。我们使用 t ( i , k ) t(i,k) t(i,k)表示句子中第i个单词的第k个字符的索引。举个例子,分词“南京市 长江大桥”,索引从1开始,那么 t ( 2 , 1 ) = 4 ( 长 ) t(2,1)=4(长) t(2,1)=4(长), t ( 1 , 3 ) = 3 ( 市 ) t(1,3)=3(市) t(1,3)=3(市)。使用BIOES标记法进行标记。
如下图所示,在字符序列 c 1 , c 2 , . . . , c m c_1,c_2,...,c_m c1,c2,...,cm中使用LSTM-CRF进行NER,每个字符 c j c_j cj表示为 x j c = e c ( c j ) x^c_j=e^c(c_j) xjc=ec(cj), e c e^c ec表示为字符的词向量矩阵。使用双向LSTM获得字符的上下文信息,然后使用CRF层进行序列标注。
如下图所示,每个词经过Embedding转化为词向量: x i w = e w ( w i ) x^w_i=e^w(w_i) xiw=ew(wi),然后经过双向LSTM得到词的上下文表示。
lattice模型的架构如图2所示,可以看成是基于字符模型的扩展,集成了基于词的神经元和额外门来控制信息流的流动。
如下图所示,模型的输入是字符序列 c 1 , c 2 , . . . , c m c_1,c_2,...,c_m c1,c2,...,cm和与词库D匹配的所有字符子串。我们对大量语料自动分词来构造词库D。使用 w b , e d w^d_{b,e} wb,ed来表示字符索引b开始e结尾的子串。比如 w 1 , 2 d w^d_{1,2} w1,2d表示“南京”。
模型的输入有四种向量:输入向量、输出隐藏层向量、神经元向量、门向量。输入向量就是字符的词向量, x j c = e c ( c j ) x^c_j=e^c(c_j) xjc=ec(cj)。模型的递归结构在每个字符 c j c_j cj上使用一个字符神经元向量 c j c c^c_j cjc和一个隐藏层向量 h j c h^c_j hjc,其中 c j c c^c_j cjc用来记录从句子开始到字符 c j c_j cj的信息流动, h j c h_j^c hjc用来CRF层的序列标注。
基本的递归LSTM函数如下, i j c , f j c , o j c i^c_j,f^c_j,o^c_j ijc,fjc,ojc分别是输入门、忘记门、输出门:
与基于字符模型不同, c j c c^c_j cjc的计算要考虑句子的子串 w b , e d w^d_{b,e} wb,ed,每个子串表示为: x b , e w = e w ( w b , e d ) x^w_{b,e}=e^w(w^d_{b,e}) xb,ew=ew(wb,ed)。另外,词神经元 c b , e w c^w_{b,e} cb,ew表示从句子开始的递归状态 x b , e w x^w_{b,e} xb,ew:
通过 c b , e w c^w_{b,e} cb,ew,有更多的递归路径的信息流进每个 c j c c^c_j cjc。例如, c 7 c c^c_7 c7c包括 x 7 c x^c_7 x7c(桥)、 c 6 , 7 w c^w_{6,7} c6,7w(大桥)、 c 4 , 7 w c^w_{4,7} c4,7w(长江大桥)。我们链接所有的 c b , e w c^w_{b,e} cb,ew到神经元 c e c c^c_e cec。我们对每个子串神经元 c b , e w c^w_{b,e} cb,ew使用一个额外的门 i b , e c i^c_{b,e} ib,ec来控制信息流流进 c e c c^c_e cec(原文是 c b , e c c^c_{b,e} cb,ec,我个人认为是写错了)。
得到隐藏层向量 h 1 , h 2 , . . . , h τ h_1,h_2,...,h_{\tau} h1,h2,...,hτ,标签序列 y = l 1 , l 2 , . . . , l τ y=l_1,l_2,...,l_{\tau} y=l1,l2,...,lτ的概率为:
实验不再介绍。我们凭经验研究了中文NER的lattice LSTM-CRF表示,发现它与不同领域的基于字和词的LSTM-CRF相比性能更好。 由于在NER消歧的上下文中选择词典单词的自由度,lattice方法完全独立于分词,但在使用单词信息方面更有效。