知道科学文献索引的索引怎么把它搜索出来

您的访问出错了(404错误) 很抱歉,您要访问的页面不存在。 1、请检查您输入的地址是否正确。 进行查找。 3、感谢您使用本站,3秒后自动跳转至网站首页当前位置: >> 中文全文检索系统中索引的研究 中文摘要中文全文检索系统是信息产业中发展较快的一个领域,而一个中文检索系统     的核心就是索引器,本文介绍了 索引器构造的不同算法模型,对相关的技术进行 了比 较,分析了各自 的优缺点和实现难点,提出了一种中文全文检索中索引实现 的数据结构和新型的算法模型。 本文首先综述了中文全文检索中索引构造的相关技术,主要包括索引文件数     
据结构、索引单位选取和索引压缩算法。 在上述综述的基础上,本文采用了基于单字的倒排表文件格式和可变字节编      码压缩技术实现了整个索引系统。该系统包括三方面的功能分别是:文本预处理、 索引创建和索引更新。 在文本预处理部分实现了中文、外文和特殊字符的分离, 同时实现了停止词     (o o   w r)的 sp d 删除。 t 在索引创建部分本文首先给出了一种基于传统倒排表的索引创建算法― 合      并排序式索引创建算法,该算法需要源文本 1倍大小的临时空间。 解决合并 0 为了 排序式索引创建算法临时空间过大的问题,本文提出了一种新的索引创建方案, 该方案采用分级的倒排表索引组织结构和链式顺序混合存储的方式。它不仅不需要额外的临时空间,而且还提高了索引创建的效率。在索引创建的过程中本系统采用了可变字节编码压缩技术对索引 进行压缩,实验表明该压缩算法将索引文件 大小减少了2- 0 0 3%. 在索引更新部分本文提出了      三种顺序存储方式下准动态的索引更新策略,一 种链式存储格式下索引动态更新的算法。该系统采用的链式存储结构下的索引更新算法复杂度达到了Ono ( ) 关键词:中文全文检索;索引器;倒排表;索引压缩 分类号:T 31 P9 ABS TRACTC i s Fl x R rvl  t i n o h a dvl i f d n      u-et tea Ssm  oe  t f t  e p g l i h ee  l n T ei y e s  f  s e o n i s  e  e io ao i ur ad  cr o t C i s rrvl e it I e dvc. n r tn  s ,  t o f  h e ei assm  h n x  i f m i n t n h e  h d y e  e  n e  e y t t s  d e e e  Te  e aa zs e l e n a oim o cnt cn t i e dv e ad h ppr l e s r df et  rh s  osutg  n x  i ,  a ny e a i r l t v f g f  r i h d e c n e  cm a s  rad hi e ad n  e t avn gs  d avn gs  o pr t e t t n us n t g s  dat e ad  dat e o e h le e q ,  h i h e  c e v e  a n i s a f e h  t dfuy a i i . ay s  e g e t dts c r ad  a ad  ii l o c e n F l t ppr  s  a t t e  a c n h fc t f  v g i l h a i h a  u n e  h n i v e  r u nw  oi m  dl h i e iflt t i ass m. e a rh m eo t n x  u -xrrvl  e l t o f  d n le e e yt g e  t T ippr  u m ret e t t n us n x  s tg  h ee      fssm azs ra d hi e o i e cnt cn iC i s h aei t  i h le e q f  o r i n  n s  r e  c d u FlTx Rtea m iy l e dt s c r o dcm n i ei , e ui u-et rvl a l i u s a  te  ou et  x g i x  t l ei , n n d a t u f  c u r n n n d d nse i , x  p so a ot s ecn i e cm r sn  rh . ltg n o e i l im d g T e  hr  ,  ppr  l et h n r i x  t u n h e     e w y ts  e ip m n t ete  e ssm  i t s h f u t r a h a m e s  i e  i n d y e s g e thi e s h ca cr e- I ee l t ad  vrb bt cd g e n us u a hr t bs o n rd  s  t aal y oi c q ,  s  ae a d n  t i n h i e e  n c v s e  cm r s n  ot . s  t i l e t e f cos pcvl i Tx o p so a rh Ti ss m c ds  e  tn r ete s et e i l im h y e n u h u i e i y  g r n s :  p ta etnef nao ad e udtg rr t n i x  dtn  i x an. ee m ,  o i n n p i d u dI t pr  e p ta n hs i d  ri o C i s f e n  t      ot t r tet ar le s a tn  h e , i ad  n  a f  r e m ,  e z e ao f n e o g n h h t x e e  a p r es cl aea h r le dli o "t w r" p ica crn a eid  tn  s p d . ea hr t,  s z e o f  o o d  a eI t pr  n x  dtn p ue n k i x  dtn  rh      o i e f nao, dc oe d  e f nao a oi m n  a f  o h t e  d u i r s  i n o o n d u i l t g bsd t di aI ee Ls - SrMe e t dT ia o t nes  a o r i nl  rd t e n  t a o n t is  o - r m h . s  r m  d t v t g eo h l i e h g h e1 t e is t pr s cs  t s r   t n etsl t p b m 0  o sef e o r  e t n  o c t . r r o e  r l i f  o m a p h h u e Io o  h o e m z r  y a a e  e x d v e  o oe i d  pr  a   aoe o t sts  ep ps a  i e f rz t o r s c i bv a r m ,  ppr  o d  e n x v s e e a pe n  m y li g h h a r e nw d i o f nao p nTe e o ai tnl c r o ts  iip vd ee o dtn  .  i x  n aoasute  h p n m r e I rd u i l h n r z i t u f  l s  o n t a d g r i a v l t ad m m rw y  io ca ad e I oolde nt d  et i s n i e o   imx  hi n o r t  n os  ne t xr s,  t s  y a s  f  n  r .  t  d n y  o e h e  at pr  a , ao a s e c ny ne f ni .  e  e o e o r s c bt  e n t f i c o i x  d gIt p c s  m a pe u l n c h i e f  o n n  r s f y s h e e  d u h oi e f ni , g  i aalbtcd cm r s n  nl y  a y te n x  d gu n t n rb y oe  pe i t ho g tcr o h d o n s h v i e e  o so e o o r n  u i e  c cm r s n i e, epr et ct ts  p so a oim  u d  o p so o n xt xem ni i e h cm r s n  rh r c te e i f  h d e  i n a s  o e i l t e e h d i g ds e  id x  c me t  3 %. i o ne d u n2 z f  o 0一 0I t pr  n x  w l h ppr  oe h e  a ii x  an      o i e r e a ts  e p ps t e dnmc e udt g n  a f  e h t e  d n ,  a r d  i o r y n d p isag s e o o e m m r ad  i o i e dnmc  an a o t tt i bs n  r  o ,  a d  n x  a i udtg  rh re e a d  r e y n k f  y d n d p i l im gb e o ca mm r Te  em n i it t t e r ea a ot a d  hn  o .  epr et  ce h i x  wl  rh s n  i e y h x i n as  n e d a d n l im g c p x  a ieO  bs o ca m m r o l hs e s  )  d  hi e o . m e a c v ( a n  n  y h n ei v K Y     R S C i s F lTx R tea I e dv e I et Ls ;  e E WO D :  n e  l et r vl n x  i ;  r d  t idx h e u- e i ;  d e c n e is n vCm r sn o p so eiCLA S S NO: p 9 T31 致谢本论文的工作是在我的导师于剑教授和瞿有利副教授的悉心指导下完成的,      于剑教授和瞿有利副教授严谨的治学态度和科学的工作方法给了我极大的帮助和 影响。 在此衷心感谢三年来于剑老师和瞿有利老师对我的关心和指导。 于剑教授和瞿有利副教授悉心指导我们完成了实验室的科研工作,在学习上      和生活上都给予了 我很大的关心和帮助,在此向两位老师表示衷心的谢意。 于剑教授和瞿有利副教授对于我的科研工作和论文都提出了许多的宝贵意     见,在此表示衷心的感谢。在实验室工作及撰写论文期间,黄锋、张晓峰、李林立、马艳红等同学对我     论文中的全文检索部分的研究工作给予了热情帮助,在此向他们表达我的感激之情。另外也感谢爸      爸、妈妈和弟弟,他们的理解和支持使我能够在学校专心完成我的学业。 1 引言1 研究背景 . 1在信息时代产生了      大量数字信息,其中文本信息是最基本和常用的形式,为 了能在海量的 文本信息中找到自己的 所需,人们迫切需要一个高效的检索工具。 怎样高效的存储和查询文本这种非结构数据,就是一个颇值得研究的问题。这其 中以全文检索技术成为国内外学者研究的热点。全文检索Fle e e )     u-x Rt vl 文本数据为 ( l t  a是以 t i r 主要处理 对象, 全文标引, 基于使用自 然语言 进行检索的 技术川 在信息检索领域, . 全文检索一直是一个比较复杂的问题. 与普通数据库检索所设计的结构化数据查询不同,全文检索不仅要查询结构 化数据, 还要查 非结 而且 询 构化数 2 比 据1 起标引 1 , 检索来, 全文检索提供了 全新的,强大的检索功能,方便多角度、多侧面的综合利用信息资源。当今以全文检 索为核心技术的搜索引擎已成为网络时代的主流技术之一。在文 索中, 满      为了 足一定的 询性能要 一响应时间 Rs n T e 本检 查 求 (e os i ) p e  和系 m 统吞吐 Tr g u, 量( o h t 词表和文档元 h u p) 数据的 存储要有良 设计, 3 好的 文献[ 1 就检索 效率问 题作了 详细的论述. 文本检索有几种主要建索引的模型: 倒排表[ 正排表 4 1 、 1 后继数组模型6 互关联后继数组模型等, 5 1 、 1 1 、 其中倒排表是最常用的, 它的存储设计也是文本检索中的基本问题之一。目前很多主流的全文检索系统用自设计的文件来 存储倒 件, 如易宝 排文 比 北信T S1 倒排文件比 大时, R[ 当 ' 。 较 就要考虑压缩。压缩在大规模文本索引时尤其重要,目前比较流行的压缩算法有以下几种:按位紧 压 法8 可 字 编 、 l g m c i[ Gl b n1 压 凑 缩 ! 变 节 码 Ea a a n9 om c i[等。 缩 1 、 i m o g.  s  d 1 o o gl d o算法的好坏不能只用其压缩率来衡量,在考虑到压缩率的同时也要考虑到解压所用的时间。国外的全文检索软件虽然较早地得到应用,但对中国用户有很多不适用的地     方。中文全文检索技术在原理上同西文全文检索是一致的,但汉语本身的特点使 中文系统的实现比西文系统更为复杂。全文检索的核心技术是将源文档中的所有的 基本元素的出 现信息记 录到索引 f . 库中i 在中文系统中, l l 基本元素 是单 可以 个汉字字符,也可以是词。因此存在两种基本的索引库结构,即基于字表的索引库 和基于词表的 库1。 索引 1 字表法和词表法各有优缺点. 学者对此都各有侧重研 2 1 国内究,前者实用性很强,构建直观方便,纵观近几年单汉字标引和检索技术的发展, 其发展趋势可归结到两点:一是在单汉字标引和检索技术中引入受控标引和检索 的 术和思想; 技 二是引 入人工智能技术1 检索方面,比 用的 首 [。 3 1 较实 是“ 字直接匹 配法”1. [1 词表法多集中 4 在中文自 动分词研究,自 然语料统计分析等方面。1 索引在中文检索中的位置及研究现状 . 2全文检索是指计算机索引程序通过扫描文章中的每一个词,给每一个词建立      一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根 据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程 类似于通过字典中的检索字表查字的过程。 在上段全文检索的叙述中提到了索引,为什么要建立索引?索引对于全文检     索 底 味 什 ? tGsdt和Ek h 的le i c n 一 到 意 这 么 在Os  o e i o ni r Hte un n  [ 文 p c i a r ce t l c ai 5 o1中提到 “ 在搜索引擎的所有概念中最为核心的概念就是索引,索引就是把原始的数据处理成一个有利于高效检索的数据形式。 他们就为什么要进行索引给出了具 ” 体和形象的说明: 假如你需要在很大量的文中进行某个特定信息的检索,并且你 “ 想在非常短的时间内找到含有需要信息的文件,你会怎样写程序实现这些?最简 单的方法是顺序扫描所有的文件寻找给定词和短语,但这种方式有一些缺点,其 中最致命的是当文件很大时根本没有足够的空间来存储该文件,这就是为什么需 要索引了,为了在大量文本中检索到所需要的信息,首先必须把源文本集转换成一另一格式的文件,这种格式的文件能够让你进行快速的检索,而不是只进行很慢的顺序扫描。 这个转化的过程就是索引化,该过程输出的结果就是 “ ” 索引气 在上文中可以知道索引是全文检索的 “      心脏气 下面的全文检索的模型结构图能够清晰的说明索引在全文检索中的地位。下图即为全文检索的模型结构图:       图1 - 1全文检索结构模型图 全文检索系统是按照全文检索理论建立起来的用来提供全文检索服务的软件      系统,一般来说,全文检索要具有建立索引和提供查询的功能。从上图中可以看 出,全文检索系统中最为关键的部分是全文检索引擎,各种应用程序都需要建立 在这个检索引擎之上。在检索引擎中可以看出索引引擎占据了核心的位置,他是 整个检索效率的重要决定因素,一个全文检索应用的优异程度,根本上由全文检 索引擎来决定。而全文检索的效率主要是由一个索引引擎所决定的.1 本文论文安排 . 3鉴于上文的分析,知道一个优秀的索引引擎对于全文检索非常重要。本文的      主旨就是建立一个全文检索的索引系统。本文主要的工作安排如下: 第二章主要阐述了基于中文全文检索索引器的功能。同时给出了通用索引器      的组织结构图:一个索引器应该包文本预处理模块,创建索引模块以及索引维护模块。第三章论述了中文全文检索索引所设计的主要技术问题。主要有索引文件结      构的选择,索引元的选取以及索引压缩算法的比较分析等。同时给出了基于字和基于词的索引器优缺点的比较。第四章中给出了基于单字的中文全文检索的索引器的设计方案和实现过程,      其中包括索引文档的创建, 索引文档的动态更新和删除以 及索引压缩算法的实现。 第五章索引压缩算法测试结果以及索引创建效率分析。      第六章是小节篇,总结了本文所做的工作,找到了不足之处,给出了下一步     工作的方向。 2中文全文检索中的索引器的结构和功能2 全文检索索引器的结构 . 1在下图中可以看出一个索引器有三部分组成,第一部分是文本预处理模块,     在该模块中针对给出的待索引的文本进行预处理,然后对经过处理的文本进行索 引的建立,在索引建立后由于待查文档的改变要对索引尽心维护。索引维护主要 涉及的问题是:源文档增加时将新的索引附加到原来的索引上,当源文档改变时, 将其相对应的索引文件更新,但某些文档不在需要时,也要将其相对应的索引文件删除。具体的结构图见图2 :      - 1. . . . . . … … , 。 … ‘ . . … , 。 . . -l图2          - 1索引器结构图F u 21  x  i ssm i r -I e dv e e g e  n e c y d t2 全文检索索引器的基本功能 . 2一个中文全文检索的索引器应该实现三部分的功能。第一部分是文本预处理,     一般需要检索的文档成分比较复杂,需要用文本预处理将文档中的中文,数字,符号, 及西文分 以 开并归 后分别 类然 对其建立索引。 于中 语言的 由 文 复杂性[ ( 1见 6 ] 3. .3节分词技术说明) 3 在预处理这部分需要包括中 文索引单位的选取,目 前主流的有两类:一类是单字,一类是分词。 第二部分功能是创建索引,利用选定的索引数据结构对源文档遍历建立索引。     第三部分功能是实现索引的维护,包括索引删除,索引增加,索引更新。      3中文全文检索索引器构造相关技术综述一个完整的中文全文检索的索引器的构造涉及到索引数据结构的选取,索引      单位的选定,以及整个索引器的结构,索引采用的策略,以及有关索引压缩算法 的研究。在本章中介绍了索引数据结构以及其相关的工作原理,分析了一种基于 单字的索引器的构造及工作原理以及基于分词技术的索引的构造方案,在最后的一小章中介绍了一些主流的压缩技术,并给出了这些技术与索引的结合应用。3 索引数据结构及其相关原理 . 1索引文件有多种组织形式,其中以正排表、到排表以及后继数组比较常用。      下面分别介绍正排表、倒排表以及后继数组的结构和工作原理。3 . 正排表的数据结构和其工作原理 .1 1正排表是以      文档的m 为关键字, 表中记录文档中每个字的位置信息,查找时 扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。正排表结构 如图3 所示, - 1 这种组织方法在建立索引的时候结构比较简单, 建立比 较方便且易 于维护;因为索引是基于文档建立的,若是有新的文档假如,直接为该文档建立 一个新的索引块, 挂接在原来索引文件的后面。若是有文档删除,则直接找到该 文档号文档对因的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。由于正排表的工作原理非常的简单,但是由于其检索效率太低,几乎没有什      么实用价值,所以在此不作详细介绍。文档 1J峪   wo d H  wo d r l  I  r 2 wo d } I o d r l - w r 2文档2」    L图 31正排表结构图 - Fgr -F ra lt c r i e 1 w r i sut e u 3 o d  t u s r 3 . 倒排表的数据结构和工作原理 .2 1倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出      现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的 I D和字符在该文档中出 现的位置情况。由于每个字或词对应的文档数量在动态变化,所以 倒排表的建立和维护都较为复杂,但是在查询的时候由于可以一次得到查询关键 字所对应的所有文档,所以效率高于正排表。在全文检索中,检索的快速响应是 一个最为关键的性能,而索引建立由于在后台进行,效率相对低一些,不会影响 整个搜索引擎的效率。倒排表的结构图如图3 : - 2wo d rl]匕   {档 文1} 文档1文档2 文档2W od r2」    L图3 倒排表结构图                              一F u 3 I ee lt c r                              i r  n rd sut ge - vt i t u 2  s r e倒排表的索引信息保存的是字或词条在文档内的位置,在同一篇文档内相邻      的字或词条的前后关系没有被保存到索引文件内。下面给出一个传统的基于单字 的中文全文检索数据结构和算法模型进行分析说明。 全文检索方案是在执行检索操作时比较字或词条在同一文档内的位置是否相      邻的算法方案。在此为了说明倒排表的工作原理,采用一个全文检索方案加以说明。倒排表实际上就是一个表结构,在对关键词进行检索时需要对关键词中每个     字 在倒排表中 行一次 进 检索操作, 假设我们要对 k e y这个关键词进行全文检索, k 如 e 定义3 所示: y - 1 定义3 :  =C ,  C . )  1 3 ..     Ky(l C, .n = 2 . - e 1 2 3   n . C .. . Ky 个字符的      e 是n 集合, 它们的 后位置关系是固定的, (i 前 S ) C 为包含字符C i的索引信息二元组D a 的集合, ui l 二元组中第一个数字为文档标号, 第二个数字为文字在文档内的位置。S i 描述为定义3 :      () C 可以 - 2 定 - S ) ( tl o)A l Ps,. At ,  )      (i{ xd Ps, d,  ). (r m Ps) 义3 :  = A l,  (r 2 o .,  l o 2 C l t 2 d m其中A t     m为包含字符 C 的文档的序号,Ps 为字符 C 在文档 A l rd l i om i t m中 rd出 位置, 一 e被检索到的 件数学描述如式3 所示: 现的 则 个k y 条 - 1 V i k x ( rx o i E C)  D      3 i rdi Ps )  (i N Ce e y  A I , x S   A ( rdi =A  N  ( ox-Psi        A D  P si ox-=1 A r x)  I i )式 31 -从上面的条件公式可以看出,检索成功的条件就是对关键字中所有的字符 C      i都可以找到同一篇文档,使该文档包含字符 C 而且这些字符在该文档中的字符位 i置的差值和它们在关键词中的位置的差值相同。例如,搜索 中国气      “假如索引库中 “ 字的索引信息为二元组序列为      中” ( 5( 6 5 )  )  0      ( 9( 9( 1) 2 )  )  6 7 , 4 , , , , “      国”字的索引信息为二元组序列为: ( 5( 6 5 0( 3)      ( 1)  4 1 )  )  7 ,  , , 2 , 则根据定义31 -      -和 3 : 2Ky{ ,国      } e 中 = ( = ( )  5 6 7 ) s ) 1 , 4 ) ) )  0      5( 6( 9( 9( 1 } 中 2 , , , , ( = ( )  5 )  } S ) 1 , ,) 0 7 4      5( 6( 1 ( 3) 国 1 2 , ,根据式 3 定义的匹配成功条件,检索结果 A为 2 5     1 - 和从上面检索的结果可以      看出 “ 中国” 两个字在 2 7 5 号文档内都出现了, 但是 只有 2 5 和 号文档内 “ 中国” 两个字是相邻的,所以 检索命中的文档为 2 5 和 号文档。从上述的分析可以      知道,倒排表检索效率的优势远远大于正排表。3 . 互关联后继树模型 .3 1目前全文检索除了上述的正排表、倒排表模型外有人研究利用互关联后继树      模型来实现全文检索。与传统的倒排表的索引数据必须具有文档一索引项结构且只能实 现简单的 询不同门 互关联后继 查 【, 树模型【1 19 81 ,不但能够处理具有文档索一引项结构的数据,同时也能够与 Pt 2 a 树[一样处理无结构数据[;具有创建速度 0 1 2 1 1快,查询速度快,空间效率高等特点。在本小章中将简要的介绍互关联后继数组模 的 本 造 其 作 理23 型 基 构 及 工 原 【1 2 , 2 设E 构 文 的 本 号 元的 合 , 2 … a中 一 基 符 ,      本 基 符 单 集 是a a, , 。 的 些 本 号 是 成 , 它们的有序组合便可构成一个文本。我们在每个文本 T的最后人为的添加一个不 在E 中的符号, 用来表示该文本的结束。 这个符号称为文本结束符, 一般用A CI SI 为 0的字符表示。在本文中,为了阅读方便文本结束符使用 “ ” # 。通常把加入某 一个索引库的 所有文本的集合叫做该索引库对应的全文。定 -( 和 继)对 意 本T 的 意 符串 , ,  为a 前      驱 后 义3 前 3 任 文 中 任 字 a 2 称 2 a a , 的驱;a 2 , 后继, 最后一 称为a 的 文本 个字符的 后继为 文本结束符. 注      成 本T的 符串 , a, , 。 , 现了m 记:若组 文 字 a 2 … a中 出 ,  个相同 字 的 符,不妨记该字符为a 那么a . 有m个后 记 [, 1,. .  ] 示a 继, 为a  k ,.m a  k = 2. ] , [表 的第 kk个后继。定 -(      表达式与后继树)设 义3 后继 4 全文I 一字符串a a, a, 是由 , 2 …, . ,  #组 成的 若 , 其中a= = .a=  相同 字 a, a. 二 a, 别是 ; a . ;  为 的 符, n'  , , ,分 其 ,  . . a ; = 2  . ,  2 , . . 后 a, a+ …, , 的 继 分 .a, , t 2 … a, ] 继, ,,  , a , 后 又 别a,g '  a ] , ,[ .  , , . 2 , . + , ] aJ g , t 2 .t 那 .a g 么 们 {a, t , (, '  ) … (w ,  ) 为a 后 表 我 称 (,,  ) a+ t 2  , a , t ,) 的 继 达式, , a , 2 a , . g , g + a g 可以 一 继 来描 表达 如图3 用 棵后 树 述此 式, 一所示, a, t, 是a 一 后 ( ,  ) 的 个( , a , g +继,位置)对。厂(,,g) a+t , j,a(+ 2 a, ) a 冲9 ( +t . a ,a ) . i ,g 图3 a      - 的后继树形式 3 Fgr  S ce i te o a i e3 ucsv r s f  u - 3  s e  e倘若文本中 有一段文字为二a  ,  二, 有 ( .  .  , 则a 后继, a b ; , 位置) (n ' 对 a, +t ,  ‘: 的 个后 , t: 在以 n为 树中b 在 支 序 。 a )其中 + g, 是。 一 继 而a 是 a, 根的 g + 所 分 的 号 这 序号 上 就是b u树中 位置 个 实际 也 在a, 的 。 .定义 3 (      - 互关联后继树)由 5 一个索引 库对应的全文I 的所有后继树组成的森林,叫做 I 的互关联后继树 ( S I e R l at csv Tes. I T n r e vn S ces e e) R t- e u i r例 1对于全文acbac ,其中 为索引库的结束符,a      baab# # 的后继表达式为 (61 ( ,  ( , , ,  , ( , b 2,  4 ( 3} 其对应的后继树, )  ) a ) b ) 全文IS R T如图3 所示。 - 4图3                            - 4全文互关联后继树模型F u 3 Fle i r la s c se  o l                temd ir  u-xn - e n u ei rs e g - tt  r v t  sv e e 4  te e c 创建该全文IS      R T的时候,我们为E 中的三个字符:ab‘ ,,分别建立三棵树, 然后按照读取的字符依次为树添加树枝。 首先读入a , 的后继b 填入树a b 将a 的 第一个分支处,由于此时还不知道该分支对应的位置信息,留空.而后,读入c , 将c填入以其前驱b 为根的树的第一个分支, 此分支号即为前次留空的位置信息, 将1 回填到a 树的第一个分支。 再读取a 在c树的第一个分支填写a , ,并且回添该分支号 1到b 树的第一个分支。…… 。当读入#后,在以 其前驱c 为根的后继 树中增加第二个分支#,并将2回填。此时,索引文件的结构如图3所示,将此 索引 文件结构表示成树的形式,即为图3 一的IS . RTa一 bl  a4                                 b2  b3 b- cl  c                                - a3  2 c- a2#                                 图3 索引文件结构示例                                一F u 3 I e 欣 sute                            i r  n x tc r ge - d 5  ru利用索引生成原文,      我们需要记录加入索引库的文本的第一个字符 A ,和 A 的后继在树 A 中的存储位置 P 本例中A=a P 。 , ,  取出a =1 树的第 1 个分支, 得 到 ( ,1,即a b ) 的后继为b 。再取b 树的第一个分支得到 ( , ,……依次, c 1 ) 我们得到的分支序列为:(       b,0 a,0 ) ̄ ( ) ̄ ( ,  c 0 )一 ( a,1 )一 ( b,1 )一 ( ,2 a )  ̄ (      )一 ( a,3 b,2 )一 ( ,1 c ) ̄ ( ,Fl o  # iN ) e每一个分支中的字符的序列即为我们的原文件:acbac       baab#  o 如果查询字符串 “ b ,我们在a      ac 树的分支中查找后继为b 的,发现第 1 2 >  和4分支满足条件,再根据这三个分支的内容取其后继,仅 1 4 .  分支 ( . . b 1 ) ( .  b 3 )的后继为c ,则 “ b ”在索引库中有两个匹配。 ac 在处理索引文件结构时,有两种办法。      方法一:为每个字符预留一定的空间 (      称为基础块) ,如果某一个字符的基本块用完,则在文件末尾为其分配一附加块,在每一块中添加指针,指向该字符的 下一个块。如图3 ,上面三行是基本块,当a - 6 的基本块满了,就为其在文件末尾分配一个附加块, 指针由基本块指向附加块,再次满后,再次为其分配附加块。如果此时 c 的基本块满了,则也为其分配一个附加块。 ̄ 一一1 一bC一‘ 一一牌{ }le-图3                          - 6索引 文件分块结构 F u 3 I e f b c su u                      i r - n x  l k c r g e  d i o t te 6  l e  r但是该方法存在的缺点是在基本块没有写满的时候,仍需占用存储空间,而 有些字符,如二级汉字,实际上很少会出现,所以如果基本块空间分配过大会浪 费,而如果分配较小,一个字符后可能会出现很多个链接块,在文件中分散存储, 将影响查询和原文生成的速度。方法二:      在索引库中 每加入一次文件, 则为相应文本字符添加一块与该字符上一块连接。方法二的不足是块的数目      和大小完全由每次加入文本库的文本内容决定。不 同字符的块大小将极为不平衡。如回车、换行或汉字 “ 的”的索引块较大,而二 级汉字的块将很小。且这也将限制每次索引库中加入文件不能过小,否则将会出 现繁多的小块,因而也会影响查询和原文生成的速度。 具体在处理索引文件结构时需要结合实际情况选择不同的索引创建方法,比      如若是每个字符在所有文档中出现的概率相差不多, 并且能够估计到文档的大小, 则采用第一中预留的方案,能够快速的检索并且不会出现很多的 “ 碎片” 。若是文 件的大小完全无法预料,则只能采用第二种。31 几种索引存储结构的比较 .4 .在上面的三个小节中提到了三种索引存储结构分别是正排表、倒排表和互关      联后继数组模型。下面给出三种索引结构的简要分析。由3 .的分析可以知道,      .1 1 对正排表进行信息检索的时候, 等于直接对源文件 进行全文扫描,索引的建立并没有加快检索的速度,但是却在建立索引时耗费了 空间和时间,这种方法没有实用的价值,一般不采用。 相比来说倒排表就很是一种实用性很强的索引存储,倒排索引由于其组织结      构的形式 ( 具体分析见 3 . , .2  1 ) 对信息的检索能够变的非常快, 所以倒排表成为了 一种主流的索引文件格式,在大部分的全文检索系统中的都采用这种索引结构。 互关联后继数组模型是一种新颖的全文检索的模型,他的特点:     1能 理      无结构的 据 ( ) 够处 数 这点与p 树有一 功能) a t 样的 .2      )创建的空间效率比 较高。 3      )可以通过索引生成原文。不足之处:     4      )文件管理方面,由于所有的倒排文件都是通过树或是森林来管理,所以系 统要维持整个森林要花费很大的代价。 5      )互关联后继数组在实现上的复杂度要远远大于倒排表。6      )在处理不相邻的检索关键字方面比 较吃力。 7 在文本预处理时,      ) 互关联后继树模型对 “t w r” sp d 就无能为力。 o o 与之相比倒排表具有以下的优点:     1 倒排表技术是一种比      ) 较普遍通用的技术,针对倒排表的研究也比较多,所 以相关的技术也比较容易实现。 2 经过改     进倒排表结构形式也能够达到比较好的检索效率,以弥补检索效率 )的问题,在空间效率上可以利用索引压缩技术进行改进。3 在网络上面,检索的返回结果只是一个链接,并不需要全文的还原,      ) 所以 互关联后继树模型这方面的优势并没有很明显。 综合比较起来,      本文采用倒排表格式的索引存储格式。3., 山基于单字的索引器构造全文检索的核心技术是将源文档中有的基本元素的出现信息记录到索引库中。在中文系统中,基本元素可以是单个汉字字符,也可以是词。因此,存在两种基本的索引库结构,即基于字表的索引库和基干词表的索引库。基于字表索引 库的建造方法有很多种,不同的字表的构建方法会对应不同的检索策略。下面介绍 中 种 表 索引 构 方 及 索策 [2 其 一 字 法 库的 造 法 检 略25 4l }3 . 单字索引数据结构 .1 2单字的索引库数据结构一般采用字表法,字表法索引库的主要部分是每个字     的字表信息。 字表结构如表3 所示, - 1 其中字符i 对应的字表记录了该字符在源文 档中所出现的位置 P 。该位置采用了字符相对于文档头的偏移字符数表示,而不 i x 按通常情况采用相对于文档头的偏移字节数, 这样可以大大减小位置的数值大小, 有利于进一步采用压缩技术。建立字表索引时,需要扫描整个源文档,对出现的 每一个有效字符,计算其在文档中出现的位置,并将该位置的值加入到对应的字表中。T be  C aat t l s utr                                al31  r e a e  cue - h c r  t b r表3                             - 1字表结构啊阿P 1 1 ,1 . 1, 2P 3. P .P 1 2 ,2 , 2 , 2 3二 P P的P1 i P iP2 i , ,3 中 一 .P1 j, 3 j, 2 j P P索引库中的一个字表记录了对应字符在源文档中的所有位置信息。考察一个     字符串, 个 如两 字的字符串X ( Y其中x Y表示任意的 ,  汉字字 ) 假设X的位置 符, 为 P, ) 如果字符串X x Y在源文档中出 则Y的 现, 位置P 必 等P+1 ( 为两个 y 定 x ,  1 汉 的 字间 字符距离 。 ) 在索引库中X的 字表中 含P, 将包 x 而Y的 字表中 也必然包含 P十1 x 。进行检索时,扫描 X和 Y各自 对应的字表,若文档中有该词出现,则必定 有X 对应的 字表中 存在位置 x Y对应的 值P,  字表中 在 存 位置值P 使得P= y yP+  x1 成立,每查到一对这样的 位置值,就是检索到字串X Y一次。扫描完两字的 字表,就可检索出 该字符串的所有出现。 上面简要介绍了字表的用法,      在具体实现的时候的数据结构要稍微复杂一些, 因为某个字符的字表中不但要包含文档的信息还要有某字符在该文档中出现的位 置信息,由于字符在每一个文档中出现的次数与位置都不一样,所以在实现的时 候采用了一种比较复杂的数据结构,就是字表倒排文档。 字表倒排文档的数据结构是每个汉字字符对应的字表中,包含该字符出现在      所有文档中的全部位置。为了区分每个位置公到属于哪个文档,每个字符的字表 被分为多个字表段,每段对应一个文档,记录该字符在此文档中的出现位置。字 表采用倒排文件结构,如表3 一所示。Ta l 3 2 h rce tbe v re l t be  C aa tr  l i e d  - a n t i s表3                                 - 2字表倒排文档字段表1 I 一 二} 字表段】 }文档编号} 字频{ 位置序列每个字表段起始部分记录当前文档的编号,随后是该字符在文档中的出现频      率,最后是该字符在文档中的所有出现位置序列。每个字符的所有字表段按文档 编号递增的顺序排列,如果该字符在文档 k中没有出现,则不存在文档 k对应的字表段。3 . 单字索引的创建方法 .2 2上面简要介绍了基于字表的索引库的结构,下面给出基于单字索引的创建方 法。该索引创建方法不需要排序,分为如下两步:     第一步分析源文档,产生临时的中间文件,这个过程称为分析过程。当前只      针对 G B码字符[进行处理, 2 6 1 其中包含全部字符,既有汉字,又有一般的数字, 标点符号等. B码第一个字节的范围是 O A -O F , G X I X 7 第二个字节的范围是 O A X 1 -O F 。汉字从 “ XE 啊”开始,首字节为 16 4,第二个字节为 11 5 。根据这 7- 7 2 6- 4 2 种分布规律,可以 方便地定位每个字符对应的字表信息。源文档经过处理,将其 包含的每个字符的对应信息写到一个临时的中间文件中。对于每个字符,其在临 时文件中的对应信息包括:该字所出现的当前文档编号、在该文档中的出现频率、出 位置序列 现的 和该字符出 现在下一个文档的数据的指针( 数据在文件中的偏移值) . 第二步处理临时文件,依次从临时文件中      读取每个字符出现在每一篇文章中的数据信息,生成最终的倒排文件,在这里称为创建过程。生成的最终倒排文件 中包含每个字符出现在所有文档中的信息。包含该字符出现的当前文档的编号、 出现频率和相应的位置序列。处理过程如下图所示。分析临时文件卜 I文档编号频率位置序列 }前向指针最终到排文件卜 {文档编号 州频率位置序列图 37 生成索引文件流程图      - Fg r 37 l ca o c an Idx iue  Fo hr  r tg  e - w t f  i n e3 . 优化的基于单字索引创建方法 .3 2在上面所论述的基于单字的索引创建方法中,对于源文件的分析过程本身需     要一定的时间,随着处理数据集规模的增大,相应的分析时间增大,第二步 ( 创建过程) 所需的时间 相应的迅速增大。该过程需要大量的随机读取操作来遍历每个 字符对应的所有信息。当数据的规模增大时,遍历每个字符的临时数据的操作变 得很慢。这是由 于字符对应的每个字表的数据在临时文件中有一定距离,遍历需 要不断地移动文件指针来读取这些数据。利用操作系      统提供的 虚拟内 存技术r 优化索引的 I可以 n 创建过 Wno s 程。 i w 操 d作系统用虚拟内存技术来动态管理运行时的交换文件。为了提供比实际物理内存 还多的内 存容量以供使用, no s操作系统占用了硬盘上的一部分空间作为虚 Wi w d 拟内存。当 C U 有要求时,首先会读取内存中的资料。当内存容量不够用时, P Wi o s n w 就会将需要暂时储存的数据写入硬盘。内存映射文件技术是 Wi o s  d n wN d I 提供的一种新的文件数据存取机制。利用内存映射文件技术,系统可以在 2 B的 G 地址空间中为文件保留一部分空间,并将文件映射到这块保留空间。一旦文件被 映射之后,Wi o s  nwN d T将仔细管理页映射、缓冲以及高速缓冲等任务。通过把临 时文件映射到虚拟内存中,可以大大加快对临时文件的访问速度。 对于较小的源数据集,分析处理后生成的临时文件也较小,使用内      存映射文 件可以 大大加快创建过程。但当数据规模增大时,该方法的性能迅速降低,甚至 比没有使用内存映射文件都差。性能的降低一方面由于机器有限的内存,其小于 临时文件的大小。另外一方面,同一个字符相邻的数据在临时文件中距离过大, 导致大量的缺页中断,系统性能大大降低。解决该问题的有效方法是把原有的单 个的大的中间文件分成多个小的临时文件, 在分析过程中生成多个小的临时文件, 创建过程依次处理每个临时文件,将其映射到虚拟内存中,可以充分利用直接内 存访问的速度,并且减少缺页中断。在实际应用中,可以采用了统计的方法,通 过对一个较大的数据集的分析,将原有的一个大的临时文件拆分成多个小的临时 文件,每个字符的索引数据存放于其中的一个临时文件中。井且每个临时文件中 存放的数据的大小相差很小。这样,每个小的临时文件的大小小于当前内存的大 小,从而可以有效地使用虚拟内 存技术加快存取。3 基于词表的索引器构造 . 3由上文可以知道以中文的词组作为索引单元也是一种常用的索引文件构造方     式1 , 8 2 基于分词的中文全文检索索引 1 器的构造[ 1 词为索引项的 2 是以 9 . 索引结构。3 . 词表索引 .1 3 数据结构 典型的基于词的倒排索引结构 (      见图 38 -)包含两部分:1 )中文词组成向量 ( 称之为词汇表) ,它包含了词的基本信息和词索引在索引文件中的偏移量。2 )对于词汇表中的每一个词,都有一个它出现过的文档列表,它包含了出现文档编 号,在此文档中该词的词频和出现位置序列。词m { 索引指针wl 基本空间W1 基本空间Nr c sNe xr文献频率出现列表一 产尸 沪产文档m    字频 } 位置序列wl 基本空间wl 基本空间Nr e aN已1 名图3 词索引倒排文档                一 F u 3 I ee i e b e o o           s - w r i r - n rd  x  d n  d  g e  vt n a 8  d图3 一临时文件结构 F u 3 Tm f sut i r - e p  tc r g e  9  i r u l e  e词索引指针指向词的索引在索引文件中的偏移量,区域最开始保存的这个词      出现过的文档数目 (文献频率) ,这是为了在检索过程中读取索引前能够合适地 分配内存空间,文献频率后面是出现文档列表。在这个结构中,除了字频用单字 节之外,其他都用 4 个字节表示,而且出现在列表中的文档编号是升序排列的。3 . 一种词表索引创建流程 .2 3要建立词索引,首先需要对文档进行自      动分词。首先将文本中的中文词、西 文词和连续数字组合分析出来,然后对分词结果进行排序,合并相同词的信息, 这样就得到一张文档中出现词的列表以及它们的出现位置序列。对于每个词,可 以 根据它们的计算机编码 (中文 G 21,西文和数字 A CI B 32 SI )映射到词表中的 位置,更新词汇表及索引。下面是详细的流程描述: ()      1 对文档进行自 动分词,对结果排序,合并相同词的信息。 ()      2 定位词在词表中的位置,得到词索引区在临时文件中的偏移量,如果是 以前未出现过的词,就在临时文件的末尾分配一个固定大小的基本空间,对于低 频词来说太大的基本空间将造成浪费,所以需要分配合适大小的基本空间。在本 系统中,基本空间大小正好能保存一个词出 现一次的信息。 ()如果这个词以 现过,      3 前出 将文档的读写指针定位到这个词的索引区的末尾。()写入每个词的索引信息到临时文件。如果此时分配给该词的空间用完,      4 则在临时文件末尾给其分配新的溢出空间,出现次数越多的词分配的溢出空间也 越大。索引写完后,将上一索引区的向前指针更新为新分配空间在临时文档中的偏移量 。 ()对于文档中的每个词,重复步骤 () ()      5 2 到 4 ,对于每篇文档重复步骤()到 ( ) 1 5e()所有文档处理完后,对于每个词,我们将分散在临时文档中的索引信息      6 合并在一起,然后按照图3 - 8的格式写入最终的倒排文档.3 . 常用分词技术的研究 .3 3以词为索引项的技术重点是词的切分问题。在本小节中对主流的一些分词技     术321 133 1,进行了 , 3 分析总结。目      前采用的分词方法主要有:基于神经元网络和专家系统的算法、正向、逆向 最大匹配法3、 遍历法、 [ 逐词 4 1 最佳匹配 词频 法、 统计法, 此外还有穷多 列 层次举法、二次扫描法、基于期望的分词方法、双向扫描法、邻接约束方法、 邻接知 识约束方法、最少分词词频选择方法等。但归纳起来不外乎两类,第一类是在生 成关键词时将语法、句法、语义结合起来,试图模仿人类的阅读过程。但有时语 法、句法、语义连开发人员都不是很清楚,故一般情况下不采用。第二类由字典 匹配法和基于频度方法组成,这些方法比 起上一种来较具体实用。下面给出几种常用的分词方法:      1 、逐词遍历法该方法是将词典中的所有词按由长到短的顺序在文章中逐个搜索匹配整个待     处理材料,直到把所有的词都切分出来为止。也就是说,不管文章有多短,词典 有多大,都要将词典遍历一遍。如“      他睡觉打奸” ,利用该方法切分这一句话,不论分词词典多大,都得把整 个分词词典匹配一遍。故这种方法的时间复杂度比较高,是一种不可使用的分词方法。2 正向 、 伽娜与 (M ) 逆向R M最大匹配法正向最大匹配法是最早提出的自      动分词方法,它的基本思想是先取一句话的 前六个字查字典,若不是一个词,则删除六个字的最后一个字再查,这样一直下 支,直到找到一个词为止, 对句子剩余部分重复此操作,一直到把所有的词都分出来为止,逆向最大匹配法和 MM 法一样,不同之处在于它是从句子的最后六个 字开始的,每次匹配不成功时去掉汉字串中最前面的一个字。 两种方法思路清晰,易于用计算机实现,但是由于试图用相对稳定的词表来      代替灵活多变、充满活力的词汇,把词表作为判别词的唯一标准,因而,为了查询的方便, M 法要求配备逆序的分词词典, R M方 这样的分词词典维护起来比 较困 难 坏符合人们习 ) 另外, M和 R M法否 惯. M M 认词的 组合递归性,因 错率 此出 高。 据统计表明, M方法的错误切分率为 1 6。 M / 9 这两种方法一般都不单独使用, 1而是与其它方法相结合使用在同一系统中。3 、非用字后缀表示方法[ 3 5 1它是建立在中文 自      动抽取关键词基础上的中文分词方法。非用字后缀表示法将中 文分为A ( 外用字 、 ( 用字 、 类( 件用字 、 类( 类表 )B类 表内 ) C 条 ) D 非用字) 它 。从G 21- 的66 个字中挑出B类、 B 32 0 73 8 C类、 D类组成非用字后缀表。 在抽词时,首先采用字的方法将文章变成由关键词组成的词段,然后分成 1 8种模式:(/+ B+ B +) ( B+ ) (l B+/) ("AB C。 B A A / ,  C,  A AB,  + /十 ) 如仍有长词, A C + A C + C 则采 用2 ,2 措施解决. -2 - 2-2 这种方法简单, 而且速度快。 4 设立切分标志法[ 、 6 3 1 在      着许多自 汉语中 存在 然切分 ( 标志 文章的 非文字符一号 , 标点符号等, )如 另外还 在一些非自 切分标志 词 存 然 ( 缀和不构 成词的 , 词)如只能 词首字或词尾字 充当的字、不构成词的单字词、复音节单纯词、拟声词等,词不能跨越这些标志而存 在。设立切分标志法的基本思想是通过建立非自然切分标志的一张表来识别所有的非自 然标志。 这样,一个句子链就可以转化为若千字符串短链。然后用其它切分方法进行细加工,这样可以大大提高效率。这种分词方法后期处理时由于匹配长度较短,减少了比较次数,不过开始阶段寻找切分标志又增加了 分词的时间复 杂度。另外非自 然切分标志随着词典中收集的词和字的个数而变动。词典中增加 了一些词但是没有增加新字,可能减少非自 然切分标志,增加了一些新字,但由 于没有能够及时地增加相应的词, 可能会增加非切分标志的数量。 其实, 设立切 “ 分标志方法”并不是真正意义上的一种分词方法,只不过是自动分词的一种前处理方式而己,而且这种处理并没有提高分词精度,却要额外消耗时间扫描切分标 志,增加分词的时间复杂度,另外要花费存储空间存放那些所谓的非 自然切分标志。因此,设立切分标志法一般很少被单独采用。 5O ,  M方法O (H OTM M  C IG  H D方法称为      PIU M THN M T O ) M  E  T A E 最佳匹 配法。 M方法 O 《 汉语》 张 公主编) 提出 , 正向 现代 (志 中 来的 分为 最佳匹 和逆向 配法 最佳匹配法.最佳匹配法的出发点是在词典中按词频的大小顺序排列词条,以求缩短分词词典 的检索时间,达到最佳效果,从而降低分词的时间复杂度,加快分词速度。实质上,这种分词方法是预先对分词词典进行处理,而不是一种纯粹意义的      分词方法。 M方法的分词词典每条词前面必须有指明长度的数据项, O 所以O M方 法的空间复杂度稍有增加。 M方法虽然降低了分词的时间复杂度, O 但是并没有提高分词精度。但它的一个明显缺点是频度较低的词,永远被错误切分。如果仅考虑当前I      T 在处理文本的词频的话,将会得到良 好的效果,其代价是增加了分词的空间复杂度。6 、二次扫描法二次扫描法的基本思想是取待处理材料中两个切分标志之间的部分作为样本      串,首先从该样本串中取两个汉字作为匹配串,检查分词词典中是否有一个词, 它的前两个汉字和该样本串相同,若有的话,则取样本串的前三个汉字作为匹配 串, 重新在分词词典中找可以匹配串的词, 若有则重复下去, 直到进行 I 个汉字为止 设I 词典中 长词所含汉字的 ) 则切分出 ( 为 最 个数 , 一个I 字词; 有则 若没 完成了一次扫描;把匹配中的最后一个汉字去掉,作为新的匹配串,进行第二次扫描, 第二次扫描是用 MM 方法或 R MM 方法进行。由于汉语中的平均词长为 1 3 . ,故 8 二次扫描法降低了分词的时间复杂度。二次扫描要求分词词典按国际递增的顺序 存放词条,若不是这样存放,则二次扫描法的时间复杂度会增大。二次扫描法没 有提高分词的精度,也没有增大分词的空间复杂度。它是一种切实可行的方法。 7 基于词频统计的分词方法 、词频统计的结果揭示了社会的用词规律,因此利用词频统计的结果帮助分词,     会 产生一定的效果。 这种分词方法不依靠词典, 将文章中 而是 任意个 字( 数的 小于 等于 最长词长 L同时出 频 规定 ) 现的 率进行统计, 越高 越可能 次数 的 是一个词。它不是纯粹意义上的 机械分词方法, 而是在分词过程中处理歧义字段的一种方法。例如: BB 是两个词, A ,  C 如果B C的频度比A B的大, B 则A C这一歧义字段应切 分为A 。这种方法可以很容易地将挑选出专有术语、 BC 人名、 地名等,但它的一 个明显缺点是频度较低的词,永远被错误切分。如果仅考虑当前正在处理文本的词频的话,将会得到良好的效果,其代价是增加了分词的空间复杂度。 8 联想一回溯法 、联想一回溯法是山西大学计算机系提出来的,目的在于提高分词的精度。该      方法可描述如下: 首先将待切分的汉语言文本,依据特征库分割为若千子串,每个子串为词或     词群 几 ( 个词组 成的 序列 。 合而 线性 )然后再用实 词库和规则 将词群细分为词。 库 这种方法实际上采用设立切分标志法和有穷多层次列举法的思想,由于实行分级建 库,故增加了分词的空间复杂度,把分词过程分解成分割和细分两个过程,使得 分词的时间复杂度增大。它能提高分词的精度,从而是一种可行的方法。它不是 一种纯粹机械分词方法。 这种方法己 在山西大学计算机系设计的A WD自 B 动分词系统上得以实现。9 专家系统方法 、专家系统方法从专家系统角度把分词的知识(      包括常识性分词知识与消除歧义 切分的 启发性知 歧义 识即 切分规则 从实 ) 现分词过程中的推理机中独立出 来,使知识库的维护与推理机的实现互不干扰,从而使知识库易于维护和管理,它还具有 发现交集型歧义字段和多义组合歧义字段的能力和一定的自 学习功能。 综上所述,由于中文的复杂性,很难以某种方法正确地、彻底地分词。在实际应用中,一般 都是几种方法配合使用,以求达到最佳效果。在上文中对目      前主流的一些分词技术方法做了简要的介绍,由此可以看出基 于分词的全文检索具有以下的优点: 1      )检索速度较按字检索的快。 在理想情况下,检索词语经分词后的检索单元 数量一般要少于以字为检索项的检索系统,当检索词语较长时,检索效率的提高比较明显。2      )查准率较高。系统可以利用语言学知识借助词典和分词规则避免歧义词, 如检索 “ 华人”这个词,按字检索会将 “ 中华人民共和国”也检出,而分词系统 可以借助分词规则和词典避免这一情况。 3      )可以借用英文全文检索系统中已有的理论及方法,英文全文检索中有许多 成熟有效的方法可以直接借鉴。 4      )可以完成概念层次、主题的提取和检索。同时分词技术也有其不可避免的缺憾与不足:     D 构造一个可以      跟上时代发展的词典是分词系统的一个难题。由于现代语言 的发展和外来语的引进,符合新时代特色的词典的构造不是一件简单的事,成为 分词检索系统开发的制约因素。添加新词语,建立众多词语的新概念模式、删除 过时词语的维护工作量极大。从成本角度看,词典的更新维护加大了用户的使用 成本,不利于系统的推广。 2 中文构词方法的复杂性使得人们难以      ) 构造一个完全准确、 合理的分词规则, 因此查全率一直是分词算法难以解决的问题,影响了 基于分词的全文检索系统的 可靠性。迄今为止始终没有一种有效的分词规则可以彻底解决查全、查准率的问题。3 在分词过程中大量的人名、地名和许多专有名词、新的语言词语、外来词      ) 无法在词典中记录,而分词规则也无法识别这些词,只能借助按字索引的方式解 决。在实务中有相当多的检索信息是这类名词,因此从实际看,降低了分词检索 的效率,使得分词检索系统的检索效率优势大打折扣。3 几种压缩技术的研究 . 4在本节中主要针对索引在编码级上的压缩进行了分析,研究和比较。主要讨 论了 位紧 压 法38可 节 码 EaGm a n编 法,o m 按 凑 缩 [ 1 变字 编 法,l am c i 码方 Gl b 7, 3 i s  o g d o c i 编码 法, irIeote i 码方 并 对 编 特点 on dg 方 B a   r lvCdg编 法, 针 不同 码的 说 n n p a on y t i明了其适用的范围。3 . 按位紧凑压缩法 .1 4在本小节中利用单字的倒排索引文档给出按位紧凑压缩法的详细说明。在建      立倒排文档时,在得到每个字符在所有源文档中的全部位置信息后,直接将其写入倒 排索引 件中, 位置信息 它 文 这些 都用 在源文档中的 绝对地 址来表示 可能 ( 被调 整过, 与实际的 物理位置 并不完全一致 . ) 虽然每个文档一般不 会太大, 虑到 但考 通用 绝对 址 性, 地 应该用4 y 来表示。同 个bt e 样文档号也需 个b e 示。 要4 y 来表 t现在对上面阐述基于单字的倒排索引建立方法的空间存储效率进行一些分      析。 先只对一个文字在一篇文档中的索引情况进行讨论,假设 “ 啊”字在 I D编号为5 4 (xA3 文档中出 5 3 D 2 的 8 O ) 现了1次, 信息分别为: 0 位置 P S =( 5      x) O O 5  0 P S=9  5     04) O T6 ( xP5=0 0 8     ( 6) 0214 x P S=06088 O 925 ( 0) x按 本节 -和3 的 述, 例中 设m为4 为1 则 照 式3 1 - 阐 本 均 , ,  0 有 2 n ,Cp 4  =0  a= 1 4 bt X  y 0 eI o 2 0 2 bt n =  1=  y f X  0 e空间压缩比:C m=C p o 4/ o aMf=02 0叭.2m.首次出现绝定地址M ,绝对地址1 绝对地址2图 31                          - 0相对地址压缩格式示意图 F u 3 0 avad scm r sn c r                    i r - Rl e rs  p so sute g e  et d e o e i t u 1 i r从上面的分析可以看出,如果不对字符位置信息进行压缩,索引库的信息量      会很大,尤其对中文来说,在源文档中用两个字节表示的一个汉字字符,在索引库中需要用4y 来记录其出 bt e 现位置, 库的总的信息量将是源文档信息量的两 索引 倍左右,显然必须采用适当的方法对其进行有效的压缩。由于对文档的扫描处理 是顺序进行的,字符出现的位置必然是按升序排列的。根据这一特点,可以对位 置序列进行压缩,采取差值编码的思想,对每一出现位置记录其相对于前一出现 位置的相对地址,每一相对地址采取尽可能短的可变长度表示。字表段的压缩格 式如图所示。 对字符位置序列压缩时,      将第一个出现位置 P i直接用绝对地址表示,从 P 2 开始,用相对地址表示。每个相对地址用若干位表示, 在保证尽可能短的地址编 码长度的条件下,将数个编码长度相同的连续地址压缩为一个 “ 地址节” 一个 , 地址节中包含该节的地址编码长度、地址个数以及各地址编码按位紧凑存放的地 址码位流,如下图所示。这样一个字符在一篇文档中的位置信息就由若干地址节构成。地址编码长度可以有 4i, t 8i,  i 等情况。当相对地址长度超过      bs 6i, t 1bs t bs bs 6 t 1 i 地址空间时,则直接用绝对地址表示。 6t bs 一般的文档都比较小,极少用到超过 6K的相对地址,因此每个字符的出现      4地址的编码长度一般在 8i- bs bs 6i 之间。由 t1 t 此可见,使用这种方法压缩的索引库 的数据量将保持在原文档的 文本内 容的数据量的5% 0% 0 -1 之间。 0相 对 地 址编 码 长 度 } 地址 个 数 } 地 址 码位 流图31 -1地址节示意图F u 31A d ss tn                                i r  1  r s  i ge - d e e o c另外,第一个出现位置要用绝对地址表示,而在绝大多数情况下,绝对地址     用1 i表示就 6t bs 足够了. 此, 因 在索引 可以 库中 根据具 体情况, 般用2y 表示 一 bt e 绝对 地址, 对于极 情况, 使 bt 个别 再 用4y 编码。 e这种编码方式最大限度地压缩了位置信息,但是它只有在位置信息里出现大      量连续的相同位数的地址时才能够对位置信息进行高效的压缩。例如,只有当长 度为4i 的地址码连续出现四个以 6s t 上,用这种编码方式才能够起到节省空间的目 的;而当连续的4i 编码小于两个时反而浪费了空间。因为在不压缩的情况下, bs t4i 的 bs 地址可以 个字节表示, 个连续4i 占 t 用一 四 bs 用了4y , t bt 而经过 e 这种编码 压缩后, 个地 压缩到了 个字节中 每个字节有8i , 四 址被 两 ( 6s 另外在 t ) 用一个字节记 录地址节中 地址的 个数以 解码, 用于 这样就总 用了3y , 共占 6t 节省了 个字节。 e 一当4i 地址连续出 bs t 现两次和三次时,编码前后所占用的字节都是两个和三个,不 节省也不浪费,而当4i 只出现一次时,这样编码后需占用两个字节,反而多用 bs t 了一个字节。同样, bs 6i 的地址编码需要连续出现八个才能达到节省空间的目的。 t 而当采用英文词表和中文字表的倒排表组织方式的时候,这种情况出现的几率是非常小的,使用这种方式编码也是很不经济的。另外,由于这种编码方式比较复 杂,在编码和解码时需要消耗一定的时间和资源,也会直接影响搜索引擎的快速 响应。只有当 采用英文字表组织倒排表的时候,即英文不按照单词, 而是以2 个 6 字母组织倒排表, 这个时候由于所有的位置信息全都集中到了2 张表中,才有可 6 能出 现大量连续的4i. t等同长度的地址,这个时候用这种按位紧凑压缩的 bs oi t bs 方式编码才是行之有效的。3 . 可变字节 .2 4 编码 (aalBtCdg Vrb y oi ) i e e  n在本小节中 另外一种索引压缩的方法,叫可变字节编码[。      介绍 3 该压缩方法 9 [是基于传统的索引结构模型。索引完全是由整数值组成,整数值越小,就能用更 少的字节来表示它。为了提高索引压缩比,需要减小索引中数值大小,因此在创 建索引之前,需要对索引进行预处理。 在 3 节的基于分词的索引建立的方法中已经提到,      . 2 若词出现列表中的文档编 号是升序排列的,因此可以采用增量编码的方法表示文档编号,文档编号只保存 与上一篇文档编号的增量。词在文档中的出现位置序列必然是升序排列的,因此 也可以采用同 样的处理方法,同时出现位置可以用词编号来表示,而不用词相对 于文件头的字节偏移量来表示,这样可以 大大减少出 现位置的数值。 可变字节编码分为两类,      一类是均匀变长编码, 另一大类是非均匀变长编码。 下面分别就这两种编码形式加以详细说明。 (    一)均匀变长编码 在未压缩的索引中,除了词频是单字节表示以      外,其他都是用 4个字节来表 示,大部分的数值根本不需要 4个字节表示,造成了很大的浪费。设计一种整数 变长编码, 将双字的低字节的最低 2 位作为数值字节长度标志位。 01 0-1分别表示数 值需要1 个字 表示。 - 4 节 除了2位作为 标志位, 其它位 字节 都用来保存数据( 图 3匀 - 。由图3 2 1 - 可知字节长度和标志位是均匀映射, 称之为均匀变长编码。 1 所以编码时,首先根据数值大小来判断字节长度标志位, 然后将数值做左移2 位运算, 将标志位通过按位或运算写入数值的低 2位中。在解码时,首先在当前指针处读 取一个字节,和0 3做按位与的运算获得此数值的标志位, X 然后按照标志位读入 相应的字节,最后将读入的数据整体做右移 2位操作就能得到源数据。比如数值1, 2 用二进制表示为1 100 通过大小比 0 1 00, 1 较后可知需要2 个字节来表示, 均匀压缩编码后的二进制表示为〕001 1000 ,可以看出大部分的增量数值只需 )001  001 1 1 个字节表示,而无需再用 4 - 2 字节。 } _ L=  m 1  a   A -一 Fa - l ― lg - u 一 州Fa= l 1 gFa- 1 l 1 g图31                                - 2均匀变长编码 F u 31 U ir vrb cd                            i r  2  f m i l o吨 ge - no aa e ( 二) 非均匀变长编码 通过分析可以看出,大部分情况一篇文章包含的字词数在 4万以下,那么出      现位置数值的增量编码则会更小。对于数据量较大的高频词,其出现文档编码的 相对增量值也不大。针对全文数据的这一特点,提出一种标志位和字节长度非均 匀的映射编码方法。由于小数值出现的机会大,可以将小数值字节表示范围划分 密集一些,而大数值字节表示范围划分粗略一点。双字的编码方式如图所示。在前面的方法中。表示词频的单字节不压缩,由分析可知,一个词在很大部分文章中出 现频率都 很低[, i m 针对此加入了 l 对词频单字节的 压缩编码方法, 单字节编 码标志位为 1位,0或 I分别表示用半个或一个字节表示数值 ( 31) 图 -4 。均匀变百 一 ̄一月 一 ―匕                               几 g1 0F g 1 一一                b =o Fa= 】 I 1一 g 一 -匕                               图3 3 非均匀变长编码示意图                            - 1 F u 3 3  - ir vrb cd g                        i r - N n no aal oi g e  o u fm  i e  n 1长编码读写时,都是以字节为单位的,因此其压缩和解压缩的算法较简单;非均匀变长编码由于会出现读写时字节不对齐的情况,因此算法较为复杂,解压缩的R昭1bt 1i 一                                        n鲍= 1图3 4单字节非均匀变长编码示意图                        - 1F u 3 4  lbtnn no vrb cd g                    i r  S g y o- ir aal oi ge - i e  1 n e  u fm i e  n时间也会更长。就索引的空间来说,原来大部分用 2字节表示的数值现在都能用 1 倍的字节表示,这部分空间减少了 2%,但是 1 . 5 5 字节的表示长度没有变化,3 字节现在需要 4字节来表示,字频大部分用半个字节就能表示,从整体来说比均 匀编码方式的空间缩减率在 2% 5 左右。由此可以看出非均匀编码相对于均匀编码 来说, 用一个标志位状态表示 1 个字节长度, .个字节长度标志位合并为一个, . 5 3 4使得在低数值字节表示范围上划分更细了,与实际系统中小数据出 现概率大的情 况十分匹配,因此可以获得更大的空间压缩率。 本小节主要介绍了变长编码压缩方式的两种实现形式,      一种是均匀变长编码, 另外一种是非均匀变长编码,由以上的分析可以看出,由于实际上文档的数量和 文档的大小都会在平均的一个水平,并且不会十分的大,在这种情况下非均匀编 程编码就会在压缩率上胜过均匀变长编码。但是在相同的条件下非均匀变长编码 的编码格式比均匀变长编码的要复杂,所以其在解压缩的时间上也要长于均匀变长编码。3 . ls  m cd g .3  i G m a  i 4  E a a on倒排表可以非常长,而信息检索是以      磁盘为界限的。从磁盘检索一个长的倒 排表要比对它进行其他的操作花更多的时间。为了能增大从磁盘上检索的信息量, 需要针对整形数进行更有效的编码方法。在伽马编码中, 个整型      一 数被表示成两部分, 是hw l , 头部 o 个0 尾部是x 的 二 表示。 进制 这样整 表示为二 0, 0, 数9 0001 因为l z 3 所以 1 o x , 头部是00 尾 g= 0,部是 10 0 01伽马编码对于小丫些的整数其编码效率是很高的,因为头部的长度短。当数     变大,存储空间也变大了。EaGm Cdg 种简 压     a i 是一 单的 缩编码的 l am o n i s  方式, 针对数 较小的 值比 整数其编码效率很高,但是若是整数变得很大的时候该编码的方式就有一些不太实用了。3 . G lm C d g .4  o b  i 4 o on在Gl b 码中,     编 om o 整数x 用两部 分来表示, 商和余数. 计算公 商的 式为9 = Lx 1/ , (- )  余数的 k J 计算公式为、 一* , 伪 冷1 在这里k om 编码算法的 是Gl b o 基础。 如果r ,      < 整数可以 oz ( 于该值的 p 用Ug j取大 k 最小整 位 存储, 则它 数) 来 否 将需要l2 ( 于该 上 数)在 里p 分 (gj取大 值的 整 , 这 是 界点, 算 法为p2o k1  ok 计 方 =lg +J. l2 - k当r 时, o m 编码用4 1  ,     G l b < p o 个0 1 个1 还有r 进 表示。 的二 制 否则表示方 法为9 ,  ,以 + 的 进制 个0 1 个1 及r 二 表示. p 这样, 整数9 用k 3 编码为 可以 = 的0 , 10 01 1 ,对于这套编码方案来说,k的选择是至关重要的,如果选择的不好,编码后      的整数会变的非常大, 需要很长时间来解压。 tn l(94 认为假定倒排表 Wi ea 19 ) t t  e .  中整数符合 Bm ui e ol模型,则一列整数 a 值用 k 0 9  l 的k - . X平均值 ()来计算。 6 a对这些实验的k        值的选择用的是 Wi n t 的近似法,每一个倒排表都用自己 e 的k 来压缩。存储k 的花费未被计算并且也没有包含在结果中。Wia s Zbl        e 描述了 o m 编码实施优化的方法, lm a o l n i d  对G l b o 并且认为常规 的对整数的G l b o m 编码比E ag m 编码和Eadl 编码解码更加节省空间。 o ls  a i a m ls a i e t本小节说明了 G l          b编码的原理,并且指出了该编码方案的关键点主要 om o 在于 k值的选择,因为 k 值的大小与解压的时间关系很大,若是没有选择好一个 合适的 k 值那么解压的时间将变的很大,这样压缩算法就失去了意义。3 5 irIeote i( 进制 .    a   r lvCdg 4 Bn n p a o n 二 插入编码 y t i )二进制插入 码4 M ft tv 20 用      编 [ ( oa和S ir  ) 相邻数的 1 1  u e 00 信息来 编码一个单调递增的整数数列。如果在整数数列 X 中,对于任意给定的一个整数 X      ; i ,前一个数 X1 ;和后一个 _ 数 X1 i是已知的, + 那么通过减法运算我们可以 得到存储 X 所需要的最大位数。因 i为X 大小是 (_ l X, 1 的 i 的 在 X + , 一 ) 范围内 所需的 大位数为1 2  1 X 1 j  i l + , 最 0 (i- i 9 X + --2。 ) 解码时需要X1 X1 i和 i 的信息,所以数列X 是从原先的X 得到的,也就是 _ + 2 1 说每个从表 X 得到的整数都在 X 中, 1 2 这样也就可以递归地进行编码。 中心最小二进制编码也是二进制插入编码的一种实现形式。它是指当压缩一     个 列1. 需 f 位 但 有2r- 位 编 就 浪 掉 。 些 浪 序 . , 要l n , 是 f l。 的 码 被 费 了 这 被 . n ol & 0 ' , n 2费掉的编码可以被缩短成一位并被使用 ( 只要这些短的编码不是长编码的前缀) 。这些最小化的二进制编码被置于编码范围的中心, 在进一步处理过程中,当数列 的长度不断缩小, 数列的密度也就增大了。 压缩倒排文件表和词出现的倒排表直接在倒排表上进行操作,不需要取差值。      通过计算每个文件上累加和来得到频率值,而由频率值可以 产生一个单调递增的数列。在本小节中主要探讨了二进制插入编码的编码策略,它主要用来对一个单调     递增的整数数列进行压缩编码 。 4中文全文检索系统的索引器设计实例分析从上文的分析可以知道,中文全文检索的索引库的组织结构不同其涉及的索     引的创建,索引的维护方案也不同,带来的索引创建,检索效率,维护整个索引 库的代价都是不同的,在本章中给出基于单字的倒排表索引系统的实现。4 总体设计 . 1该系统共有三部分功能模块组成,分别是索引的创建,索引更新,索引删除,     具体的结构图如下: 源文本集图4                               1索引系统结构图 F u 今1  x t sute                            i r I e Ssm  c r ge n ye t u d r由上图可知:该系统由三个功能模块、一个可调用的索引压缩类和一个索引     文件库组成, 其中文本预处理模块是对文本集进行预处理,索引压缩是在创建索 引和更新索引时用到的一个内部类模块, 所以 在此特别的列出。由第 3章的分析 知道基于字的索引系统创建方便,并且在检索方面的查全率和检索效率方面有比 较好的效果。与之相比基于分词的索引结构需要比较多的资源来动态的维护一个 词表,而且自 然语言的自 动分词技术还没有十分成熟。综合考虑,本系统采用了 基于单字的倒排索引文件结构。在本章的各节中分别介绍了索引组织结构的形式、 索引的创建方法以及索引的维护策略。同时还给出了索引结构的一种改进的方案 和其相关 的维护策略。4.2 称文本预处理为什么要进行文本预处理?原因是待检索文本中所含有的并不全部是中文字可能含有英文字符、其它外语字符、或者一些特殊的符号,针对这些特殊字符创建索引的过程以及检索的策略与中文字符不同。所以在针对源文本集创建索引时需要将这些特殊的字符分离出来,分别对其进行索引的创建。由于本文主要 讨论中文全文检索的索引构建,所以对于西文和其它字符的索引的创建不在详细叙述。除了将其它的特殊字符,外文字符分离出来,在索引的创建时还有一个很重     要的 题一 停 词 “o wr 1” 处 这 词 没 实 的 义, 问 一“ 止 t o )  的 理, 些 并 有 际 意 但 p d 4 2 1是在文本中却大量的存在,比如中文字符中的 “ , 是” “ 的” “ , 得”等,英文中也 有类似的词 “n " "s ad,  ”还有动词的过去式,过去分词等。这些词在文本中出现 i 的概率很大,总量很多。但是其对实际的检索意义不是很大,若要是对这些词全部建 立索引, 将会耗费 资 所以 很多 源, 在索引创建 之前将这些 “t w r 移除。 sp d o o” "ow r” 设定 根据统计的 sp d 的 是 t o 规律事先设定 一个c s数组. 好的 ot n 在具体处理时采用的策略是扫描文本时判断该字符是否为停止词,若是直接跳到下一个词进行处理。该部分在系统中其实是和索引创建紧紧相扣,文本预处理在索引创建时第一     次扫描时进行各项预处理操作,然后分别处理。具体实现流程如下图: 日 月图4 2文本预处理流程图 Fgr今2 i e uo tx f  t e 43 .索引创建索引组织结构形式43 1 ..该实现方案中索引文件采用倒排表的索引格式,索引单位采用了单字。倒排      表的具体的形式和工作原理在前文中已经讨论了,在本节中采用了 传统的倒排表 的形式具体介绍如下: 完整的倒排表模型的索引由两部分组成 (      见图4 ) -: 3 索引头:是一个一维数组,以      字符内码为下标,记录各个字符的索引在索引体中的开始位置。索引体:      3 图4 中的索引体示意图仅为方便理解, 实际的索引体是示意图中各 行数据依次首尾连接形成的一维数据流。 图中的每一行存放一个字符Q( s s) l in的索引数据,其结构为:(i  t O . i. , T ,  ( ,  . ,……,      (n Ol. } {i N , M O , } T N ,  , nJ l i z O O i. a. ) {i N ,〔 . i 二      q ,O .” T ,  , i , b .其 y  s ) 示 有 符C的 本 内 代 , i 示 本T中      jm 表 含 字 i文 的 部 号 N表 文 i 字 中T ( I s  l l 符G出 次 (i   .〕 现的 数, O   y. 指出了 本T中 符C出 具 位置。 lO . b 文 i 字 G 现的 体 l由于每个字符的索引数据的长度是不同的,因此需要索引头中的指针来指出     开始位置。索引头                索引体图4 3简单倒排索引示意图F u 4 Sm li ee lt                              i r 3  p n rd s g e  i e  t i v s下面就该索引库组织形式的检索要求进行简要的介绍:在检索时,设待查字      符串为 CC.C . ,首先通过索引头定位各字符的索引数据,然后对数据进行 IZ.. .i. Q 分析: C. c 索引数据均含有文本T的 若 1  的 . . C 索引记 在r 录, 个关于文本T的索引 记录又含有 0.  .0 (i 1 O,  , 是属于字符G的索引数据) Z . O . ,且O和 O 1 s s i i ( ir 十 l-1 的差值刚好是 ) 字符Q所占的字节数, 则文本T 为一个命中文本。 找到所有的命中文本后 ( 或是分析完毕后仍找不到命中文本) ,检索完成。在下一小节中将介 绍基于该索引组织结构的索引创建的方法。 4 . 索引的创建方法 .2 3在该节中主要介绍了一中传统的倒排表索引的创建算法一一排序合并式。     记文本集 {I r…, n 为 ,      T,  T 2 T} a 它是有T,  I T.…, . 个文本组成的 2 T等n 集合,由 本集 该文 有一个唯 倒 一的 排表p 之对应, 据结构如图 4 。 与 其数 - 在全文 3 检索时, 检索是直接依据倒排表0 来进行所有的检索工作, 这就要求由 倒排表可以 直接对 应到原 上,即有p a 显然, 文本 得到 。 一个文 本集a 和一个倒排表P 是具有 一 一对应的关系, 。 即 一 P 倒排表的索引“ 。 排序合并” 创建的思路正是基于上述的分析。它把源文件当成一个三元组数组,倒排表也是一个三元组数组。创建文 本索引实质就是找到由文本三元组数组建立倒排表三元组数组的方法。下面就一个实际的例子给出上述过程的详细说明,即倒排索引的创建过程。现有一文本集,它有两个文本组成,文本 I      和文本 I ,它的倒排表如图4 . - 4 算法的关键是由文本 I 、文本 n建立它们的倒排表。文本1 “个双字节的汉字):一人一个文本n  个双字节的汉字):一人一张 ( 4 索弓头 1 个 - 人几 “体{l6 ( ) . ( . ) 1 2( l 1 1 .  4 2 ) ( 0 1 .  0 6 )( . ), ( 4 n 0 n.  )图4 示例文本索引示意图                              - 4F u 4 Ea p t t x g                            i r  xm l e I ei ge - 4  e  n n x d当然,真正在计算机内存储倒排表时,为了节省索引空间,倒排表的数据结      构并不像图4 ,而是如图4 所示 ( - 4 - 5 在这里,暂且认为倒排表是顺序存储的,为 了简明 起见,图中字符出现的次数没填) 。个 - 人图4 实际索引数据结构示意图                            - 5 F u 今 Rai e dtsut                            i r 5  l  x  tc r ge e n a ru d e  e在本算法中,      把源文本当成是一个三元组数组, 而倒排表是另一三元组数组, 由三元组数组 1 和三元组数组 2之间的关系,可以看出它们是同一个三元组集的 两个不同的顺序的排序。由 此可以得出创建倒排表的方法一一把文本三元组集以 字符内码作为主关键字,文本编号为次主关键字进行重新排序,得到的新三元组 数组即为倒排三元组数组。实质上,可以 把倒排表看成是源文本字符集重新排序 而得到的新文本,它们的区别在于关键字不同。源文本的关键字依次是 ( 文本号 一文中位置一内 ,而倒排文件的关键字依次是 ( 码) 内码一文本号一文中位置) . 具体创建时,依次扫描 n个文本。对一个文本中出现的每个字符,填写 “      文本号一字符一文中位置”三元组。该文本扫描完成后,在内存中以 “ 字符”内码( 拼音序)排序,并在磁盘上新创一个相应的临时索引文件用于保存数据。在所 有的文本扫描完成后,根据倒排表索引的数据格式合并 n个文本对应的临时索引文件。三元组数组1          :文本三元组数组 文本号 文中位置         字符(I (I (I (I (I I (I I (I I (I I2 4 6 0 2 4 6 0三元组数组2 :文本三元组数 文本号 文中位置 字符 个 、少 6(I (I (1 1 (I (I (I I (I I (I I刁 劫 刁 们2 2 0 4 4 0 6人 人 一 二』、 产 、. 矛 、 . 户 、 少 、 产排序       一月一)     人)   一)     一、张)     张、. 产少图 46三元组 1 - 与三元组2 关系图Fgr46  raos中ot l ad l2 i e  te li b f  e n t e  u - h e tn i r l  r p i p用上例说明 为简明起见,本章的例子均假设已经将英文标点等其它字符处      ( 理完毕,所处理的仅为汉字)文本 I 个双字节的汉字) ( 4 :一人一个文本 I ( 个双字节的汉字) I  4 :一人一张 索引的创建过程如下:1 )扫描文本I 得到 , 三元组, 见表4 . 12 “ )以 字符”内 ( 码 拼音序) 排序后, 得到表4 .作为文本 I 2 的索引存盘。表今1文档1 原始三元组 表 4 文档 I - 2 排序三元组 表 4 文档2 - 3 排序三元组Tb 今l r i l e il  l2 g at lofe Tb 3 g at lo}

我要回帖

更多关于 论文参考文献索引 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信