布尔检索
利用AND,OR,NOT将词项连接起来进行查询。
例子:查brutus AND caesar
分别定位再求交集。
求交集的过程转换成数据结构中:求两个有序链表的交集。
【考试】
构建倒排索引的时候posting list要排序?
排序完以后,检索的时间复杂度的代价,O(Len1+Len2),两个链表的长度之和。
布尔查询的效率瓶颈
每次从最小的开始合并(DF从小到大)
例子:查B AND C AND A
如何调整顺序能提高效率?
将posting lists少的放在最前面来做。
DF:docmuent frequency,这也是df的用处。
布尔检索的例子
2011年快女6进5比赛的新闻如何用布尔检索表达
缺点
构建复杂
没有充分利用词项的频率信息
如汉语中的“的”,“呢”Stop words。
不能对检索结果进行排序
本讲的内容
构建索引的过程(预处理)
如何对索引文档进行处理来得到词典
理解文档的概念
词条化,理解词条的概念
词条化:将一个个字符流,转化成词条(token),如何将数据流切成有意义的单元。
词项生成,理解词项(term),词项是最终支持搜索的最小单位
倒排记录表
- 更快的合并算法:跳表法(skip list)
- 短语查询的处理及位置信息的倒排索引
文档分析
- 文档格式处理
- pdf/word/excel/html
- 文档语言识别,不同语言有不同的编码方式,计算机存储的解释规范。ASCII(8bit一字符)
- 文档编码识别GBK/UTF-8/Unicode
文档语言/编码 识别在理论上都可以看成分类问题,编码就那几种分类嘛。
在实际过程中,常采用启发式的方法(看上下文环境)
困难:一个文档的多种语言。
Tokens and Terms
Terms是我们最终索引的单位。
词条化
如何判断是一个词条?
San Francisco 如何判断是一个词条还是两个词条?
大部分词条化的标准是基于词典的。
词条中的数字处理
专有名词
中文分词和检索
即二者精度要采用同一种标准。
相关性是不一定的,但就是要采用同一个标准。
倾向细粒度,保证召回率。
分词方法
- 大词典
- 统计
- 启发式(上下文)
建索引之前有哪些pro blem?
数字/分词(如何判断是一个词条),4-5【考试】
Stop List
“的”,”得”,”地”
现代信息检索系统中倾向于不去掉停用词。
词条归一化成词项
- U.S.A转化成USA
- 归一化的结果就是词项
- 采用隐式规则的方法来表示多个词条可以归一成同一词项。
NLP:open code.