Maximum matching algorithm

在基于某些规则利用语料库对目标文本进行分词时,会使用最大匹配法(Maximum Matching, MM),也就是在匹配过程中,每次词汇的分割都将当前能够比配到的最长的字符串分割出来,即输入为一行未被划分的文本,输出为按照匹配规则分隔好的词汇。

最大匹配算法分为三个方向,分别是正向最大匹配算法(Forward MM, FMM)、逆向最大匹配算法(Backward MM, BMM)、双向最大匹配算法(Bi-directional MM,)

正向最大匹配算法

正向最大匹配算法是指从字符串起始端使用最大匹配算法进行分割。

首先从语料库中找到能够进行匹配的最长字符串长度L,也就是每次分割都要对这个最长长度进行检测。

当当前的文本前L个字符组成的字符串无法与语料库中的成分进行匹配时,就将检测的字符串长度-1,也就是检测前L-1长度的字符串,如果还是不行,就继续-1,如此循环。

此时,我们可以发现,整个算法过程是以能够匹配到的最大长度的字符串开始匹配,然后逐个排除并将目标长度减短1,从而得到最终的正向最大匹配结果。

1
2
3
4
5
6
7
8
9
从第一个字符开始
while 还有待检测字符
以理想最长匹配长度进行匹配
if 匹配成功
文本去除已匹配字符串
else if 匹配失败,但仍有减短长度的空间
匹配长度-1,重新匹配
else
将当前字符去除

逆向最大匹配算法

逆向最大匹配算法与正向相同,但是起始检测字符不是起始字符,而是结尾字符

1
2
3
4
5
6
7
8
9
从最后一个字符开始
while 还有待检测字符
以理想最长匹配长度进行匹配
if 匹配成功
文本去除已匹配字符串
else if 匹配失败,但仍有减短长度的空间
匹配长度-1,重新匹配
else
将当前字符去除

双向最大匹配算法

双向最大匹配算法是逆向最大匹配算法与正向最大匹配算法的结合,当正向效果较好时就采用正向效果,当逆向效果较好时便采用逆向效果,通常用分解出来的字符串数目进行效果的检验。

0%