您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Python简洁实现文本相似度算法(levenstein)

2022/4/25 11:37:49发布76次查看
python中有现成的文本相似度算法levenstein距离(编辑距离)的算法包:python- levenshtein,可以直接使用:
python-levenshtein算法库
distance函数计算编辑距离,规则是:添加、删除和替换一个字符距离都+1;
ratio函数计算levenstein比,其中替换一个字符距离变为2。这个也是我们需要实现的。
但是因为一些原因,有个外部程序调用第三方python包有点问题,所以需要用python写一个简单的levenstein距离实现算法。本着拿来主义在网上找了找,好多程序执行有问题,所以自己重写了一下:
简洁版levenshtein.ratio算法
根据百度百科“编辑距离”了解一下具体算法(不要嘲笑),维基百科“levenshtein distance”也一样:
假设比较“coffee”和‘cafe’的相似度:
① 初始化一个5*7矩阵:
图片来自百度百科
② 除了第一行和第一列,分别计算剩下的值,例如dij取3个值得最小值:正上方的值distance_matrix(i-1)j+1,左方相邻值distance_matrixi(j-1)+1,四方格对角值distance_matrix (i-1)(j-1)+2(如果是只计算编辑距离的话,这里是+1,因为我们需要levenshtein比,所以这里是+2);
③ 最终结果为矩阵右下角的值,结果为4。也就是cafe中a替换为o,插入f和e,变为coffee;levenshtein比为4/(4+6)=0.6。
本算法对于字符串相似度比较比较适合,而对于文章的相似度比较则较多使用向量空间模型vsm,例如td-idf算法。先进行分词再通过词频向量,利用向量余弦值计算相似度。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product