c# - C#中支持两个相邻字母Transposition的Levenshtein编辑距离算法

标签 c# nlp edit-distance

我正在寻找一种用于计算 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/

相关文章:

c# - 如何使用 CSV 文件中的新数据刷新/更新 DataGridView?

c# - 第一次异常 - System.pdb 未加载

python - 了解 scikit-learn 中的 DictVectorizer?

nlp - 如何使用 Weka 创建词袋?

c# - Xamarin.Forms - 与单击事件中的事件类型错误不匹配

c# - 防止 Autofac 持有一次性实例

r - 在 R 中安装 coreNLP

python - Levenshtein Distance 是如何计算简体中文字符的?

r - 计算编辑距离百分比

java - 编辑大字符串的距离解决方案