数据挖掘以及搜索引擎经典cha
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 查询方法
– 若查询词可以在文档中找到签名对应的1,则认 为文档中包含这个项。
可编辑版
9
Indexes: 倒排文档
• 目前最常用的索引方法
• 起源为书中术语检索的方法
• Eg.
• Computer
page 8, line 12
可编辑版
10
Inverted Files
可编辑版
11
Inverted Files
可编辑版
19
Idea 1: Partition the text
• Invert a chunk of the text at a time • Then, merge each sub-indexes into one
complete index
Main inverted file 多路归并
chunk
• 索引要素
– 词 :Dictionary (lexicon) – 元数据
• document ids • word positions
可编辑版
4
Indexes: Bitmaps
• 本质上是文档的向量表示,若文档包含某 一特征词,则对应的位置上标记1,否则为 0.
可编辑版
5
Signature Files
可编辑版
16
词汇表结构
基于 Heaps 的定理,可能词汇表的尺寸很大. 常采用两种方法存放
• Hash table
– O(1) 查找时间和接近常数时间的处理冲突。 – 扩展比较麻烦
• B-Tree
– 可以利用磁盘存储空间.查找时间快。 – O(log n) 的查找时间,易于扩展。
• Trie
可编辑版
可编辑版
12
Word-Level Inverted File
可编辑版
13
倒排文档的搜索算法
1. Find query elements (terms) in the lexicon
2. Retrieve postings for each lexicon entry 3. Manipulate postings according to the
retrieval model
可编辑版
14
Word-Level Inverted File
Lexicon词汇表Posting 记录表
Query: 1.porridge & pot (BOOL) 2.“porridge pot” (BOOL) 3. porridge pot (VSM)
Answer
可编辑版
文件索引建立
可编辑版
1
为什么需要索引
• 对海量数据,全文存储在检索上太耗时, 无法再内存中进行操作。
• 索引可以快速的对包含关键词的文档进行 定位,查询时间可以和文档长度无关,只 和查询词长度有关。
可编辑版
2
和数据库索引的区别
• 数据库只索引某几项,而信息检索需 要都索引。因为数据库的查询句是固 定的,而信息检索是变化的。
1. fd,t = frequency of t in d 2. If t is not in lexicon, insert it 3. Append <d, fd,t> to postings list for t
3. Output each postings list into inverted file
23
可编辑版
24
Βιβλιοθήκη Baidu
n=8
可编辑版
25
The searching algorithm
• Starting at the root, follow the path that matches the chars of the word in a trie.
• 索引是基于未来可能查询的“项” (terms).
–来自文本中的所有词。
可编辑版
3
Indexes: 实现方法
• 有代表性的方法
– Bitmaps (位图) No positional data indexed
– Signature files (签字文件) – Inverted files (倒排文件)
可编辑版
20
Trie
In IR we need to record the position that a word appear in a document and the time it appears.
We hope we can check if a word w in a document in O(|w|) time regardness how many words in the document.
• 对每个项,给出长度为s的向量(hash函数 值)
• 把一篇文档中的所有词的向量进行OR操作, 得到的向量为文档的签名。
• 长文档肯定成为问题,解决的方法是分块 签字。
可编辑版
6
Signature File Example
可编辑版
7
Signature File Example
可编辑版
8
Indexes: Signature Files
可编辑版
21
可编辑版
22
trie
• 令S是取自的n个串的集合,d = | |,满足 S中任意串不是另一串的前缀。S的一个标 准trie是一有序树,满足:
– 除根外,每个定点的标记是中的字符 – T中的内部顶点的排序按的顺序 – T有n个叶子顶点,从根到叶子的路径的顶点标
记对应S中的一个串。
可编辑版
17
In-memory Inversion Algorithm
1. Create an empty lexicon 2. For each document d in the collection,
1. Read document, parse into terms 2. For each indexing term t,
15
倒排文件的建立
• 采用合适的数据结构,建立检索词汇表。对英文 主要采用被称为trie的数据结构。
• 1) 前面给出的词汇和记录表在一起的形式。但可 能词汇表本身很大
• 2) 词汇表和记录表分开,用指针给出对应关系。 • 3)词汇表和记录表分开,但没有直接连接指针,
而是中间用一个数据结构把两者联系起来。
1. For each term, start new file entry 2. Append each <d,fd,t> to the entry 3. Compress entry 4. Write entry out to file.
可编辑版
18
长文档的处理
• 分成若干块(chunk)处理 • 利用归并算法形成最后的索引
– 若查询词可以在文档中找到签名对应的1,则认 为文档中包含这个项。
可编辑版
9
Indexes: 倒排文档
• 目前最常用的索引方法
• 起源为书中术语检索的方法
• Eg.
• Computer
page 8, line 12
可编辑版
10
Inverted Files
可编辑版
11
Inverted Files
可编辑版
19
Idea 1: Partition the text
• Invert a chunk of the text at a time • Then, merge each sub-indexes into one
complete index
Main inverted file 多路归并
chunk
• 索引要素
– 词 :Dictionary (lexicon) – 元数据
• document ids • word positions
可编辑版
4
Indexes: Bitmaps
• 本质上是文档的向量表示,若文档包含某 一特征词,则对应的位置上标记1,否则为 0.
可编辑版
5
Signature Files
可编辑版
16
词汇表结构
基于 Heaps 的定理,可能词汇表的尺寸很大. 常采用两种方法存放
• Hash table
– O(1) 查找时间和接近常数时间的处理冲突。 – 扩展比较麻烦
• B-Tree
– 可以利用磁盘存储空间.查找时间快。 – O(log n) 的查找时间,易于扩展。
• Trie
可编辑版
可编辑版
12
Word-Level Inverted File
可编辑版
13
倒排文档的搜索算法
1. Find query elements (terms) in the lexicon
2. Retrieve postings for each lexicon entry 3. Manipulate postings according to the
retrieval model
可编辑版
14
Word-Level Inverted File
Lexicon词汇表Posting 记录表
Query: 1.porridge & pot (BOOL) 2.“porridge pot” (BOOL) 3. porridge pot (VSM)
Answer
可编辑版
文件索引建立
可编辑版
1
为什么需要索引
• 对海量数据,全文存储在检索上太耗时, 无法再内存中进行操作。
• 索引可以快速的对包含关键词的文档进行 定位,查询时间可以和文档长度无关,只 和查询词长度有关。
可编辑版
2
和数据库索引的区别
• 数据库只索引某几项,而信息检索需 要都索引。因为数据库的查询句是固 定的,而信息检索是变化的。
1. fd,t = frequency of t in d 2. If t is not in lexicon, insert it 3. Append <d, fd,t> to postings list for t
3. Output each postings list into inverted file
23
可编辑版
24
Βιβλιοθήκη Baidu
n=8
可编辑版
25
The searching algorithm
• Starting at the root, follow the path that matches the chars of the word in a trie.
• 索引是基于未来可能查询的“项” (terms).
–来自文本中的所有词。
可编辑版
3
Indexes: 实现方法
• 有代表性的方法
– Bitmaps (位图) No positional data indexed
– Signature files (签字文件) – Inverted files (倒排文件)
可编辑版
20
Trie
In IR we need to record the position that a word appear in a document and the time it appears.
We hope we can check if a word w in a document in O(|w|) time regardness how many words in the document.
• 对每个项,给出长度为s的向量(hash函数 值)
• 把一篇文档中的所有词的向量进行OR操作, 得到的向量为文档的签名。
• 长文档肯定成为问题,解决的方法是分块 签字。
可编辑版
6
Signature File Example
可编辑版
7
Signature File Example
可编辑版
8
Indexes: Signature Files
可编辑版
21
可编辑版
22
trie
• 令S是取自的n个串的集合,d = | |,满足 S中任意串不是另一串的前缀。S的一个标 准trie是一有序树,满足:
– 除根外,每个定点的标记是中的字符 – T中的内部顶点的排序按的顺序 – T有n个叶子顶点,从根到叶子的路径的顶点标
记对应S中的一个串。
可编辑版
17
In-memory Inversion Algorithm
1. Create an empty lexicon 2. For each document d in the collection,
1. Read document, parse into terms 2. For each indexing term t,
15
倒排文件的建立
• 采用合适的数据结构,建立检索词汇表。对英文 主要采用被称为trie的数据结构。
• 1) 前面给出的词汇和记录表在一起的形式。但可 能词汇表本身很大
• 2) 词汇表和记录表分开,用指针给出对应关系。 • 3)词汇表和记录表分开,但没有直接连接指针,
而是中间用一个数据结构把两者联系起来。
1. For each term, start new file entry 2. Append each <d,fd,t> to the entry 3. Compress entry 4. Write entry out to file.
可编辑版
18
长文档的处理
• 分成若干块(chunk)处理 • 利用归并算法形成最后的索引