algorithm - 修改 Levenshtein 距离以考虑位置,同时是对称的

标签 algorithm statistics string-matching levenshtein-distance

SATURDAY 转换为 SUNDAY 的 Levenshtein 距离是 3。一种方法是,删除位置 2 的 A,删除位置 3 的 T,将位置 5 的 R 替换为N.

如果我以仓位编号作为仓位的权重,则成本为:

2 + 3 + 5 = 10

类似地,如果我将 SUNDAY 转换为 SATURDAY,它需要在位置 2 进行 2 次插入,在位置 3 进行 1 次替换,成本将为:

2 + 2 + 3 = 7

如您所见,这个修改后的 Levenshtein 不是对称的。

请注意,位置是相对于原始字符串的,即使在插入之后也是如此。

有没有办法考虑字母的位置,并保持 Levenshtein 对称,以便 lev(x,y) = lev(y,x)

我看到了一些已经发布的问题,但它们并没有真正帮助: Modifying Levenshtein Distance for positional Bias

提前致谢。

最佳答案

采用不对称属性并使其对称的一种方法是使用它们的平均值(或其他度量):d'(x,y) = d'(y,x) = (d(x ,y) + d(y,x))/2

这种技术的一个常见用法是制作 KL-Divergence通过应用相同的技术对称。这被称为 Jensen-Shannon Diversion

关于algorithm - 修改 Levenshtein 距离以考虑位置,同时是对称的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617196/

相关文章:

javascript - 比较字符串中的非英文字符

algorithm - 假设整数服从均匀分布,对随机整数数组进行排序的最快方法是什么?

javascript - 什么是K9加密算法

machine-learning - 为什么分类模型不适用于类别不平衡的设置?

language-agnostic - 无需迭代即可为一组数字数据维护哪些统计信息?

Python实现以排列数为输入的Permutation Test

python - Ruby 上的 difflib

algorithm - 不一致数据集的记录匹配算法

c# - 帮我优化这个平均计算片段

algorithm - 从一组 x 和 y 中选择 k 项以满足特定条件