【搜索引擎(三)】检索模型

检索模型的目的

  现实中搜索引擎的检索策略复杂多变,但是分析起来,核心的目的就两个,为了:

  1. 越相关的结果越靠前;

  2. 查询的结果是完整的。

经典检索模型

经典信息检索模型有三类:

    1.布尔模型

    2.向量模型

    3.概率

    不看内部, 查询的模型是:查询->查询模型->返回结果,一个查询是一组关键字,返回结果是一组文档

  1.布尔模型:

    返回包含一个查询中的n个关键字的文档, 即包含w1,w2,w3的文档的交集

  2.向量模型:

    考虑到布尔匹配的局限性太强,而提出的一个部分匹配的方法。通过对查询和文档中的索引赋予非布尔权重,最后用来计算文档和用户查询之间的相似度。

    向量d表示文本,向量q表示查询,它们的长度是一样的,d.length = q.length = 索引项总个数。

    当然可以用类似cosine,Jaccard的方法来计算相似度,并对结果进行排序。

    尽管它并不是最好的,但是在评测检索策略的时候经常作为baseline(基准)

  3.概率模型:

    这个概念有些复杂,其实看起来就好像是潜在语义的分析,对用户的输入进行一些分析,推测潜在属性,最后给出一个在假设下为,给出最大概率是用户想要文档的文档(拗口)。

    同时有一个虚拟的概念叫理想文档,就是恰好只包含用户想要的结果的文档。

    实现的方法:用朴素贝叶斯推断。可以想象在A属性下用户给出Q查询的概率,以及目前已有的过往查询中某个属性A下最终得到的概率,就应该知道它跟贝叶斯方法的推导有一些关系了。

    这个模型的缺陷在于几乎没有办法给定样本集。评测它的准确度也不是那么容易。

集合论模型

  1.基于集合的模型

    基于集合的模型是一种较新的方法,结合了集合论与向量空间模型的排序。它包含了布尔模型的特征(布尔=集合,向量=代数)。,我们把它看成布尔模型。主要的特点是利用项集建立索引,而非普通的索引。

    所谓项集,是文档中索引项的子集。一个集合可以有2^t个项集,但是实际用到的不会这么多。同时,项集也不是两两不相交的。

    频繁项集是项集的一种。设定一个阈值,当项集中的索引出现文档次数超过它的时候,这个项集就是频繁项集。频繁项集还有跟它相关的项集 Apriori算法,在关联规则的时候会用到它。

    用频繁项集来设计索引,可以在一些场景下减少搜索时间,提高检索效率。

  2.扩展布尔模型

    是一种将布尔模型和向量模型统一化的方法(布尔=集合,向量=代数)。用p范数泛化形式的析取、合取,统一了布尔模型和向量模型,并且还有一些中间的形态。目前不清楚它的应用,具体的数学形式不给了。

  3.模糊集模型

    为了处理布尔模型的突变问题而设计的模型。该模型中新增了同义词辞典,并且自然而然地采用了相似度的计算。

其他模型

模型分类具体模型
代数模型 广义向量模型、潜在语义索引、神经网络
其他概率模型 BM25模型, 语言模型, 随机差异模型, 贝叶斯网络

结语

  检索的模型有很多种,并不能说哪一种更好,因为判定的标准不是唯一的。

  尽管如此,检索模型仍然没有达到完美的终点,还需要更多的研究。在为了得到良好结果而做的努力中,检索模型是一个基础,为了面对不同的文档集和不同的查询需求,模型是可能被同时结合到搜索引擎中并且由搜索引擎所调度的。

posted @ 2017-07-27 14:53  stackupdown  阅读(1867)  评论(0编辑  收藏  举报