条件随机场CRF

简介

在命名实体识别(后简称NER)中,迄今绝大多数模型都使用神经网络和条件随机场结合的方法实现。所以,需要稍微了解一下CRF的原理。

NER是自然语言处理中一个非常基础的任务,简单的说,就是识别句中的成份。比如"小明去学校",其中“小明”是人名,“去”是动词,“学校”是地点。如果把字当作处理单元,“学”字是动词还是地点,不仅取决于该字的意思,还取决于它的上下文。

CRF可用于解决序列问题(前后状态存在相关性),比如根据第i-1个字来判断第i个字所充当的成份。当CRF与神经网络共同工作时,神经网络负责提取词义,CRF将词义与上下文结合,以实现更准确地判断。

原理

这里涉及很多概念,比如最大团、马尔可夫性、马尔可夫链等等,本文不做展开,以免过长、过于复杂。

直奔主题,CRF最大的特点是它使用了特征函数。可以把特征函数想象成对输入x提取多个特征,每个特征函数提取一个特征。

\sum_i^T\sum_k^M\lambda_kf_k(x,y_{i-1},y_i,i)
序列中共有T个时间步(NER句中有T个字),用i遍历每一时间步(每个字),共有M个特征函数(提取M个特征),用k遍历每个特征函数,特征函数用f表示,其权重用λ表示,不同特征函数的权重各不相同。特征函数是事先定义好的,权重是训练中学出来的。

特征函数的输入包含观测序列x(NER里的句子),状态序列y(成份)的第i-1和第i个位置,以及具体位置的索引i。

上面公式也常常表示成:

\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)
它把前式中的特征函数f拆成了两部分,第一部分是当前项与上下文的关系,第二部分是具体词x与词的成份y之间的关系。两部分有各自的特征函数及权重。

我们看到CRF写成啥样的都有,但无论用什么字符表示,拆成一部分或两部分,其原理都是一样的。

最常见的CRF公式如下,它用于计算:文本序列x的条件下出现成份序列y的概率。

P(y|x)=\frac{1}{Z(x)}exp\left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)\right)
其中,Z(x)用于归一化:

Z(x)=\sum_yexp\left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)\right)
公式也被简化成:

P_w(y|x)=\frac{exp(w \cdot F(y,x))}{Z_w(x)}
其中的w是训练求得的模型参数。这么看,就像是一个求参数w的回归问题。

隐马尔可夫模型与条件随机场

隐马尔可夫模型(HMM)与条件随机场模型(CRF)常放在一起比较,这是由于它们实现的功能基本一致。

HMM 公式如下:
p(y,x) = \prod_{t=1}^Tp(y_t|y_{t-1})p(x_t|y_t)
对比公式可以看出:

  • 相同:二项者考虑了前项y-1对后项y的影响,以及x对y的影响。
  • 差异:HMM求联合概率p(y,x),CRF求条件概率p(y|x)。
  • 差异:HMM仅考虑x->y,yi-1->yi的转移关系。
  • 差异:CRF引入了事先设定好的特征函数,计算特征函数时还加入了整个x,考虑到了整句上下文对该点成份的影响。

参考

如何用简单易懂的例子解释条件随机场(CRF)模型?它和HMM有什么区别?
NLP --- 条件随机场CRF(预测算法详解)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值