相似度Levenshtein

Run Settings
LanguageJavaScript
Language Version
Run Command
let src = 'sitting'||'周一是今天吗' let des = 'kitten'||'周一是今天' /** * 文本相似度匹配 * Levenshtein distance算法 */ function getSimilarityDegree(src,des){ let m = src.length; let n = des.length; var matrix = []; //初始化数组 for(let i=0;i<=m;i++){ matrix[i] = []; if(!i){ for(let j=0;j<=n;j++){ matrix[0][j] = j; } }else matrix[i][0] = i; } /** * array min * @return {[type]} [array's min value] */ Array.prototype.min = function() { return Math.min.apply({},this) } //计算两个字符是否一样,计算左上的值 let temp; for (let i = 1; i <= m; i++) { for (let j = 1; j <= n; j++) { temp = src[i-1]==des[j-1]?0:1; //取三个值中最小的 matrix[i][j] = [matrix[i-1][j-1]+temp, matrix[i][j-1]+1, matrix[i-1][j]+1].min(); } } return (1 - matrix[m][n]/Math.max(m,n)).toFixed(4); } // for test console.log(getSimilarityDegree(src,des));
Editor Settings
Theme
Key bindings
Full width
Lines