crf进行词性标记详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

crf进⾏词性标记详解
关于crf内容我看到了⼏篇写的不错的博客,具体链接如下,在此记录⼀下,仅做学习
CRF可以应⽤于对⼀串序列进⾏⾃动标注的问题。

例如对⽂字序列进⾏词性标,即要⾃动判断句⼦中每个单词的词性。

在这样的问题中,每⼀个词的标注结果,不仅依赖于该词语本⾝,还会依赖于其他词语的标注结果。

CRF可以考虑到这样的依赖关系。

本⽂会以⼀个词性标注的应⽤为例,介绍CRF所解决的问题以及CRF模型的建⽴,学习与预测过程。

任务描述
词性标注(part-of-speech tagging),其⽬标就是对⼀个句⼦即⼀串单词的序列进⾏打标签(tagging),标注每个词的词性(ADJECTIVE, NOUN, PREPOSITION, VERB, ADVERB, ARTICLE)。

我们假设在词性标准任务中,每个单词的词性不仅依赖其本⾝,⽽且也会依赖其前⼀个单词(这⾥做了简化,实际上每个单词的标注结果依赖更多东西)。

下⾯,我将针对对这个问题,建⽴⼀个简单的线性链条件随机场(linear-chain CRF)。

并介绍这个CRF是如何表⽰上述的依赖关系,以及如何利⽤这个CRF来求解这个问题。

实际上,和其他的统计机器学习模型⼀样,我们有三个任务要完成:
1)指定模型参数(建⽴模型)
2)估计这些参数(学习)
3)利⽤这些参数进⾏预测(预测)
第⼀个任务——建⽴模型
特征函数
为了评价序列中每个单词属于各个tag的可能性,我们要根据单词的位置定义⼀系列特征函数(feature function),在线性链CRF模型中,特征函数表⽰如下:
其中表⽰序列,表⽰该词在序列中的位置,表⽰对该单词标注的词性。

每个特征函数表⽰的是当位置为时,当前位置单词标注为且它前⼀个单词标注为时的"可能性",不过这个"可能性"并不是⼀个概率,它通常为0或1。

例如,可以定义如下特征函数:
...
可以看到每⼀个特征函数的值只与当前位置和前⼀个位置有关,因此,可以说它有能⼒表⽰出我们之前所说的依赖关系。

模型
有了特征函数,我们就可以开始建⽴模型了。

所谓的建模,其实就是要表⽰出当给定句⼦,也就是单词序列时,整个句⼦标注为的概率,即条件概率:
也就是当给定的情况下,的联合概率
权重
每个特征函数对整体的影响应该是不同的,因此,需要为每个函数加上权重,权重越⼤,则该特征函数对标注结果的影响越⼤。

那么
每个特征函数的权重应该取多少呢?实际上这些权重就是我们所说的参数了,⽽这些参数如何取值就是我们的第⼆个任务——参数学习,这个会在下⼀节讲。

⾮归⼀化概率
每个特征函数表⽰的是每个位置的可能性,那么整个句⼦被标注为的可能性当然就是各个位置的可能性的乘积。

不过为了⽅便计算,我们使⽤指数形式来表⽰特征:。

这样,乘法就变成了加法:
参数模型
此时,我们的模型已经呼之欲出了,
现在所表⽰的"可能性"还不是⼀个概率,应该要做归⼀化处理,使它的值在0到1之间,因此引⼊归⼀化项:
这样,我们所需要的条件概率就得到了:
其中与都是向量,
⼩结
这就是我们的线性链CRF参数模型,它有能⼒表⽰这样的依赖关系:每个位置的标注结果不仅依赖于该位置的单词本⾝,同时还依赖前⼀个位置的标注结果。

同时我们还指定了模型的参数为每个特征函数的权重。

第⼆个任务——学习
⽬标
学习的⽬标其实就是找到⼀组参数,在训练数据序列和标注上,使条件概率最⼤化,即找到 ,使:
学习的⽅法有很多,例如梯度下降,最⼤似然估计等,这⾥就不多说了。

这样学习的任务看似就完成了,不过等等!问题好像并不是这么简单。

计算问题
我们再看看:
看到最左边的求和:,这⾥其实写得简单了,是⼀个向量,所以其完整形式应该是:
即在每个位置上都有种可能的标注结果,那么长度为的句⼦,就有种情况,即使每个单词只分两种词性,长度为15个单词的序列,其计算量都有,因此想要直接计算是很难的。

前向-后向算法
我们所研究的对象,通常都是很长的序列,根据上⾯所说,对于这种⾼维数据,想要直接计算是很难的,因此,在线性链CRF中,为了得到需要前向-后向算法。

对于前向-后向算法,在这⾥先不做过多说明,在之后的⽂章中会详细介绍。

⼩结
这样,我们第⼆个任务也搞定了。

参数的学习就是根据训练数据找到能使条件概率最⼤化的参数;
但是由于数据维度⾼,计算量很⼤,因此会使⽤前向-后向算法来计算线性链条件随机场的归⼀化项。

第三个任务——预测
现在我们已经有了模型,并且在已知的数据集上得到了该模型最优的参数,接下来就是根据这个模型及参数对未知的数据进⾏推测了。

具体到我们的词性标注问题,就是给定⼀个已知句⼦,但是其标注未知,通过模型推测每个单词可能性最⼤的词性,即找到最优的⼀组,使:
计算问题
这回我们谨慎⼀点,先看看计算有没有问题。

把公式展开:
概率最⼤的⼀个,⽽对于每⼀个,都是⼀样的,因此原问题变成:" alt="我们只是要找到能使概率最⼤的⼀个,⽽对于每⼀个,都是⼀样的,因此原问题变成:
太好了,不⽤计算了。

不过为了找到最优的,总不可能真的把每⼀个都试⼀遍吧,这样计算量仍然很⼤。

那么维特⽐算法就是为了解决上述问题的,它利⽤了动态规划的思想,不过具体算法我们也先暂时不说,会在后⾯的⽂章⾥详细说明。

⼩结
这样,我们知道了如何利⽤建⽴好的模型以及学习好的参数,对词性未知的句⼦进⾏标注了。

同时,为了得到这个最优的标注,需要使⽤维特⽐算法
总结
⾄此,我们通过⼀个词性标注的例⼦,了解了:
1. CRF适⽤于这样的情况:对于多个位置的标注,每⼀个位置的标注结果,不仅与其本⾝有关,⽽且依赖于其他位置的标注结果。

2. CRF与其他统计机器学习模型⼀样,可以分为三个部分,分别是:
1. 模型的建⽴
2. 参数的学习
3. 推测
3. 对于模型的建⽴,我们使⽤了特征函数,它保证了模型拥有表⽰我们所需的依赖关系的能⼒。

4. 对于模型参数的学习以及结果的预测,发现⾼维数据带来很⼤的计算量,因此需要⼀些算法来简化计算。

但是,还有⼀些问题需要探索:
1. CRF是⼀种概率图模型,那么什么是概率图模型?从概率图的⾓度我们怎么看条件随机场?其他的概率图模型⼜能解决什么样的问
题?
2. 我们在这⾥说的都是线性链条件随机场(Linear Chain CRF),那么其他形式的CRF是怎样的,它们能解决什么问题?
3. 在线性链CRF中,为了解决计算问题,在学习和预测中所⽤到的前向-后向算法以及维特⽐算法分别是什么?
4. 我们现在看到的是CRF在NLP⽅⾯的应⽤,那么在图像处理中,如何利⽤CRF提⾼预测效果?。

相关文档
最新文档