写在前面的话
本文参考《Python自然语言处理实战 核心技术与算法》,一本不可多得的自然语言处理入门书籍。
MM、RMM、Bi_MM都是基于规则分词的算法,通过匹配所持有的字典,进行分词。分词结果取决于字典的完整程度和匹配方式。根据SunM.S 和Benjamin K.T(1995)的研究表明,中文中90.0%左右的句子,MM和RMM分词结果重合且完全正确,9.0% 的句子两种方法分词结果不一样,但其中必有一个是正确的,另外1.0%两种方法切分虽重合但却是错误的结果,或者切分不重合都是错的。
MM(Maximum Match Method)最大匹配
算法思想:MM也称正向最大匹配,以字典中词的最大长度为匹配窗口大小,例如 dic = [‘南京’, ‘南京市’, ‘南京市长’, ‘长江’, ‘长江大桥’, ‘大桥’, '桥],字典中词的最大长度为4,则匹配窗口最大长度为4,即从处理文本的前4个字符串作为匹配字段。若首次匹配成功,则匹配窗口向后滑动4个字符位置,继续匹配。若匹配不成功,则缩小匹配字符串大小一位,继续匹配,匹配成功,从下位开始继续向后,不成功,继续减小所匹配字符串的长度。
算法实现:参考书中算法(基于python3)
class MM(object):
"""maximum Match Method for NLP"""
def __init__(self, window_size=3):
super(MM, self).__init__()
self.window_size