分词算法——最大匹配
1.前向最大匹配
例句:我们经常有意见分歧
词典:[我们, 经出, 有, 有意见, 意见, 分歧]
在前向最大匹配算法中,我们需要设置一个参数,窗口大小 max_len,其匹配过程就是利用这个窗口,从句子第一个字开始扫描,假设max_len=5, 过程如下:
- 【我们经常有】意见分歧
此时,获取到【我们经常有】这个文本,将【我们经常有】放到词典中去查找,发现并没有【我们经常有】这个词,然后进行第二步,将【我们经常有】减少一个字,变成【我们经常】这个文本,再放到词典进行匹配,发现词典中没有【我们经常】这个词,再继续减少一个字,变成【我们经】,依旧无,继续减少,变成【我们】,将【我们】放到词典进行匹配,发现有这个词,好,那第一个词就切分成功了。然后继续从【我们】这个词后面在进行窗口滑动,执行以上过程。 - 我们【经常有意见】分歧
同步骤一的过程,会得到【经常】这个词,再继续 - 我们经常【有意见分歧】
进行上述分词过程,得到【有意见】 - 我们经常有意见【分歧】
进行上述分词过程,得到【分歧】
到此,分词完成,【我们经常有意见分歧】这句话被分成【我们、经常、有意见、分歧】等词,可以看出,前向匹配算法是尽量单个词匹配最多个字符。
2.后向最大匹配
例句:我们经常有意见分歧
词典:[我们, 经出, 有, 有意见, 意见, 分歧]
后向匹配与前向匹配很相似,只不过方向相反而已,依旧假设max_len=5,过程如下:
- 我们经常【有意见分歧】
获取到文本【有意见分歧】,到词典中寻找【有意见分歧】,查无此词,从前方减少一个字,变为【意见分歧】,查无,变为【见分歧】,查无,变为【分歧】,查询有【分歧】,获取词【分歧】,继续下一步 - 我们【经常有意见】分歧
获取文本【经常有意见】,经上述处理步骤,获取词【有意见】 - 【我们经常】有意见分歧
获取文本【我们经常】,经上述处理步骤,获取词【经常】 - 【我们】经常有意见分歧
获取文本【我们】,经上述处理步骤,获取词【我们】
到此,分词完成,【我们经常有意见分歧】这句话被分成【分歧、有意见、经常、我们】等词.

浙公网安备 33010602011771号