首页 > 代码库 > 【搜索引擎(三)】检索模型
【搜索引擎(三)】检索模型
检索模型的目的
现实中搜索引擎的检索策略复杂多变,但是分析起来,核心的目的就两个,为了:
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模型, 语言模型, 随机差异模型, 贝叶斯网络 |
结语
检索的模型有很多种,并不能说哪一种更好,因为判定的标准不是唯一的。
尽管如此,检索模型仍然没有达到完美的终点,还需要更多的研究。在为了得到良好结果而做的努力中,检索模型是一个基础,为了面对不同的文档集和不同的查询需求,模型是可能被同时结合到搜索引擎中并且由搜索引擎所调度的。
【搜索引擎(三)】检索模型