Что является основным алгоритмом для связанных запросов контента? - PullRequest
3 голосов
/ 01 февраля 2011

Допустим, у меня есть БД вопросов, как SO!Когда пользователь задает вопрос, я хотел бы предоставить связанные вопросы на боковой панели.

Существует ли стандартизированная техника для этого?Разделить вопрос по пробелам, выполнить поиск по каждому слову и т. Д ... ??

Не совсем уверен, с чего начать.

Ответы [ 4 ]

3 голосов
/ 01 февраля 2011

Это известно как Больше нравится эта функция . IR библиотеки, такие как Lucene, поддерживают эту функцию. Подробнее читайте здесь .

  1. Как MoreLikeThis работает в Lucene
  2. Использование Lucene и MoreLikeThis для показа соответствующего содержимого
1 голос
/ 01 февраля 2011

Я бы подошел к этой проблеме следующим образом.Во-первых, отбросьте все склеивающие слова: «а, а, а, но, если не могу, могу, значит, нет» и т. Д. (Возможно, огромный список) ...

Что следует оставить при этомточка должна состоять в основном из существительных и глаголов.

Сгруппируйте ваши сообщения с помощью чего-то вроде кластеризации K-Means, против этих слов.Наконец, обучите байесовский классификатор вашим кластерам, и когда вы получите новое сообщение, классифицируйте его как один из ваших кластеров ... Наконец, верните другие вопросы из этого кластера ....

0 голосов
/ 01 февраля 2011

Наивным способом было бы запрашивать строки в вопросах для общих слов.

Например, на большинстве связанных вопросов на этой странице есть слово "запросы" или "алгоритм" в своих заголовках, хотя они, кажется, говорят о SQL, развитии обучения и других разнообразных областях.

Таким образом, вы можете взять один вопрос, разбить строку вопроса, исключить стоп-слова и затем попытаться сопоставить как можно больше слов в заголовках других вопросов.

После того, как у вас есть набор вопросов, где у вас есть подходящие слова в названии, упорядочите их по количеству совпадений или другим показателям (для SO, например, голосов, ответов или количества просмотров).

0 голосов
/ 01 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...