Рассчитать сходство косинусов с помощью Java-программы - PullRequest
0 голосов
/ 28 марта 2011

У меня проблема с вычислением измерения сходства для разработки поисковой системы для моего финального проекта.

Я должен использовать TF IDF + косинус сходство в Java, и я не знаю, как его рассчитать.

Для вашей информации, у меня есть собственная база данных, в которой есть документ 811

1 Ответ

1 голос
/ 28 марта 2011

Чтобы вычислить косинусное подобие вектора u и v, нормализовать u и v, а затем получить скалярное произведение u и v. Это означает, что векторы имеют одинаковый размер и являются числовыми векторами (см. http://en.wikipedia.org/wiki/Cosine_similarity) Кодирование такоеоперации тривиальны, и некоторые люди сделали это для вас, как здесь http://acs.lbl.gov/software/colt/

В поисковой системе, косинусное сходство может быть мерой того, сколько объектов A соответствует B. Ваш запрос является объектом A, вычислитькосинусное сходство для всех объектов B в вашей базе данных / хранилище / что угодно, объекты B сортируются по убыванию сходства.

Если ваши объекты представляют собой числовые векторы, достаточно просто. Если нет, то вам нужно найти способ повернутьваши объекты в числовые векторы. Например, для текстовых данных, вектор может содержать количество раз, когда некоторые ключевые слова встречаются в тексте, это называется «моделью мешка слов» (см. http://en.wikipedia.org/wiki/Bag_of_words_model) Такая модель полностью игнорирует, какслова связаны друг с другом. Для данного текста можно вычислить более разумный способ, учитывающий простую связь между словами.Вероятность того, что данное слово следует за другим, это марковское представление.Вектор является вектором вероятностей того, что слово x следует за y.

...