精华内容
下载资源
问答
  • 前一阵子和大家分享了一系列排序算法,希望对大家能够有一些帮助。...为了让大家更好的理解信息检索技术,我将分多次对信息检索技术做一个尽可能细致的阐述,难度由浅及深,欢迎大家多多拍砖。 今天先介绍
    前一阵子和大家分享了一系列排序算法,希望对大家能够有一些帮助。从今天开始,本人打算开展一个新的领域,介绍一下信息检索相关的技术。信息检索技术可以说现如今发展非常迅速,使用也极其广泛,甚至可以说是随处可见。特别是做一些跟搜索引擎,机器学习相关工作时,信息检索的知识无处不在。为了让大家更好的理解信息检索技术,我将分多次对信息检索技术做一个尽可能细致的阐述,难度由浅及深,欢迎大家多多拍砖。
    
    今天先介绍最简单的信息检索技术,布尔检索。
     
    信息检索(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呢?不用我多说了吧,相信大家已经很明白该如何处理了。
     
    以上是本人对布尔检索的一个简单的说明,欢迎大家指正。谢谢
    展开全文
  • 现代信息检索——布尔检索

    千次阅读 多人点赞 2021-09-11 19:37:29
    布尔检索概述2. 布尔索引方法2.1. 关联矩阵索引2.2. 倒排索引2.2.1. 倒排索引概述2.2.2. 倒排索引建立3. 布尔查询的处理3.1. 布尔查询在倒排表上的操作3.2. AND查询的处理3.3. 布尔查询在倒排表上的优化4. 布尔检索...

    1. 布尔检索概述

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

    例如检索需求:哪些文档包含了Brutus及Caesar二词但不包含Calpurnia一词?
    布尔表达式:Brutus AND Caesar AND NOT Calpurnia

    2. 布尔索引方法

    2.1. 关联矩阵索引

    对于规模较小的的文档集(每一个文档中的词项少,文档数量少)。可以对文档集构建词项-文档(term-doc)的关联矩阵,如下图:
    在这里插入图片描述
    在上图中,每一列都是一个关联向量,该向量内的0、1分别表示在文档(蓝色)中是否出现某词项(褐色)。同样的,每一行中的0、1也可以表示该词项(褐色)在文档(蓝色)中出现。
    在这里插入图片描述

    有了这样一个关联矩阵后,就可以进行布尔查询了,回到一开始提到的布尔表达式:Brutus AND Caesar AND NOT Calpurnia,很容易就找出:
    在这里插入图片描述

    同时满足既有Brutus,又有Caesar,同时没有Calpurnia的文档是Antony and CleopatraHamlet

    2.2. 倒排索引

    2.2.1. 倒排索引概述

    但是我们很容易发现,一旦文档集变大,关联矩阵的实用性将大大降低。假定现在有一百万篇文档(1M),每篇有1000个词(1K),每个词平均有6个字节,那么所有文档将约占6GB 空间。同时由于庞大的词项数,导致关联矩阵高度稀疏,使关联矩阵的搜索效率不高。

    基于此,提出了倒排索引来解决关联矩阵的问题。所谓倒排,是对于关联矩阵而言的,在关联矩阵中,我们统计的是一个文档内出现的词项,这种方法稀疏度高(0很多)。所以我们转换思路,统计一个词项在哪些文档中出现过。

    首先,将文档名用文档ID代替,然后按某词出现文档ID序号从小到大排列,例如:
    在这里插入图片描述
    这样建立的索引不再稀疏,同时也无需使用连续空间存储。

    2.2.2. 倒排索引建立

    (1) 文本预处理

    • 词条化(Tokenization)
      将字符序列切分为词条,例如将“You are welcome.” 切分为 you、are、welcome三个词条。也需要解决诸如 “John’s”('s怎样处理?),“state-of-the-art” 算一个还是四个词条?的问题;
    • 规范化(Normalization)
      将文档和查询中的词项映射到相同的形式,例如U.S.A. 和 USA应当看做同一个词;
    • 词干还原(Stemming)
      将同一词汇的不同形式还原到词根,例如authorize, authorization是同一词根,在检索时应当都列出,避免用户在检索时可能出现的描述不准确现象;
    • 停用词去除(Stopwords removal)
      去除高频但意义不大词项,例如the、a、to、of。

    (2) 建立词条序列
    简单来说就是将预处理后的词条和它们所属的文档一起建立<词条, 文档ID>二元组:
    在这里插入图片描述

    (3) 词条排序
    首先将词条按某种方法进行排序,例如英文可以根据字母表进行排序;然后对排序后的列表再按文档ID进行排序,确保同一词条对应的ID较小的文档可以排在前面。
    在这里插入图片描述
    (4) 建立词典和倒排记录表
    将出现多次的词项合并,并记录其出现的频数(在几个文档中出现过),之后按文档ID从小到大的顺序建立倒排记录表,并与词典进行链接:
    在这里插入图片描述
    至此,倒排索引已经建立完毕。

    3. 布尔查询的处理

    3.1. 布尔查询在倒排表上的操作

    • AND (Brutus AND Caesar)
      两个倒排表的交集
    • OR (Brutus OR Caesar)
      两个倒排表的并集
    • NOT (Brutus AND NOT Caesar)
      两个倒排表的减集

    3.2. AND查询的处理

    考虑实现布尔查询表达式:Brutus AND Caesar

    首先应该在词典中定位 Brutus和Caesar,并返回两个词项的倒排表。
    在这里插入图片描述

    然后为每个倒排表定义一个定位指针,两个指针同时从前往后扫描,每次比较当前指针对应的倒排记录,然后再向后移动指向文档ID较小的那个指针在文档ID相等时同时两个指针,直到某一个倒排表被检索完毕。

    这样就能轻易找出符合Brutus AND Caesar的文档,有:文档1、文档2和文档4。

    OR和NOT的同理类似,只是对倒排表的操作不同。注意NOT操作不能简单理解为某一词项的补集,因为补集可能会很大,必须是两个倒排表的减集。

    3.3. 布尔查询在倒排表上的优化

    有两个简单的优化方法:

    1. 倒排表的文档ID升序排列
      正如在AND操作中演示的那样,文档ID升序排列可以尽量地提前结束对倒排表的操作,而不需要对两个倒排表从头到尾进行检索。
    2. 优先处理词频小的词项
      在复杂布尔表达式中,例如(tangerine OR trees) AND (marmalade OR skies) AND (kaleidoscope OR eyes),优先合并词频小的词项,生成文档数量少的词项,有利于结合上面的优化方法尽量地提前结束对倒排表的操作。

    4. 布尔检索的优缺点

    优点

    • 构建简单,或许是构建IR系统的一种最简单方式;
    • 易被接收,仍是目前最主流的检索方式之一;
    • 操作专业化,对于非常清楚想要查什么、能得到什么的用户而言,布尔检索是个强有力的检索工具。

    缺点

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

    千次阅读 2013-10-01 21:08:41
    信息检索主要分为三大类:Web搜索、个人信息检索和面向企业的搜索。 词项文档矩阵  在搜索的时候,一种土办法:假设我们要搜索要在一本书中搜索含有“Brutus”和“Caesar”关键字的文档,那么我从头到尾线性扫描...

           信息检索主要分为三大类:Web搜索、个人信息检索和面向企业的搜索。


    词项文档矩阵

         在搜索的时候,一种土办法:假设我们要在一本书中搜索含有“Brutus”和“Caesar”关键字的文档,那么我从头到尾线性扫描。这种方式在某些情况下不太灵活。一种非线性的扫描方式就是给文档建立索引。我们先给这本书建立一个词项-文档矩阵如下图所示。

         其中“lsj”,“seu”,“njust”表示单词,而文章1,文章2,文章3表示文章题目。那么我们看“每行”就能清楚的知道每个单词出现在那几篇文章中了,同样我们看列,就知道每篇文章中出现了哪些单词。

         当我们要找同时包含“lsj”和“seu”的时候,我们只需要将2行做个与运算

    【注】这个词项文档矩阵可以做SVD分解,得到各个主题与文档之间的相关性以及主题与词项之间的相关性。


    倒排表

         上面这种方案有点小问题,就是如果我们的单词很多,上亿,文章也很多,则这个矩阵将会非常之大。同时,我们又注意到这个矩阵其实是一个稀疏矩阵。那么为了节省空间,我们采用另一种存储方式——倒排表


         从上图我们可以看出左边是词典,右边记录了倒排索引。两者是分开存储的,即在词典中的每个单词包含了一个指向倒排记录表的指针

         上图中有两个词汇,文档频率:单词在多少篇文章中出现,即倒排记录表的长度。这个域在布尔检索的时候可以用来优化词项频率:就是这个单词在某篇文章中出现的次数,用来设置权重,从而提高某篇文档的排名。

         倒排表两种实现方式:(1)链表,方便插入;(2)可变数组,比链表少了一个指针域,连续存储,提高访问速度。

    【注】词典和倒排记录都有存储开销。前者往往存在内存中,而后者规模很大,通常放在磁盘中。  我们需要每个部分进行存储优化来提高访问速率。

    【注】为了从一篇文章得到词典,我们还需要做一些语言学处理,词条化处理。

    【注】词典其实一种索引,该索引能索引到倒排记录表。其结构可以不是简单的采用数组,而是通过一些hash结构、B树、trie树来存储。这样来提高查找速度。


    布尔检索查询优化

         如何通过组织查询的处理过程来使处理工作量最小。对布尔检索进行优化要考虑的一个主要因素是倒排记录表的访问顺序

          例如:"Brad" and "ljs" or "dfsf"

                       "ljs" or "dfsf"   and "Brad"

    两者合并的倒排记录肯定不一样,怎样调整顺序是布尔检索运算量最小。通常是小的倒排记录先算。

    【and检索】就是求两个排序链表的交集。


    自由文本查询

          这种查询方式确定哪篇文档最能满足要求,需要对文档按照重要性进行排序(一个简单的方法,对词项频率较高的文档赋予较高的权重,这样排名)。而不是像布尔检索这样简单的返回结果的“Yes” or “No”,答案太单调。


    查询结果的评价

    (1)召回率:所有与检索相关的文档中被返回的比例。

    (2)准确率:返回的文档中,真正和检索相关的比例。


    后记

         那么如何构建词典,因为从文本到一个一个的词项还是有点步骤要做的,详细请看:http://blog.csdn.net/lsjseu/article/details/12232211

    展开全文
  • 信息检索格式 布尔检索

    千次阅读 2019-04-20 21:16:45
    信息检索格式 布尔检索式 名称 符号 表达式 功能 逻辑与 * 或and AB 同时含 有提问词A和B的文献,为命中文献 逻辑或 + 或or A+B 凡是含有提问词A或B的文献,为命中文献 逻辑非 -或not A(-B) 凡是含有提问词A但不...

    信息检索格式 布尔检索式

    名称 符号 表达式 功能
    逻辑与 * 或and AB 同时含
    有提问词A和B的文献,为命中文献
    逻辑或 + 或or A+B 凡是含有提问词A或B的文献,为命中文献
    逻辑非 -或not A
    (-B) 凡是含有提问词A但不含有B的文献,为命中文献。

    举个例子

    蔡徐坤 AND( -篮球)  
    
    • 这句话表示搜索蔡徐坤但是里面不会包含“篮球”字样。
    • 这个算法在微软Bing搜索里面可行,但是在百度里面搜索依然包括篮球二字,这里未解。
    • 还有个注意点,符号的前面要加空格隔开后面紧跟着要搜索的内容。
    展开全文
  • 计算机检索技术及中文数据库使用方法职工专题培训主讲段晓玲一计算机信息检索的基本技术布尔逻辑算符截词算符位置算符字段限定检索等等在进行计算机检索时有时有一些比较复杂的课题如在建筑中的应用既涉及又涉及建筑...
  • 信息检索中,关于布尔检索和倒排索引部分。
  • 2.什么是检索模型 IR的核心问题:预测哪些文档是相关的,哪些文档是不相关的。主要工作在于排序这个核心的问题,如何计算这个排序从而处理文档的相关性。 检索模型描述了如下这些细节 文档表示( Docume...
  • 匿名用户1级2011-06-23 回答总共有五个,分别是:...如果用AND连接检索词A和检索词B,则检索式为:A AND B (或 A*B):表示让系统检索同时包含检索词A和检索词B的信息集合C。 如:查找“胰岛素治疗糖尿病”的检索式...
  • 第二章信息检索及其类型武汉科技大学图书馆目录信息检索及其类型一概念信息...信息检索是利用各种印刷型检索工具来查找文献的一种方法包括直接提供文献或数据的各类工具书以及能够提供文献线索的书目题录索引文摘等现代...
  • 信息检索-布尔检索

    2011-03-02 23:56:00
    看了《信息检索导论》的第一节,明白了信息检索(Information Retrieval)的含义即信息获取、返回。其实这个很好理解,它的意思从钱包抽出一张信用卡是为了看到卡号以便输入,这一个过程就可以看作是一个信息检索的过程。...
  • 第1章 布尔检索 信息检索的定义:信息检索(IR)是大型非结构化性质(通常是文本)的集合(通常是文档)中寻找满足(通常存储在计算机上)的信息需求。 1.1一个信息检索的例子 问题描述:确定莎士比亚的作品...
  • 信息检索之布尔检索

    千次阅读 2013-12-11 20:04:27
    1、倒排索引的两部分 图 1-3 2、构建倒排索引的过程 ... ①收集需要建立索引... ④对所有文档按照其中出现的词项来建立倒排索引,索引中包括一部词典(存于内存)和一个全体倒排索引表(存于磁盘)。(第四章)
  • 网络信息检索技术

    2012-03-23 10:11:44
    本文重点讲述 布尔逻辑检索技术 截词检索技术 限制检索技术 模糊检索 邻接检索技术、加权检索、原文检索
  • 信息检索笔记(一):布尔检索

    千次阅读 2018-04-18 13:04:26
    信息检索导论》学习笔记一、布尔检索二、倒排索引三、索引优化1、布尔索引模型概述布尔模型:对于关键词表示的文档使用布尔查询表达式进行查询,当且仅当文档满足布尔表达式时才将其检索出来,二值匹配,是或不是2...
  • 第三章计算机信息检索,第二节计算机信息检索基本原理及检索技术,一、计算机信息检索原理,计算机...,二、计算机信息检索技术,计算机检索时采用的相关技术,主要有布尔检索、词位检索、截词检索、限制检索。,布尔检索,...
  • 布尔检索

    千次阅读 2015-05-28 16:06:59
    布尔检索是在倒排索引结构下进行的,下面举个例子说明一下什么是布尔检索。 假设有一个倒排文件,如下图所示: 现在要检索的word为 word1 和word3,以布尔 与 运算为例,就是对word1 与word3的检索结果 与 ...
  • 布尔逻辑检索利用布尔逻辑算符进行检索词或代码的逻辑组配,是现代信息检索系统中最常用的一种技术。常用的布尔逻辑算符有三种,分别是逻辑或“OR”、逻辑与“AND”和逻辑非“NOT”。2. 截词检索截词检索是计算机...
  • 用于表示同时出现在同一文献的一个字段的两个词,用With连接检索词A和检索词B,检索式为:“Awith B”。表示检索词A和检索词B不仅要同时出现在一条记录中,还要同时出现在一个字段里的文献才是命中文献。如:drug...
  • ​ 如要检索“布尔检索”或“概率检索”但不包括“向量检索”方面的文档,其相应的查询表达式为:Q=检索 and (布尔or 概率 not向量),那么Q可以在其相应的(检索,布尔,概率,向量)标引词向量上取(1,1,0,0)(1,0,1,...
  • 布尔检索模型

    万次阅读 2017-10-08 20:53:01
    最近在看《Introduction to Information Retrieval》(中文版为《信息检索导论》,下文简称为“IR”),是最经典的信息检索书籍之一了。由于淞姐要求我细读这本书然后跟同事分享,就有了这个版块,之后会陆续添加...
  • 要从文档集合D={d1,d2,…,dn}中检索出: 包含"北京妹纸",或者"杭州妹纸, "但不包括"日本妹纸"的文档。 假设D = {“北京的妹纸豪爽”,“北京是中国首都,而东京不是日本首都,一个妹纸说”,“北京和杭州都是旅游名城”,...
  • 本文仅做《信息检索技术》期末预习使用,内容简略仅做大纲使用,期末抱佛腿的孩子请另寻他处(博主自己也快预习不完了QAQ)。 信息检索模型概述 检索模型的定义 信息检索模型是描述信息检索中的文档、查询和...
  • 第一讲 布尔检索Boolean Retrieval 主要内容: 信息检索概述 倒排记录表 布尔查询处理 一、信息检索概述 什么是信息检索? Information Retrieval (IR) is finding material (usually...
  • 信息检索导论》第一章 布尔检索信息检索布尔检索模型词项-文档关联矩阵(incidence matrix)倒排索引欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,521
精华内容 17,408
关键字:

信息检索技术包括布尔检索