Я только что узнал о сходстве косинусов сегодня и пробую несколько примеров на бумаге, прежде чем внедрить в код, но мне кажется, что я получаю неожиданные результаты.
Показатели ниже являются предварительно вычисленными TF-IDFбаллы:
Doc1 Doc2 Query
Word1 0.35 0.2 1
Word2 0.80 0.4 1
Если мы воспользуемся чистым подходом к ранжированию TF-IDF, то получим:
0.35+0.8 = 1.15 score for Doc1 and 0.2+0.4 = 0.6 score for Doc 2.
Clearly Doc 1 is the winner.
Для создания косинусного сходства мы делаем:
ДляDoc1:
Квадратный корень (0,35 ^ 2 + 0,8 ^ 2) = 0,873212
Для Doc2:
Квадратный корень (0,2 ^ 2 + 0,4 ^ 2) =0.447214
Пока все хорошо, Doc1, похоже, впереди.
Теперь мы используем их для нормализации и получаем следующее:
Doc1 Doc2 Query
Word1 0.400819 0.447213 1
Word2 0.916158 0.894426 1
SUM: 1.316977 1.34164
Теперь Doc2 впереди, идаже после того, как мы примем точечное произведение, оно будет впереди.Как это может быть?Очевидно, что на основе TF-IDF Doc1 почти удвоил показатель Doc2.Как они так близко?И если показ в поисковике Doc2 получит первое место.
Пожалуйста, помогите очистить мою путаницу?