澳门新葡亰游戏网址澳门新葡亰游戏网址,澳门新葡亰游戏平台网站(www.496.net)是亚洲最热门的娱乐网址之一,澳门国际娱乐秉承“保证一流质量,保持一级信誉”的经营理念
当前位置:

【2017年整理】《Introduce to IR》布尔检索

作者: 澳门新葡亰游戏网址|来源: http://www.xmshou.com|栏目:澳门新葡亰平台官网|    日期:2019-11-02

文章关键词:

澳门新葡亰游戏网址,布尔查找

  IR》布尔检索模型文章分类:互联网 该系列文章是《An Introduce InformationRetrieval》Chapter 的读书笔记。IR 的概念很广泛,即使从钱包中拿出一张信用卡并输入卡号也是一种形式的信息检索。在学术领域,我们这样 定义IR: 信息检索(IR)就是一种从大量数据集合中(通常指存储在计算机中文档)寻找满足信息需求的非结构化(通 常指文本)得数据(通常指文档)。 布尔检索模型(Boolean Retrieval) 要点: 倒排/反向索引模型inverted indexes 简单的布尔表达式如何处理这些索引1.1 词—文档的关联矩阵索引 term-documentmatrix Unix/Linuxgrep- 命令 这个命令或许大家都用过,它是 Unix/Linux 中用于在指定文件中查找特定的搜索字符串的命令。它的原 理是利用正则表达式 在文档集合中进行线性顺序扫描(sort linearscan)。 这种方式对于现代计算机的运行速度 而言,在有限的数据规模下做简单的查询足够应付了。 Webdata 的搜索面临的现实问题 网络在线数据量(webdata/online data)巨大,其增长的速度远大于计算机的硬件发展速度。如何快速的 检索需要查询的内容? 这一点线性顺序扫描时永远做不到的。 web搜索面临的是广大用户群,其查询表达式的方式灵活多样(并不一定是布尔表达式)。甚至有的时候 并没有准确的查询含义。比如查询query: Romans NEAR courtyman。 这里的NEAR 到底是指Romans,courtyman 这两词需要在文章中同一个句子里出现,还是相隔若干词。如何更好的响应用户的灵活多变的查询方法,提供更 加人性化得服务呢? 检索结果的排序问题也是一个现实问题。用户需要看到的是最满意的答案,那么查询返回的若干文档,到底哪些与用户查询最相关呢? (3)布尔模型的词—文档关联矩阵索引模型 线性顺序扫面对于web data 来说是不可能的。目前,解决高效检索大量非结构化的信息的公认最好手段 就是建立索引(indexes) 。下面就是一个简单的索引模型——关联矩阵。 词—文档关联矩阵如下图,列表示文档,行表示文档中的词。 其中如果Term1出现在Doc1中,则矩阵(1,1)标示为1,否则为0。 建立布尔查询表达式(booleanquery) Caesar也就是我们需要找到包含 Antony ,Brutus 同时不包含Caesar 词语的文档。 使用位运算:Antony (~110111)=000000. 很可惜,一篇 都没有。 关联矩阵模型的缺陷上面这个简单索引模型并不适合Web data 的检索。对于大数据量而言,这个矩阵实在是太大了,不可 能全部放进内存。而且更严重的是矩阵太稀疏了。况且对于检索结果的排序问题也是解决不了的。 1.2 倒排索引 inverted index 倒排索引绝对是一个伟大的发现。当前很多搜索引擎或者开发包都使用了这个模型,比如Lucene。 词语组成的字典结构——Dictionary 如下图左侧 Postiong如下图右侧 将index中的词语按字典序排序。如中图B 如果相同词语来自同一个文档,则只记录一次。相同词语来自不同文档,则合并成进posting。如右图 索引存储方法很显然,对于倒排索引,我们必须把Dictionary 和Posting 都存储起来。一般Dictionary 可以全部加载进内 存中,而Posting 存放在磁盘中,当需要查找Posting 的时候,再会将某一个词语所指向的Posting 加载进内存。 Dictionary menory很多时候使用Hash 表的形式,也用连续存储的数组结构。 Posting 单链表(singly linked lists) ,在将新文档插入Posting 中的时候付出的代价较少。这一点很适合 高频率从网上抓取内容并更新文档。 可变长数组(variablelength arrays),节约了指针所需要的额外空间。并且对于拥有内存缓存区的 现代计算机而言,连续内存的结构无疑会增加查询的速度。 跳跃表(skiplists),一种很先进的存储结构。除了需要额外耗费一些指针空间之外,查找效率极 高。Lucene 就是用了这种结构。 1.3 布尔查询表达式的处理 Posting的合并算法(merge algorithm) 假如我们需要在倒排索引上查找这样一个表达式: Brutus 在Dictionary中定位Brutus. 检索Brutus所指向的Posting: 1、2、4、11、31.... 在Dictionary中定位Calpurnia. 检索Calpurnia所指向的Posting: 2、31、54.... 合并两个Posting.对于两个有序表的合并算法,可以采用下面的算法: 时间复杂度为O(m+n) Postingintersect(p1,p2){ Postinganswer; add(answer,p1-

  docID); if(p1

  p2)p2=p2-

  next; 布尔表达式的优化Brutus Calpurnia表达式的 顺序按照每一个词的文档频率递增进行优化。比如 Brutus‘s Ducument Frequence(Brutus 所在文档的数量,符号表示DF(Brutus))。DF(Brutus)=1000,DF(Caesar)=10000,DF(Calpurnia)=100。那么查询表 达式可以优化成: (Calpurnia Caesar。理由很简单,Calpurnia Brutus的时间复杂度(利用上面的合并算法)为O(1100),其合并后的中间结 果R=DF(Calpurnia Caesar的时间复杂度不会超过 O(100+10000) 。而且最后结果页不会操作 DF

文章标签: 澳门新葡亰游戏网址 ,布尔查找

 上一篇:关于spring data jpa布尔类型条件查询异常

 下一篇:单位代码表_百度文库