余弦相似度是利用两个向量之间的夹角的余弦值来衡量两个向量之间的相似度,这个值的范围在-1到1之间。
余弦相似度越接近1,表示两个向量之间的夹角越小,即越相似;而越接近-1,表示两个向量之间的夹角越大,即越不相似。
两个向量的夹角示例图如下:
用Python实现余弦相似度计算时,我们可以使用NumPy库来计算余弦相似度,示例代码如下:
import numpy as np
def cosine_similarity(A, B):
dot_product = np.dot(A, B)
norm_A = np.linalg.norm(A)
norm_B = np.linalg.norm(B)
cosine_sim = dot_product / (norm_A * norm_B)
return cosine_sim
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
similarity = cosine_similarity(vector1, vector2)
print("余弦相似度:", similarity)
linalg.norm()
是NumPy库中用于计算向量或矩阵的范数(或长度)的函数。在计算欧式距离时,可以用来计算向量之间的差异。如下实例代码计算单个向量的范数:import numpy as np
# 计算向量的范数
x = np.array([1, 2, 3])
norm_x = np.linalg.norm(x)
print(norm_x)
余弦相似度在相似度计算中被广泛应用在文本相似度、推荐系统、图像处理等领域。
假设我们有两篇文章A和文章B,单看整篇文章我们感觉无从下手。
那么我们从拆分的思路去想,就可以将文章拆分成词组,用这些词组组成词频向量,如此我们就可以利用余弦相似度来计算词频向量之间的相似度。
这样的相似度计算方法可以在信息检索、自然语言处理等领域得到广泛应用。