【阅读笔记】《信息检索导论》第一章 布尔检索

    科技2024-12-04  25

    【阅读笔记】《信息检索导论》第一章 布尔检索

    信息检索布尔检索模型词项-文档关联矩阵(incidence matrix)倒排索引(inverted index) 对基本布尔操作的扩展(beyond term search)查询模型的改进方向

    信息检索

    定义:信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。

    非结构化数据:没有清晰和明显语义结构的数据。 半结构化数据:通过显式的标记来体现语言结构的数据(如网页中的结构标签)。

    推荐系统是general query search 是一种特殊的IR任务,用户没有显示的给出query

    分类:

    Web搜索(web search) 大规模分布式文档的检索面向企业、机构和特定领域的搜索(domain-specific search) 对公司内部文档、专利库或生物医学文献等的搜索个人信息检索(personal information retrieval) 操作系统或系统应用中融合的信息检索功能

    布尔检索模型

    对于(1)大规模文档集(2)更灵活的匹配方式,如NEAR操作符,’5个词内‘或’同一句中‘ (3)需要对结果进行排序。这些情况下,就不能再采用线性扫描(如unix系统中grep指令)的方式。一种非线性扫描的方式是实现给文档建立索引(index)。

    grep is line oriented IR is document oriented

    词项-文档关联矩阵(incidence matrix)

    词项(term):索引的单位,通常用词来表示 文档(document):检索系统的检索对象,可以是单独一条记录或者是一本书的各章 文档集/语料库(collection/corpus):所有文档的集合

    矩阵从行看,可以得到每个词项对应的文档向量,表示词项在哪些文档出现或不出现 从列来看,可以得到每个文档对应的词项向量,表示文档中哪些词项出现或不出现。 1表示出现,0表示不出现。

    词项-文档关联矩阵的布尔查询处理 对于采用AND、OR及NOT等逻辑操作符连接起来的布尔表达式查询,通过对文档向量间逻辑操作来得到查询结果。

    例:为响应查询 Brutus AND Caesar AND NOT Calpurnia,我们分别取出 Brutus、Caesar 及 Calpumia 对应的行向量,并对 Calpumia 对应的向量求反,然后进行基于位的与操作,得到: 110100 AND 110111 AND 101111 = 100100 结果向量中的第 1 和第 4 个元素为 1,这表明该查询对应的剧本是 Antony and Cleopatra 和 Hamlet。

    倒排索引(inverted index)

    对于词项个数和文档规模很大的情况,构造出的关联矩阵是高度稀疏的。只记录原始矩阵中1的位置的表示方法比词项-文档关联矩阵更好,因此引出了倒排索引。

    **索引(index)**由一部字典(dictionary)和一个全体倒排记录表(postings)组成。

    建立索引的主要步骤如下: 1、收集需要建立索引的文档 2、将每篇文档转换成一个个词条(token)的列表,这个过程称为词条化(tokenization)或者切词。 3、进行语言学预处理,产生归一化的词条来作为词项(去掉复数标记等 ) 4、对所有文档按照其中出现的词项来建立倒排索引

    上图表现了构建倒排索引的过程。 1、给每篇文章的所有词项加上文档ID 2、按照字母顺序排序 3、将同一词项合并,并将词项与文档ID分开存储(词典存储在内存中,记录表存储在磁盘中)

    注:在字典的每个词项中还可以存储其他信息,如文档频率 每个倒排记录表存储了词项出现的文档列表,还可以存储词项频率(词项在文档中出现的次数)、词项在文档中出现的位置。

    基于倒排索引的布尔查询处理 例:对于Brutus AND Calpurnia这样的布尔查询,首先在字典中分别定位Brutus和Calpurnia,并返回其倒排记录表(posting lists)。对两个倒排记录表求交集(intersect),也称合并。

    对于两个有序记录表的合并算法如下

    查询优化 对于更加复杂的查询,可按照词项的文档频率(即倒排记录表的长度)从小到大依次处理,这使得中间结果(多个布尔操作组合起来的query,会产生中间结果)的大小都不会超过最短的倒排记录表。

    布尔查询适合精确查询(法律领域等)

    对基本布尔操作的扩展(beyond term search)

    严格的布尔运算所得到的无序结果集合远远不能使用户满意,故可在系统中加入更多的操作: 1、邻近操作符(proximity) :用于指定查询中两个词项应该互相靠近 2、短语查询(phrase search): 可以看成特殊的邻近操作符 3、尾通配符查询

    例:空格表示逻辑“ 或” 关系,&表示 AND,/s、/p 及/k 分别表示处 于同一句子、段落和 k 个词之内。双引号表示的是短语查询(phrase search,即多个词连续出现, 参见 2.4 节),感叹号(!)表示尾通配符查询(参见 3.2 节)

    查询模型的改进方向

    1、容忍拼写错误及查询和文档中词语表达不一致时的检索方法 2、对复合词或短语的搜索 3、通过引入词项频率(词项在文档中出现的次数)等,得到文档相关的可信度,而不是简单的词项存在与不存在。 4、对返回结果排序

    Processed: 0.009, SQL: 8