余弦相似度计算代码python
时间: 2024-11-23 09:27:16 浏览: 31
余弦相似度是一种衡量两个非零向量之间角度的统计方法,在文本挖掘、推荐系统等领域常用于比较文档之间的相似度。在Python中,可以使用内置的`math`库以及numpy库来计算余弦相似度。以下是一个简单的例子:
```python
import math
import numpy as np
def cosine_similarity(vec1, vec2):
# 计算点积
dot_product = np.dot(vec1, vec2)
# 计算向量长度
norm_vec1 = np.linalg.norm(vec1)
norm_vec2 = np.linalg.norm(vec2)
# 防止除数为0,当向量长度为0时直接返回0(这在实践中不太可能发生)
if norm_vec1 == 0 or norm_vec2 == 0:
return 0
# 计算余弦相似度
similarity = dot_product / (norm_vec1 * norm_vec2)
return similarity
# 示例向量
vec1 = [1, 2, 3]
vec2 = [4, 5, 6]
similarity = cosine_similarity(vec1, vec2)
print(f"两个向量的余弦相似度是: {similarity}")
相关问题
实体的余弦相似度计算python代码
实体的余弦相似度计算是一种用的文本相似度计算方法,可以用于比较两个实体之间的相似程度。下面是一个简单的Python代码示例:
```python
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
def cosine_similarity(entity1, entity2):
# 将实体转换为向量表示
vectorizer = CountVectorizer().fit_transform([entity1, entity2])
vectors = vectorizer.toarray()
# 计算余弦相似度
similarity = np.dot(vectors, vectors) / (np.linalg.norm(vectors) * np.linalg.norm(vectors))
return similarity
# 示例实体
entity1 = "机器学习是人工智能的一个分支"
entity2 = "人工智能包括机器学习在内的多个领域"
# 计算实体的余弦相似度
similarity_score = cosine_similarity(entity1, entity2)
print("实体的余弦相似度:", similarity_score)
```
这段代码使用了`CountVectorizer`来将实体转换为向量表示,然后通过计算向量的余弦相似度来得到实体的相似度。请注意,这只是一个简单的示例,实际应用中可能需要对文本进行预处理和特征选择等操作。
余弦相似度计算代码,包含分词,python
余弦相似度是一种衡量两个非零向量之间角度的度量,常用于信息检索、推荐系统和文本分析等领域,尤其是在处理文档相似度问题时。在Python中,我们可以先对文本进行预处理,包括分词,然后将词语转换成向量(通常使用TF-IDF或词袋模型),最后利用余弦公式计算相似度。
以下是一个简单的例子,使用`jieba`库做中文分词,`sklearn`库计算TF-IDF后的余弦相似度:
```python
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
# 假设我们有两个文档
doc1 = "这是一个中文句子"
doc2 = "这是另一个中文句子"
# 分词
def segment_text(doc):
return ' '.join(jieba.cut(doc))
seg_doc1 = segment_text(doc1)
seg_doc2 = segment_text(doc2)
# 创建TfidfVectorizer实例并转换为向量
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform([seg_doc1, seg_doc2])
# 计算余弦相似度
cosine_sim = tfidf_matrix[0].dot(tfidf_matrix[1].T) / (tfidf_matrix[0].norm() * tfidf_matrix[1].norm())
print(f"文档1和文档2的余弦相似度为: {cosine_sim:.4f}")
```
阅读全文