Задать вопрос
@shift196

Какие есть Алгоритмы поиска синонимов?

Здравствуйте.
Имеется база документов на 1,500млн документов. Каждый состоит из тайтла и небольшого текста (200-300 символов).
Мне нужно реализовать поиск, который бы учитывал возможные сокращения (аббрв), альтернативные названия предметов, и т.д. - в полностью автоматическом режиме.
К примеру: вов, варкрафт, world of warcraft, и просто warcraft это именно те синонимы, которые мне нужно извлечь.

Ембеддинги не подходят, т.к. они: 1) работают лишь на уровне слов, 2) скорее всего поставят где-то рядом wow, wot - хотя это совсем разное, 3) хочется математической строгости и закономерности, а также высокой точности, плюс необходима высокая скорость работы, т.к. данные документы прибавляются каждый день и там есть новые документы, дообучать постоянно условный w2v будет очень трудно.

Как я вижу:
1) вытянуть список коллокаций (устойчивых слов, которые идут всегда строго по порядку), таким образом получится вытянуть всевозможные названия, к примеру "world of tanks". Минус, что оно также найдет еще фразы типа "добрый день"... (как?)
2) на второй итерации, вытянуть также найденные в первом шаге возможные сочитания + слова (или как?), которые часто встречаются рядом с ними, чтобы "wot" попало "рядом" к "world of tanks" в один кластер.
3) из каждого документа выдерать списки таких найденных "признаков" (или как?), сохранять как-то id этих признаков.
4) когда производится поиск, выбирать ранее найденные фразы-признаки из поискового запроса (к примеру "world of warcraft"), находить им альтернативные фразы (варкрафт, вов и т.д.), и уже затем составлять автоматом перефразированный запрос.
Типа оригинальный запрос: "warcraft скачать", после всех манипуляций станет: (warcraft|wow|вов|варкрафт|....) (скачать|download|загрузить...)
Вопрос как это можно реализовать полностью автоматически?
Заранее спасибо.
  • Вопрос задан
  • 102 просмотра
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121
Начни с документации
Какие есть Алгоритмы поиска синонимов?

К примеру: вов, варкрафт, world of warcraft, и просто warcraft

А вас не смущает что в вашем примере нет ни одного синонима? Если хотите математическую точность решения, начинайте с математической точности запроса.

Я здесь вижу транслитерацию, сокращение и совокупность транслитерации и сокращения. Причём сокращение это всегда узкая дорожка, когда вы что-то додумали за пользователя: с чего вы взяли что вов это "ворлд оф варкрафт", а не "великая отечественная война"?

Вопрос как это можно реализовать полностью автоматически?
Взять готовые инструменты для нечёткого поиска, например ElasticSearch
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы