自然语言处理之分词

一个良好的分词系统应由词典和统计两套系统组成。后者为前者构造可持续更新的词典,识别新词,同时对消岐部分进行匹配。在分词过程中,好的词典很重要,其次算法要跟着需求走,不同需求选择不同算法,比如有些要求速度快,与兴趣相关,此时算法是次要的,而有些需求注重的是精度。

中文分词难点:未登录词和切分歧义。

中文分词算法大概分为两类:基于字符串匹配,集扫描字符串,若发现字符串的子串和词相同,就算匹配。例如mmseg正向最大匹配策略等。这类算法速度快,时间复杂度是0(n),实现简单,但是对歧义和未登录词处理效果不太明显。基于统计及机器学习的分词方式。这类分词基于人工标注的词性和统计特征,对中文进行建模。对标注好的预料进行训练。在分词阶段,通过模型计算各种分词出现的概率,概率最大的分词即为最终结果。常见模型如CRF、HMM。这类算法能很好的解决歧义和未登录问题,效果比前一类好,但是需要大量人工标注数据,分词速度较慢。基于神经网络的分词方式。这是未来的趋势,目前比较看好的模型是RNN循环神经网络,可以解决标注量的问题,但是可能存在分词速度慢的问题,后续将确认下。

现有方法:基于词典的匹配:前向最大匹配,后向最大匹配;基于字的标注:最大熵模型,条件随机场模型,感知器模型;其他方法:与词性标注集合,与句法分析结合。

常见分词工具(以下来自知乎,具体介绍将会在后学章节展开):

1、mmseg。是我自己最喜欢的分词方法,简单、高效、实用、效果还不错。http://technology.chtsai.org/mmseg/

我给它起了个名字,叫做“3段回溯式方法”,即每次从一个完整的句子里,按照从左向右的顺序,识别出多种不同的3个词的组合;然后根据下面的4条消歧规则,确定最佳的备选词组合;选择备选词组合中的第1个词,作为1次迭代的分词结果;剩余的2个词继续进行下一轮的分词运算。采用这种办法的好处是,为传统的前向最大匹配算法加入了上下文信息,解决了其每次选词只考虑词本身,而忽视上下文相关词的问题。4条消歧规则包括,

1)备选词组合的长度之和最大。

2)备选词组合的平均词长最大;

3)备选词组合的词长变化最小;

4)备选词组合中,单字词的出现频率统计值最高。

2、CRF方法是目前公认的效果最好的分词算法。但,具体效果是否好,也依赖于你使用的训练模型。http://nlp.stanford.edu/software/segmenter.shtml

3、我认识一个做搜索解决方案的朋友,他们公司提供了CRF和mmseg的开源实现http://www.coreseek.cn/opensource/

4、其实还可以使用专业公司的解决方案,比如海量和中科院分词的收费版本,也花不了多少钱。集中精力找到你自己产品独特的价值所在。

5、最大熵模型

自然语言处理之分词_第1张图片
豆丁网自然语言处理及分词概况http://www.docin.com/p-1277719918.html讲的很有意思

刚开始系统的研究自然语言处理的内容,一定存在一些不足,望大家可以随时纠错交流。

你可能感兴趣的:(自然语言处理之分词)