基于条件随机场的命名实体识别

我们知道HMM将分词作为字标注问题来解决,其中有两条独立性假设:一个是输出观察值之间严格独立,二是状态的转移过程中当前状态只与前一个状态有关(一阶马尔可夫型)。通过这两种假设,使得HMM的计算成为可能。但是实际应用中多是交互特征表现出来的,同时观察元素之间存在长程相关性,这时HMM就收到了制约。

这时的条件随机场,其主要思想来源于HMM,也是一种用来标记和切分序列化数据的统计模型。但是这里要注意的是:条件随机场是在给定观察的标记序列下,计算整个标记序列的联合概率,而HMM是在给定当前状态下,定义下一个状态的分布。

条件随机场的定义:设 X = ( X 1 , X 2 , X 3 . . . , X n ) X=(X_1,X_2,X_3...,X_n) X=(X1,X2,X3...,Xn) Y = ( Y 1 , Y 2 , . . . , Y n ) Y=(Y_1,Y_2,...,Y_n ) Y=(Y1,Y2,...,Yn)是联合随机变量,若随机变量 Y Y Y构成一个无向图 G = ( V , E ) G=(V,E) G=(V,E)表示的马尔可夫模型,则条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)称为条件随机场(Conditional random field,CRF),即:
P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X,Y_w, w \neq v)=P(Y_v|X,Y_w, w \sim v) P(YvX,Yw,w̸=v)=P(YvX,Yw,wv)
其中 w ∼ v w \sim v wv表示图 G = ( V , E ) G=(V,E) G=(V,E)中与结点 v v v有边连接的所有结点, w ≠ v w \neq v w̸=v表示结点 v v v以外的所有结点。

简单举例说明:现有若干个位置组成的整体,当给某一个位置按照某种分布,随机赋一个值后,该整体就被称为随机场。

这里假设定义了如下的地名识别规则:

标注含义
B当前词为地理命名实体的首部
M当前词为地理命名实体的内部
E当前词为地理命名实体的尾部
S当前词单独构成地理命名实体
O当前词不是地理命名实体或组成部分

当有由n个字符组成的NER的句子,每个字符的标签都在上面的标签集合 ( B , M , E , S , O ) (B,M,E,S,O) B,M,E,S,O中,当为每个字符选定标签后,就形成了一个随机场,此时如果加一些约束(如所有字符的标签只和相邻的字符标签有关),那么就转换成了马尔可夫随机场问题。在马尔可夫随机场的基础上,这时如果有 X X X Y Y Y两种变量, X X X一般是给定的, Y Y Y是在给定 X X X条件下的输出,上述的例子中, X X X是字符, Y Y Y是标签, P ( Y ∣ X ) P(Y|X) P(YX)就是条件随机场。

在实际自然语言处理中,多假设变量X和Y具有相同的结构,即

一般将这种结构称为线性链条件随机场,其定义如下:
X = ( X 1 , X 2 , X 3 . . . , X n ) X=(X_1,X_2,X_3...,X_n) X=(X1,X2,X3...,Xn) Y = ( Y 1 , Y 2 , . . . , Y n ) Y=(Y_1,Y_2,...,Y_n) Y=(Y1,Y2,...,Yn)均为线性链表示的随机变量序列,若在给定的随机变量序列X的条件下,随机序列变量Y的条件概率分布 p ( Y ∣ X ) p(Y|X) p(YX)构成条件随机场,且满足马尔可夫性:
P ( Y i ∣ X , Y 1 , Y 2 , . . . Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) P(Y_i|X,Y_1,Y_2,...Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}) P(YiX,Y1,Y2,...Yn)=P(YiX,Yi1,Yi+1)
则称 P ( Y ∣ X ) P(Y|X) P(YX)为线性链的条件随机场。
这里线性链CRF不仅考虑了上一个状态 Y i − 1 Y_{i-1} Yi1,还考虑了后续的状态结果 Y i + 1 Y_{i+1} Yi+1,下面各网络的对比:
在这里插入图片描述

从上图可以看出HMM是一个有向图,而线性链CRF是一个无向图。因此HMM处理时,每个状态依赖上一个状态,而线性链CRF依赖于当前状态的周围结点状态。

这里以地名识别为例,对句子“我来到上海”进行标注,正确的标注为“我/O 来/O到/O上/B海/E”。采用CRF来进行解决,那么(O,O,O,B,E)是其中一种标注序列,(O,O,O,M,E)也是一种选择,类似的还有很多,在NER任务中就是在如此多的可选择序列中,找出最靠谱的句子的标注。

下面就是如何找到最靠谱的句子标注?
假如给每个标注序列打分,分值代表标注序列的靠谱程度,越高代表越靠谱,这里的给每个标注序列打分的规则就是特征函数,可以定义很多条特征函数,在CRF中,定义一个特征函数集合,然后根据这个特征函数集合给序列进行打分,据此选出最靠谱的标注序列。

在CRF中有两种特征函数,分别是转移函数 t k ( y i − 1 , y i , i ) t_k(y_{i-1},y_i,i) tk(yi1,yi,i)和状态函数 s l ( y i , X , i ) s_l(y_i,X,i) sl(yi,X,i)。其中 t k ( y i − 1 , y i , i ) t_k(y_{i-1},y_i,i) tk(yi1,yi,i)依赖于当前和前一位置,表示从标注序列中位置 ( i − 1 ) (i-1) (i1)的标记 y i − 1 y_{i-1} yi1转移到位置 ( i ) (i) (i)上的标记为 y i y_i yi的概率。 s l ( y i , X , i ) s_l(y_i,X,i) sl(yi,X,i)依赖于当前位置,表示标记序列在位置 i i i上标记为 y i y_i yi的概率。并通过取值为1或者0,表示符不符合该条规则的约束。

下面是完整的线性链CRF参数化形式:
P ( y ∣ x ) = 1 Z ( x ) e x p ( ∑ i , k λ k t k ( y i − 1 , y i , i ) + ∑ i , l u l s l ( y i , X , i ) ) P(y|x)=\frac{1}{Z(x)}exp(\sum _{i,k} \lambda_kt_k(y_{i-1},y_i,i)+\sum _{i,l}u_l s_l (y_i,X,i)) P(yx)=Z(x)1exp(i,kλktk(yi1,yi,i)+i,lulsl(yi,X,i))

其中: Z ( x ) = ∑ y e x p ( ∑ i , k λ k t k ( y i − 1 , y i , i ) + ∑ i , l u l s l ( y i , X , i ) ) Z(x)=\sum _y exp(\sum _{i,k} \lambda_kt_k(y_{i-1},y_i,i)+\sum _{i,l}u_l s_l (y_i,X,i)) Z(x)=yexp(i,kλktk(yi1,yi,i)+i,lulsl(yi,X,i))

Z ( x ) Z(x) Z(x)是规范化因子,其求和是在所有可能的输出序列上求和。 λ k \lambda_k λk u l u_l ul为转移函数和状态函数对应的权值。

在经过化简和合并将上式改为下式:
P ( y ∣ x ) = 1 Z ( x ) e x p ( ∑ j ∑ i w j f j ( y i − 1 , y i , x , i ) ) P(y|x)=\frac{1}{Z(x)}exp(\sum _{j} \sum _{i} w_j f_j(y_{i-1},y_i,x,i)) P(yx)=Z(x)1exp(jiwjfj(yi1,yi,x,i))
其中, f j ( y i − 1 , y i , x , i ) f_j(y_{i-1},y_i,x,i) fj(yi1,yi,x,i) t k ( y i − 1 , y i , i ) t_k(y_{i-1},y_i,i) tk(yi1,yi,i) s l ( y i , X , i ) ) s_l (y_i,X,i)) sl(yi,X,i))的统一符号表示。

使用CRF做命名实体识别时,目标是求 a r g m a x y P ( y ∣ x ) arg \underset{y}{max}P(y|x) argymaxP(yx)。该问题的求解和HMM求解最大可能序列路径一样,也是采用Veterbi算法。相比于HMM,CRF能够捕捉全局的信息,并能进行灵活的特征设计。

以上只是CRF的简介,要详细了解理论推导可以参考下面两个链接:
https://www.cnblogs.com/Determined22/p/6750327.html
https://www.cnblogs.com/Determined22/p/6915730.html
以上是某大牛的讲解,值得多读几遍。

实战可以参考:
CRF++地名识别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值