所以我试图设计一个 Levenshtein 算法的衍生版本,在其中我跟踪我在字符串中所做的转换(插入 a,或用 a 代替 b)。
Example:
基本上,假设我正在计算“bbd”和“bcd”的编辑距离
编辑距离将为 1,变换将为“用 b 代替 c”
问题:由于我所见过的实现并不关心了解它是什么类型的操作,而只关心总成本,我将如何解决这个问题?
您可以使用this模块 - 有一个editops
函数,它返回一个列表,其中包含将一个字符串转换为另一个字符串所需的操作。
Example:
Levenshtein.editops("FBBDE", "BCDASD")
[('delete', 0, 0), ('replace', 2, 1), ('insert', 4, 3), ('insert', 4, 4), ('replace', 4, 5)]
来自文档:
查找将一个字符串转换为另一个字符串的编辑操作序列。
editops(源字符串,目标字符串)
editops(编辑操作、源长度、目标长度)
结果是一个三元组列表(操作、spos、dpos),其中
操作是“等于”、“替换”、“插入”或“删除”之一;斯波斯
dpos 是第一个(源)中字符的位置,
第二个(目标)字符串。这些是对单个
人物。事实上返回的列表不包含“等于”,
但所有相关函数都接受带和不带的列表
'等于。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)