前一阵子和大家分享了一系列排序算法,希望对大家能够有一些帮助。从今天开始,本人打算开展一个新的领域,介绍一下信息检索相关的技术。信息检索技术可以说现如今发展非常迅速,使用也极其广泛,甚至可以说是随处可见。特别是做一些跟搜索引擎,机器学习相关工作时,信息检索的知识无处不在。为了让大家更好的理解信息检索技术,我将分多次对信息检索技术做一个尽可能细致的阐述,难度由浅及深,欢迎大家多多拍砖。

今天先介绍最简单的信息检索技术,布尔检索。

信息检索(IR),通俗的讲,就是要在一个很大的文本(有时可能是其他数据,如图像等)集合中,找到与用户需求相关的可以满足用户需求的非结构化信息。听起来有点拗口,其实就是一种查询,只不过查询的对象是非结构化信息,和查询数据库中的表并不相同。希望这么说能好理解一些。

既然要从文档中找到符合用户需求的信息,那么首先就要解决一个问题,就是如何来表示文档呢?在信息检索中,我们通常使用1代表一个word出现在文档中,0代表没有出现在文档中,很简单。

比如 文档1: I often go to school by bus. 文档2: I am wating for the bus for 20 minutes.

我们如何来用1和0来表示上面的文档呢?很容易想到的方法是将所有的文档和word组成一个矩阵,X方向为文档,Y方向为所有的单词。

    文档1  文档2  文档3  文档4  ...

I     1    1    0    0

often  1    0    0

go    1    0    0

to     1      0     0

school     1     0    0

by          1    0    0

bus         1    1    0

am          0    1    0

...

这样很容易的就表示了所有的word和文档的对应关系,当用户要查询检索bus时,只需要找到bus对应的行,将是1的文档都取出来,展现给用户不就行了?

确实,这样做可以完成检索的需求,但是仔细想想不难发现,我们假设一篇文档有1000个word,一个文档集有1亿篇文档(这对于搜索引擎来说还远远不够),那么我们需要用1*1011的矩阵来保存这种关系,这对计算机来说显然是无法承受的。

那我们有什么办法来进行优化呢?仔细想想可以看出,虽然数据量很大,但是这个矩阵是极其稀疏的,也就是说1的个数是很少的,绝大多数位置都是0.那么我们为什么要保存那么多的0来占用空间呢?这完全没有必要。于是,著名大倒排索引诞生了。

在介绍倒排索引前,先说正排索引,正排索引就是给定一个文档,可以知道文档中出现的所有word。对比着看,倒排索引就是反过来,给定一个word,看看这个word出现在哪些文档中。下面的图形象的描述了倒排索引的数据结构

I -> 1 2 3 4 5 7 9 22

school -> 1 3

bus -> 1 2 8 9

其中前面的是word,后面的是文档的标号,并且这些标号是按顺序存放的,这更利于后面检索环节的处理。当然上面提到的是最基本的原型,实际的系统中,倒排索引还保存了词频,网页的元数据等各种信息。

有了倒排索引,我们就可以省去大量的空间,大大提高了查询检索的效率。下面我们看看如何进行检索。比如我们有了如下的倒排索引

A -> 2 4 8 16 32 64

B -> 1 2 4 9 16 33

先在用户查询A,那么则返回2 4 8 16 32 64

如果查询A and B 则需要把A和B的倒排索引拿出来,进行一次求交集的运算。其实很简单,只需要O(x+y)的时间操作,就可以得到2 4 16了。

如果用户查询A or B呢?不用我多说了吧,相信大家已经很明白该如何处理了。

以上是本人对布尔检索的一个简单的说明,欢迎大家指正。谢谢

信息检索技术——布尔检索相关推荐

  1. 信息检索格式 布尔检索式

    信息检索格式 布尔检索式 名称 符号 表达式 功能 逻辑与 * 或and AB 同时含 有提问词A和B的文献,为命中文献 逻辑或 + 或or A+B 凡是含有提问词A或B的文献,为命中文献 逻辑非 - ...

  2. 信息检索格式 布尔检索式

    信息检索格式 布尔检索式 名称 符号 表达式 功能 逻辑与 * 或and AB 同时含 有提问词A和B的文献,为命中文献 逻辑或 + 或or A+B 凡是含有提问词A或B的文献,为命中文献 逻辑非 - ...

  3. 即计算机信息检索是指利用计算机,计算机信息检索技术布尔逻辑运算示意图.ppt...

    第二章信息检索及其类型武汉科技大学图书馆目录信息检索及其类型一概念信息检索是指按照一定的方式组织和存储信息并根据用户的需求查找出所需相关信息的过程信息检索及其类型信息检索的基本原理信息检索及其类型二信 ...

  4. 《introduction to information retrieval》信息检索学习笔记1 布尔检索

    第1章 布尔检索 信息检索的定义:信息检索(IR)是从大型集合(通常存储在计算机上)中寻找满足信息需求的非结构化性质(通常是文本)的材料(通常是文档). 1.1一个信息检索的例子 问题描述:确定莎士比 ...

  5. 信息组织与检索【知识点整理】| 信息检索技术与方法 信息检索系统结构和功能模块 信息描述 信息标引 信息存储

    目录 1 简单的定义 (一)广义的信息检索(信息组织+信息检索) (二)狭义的信息检索 2 信息检索技术与方法 (一)文本信息检索 (二)多媒体信息检索 3 信息检索系统结构和功能模块 (一)信息检索 ...

  6. Information Retrieval(信息检索)笔记01:Boolean Retrieval(布尔检索)

    Information Retrieval(信息检索)笔记01:Boolean Retrieval(布尔检索) 什么是信息检索(Information Retrieval) 布尔检索(Boolean ...

  7. 1信息检索-布尔检索-倒排索引

    提示: 信息检索 布尔检索 倒排索引 布尔查询 文章目录 信息检索 举个例子(词项-文档关联矩阵一个题目) 相关术语及概念 倒排索引 倒排索引示例 倒排索引构建 布尔查询处理(案例) 两个倒排记录表的 ...

  8. 布尔检索——短语检索,含位置索引与双词索引

    目录 前言 一.对文本进行分词 二.获取文本文件 三.词法分析 四.布尔检索类 五.调用 总结 前言 此专栏记录信息检索课程的学习. 部分代码框架来自温柔的助教小哥哥. Talk is cheap. ...

  9. 多媒体信息检索技术简介

    多媒体技术和Internet的发展给人们带来巨大的多媒体信息海洋,并进一步导致了超大型多媒体信息库的产生,光凭关键词是很难做到对多媒体信息的描述和检索的,这就需要有一种针对多媒体的有效的检索方式.如何 ...

最新文章

  1. 人力资源大数据解决方案
  2. window10 vs2013 SIFTGPU
  3. 经典C语言程序100例之十六
  4. java 判断精度_随笔⑦ Java中的比较 ==,equals以及精度对比较的影响
  5. 锦欣生殖获战略投资,华平、信银领投,红杉、药明康德跟投
  6. 系统性能提升利刃 | 缓存技术使用的实践与思考
  7. python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...
  8. arcgis 10.1 导入数据到oracle 发布地图服务
  9. centos7 安装 openssl和openssl升级
  10. 艰苦的编译boost python (失败)
  11. 关于以主机命名的网站集
  12. 整理下Jquery中用到的英语单词 带音标
  13. 栈的输出_TAOCP|基本算法|栈、队列与双端队列
  14. android app银联支付,android app 快速接入银联支付流程(android studio版)
  15. Latex单行/多行公式居中/左对齐
  16. impala常见错误
  17. ohmyzsh用在mysql_oh-my-zsh git 命令缩写 以及macbook使用感受
  18. 为什么我不做金蝶二次开发了,个人的感受!
  19. R语言-NULL和NA的区别
  20. 朋友圈转发集赞截图生成工具,以假乱真!

热门文章

  1. interrupt分析
  2. Codeforces Educational 38 C. Constructing Tests ( 数学公式推导+暴力)
  3. 【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)
  4. 网站开发常用jQuery插件总结(四)验证插件validation
  5. [置顶] 正则表达式应用:匹配IP地址
  6. 常见开源协议!【科普】
  7. Postman 解决 “Could not get any response” 问题
  8. 分治法解决最大子数组问题
  9. 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。
  10. 安装了低版本Jdk后eclipse无法打开的终极解决方法