python 计算文本相似度
时间: 2023-09-03 07:15:52 浏览: 114
计算文本相似度
在 Python 中,计算文本相似度有多种方法,以下是其中一些常用的方法:
1. 余弦相似度:使用 sklearn 库中的 cosine_similarity 函数计算两个向量的余弦相似度。
```python
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.feature_extraction.text import CountVectorizer
# 定义两个文本
text1 = "Python is a programming language."
text2 = "Java is also a programming language."
# 使用 CountVectorizer 将文本转化为向量
vectorizer = CountVectorizer().fit_transform([text1, text2])
# 计算两个向量的余弦相似度
similarity = cosine_similarity(vectorizer[0], vectorizer[1])
print(similarity)
```
2. Jaccard 相似度:使用自定义函数计算两个集合的 Jaccard 相似度。
```python
# 定义两个文本
text1 = "Python is a programming language."
text2 = "Java is also a programming language."
# 将文本转化为集合
set1 = set(text1.split())
set2 = set(text2.split())
# 计算两个集合的 Jaccard 相似度
similarity = len(set1 & set2) / len(set1 | set2)
print(similarity)
```
3. 编辑距离:使用自定义函数计算两个字符串的编辑距离。
```python
# 定义两个字符串
str1 = "Python"
str2 = "Pithon"
# 计算两个字符串的编辑距离
def edit_distance(s1, s2):
if len(s1) > len(s2):
s1, s2 = s2, s1
dist = range(len(s1) + 1)
for i2, c2 in enumerate(s2):
dist_ = [i2+1]
for i1, c1 in enumerate(s1):
if c1 == c2:
dist_.append(dist[i1])
else:
dist_.append(1 + min((dist[i1], dist[i1 + 1], dist_[-1])))
dist = dist_
return dist[-1]
distance = edit_distance(str1, str2)
similarity = 1 - (distance / max(len(str1), len(str2)))
print(similarity)
```
以上是一些常用的计算文本相似度的方法,具体的选择可以根据实际需求和数据情况进行选择。
阅读全文