Подобие косинуса

Я вычислил tf/idf значения двух документов. Следующее является значениями tf/idf:

1.txt
0.0
0.5
2.txt
0.0
0.5

Документы похожи:

1.txt = > dog cat
2.txt = > cat elephant

Как я могу использовать эти значения для вычисления подобия косинуса?

Я знаю, что должен вычислить скалярное произведение, затем найдите расстояние и разделите скалярное произведение на него. Как я могу вычислить это использование моих значений?

Еще один вопрос: Действительно ли важно, чтобы оба документа имели то же количество слов?

6
задан gevang 14 August 2013 в 21:12
поделиться

1 ответ

            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 обычно имеют разреженное представление, вам нужно только хранить ненулевые записи, и вы можете вычислить норму и точку быстрее.

.
15
ответ дан 8 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: