Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Алгоритм или библиотека ближайшего соседа на основе ключевых слов

Автор вопроса: AnkurОтветов: 1

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

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

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

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

  • вы сопоставляете местоположения или вам нужен алгоритм, который связывает разные страницы только на основе их ключевых слов? fasseg 15.05.2011
  • вы можете создать взвешенный неориентированный граф узлов веб-сайта, и веса ребер будут представлять близость. например Каждое ключевое слово, которое есть у двух сайтов, может увеличить их граничный вес. в java есть много графических библиотек, которые вы могли бы использовать. fasseg 15.05.2011
  • @smegbrains, да, я думаю, это то, что я сделал. Я вычислил пересечение пар ключевых слов (что, я думаю, эквивалентно тому, что вы называете "шириной края") Ankur 15.05.2011
  • Ваша проблема звучит как приложение для анализа текста и кластеризации документов. Попробуйте данный обзор, чтобы узнать, дает ли он какие-нибудь намеки на бумаги, на которые можно посмотреть. Dave 16.06.2011

javaalgorithmnearest-neighbor

Ответы

Ответ 1 · рейтинг 2 · BiGYaN

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы