Я вычислил tf/idf значения двух документов. Следующее является значениями tf/idf:
1.txt
0.0
0.5
2.txt
0.0
0.5
Документы похожи:
1.txt = > dog cat
2.txt = > cat elephant
Как я могу использовать эти значения для вычисления подобия косинуса?
Я знаю, что должен вычислить скалярное произведение, затем найдите расстояние и разделите скалярное произведение на него. Как я могу вычислить это использование моих значений?
Еще один вопрос: Действительно ли важно, чтобы оба документа имели то же количество слов?
a * b
sim(a,b) =--------
|a|*|b|
a*b - точечный продукт
некоторые детали:
def dot(a,b):
n = length(a)
sum = 0
for i in xrange(n):
sum += a[i] * b[i];
return sum
def norm(a):
n = length(a)
for i in xrange(n):
sum += a[i] * a[i]
return math.sqrt(sum)
def cossim(a,b):
return dot(a,b) / (norm(a) * norm(b))
да. в некоторой степени a и b должны иметь одинаковую длину. но a и b обычно имеют разреженное представление, вам нужно только хранить ненулевые записи, и вы можете вычислить норму и точку быстрее.
.