python Levenshtein—计算字符串相似性

发布时间 2023-05-28 20:28:57作者: yayagogogo

参考:https://maxbachmann.github.io/Levenshtein/

Levenshtein 距离,也称编辑距离,是一种字符串度量,用于衡量两个序列之间的差异。通俗地说,两个字符串之间的 Levenshtein 距离是将一个字符串更改为另一个字符串所需的最小单字符编辑(插入、删除或替换)次数。python Levenshtein中包括以下module:

1. distance—计算将一个序列更改为另一个序列所需的最少插入、删除和替换次数

Levenshtein.distance(s1s2*weights=(1, 1, 1)processor=Nonescore_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(s1s2*processor=Nonescore_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(s1s2*processor=Nonescore_cutoff=None)

参数解释:

  • s1,s2:表示要比较的两条序列
  • score_cutoff: 设置s1和s2之间的最大距离。如果距离大于score_cutoff,则返回score_cutoff+1
>>> Levenshtein.hamming("abdcd","adged")
3
>>> Levenshtein.hamming("abdcderg","adcg") #这里比较奇怪的是,我使用两个不同长度的s1和s2,并不会报错,这与官网的说法不一致。
7