我们正在尝试解决一个问题,我们想要在我们的数据集上进行语义搜索,即我们有一个特定于域的数据(例如:关于汽车的句子)
我们的数据只是一堆句子,我们想要的是给出一个短语并返回以下句子:
- 类似于那句话
- 有与短语相似的句子的一部分
- 具有上下文相似含义的句子
让我试着给你一个例子,假设我搜索短语“购买体验”,我应该得到如下句子:
我从没想过买车可以花不到30分钟的时间来签字和购买。
我找到了我喜欢的汽车,购买过程简单明了
我绝对讨厌去汽车购物,但今天我很高兴我做到了
我想强调一个事实,即我们正在寻找上下文相似性,而不仅仅是暴力搜索。
如果句子使用不同的单词,那么它也应该能够找到它。
我们已经尝试过的事情:
开放语义搜索(https://www.opensemanticsearch.org/)我们在这里面临的问题是从我们拥有的数据中生成本体,或者为此从我们感兴趣的不同领域搜索可用的本体。
Elastic Search(BM25 + Vectors(tf-idf)),我们尝试了这个,它给出了几句话,但精度不是很好。准确性也很差。我们尝试了一个人工策划的数据集,它只能得到大约 10% 的句子。
我们尝试了不同的嵌入,就像曾经在https://github.com/UKPLab/sentence-transformers中提到的那样,还通过了示例 https://github.com/UKPLab/sentence-transformers/blob/master/examples/application_semantic_search。 py并尝试根据我们的人工策划集进行评估,但准确度也非常低。
我们尝试了 ELMO(https://towardsdatascience.com/elmo-contextual-language-embedding-335de2268604),这比我们预期的要好,但仍然比我们预期的要低,并且有一个认知负荷来决定我们不应该考虑的余弦值句子。这甚至适用于第 3 点。
任何帮助将不胜感激。非常感谢您提前提供的帮助