Я пытаюсь создать поисковую систему, основанную как на ElasticSearch, так и на модели word2vec, «обученной» на корпусе, загруженном в ElasticSearch.
Предположим, что задан следующий запрос: «Являются ли Соединенные Штаты страной?». И предположим, что моя модель Word2Vec обнаружила, что «Соединенные Штаты» подобны «США» с косинусным сходством 0,8 и «Америке» с косинусным сходством 0,7. Теперь я хотел бы, чтобы ElasticSearch выполнял поиск по основному запросу, но также заменял эти «синонимы», но с учетом весов.
Мой текущий подход заключается в выполнении строки запроса и усилении отдельных «синонимов», например,
"query": "Is the ((United States)^1 OR (usa)^0.8 OR (america)^0.7) a country?"
В качестве примечания, я, вероятно, предоставлю (United States)
повышение 0.5
, так как есть два слова, которые увеличат оценку, если будут найдены вместе, поэтому деление начального повышения на количество слов выглядит правдоподобным подходом. .
Это, однако, означало бы, что мне пришлось бы написать свой собственный фрагмент кода, чтобы идентифицировать эти синонимы и создать эти результирующие запросы. Кроме того, я не уверен, является ли это «лучшим» способом сделать это.
Не могли бы вы высказать свое мнение об этом методе и сообщить мне, что, по вашему мнению, будет более разумным подходом?