第四章 实体识别:CRF及LSTM+CRF


命名实体识别的发展历史


命名实体识别的任务

一般而言,主要是识别出待处理文本中七类(人名、机构名、地名、时间、日期、货币和百分比)命
名实体
两个任务:实体边界识别实体类别标注(Entity Typing)


实体识别基本概念

  • 实体识别的任务是识别出文本中三大类命名实体(实体类、时间类和数字类), 具体如下所示:
    - 实体识别
    - 序列标

目前方法


基于机器学习的方法

生成式方法
原理:首先建立学习样本的生成模型,再利用模型对预测结果进行间接推理
典型算法: HMM等

判别式方法
原理:由字构词的命名实体识别理念,将NER问题转化为判别式分类问题(序列标注问题)
典型算法:Maxent,CRF


基于深度学习的方法


基于预训练的方法


BERT模型重新设计了语言模型预训练阶段的目标任务,提出了遮挡语言模型Masked LM和下一个句子预测(NSP)。


Masked LM是在输入的词序列中,随机选15%的词进行[MASK],然后在这15%的词中,有80%的词被真正打上[MASK]标签,有10%的词被随机替换成任意词汇,10%的词不做任何处理。模型的任务是去正确预测带有MASK标签的词。相比于传统的语言模型,MaskedLM可以从前后两个方向预测这些带有MMASK标签的词。


NSP实质上是一个二分类任务,以50%的概率输入一个句子和下一个句子的拼接,标签属于正例:另外50%的概率输入一个句子和非下一个随机句子的拼接,对应标签为负例。


条件随机场(CRF)

定义:已知一组输入随机变量条件下,另一组输出随机变量的条件概率分布模型
特点:假设输出随机变量构成马尔可夫随机场
应用:可以应用于不同类型的标注问题,例如:


  • 单个目标的标注、序列结构的标注、图结构的标注

CRF和HMM


  • HMM:生成式模型,难以考虑复杂的特征
  • CRF:判别式模型,可以考虑复杂的特征

基于CRF的命名实体识别

采用CRF模型对每个汉字标注对应实体类型的BIO标记
例如:句子“白居易是中国杰出的诗人”


  • 观察序列:








    1







    2







    3







    4







    5







    6







    7







    8







    9







    10







    11




    白_1 居_2 易_3 是_4 中_5 国_6 杰_7 出_8 的_9 诗_{10} 人_{11}


    1234567891011
  • 标注序列:




    B





    P


    E



    R


    1



    I





    P


    E



    R


    2



    I





    P


    E



    R


    3




    O


    4




    O


    5




    O


    6




    O


    7




    O


    8




    O


    9




    O


    10




    O


    11




    B−PER_1 I−PER_2 I−PER_3 O_4 O_5 O_6 O_7 O_8 O_9 O_{10} O_{11}


    BPER1IPER2IPER3O4O5O6O7O8O9O10O11

特征函数:可以构建不同种类的特征


  • 上下文特征,词性,词本身等

CRF示例



LSTM+CRF命名实体识别(Lample, NAACL16)


每个句子按照词序逐个输入双向LSTM中,结合正反向隐层输出得到每个词属于每个实体类别标签的概
率,输入CRF中,优化目标函数,从而得到每个词所属的实体类别



BiLSTM层输入与输出


BiLSTM层的输入:每个词的向量表示
BiLSTM层的输出:当前时刻的输入属于每个实体类别标签的概率


如果模型不包含CRF层


CRF层为模型效果提升带来了什么?
CRF层可以加入一些约束来保证最终预测结果是有效的。这些约束可以在训练数据时被CRF层自动学习得到。
可能的约束条件有:
(1)句子的开头应该是“B-”或“O”,而不是“I-”;
(2)“B-label1 I-label2 I-label3…”,在该模式中类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的;
(3)“O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。


Emission得分


举例:





w


0




w_0


w0
被标记为B-Person的分数为1.5,





w


1




w_1


w1
被标记为B-Person的分数为0.2 。


Transition得分



CRF路径得分



可能的路径是
对于5个词组成的句子,其可能的类别序列为:


  1. START B-PERSON B-PERSON B-PERSON B-PERSON B-PERSON END
  2. START B-PERSON I-PERSON B-PERSON B-PERSON B-PERSON END …
  3. SRART B-PERSON I-PERSON O B-Oraganization O END … N) O O O O O O O

CRF损失函数


对于5个词组成的句子,假定类别标签有5个(B-Person, I- Person, B-Organization,
I-Organization, O),其可能的类别序列有55 = 3125种,即NN = 3125。


CRF损失函数计算示例







x


=


[



w


0



,



w


1



,



w


2



]



x = [w_0,w_1,w_2]


x=[w0,w1,w2]






L


A


B


E


L


=


[



l


1



,



l


2



]



LABEL = [l_1,l_2]


LABEL=[l1,l2]

Emission 得分

Transition 得分
全部路径得分计算方法

变量


previous:上一步的得分
obs:当前步骤的词的信息


假设句子只有1个词





w


0




w_0


w0


假设句子有2个词




{



w


0



,



w


1



}



{w_0,w_1}


{w0,w1}


  1. 扩展previous
  2. 扩展obs
  3. 对previous,obs 以及transition 得分求和
  4. 修改previous的值

    总路径得分

    假设句子有3个词





    w


    0



    ,



    w


    1



    ,



    w


    2




    w_0, w_1, w_2


    w0,w1,w2


1.扩展previous

2.扩展obs

3.对previous,obs 以及transition 得分求和

4.修改previous的值
全部路径得分


CRF-推断



BiLSTM层获得了发射(状态)得分矩阵,从CRF层得到了转移得分矩阵
假设句子只有1个词





w


0




w_0


w0

假设




o


b


s


=


[



x


01



=


0.2


,



x


02



=


0.8


]



obs=[x_{01}=0.2, x_{02}=0.8]


obs=[x01=0.2,x02=0.8]

previous=none
显然





w


0




w_0


w0
的最好标签是





l


2




l_2


l2


假设句子有2个词





w


0



,



w


1




w_0, w_1


w0,w1


0.5表示第二个词的标签应该是表示





l


1




l_1


l1
,




(


1


,


1


)


[


1


]



(1,1)[1]


(1,1)[1]
前一个标签应该是表示





l


2




l_2


l2
,




(


1


,


1


)


[


0


]


=


1



(1,1)[0]=1


(1,1)[0]=1
前一个标签
应该是





l


2




l_2


l2


假设句子有3个词





w


0



,



w


1



,



w


2




w_0, w_1, w_2


w0,w1,w2

0.9表示第三个词的标签应该是





l


2




l_2


l2





(


1


,


0


)


[


1


]


=


0



(1,0)[1]=0


(1,0)[1]=0
表示前一个标签应该是





l


1




l_1


l1





(


1


,


1


)


[


0


]


=


1



(1,1)[0]=1


(1,1)[0]=1
表示前一个标签应该是





l


2




l_2


l2


命名实体识别研究热点


  • 利用词(词典)信息
  • 嵌套命名实体识别
  • 匮乏资源下的命名实体识别
  • 细粒度命名实体识别

参考


东南大学课件
深蓝笔记