Как реализовать “связанный” алгоритм измерения степени?

StackOverflow https://stackoverflow.com/questions/42489

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

@марсио

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top