Как реализовать «связанный» алгоритм измерения степени? - PullRequest
2 голосов
/ 04 сентября 2008

Я собирался задать вопрос ранее сегодня, когда мне представили удивительную функциональность в Stackoverflow. Когда я написал свой заголовок вопроса, stackoverflow предложил мне несколько связанных вопросов, и я обнаружил, что уже было два похожих вопроса. Это было потрясающе!

Тогда я начал думать, как бы я реализовал такую ​​функцию. Как бы я упорядочил вопросы по родству:

  1. Вопрос, который имеет большее количество слова совпадают с новым вопросом
  2. Если количество совпадений такой же порядок слов считается
  3. Слова, которые появляются в названии, имеют более высокая релевантность

Это был бы простой рабочий процесс или сложный алгоритм счета? Может быть, некоторые из них помогут вам вспомнить? Есть ли какая-нибудь библиотека, реализующая эту функцию? Какие еще аспекты вы бы рассмотрели? Может быть, Джефф мог бы ответить сам! Как вы реализовали это в Stackoverflow? :)

Ответы [ 4 ]

3 голосов
/ 04 сентября 2008

Один из таких способов реализации такого алгоритма заключается в ранжировании вопросов по эвристической функции, которая присваивает весовой коэффициент «релевантности», используя следующие шаги:

  1. Примените фильтр шума к вопросу «Новый», чтобы удалить слова, которые встречаются в большом количестве объектов, таких как: «the», «and», «or» и т. Д.
  2. Получите количество слов, содержащихся в «новом» вопросе, которые совпадают со словами набора вопросов, уже размещенного на веб-сайте. [А]
  3. Получить количество совпадений тегов между словами в новом вопросе и доступными. [B]
  4. Вычислить «вес релевантности» на основе [A] и [B] как «x [A] + y [B]», где x и y - множители веса (Присвойте [B] множитель более высокого веса в качестве тега более актуально, чем простой поиск по слову)
  5. Получите 5 лучших вопросов, которые имеют самый высокий «вес релевантности».

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

1 голос
/ 04 сентября 2008

Ваш вопрос похож на этот , на который есть несколько дополнительных ответов.

0 голосов
/ 04 сентября 2008

@ Марсио

Извините, я не знаю никаких прямых ссылок на API, которые я мог бы предложить здесь, и я никогда не работал с Lucene.

Однако мне известно, что Google Desktop использует API запросов для ранжирования и предложения релевантных результатов поиска. Более подробную информацию об API можно найти здесь .

Возможно, другие могли бы присоединиться и направить вас.

0 голосов
/ 04 сентября 2008

Не собирается ли StackOverflow быть открытым исходным кодом в какой-то момент? Если это так, вы всегда можете узнать, как они это сделали.

Обновление: похоже, что они говорят, что может открыть исходный код. Я надеюсь, что они делают.

...