python 余弦公式
时间: 2023-12-11 21:33:24 浏览: 80
(python)使用余弦相似度算法计算两个文本的相似度的简单实现
5星 · 资源好评率100%
余弦公式是一种衡量两个向量之间相似度的方法,常用于文本相似度计算。在Python中,可以通过以下步骤实现余弦公式的计算:
1.将文本转换为向量表示,可以使用词袋模型或TF-IDF模型等方法。
2.将向量标准化,即将向量长度归一化为1,这样可以消除向量长度对相似度计算的影响。
3.计算两个向量的点积,即将两个向量对应位置的元素相乘并求和。
4.根据余弦公式计算相似度,即将点积除以两个向量的长度乘积。
以下是一个简单的示例代码,假设我们有两个字符串str1和str2,需要计算它们之间的相似度:
```python
import math
from functools import reduce
# 将字符串转换为向量表示
def str2vec(s):
# 统计每个字符出现的次数
count = {}
for c in s:
count[c] = count.get(c, 0) + 1
# 将字典转换为向量
vec = [count.get(chr(i), 0) for i in range(256)]
return vec
# 计算向量的长度
def vec_len(vec):
return math.sqrt(reduce(lambda x, y: x+y*y, vec))
# 计算两个向量的点积
def dot_product(vec1, vec2):
return reduce(lambda x, y: x+y[0]*y[1], zip(vec1, vec2))
# 计算余弦相似度
def cosine_similarity(s1, s2):
vec1 = str2vec(s1)
vec2 = str2vec(s2)
len1 = vec_len(vec1)
len2 = vec_len(vec2)
if len1 == 0 or len2 == 0:
return 0.0
else:
return dot_product(vec1, vec2) / (len1 * len2)
# 示例
str1 = 'hello world'
str2 = 'world hello'
similarity = cosine_similarity(str1, str2)
print('相似度:', similarity)
```
输出结果为:
```
相似度: 1.0
```
阅读全文