python nlp笔记与学习

python nlp 分词算法 正向与方向匹配法

2019-02-28  本文已影响0人  雨夜剪魂

正向算法的思路

假设一段语句为:

南京市长江大桥

字典为:

南京

长江

大桥

市长

南京市

南京市长

长江大桥

那么, 在正向匹配中,需要从左到右,截取最大字典长度(也就是长江大桥等为4长度)的字符, 截取后,与字典匹配,如果找到了该词,则移动索引到该词后面。如果没找到就从左到右,截取第二最大长度的字符,截取后,再与字典进行匹配。找到该词后,移动到后面,再按照此方法递归查找匹配

因为查找是从左到右进行匹配的,索引必须就是0到字符长度这样的范围,这个为正方向,所以名为,正向匹配法

那么,在反向匹配中,需要从右到左,截取最大字典里面词语最大的长度的字符,截取后,与字典匹配,如果找到该词,则移动到它的签名。如果没有找到,就截取第二大长度的字符,再与字典进行匹配。

在这个例子中,正向匹配的结果为['南京市长', '江', '大桥'],形成了3个词,那么方向匹配方法呢,['南京市', '长江大桥'], 2个词。

这里,就可以看出反向匹配法的效果比正向匹配要好些。这个原因就是,汉语在进行用语的时候,主体会在前,宾语在后,所以从右至左,效果比较好。比如,通常的语句中——我在天安门广场吃炸鸡等。从左至右,往往会忽略后面的重要词,导致只与前面的匹配了。但也有其他方向歧义导致 效果也不理想。

最好的方法就是使用双向匹配,获取两种方向的分词,统计分词结果少的(说明分词信息读),比如上面一个是3个词,一个是2个词,很明显的,2个词的涵盖的信息更多。

上一篇下一篇

猜你喜欢

热点阅读