Как реализовать “связанный” алгоритм измерения степени?
-
09-06-2019 - |
Вопрос
Я собирался задать вопрос ранее сегодня, когда мне представили удивительную функциональность в Stackoverflow.Когда я написал заголовок своего вопроса, stackoverflow предложил мне несколько связанных вопросов, и я узнал, что уже было два похожих вопроса.Это было потрясающе!
Тогда я начал думать, как бы я реализовал такую функцию.Как бы я упорядочил вопросы по степени родства:
- Вопрос, содержащий большее количество слов, совпадает с новым вопросом
- Если количество совпадений одинаковое , учитывается порядок слов
- Слова, которые появляются в заголовке, имеют более высокую релевантность
Это был бы простой рабочий процесс или сложный алгоритм подсчета очков?Может быть, какой-нибудь стемминг для увеличения отзыва?Есть ли какая-нибудь библиотека, реализующая эту функцию?Какие еще аспекты вы бы рассмотрели?Может быть, Джефф смог бы ответить сам!Как вы реализовали это в Stackoverflow?:)
Решение
Один из таких способов реализации такого алгоритма включал бы ранжирование вопросов в соответствии с эвристической функцией, которая присваивает весовой коэффициент "релевантности", используя следующие шаги:
- Примените фильтр шума к "Новому" вопросу, чтобы удалить слова, которые являются общими для большого количества объектов, таких как:"тот", "и", "или" и т.д.
- Получите количество слов, содержащихся в "Новом" вопросе, которые соответствуют словам из набора вопросов, уже размещенных на веб-сайте.[А]
- Получите количество совпадений тегов между словами в "Новом" вопросе и доступными.[B]
- Вычислите "вес релевантности" на основе [A] и [B] как "x [A] + y [B]", где x и y - весовые множители (присвоите [B] более высокий весовой множитель, поскольку пометка более релевантна, чем простой поиск по слову)
- Выберите 5 лучших вопросов, которые имеют наибольший "вес релевантности".
Эвристика может потребовать настройки для получения оптимальных результатов, но она должна сработать.
Другие советы
Ваш вопрос кажется похожим на этот, в котором есть несколько дополнительных ответов.
Извините, я не знаю ни одной прямой ссылки на API, которую я мог бы предложить здесь, и я никогда не работал с Lucene.
Однако я знаю, что Google Desktop использует API запросов для ранжирования и предложения релевантных результатов поиска.Более подробную информацию об API можно найти здесь здесь.
Возможно, другие могли бы вмешаться и направить вас.
Разве StackOverflow в какой-то момент не будет с открытым исходным кодом?Если да, то вы всегда можете узнать, как они там это сделали.
Обновить:Похоже, что они говорят, что они мог бы откройте его с открытым исходным кодом.Я надеюсь, что они это сделают.