Алгоритм или библиотека ближайшего соседа на основе ключевых слов - PullRequest
5 голосов
/ 15 мая 2011

Я хочу найти библиотеку или алгоритм (поэтому я сам пишу код) для определения ближайших k соседей веб-страницы, где веб-страница определяется как набор ключевых слов. Я уже сделал ту часть, где я извлекаю ключевые слова.

Это не должно быть очень хорошо, просто достаточно хорошо.

Может кто-нибудь предложить решение или с чего начать. Я просматривал лекции Юрия Лифшица в прошлом, но я надеюсь получить что-нибудь готовое, если это возможно.

Предпочтительные библиотеки Java.

1 Ответ

2 голосов
/ 15 мая 2011

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

Я думаю, что ближайший сосед страницы в идеале - это страница с похожим содержанием.Таким образом, вы хотите найти документы, в которых относительная частота каждого слова аналогична той, которую вы ищете.Поэтому сначала нормализуйте матрицу документов WRT каждой строки;т. е. замените количество вхождений на% tage вхождений.

Далее необходимо назначить некоторое расстояние между 2 документами, представленными этими векторами.Вы можете использовать нормальное евклидово расстояние или манхэттенское расстояние .Однако для текстового документа мера сходства, которая обычно работает лучше всего, равна Cosine Similarity .Используйте любую функцию расстояния или подобия, которая подходит для вашей проблемы (помните, что для ближайшего соседа вы хотите минимизировать расстояние; но максимизируйте сходство).

Как только вы установили векторы и свою функцию расстояния, запустите Ближайшийсосед или K-ближайший сосед алгоритм.

...