zoukankan      html  css  js  c++  java
  • 《信息检索导论》第七章总结

     

    一、打分排序的特性

    其实对于打分排序来说,我们最终只需要确定文档的相对顺序即可,因此我们可以简化打分的算法,只需要保持相对顺序不变即可;

    二、快速排序及打分方法

    我们前面的打分排序方法都需要计算查询及每篇文档的余弦相似度,然后需要取出打分最高的前K篇文档,这样做的复杂度是很高的;其实如果有一个算法能够近似求出前K篇文档但是复杂度少很多(不需要计算所有文档的得分),则我们通常会采用后一种算法;

    通用方法:预先找到文档子集A(远小于初始文档集),包含了大多数的候选文档,并在A中计算得分最高的前K篇文档;以下方法都是基于这个规则计算的;

    1.索引去除技术

    (1)只考虑term的idf超过阈值的posting;因为低idf的term通常是stop words,posting非常长,所以不计算这些将使复杂度大大降低,因此不必考虑;

    这里会出现超过阈值的doc没超过K篇,则需要使用层次型索引解决;

    层次型索引:将倒排记录表进行分层,比如tf超过20的在第一层,tf超过10的在第二层,当需要查找前K篇文档时,只需要先在第一层查找,如果没取够K篇,则到第二层查找;

    因此层次型索引是解决可能返回文档少于K篇的方法;

    (2)只考虑包含多个查询词项的文档;

    2.胜利表法

    胜利表(champion list):对于词项t,预先取出posting的tf值最高的r篇文档,此序列称为胜利表;

    给定一个查询Q,我们只需要求Q中的每个词项的胜利表的并集,此并集就是通用方法所说的文档子集A,并在A中计算余弦相似度;

    3.静态得分排序法Static quality Score

    每篇文档都有一个与查询无关的静态得分g(d),倒排索引中的posting按照g(d)进行降序排列;

    而最后的得分是Score(q,d)=g(d)+v(q)v(d);

    在第二十一章所说的PageRank是一个静态质量得分,是一个基于网页链接分析的打分;

    4.分层搜索排序

    对于词项t,维持两个表:高端表(tf值最高的m篇文档)和低端表(其余文档),都以g(d)排序;

    取出打分最高的K篇文档方法:先计算高端表的得分,如果已经在高端表已经能够取出K篇得分最高的文档,则结束;否则,其余的在低端表中取;

    5.cluster pruning

    leader:在N篇文档中找到(根号N)篇文档作为leader;

    follower:每个leader都有(根号N)个follower,表示与leader距离较近;

    查询方法:给定查询Q,先与每个leader计算余弦相似度,找到最近的leader,文档子集A为此leader+leader对应的follower;

    三、其他考虑因素

    1.查询词项邻近性

    我们希望查询词在文档中都靠的很近,这样才能够使得文档和查询更相关;

    最小窗口大小:the quality of mercy is not stained ,如果查询为:stained quality;则最小窗口大小为6(quality of mercy is not strained);

    软合取:文档不必包含全部的查询词项,只需要包含大部分的查询词项即可;

    因此有可能需要将邻近性也加入权重中;

    四、搜索引擎组成

    indexer用于生成各式各样的索引,比如参数化索引、域索引、K-gram索引、分层索引;

    向量空间模型和布尔检索模型有所不同,布尔模型只考虑词项在文档中是否存在,而不考虑出现了几次,也没有权重;

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    [LC] 71. Simplify Path
    [LC] 225. Implement Stack using Queues
    [Coding Made Simple / LeetCode 1235] Maximum Profit in Job Scheduling
    [Coding Made Simple] Cutting Rod for max profit
    [Coding Made Simple] Longest Common Substring
    [GeeksForGeeks] Convert an array to reduced form
    [GeeksForGeeks] Find if there is a pair with a given sum in a sorted and rotated array.
    [Coding Made Simple] Optimal Binary Search Tree
    [GeeksForGeeks] Write a program to delete a tree
    [GeeksForGeeks] Check if two trees are Isomorphic
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058353.html
Copyright © 2011-2022 走看看