CN102722527B - 一种支持含有缺失符号的查询请求的全文检索方法 - Google Patents
一种支持含有缺失符号的查询请求的全文检索方法 Download PDFInfo
- Publication number
- CN102722527B CN102722527B CN201210153267.5A CN201210153267A CN102722527B CN 102722527 B CN102722527 B CN 102722527B CN 201210153267 A CN201210153267 A CN 201210153267A CN 102722527 B CN102722527 B CN 102722527B
- Authority
- CN
- China
- Prior art keywords
- symbol
- copy
- array
- bwt
- text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括:将文本内容符号化为符号串,并拼接为一个长符号串;对长符号串分别执行BWT转换、[l,m]-skipping-BWT转换、w-ahead-BWT转换以及SET-skipping,w-ahead-BWT转换;基于四种转换的结果构建小波树,并建立C表和FT数组,构成符号轮转索引;对给定的查询请求进行全文匹配,并输出检索结果,所述查询请求可以含有一段或多段连续缺失符号。本发明支持不同的符号化方法,支持含有缺失符号的查询请求,能够满足不同类型的检索需求。
Description
技术领域
本发明属于信息技术领域,涉及一种检索方法,尤其涉及一种基于轮转索引的全文检索方法,能够对含有缺失符号的查询请求给出快速响应。
背景技术
随着电子信息化的发展,计算机所管理的电子化数据正在以前所未有的速度发展。从数据结构的角度看,可以将这些数据分为结构化数据和非结构化数据两类。结构化数据是指拥有预定义的数据模型的数据,包括航班时刻表、雇员信息表等;非结构化数据是指没有预定义的数据模型的数据,往往以大量文本内容为主体。随着万维网的发展,非结构化数据正在以疯狂的速度增长。
传统的关系型数据库管理系统能够很好的管理结构化数据。但对于非结构化数据,由于数据模式的缺失,关系型数据库管理系统很难有效管理其数据内容。非结构化数据往往以包含大量文本内容为特点。由于结构化信息与文本内容上的检索任务存在很大区别。前者往往拥有确定的值域范围,值域中的取值是查询条件可访问的最小单元(即通常情况下不会讲值域中的某个取值拆分为更小的部分来组成查询条件),取值可以比较大小,而且查询条件常常以比较形式给出,例如时间戳、用户ID、用户个人信息中的性别项等等。后者往往拥有不可预期的长度,各段文本之间基于ASCII编码而进行的大小比较在很多情况下没有太大实际意义,取值之间可能存在包含关系(即一段文本被包含于另一段文本中),查询条件往往以是否包含一段给定的子文本段的方式而提出,该查询条件中甚至可能包含不确定的或缺失的字符,例如用户在Twitter网站上所发表的微博(被转发的微博将被包含于转发微博中)、电子邮件内容(匹配特定的文本段以发现Spamming行为)。传统的结构化数据上的索引技术对非结构化数据并不适用。全文检索技术是能够为非结构化数据上的检索请求提供快速响应的一类有效的检索方法。
由于文本内容的不确定性以及查询者所掌握的知识的不完整性,用户常常需要在查询中表达一定程度的不确定性。最常用的表达方式就是以缺失符号的方式表示查询中不确定的词。如果查询者没有掌握足够多的知识,就可能考虑使用缺失符号“_”来代替其不了解的内容。例如,“北京是_的首都”。检索系统在处理这样的查询时,应当返回该缺失符号匹配任意词的情况下查询命中的结果。例如,被检索文本中所包含的“北京是中华人民共和国的首都”、“北京是中国的首都”以及“北京是祖国的首都”等句子片段都应当能够匹配上述带有缺失符号的查询请求,因而,都应当被返回为查询结果。
倒排索引(Inverted Index)是一种在信息检索(Information Retrieval)领域被深入研究了的基本的关键字检索技术。得益于其少量的空间占用和对单个关键字的优秀的检索性能,倒排索引已经在在线系统中被广泛使用。在处理多关键字查询请求时,传统方法通过对后缀表(posting list)取交集的方式来获取最终结果。然而,这种方法在处理大匹配集的交集时会面临严重的效率问题:试想,将两个频繁地出现的关键字的非常长的后缀表求交集的代价可能是某些规模较小的在线系统所不能忍受的。
在C.D.Manning,P.Raghavan和H.Schulze所著《Introduction to Information Retrieval》一书中,轮转索引(Permuterm Index)被用于解决子文本串的匹配以及处理含有通配符的查询请求。然而由于其索引结构过于庞大,很多实际情况中该方法并不适用。自索引(self-index)机制的提出有效地解决了索引体积庞大的问题。Burrows-Wheeler Transformation(BWT)是一种被广泛用于文本压缩中的非常重要的基本技术,除此之外,它也是实现自索引的一种基本方法,其特有的优良性质保证了被索引的原文本的可恢复性。也就是说,索引建立之后,即便丢弃了原始文本数据,也可以从索引结构中将其恢复出来。在P.Ferragina和G.Manzini所著的论文“Indexing compressed text”(Journal of the ACM,52(4):552–581,2005)中,作者利用了BWT的两个重要性质而发明了著名的逆向搜索算法(Backward Search Algorithm)来完成全文检索任务。Paolo Ferragina与Rossano Venturini所著的论文“Compressed permutermindex”(In SIGIR,pages535-542,2007)利用了BWT的自索引特性对轮转索引进行了压缩,从而轮转索引的空间开销问题得以很好地解决,而与之相配套的逆向所搜算法可以用于还原文本和处理子文本串的匹配问题。Pirooz Chubak和Davood Raei在论文“Index structures forefficiently searching natural language text”(In CIKM,pages689-698,2010)中将压缩了的轮转索引技术应用于自然语言处理领域,从而使其能够对人类自然语言进行检索,并对一类特殊的包含通配符“%”的查询请求提供了支持。相比于倒排索引,以上算法在处理长句检索请求时,避免了对匹配集合求交的操作,因此具有较好的时间效率。但是,这些传统的轮转索引方法未能充分考虑查询请求中存在缺失符号的情况,如果查询请求中存在缺失符号“_”,将无法进行查询。
发明内容
本发明的目的在于提供一种的高效的全文检索方法,该方法能够支持含有缺失符号的查询请求。给定一系列文本内容,本发明为其建立符号轮转索引。对于用户向该文本内容发起的查询请求,本发明可以在与其长度呈线性关系的时间复杂度内返回该查询请求在原文本内容中所有的匹配位置。该查询请求可以包含缺失符号,缺失符号是指用户由于不确定其具体内容而给出的可以匹配任何符号的符号。
为实现上述目的,本发明采用如下技术方案:
一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括:
1)将文本内容符号化为符号串,并将各符号串拼接为一个长符号串;
2)对所述长符号串分别执行如下四种转换:
BWT(Burrows-Wheeler Transformation)转换;
[l,m]-skipping-BWT转换:该转换是在BWT转换的基础上,对各轮转副本进行排序时跳过各副本的位置属于[l,m]区间内的符号,并将各副本中最后一个符号组成的数组作为转换结果;
w-ahead-BWT转换:该转换是在BWT转换的基础上,将各轮转副本中倒数第w+1个符号组成的数组作为转换结果;
SET-skipping,w-ahead-BWT转换:该转换是在BWT转换的基础上,对各轮转副本进行排序时跳过各副本中位置下标落于集合SET内的符号,并将各副本中倒数第w+1个符号组成的数组作为转换结果;
所述四种转换中,将排序后各轮转副本的首个元素组成的一列符号数组记为F数组;
3)基于所述转换结果构建小波树(Wavelet Tree);
4)通过一哈希表记录所述F数组中每种符号在第一次出现之前其它符号出现的次数,记为C表;
5)通过一数组记录所述F数组与所述长符号串的下标映射关系,记为FT数组;
6)由所述小波树、所述C表和所述FT数组构成符号轮转索引;
7)根据所述符号轮转索引对用户提出的查询请求进行全文匹配,并输出检索结果。查询请求中可以含有一段或多段连续缺失符号。
上述方法中,符号轮转索引建立之后,对于任何含有缺失符号的查询请求都可以进行响应,而不需要为每次查询都做一次索引建立的过程;即可以对用户提出的即时查询请求进行响应,输出检索结果。
本发明提供的检索方法能够在与查询符号串的长度呈线性关系的时间复杂度内返回查询结果。在全文检索任务中,本发明能够支持含有缺失符号的查询请求。本发明支持不同的符号化方法,可以在不同的符号化方法下,满足不同类型的检索需求。
附图说明
图1是本实施例的支持含有缺失符号的查询请求的全文检索方法的步骤流程图。
图2为样例数据上的BWT转换示意图,转换结果为L所示的列并以加粗字体标识。
图3为样例数据上的[1,2]-Skipping BWT转换示意图,转换结果为L所示的列并以加粗字体标识,被跳过的字符用阴影标识。
图4为样例数据上的2-Ahead BWT转换示意图,转换结果为L所示的列并以加粗字体标识。
图5为样例数据上的{1,4,5}-Skipping2-Ahead BWT转换示意图,转换结果为L所示的列并以加粗字体标识,被跳过的字符用阴影标识。
具体实施方式
下文通过具体实施例,并配合附图,对本发明做详细的说明。
图1是本实施例的支持含有缺失符号的查询请求的全文检索方法的步骤流程图。对于给定的一系列文本内容,本实施例为其建立符号轮转索引。其索引结构由三部分构成:基于各种BWT转换结果而建立的小波树、从各符号到其在基于BWT转换产生的F列上的首次出现的位置之前的符号总数的映射——C表,以及记录从F列上各元素的下标到原文本T中各符号元素的下标的映射关系的数组——FT数组。对于用户向该文本内容发起的查询请求Q,本实施例可以在与Q的长度呈线性关系的时间复杂度内返回Q在原文本内容中所有的匹配位置。其中Q可以包含缺失符号。缺失符号是指用户由于不确定其具体内容而给出的可以匹配任何符号的符号。本实施例中使用‘_’来表示缺失符号。对图1所示各步骤具体说明如下:
为便于理解,本实施例以如下三行文本内容为例对符号轮转索引的构建过程进行解释:
Beijing is a huge city.
Beijing is a scenic city.
Beijing is a modern city of China.
1)将各段文本内容符号化为符号串。
符号化是以下各处理步骤的基础,本发明支持不同的符号化方法。符号化的结果应当按照需求来进行。
例如,例子中的英文句子的典型的符号化方法为:将每个单词和标点作为一个独立的符号。但是,如果检索请求是大小写不敏感的(即不要求区分大小写),那么,就应当将每个单词都小写化之后作为独立的符号来对待。对于中文句子而言,如果希望以单独的字为最小的查询单元,则应该以文本中每个单独的字和标点作为一个独立的符号,例如句子“北京是中国的首都。”应当被符号化为“北京是中国的首都。”——一个长度为9的符号串。但是如果希望以词为检索单位时,则应该首先对原文本进行分词,然后,将每个词和标点识别为一个符号,以上句为例,则符号化后的结果应当为一个长度为6的符号串:“北京是中国的首都。”本发明的索引方法之所以被称之为符号轮转索引,是由于本方法对于各种符号化后的结果都适用。换句话说,对本发明而言,文本被直接抽象为符号串。但不同的符号化方法将导致缺失符号所能够匹配的内容有所差异,因为一个缺失符号将能够匹配任意一个符号,该符号在不同的符号化方法中可能代表单词也可能代表汉字,甚至能够代表字母。
2)拼接各符号串使其成为一个长符号串,并以特殊符号标识各文本字段的边界。
该步骤将步骤a)所得的符号串依次串行拼接起来,并以一个特殊符号标识句子的边界,这里以$符号为句子边界符号:
$Beijing is a huge city.$Beijing is a scenic city.$Beijing is a modern city of China.
记以上的符号串为T。
3)对符号串T分别执行BWT转换、[l,m]-skipping-BWT转换、w-ahead-BWT转换以及SET-skipping,w-ahead-BWT转换。后三种转换为是发明特别定义的,分别说明如下:
区别于传统的BWT转换,在[l,m]-skipping-BWT转换过程中,对轮转副本进行排序时将跳过各副本的位置属于[l,m]区间内的符号。w-ahead-BWT转换则不取最后一列作为转换结果,而是取倒数第w+1列作为转换结果。SET-skipping,w-ahead-BWT转换则是前两种概念的泛化,它要求排序时跳过各副本中位置下标落于集合SET内的符号,并取倒数第w+1列作为转换结果(此处集合SET是一个以位置下标为元素的集合,用于标明排序时被跳过的位置)。
可以看到,当集合SET是空集时,SET-skipping,w-ahead-BWT转换退化成为w-ahead-BWT转换;而当w=0,且集合SET等价于区间[l,m]时,SET-skipping,w-ahead-BWT转换退化成为[l,m]-skipping-BWT转换。
各种类型的BWT转换结果将被检索步骤所访问。在处理仅含有一段连续缺失符号的查询请求,例如形如“α_[m,n]β”时,本发明的检索算法需要用到基于传统BWT、[l,m]-skipping-BWT以及w-ahead-BWT的转换结果而建立的小波树。而在含有多段连续缺失符号的查询请求,例如形如“α_[m,n]β_['‘,n’]θ”时,需要用到基于传统BWT和SET-skipping,w-ahead-BWT的转换结果而建立的小波树。下面分别叙述各种转换过程。
对符号串T,通过如下两个步骤可以得到其经过BWT转换后的结果:
a)对T以单个符号为单位逐次进行旋转,从而得到N=|T|个T的旋转后的副本(轮转副本),其中N是文本T中的符号总数;
b)按照符号在字母表中的大小顺序对这些旋转得到的副本进行排序。所得到的各副本中的最后一个符号依次组成的数组即为T的BWT转换的结果。例如样例数据T的BWT转换结果如图表1中标记L的一列所示,这里,符号的大小等同于其所代表的单词在字典顺序的大小。
对符号串T,通过如下两个步骤可以得到其经过[l,m]-Skipping BWT转换后的结果:
a)对T以单个符号为单位逐次进行旋转,从而得到N=|T|个T的旋转后的副本(轮转副本);
b)跳过各副本中位于从位置l到位置m之间的符号之后按照各符号在字母表中的大小顺序对这些旋转副本进行排序。所得到的各副本中的最后一个符号组成的数组即为对T进行[l,m]-Skipping BWT转换的结果。例如样例数据T的[1,2]-Skipping BWT转换结果如图表2中标记L的一列所示。
对符号串T,通过如下两个步骤可以得到其经过w-Ahead BWT转换后的结果:
a)对T以单个符号为单位逐次进行旋转,从而得到N=|T|个T的旋转后的副本(轮转副本);
b)按照符号在字母表中的大小顺序对这些旋转得到的副本进行排序。所得到的各副本中的倒数第w+1个符号依次组成的数组即为T的w-Ahead BWT转换的结果。例如样例数据T的2-Ahead BWT转换结果如图表3中标记L的一列所示。
对符号串T,通过如下两个步骤可以得到其经过SET-Skipping,w-Ahead-BWT转换后的结果:
a)对T以单个符号为单位逐次进行旋转,从而得到N=|T|个T的旋转后的副本(轮转副本);
b)跳过各副本中以集合SET中元素为位置标号的符号之后按照各符号在字母表中的大小顺序对这些旋转副本进行排序。所得到的各副本中的倒数第w+1个符号依次组成的数组即为T的SET-Skipping,w-Ahead BWT转换的结果。例如样例数据T的{1,4,5}-Skipping,2-AheadBWT转换结果如图表4中标记L的一列所示。
4)为各BWT转换的结果构建小波树(Wavelet Tree)。
为一个BWT变换结果构建小波树的过程以及小波树的访问方法请参见“Roberto Grossi,Ankur Gupta,and Jeffrey Scott Vitter High-order entropy-compressed text indexes.”(In SODA,pages841{850,2003.)。
对于给定的BWT变换结果,小波树可以用来支持快速回答给定符号在给定长度的前缀中出现的次数(前缀是指BWT转换结果,即相应的L列中,从首个元素开始到某个元素结束所构成的L列某个前半部分)。这里记函数rank(t,i)为获取符号t在BWT变换结果的前i个元素中出现的次数的操作。为了区别不同类型的BWT变换上的rank操作,以下为其加上相应的下标。无下标的rank函数表示传统BWT上的rank操作,rank[1,m]-sk表示在[l,m]-Skipping-BWT上的arnk操作,rankwl-ah表示w-Ahead-BWT上的rank操作,而rankseT-3k,wl-ah表示SET-Skipping,w-Ahead-BWT上的rank操作。例如rank(′city′,22)获取符号′city′在传统BWT变换结果上前22个符号中出现的次数。观察图表1可知,L数组的前22个符号中′city′共出现了3次,因此rank(′city′,22)=3。小波树提高了在BWT转换结果上执行rank操作的效率。
5)生成一个哈希表,该表中记录了在BWT变换结果的F列数组中,每种符号的第一次出现之前共有多少个其他符号的出现。此处记该表为C表。其中F列数组是BWT转换过程中轮转副本排序之后得到各副本首个元素组成的一列符号数组。如图1‐图4中F列所示。注意,各种不同的BWT转换所得到的F列数组是完全相同的。
例如,在样例数据的BWT变换中,由于符号′city′的首次出现位于F数组的第14位,因此在该符号之前出现的符号总数为13,即C(′city′)=13。建立C表的详细步骤如下:
a)初始化C表为空的哈希表;
b)扫描F数组中的各个元素,对其第i个元素,i取从1到文本长度N=|T|之间的各整数值,执行以下操作:
取出F数组的第i个元素,查看该符号在C表中是否有记录;
如果C表中存在该记录,则不执行任何操作,跳向下一个i的取值;
否则,向C表插入一条由F[i]映射到i-1的记录。
6)构建FT数组。
由于检索方法返回的是BWT变换的F数组的下标,因此需要记录从F数组到原始符号串T的下标映射关系。本发明通过构建FT数组完成该映射任务。因此对于,有F(i)=T(FT(i))。类似于rank操作,以下用适当的下标来区分不同类型的BWT转换所对应的FT数组。FT数组的构建是在BWT转换执行的过程中连带完成的,其详细步骤如下:
a)进行BWT转换(指所述四种BWT转换)过程中,对轮转副本进行排序时,为各个副本记录首个符号在原文本数据中的位置;
b)排序完成时,扫描排序结果,对于位于第i位的副本,更新F(i)为该副本对应的首个符号在原文本数据中的位置。
上述步骤1)至6)为建立符号轮转索引结构的过程。符号轮转索引结构建立后,对于给定的查询请求,就可以按照所述符号轮转索引结构对其进行全文匹配,并向用户返回检索结果。符号轮转索引建立之后,对于任何查询请求(含有或者不含有缺失符号)都可以进行响应,而不需要为每次查询都做一次索引建立的过程;即可以对用户提出的即时查询请求进行响应,输出检索结果。
对于含有缺失符号的待查询符号串Q,使用类似于逆向搜索算法(Backward SearchAlgorithm)的方法对查询请求进行检索,检索方法的重点步骤在于维护逆向扫描过程中已扫过的缺失符号的位置集合,并在逆向扫描到缺失符号时,访问适当的w-ahead BWT,[l,m]-skipping BWT以及SET-skipping,w-ahead BWT所对应的小波树。而在无缺失符号的情况下始终仅访问传统BWT变换所对应的小波树。下面针对含有缺失符号的查询请求,具体说明检索过程。
对于仅含有一段连续缺失符号的查询请求,设查询Q形如“α_[m,n]β”,其中α和β表示不含缺失符号的符号串,_[m,n]表示缺失符号出现至少m次,至多n次;当m等于n且等于0时,表示没有缺失符号。用符号←表示赋值操作,用Q[i]表示去查询请求Q中的第i个符号,用C[t]表示查询C表并返回符号t所对应的值。其检索步骤为:
1.初始化结果集为空集:result←φ。
2.对k依次取从m到n之间的整数分别完成步骤3到步骤10。
3.令Qk←m_[k,k]β,记Qk长度为M。令整型变量sp←1,ep←N,wl←O,wa←O。
4.对i依次取从M到1之间的所有整数分别完成步骤5到步骤9。
5.如果Qk的第i个元素为缺失符号‘_’,则更新wl的取值为wl←wl+1。
6.否则,检查wl=0是否成立,如果成立则执行:
a)更新sp的取值为sp←C[Qk[i]]一rank(Qk[i},sp-1)+1;
b)更新ep的取值为ep←C[Qk[i]]+rank(Qk[i],ep)。
7.如果wl=0不成立,则检查wa=0是否成立,如果成立则执行:
a)更新sp的取值为sp←C[Qk[i]]+rnnkwl-ah(Qk[i],sp-1)+1;
b)更新ep的取值为ep←C[Qk[i]]+rankwl-ah(Qk[i],ep);
c)更新wa的取值为wa←i。
8.如果wa=0亦不成立,则执行:
a)更新sp的取值为sp←C[Qk[i]]+rank[wa-i,wa-i+wl-1]-sk(Qk[i],sp-1)+1;
b)更新ep的取值为ep←C[Qk[i]]+rank[wa-i,wa-i+wl-1]-sk(Qk[i],ep)。
9.检查sp>ep是否成立,如果成立则跳至步骤2,顺序取k下一个取值继续执行。
10.让整数r依次取从sp到ep之间的整数,执行:将元素FT[|α|,|α|+n-1]-sk[r]插入到结果集result中。
11.返回结果集result。
以对以上例子中的文本符号串T为例,查询请求“Beijing is a_”的处理结果result集将包括T中所有的三个Beijing的出现位置;而查询请求“Beijing is a_city of”的处理结果result集将仅包括符号串T中第三个Beijing出现的位置,即第16个位置。
对于含有多段连续缺失符号的查询请求,例如形如“α_[m,n]β_[m‘,n’]θ”的检索请求Q。用符号←表示赋值操作,用Q[i]表示去查询请求Q中的第i个符号,用C[t]表示查询C表并返回符号t所对应的值。其检索步骤为:
1.初始化结果集为空集:result←φ。
2.遍历所有连续缺失符号组成的区间,让缺失符号出现次数以各种方式组合,给定一种组合,并得到在该组合下检索请求Q的一个实例QLC,例如α_[k,l]β_[k′,k′]θ,其中k∈[m,n],k′∈[m′,n′]。对于含有多于2段的连续缺失符号的情况,Q的实例的获取方式类似,即需要取遍每段连续缺失符号长度的所有可能取值。依次执行步骤3到步骤10。
3.记QLC长度为M。令整型变量sp←1,ep←N,wl←0。
4.初始化跳跃集为空集:skip←φ。
5.对i依次取从M到1之间的所有整数分别完成步骤6到步骤8。
6.如果QLC的第i个元素为缺失符号‘_’,则更新wl的取值为wl←wl+1。
7.否则,执行:
a)更新sp的取值为sp←C[QLC[i]]+rankskip-sk,wl-ah(QLC[i],sp-1)+1;
b)更新ep的取值为ep←C[QLC[i]]+rankskip-sk,wl-ah(QLC[i],ep);
c)将集合skip中每个元素s依次更新为s←s+wl+1。
8.检查wl=0是否成立,如果wl=0不成立,则执行:
a)将从1到wl的整数依次插入到skip集合中;
b)更新wl的取值为wl←0。
9.检查sp>ep是否成立,如果成立则跳至步骤2,顺序取Q的下一组连续缺失符号出现次数的组合,继续执行。
10.让整数r依次取从sp到ep之间的整数,执行:将元素FTskip-sk[r]插入到结果集result中。
11.返回结果集result。
以对以上例子中的文本符号串T为例,查询请求“Beijing _ a _ city _”的处理结果result集将包括T中所有的三个Beijing的出现位置。
在以上两种做法中,检索过程需要扫描整个查询请求中的每个符号且对每个符号而言,只需在扫描过程中访问一次,而不需要重置扫描游标至较早的位置。扫描每个符号的过程都可在相对于查询请求Q的常数时间复杂度内完成。因此,整个扫描过程的时间复杂度相对于查询请求Q的长度是线性的。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
Claims (8)
1.一种支持含有缺失符号的查询请求的全文检索方法,其步骤包括:
1)将文本内容符号化为符号串,并将各符号串拼接为一个长符号串;
2)对所述长符号串分别执行如下四种转换:
BWT转换;
[l,m]-skipping-BWT转换:对各轮转副本进行排序时跳过各副本的位置属于[l,m]区间内的符号,并将各副本中最后一个符号组成的数组作为转换结果;
w-ahead-BWT转换:将各轮转副本中倒数第w+1个符号组成的数组作为转换结果;
SET-skipping,w-ahead-BWT转换:对各轮转副本进行排序时跳过各副本中位置下标落于集合SET内的符号,并将各副本中倒数第w+1个符号组成的数组作为转换结果;
所述四种转换中,将排序后各轮转副本的首个元素组成的一列符号数组记为F数组;
3)基于所述转换结果构建小波树;
4)通过一哈希表记录所述F数组中每种符号在第一次出现之前其它符号出现的次数,记为C表;
5)通过一数组记录所述F数组与所述长符号串的下标映射关系,记为FT数组;
6)由所述小波树、所述C表和所述FT数组构成符号轮转索引;
7)根据所述符号轮转索引对用户提出的查询请求进行全文匹配,并输出检索结果。
2.如权利要求1所述的方法,其特征在于,步骤1)所述符号化的方法为:对于中文句子,将每个汉字或标点作为一个独立的符号,或者首先对原文本进行分词,再将每个词或标点作为一个独立的符号;对于英文句子,将每个单词或标点作为一个独立的符号。
3.如权利要求1所述的方法,其特征在于,以特殊符号标识所述长符号串中句子的边界。
4.如权利要求1所述的方法,其特征在于,对于长符号串T,设其中符号总数为N,则所述BWT转换的方法为:
a)对T以单个符号为单位逐次进行旋转,得到N个轮转副本;
b)按照符号在字母表中的大小顺序对所述N个轮转副本进行排序。
5.如权利要求4所述的方法,其特征在于,所述C表的建立方法为:
a)初始化C表为空的哈希表;
b)扫描所述F数组中的各个元素,对其第i个元素,i取从1到N之间的各整数值,执行以下操作:
取出所述F数组的第i个元素,查看其在C表中是否有记录;如果有记录,则不执行任何操作,跳向下一个i的取值;否则,向C表插入一条由F[i]映射到i-1的记录。
6.如权利要求1所述的方法,其特征在于,所述FT数组的建立方法为:
a)进行所述四种转换过程中,对轮转副本进行排序时,为各个副本记录首个符号在原文本数据中的位置;
b)排序完成时,扫描排序结果,对于位于第i位的副本,更新F[i]为该副本对应的首个符号在原文本数据中的位置。
7.如权利要求1所述的方法,其特征在于,对于步骤2)所述转换结果,步骤3)使用rank函数获取给定符号在给定长度的前缀中出现的次数。
8.如权利要求1所述的方法,其特征在于,所述查询请求含有一段或多段连续缺失符号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210153267.5A CN102722527B (zh) | 2012-05-16 | 2012-05-16 | 一种支持含有缺失符号的查询请求的全文检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210153267.5A CN102722527B (zh) | 2012-05-16 | 2012-05-16 | 一种支持含有缺失符号的查询请求的全文检索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722527A CN102722527A (zh) | 2012-10-10 |
CN102722527B true CN102722527B (zh) | 2014-08-06 |
Family
ID=46948288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210153267.5A Expired - Fee Related CN102722527B (zh) | 2012-05-16 | 2012-05-16 | 一种支持含有缺失符号的查询请求的全文检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722527B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718521A (zh) * | 2016-01-15 | 2016-06-29 | 湖南大学 | 一个基于Wavelet Tree的网络数据包索引系统 |
CN113096635B (zh) * | 2021-03-31 | 2024-01-09 | 抖音视界有限公司 | 一种音频和文本的同步方法、装置、设备以及介质 |
-
2012
- 2012-05-16 CN CN201210153267.5A patent/CN102722527B/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
PAOLO FERRAGINA,ROSSANO VENTURINI."The Compressed Permuterm Index".《ACM Transactions on Algorithms》.2010,第7卷(第1期),1-21. |
PAOLO FERRAGINA,ROSSANO VENTURINI."The Compressed Permuterm Index".《ACM Transactions on Algorithms》.2010,第7卷(第1期),1-21. * |
Pirooz Chubak,Davood Rafiei."Index Structures for Efficiently Searching Natural Language Text".《CIKM’10》.2010,689-698. |
Pirooz Chubak,Davood Rafiei."Index Structures for Efficiently Searching Natural Language Text".《CIKM’10》.2010,689-698. * |
Also Published As
Publication number | Publication date |
---|---|
CN102722527A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chang et al. | Automatic information extraction from semi-structured web pages by pattern discovery | |
CN102142038B (zh) | 用于记号空间资料库的多级查询处理系统与方法 | |
AU2005203239B2 (en) | Phrase-based indexing in an information retrieval system | |
KR101176079B1 (ko) | 문서 설명의 문구 기반 생성 | |
KR101223172B1 (ko) | 정보 검색 시스템에서의 문구 기반 서치 | |
Hon et al. | Space-efficient frameworks for top-k string retrieval | |
CN102834802A (zh) | 使用结构化数据储存库实现更快的全文搜索 | |
CN103365992B (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
KR20060048779A (ko) | 정보 검색 시스템에서의 문구 식별 | |
CN104008171A (zh) | 一种法律数据库构建方法及法律检索服务方法 | |
Chen et al. | Template detection for large scale search engines | |
NO338518B1 (no) | Flerregisterbasert informasjonsgjenfinningssystem | |
US10417208B2 (en) | Constant range minimum query | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN115391495B (zh) | 在中文语境中检索关键词的方法、装置及设备 | |
Hon et al. | Efficient index for retrieving top-k most frequent documents | |
CN111859065A (zh) | 一种基于大数据的舆情聆听系统 | |
CN101088082A (zh) | 全文查询和搜索系统及其使用方法 | |
US20140129543A1 (en) | Search service including indexing text containing numbers in part using one or more number index structures | |
KR20110133909A (ko) | 모든 자연어 표현의 각각의 의미마다 별도의 용어를 동적으로 생성하는 방법 및 이를 기반으로 하는 사전 관리기,문서작성기, 용어 주석기, 검색 시스템 및 문서정보체계 구축장치 | |
CN102722527B (zh) | 一种支持含有缺失符号的查询请求的全文检索方法 | |
CN105824956A (zh) | 一种基于链表结构的倒排索引模型及其构建方法 | |
JP2693914B2 (ja) | 検索システム | |
Page | TBMap: a taxonomic perspective on the phylogenetic database TreeBASE | |
CN1786956B (zh) | 搜索引擎中处理含Unicode四字节编码东亚表意文字异体字转换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140806 Termination date: 20170516 |
|
CF01 | Termination of patent right due to non-payment of annual fee |