我在使用方法Levenshtein distance
时遇到了麻烦。它说levenshtein distance is the amount of operations it takes to get from string 1 to string 2
。好的,请看下面的代码。
// Compute the edit distance between the two given strings
function getEditDistance(a, b) {
if(a.length === 0) return b.length;
if(b.length === 0) return a.length;
var matrix = [];
// increment along the first column of each row
var i;
for(i = 0; i <= b.length; i++){
matrix[i] = [i];
}
// increment each column in the first row
var j;
for(j = 0; j <= a.length; j++){
matrix[0][j] = j;
}
// Fill in the rest of the matrix
for(i = 1; i <= b.length; i++){
for(j = 1; j <= a.length; j++){
if(b.charAt(i-1) == a.charAt(j-1)){
matrix[i][j] = matrix[i-1][j-1];
} else {
matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution
Math.min(matrix[i][j-1] + 1, // insertion
matrix[i-1][j] + 1)); // deletion
}
}
}
return matrix[b.length][a.length];
};
此代码使用Javascript。
现在想象我将通过以下2句话。
1. welcome to planet earth.
2. welcome sea.
第一句话比第二句更多。所以现在我需要知道这些之间的区别2.因此,当将参数传递给上述函数时,是否有任何顺序? (比如“将带有更多字母的句子传递给第一个参数。将带有较少字母的句子传递给第二个参数”)。或者没有任何订单?据我所知,没有订单,但今天会议结束后我感到困惑!
更新
基本上,此公式旨在计算“将sentence with less words
更改为sentence with more words
需要多少操作。我的理解是否正确?
答案 0 :(得分:3)
第一句话比第二句更多。所以现在我需要知道这些之间的区别2.因此,当将参数传递给上述函数时,是否有任何顺序? (比如“将带有更多字母的句子传递给第一个参数。将带有较少字母的句子传递给第二个参数”)。或者没有任何订单?据我所知,没有订单,但今天会议结束后我感到困惑!
您无需保留订单。您可以按照任何顺序传递字符串(句子)。
这个公式基本上是为了计算“用更少的单词将更少的单词改为句子需要多少次操作。我的理解是否正确?
是的,你可以这样想。更确切地说,Levenshtein Distance测量两个序列之间的差异。在您的情况下,它将确定需要添加,删除或更改的字符的最小数量,以便将其中一个字符串(其中一个)转换为另一个字符串。