Я пытаюсь найти косинусное сходство между двумя предложениями.Но когда предложение преобразуется в «текст в вектор», появится ошибка.Можете дать мне решение?
#cosine similarity
import re
import math
from collections import Counter
def get_cosine(vec1, vec2):
intersection = set(vec1.keys()) & set(vec2.keys())
numerator = sum([vec1[x] * vec2[x] for x in intersection])
sum1 = sum([vec1[x]**2 for x in vec1.keys()])
sum2 = sum([vec2[x]**2 for x in vec2.keys()])
denominator = math.sqrt(sum1) * math.sqrt(sum2)
if not denominator:
return 0.0
else:
return float(numerator) / denominator
def text_to_vector(text):
word = re.compile(r'\w+')
words = word.findall(text)
return Counter(words)
def get_result(content_a, content_b):
text1 = content_a
text2 = content_b
vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)
cosine_result = get_cosine(vector1, vector2)
return cosine_result
#sentences for get cosine similiarity
sentence=['the earth moves around the sun','The sun rises in the west']
#input sentence
file = open('input.txt')
for line in file:
print(line)
n=0;
while(n!=len(sentence)):
get_result(sentence,line)
, когда вызов цикла вызовет функцию text_to_vector, появится ошибка.