北理工--信息检索课件-4 索引技术 PART2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 利用 k-gram 索引来查找与查询具有很多公 共 k-gram 的词项。 • 只要对“具有很多公共 k-gram”进行合理 定义。 • 实际上是对查询字符串 q 中 k-gram 的倒排 记录表进行单遍扫描的过程。
查询bord: 返回包含上面 3 个 2-gram 中的至少 2 个词项,对 倒排记录表的单遍扫描(会返回满足该条件的所 有词项:aboard、boardroom 及 border。
哈希表
• 每个词项通过哈希函数映射成一个整数 • 难以处理查询词项存在轻微变形的情况 (如单词resume的重音符和非重音符版本) • 很难处理前缀式查询, 如查找以automat开始 的词项所在的文档 • 哈希函数可能在几年内很快失效
搜索树
B-tree
通配符查询
• 通配符查询往往适用于如下任何一种场景:
• 用字符$来标识词项的开始或者结束:
– $ca、cas、ast、stl、tle 、le$
查询处理
• 对于给定的查询,引入$符号,旋转,在k-gram索引 中进行布尔查询,得到terms • 对terms在倒排索引中查询,得到最终结果。
查询处理
例1:查询 re*ve
– 构造布尔查询 $re AND ve$ – 查询k-gram表,得到relive、remove 及 retrieve 的词项 – 在普通倒排索引中查找这些返回的词项
方法分类
• 词项独立(isolated-term)的校正:
– 每次只考虑一个词项的校正,也就说在校正时 词项之间是相互独立的。 – 很难检测到上下文错误,如:查询 flew form table, jump onto river.
• 上下文敏感(context-sensitive)的校正。
编辑距离
(1) 用户对查询的拼写不太确定(比如,如果不能确 定是 Sydney 还是 Sidney,就采用通配符查询 S*dney); (2) 用户知道某个查询词项可能有不同的拼写版本, 并且要把包含这些版本的文档都找出来(比如color 和 colour); (3) 用户查找某个查询词项的所有变形,这些变形可 能还做了词干还原,但是用户并不知道搜索引擎是否 进行了词干还原(比如 judicial 和 judiciary,可采用通 配符查询 judicia* ); (4) 用户不确定一个外来词或者短语的正确拼写形式 (如查询 Universit* Stuttgart)。
• 搜索引擎通常通常将这些功能隐藏在高级 搜索下。
拼写校正
• carot corrot
拼写校正基本的原则
• (1) 对于一个拼写错误的查询,在其可能的 正确拼写中,选择距离“ 最近” 的一个。 • 2) 当两个正确拼写查询邻近度相等(或相 近)时,选择更常见的那个。
– 语料库 – 检索日志 – Eg:grnt grant,grunt
基于发音的校正技术
• 拼写错误的原因在于用户输入了一个和目 标词项发音相似的查询 • 该思路最早源于国际警察部门的工作:在 全球范围内寻找与犯罪嫌疑人发音相似的 人名
soundex
• 构建: (1) 将所有的词项转变为四字符的简化形式,该 索引被称为 soundex 索引。 (2) 对查询词项进行同样的操作; (3) 在 soundex 索引中搜索。
• 给定两个字符串 ,两者的编辑距离定义为将 s1 转 换成 s2 的最小编辑操作数。
– (i) 将一个字符插入字符串; – (ii) 从字符串中删除一个字符; – (iii) 将字符串中的一个字符替换成另外一个字符。 带权重的编辑距离:
时间复杂度: O (|s1 | × |s2 |)
拼写校正中的 k-gram 索引
将 B、F、P 和 V 转换为 1; 将 C、G、J、K、Q、S、X 和 Z 转换为 2; 将 D 和 T 转换为 3; 将 L 转换为 4; 将 M 和 N 转换为5; 将 R 转换为 6。
(4) 将连续出现的两个同一字符转换为一个字符直至再没有这种现 象出现。 (5) 在结果字符串中剔除0,并在结果字符串尾部补足 0,然后返 回前四个字符(一个字母加上 3 个数字) 例:Herman H655
拼写校正的服务方式
• (1) 输入查询 carot,系统往往在返回包含 carot 的文档的同时,也返回包含 carot 多种可能拼 写校正结果(如 carrot 和 tarot)的文档。 • (2) 当 carot 不在词典中时,采用第 1 种做法。 • (3) 当原始查询返回的文档结果数目少于预定 值(比如少于 5 篇文档)时,采用第 1 种做法。 • (4) 当原始查询返回的文档数目少于预定值时, 搜索界面中会给用户提供一个拼写建议 (spelling suggestion),建议中会包含拼写校 正之后的结果。因此,这实际上相当于搜索引 擎和用户进行交互:“你是在找 carrot 吗”?
• 例2:查询red*
– 构造布尔查询 $re和red – 返回中包含retired,进行后过滤(postfiltering) – 普通查询
discussion
• 通配符查询的处理是非常耗时的:除了最 后要在普通倒排索引中查找之外,还要:
– 在特定索引(如轮排索引或 k-gram 索引)中进 行查找、 – 在结果中进行过滤等操作
• 采用雅可比系数(Jaccard coefficient)就可 以对先前的线性扫描合并方法进行修正: J =|A∩B|/|A∪B| 输出雅可比系数超过预定的阈值的索引项。
combination
• 编辑距离 + K-GRAM:
– 首先使用 k-gram 索引返回可能是q 的潜在正确 拼写形式的词项集合,然后计算该集合中的每 个元素和 q 之间的编辑距离并选择具有较小距 离的那些词项。 – 限制计算编辑距离后得到的词汇表大小 – 提高性能
• 我们可以利用这一点来加速数据的传输过 程,比如将数据进行压缩然后再存储在磁 盘上。假定采用一种高效的解压缩算法的 话,那么读磁盘压缩数据再解压所花的时 间往往会比直接读取未压缩数据的时间要 少。
• IR 系统的服务器往往有数 GB 甚至数十 GB 的内存 • 服务器磁盘空间大小一般比内存大小要高 几个数量级:TB-PB。
• 因为通配符*在查询字符串末尾仅出现一次, 所以一个诸如 mon* 的查询称为尾通配符查询 (trailing wildcard query)。 • 基于搜索树的词典结构对于处理尾通配符查询 来说非常方便。 • 反向 B-树(reverse B-tree)结构,处理首通配 符查询:*mon 形式的查询。
查询处理
查询 m*n: • 进行旋转让*号出现在字符串末尾, 即得到 n$m* 。 • 倒排索引中布尔查询。
多个通配符
• 如 fi*mo*er如何查Байду номын сангаас?
– 首先返回轮排索引中 er$fi*对应的词项集合, – 然后通过穷举法检查该集合中的每个元素,过 滤掉其中不包含 mo 的词项。
上例中,最终会选出 fishmonger,而过滤掉 filibuster。
回目录
4 索引构建
• • • • • 4.1 硬件基础 4.2 基于块的排序索引方法 4.3 内存式单遍扫描索引构建方法 4.4 分布式索引构建方法 4.5 动态索引构建方法
4.1 硬件基础
0.01us = 10-8s
IR 系统的设计相关的硬件基本性能参数
• Caching:访问内存数据比访问磁盘数据快 得多( 5 × 10 −9s VS 2 × 10 −8s),尽可能 地把数据放在内存中.
– 最后,普通倒排索引查询。
轮排索引的缺点
• 轮排索引的一个最大缺点是其词典会变得 非常大,因为它保存了每个词项的所有旋 转结果。
• 对于一部英语词典来说,这种增长可能达 到 10 倍左右。
支持通配符查询的 k-gram 索引
• k-gram:由k 个字符组成的序列
– Castle的3-gram: cas、ast、stl、tle
root-n-o-m-e-l。
• 同时使用B-树和反向B-树,我们可以处理更一 般的单通配符查询,比如se*mon。
一般方法
通配符查询 qw 布尔查询Q
过滤 普通查询
轮排索引
• 我们在字符集中引入一个新 的符号$,用于标识词项结 束。
• 对原始词轮转,生成所有可 能的轮转结果。并指向原始 词。
• 轮排词汇表:可以采用查询 树存储
回目录
词典及容错式检索
• • • • 词典搜索的数据结构 通配符查询 拼写校正 基于发音的校正技术
回目录
词典搜索的数据结构
• 给定倒排索引及查询,那么我们的首要任 务是确定每个查询词项是否在词汇表中 • 两大类解决方案:哈希表方式和搜索树方 式。
(1) 关键字的数目有多少? (2) 关键字的数目是固定的还是经常变化?在变 化的情况下,是只插入新关键字,还是同时要删 除某些旧关键字? (3) 不同关键字的相对访问频率如何?
– 高频常见的查询
– 每个词都非常常见,但是组合起来却相对很少 见
• Britney Spears V.S. The Who
• Williams 等人 (2004) 评估了一个更复杂的混 合索引机制,其中除了包含上面两种形式 的索引外,还在它们之间引入了一个部分 后续词索引(next word index),即对每个 词项,有个后续词索引记录了它在文档中 的下一个词项。 • 论文的结论是,虽然比仅仅使用位置索引 增加了 26%的空间,但是面对典型的 Web 短语混合查询,其完成时间大概是只使用 位置索引的 1/4。
• 寻道时间: 平均在 5 ms 左右。 • 寻道时间:连续读取的数据块也应该在磁 盘上连续存放。 • 例:大概只需要 0.2 秒钟就可以将一个连续 存放的 10MB 数据块从磁盘传输到内存,但 是如果上述数据存放在 100 个非连续的块 中,那么,需要移动 100 次磁头,因此总 时间可能会需要 0.2 + 100 × (5 × 10 −3 ) = 0.7 s。
四字符简化方法
• Observation:
(1) 在名称转录时,元音是可以互换的; (2) 发音相似的辅音字母归成同一类。 这就会导致相关的名称通常有相同的 soundex 编 码结果。
• 汉语可以用拼音进行操作。
四字符简化方法
(1) 保留词项的首字母。 (2) 将后续所有的A、E、 I、 O、 U、 H、W 及 Y 等字母转换为 0。 (3) 其他字母的转换规则如下:
• 操作系统往往以数据块为单位进行读写。 因此,从磁盘读取一个字节和读取一个数 据块所耗费的时间可能一样多。数据块的 大小通常为 8 KB、16 KB、32 KB 或 64 KB。 我们将内存中保存读写块的那块区域称为 缓冲区(buffer)。
• 数据从磁盘传输到内存是由系统总线而不 是处理器来实现的,这意味着在磁盘 I/0 时 处理器仍然可以处理数据。
Introduction to information Retrieval
Talk 4 Indexing
Lin Dai dailiu@bit.edu.cn 2012.9
提纲
1. 2. 3. 4. 5. 布尔检索 支持短语检索的索引 词典及容错式检索 索引构建 索引压缩
回目录
混合索引机制
• 二元词索引和位置索引这两种策略可以进 行有效的合并: 对某些查询使用短语索引或 只使用二元词索引,而对其他短语查询则 采用位置索引。 • 短语索引所收录策略:
相关文档
最新文档