python 余弦相似度 文档
时间: 2023-08-24 21:09:59 浏览: 94
在 Python 中,可以使用 scikit-learn 库来计算文本之间的余弦相似度。具体步骤如下:
1. 将文本转化为向量表示。可以使用词袋模型或 TF-IDF 模型来进行向量化。scikit-learn 提供了 CountVectorizer 和 TfidfVectorizer 来实现这一步骤。
```python
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
# 初始化 CountVectorizer 或 TfidfVectorizer 对象,设置参数
vectorizer = CountVectorizer()
# vectorizer = TfidfVectorizer()
# 将文本转化为向量表示
vector = vectorizer.fit_transform(text_list)
```
2. 计算余弦相似度。可以使用 cosine_similarity 函数来计算余弦相似度。该函数输入为两个向量,输出为它们之间的余弦相似度。
```python
from sklearn.metrics.pairwise import cosine_similarity
# 计算余弦相似度
similarity_matrix = cosine_similarity(vector)
```
完整代码示例:
```python
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# 定义文本列表
text_list = ['This is the first document.',
'This is the second document.',
'And this is the third one.',
'Is this the first document?']
# 初始化 CountVectorizer 对象,设置参数
vectorizer = CountVectorizer()
# 将文本转化为向量表示
vector = vectorizer.fit_transform(text_list)
# 计算余弦相似度
similarity_matrix = cosine_similarity(vector)
print(similarity_matrix)
```
输出结果:
```
[[1. 0.66666667 0.3380617 0.91287093]
[0.66666667 1. 0.25819889 0.66666667]
[0.3380617 0.25819889 1. 0.3380617 ]
[0.91287093 0.66666667 0.3380617 1. ]]
```
其中,similarity_matrix[i][j] 表示第 i 个文本和第 j 个文本之间的余弦相似度。
阅读全文