gpt4 book ai didi

JavaScript 余弦相似度函数

转载 作者:行者123 更新时间:2023-11-28 17:26:51 28 4
gpt4 key购买 nike

我正在尝试创建一个余弦相似度函数,然后在 HTML 元素中显示结果。我写了以下内容:

function cosinesim(A,B){
var dotproduct=0;
var mA=0;
var mB=0;
for(i = 0; i < A.length;){
dotproduct += (A[i] * B[i]);
mA += (A[i]*A[i]);
mB += (B[i]*B[i]);
}
mA = Math.sqrt(mA);
mB = Math.sqrt(mB);
var similarity = (dotproduct)/(mA)*(mB)
return similarity;
}

//.....

var array1 = [1,0,0,1];
var array2 = [1,0,0,0];

var p = cosinesim(array1,array2);
document.getElementById("sim").innerHTML = String(p);

我已经测试过,我输入的两个数组的长度相同,但是当我的代码运行到这个位时,它崩溃了,我似乎找不到问题所在。

感谢任何帮助,谢谢。

最佳答案

function cosinesim(A, B) {
var dotproduct = 0;
var mA = 0;
var mB = 0;

for(var i = 0; i < A.length; i++) {
dotproduct += A[i] * B[i];
mA += A[i] * A[i];
mB += B[i] * B[i];
}

mA = Math.sqrt(mA);
mB = Math.sqrt(mB);
var similarity = dotproduct / (mA * mB);

return similarity;
}


var array1 = [1, 0, 0, 1];
var array2 = [1, 0, 0, 0];

var p = cosinesim(array1, array2);

console.log(p);

这应该给出实际的余弦相似度。你失踪了:

  1. for 循环中的 var ii++,如前所述。
  2. 此行中 (mA * mB) 周围有额外的括号:var相似度 = dotproduct/(mA * mB); 如果没有它们,除法会在乘法之前完成.

关于JavaScript 余弦相似度函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51362252/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com