我正在尝试基于ElasticSearch和加载到ElasticSearch的语料库上受过“训练”的word2vec模型构建搜索引擎。
假定提供以下查询:“美国是一个国家吗?”。并假设我的Word2Vec模型已经发现,“美国”类似于余弦相似度为0.8的“美国”,而类似于“美国”余弦相似度为0.7的“美国”。我现在想让ElasticSearch搜索它们的主要查询,但也要考虑权重来替换那些“同义词”。
我目前的做法是执行query_string并增强单个“同义词”,例如
"query": "Is the ((United States)^1 OR (usa)^0.8 OR (america)^0.7) a country?"
请注意,我可能会为(United States)
提供0.5
的提升,因为有两个单词,如果一起找到,将会增加得分,因此似乎将初始提升除以单词数量像是可行的方法。
但是,这意味着我将不得不编写自己的代码来标识那些同义词并创建这些结果查询。此外,我不确定这是否是“最佳”方法。
您能提供这种方法吗,让我知道您认为哪种方法更聪明?