python Levenshtein—计算字符串相似性
参考:https://maxbachmann.github.io/Levenshtein/
Levenshtein 距离,也称编辑距离,是一种字符串度量,用于衡量两个序列之间的差异。通俗地说,两个字符串之间的 Levenshtein 距离是将一个字符串更改为另一个字符串所需的最小单字符编辑(插入、删除或替换)次数。python Levenshtein中包括以下module:
1. distance—计算将一个序列更改为另一个序列所需的最少插入、删除和替换次数
Levenshtein.distance(s1, s2, *, weights=(1, 1, 1), processor=None, score_cutoff=None)
参数解释:
- s1,s2:表示要比较的两条序列
- weights: 插入、删除或替换操作的权重。默认是(1, 1, 1)
- score_cutoff: 设置s1和s2之间的最大距离。如果距离大于score_cutoff,则返回score_cutoff+1
返回两个序列整数类型的距离值
>>> import Levenshtein
>>> Levenshtein.distance("abdcderg","adcg")
4
2. ratio—计算 [0, 1] 范围内的归一化插入缺失相似度
Levenshtein.ratio(s1, s2, *, processor=None, score_cutoff=None)
参数解释:
- s1,s2:表示要比较的两条序列
- score_cutoff: 分数阈值的可选参数,0 到 1.0 之间的浮点数。对于 norm_sim < score_cutoff ,则返回0
返回两个序列[0,1]范围的标准化相似性,其值等于1 - normalized_distance
>>> Levenshtein.ratio("abdcderg","adcg")
0.6666666666666667
>>> Levenshtein.ratio("abdcderg","adcg",score_cutoff=0.7)
0.0
3. hamming—计算两个长度相同的字符串之间的汉明距离
汉明距离是指两个序列不同的位置个数。它描述了将s1 转换为 s2 所需的最小替换量。
Levenshtein.hamming(s1, s2, *, pad=True, processor=None, score_cutoff=None)
参数解释:
- s1,s2:表示要比较的两条序列
- score_cutoff: 设置s1和s2之间的最大距离。如果距离大于score_cutoff,则返回score_cutoff+1
- pad(bool ,可选):如果长度不同,是否应填充字符串。如果 pad 为 False 且字符串长度不同,则会引发 ValueError。默认值为 True。
>>> Levenshtein.hamming("abdcd","adged")
3
>>> Levenshtein.hamming("abdcderg","adcg")
7