0

我正在使用宠物搜索引擎(SE)。如何实现在搜索引擎中使用同义词?

我现在什么是布尔关键字SE,作为被分成两个部分库:

  • 指数:这是一个倒排索引,即。它与它出现

  • 查询原始文档相关联的术语:这是由用户提供的,可以是任意复杂的布尔表达式,看起来像(mobile OR android OR iphone) AND game

我想提高搜索引擎以一种自动将简单查询扩展到布尔查询的方式,以便它包含在原始查询中不会出现的搜索项,即。我想支持同义词。

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

如何计算出现在类似上下文中的单词列表?

这里是例如同义词的名单我想计算:

  • PSQL,pgsql里,Postgres的,PostgreSQL的
  • 手机,iphone,安卓

和同义词,包括ngrams like:

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

该算法不一定非常完美,我可以手动后处理结果,但至少我需要知道哪些术语与其他术语相似。

+1

我认为你想做的事叫做“[概率性主题建模](https://stackoverflow.com/questions/tagged/topic-modeling)”,但是不能回答这个问题。 – knb

回答

2

在标准信息检索(IR)文献中,查询扩充被称为,其中包含附加条款的查询(未出现在初始/

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

为了计算词条选择分数,假设在初始检索后检索的排名靠后的(M)排列的文档是相关的,这被称为伪相关性反馈

在其上的术语选择功能通常取决于的因素有:

  1. 中的术语的顶部排名文档中的术语频率 - 越高越好。
  2. 该术语出现的文档数量(M以外) - 越高越好。
  3. 附加词与查询词共同出现多少次 - 越多越好。

共现因素是最重要的,如果原始查询包含'psql',会给出诸如'pgsql'之类的术语。

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