前言
余弦相似度是一种衡量两个向量之间相似性的度量方法。在向量空间中,给定两个非零向量A和B,它们的余弦相似度定义为它们的内积除以它们的模的乘积。用公式表示为:
cosine_similarity = (A · B) / (||A|| * ||B||)
其中,A · B表示向量A和B的内积,||A||和||B||分别表示向量A和B的模(长度)。
余弦相似度的取值范围在-1到1之间,值越接近1表示两个向量越相似,值越接近-1表示两个向量越不相似,值为0表示两个向量正交(没有相似性)。
在计算机科学和自然语言处理等领域,余弦相似度常用于文本相似度计算、推荐系统、聚类分析等任务
js代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
function dotProduct(vector1, vector2) { let result = 0; for (let i = 0; i < vector1.length; i++) { result += vector1[i] * vector2[i]; } return result; }
function vectorNorm(vector) { let squaredSum = 0; for (let i = 0; i < vector.length; i++) { squaredSum += vector[i] * vector[i]; } return Math.sqrt(squaredSum); }
function cosineSimilarity(vector1, vector2) { const dot = dotProduct(vector1, vector2); const norm1 = vectorNorm(vector1); const norm2 = vectorNorm(vector2); const similarity = (norm1 !== 0 && norm2 !== 0) ? dot / (norm1 * norm2) : 0; return similarity; }
const vectorA = [1, 2, 3]; const vectorB = [4, 5, 6];
const similarity = cosineSimilarity(vectorA, vectorB);
console.log("余弦相似度:", similarity);
|