使用【python】写【文本相似度分析】的代码写一个vector类
时间: 2024-10-10 17:06:31 浏览: 23
```python
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
class Vector:
def __init__(self, texts):
self.vectorizer = TfidfVectorizer()
self.matrix = self.vectorizer.fit_transform(texts)
def get_similarity(self, text1, text2):
tfidf1 = self.vectorizer.transform([text1])
tfidf2 = self.vectorizer.transform([text2])
similarity = (tfidf1 * tfidf2.T).A[0, 0]
return similarity
# 示例
texts = ["我喜欢吃苹果", "苹果很好吃", "我不喜欢吃香蕉", "香蕉很甜"]
vector = Vector(texts)
similarity = vector.get_similarity("我喜欢吃苹果", "苹果很好吃")
print("相似度:", similarity)
```
相关问题
用python写文本相似度 余弦相似度 代码
您好,以下是使用Python计算文本相似度的余弦相似度代码:
```python
import math
# 计算向量点积
def dot_product(vec1, vec2):
return sum(a * b for a, b in zip(vec1, vec2))
# 计算向量长度
def vector_length(vec):
return math.sqrt(dot_product(vec, vec))
# 计算余弦相似度
def cosine_similarity(vec1, vec2):
numerator = dot_product(vec1, vec2)
denominator = vector_length(vec1) * vector_length(vec2)
return numerator / denominator
def compute_cosine_similarity(text1, text2):
words = set(text1.split() + text2.split())
vec1 = [text1.split().count(word) for word in words]
vec2 = [text2.split().count(word) for word in words]
return cosine_similarity(vec1, vec2)
# 示例文本
text1 = "这是一个示例文本,用于计算文本相似度。"
text2 = "这是另一个示例文本,也是用于计算文本相似度的。"
# 计算相似度
similarity = compute_cosine_similarity(text1, text2)
# 输出结果
print("文本1:", text1)
print("文本2:", text2)
print("余弦相似度:", similarity)
```
请注意,此代码仅适用于简单的文本相似度计算,对于更复杂的情况,可能需要进行一些修改。
用python写文本相似度 余弦相似度 代码 input函数
下面是使用Python的余弦相似度计算文本相似度的代码,其中包含input函数以便输入需要比较的文本:
```
import math
def cosine_similarity(a, b):
# 计算余弦相似度
dot_product = 0.0
norm_a = 0.0
norm_b = 0.0
for i in range(len(a)):
dot_product += a[i] * b[i]
norm_a += a[i] ** 2
norm_b += b[i] ** 2
if norm_a == 0.0 or norm_b == 0.0:
return 0.0
else:
return dot_product / (math.sqrt(norm_a) * math.sqrt(norm_b))
# 输入两个文本
text1 = input("请输入第一个文本:")
text2 = input("请输入第二个文本:")
# 对文本进行分词
words1 = text1.strip().split()
words2 = text2.strip().split()
# 获取所有词的集合
all_words = set(words1 + words2)
# 分别计算两个文本中每个词出现的次数,并放入向量中
vector1 = [words1.count(word) for word in all_words]
vector2 = [words2.count(word) for word in all_words]
# 计算文本向量之间的余弦相似度
similarity = cosine_similarity(vector1, vector2)
print("两个文本的余弦相似度为:%.2f" % similarity)
```
注意:此代码仅供学习交流之用,对于实际应用场景需要根据具体情况进行修改。
阅读全文