Алгоритм или библиотека ближайшего соседа на основе ключевых слов
Я хочу найти библиотеку или алгоритм (поэтому я сам пишу код) для определения ближайших k соседей веб-страницы, где веб-страница определяется как набор ключевых слов. Я уже сделал ту часть, где я извлекаю ключевые слова.
Это не должно быть очень хорошо, просто достаточно хорошо.
Может кто-нибудь предложить решение или с чего начать. Я просматривал лекции Юрия Лифшица в прошлом, но я надеюсь получить что-то готовое, если это возможно.
Библиотеки Java предпочтительнее.
1 ответ
Как вы сказали, у вас уже есть ключевые слова, извлеченные со страницы. Я предполагаю, что вы представляете каждый документ / страницу вектором слов. Что-то вроде матрицы терминов частоты документа.
Я думаю, что ближайший сосед страницы в идеале - это страница с похожим содержанием. Таким образом, вы хотите найти документы, в которых относительная частота каждого слова аналогична той, которую вы ищете. Поэтому сначала нормализуйте матрицу документов WRT в каждой строке; т. е. заменить количество вхождений на% вхождений.
Затем вы должны назначить некоторое расстояние между двумя документами, представленными этими векторами. Вы можете использовать нормальное евклидово расстояние или Манхэттенское расстояние. Однако для текстового документа мера сходства, которая обычно работает лучше всего, - это косинусное сходство. Используйте любую функцию расстояния или подобия, которая подходит для вашей проблемы (помните, что для ближайшего соседа вы хотите минимизировать расстояние; но максимизируйте сходство).
Когда у вас есть векторы и функция расстояния, запустите алгоритм " Ближайший сосед" или алгоритм K-ближайший сосед.