索引和查找 胡晓光 信息检索实验室.

Slides:



Advertisements
Similar presentations
信息检索中效率问题的研究 报告人:赵江华 北京大学计算机科学与技术系 网络与分布式系统实验室 2002年4月21日.
Advertisements

英语词典的维护和识别 题集P168,课本P249 问题描述:
Trie 魏楚.
OrientX4.0系统开发报告 XML Group July 25, 2009.
小学生游戏.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Zn 模式匹配与KMP算法 Zn
Signutil.
Hadoop I/O By ShiChaojie.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
检索的改进技术 哈工大信息检索研究室 2007.
Lexicographical order VS canonical order
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
Cyclic Hanoi问题 李凯旭.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
Online job scheduling in Distributed Machine Learning Clusters
What have we learned?.
逆向工程-汇编语言
动态规划(Dynamic Programming)
String Matching Michael Tsai 2012/06/04.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
SOA – Experiment 2: Query Classification Web Service
从zval看PHP变量
编程作业3:网页正文抽取 (10分).
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
大綱 *專題演講介紹 *大陸醫療的改革與發展 *海報發表文章分享 2012海峽兩岸醫院院長論壇行後報告 ‧台北
新PQDT论文全文库提交平台.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
顺序表的删除.
直接扫描保存成TIF格式, 其他图片格式用Windows XP自带的 Windows图片与传真查看器打开
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第三章 暴力法.
第二章 Java基本语法 讲师:复凡.
String Matching Michael Tsai 2013/05/28.
顺序查找.
用计算器开方.
Web安全基础教程
ES 索引入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第七、八次实验要求.
SpringerLink数据库使用说明 上海师范大学图书馆
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
生 物 信 息 学 Bioinformatics 巩晶 癌症研究中心 山东大学 医学院
总复习.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chinese Virtual Observatory
第四章 UNIX文件系统.
第十七讲 密码执行(1).
插入排序的正确性证明 以及各种改进方法.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
汉语分词:最大匹配方法 (6学时) 陈文亮 2016年3月14日.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

索引和查找 胡晓光 信息检索实验室

提纲 顺序查找 索引查找 签名文件 倒排文件 PAT树(Patricia tree) 关于压缩

说明 索引和查找的关系 查找和查询的区别 文本压缩和索引压缩的区别 索引和查找其实是密不可分的 建索引时必须不断的执行查找操作 查找(search) 如何在索引中定位关键词信息 查询(query) Query处理:如何根据用户输入确定关键词 检索模型:如何利用查找返回的信息计算相似度等 文本压缩和索引压缩的区别 注意文本压缩不能有效地减少索引文件的大小

顺序查找 精确匹配算法 容错匹配算法 正则表达式和扩展模式 Brute Force Knuth-Morris-Pratt Boyer-Moore Shift-Or Suffix Automaton 容错匹配算法 Dynamic Programming Non-deterministic Finite Automaton Bit-Parallelism 正则表达式和扩展模式

索引 索引文件 为方便查找,描述原文件信息组织的文件 签名文件,倒排文档,后缀树都是索引文件

签名文件 Karp-Rabin匹配思想 Karp-Rabin匹配例子 假设我们现在要判断字符串A和字符串B是否匹配 把A和B分别散列成数字hash (A)和hash (B) 如果hash (A) != hash (B) 则A != B 然而hash (A) = hash (B) 不能说明 A =B Karp-Rabin匹配例子 关键词 x[0..5 ]: A A C T C T Hash( x[0..5] ) = 17579 文本y[0..9 ]: G C A A C T C T C A Hash( y[0..5] ) = 17819 文本y[0..9 ]: G C A A C T C T C A Hash( y[1..6] ) = 17533 文本y[0..9 ]: G C A A C T C T C A Hash( y[2..7] ) = 17579

签名文件 文档的签名 重叠编码(superimposed coding) 错误匹配(False drop) 把文档中的关键词散列成F位的位串Signature 顺序访问原文档的关键词,把散列所得的位串依次存入文件 重叠编码(superimposed coding) 我们不需要为每个关键词都保存一个Signature 多个关键词共用一个Signature可以减少文件的长度 错误匹配(False drop) 由于重叠编码和哈希冲突的原因,关键词和Signature不是一一对应的关系 Signature匹配并不能保证关键词一定出现,还需要检查

签名文件 Block 1 Block2 Block3 Block4 This is a text. A text has many words. Words are made from letters. 文本 000101 110101 100100 101101 签名文件 h(text) =000101 h(many) =110000 h(words) =100100 h(made) =001100 h(letters) =100001

签名文件 优点 缺点 总之 文件组织简单,基本和原文档顺序一致 维护容易,生成,插入,删除都很方便 所需空间小,特别是采用重叠编码之后 检索速度慢,需要顺序扫描 并且,当False Drop发生的时候需要比较原文档 总之 签名文件是倒排文档和全文扫描之间的折中

倒排文件 倒排索引思想 倒排文件组成 每个文档都可以用一系列关键词来表示 如果按关键词建立到文档的索引便可以根据关键词快速地检索到相关文档 词汇表(Vocabulary) 根据Heap’s定律,通常比较小O (n), : 0.4~0.6 通常我们称存放词汇表的文件为索引文件(index file) 出现位置(Occurrence) 较大,O(n),通常在原文本的30%~40% 通常我们称存放出现位置的文件为置入文件(posting file)

倒排文件 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters. Text Vocabulary Occurrences addressing granularity: inverted list – word positions character positions inverted file – document letters 60 … made 50 … many 28 … text 11, 19 … words 30, 40 …

倒排文件 块地址索引 有时候为了节省索引空间,可按块地址建索引 把原文划分为多个块,只记录关键词的块地址 Block1 Block2 Block3 Block 4 This is a text. A text has many words. Words are made from letters. Vocabulary Occurrences Text letters 4 … made 4 … many 2 … text 1, 2 … words 3 … Inverted index

倒排文件 倒排文件的性能 词汇表文件的组织方式 置入文件的压缩 时间代价主要取决于词汇表的组织方式 空间代价主要取决于对置入文件的压缩能力 词表文件通常较小且比较固定 对于未登录词和数词可以按字建索引 空间代价主要取决于对置入文件的压缩能力 置入文件的压缩能减少IO操作,也能提高部分时间性能 词汇表文件的组织方式 采用Hash散列表 按字母表顺序有序排列 采用Trie树,B树等查找树 置入文件的压缩 通常采用差值压缩(delta compression)

倒排文件 词汇表的哈希存储 优点 缺点 根据给定的关键字,散列成一个整数 用该整数作为词汇的访问地址 例如:如果我们按字索引,那么可以直接用字的编码 作为访问地址,对于2字节编码只需64K地址 优点 实现简单 速度极快 缺点 关键在于找到一个好的散列函数 随着现在散列空间的增大,问题相对简单 当冲突过多时效率会下降

倒排文件 词汇表的顺序排列 优点 缺点 把词汇按照字典顺序排列 词汇的查找采用二分查找 实现简单 词汇表体积小(通常只有几兆) 实现简单 词汇表体积小(通常只有几兆) 缺点 索引构建的效率一般 对于插入的文档需要反复地调用排序和查找算法 排序的时间复杂度为N*log N (分配排序例外) 索引合并时还需要堆排序等方法合并多个有序的词汇表 如果合并最主要的时间开销在于IO操作的话,这点还是次要的 检索的效率一般 二分查找logN的复杂度已经具有较好的效率 能不能变成和词汇数量无关的常数复杂度

倒排文件 Lucene的词汇表即采用这种方式 假设现在词表中有16,000个词 indexInterval=16 则在词表中需要查找次数为16+log(1000) = 26次

倒排文件 词汇表的查找树 二叉查找树 B树 Trie 树 把词汇表中的关键词以树的形式组织 二叉树,B树,Trie 等 考虑到平衡性,性能低于二分查找 B树 是多路查找树,效率高于二叉树,实现更麻烦 Trie 树 查找时间只跟词的长度有关 而于词表中词的个数无关 词表较大时才能体现出速度优势 Log (词表长度) > E(词长) E表示期望

Trie树 什么是trie树 例如,电子英文词典,为了方便用户快速检索英语单词,可以建立一棵trie树。 根据这一序列构造用于检索的树结构。 在trie树上进行检索类似于查阅英语词典。 例如,电子英文词典,为了方便用户快速检索英语单词,可以建立一棵trie树。

词典单词:a、b、c、aa、ab、ac、ba、ca、 aba、abc、baa、bab、bac、cab、abba、baba、caba、abaca、caaba

Trie树 优点 缺点 查找效率高,与词表长度无关 索引的插入,合并速度快 所需空间较大 实现较复杂 Trie树的查找效率只与关键词长度有关 目前我们分词词表最长的词为13个字 “大不列颠及北爱尔兰联合王国” 事实上索引词表中词过长会降低检索召回率 用户如果只输入“北爱尔兰”则无法返回该结果 索引的插入,合并速度快 注意,直接遍历Trie树需要搜索大量的无效节点 可以把数据存在一个数组中,Trie只保存指针 这样合并时,只需要对数组进行遍历即可 缺点 所需空间较大 如果是完全m叉树,节点数指数级增长 好在Trie不是,但所需空间仍然很大 不可达上限: 词数 ×字符序列长度 ×字符集大小 ×指针长度 例如:20000 × 6 × 256 ×4 =120M 实现较复杂

差值压缩(Delta Compression) 置入文件 置入文件必须包含如下信息 当前词出现的文档号ID,以及在文档中的位置Pos 差值压缩 记录当前ID和前一ID的差值 记录当前Pos和前一Pos的差值 这样做能有效减少表示ID,Pos所需的字长 例如:关键词A在文档13,124,346中出现 如果不压缩,由于346>256,需要要两个字节 而346-124=222<256,只需一个字节 应用实例 Lucene对词汇表和置入文件都采用了这种压缩

PAT树(Patricia tree) 什么是Patricia树 后缀树(Suffix tree) 后缀数组(Suffix array) Patricia树是Trie树的压缩表示 所有只有一个子节点的节点都和父节点合并 后缀树(Suffix tree) 以文本所有后缀为关键词的Patricia树 后缀树的引入主要是针对字符串的高效查找 子串查找 最长重复子串 最长公共子串 回文子串 后缀数组(Suffix array) 按后缀树的先根遍历顺序,存储后缀

This is a text. A text has many words. Words are made from letters. 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters. Text Suffix Trie 60 ‘l’ 50 ‘d’ ‘m’ ‘a’ 28 space overhead: 120%~240% over the text size ‘t’ ‘n’ 19 ‘e’ ‘x’ ‘t’ ‘w’ 11 40 ‘o’ ‘r ‘d’ ‘s’ 33 60 Suffix Tree ‘l’ 50 ‘d’ ‘m’ 1 3 28 ‘n’ 19 ‘t’ 5 11 ‘w’ 40 6 33

difference between suffix array and inverted list suffix array: the occurrences of each word are sorted lexicographically by the text following the word inverted list: the occurrences of each word are sorted by text position 1 6 9 11 17 19 24 28 33 40 46 50 55 60 This is a text. A text has many words. Words are made from letters. Vocabulary Supra-Index Suffix Array Inverted list

关于压缩 文本压缩 顺序查找 索引查找 只对文本预处理时所采用的编码压缩技术 文本压缩能有效减少文本的存储空间 由于查找空间减少,能有效提高查找速度 索引查找 文本压缩能减少词汇表的存储空间 文本压缩对置入文件的存储空间没有影响 查找效率(不考虑文本预处理时间) 一方面增加了对查找关键词进行编码转换的时间 另一方面可以减少查找词表的时间 对于顺序词表,可以减少关键词比较时的时间 对于Trie 词表,可以使常用词用较短编码,减少E(词长)

谢谢!