Подтвердить что ты не робот

Stackoverflow Связанные вопросы алгоритм

Связанные вопросы, возникающие после ввода заголовка, и те, которые находятся в правой панели при просмотре вопроса, похоже, предлагают очень интересные вопросы.

Stackoverflow выполняет поиск только SQL и не использует никаких специальных алгоритмов, сказал Спольский в разговоре.

Какие алгоритмы существуют, чтобы дать хорошие ответы в таком случае. Как сделать U поиск базы данных в таком случае? Сделать поиск по ключевым словам и поиска по ключевым словам или поиска по тегам и тем вопросам с большим количеством голосов сверху?

4b9b3361

Ответ 1

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

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

Ответ 2

Если вы прослушаете подкаст Qaru 32 (к сожалению, в расшифровке стенограммы не так много), вы можете услышать, как Джефф Этвуд немного говорит о том, как он это делает,

Кажется, что алгоритм выглядит примерно так:

  • Возьмите вопрос
  • Удалите наиболее распространенные слова на английском языке (из списка, который он получил из Google).
  • отправить полный текстовый поиск в полнотекстовую поисковую систему SQL Server 2008.

Подробнее о полнотекстовом поиске можно найти здесь: http://msdn.microsoft.com/en-us/library/ms142571.aspx

Это может быть устарело до сих пор - они говорили о переходе на лучший/быстрый полнотекстовый поиск, например Lucene, и я смутно помню, как Джефф сказал в подкасте, что это было сделано.

Ответ 3

Взгляните на Porter, создав алгоритм stemming, если вы хотите попасть в "связанные" алгоритмы.

Штокмер для английского языка, например, следует определить строку "кошки" (и возможно, "catlike", "catty" и т.д.), как основанный на корневой "кошке", и "стволовые", "стеблирование", "стебель", как основанный на "стебле". Алгоритм сужения сокращает слова "рыбалка", "рыбалка", "рыба" и "рыбак" к корневому слову, "Рыба".

После того, как вы обработали документ и закончили его, вы можете индексировать слова стека по счету, а затем сравнивать с другими документами. Это самый простой подход к решению этой проблемы.

Также позаботьтесь о том, чтобы игнорировать остановить слова, например "the", "an", "of" и т.д.

Ответ 6

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

Вы можете применять алгоритмы как поиск ближайшего соседа или семантическое хеширование. Последнее похоже на SOTA (см. http://www.cs.toronto.edu/~rsalakhu/papers/semantic_final.pdf).

Ответ 7

Использовать функцию полнотекстового поиска SQL Server.