这是一个基于词典的双向最大匹配的中文分词程序。 关于中文分词的一些基本介绍,可以看这篇博客《中文分词方法总结》。这里就不再进行详细介绍了。 双向最大匹配方法
双向最大匹配方法是一种基于词典的分词方法。基于词典的分词方法是按照一定策略将待分析的汉字串与一个“大机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。
按照扫描方向的不同:正向匹配和逆向匹配
按照长度的不同:最大匹配和最小匹配 正向最大匹配思想FMM
1.从左向右取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。
2.查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。 逆向最大匹配算法BMM
该算法是正向最大匹配的逆向思维,匹配不成功,将匹配字段的最前一个字去掉,实验表明,逆向最大匹配算法要优于正向最大匹配算法。
双向最大匹配法(Bi-directction Matching method,BM)
双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。据SunM.S. 和 Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最大匹配法和逆向最大匹配法切分不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因所在。
在本文实现的方法中,是综合考虑了正向和逆向最大匹配的结果,加入了一些启发式的规则来对分词结果进行进一步消歧的。
启发式规则:
1.如果正反向分词结果词数不同,则取分词数量较少的那个。
2.如果分词结果词数相同
a.分词结果相同,就说明没有歧义,可返回任意一个。
b.分词结果不同,返回其中单字较少的那个。