如何用python计算levenshteindistance_向LevenshteinDistancelike算法添加异常

作者寻求一种方法,通过赋予不同变量特定的相似度权重和异常值调整,以改变在计算序列相似度时的距离值。他们希望在Counter算法基础上实现变量间距离的灵活设定,例如允许'c'和'k'间的距离为0.5,而'e'和'x'有显著差异。现有的distance函数需要扩展以适应这些需求。
摘要由CSDN通过智能技术生成

我在计算一个多达6个变量的序列有多相似。目前我正在使用集合计数器返回不同变量的频率作为编辑距离。在

默认情况下,编辑变量(add/sub/change)时的距离为1或0。我想根据变量和为变量设置的值更改距离。

所以我可以说某些变量与其他变量相似,并提供一个值来说明它们的相似程度。

我还想说,某些变量的价值比通常少或多。在

示例:# 'c' and 'k' are quite similar, so their distance from eachother is 0.5 instead of 1

>>> groups = {['c','k'] : 0.5}

# the letter 'e' is less significant, and 'x' is very significant

>>> exceptions = {'e': 0.3, 'x': 1.5}

>>> distance('woke', 'woc')

0.8

说明:

^{pr2}$

我怎样才能做到这一点?这能用这个计数器算法实现吗?

当前代码(感谢David Eisenstat)def distance(s1, s2):

cnt = collections.Counter()

for c in s1:

cnt[c] += 1

for c in s2:

cnt[c] -= 1

return sum(abs(diff) for diff in cnt.values()) // 2 + \

(abs(sum(cnt.values())) + 1) // 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值