一个更加详细的版本:https://blog.csdn.net/Amy_mm/article/details/81975827
目录
Chinese NER Using Lattice LSTM
论文和代码链接
文章主旨
简介
论文模型
一、基于字符的模型
二、基于词的模型
三、Lattice模型
CRF
吹逼时刻(实验效果)
英文的NER效果最好的模型来自于LSTM-CRF模型。
中文的NER结果依赖于中文分词结果,因为NER的边界就是中文分词的边界。有一个中文NER的办法就是先分词,然后进行NER,但是这样的话,分词的错误会传递到NER的结果。这在开放领域会更加严重,因为跨域分词依然会比较困难。有人研究过基于字符的中文NER方法会比基于分词结果的要好。
但是基于字符的中文NER方法又失去了部分词序列提供的信息,为了解决这个问题,这篇论文提出了将所有可能分词信息和字符信息混在一起做NER的方法如:figure 1
在图中,我们可以利用长江大桥、长江、大桥来对有可能识别到的人名“江大桥”进行消歧
如下图所示,Lattice-LSTM可以将所有的字符信息和分词信息涵盖,然后模型会从上下文自动的找到有用的词汇。
基于字符的gram模型
这里和上面没什么区别,就是在算每个字的向量的时候,加入了这个字和其后面一个字作为词的词向量。 如:算“南”这个字的向量的时候,会把“南”的词向量和“南京”的词向量一起拼接起来作为“南这个字的输入”,具体论文:https://pan.baidu.com/s/18sImkW9YPgbL1_j4YMWZww基于字符和分词结果模型
与上面类似,只不过是没有机械的用到下一个字符,而是用到了以这个字符开头的分词结果。不多介绍上面说到的模型最后都会使用CRF模型来做序列标注。
基于词的模型,就是把字换成了词,如下图所示。代表的是每个词的词向量。
后续还介绍了很多模型~ 暂时不一一介绍
终于到了我们的主角
下面解释一下这幅图:
大家看上图,我们利用这个公式求出中间插入的南京市这个词的, 同样的是lstm的门机构,唯一缺少的就是输出门,因为这个结构不需要输出,只需要往后传递参数c就好了~
看上图,输出之后,我们会求出作为南京市的一个输入门,就是把南京市的和下一个字“市”的输入结合起来。
看上图,我们利用这个公式计算“市”这个词的细胞更新状态,就是更新c,其实这个很简单,就是这个"市"这个字会有很多的输入,把他们都按照权重加起来就好了。疑问其实到这里发现,为啥没有遗忘门呢,很奇怪?望高手解答。
后面就是一套典型的CRF,不再多说。
看这里,句子如果不是很长,可以优先考虑基于词的,当然作者的lattice更厉害了
