Я работаю над поисковой системой для домашних животных (SE).
Сейчас у меня есть логическое ключевое слово SE в виде библиотеки, разделенной на две части:
индекс: это инвертированный индекс, т.е. он связывает термины с исходным документом, где он появляется
запрос: который предоставляется пользователем и может быть произвольно сложным логическим выражением, которое выглядит как
(mobile OR android OR iphone) AND game
Я хотел бы улучшить поисковую систему таким образом, чтобы она автоматически расширяла простые запросы до логических запросов, чтобы она включала условия поиска, которые не появляются в исходном запросе, т.е. Я хотел бы поддержать синонимы.
Мне нужна помощь, чтобы построить график синонимов.
Как я могу вычислить список слов, которые появляются в похожем контексте?
Вот пример списка синонимов, которые я хотел бы вычислить:
- psql, pgsql, постгрес, постгрескл
- мобильный, айфон, андроид
а также синонимы, которые включают в себя ngrams, такие как:
- rdbms, системы управления реляционными базами данных, ...
Алгоритм не обязательно должен быть идеальным, я могу вручную обработать результат, но, по крайней мере, мне нужно иметь представление о том, какие термины похожи на какие другие термины.