crf的实现 keras_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略...

最近在系统地接触学习NER,但是发现这方面的小帖子还比较零散。所以我把学习的记录放出来给大家作参考,其中汇聚了很多其他博主的知识,在本文中也放出了他们的原链。希望能够以这篇文章为载体,帮助其他跟我一样的学习者梳理、串起NER的各个小知识点,最后上手NER的主流模型(Bilstm+CRF)(文中讲的是pytorch,但是懂了pytorch去看keras十分容易相信我哈)

全文结构:

一、NER资料(主要介绍NER)

二、主流模型Bilstm-CRF实现详解(Pytorch篇)

三、实现代码的拓展(在第二点的基础上进行拓展)

代码运行环境

  • 电脑:联想小新Air 13 pro
  • CPU:i5 ,4G运行内存
  • 显卡:NVIDIA GeForce 940MX,2G显存
  • 系统:windows10 64位系统
  • 软件:Anaconda 5.3.0 python 3.6.6 Pytorch1.0

一、NER资料

参考:NLP之CRF应用篇(序列标注任务)(CRF++的详细解析、Bi-LSTM+CRF中CRF层的详细解析、Bi-LSTM后加CRF的原因、CRF和Bi-LSTM+CRF优化目标的区别)

CRF++完成的是学习和解码的过程:训练即为学习的过程,预测即为解码的过程。

参考:Bilstm+crf中的crf详解(这份资料对后面代码的理解是有帮助的)

738b8446eb839e38598a0e2ac6054391.png

6a8af8472fe227b925032c2a68588cc4.png

c1f5fbedd04fc577abf36f5e44e7e85a.png

f2b81f5530268b165344d4454f5ee58a.png

参考:BiLSTM-CRF中CRF层解析-2

在上一篇的参考中提到,会在每一句话的开始加上“START”,在句尾加上“END”,这点我们可能会有疑惑。

这篇参考给予了解答:

这是为了使转移得分矩阵的鲁棒性更好,才额外加两个标签:START和END,START表示一句话的开始,注意这不是指该句话的第一个单词,START后才是第一个单词,同样的,END代表着这句话的结束。

下表就是一个转移得分矩阵的示例,该示例包含了START和END标签。

3a2ab3b525b65f689acb3346b9f823a1.png

每一个格里的值表示的意思是:这个格的行值转成列值的概率大小。打个比方:上图中红框(B-Person,I-person)的值为0.9,表示的意思就是B-person转移至I-person的概率为0.9,这是合乎BIO标注的规定的(B是实体的开始,I是实体的内部)。类推一下,蓝框的意思代表的就是B-Organization转移至I-Organization的概率为0.8。

参考:BiLSTM-CRF中CRF层解析-3(看完前面的参考来看这份,简直不要太良心了,易懂很多)

但是前面很多概念有提到,就不赘述了,只是加深一下印象,顺带推一下这个博主对CRF的一系类解析

7ca267faf6b856ff810e511625171d87.png

其中 Pi,yi第 i 个位置 softmax 输出为 yi 的概率Ayi,yi+1从 yi 到 yi+1 的转移概率,当tag(B-person,B-location......)个数为n的时候,转移概率矩阵为(n+2)*(n+2),因为额外增加了一个开始位置和结束位置。这个得分函数S就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,还要考虑前面转移概率相加最大即还要符合输出规则(B后面不能再跟B),比如假设BiLSTM输出的最有可能序列为BBIBIOOO,那么因为我们的转移概率矩阵中B->B的概率很小甚至为负,那么根据s得分,这种序列不会得到最高的分数,即就不是我们想要的序列。

整个过程中需要训练的参数为:

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值