End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF 阅读笔记

论文原文End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF
论文信息ACL2016
论文解读Zhang & Hytn Chen
更新时间2020-03-22

命名实体识别简介

命名实体识别的目的是识别语料中人名、地名、组织机构名等命名实体。而命名实体是命名实体识别的研究主体,一般包括三大类(实体类、时间类和数字类)和七小类(人名、地名、机构名、时间、日期、货币和百分比)。一般来说时间和数字类可通过正则表达式匹配出来,其他较为复杂。
评判一个命名实体是否被正确识别包括两个方面:实体边界是否正确;实体类型是否正确。其中主要错误类型包括文本正确,类型错误;和文本边界错误,类型可能正确。
说到命名实体识别,尤其难的是中文命名实体识别。其面临以下几个主要的挑战:
1、中文不像英文那样有空格作为词语的界限标志,词在中文里本就是很模糊的概念,中文也不具备英文中字母大小写等形态指示。因此及其容易发生边界错误
2、中文有些词语在脱离上下文语境的情况下无法判断是否是命名实体,就算是,那在不同上下文语境下可能是不同类型的实体。
3、命名实体存在大量嵌套现象,如“复旦大学附属华山医院”这一组织机构名中还嵌套着同样可作为组织机构名的“复旦大学”以及“华山医院”,这种现象在组织机构名中尤其严重。
4、中文里广泛存在简化表达的现象,如“中科大”,“华建”(华东建筑集团)乃至简化表达构成的命名实体,如“中建八局”。

NER发展历史

基于规则的命名实体识别,利用手工编写的规则,将文本与规则进行匹配来识别出命名实体。例如书名号里面的词,说前面的词,大学前面的词。
基于特征模板的命名实体识别,统计机器学习方法将NER视作序列标注任务,利用大规模语料来学习出标注模型,从而对句子各个位置进行标注。NER任务中常用的模型包括生成式的隐马尔可夫模型HMM和判别式的条件随机场模型CRF
比较流行的方法是特征模板+条件随机场的方案。
基于神经网络的命名实体识别,让模型的训练成为一个端到端的整体过程,不再依赖特征工程,是一种数据驱动的方法。最经典的就是RNN读取输入自动提取特征来预测每个位置的标签。这种方法的缺点就是对每个词打标签的过程中是独立的分类,不能利用上文已经预测好的标签,只能靠隐层传递上文信息,那这样得出的标签序列就有可能出现非法情况。例如B-PER后面跟I-LOC,针对这个问题和局限,就出现了BiLSTM-CRF的方法。

序列标注中的条件随机场

条件随机场目标就是根据一些已观察到的证据(训练样本)来对感兴趣的未知变量进行估计和推测,是概率图模型的一种。利用已知变量推测未知变量的分布称为推断,生成式模型先学习联合分布 P ( X , Y ) P(X,Y) P(X,Y)再求解条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX),而判别式模型直接通过训练样本计算条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)。CRF就是一种典型的判别式模型。
假设有两个线性链表示的随机变量X和Y,如果在给定X的情况下,Y当前时刻的状态仅与前后状态有关,即
P ( y i ∣ X , y 1 , y 2 , ⋯ y i − 1 , y i + 1 , ⋯ y n ) = P ( y i ∣ X , y i − 1 , y i + 1 ) P\left(\mathrm{y}_{\mathrm{i}} | X, y_{1}, y_{2}, \cdots y_{i-1}, y_{i+1}, \cdots y_{n}\right)=P\left(y_{i} | X, y_{i-1}, y_{i+1}\right) P(yiX,y1,y2,yi1,yi+1,yn)=P(yiX,yi1,yi+1)
当X取值为x时,Y取值为y的概率为:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ( ∑ i , k v k t k ( y i − 1 , y i , x , i ) + ∑ i / u i s i ( y i , x , i ) ) Z ( x ) = ∑ y exp ⁡ ( ∑ i k v k t k ( y i − 1 , y i , x , i ) + ∑ i , j u i s i ( y i , x , i ) ) \begin{array}{l} P(\mathrm{y} | x)=\frac{1}{Z(x)} \exp \left(\sum_{i, k} v_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i /} u_{i} s_{i}\left(y_{i}, x, i\right)\right) \\ Z(x)=\sum_{y} \exp \left(\sum_{i k} v_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, j} u_{i} s_{i}\left(y_{i}, x, i\right)\right) \end{array} P(yx)=Z(x)1exp(i,kvktk(yi1,yi,x,i)+i/uisi(yi,x,i))Z(x)=yexp(ikvktk(yi1,yi,x,i)+i,juisi(yi,x,i))
这里的 t k t_k tk是状态转移函数, s l s_l sl是状态特征函数, v k v_k vk u l u_l ul是对应的权值,在给定x的情况下,计算概率最大y序列可以用维特比算法。

CRF和LSTM用于序列标注工作

LSTM:RNN系列的神经网络在序列建模上能够捕获长远的上下文信息,还具备神经网络非线性的能力,这些都是CRF做不到的。但如果输出层还存在较强的依赖关系的话,LSTM就没法对输出层进行约束和建模了
CRF:正好弥补了这个缺点,让输出序列符合一些基本依赖关系的约束。CRF不能考虑长远的上下文信息,但是能建模状态之间的转移概率(也就是依赖关系),从总体角度来看,CRF更多考虑的是整个句子局部特征的线性加权组合,优化的是一个序列而不是某个时刻的状态。
LSTM输出的维度是标签个数,假设输出矩阵为P,其中 P i , j P_{i,j} Pi,j代表词 i 映射到标签 j 的非归一化概率。对CRF层来说,假定存在一个转移矩阵A,则 A i , j A_{i,j} Ai,j代表了标签从 i 转移到 j 的转移概率,通过这个转移矩阵,CRF就可以使用到之前标签的信息了。
对输入序列X对应的输出标签序列y,定义打分函数score为:
s ( X , y ) = ∑ i = 0 n A y i , y i + 1 + ∑ i = 0 n P i , y i s(X, y)=\sum_{i=0}^{n} A_{y_{i}, y_{i+1}}+\sum_{i=0}^{n} P_{i, y_{i}} s(X,y)=i=0nAyi,yi+1+i=0nPi,yi
整个标签序列的得分等于各个位置的得分之和,每个位置的得分包括两个部分,一部分直接由LSTM的输出决定,另一部分由CRF的转移矩阵决定,最终目标就是选择出分数最大的一个序列作为最终的输出。

论文提出的模型

之前的模型例如LSTM/CNN不能有效建模标签之间的依赖关系。而BiLSTM-CRF没有使用CNN来编码字符级别的特征。对英语来说单词的形态特征也很重要,有方法在处理字符级别的特征是依旧依赖人工特征或者预处理步骤,不是一个端到端的模型。
于是文章提出的模型Bi-directional LSTM-CNNs-CRF,模型的整体结构图如下
在这里插入图片描述
各部分功能如下。

CNN用于捕获单词的形态学信息

以字符为单位,经过卷积和最大池化,建模单词内部的固有信息,得到单词的字符表示。
形态学特征(前后缀)在很大程度上可以表达出单词的词项等信息,并且对于一些组合单词,模型可以初步理解语义。该部分图解如下:
在这里插入图片描述

BiLSTM用于捕获句子的上下文信息

把单词的字符表示和词表示拼接起来,得到单词的最终表示,BiLSTM以单词为单位,建模词与词之间的联系,最终为每个位置的单词得到了融合上下文语义的向量表示。
值得一提的是,char embedding和word embedding相结合的方法在很多NLP任务中都有着不错的表现性能。

CRF用于捕获标签之间的依赖关系

如果记输入为z,预测的标签序列为y,那么条件概率:
p ( y ∣ z ; W , b ) = ∏ i = 1 n ψ i ( y i − 1 , y i , z ) ∑ y ′ ∈ Y ( z ) ∏ i = 1 n ψ i ( y i − 1 ′ , y i ′ , z ) p(\boldsymbol{y} | \mathbf{z} ; \mathbf{W}, \mathbf{b})=\frac{\prod_{i=1}^{n} \psi_{i}\left(y_{i-1}, y_{i}, \mathbf{z}\right)}{\sum_{y^{\prime} \in \mathcal{Y}(\mathbf{z})} \prod_{i=1}^{n} \psi_{i}\left(y_{i-1}^{\prime}, y_{i}^{\prime}, \mathbf{z}\right)} p(yz;W,b)=yY(z)i=1nψi(yi1,yi,z)i=1nψi(yi1,yi,z)
根据最大对数似然来训练模型,这里的 ψ \psi ψ是势函数,与前面讲到的打分函数score在本质上相同。为什么呢,首先势函数表达式如下
ψ i ( y ′ , y , z ) = exp ⁡ ( W y ′ , y T z i + b y ′ , y ) \psi_{i}\left(y^{\prime}, y, \mathbf{z}\right)=\exp \left(\mathbf{W}_{y^{\prime}, y}^{T} \mathbf{z}_{i}+\mathbf{b}_{y^{\prime}, y}\right) ψi(y,y,z)=exp(Wy,yTzi+by,y)
上式指数中的第一项就是score中的P项,第二项就是score中的A项。条件概率本质上其实就对应着下式
P ( y ∣ x ) = exp ⁡ ( socre ( x , y ) ) ∑ y , exp ⁡ ( socre ⁡ ( x , y ′ ) ) P(y | x)=\frac{\exp (\text {socre}(x, y))}{\sum_{y}, \exp \left(\operatorname{socre}\left(x, y^{\prime}\right)\right)} P(yx)=y,exp(socre(x,y))exp(socre(x,y))

总结

实验部分文章中进行了详细列举,就不多阐述了,值得一提的是文章的探索性实验,首先证明了CRF对于效果提升有着必须性。之后探索了词向量,证明:

  • Glove词向量在该任务中效果最好
  • NER任务比序列标注任务更加依赖于预训练的词向量
  • word2vec在NER任务上效果相对较差,原因是word2vec的训练区分大小写,并且不包括许多常见的标点和数字。

分析了OOV单词对结果的影响。证明CRF可以有效缓解OOV单词所带来的负面效应,因为结构化的联合解码可以补充一部分语义缺失造成的影响。
在这里插入图片描述
这里的OOTV表示训练集没有的单词,OOEV表示embedding里面没有的单词,OOBV表示两个都没有的单词。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值