http://langiner.blog.51cto.com/1989264/379166
条件随机场 (CRF) 分词序列谈之一
Langiner
判别式机器学习技术来解决分词问题,其中判别式机器学习技术主要代表有条件随机场,最大熵/隐马尔科夫最大熵、感知机,支撑向量机等,有关它们的相同点与不同点以后有机会在谈,今天主要谈利用随机场解决分词问题
条件随机场(Conditional Random Fields)由John Lafferty提出并应用于自然语言处理领域,主要用于序列标注问题,如分词、实体识别、词性标注(当然词性数目相对比较小的情况下)、浅层句法分析等问题。
判别式机器学习技术解决分词问题基于由字构词理念,将分词问题转化为分类问题,通过定义每个字的词位信息(每个字在词中的位置)来确定字类别的序列预测,而词位信息可以定义为下面其中任何一种
两类(词首和词中)、三类(词首、词中和词尾)、四类(词首、词中、词尾,单字词)等等,一般而言,类别越多,字的区别能力越强,分类越精确,但是分类空间越大,模型也越大,解码空间越大,导致解码速度也越慢,实际系统中,三类别(词首、词尾和词中)是一个很好的平衡。
互联网上开源的随机场项目很多,最典型和使用最多的是CRF++,里面有完整的源代码和应用实例,通过该软件,我们可以方便学习和使用。CRF++开源代码最大问题是只有Linux版,考虑到Linux环境下,跟踪调试不方便,如果在Windows下通过建立Visual C++或者Visual Studio工程,通过跟踪调试,更加有效地学习该算法,本人将自己的学习实践中,将Linux版本移植到Windows平台上,并将其开源在SourceForge平台上(CRF中文分词开源版)。
利用哪些特征业绩如何利用这些特征是机器学习算法性能关键,中文分词主要使用字的上下文知识,上下文范围可以是3字、5字和7字,同时考虑到由字构词处理长词比较弱,可以考虑引入仿词模式、成语/习语等特征,有研究表示,加入核心词典会提高词典词的分类效果,这需要权衡,如果训练语料覆盖核心词典比较全面,核心词典的构词知识往往在语料中已经包含,但是如果训练语料对于核心词覆盖不够,可以考虑加入核心词的构词知识,但是这对核心词典有比较高的要求,我们认为北大计算语言研究所发布的GKB词典可以作为核心词典使用,如果没有比较好的核心词典,这个核心词的构词知识还是不要加入为好。
本文出自 “专注自然语言技术” 博客,请务必保留此出处http://langiner.blog.51cto.com/1989264/379166