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