HMM只是针对有向图来的,而CRF针对无向图,可以参考一下:Classical Probabilistic Models and Conditional Random Fields
先加一个例子,在一个持续时间段的图片中,里面如果有一张闭着的嘴部图片,那你应该怎么标注它?它是在吃饭,还是唱歌?必须将与它相邻的照片的标签信息考虑进来。
这就是条件随机场(CRF)大显身手的地方!
词性标注问题
比如这句话: “Bob drank coffee at Starbucks”
注明每个单词的词性后是这样的: “Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。
下面,就用条件随机场来解决这个问题。
以上面的话为例,有5个单词,我们将:
(名词,动词,名词,介词,名词)作为一个标注序列,称为l,
可选的标注序列有很多种,比如l还可以是这样:(名词,动词,动词,介词,名词),
我们要在这么多的可选标注序列中,挑选出一个最靠谱的作为我们对这句话的标注。
怎么判断一个标注序列靠谱不靠谱呢?
就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。
假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了动词后面还是动词的标注序列,要给它负分!!
上面所说的动词后面还是动词就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。
定义CRF中的特征函数
现在,我们正式地定义一下什么是CRF中的特征函数,所谓特征函数,就是这样的函数,它接受四个参数:
- 句子s(就是我们要标注词性的句子)
- i,用来表示句子s中第i个单词
- l_i,表示要评分的标注序列给第i个单词标注的词性
- l_i-1,表示要评分的标注序列给第i-1个单词标注的词性
它的输出值是0或者1,
0表示要评分的标注序列不符合这个特征,
1表示要评分的标注序列符合这个特征。
Note:这里,我们的特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。
上式中有两个求和,外面的求和用来求每一个特征函数f_j评分值的和,里面的求和用来求句子中每个位置的单词的的特征值的和。
对这个分数进行指数化和标准化,我们就可以得到标注序列l的概率值p(l|s),如下所示:
原文在这里[http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/]
参考链接:https://www.jianshu.com/p/55755fc649b1