python比较中文字符串相似度_python比较字符串相似度 使用difflib 或 Levenshtein_数据分析_拉克哈尼...

import difflib

import Levenshtein

r=difflib.SequenceMatcher(None, '拉克', '拉克哈尼').ratio()

print (r) #0.6666666666666666

r=difflib.SequenceMatcher(None, '拉克', '拉克哈尼').quick_ratio()

print (r) #0.6666666666666666

r=difflib.SequenceMatcher(None, '拉克', '拉克哈尼').real_quick_ratio()

print (r) #0.6666666666666666

#SequenceMatcher中也可以放数组,更多SequenceMatcher的参数请看官方文档

t=['拉克','哈尼']

t1=['哈尼','拉克']

r=difflib.SequenceMatcher(None, t, t1).ratio()

print (r) #0.5

r= Levenshtein.ratio('拉克', '拉克哈尼')

print (r) #0.6666666666666666

这里解释一下difflib关于

difflib 的 3个api

ratio

quick_ratio

real_quick_ratio

官方文档在这里因为是英文的我直接贴出来翻译过的

ratio()

将序列相似度的度量值作为范围0,1中的浮点数返回。

其中T是两个序列中元素的总数,M是匹配数,这是2.0 * M / T.注意,如果序列相同,则为1.0;如果它们没有共同之处,则为0.0。

如果get_matching_blocks()或get_opcodes()尚未被调用,则计算起来会很昂贵,在这种情况下,您可能首先尝试使用quick_ratio()或real_quick_ratio()来获得上限。

quick_ratio()

相对较快地返回ratio()的上限

real_quick_ratio()

很快返回ratio()的上限。

尽管quick_ratio()和real_quick_ratio()总是至少与ratio()一样大,但由于不同的近似级别,返回匹配与总字符比率的三种方法可能会给出不同的结果:

这里我常用 ratio() 和 quick_ratio()

关于Levenshtein

使用pip或者在Anaconda安装时注意它的包的名字是 python-Levenshtein

包的名字和import的时候名字不一样

使用Levenshtein.ratio()函数即可

我常使用比较字符串近似值,根据字符串相同或者不同的程度,用来简单分析或者归类字符串或者数据。

你可能感兴趣的:(python比较中文字符串相似度_python比较字符串相似度 使用difflib 或 Levenshtein_数据分析_拉克哈尼...)