美文网首页
命名实体泛读系列(二)—— Chinese NER Using

命名实体泛读系列(二)—— Chinese NER Using

作者: DataArk | 来源:发表于2019-08-18 13:56 被阅读0次

一、写在前面的话

该论文针对中文命名实体任务,在原有的字LSTM+CRF的基础上,通过设定特定的LSTM cell以及大规模自动分词的语料,将词级别的信息加入模型中,从而使得模型在获得字信息的同时,也可以有效地利用分词的先验信息。在Bert之前,该模型是中文领域的SOTA。

二、论文模型

该模型首先整体结构上继承自字LSTM+CRF的结构,在对字信息的提取上同原始结构一样。而对于词信息,模型先是使用大规模自动分词获得词典,再通过重新设计Cell的结构,将句子中的词信息加入模型中。故该模型创新的重点便在于如何设计Cell。

1. 字LSTM CRF结构

对于每个句子中的每个字,都通过嵌入方法将其转化成向量,然后使用LSTM(或者BiLSTM)对输入的信息进行编码,最后在LSTM的输出处使用CRF进行序列标注。

2. Lattice LSTM模型

  • 字级的特征

在当前输入的这个字在词典中不存在任何以它结尾的词时,cell之间的传递就和正常的LSTM一样(也就是说,假设我们没有任何词典信息时,Lattice LSTM也就退化成了LSTM),其计算公式如下所示:

x^c_j = e^c(c_j)

\begin{bmatrix} i^c_j \\ o^c_j \\ f^c_j \\ \widetilde{c}^c_j \end{bmatrix} = \begin{bmatrix} \sigma \\ \sigma \\ \sigma \\ tanh \end{bmatrix}({W^c}^T \begin{bmatrix} x^c_j \\ h^c_{j-1} \end{bmatrix}+b^c)

c^c_j = f^c_j \odot c^c_{j-1} + i^c_j \odot \hat{c}^c_j

h^c_j = o^c_j \odot tanh(c^c_j)

其中,c_j是当前的输入,e^c是字级别的字向量嵌入字典,x^c_j就是当前输入的字向量,i^c_jf^c_jo^c_j是输入、遗忘和输出门,\sigma表示sigmoid函数(上述的公式其实就是正常的LSTM的cell)。

  • 词级的特征

词级特征分为两部分,假设存在当前输入的是京字,则它在词典中匹配到的是南京这个词,那么此时的词级特征的输入向量为南京这个词开头这个字在模型中的隐向量(即南这个字被输入时的h^c_j ,记为h^c_b,其中b表示这个词开头的字在句子中的开始位置的index)以及南京这个词直接嵌入的向量(记为x^w_{b,e},其中b,e表示这个词开头的字在句子中的开始位置的index和结束位置的index)。

得到两个输入向量后,以h^c_b作为正常LSTM中的h^c_{j-1}x^w_{b,e}作为正常LSTM中的x^c_j,进行计算:

\begin{bmatrix} i^w_{b,e} \\ f^w_{b,e} \\ \widetilde{c}^w_{b,e} \end{bmatrix} = \begin{bmatrix} \sigma \\ \sigma \\ tanh \end{bmatrix}({w^w}^T \begin{bmatrix} x^w_{b,e} \\ h^c_b \end{bmatrix} + b^w)

c^w_{b,e} = f^w_{b,e} \odot c^c_b + i^w_{b,e} \odot \widetilde{c}^w_{b,e}

PS:这边不需要输出门,文中给的解释是这边不是最后的需要输出的地方,最后将字信息和词信息融合之后那边已经有个输出门控制了,这边不加也没事。

  • 字词级的特征融合

上面以南京举例,只出现了一个词,但其实对部分字来说,它可能会在词典中匹配上很多词,例如桥这个字就可以在词典中匹配出大桥和长江大桥。为了将词、字信息融合,这里做了一个类似Attention的操作:

对于匹配出的每个词的c^w_{b,e}向量都进行如下操作计算出属于它的输出门:

i^c_{b,e} = \sigma({w^l}^T \begin{bmatrix} x^c_e \\ c^w_{b,e} \end{bmatrix} + b^l)

再使用当前字计算出的输入门和所有词的输入门做归一计算出权重:

\alpha^c_{b,j} = \frac{exp(i^c_{b,j})}{exp(i^c_j)+\sum_{b’ \in \lbrace b’’ \mid w^d_{b’’,j} \in \mathbb{D}\rbrace}exp(i^c_{b’,j})}

\alpha^c_{j} = \frac{exp(i^c_{j})}{exp(i^c_j)+\sum_{b’ \in \lbrace b’’ \mid w^d_{b’’,j} \in \mathbb{D}\rbrace}exp(i^c_{b’,j})}

可以看出,其实也就是计算了一种特殊的Attention(这里可以进一步探究一下换成其他Attention对结果的影响)。

最后和通常计算Attention特征向量一样,利用计算出的权重进行向量加权融合即可:

c^c_j = \sum_{b \in \lbrace b’ \mid w^d_{b’,j} \in \mathbb{D}\rbrace } \alpha^c_{b,j} \odot c^w_{b,j} + \alpha^c_j \odot \widetilde{c}^c_j

对于h^c_j及其最后输出的计算同原来的LSTM的计算一致:

h^c_j = o^c_j \odot tanh(c^c_j)

三、实验结果

数据集:作者将 Lattice LSTM用如下的四个数据集中:

Onto Notes MSRA Weibo resume

其中bichar是指使用了bigrams嵌入、softword是指将分词的词嵌入直接在输入层和字向量拼接。

可以看出Lattice LSTM对比另外两种比较简单地利用额外信息的方式有不错的进步,同时对比softword方式,很好地验证了Lattice LSTM结构上的优势,而不仅仅只是额外引入了词信息。

整体说来,文章思路清晰,创新的地方有理有据,很值得研究,而且Lattice LSTM的思路完全可以在bert等模型上添加,是个不错的后续研究的点,另外,模型都出现很多引入的词信息的地方如果使用Attention会有什么影响也值得探究。

参考

  1. https://davidham3.github.io/blog/2018/05/23/lattice-lstm-%E4%B8%AD%E6%96%87ner/
  2. https://www.cnblogs.com/bep-feijin/p/9650856.html

相关文章

网友评论

      本文标题:命名实体泛读系列(二)—— Chinese NER Using

      本文链接:https://www.haomeiwen.com/subject/wjtlsctx.html