如何实现在搜索引擎中使用的同义词?

时间:2017-09-23 18:42:19

标签: nlp full-text-search artificial-intelligence text-mining word2vec

我正在研究宠物搜索引擎(SE)。

我现在所拥有的是布尔关键字SE,作为一个分为两部分的库:

  • index:这是一个倒排索引即。它将术语与出现的原始文档相关联

  • query:由用户提供,可以是任意复杂的布尔表达式,看起来像(mobile OR android OR iphone) AND game

我想改进搜索引擎,以自动将简单查询扩展到布尔查询的方式,使其包含原始查询中没有出现的搜索词,即。我想支持同义词。

我需要一些帮助来构建同义词图。

如何计算出现在类似情境中的单词列表?

以下是我想要计算的同义词列表的示例:

  • psql,pgsql,postgres,postgresql
  • 手机,iphone,android

以及包含ngrams的同义词:

  • rdbms,关系数据库管理系统,......

算法并不是必须完美的,我可以手工后处理结果,但至少我需要知道哪些术语与其他术语类似。

1 个答案:

答案 0 :(得分:3)

在标准信息检索(IR)文献中,使用附加术语(不会出现在初始/原始查询中)对查询进行丰富,称为查询扩展。< / p>

有很多标准方法,一般来说,基于某些因素评分术语的概念,然后选择一些术语(比如K,一个参数) )得分最高。

要计算术语选择分数,假设在初始检索后检索的排名靠前(M)的文档是相关的,这称为伪相关反馈

术语选择功能通常依赖的因素是:

  1. 排名靠前的文档中术语的频率 - 越高越好。
  2. 该术语出现的文件数量(前M个) - 越高越好。
  3. 带有查询字词的附加字词共同出现的次数 - 越高越好。
  4. 共现因素是最重要的,并且会为您提供诸如“pgsql”之类的术语。如果原始查询包含&#39; psql&#39;。

    请注意,如果文档太短,此方法将无法正常工作,您必须使用其他基于语义的方法,例如i)word-vector based expansion或ii)基于wordnet的扩展。