第一讲 布尔检索Boolean Retrieval

主要内容:

  1. 信息检索概述
  2. 倒排记录表
  3. 布尔查询处理

一、信息检索概述

什么是信息检索?

Information Retrieval (IR) is finding material (usually documents) of an unstructured nature (usually text) that satisfies an information need from within large collections (usually stored on computers).

信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。

Document –文档

Unstructured – 非结构化

Information need –信息需求

Collection—文档集、语料库

二、倒排记录表

1、什么是布尔查询?

布尔查询是指利用 AND, OR 或者 NOT操作符将词项 连接起来的查询

如:信息 AND 检索

2、一个信息检索的例子(莎士比亚全集)

不到100万单词,假设每个英文单词平均长度为8字节,则整个全集不到10MB

查询需求:

莎士比亚的哪部剧本包含Brutus及Caesar但是不包含Calpurnia?

查询的布尔表示:

Brutus AND Caesar AND NOT Calpurnia

解决方案:

方法一:暴力方法

从头到尾扫描所有剧本,对每部剧本判断它是否包含Brutus AND Caesar ,同时又不包含Calpurnia

不足之处:

  • 速度超慢 (特别是大型文档集)
  • 处理NOT Calpurnia 并不容易(不到末尾不能停止判断)
  • 不太容易支持其他操作 (e.g., 寻找靠近countrymen的单词Romans)
  • 不支持检索结果的(灵活)排序 (排序时只返回较好的结果)

    优点:

  • 实现简单
  • 很容易支持文档动态变化

方法二:倒排记录表

词项-文档(term-doc)关联矩阵

若某剧本包含某单词,则该位置为1,否则为0.

  • 关联矩阵的每一列(对应一篇文档)都是 0/1向量,每个0/1都对应一个词项
  • 关联矩阵的每一行(对应一个词项)也可以看成一个0/1向量,每个0/1代表该词项在相应文档中的出现与否
  • 给定查询Brutus AND Caesar AND NOT Calpurnia

    取出三个词项对应的行向量 ,并对Calpurnia 的行向量求反,最后按位进行与操作

110100 AND 110111 AND 101111 = 100100.

问题:当出现更大的文档集???

  • 假定N = 1 百万篇文档(1M), 每篇有1000个词(1K)
  • 假定每个词平均有6个字节(包括空格和标点符号),那么所有文档将约占6GB 空间.
  • 假定词汇表的大小(即词项个数) M = 500K

此时,词项-文档矩阵将非常大!!!

  • 矩阵大小为 500K x 1M=500G
  • 但是该矩阵中最多有10亿(1G)个1:词项-文档矩阵高度稀疏(sparse)

更好的办法:仅仅记录1的位置,即倒排索引

  • 对每个词项t, 记录所有包含t的文档列表.
  • 每篇文档用一个唯一的 docID来表示,通常是正整数,如1,2,3…
  • 磁盘上,顺序存储方式比较好,便于快速读取
  • 内存中,采用链表或者可变长数组方式
  • 倒排记录表按docID排序

索引构建过程:

1、词条序列:<词条,docID>二元组

2、排序

按词项排序,然后每个词项按docID排序

  1. 词典&倒排记录表
  • 某个词项在单篇文档中的多次出现会被合并
  • 拆分成词典和倒排记录表两部分
  • 每个词项出现的文档数目(doc frequency, DF)会被加入

                                          

3、布尔查询的处理

假定索引已经构建好了,如何利用索引来处理查询?

AND查询的处理:

考虑如下查询(从简单的布尔表达式入手):

Brutus AND Caesar

  • 在词典中定位 Brutus
  • 返回对应倒排记录表(对应的docID)
  • 在词典中定位Caesar
  • 再返回对应倒排记录表
  • 合并(Merge)两个倒排记录表,即求交集

合并过程:

每个倒排记录表都有一个定位指针,两个指针同时从前往后扫描, 每次比较当前指针对应倒排记录,然后移动某个或两个指针。合并时间为两个表长之和的线性时间

  • 假定表长分别为x 和y, 那么上述合并算法的复杂度为 O(x+y)
  • 关键原因: 倒排记录表按照docID排序
  • 上述合并算法的伪代码:

其它布尔查询的处理

  • OR表达式:Brutus OR Caesar
  • 两个倒排记录表的并集
  • NOT表达式: Brutus AND NOT Caesar
  • 两个倒排记录表的减

一般的布尔表达式

(Brutus OR Caesar) AND NOT (Antony OR Cleopatra)

查询处理的效率问题

  • 查询处理中是否存在处理的顺序问题?
  • 考虑n 个词项的 AND
  • 对每个词项,取出其倒排记录表,然后两两合并

  • 按照表从小到大(即df从小到大)的顺序进行处理: 每次从最小的开始合并

布尔检索的优点:

构建简单,或许是构建IR系统的一种最简单方式

布尔检索的缺点:

  • 布尔查询构建复杂,不适合普通用户。构建不当,检索结果过多或者过少
  • 没有充分利用词项的频率信息
  • 不能对检索结果进行排序

[信息检索] 第一讲 布尔检索Boolean Retrieval的更多相关文章

  1. python信息检索实验之向量空间模型与布尔检索

    import numpy as np import pandas as pd import math def bool_retrieval(string): if string.count('and' ...

  2. POI教程之第一讲:创建新工作簿, Sheet 页,创建单元格

    第一讲 Poi 简介 Apache POI 是Apache 软件基金会的开放源码函数库,Poi提供API给java程序对Microsoft Office格式档案读和写的功能. 1.创建新工作簿,并给工 ...

  3. 第十讲_图像检索 Image Retrieval

    第十讲_图像检索 Image Retrieval 刚要 主要是图像预处理和特征提取+相似度计算 相似颜色检索 算法结构 颜色特征提取:统计图片的颜色成分 颜色特征相似度计算 色差距离 发展:欧式距离- ...

  4. CS193P - 2016年秋 第一讲 课程简介

    Stanford 的 CS193P 课程可能是最好的 ios 入门开发视频了.iOS 更新很快,这个课程的最新内容也通常是一年以内发布的. 最新的课程发布于2016年春季.目前可以通过 iTunes ...

  5. 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立

    原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...

  6. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  7. 异常处理第一讲(SEH),筛选器异常,以及__asm的扩展,寄存器注入简介

    异常处理第一讲(SSH),筛选器异常,以及__asm的扩展 博客园IBinary原创  博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 一丶__Asm的 ...

  8. 常见注入手法第一讲EIP寄存器注入

    常见注入手法第一讲EIP寄存器注入 博客园IBinary原创  博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 鉴于注入手法太多,所以这里自己整理一下, ...

  9. 逆向实用干货分享,Hook技术第一讲,之Hook Windows API

    逆向实用干货分享,Hook技术第一讲,之Hook Windows API 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) ...

随机推荐

  1. go中的接口

    对于golang的接口,纠结两天了,今天有种茅塞顿开的感觉,有必要写点东西了. 纠结接口,说白了就是搞不透接口,方法,结构体几者之间的关系以及具体的用途.可以简单的从三者的定义说起,接口说白了就是一个 ...

  2. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(6) Locale

    本章介绍Locale. 1 Locale 介绍 Locale 表示地区.每一个Locale对象都代表了一个特定的地理.政治和文化地区. 在操作 Date, Calendar等表示日期/时间的对象时,经 ...

  3. XVFB实现selenium在linux上无界面运行安装篇

    selenium在linux上无界面运行,其实是非常简单的.具体的方法有使用HtmlUnitDriver或者PhantomJSDriver,有时间我会写写关于这两个东东的文章,其实基本和ChromeD ...

  4. 同志亦凡人第五季/全集BQueer As Folk 5迅雷下载

    同志亦凡人 第五季 Queer as Folk Season 5 (2005) 本季看点:这是一群生活在匹兹堡男人和男人,女人和女人的故事.在他们的王国里有各色人物.王国的国王Brian(葛尔?哈罗德 ...

  5. 都市侠盗第五季/全集Leverage迅雷下载

    第五季 Leverage Season 5 (2012)看点:TNT电视网砍掉了<都市侠盗>(Leverage),这部已经播出至第5季的团队盗窃现代罗宾汉剧集将在今年完结,这样的决定对&l ...

  6. SSO单点登录之Asp.Net实现示例

    一.什么是单点登录SSO(Single Sign-On) SSO是一种统一 认知 和授权机制,指访问用同一服务器不同应用中的受保护资源的同一用户,只需登录一次,即通过一个应用中的安全验证 后,再访问其 ...

  7. .Net Standard Http请求实例

    一 ..Net Standard http协议封装 程序集: System.Net.Http.dll 命名 空间:System.Net.Http HttpClient :http请求 发送类 Form ...

  8. TeXworks使用教程指南

    TeXworks是Windows版本的TeX Live默认提供的编辑器.值得注意的是,TeXworks 是XeTeX 作者 Jonathan Kew 开发的,其特点是界面简洁友好,集成了轻便的 PDF ...

  9. 虚拟私有云(Virtual Private Cloud,专有网络)配置方式总结

    虚拟私有云 虚拟私有云(Virtual Private Cloud)是用户在云上申请的隔离的.私密的虚拟网络环境.用户可以自由配置VPC内的IP地址段.子网.安全组等子服务,也可以申请弹性带宽和弹性公 ...

  10. [转]如何在本地apache上架设多个站点

    http://dongxin1390008.blog.163.com/blog/static/3179247820094279581256/ 通常情况下,我们有时候需要架设多个站点 比如 我的web站 ...