基本概念:
最大匹配法【Maximum Matching】MM
最大匹配是指以词典为依据,取词典中最长单词的字数量作为截取词的起始匹配长度,将截取后的最大长度的词与词典中的词进行比对(为提升扫描效率,还可以根据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描匹配), 直到还剩一个单字则终止,如果该单字无法切分,则作为未登录词处理(没有被收录在分词词表中但必须切分出来的词,包括各类专有名词(人名、地名、企业名等)、缩写词、新增词汇等等)
正向最大匹配法
分词思路:
在词典中进行扫描,尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配。
分词步骤:
词典中最长的单词为n个,那么最大匹配的起始子串字数也为 n个
(1)扫描字典,测试读入的子串是否在字典中
(2)如果存在,则从输入中删除掉该子串,重新按照规则取子串,重复(1)
(3)如果不存在于字典中,则从右向左减少子串长度,重复(1)
正向最大匹配法
从左往右地进行最大匹配法。尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配
栗子:
待切分文本 计算语言学课程有意思
词典(表) {"计算", "计算语言学", "课程", "有", "意思"}(真实的词表中会有成千上万个平时我们使用的已经分好的词语)
匹配过程
确定最大匹配的起始子串字数为词典中最长单词的长度5
输入 计算语言学课程有意思
第一轮 取子串“计算语言学”,正向取词,如果匹配失败,每次去掉待匹配子串最后面的一个字
第1次. “计算语言学”,扫描词典表,匹配,输出“计算语言学”,输入变为“课程有意思”
第二轮 取子串“课程有意思”
第1次. “课程有意思”, 扫描词典表,不匹配,子串长度减一变为“课程有意”
第2次. “课程有意”, 扫描词典表,不匹配,子串长度减一变为“课程有”
第3次. “课程有”, 扫描词典表,不匹配,子串长度减一变为“课程”
第4次. “课程”, 扫描词典表,匹配,输出“课程”,输入变为“有意思”
第三轮 取子串“有意思”
第1次. “有意思”, 扫描词典表,不