Levenshtein距离c#计数错误类型
我发现这段代码计算了Levenshtein在答案和猜测之间的距离 :
int CheckErrors(string Answer, string Guess) { int[,] d = new int[Answer.Length + 1, Guess.Length + 1]; for (int i = 0; i <= Answer.Length; i++) d[i, 0] = i; for (int j = 0; j <= Guess.Length; j++) d[0, j] = j; for (int j = 1; j <= Guess.Length; j++) for (int i = 1; i <= Answer.Length; i++) if (Answer[i - 1] == Guess[j - 1]) d[i, j] = d[i - 1, j - 1]; //no operation else d[i, j] = Math.Min(Math.Min( d[i - 1, j] + 1, //a deletion d[i, j - 1] + 1), //an insertion d[i - 1, j - 1] + 1 //a substitution ); return d[Answer.Length, Guess.Length]; }
但我需要一种方法来计算每个错误发生的次数。 有没有一种简单的方法来实现它?
好像你可以为每个操作添加计数器:
上述就是C#学习教程:Levenshtein距离c#计数错误类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
if (Answer[i - 1] == Guess[j - 1]) d[i, j] = d[i - 1, j - 1]; //no operation else { int del = d[i-1, j] + 1; int ins = d[i, j-1] + 1; int sub = d[i-1, j-1] + 1; int op = Math.Min(Math.Min(del, ins), sub); d[i, j] = op; if (i == j) { if (op == del) ++deletions; else if (op == ins) ++insertions; else ++substitutions; } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/990513.html