一种支持含有缺失符号的查询请求的全文检索方法

文档序号:6369788阅读:171来源:国知局
专利名称:一种支持含有缺失符号的查询请求的全文检索方法
技术领域
本发明属于信息技术领域,涉及一种检索方法,尤其涉及一种基于轮转索引的全文检索方法,能够对含有缺失符号的查询请求给出快速响应。
背景技术
随着电子信息化的发展,计算机所管理的电子化数据正在以前所未有的速度发展。从数据结构的角度看,可以将这些数据分为结构化数据和非结构化数据两类。结构化数据是指拥有预定义的数据模型的数据,包括航班时刻表、雇员信息表等;非结构化数据是指没有预定义的数据模型的数据,往往以大量文本内容为主体。随着万维网的发展,非结构化数据正在以疯狂的速度增长。传统的关系型数据库管理系统能够很好的管理结构化数据。但对于非结构化数据,由于数据模式的缺失,关系型数据库管理系统很难有效管理其数据内容。非结构化数据 往往以包含大量文本内容为特点。由于结构化信息与文本内容上的检索任务存在很大区别。前者往往拥有确定的值域范围,值域中的取值是查询条件可访问的最小单元(即通常情况下不会讲值域中的某个取值拆分为更小的部分来组成查询条件),取值可以比较大小,而且查询条件常常以比较形式给出,例如时间戳、用户ID、用户个人信息中的性别项等等。后者往往拥有不可预期的长度,各段文本之间基于ASCII编码而进行的大小比较在很多情况下没有太大实际意义,取值之间可能存在包含关系(即一段文本被包含于另一段文本中),查询条件往往以是否包含一段给定的子文本段的方式而提出,该查询条件中甚至可能包含不确定的或缺失的字符,例如用户在Twitter网站上所发表的微博(被转发的微博将被包含于转发微博中)、电子邮件内容(匹配特定的文本段以发现Spamming行为)。传统的结构化数据上的索引技术对非结构化数据并不适用。全文检索技术是能够为非结构化数据上的检索请求提供快速响应的一类有效的检索方法。由于文本内容的不确定性以及查询者所掌握的知识的不完整性,用户常常需要在查询中表达一定程度的不确定性。最常用的表达方式就是以缺失符号的方式表示查询中不确定的词。如果查询者没有掌握足够多的知识,就可能考虑使用缺失符号“”来代替其不了解的内容。例如,“北京是_的首都”。检索系统在处理这样的查询时,应当返回该缺失符号匹配任意词的情况下查询命中的结果。例如,被检索文本中所包含的“北京是中华人民共和国的首都”、“北京是中国的首都”以及“北京是祖国的首都”等句子片段都应当能够匹配上述带有缺失符号的查询请求,因而,都应当被返回为查询结果。倒排索引(InvertedIndex)是一种在信息检索(Information Retrieval)领域被深入研究了的基本的关键字检索技术。得益于其少量的空间占用和对单个关键字的优秀的检索性能,倒排索引已经在在线系统中被广泛使用。在处理多关键字查询请求时,传统方法通过对后缀表(posting list)取交集的方式来获取最终结果。然而,这种方法在处理大匹配集的交集时会面临严重的效率问题试想,将两个频繁地出现的关键字的非常长的后缀表求交集的代价可能是某些规模较小的在线系统所不能忍受的。
在C. D. Manning, P. Raghavan 和 H. Schulze 所著《Introduction to InformationRetrieval》一书中,轮转索引(Permuterm Index)被用于解决子文本串的匹配以及处理含有通配符的查询请求。然而由于其索引结构过于庞大,很多实际情况中该方法并不适用。自索引(self-index)机制的提出有效地解决了索引体积庞大的问题。Burrows-WheelerTransformation (BffT)是一种被广泛用于文本压缩中的非常重要的基本技术,除此之外,它也是实现自索引的一种基本方法,其特有的优良性质保证了被索引的原文本的可恢复性。也就是说,索引建立之后,即便丢弃了原始文本数据,也可以从索引结构中将其恢复出来。在 P. Ferragina 和 G. Manzini 所著的论文“Indexing compressed text” (Journalof theACM, 52(4):552 - 581,2005)中,作者利用了 BffT的两个重要性质而发明了著名的逆向搜索算法(Backward Search Algorithm)来完成全文检索任务。Paolo Ferragina与 Rossano Venturini 所著的论文 “Compressed permuterm index,,(In SIGIR, pages535-542,2007)利用了 BWT的自索引特性对轮转索引进行了压缩,从而轮转索引的空间开销问题得以很好地解决,而与之相配套的逆向所搜算法可以用于还原文本和处理子文本串的匹配问题。Pirooz Chubak和 Davood Raei 在论文“ Index structures for efficientlysearching natural language text”(In CIKM, pages 689-698,2010)中将压缩了的轮转 索引技术应用于自然语言处理领域,从而使其能够对人类自然语言进行检索,并对一类特殊的包含通配符“%”的查询请求提供了支持。相比于倒排索引,以上算法在处理长句检索请求时,避免了对匹配集合求交的操作,因此具有较好的时间效率。但是,这些传统的轮转索引方法未能充分考虑查询请求中存在缺失符号的情况,如果查询请求中存在缺失符号“”,将无法进行查询。

发明内容
本发明的目的在于提供一种的高效的全文检索方法,该方法能够支持含有缺失符号的查询请求。给定一系列文本内容,本发明为其建立符号轮转索引。对于用户向该文本内容发起的查询请求,本发明可以在与其长度呈线性关系的时间复杂度内返回该查询请求在原文本内容中所有的匹配位置。该查询请求可以包含缺失符号,缺失符号是指用户由于不确定其具体内容而给出的可以匹配任何符号的符号。为实现上述目的,本发明采用如下技术方案一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括I)将文本内容符号化为符号串,并将各符号串拼接为一个长符号串;2)对所述长符号串分别执行如下四种转换BffT (Burrows-ffheeIer Transformation)转换;[I, m]-skipping-BWT转换该转换是在BWT转换的基础上,对各轮转副本进行排序时跳过各副本的位置属于[l,m]区间内的符号,并将各副本中最后一个符号组成的数组作为转换结果;w-ahead-BWT转换该转换是在BWT转换的基础上,将各轮转副本中倒数第w+Ι个符号组成的数组作为转换结果;SET-skipping, w-ahead-BWT转换该转换是在BWT转换的基础上,对各轮转副本进行排序时跳过各副本中位置下标落于集合SET内的符号,并将各副本中倒数第w+Ι个符号组成的数组作为转换结果;所述四种转换中,将排序后各轮转副本的首个元素组成的一列符号数组记为F数组;
3)基于所述转换结果构建小波树(Wavelet Tree);4)通过一哈希表记录所述F数组中每种符号在第一次出现之前其它符号出现的次数,记为C表;5)通过一数组记录所述F数组与所述长符号串的下标映射关系,记为FT数组;6)由所述小波树、所述C表和所述FT数组构成符号轮转索引;7)根据所述符号轮转索引对用户提出的查询请求进行全文匹配,并输出检索结果。查询请求中可以含有一段或多段连续缺失符号。上述方法中,符号轮转索引建立之后,对于任何含有缺失符号的查询请求都可以进行响应,而不需要为每次查询都做一次索引建立的过程;即可以对用户提出的即时查询请求进行响应,输出检索结果。本发明提供的检索方法能够在与查询符号串的长度呈线性关系的时间复杂度内返回查询结果。在全文检索任务中,本发明能够支持含有缺失符号的查询请求。本发明支持不同的符号化方法,可以在不同的符号化方法下,满足不同类型的检索需求。


图I是本实施例的支持含有缺失符号的查询请求的全文检索方法的步骤流程图。图2为样例数据上的BWT转换示意图,转换结果为L所示的列并以加粗字体标识。图3为样例数据上的[1,2]_Skipping BWT转换示意图,转换结果为L所示的列并以加粗字体标识,被跳过的字符用阴影标识。图4为样例数据上的2-Ahead BffT转换示意图,转换结果为L所示的列并以加粗字体标识。图5为样例数据上的{1,4,5}-Skipping 2-Ahead BffT转换示意图,转换结果为L所示的列并以加粗字体标识,被跳过的字符用阴影标识。
具体实施例方式下文通过具体实施例,并配合附图,对本发明做详细的说明。图I是本实施例的支持含有缺失符号的查询请求的全文检索方法的步骤流程图。对于给定的一系列文本内容,本实施例为其建立符号轮转索引。其索引结构由三部分构成基于各种BWT转换结果而建立的小波树、从各符号到其在基于BWT转换产生的F列上的首次出现的位置之前的符号总数的映射——C表,以及记录从F列上各元素的下标到原文本T中各符号元素的下标的映射关系的数组——FT数组。对于用户向该文本内容发起的查询请求Q,本实施例可以在与Q的长度呈线性关系的时间复杂度内返回Q在原文本内容中所有的匹配位置。其中Q可以包含缺失符号。缺失符号是指用户由于不确定其具体内容而给出的可以匹配任何符号的符号。本实施例中使用来表示缺失符号。对图I所示各步骤具体说明如下为便于理解,本实施例以如下三行文本内容为例对符号轮转索引的构建过程进行解释Beijing is a huge city.Beijing is a scenic city.Beijing is a modern city of China.I)将各段文本内容符号化为符号串。符号化是以下各处理步骤的基础,本发明支持不同的符号化方法。符号化的结果应当按照需求来进行。例如,例子中的英文句子的典型的符号化方法为将每个单词和标点作为一个独立的符号。但是,如果检索请求是大小写不敏感的(即不要求区分大小写),那么,就应当将 每个单词都小写化之后作为独立的符号来对待。对于中文句子而言,如果希望以单独的字为最小的查询单元,则应该以文本中每个单独的字和标点作为一个独立的符号,例如句子“北京是中国的首都。”应当被符号化为“北京是中国的首都。”——一个长度为9的符号串。但是如果希望以词为检索单位时,则应该首先对原文本进行分词,然后,将每个词和标点识别为一个符号,以上句为例,则符号化后的结果应当为一个长度为6的符号串“北京是中国的首都。”本发明的索引方法之所以被称之为符号轮转索引,是由于本方法对于各种符号化后的结果都适用。换句话说,对本发明而言,文本被直接抽象为符号串。但不同的符号化方法将导致缺失符号所能够匹配的内容有所差异,因为一个缺失符号将能够匹配任意一个符号,该符号在不同的符号化方法中可能代表单词也可能代表汉字,甚至能够代表字母。2 )拼接各符号串使其成为一个长符号串,并以特殊符号标识各文本字段的边界。该步骤将步骤a)所得的符号串依次串行拼接起来,并以一个特殊符号标识句子的边界,这里以$符号为句子边界符号$Beijing is a huge city. $Beijing is a scenic city. $Beijing is a moderncity of China.记以上的符号串为T。3)对符号串 T 分别执行 BWT 转换、[1,m]-skipping-BWT 转换、w-ahead-BWT 转换以及SET-skipping, w-ahead-BWT转换。后三种转换为是发明特别定义的,分别说明如下区别于传统的BWT转换,在[1,m]-skipping-BWT转换过程中,对轮转副本进行排序时将跳过各副本的位置属于[l,m]区间内的符号。w-ahead-BWT转换则不取最后一列作为转换结果,而是取倒数第w+Ι列作为转换结果。SET-skipping, w-ahead-BWT转换则是前两种概念的泛化,它要求排序时跳过各副本中位置下标落于集合SET内的符号,并取倒数第w+Ι列作为转换结果(此处集合SET是一个以位置下标为元素的集合,用于标明排序时被跳过的位置)。可以看到,当集合SET是空集时,SET-skipping, w-ahead-BWT转换退化成为w-ahead-BWT 转换;而当 w=0,且集合 SET 等价于区间[l,m]时,SET-skipping, w-ahead-BWT转换退化成为[1,m]-skipping-BWT转换。各种类型的BWT转换结果将被检索步骤所访问。在处理仅含有一段连续缺失符号的查询请求,例如形如“ a_[m,η] β ”时,本发明的检索算法需要用到基于传统BWT、[I, m]-skipping-BWT以及w-ahead-BWT的转换结果而建立的小波树。而在含有多段连续缺失符号的查询请求,例如形如“ a_[m,n]nt] Θ ”时,需要用到基于传统BWT和SET-skipping, w-ahead-BWT的转换结果而建立的小波树。下面分别叙述各种转换过程。对符号串T,通过如下两个步骤可以得到其经过BWT转换后的结果a)对T以单个符号为单位逐次进行旋转,从而得到N-1 T |个T的旋转后的副本(轮转副本),其中N是文本T中的符号总数;b)按照符号在字母表中的大小顺序对这些旋转得到的副本进行排序。所得到的各副本中的最后一个符号依次组成的数组即为T的BWT转换的结果。例如样例数据T的BWT转换结果如图表I中标记L的一列所示,这里,符号的大小等同于其所代表的单词在字典顺序的大小。对符号串T,通过如下两个步骤可以得到其经过[1,m]-Skipping BWT转换后的结果
a)对T以单个符号为单位逐次进行旋转,从而得到N-1 T I个T的旋转后的副本(轮转副本);b)跳过各副本中位于从位置I到位置m之间的符号之后按照各符号在字母表中的大小顺序对这些旋转副本进行排序。所得到的各副本中的最后一个符号组成的数组即为对T进行[l,m]-Skipping BWT转换的结果。例如样例数据T的[1,2]-Skipping BWT转换结果如图表2中标记L的一列所不。对符号串T,通过如下两个步骤可以得到其经过w-Ahead BffT转换后的结果a)对T以单个符号为单位逐次进行旋转,从而得到N-1 T |个T的旋转后的副本(轮转副本);b)按照符号在字母表中的大小顺序对这些旋转得到的副本进行排序。所得到的各副本中的倒数第w+Ι个符号依次组成的数组即为T的w-Ahead BffT转换的结果。例如样例数据T的2-Ahead BffT转换结果如图表3中标记L的一列所示。对符号串T,通过如下两个步骤可以得到其经过SET-Skipping, W-Ahead-BffT转换后的结果a)对T以单个符号为单位逐次进行旋转,从而得到N-1 T |个T的旋转后的副本(轮转副本);b)跳过各副本中以集合SET中元素为位置标号的符号之后按照各符号在字母表中的大小顺序对这些旋转副本进行排序。所得到的各副本中的倒数第w+Ι个符号依次组成的数组即为T的SET-Skipping,w-Ahead BffT转换的结果。例如样例数据T的{I, 4, 5}-Skipping, 2-Ahead BffT转换结果如图表4中标记L的一列所示。4)为各BWT转换的结果构建小波树(Wavelet Tree)。为一个BWT变换结果构建小波树的过程以及小波树的访问方法请参见“RobertoGrossij Ankur Gupta,and Jeffrey Scott Vitter High—order entropy-compressed textindexes. ” (In SODA, pages 841 {850,2003. )D对于给定的BWT变换结果,小波树可以用来支持快速回答给定符号在给定长度的前缀中出现的次数(前缀是指BWT转换结果,即相应的L列中,从首个元素开始到某个元素结束所构成的L列某个前半部分)。这里记函数rank(t,t)为获取符号t在BWT变换结果的前i个元素中出现的次数的操作。为了区别不同类型的BWT变换上的rank操作,以下为其加上相应的下标。无下标的rank函数表示传统BWT上的rank操作,rankn_m]_sk表示在[1,m] -Skipping-BWT 上的 rank 操作,rankwl_ab 表示 w-Ahead-BWT 上的 rank 操作,而rankSET_skipl_ab 表示 SET-Skipping, w-Ahead-BWT 上的 rank 操作。例如 rank(tcltyt, 22)获取符号tCltyt在传统BWT变换结果上前22个符号中出现的次数。观察图表I可知,L数组的前22个符号中tCttyt共出现了 3次,因此rankCcltytjZ) =3。小波树提高了在BWT转换结果上执行rank操作的效率。5)生成一个哈希表,该表中记录了在BWT变换结果的F列数组中,每种符号的第一次出现之前共有多少个其他符号的出现。此处记该表为C表。其中F列数组是BWT转换过程中轮转副本排序之后得到各副本首个元素组成的一列符号数组。如图I-图4中F列所示。注意,各种不同的BWT转换所得到的F列数组是完全相同的。例如,在样例数据的BWT变换中,由于符号tCttyt的首次出现位于F数组的第14位,因此在该符号之前出现的符号总数为13,即CCcttyt) =13。建立C表的详细步骤如下 a)初始化C表为空的哈希表;b)扫描F数组中的各个元素,对其第个元素,i取从I到文本长度N-|T|之间的各整数值,执行以下操作取出F数组的第i个元素,查看该符号在C表中是否有记录;如果C表中存在该记录,则不执行任何操作,跳向下一个i的取值;否则,向C表插入一条由F[t]映射到i的记录。6)构建FT数组。由于检索方法返回的是BWT变换的F数组的下标,因此需要记录从F数组到原始符号串T的下标映射关系。本发明通过构建FT数组完成该映射任务。因此对于Vt € [%Ν],有F(t) =T(FT(t))。类似于rank操作,以下用适当的下标来区分不同类型的BWT转换所对应的FT数组。FT数组的构建是在BWT转换执行的过程中连带完成的,其详细步骤如下a)进行BWT转换过程中,对轮转副本进行排序时,为各个副本记录首个符号在原文本数据中的位置;b)排序完成时,扫描排序结果,对于位于第i位的副本,更新F(t)为该副本对应的首个符号在原文本数据中的位置。上述步骤I)至6)为建立符号轮转索引结构的过程。符号轮转索引结构建立后,对于给定的查询请求,就可以按照所述符号轮转索引结构对其进行全文匹配,并向用户返回检索结果。符号轮转索引建立之后,对于任何查询请求(含有或者不含有缺失符号)都可以进行响应,而不需要为每次查询都做一次索引建立的过程;即可以对用户提出的即时查询请求进行响应,输出检索结果。对于含有缺失符号的待查询符号串Q,使用类似于逆向搜索算法(BackwardSearch Algorithm)的方法对查询请求进行检索,检索方法的重点步骤在于维护逆向扫描过程中已扫过的缺失符号的位置集合,并在逆向扫描到缺失符号时,访问适当的w-aheadBWT, [I, m]-skipping BffT 以及 SET-skipping, w-ahead BffT 所对应的小波树。而在无缺失符号的情况下始终仅访问传统BWT变换所对应的小波树。下面针对含有缺失符号的查询请求,具体说明检索过程。
对于仅含有一段连续缺失符号的查询请求,设查询Q形如“ a _[m, η] β ”,其中α和β表示不含缺失符号的符号串,_[m, η]表示缺失符号出现至少m次,至多η次;当m等于η且等于O时,表示没有缺失符号。用符号一表示赋值操作,用Q[t]表示去查询请求Q中的第i个符号,用C[t]表示查询C表并返回符号t所对应的值。其检索步骤为I.初始化结果集为空集result — Φ。2.对k依次取从m到η之间的整数分别完成步骤3到步骤10。3.令 Qk — a _[k, k] β,记 Qk 长度为 Μ。令整型变量 sp — 1,印一N,wt — 0,wa 一 O。4.对i依次取从M到I之间的所有整数分别完成步骤5到步骤9。5.如果Qk的第i个元素为缺失符号tJ,则更新wi的取值为Wt — wt+1。
6.否则,检查wt-Ο是否成立,如果成立则执行a)更新 sp 的取值为 sp — C[Qk[t] ]+rank (Qk[t], sp_l)+l ;b)更新 ep 的取值为 ep — C [Qk [t]+rank (Qk [t],ep)。7.如果wt = O不成立,则检查wa-Ο是否成立,如果成立则执行a)更新 sp 的取值为 sp — C [Qk [t]+rankwt ah(Qk[t],sp_l)+l ;b)更新 ep 的取值为 ep — C [Qk [t] ] +rankwt_ah (Qk [t],ep ;c)更新wa的取值为wa — t。8.如果wa-a亦不成立,则执行a)更新 sp 的取值为 sp — C [Qk [t] ]+rank
[wa-twa-t+wt-1 ] -sk
(Qk [t],sp-l)+l ;b)更新 ep 的取值为 ep — C [Qk [t]]+rank
[wa-twa-t+wt-1 ] -sk
(Qk[t], ep)。9.检查sp >印是否成立,如果成立则跳至步骤2,顺序取k下一个取值继续执行。10.让整数r依次取从sp到印之间的整数,执行将元素FT[|aUa|+rt]_sk[r]插入到结果集result中。11.返回结果集 result。以对以上例子中的文本符号串T为例,查询请求“Beijing is a_”的处理结果result集将包括T中所有的三个Beijing的出现位置;而查询请求“Beijing is a_cityof”的处理结果result集将仅包括符号串T中第三个Beijing出现的位置,即第16个位置。对于含有多段连续缺失符号的查询请求,例如形如“ a _[m, η] β Jmt, Ht] θ ”的检索请求Q。用符号一表示赋值操作,用Q[i]表示去查询请求Q中的第i个符号,用C[t]表示查询C表并返回符号t所对应的值。其检索步骤为I.初始化结果集为空集result — Φ。2.遍历所有连续缺失符号组成的区间,让缺失符号出现次数以各种方式组合,给定一种组合,并得到在该组合下检索请求Q的一个实例%。,例如a_[k,k] PJkSkt] Θ,其中ke [πι,η],^ e [m^]。对于含有多于2段的连续缺失符号的情况,Q的实例的获取方式类似,即需要取遍每段连续缺失符号长度的所有可能取值。依次执行步骤3到步骤10。3.记 Qlc 长度为 M。令整型变量 sp — I, ep — N, wt — O。4.初始化跳跃集为空集sktp — Φ。5.对i依次取从M到I之间的所有整数分别完成步骤6到步骤8。
6.如果Qlc的第i个元素为缺失符号t_t,则更新Wt的取值为Wt-Wt+1。7.否则,执行:a)更新 sp 的取值为 sp — C [Qlc[t] ](Qlc- [t], sp_l)+l ;b)更新 ep 的取值为 ep — C [Qlc [t] ] +rank^p^^^ (Qlc [t], ep);c)将集合sptp中每个元素s依次更新为s — s+wl+lo8.检查wl-Ο是否成立,如果wt-Ο不成立,则执行a)将从I到wl的整数依次插入到sktp集合中;b)更新Wt的取值为Wt — O。9.检查sp > ep是否成立,如果成立则跳至步骤2,顺序取Q的下一组连续缺失符·号出现次数的组合,继续执行。10.让整数r依次取从sp到印之间的整数,执行将元素FTsktp sk[r]插入到结果集 result 中。11.返回结果集 result。以对以上例子中的文本符号串T为例,查询请求“Beijing_a_City_”的处理结果result集将包括T中所有的三个Beijing的出现位置。在以上两种做法中,检索过程需要扫描整个查询请求中的每个符号且对每个符号而言,只需在扫描过程中访问一次,而不需要重置扫描游标至较早的位置。扫描每个符号的过程都可在相对于查询请求Q的常数时间复杂度内完成。因此,整个扫描过程的时间复杂度相对于查询请求Q的长度是线性的。以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
权利要求
1.一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括 1)将文本内容符号化为符号串,并将各符号串拼接为一个长符号串; 2)对所述长符号串分别执行如下四种转换 BffT转换; [1,m]-skipping-BWT转换对各轮转副本进行排序时跳过各副本的位置属于[l,m]区间内的符号,并将各副本中最后一个符号组成的数组作为转换结果; w-ahead-BWT转换将各轮转副本中倒数第w+Ι个符号组成的数组作为转换结果;SET-skipping, w-ahead-BWT转换对各轮转副本进行排序时跳过各副本中位置下标落于集合SET内的符号,并将各副本中倒数第w+Ι个符号组成的数组作为转换结果; 所述四种转换中,将排序后各轮转副本的首个元素组成的一列符号数组记为F数组; 3)基于所述转换结果构建小波树; 4)通过一哈希表记录所述F数组中每种符号在第一次出现之前其它符号出现的次数,记为C表; 5)通过一数组记录所述F数组与所述长符号串的下标映射关系,记为FT数组; 6)由所述小波树、所述C表和所述FT数组构成符号轮转索引; 7)根据所述符号轮转索引对用户提出的查询请求进行全文匹配,并输出检索结果。
2.如权利要求I所述的方法,其特征在于,步骤I)所述符号化的方法为对于英文句子,将每个单词或标点作为一个独立的符号;对于中文句子,将每个汉字或标点作为一个独立的符号,或者首先对原文本进行分词,再将每个词或标点作为一个独立的符号。
3.如权利要求I所述的方法,其特征在于,以特殊符号标识所述长符号串中句子的边界。
4.如权利要求I所述的方法,其特征在于,对于长符号串T,设其中符号总数为N,则所述BWT转换的方法为 a)对T以单个符号为单位逐次进行旋转,得到N个轮转副本; b )按照符号在字母表中的大小顺序对所述N个轮转副本进行排序。
5.如权利要求4所述的方法,其特征在于,所述C表的建立方法为 a)初始化C表为空的哈希表; b)扫描所述F数组中的各个元素,对其第i个元素,i取从I到N之间的各整数值,执行以下操作 取出所述F数组的第i个元素,查看其在C表中是否有记录;如果有记录,则不执行任何操作,跳向下一个i的取值;否则,向C表插入一条由F[i]映射到i的记录。
6.如权利要求I所述的方法,其特征在于,所述FT数组的建立方法为 a)进行BWT转换过程中,对轮转副本进行排序时,为各个副本记录首个符号在原文本数据中的位置; b)排序完成时,扫描排序结果,对于位于第i位的副本,更新F[i]为该副本对应的首个符号在原文本数据中的位置。
7.如权利要求I所述的方法,其特征在于,对于步骤2)所述转换结果,步骤3)使用rank函数获取给定符号在给定长度的前缀中出现的次数。
8.如权利要求I所述的方法,其特征在于,所述查询请求含有一段或多段连续缺失符号。
全文摘要
本发明提供一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括将文本内容符号化为符号串,并拼接为一个长符号串;对长符号串分别执行BWT转换、[l,m]-skipping-BWT转换、w-ahead-BWT转换以及SET-skipping,w-ahead-BWT转换;基于四种转换的结果构建小波树,并建立C表和FT数组,构成符号轮转索引;对给定的查询请求进行全文匹配,并输出检索结果,所述查询请求可以含有一段或多段连续缺失符号。本发明支持不同的符号化方法,支持含有缺失符号的查询请求,能够满足不同类型的检索需求。
文档编号G06F17/30GK102722527SQ20121015326
公开日2012年10月10日 申请日期2012年5月16日 优先权日2012年5月16日
发明者唐世渭, 孟必平, 李红燕, 杨冬青, 王腾蛟, 高军 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1