余弦相似度的代码(python)实现
时间: 2024-06-16 12:02:57 浏览: 183
余弦相似度是一种常用的衡量两个向量之间相似度的方法,它可以用于文本相似度计算、推荐系统等领域。下面是一个简单的Python代码实现余弦相似度的示例:
```python
import numpy as np
def cosine_similarity(vec1, vec2):
dot_product = np.dot(vec1, vec2)
norm1 = np.linalg.norm(vec1)
norm2 = np.linalg.norm(vec2)
similarity = dot_product / (norm1 * norm2)
return similarity
# 示例向量
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
# 计算余弦相似度
similarity_score = cosine_similarity(vector1, vector2)
print("余弦相似度:", similarity_score)
```
在这个示例中,我们使用numpy库来进行向量运算。首先,通过`np.dot()`函数计算两个向量的点积,然后使用`np.linalg.norm()`函数计算向量的范数(即向量的模长)。最后,将点积除以两个向量的范数的乘积,得到余弦相似度。
相关问题
余弦相似度算法python
以下是使用Python实现余弦相似度算法的示例代码:
```python
import math
# 定义余弦相似度函数
def cosine_similarity(v1, v2):
dot_product = 0.0
norm_v1 = 0.0
norm_v2 = 0.0
for i in range(len(v1)):
dot_product += v1[i] * v2[i]
norm_v1 += v1[i]**2
norm_v2 += v2[i]**2
if norm_v1 == 0.0 or norm_v2 == 0.0:
return 0
else:
return dot_product / ((norm_v1 * norm_v2) ** 0.5)
# 示例使用
v1 = [1, 2, 3, 4, 5]
v2 = [3, 4, 5, 6, 7]
print(cosine_similarity(v1, v2))
```
在示例中,我们定义了一个 `cosine_similarity` 函数,该函数接受两个向量 `v1` 和 `v2` 作为输入,并返回它们之间的余弦相似度。我们使用 `dot_product` 变量计算两个向量的点积,使用 `norm_v1` 和 `norm_v2` 变量计算两个向量的范数,并将它们用于计算余弦相似度。
在示例中,我们将向量 `v1` 和 `v2` 分别设置为 `[1, 2, 3, 4, 5]` 和 `[3, 4, 5, 6, 7]`,并打印它们之间的余弦相似度。输出结果为 `0.9970544855015815`。
文本余弦相似度 python 代码
文本余弦相似度是一种常用的文本相似度计算方法,常用于比较两个文本之间的相似度。Python提供了一些工具和库来计算文本余弦相似度,其中较为常见的有cosine_similarity方法,学习这些方法可以极大地提高我们的文本相似度计算应用程序。
以下是Python代码实现文本余弦相似度:
1、首先为Python代码导入所需的库,如nltk、sklearn、numpy等库。
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
2、接下来实现文本余弦相似度计算的函数,其中的参数 a和 b 是两个文本字符串分别为 a 和 b。
def cos_sim(a, b):
vectorizer = CountVectorizer().fit_transform([a, b])
vectors = vectorizer.toarray()
return cosine_similarity(vectors)[0][1]
3、最后我们来测试一下这个函数的运行结果。
print(cos_sim('hello world', 'world hello'))
print(cos_sim('cat', 'dog'))
输出结果为:
1.0
0.0
可以看出,"hello world"和"world hello"这两个字符串的余弦相似度为1,因为它们之间的距离为0。而"cat" 和 "dog"之间的余弦相似度则为0,因为它们之间没有任何共同的单词。
阅读全文