计算莱文斯坦距离

0 投票
1 回答
636 浏览
提问于 2025-04-17 22:25

我不确定这个问题是不是重复的。不过,我想了解一下在R、Java或Python中优化的Levenshtein距离算法的实现。我有一个文本文件,里面有很多行字符串(大约2000条记录),这些字符串是按字母顺序排列的,可能它们之间有某种相似性。现在,我想比较文件中所有字符串的每一对,并输出一个距离矩阵。另外,请告诉我如何使用这个矩阵来根据我的需求筛选字符串,比如说Levenshtein距离小于等于2。

如果这个问题不清楚,或者你需要更多信息,请告诉我。

Sample Text File
----------------
abc
abcd
abe
bac
bad
back
blade
cub
cube
cute
dump
duke

1 个回答

0

这个可以用一种稍微反向的方法来实现。首先,创建一个字典 d = {word:[] for word in file}。现在:

for word in d:
    for neighbor in edit_distance_1(word):
        if neighbor in d:
            d[word].append(neighbor)

这样,d 就会变成一个图,里面包含了所有单词和它们的编辑距离为1的邻居。你可以进一步追踪这些连接,找到编辑距离为2的单词(通过其他单词连接),我想这正是你想要的结果。

撰写回答