• 信息检索导论学习笔记 --第一章 布尔检索


    信息检索(informagto retrieval) 是从大规模非结构化数据(通常是文本)的集合中找出满足用户信息需求的资料

    文档document

    所有文档组成“文档集“(collection), 有时也称“语料库”(corpus)

    查询(query)

    相关的(relevant)

    正确率(precision): 返回结果中 真正和信息需求相关的文档所占比例

    //给出的结果,多少是真正需求的

    召回率(recall): 所有和信息需求真正相关的文档中被检索系统返回的百分比

    //真正的信息需求有多少出现给出的结果

    假如我们建立一个 词项-文档的矩阵:

                             doc1      doc2     doc3

    hello                    1          0          1

    caeasar               0           0          1

    mercy                  0          1          0

    假如我们有50w个词,100w的文档,那么矩阵的大小就是50w*100w, 太大了,而且这个矩阵很多项多是0,那么就是稀疏矩阵。

    建立倒排索引(inverted index)来解决。

    Image

    如上图,左边称为词项字典(dictionary), 右边成倒排记录(posting), 记录该词项出现在哪些文档中

    1.2 构建倒排索引

    1 收集需要建立索引的文档

    2 将文档换成一个个词条(token), 该过程成为(tokenization)

    3 预处理,归一化词项

    4对所有文档按照其中出现的词项来建立倒排索引,索引中包括一部词典和一个全体倒排记录表

    如下图,先列出词,然后排序,然后生成倒排记录,同事记录文档频率(document frequency)

    Image(1)

    1.3 布尔查询

    比如查询  brutus and calpurnia

    Image(2)

    也就是取交集。合并算法如下

    Image(3)

    利用这种排序方法,则需要对倒排记录表排序。

    查询优化( query optimization)

    从小到大依次进行处理,如果我们先合并两

    个最短的倒排记录表,那么所有中间结果的大小都不会超过最短的倒排记录表。

    对于任意的boolean查询,我们必须保存临时结果Image(4)

    boolean查询的一些高级用法:

    Image(5)

    空格 表示或,&与, /s 同一个句子, /p同一个段落,/k k个词之内,等。可见布尔查询更适合专业人员。

    和布尔检索模型相对的是排序检索模型或有序检索模型( ranked retrieval model)(也即给出排序的结果,现在的搜索模式)。 后者不是具有精确予以的逻辑表达式,而是采用一个或多个词构成自由文本查询(free text query) (也即更复杂)

    按照逻辑AND OR的布尔查询会导致召回率与正确率的两个极端,但是很难达到均衡。

  • 相关阅读:
    函数响应式编程
    RxSwift
    Swift 5.1 新语法
    MVVM
    SwiftUI 九
    SwiftUI 八
    SwiftUI制作View可嵌套组件
    Swift 5.1 新语法
    MVVM
    Linux系统修改hostname,不用重启
  • 原文地址:https://www.cnblogs.com/Dzhouqi/p/3973536.html
Copyright © 2020-2023  润新知