【Python】Levenshtein

1,简介
    Levenshtein Distance是一个度量两个字符序列之间差异的字符串度量标准,两个单词之间的Levenshtein Distance是将一个单词转换为另一个单词所需的单字符编辑(插入、删除或替换)的最小数量。Levenshtein Distance是1965年由苏联数学家Vladimir Levenshtein发明的。Levenshtein Distance也被称为编辑距离(Edit Distance)。

2,安装

conda install python-Levenshtein
# pip install python-Levenshtein

3,计算字符串的相似度
3.1 汉明距离,要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字符的个数。

>>> Levenshtein.hamming('abc','cba')
2
>>> Levenshtein.hamming('abc','cam')
3

3.2 编辑距离,[v]
也称为Levenshtein距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换。

>>> Levenshtein.distance('abc','ac')
1
>>> Levenshtein.distance('kitten','sitting')
3

3.3 莱文斯坦比
计算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离
注意:这里的类编辑距离不是2中所说的编辑距离,2中三种操作中每个操作+1,而在此处,删除、插入依然+1,但是替换+2
这样设计的目的:ratio(‘a’, ‘c’),sum=2,按2中计算为(2-1)/2 = 0.5,’a’,'c’没有重合,显然不合算,但是替换操作+2,就可以解决这个问题。

>>> Levenshtein.ratio('abc','abc')  # (5-0) / 5 = 1
1.0
>>> Levenshtein.ratio('abc','ab')  # (5 - 1) / 5 = 0.8
0.8
>>> Levenshtein.ratio('abc','abd') # (6 - 2) / 6 = 2 / 3 = 0.666
0.6666666666666666

3.4 jaro距离

3.5 Jaro–Winkler距离

4,相关链接
https://www.jb51.net/article/98449.htm
https://www.jianshu.com/p/06370a33e1ee

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值