信息检索导论三:词典及容错式检索

词典

image
  1. 词典定义:是指存储词项词汇表的数据结构

    • 词项词汇表(Term vocabulary): 指的是具体数据

    • 词典(Dictionary): 指的是数据结构

  2. 词汇表的查找主要有两大类解决方案:哈希表方式、搜索树方式

    1. 哈希表

      1. 每个词项通过哈希函数映射成一个整数

      2. 缺点:

        • 没办法处理词项的微小变形 (resume vs. résumé)

        • 不支持前缀搜索 (比如所有以automat开头的词项)

        • 如果词汇表不断增大,需要定期对所有词项重新哈希

        image
      1. 优点:可以支持以automat开始的前缀式查询

      2. 二叉树、B-树

        1. B-树定义:每个内部节点的子节点数目在 [a, b]之间,其中 a, b 为合适的正整数, e.g., [2, 4].
        image
        image

通配查询

  1. 使用场景:mon*: 找出所有包含以 mon开头的词项的文档

    查询 mon*,我们可以依次按照字符 m、o、n 从上到下遍历搜索树,直到能列举词典中所有 以 mon 开头的词项集合 W 时为止。最后,在普通倒排索引中进行|W|次查找后取出 W 中所有词项对应的文档

  2. 问题:*mon 形式的查询。

    1. 此时可以引入词典的反向 B-树(reverse B-tree)结构--词项 lemon 在反向B—树中的路径就是 root-n-o-m-e-l。

    2. 通过B-树来返回所有前缀为se且后缀非空的词项子集W,再通过反向B-树来返 回所有后缀为mon且前缀非空的词项子集R。然后,对W和R求交集W ∩ R,之后对交集进行扫描, 当前缀和后缀相同时去掉它们对应的词项

轮排索引

  1. 新的符号 $ :用于标识词项结束

  2. 构建一个轮排索引,其中对扩展词项的每 个旋转结果都构造一个指针来 指向原始词项

    image
  3. 查找过程

    1. 将查询进行旋转,将通配符旋转到右部 通配符查询 m*n,

    2. 同以往一样查找B-树 / 在轮排索引中查找n$m*

    3. 通过倒排索引查找词项对应的文档

  4. 缺点:词典会变得非常大,因为它保存了每个词项的所有旋转结果

支持通配符查询K-gram

  1. 一个 k-gram 代表由 k 个字符组成的序列

  2. $:词项的开始或者结束

  3. 对于 castle 来说,所有的 3-gram包括ca、cas、ast、stl、tle 及 le$

  4. eg: 成都五月广场/成都吾悦广场

  5. k-gram 索引结构也是一种倒排索引结构,它也包括词典倒排记录表两部分,这里的词典就是 k-gram 表,而倒 排记录表保存的是所有包含该 k-gram 的词项

    eg:
    image
  6. 区分:

    1. 词典-文档的倒排索引基于词项返回文档

    2. k-gram索引用于查找词项,基于查询包含的k-gram查找词项

  7. 特殊情况:

    特殊情况1:3-gram

    1. 3-gram,查询red*

    2. re AND red$,希望返回如 relive、remove等

    3. 返回retired(对retired来说,3-gram包含re、ret、……red)

    特殊情况2:2-gram

    1. 查询mon*

    1. 布尔查询: $m AND mo AND on

      1. moon
    2. 需要后续过滤

k-gram索引 vs. 轮排索引

  1. §k-gram索引的空间消耗小

  2. §轮排索引不需要进行后过滤

拼写校正

用户输入 carot 时,实际上可能想返回包含词项 carrot的文档

  1. 方法

    1. 词独立(Isolated word)校正

      1. 其每次只考虑一个词项的校正,也就说在校正时词项之间是相互独立的

      2. 与词汇库中的所有词汇相比eg:哈尔滨、哈尔冰

      3. 编辑距离方法

        1. 定义:给定两个字符串s1及s2,两者的编辑距离(edit distance)定义为将s1转换成s2的最小编辑操 作(edit operation)数

        2. 采用的基本操作是插入(insert)、删除(delete)和替换(replace)

          image
        3. 矩阵四个方块代表的含义

          image
        4. 编辑距离计算例子 cat——catcat

          image
        5. 从计算结果返回操作

          image
          1. 从左方到来的红格:insert c

          2. 从左方到来的红格: insert ca

          3. 从左方到来的红格: insert cat

        6. 从左上方到来的红格:copy catc !与最左列对应

      4. k-gram 重合度

    2. 上下文敏感校正

你可能感兴趣的:(信息检索导论三:词典及容错式检索)