语义搜索

数据挖掘 无监督学习 词嵌入 相似 类似文件 语义相似性
2022-03-08 18:22:32

我们正在尝试解决一个问题,我们想要在我们的数据集上进行语义搜索,即我们有一个特定于域的数据(例如:关于汽车的句子)

我们的数据只是一堆句子,我们想要的是给出一个短语并返回以下句子:

  1. 类似于那句话
  2. 有与短语相似的句子的一部分
  3. 具有上下文相似含义的句子

让我试着给你一个例子,假设我搜索短语“购买体验”,我应该得到如下句子:

我从没想过买车可以花不到30分钟的时间来签字和购买。

我找到了我喜欢的汽车,购买过程简单明了

我绝对讨厌去汽车购物,但今天我很高兴我做到了

我想强调一个事实,即我们正在寻找上下文相似性,而不仅仅是暴力搜索。

如果句子使用不同的单词,那么它也应该能够找到它。

我们已经尝试过的事情:

  1. 开放语义搜索(https://www.opensemanticsearch.org/)我们在这里面临的问题是从我们拥有的数据中生成本体,或者为此从我们感兴趣的不同领域搜索可用的本体。

  2. Elastic Search(BM25 + Vectors(tf-idf)),我们尝试了这个,它给出了几句话,但精度不是很好。准确性也很差。我们尝试了一个人工策划的数据集,它只能得到大约 10% 的句子。

  3. 我们尝试了不同的嵌入,就像曾经在https://github.com/UKPLab/sentence-transformers中提到的那样,还通过了示例 https://github.com/UKPLab/sentence-transformers/blob/master/examples/application_semantic_search。 py并尝试根据我们的人工策划集进行评估,但准确度也非常低。

  4. 我们尝试了 ELMO(https://towardsdatascience.com/elmo-contextual-language-embedding-335de2268604),这比我们预期的要好,但仍然比我们预期的要低,并且有一个认知负荷来决定我们不应该考虑的余弦值句子。这甚至适用于第 3 点。

任何帮助将不胜感激。非常感谢您提前提供的帮助

1个回答

类似于那句话

您可以尝试使用 Phrase-BERT 进行词组嵌入。

该论文还提到了相关的先前工作,例如 SentBERT 和 SpanBERT。