【Python】Levenshtein

本文深入探讨了Levenshtein距离,一种衡量字符串相似度的算法,详细讲解了其计算原理,包括编辑距离、汉明距离及莱文斯坦比,并提供了实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值