我正在寻找一种用于计算 Levenshtein 编辑距离的算法,该算法还支持在 C# 中实现的两个相邻字母转置的情况。
例如单词“animals”和“ainmals”: 在字母“n”和“i”之间切换 不会被计为两个替补 - 这将有很大的距离 - 但是 on 将被评分为两个字母的转置 - 距离更小 -
到目前为止我在搜索中达到了什么
最佳答案
请参阅维基百科上的实现。您可以轻松地调整算法以包括字母交换的情况。例如:
//bla bla. I'm just copying the code on the Wikipedia.
d[i, j] := minimum
(
d[i-1, j] + 1, // a deletion
d[i, j-1] + 1, // an insertion
d[i-1, j-1] + 1, // a substitution
)
// This single statement is all you need:
if(s[i-1]==t[j-2] && s[i-2]==t[j-1])
d[i,j] := minimum
(
d[i,j], //cost without swapping
d[i-2,j-2]+something //cost with swapping. probably something=1
);
关于c# - C#中支持两个相邻字母Transposition的Levenshtein编辑距离算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10178043/