一种基于过滤型的字符串快速匹配方法

文档序号:6372009阅读:238来源:国知局
专利名称:一种基于过滤型的字符串快速匹配方法
技术领域
本发明涉及字符串匹配技术领域,特别是涉及一种基于过滤型的字符串快速匹配方法,属于信息检索领域和计算生物学领域。
背景技术
字符串匹配问题可以界定为从给定的符号序列中找出一个具有某种属性的模式,最简单的例子是从给定的字符序列中找出一个给定的字符串。“近似匹配”一般是指在允许模式和文本字符串之间存在某些细微的差异。“匹配”一般是指“近似匹配”。字符串匹配是计算机科学中最古老、研究最广泛的问题之一,并且,字符串匹配的应用也随处可见。近年来,学术界对字符串匹配的研究兴趣与日俱增,特别是在发展迅猛的信息检索领域和计算生物学领域。同时,近似匹配的应用也越来越广泛。例如,信息检索中对拼写错误的纠正,在计算生物学中的序列比对,在信号处理中对传输错误的纠正,等等。之所以有上述现象,不仅因为在这两个研究领域中需要处理的文本规模越来越大,而且由于需要在文本中进行越来越复杂的搜索。现在对近似匹配的研究主要基于距离模型,在该模型中需要一个可以度量两个字符串相似度的距离函数。在近似匹配中,通常给出模式串和一个对应的阀值k,其中,k指定了模式串和匹配结果之间允许的最大距离。近似匹配的定义如下在编辑距离模型下,给定一个整数k和两个字符串分别为Pattern[l-m]、Text[l-n],找出文本串Text中的所有子串P,使得编辑距离edit (Pattern,p)彡k。在实际应用中,很多问题是用了编辑距离模型或者使用其变体。已有的近似匹配方法分为四类第一类是基于动态规划方法;第二类是基于NFA搜索;第三类是基于位并行技术,这是当前应用最成功的一类方法。最后一类是基于过滤的方法,它用一个快速的过滤算法跳过文本中那些不可能存在成功匹配的大块区域,然后再利用一个非过滤算法来验证剩下的区域是否存在成功匹配。这类方法也是最快的算法之
o提出的算法就是利用过滤的思想,使得算法的效率大为提高。

发明内容
本发明的目的在于提供快速近似模式匹配的一种方法,尤其是克服机器字长的限制,提供一种适用于长模式串近似匹配的算法。对于给定的文本串和模式串,本发明一种基于过滤型的字符串快速匹配方法是在文本串中寻找与模式串具有一定相似度的子串。字符串匹配问题就是在一个大的文本串中搜索某个模式串的所有出现位置。本发明用过滤思想过滤掉了文本串中那些不能产生成功匹配的区域,从而提高了算法在平均情况下的效率。为实现上述目的,本发明采用如下技术方案一种基于过滤型的字符串快速匹配方法,包括如下步骤
(I)对模式串进行预处理记模式串长度为(k+s)h的前缀为Ptl,将Ptl切分成k+s个长度为h的模式串子块,将每一个模式串子块的长度延长k+q-1,则两个连续模式串子块之间存在长度为k+q-1的重叠部分;这k+s个延长之后的模式串子块分别记为Qp Q2、…、
Qk+S;其中h= — q + 1咖为模式串字符的个数;k为把模式串转变成文本串某个子串所 _ k + s _
需要的最少操作次数简称编辑距离,0 ^ k < m ;s为在匹配过程中文本串索引(文本串索引的说明在步骤2中)与模式串子块的因子精确匹配的最少个数,I ^ s < m;q是文本串索引的长度,q ^ h ;(2)创建文本串索引从文本串起始位置开始,每隔h长度依次读取文本串的q个字符作为文本串索引,文本串索引分别标记为屯、d2,;q ^ h ;
(3)创建匹配数组B [d,j]:如果某一个文本串索引Cli属于Qj,则B [ClijJl=I;否则BWi, j]=0 ;为每个文本串创建长度为m’的数组M,用于记录文本串索引的匹配个数,记Cli对应的数组为Mdi [I…m’ ],Mdi[l-m,]初始化为0 ;其中m’ =k+s ;(4)计算k+s个连续的文本串索引与模式串子块的匹配个数将文本串索引与模式串子块进行匹配;在记录匹配情况的过程中,若出现Mdi[j] < j_k(这里有j>k)的情况,则停止构建该数组,转而继续构建下一个索引的数组Mdi+1 ;若元素Mdi[m’] ^ s,则需要进一步检测近似匹配,继续下一步;(5)检测近似匹配若存在近似匹配,则待检测的区域位于文本串的j_ (k+s)h-2k-q+2至j+m-(k+s-l)h+k-q部分,并用动态规划算法检测该区域,如果检测出近似匹配,则给出近似匹配的所有出现位置,否则报告该区域不存在近似匹配。字符串是定义在有限字母表上的字符序列。文本串是一个字符串,模式串也是一个字符串。字符串匹配问题就是在一个大的文本串中搜索某个模式串的所有出现位置。给定字符串x,y和z,称X是xy的一个前缀,x是yx的一个后缀,x是yxz的一个因子。本发明的原理如果把文本串分成k+s片,那么对于任意一个成功的近似匹配,至少有s片在文本串中是精确匹配的。利用上述思想,本发明通过构造q-gram索引计算文本串中已精确匹配的子串个数,确定在该g-gram索引某段区域是否有存在近似匹配的可能。g-gram索引指的是在建立索引时对文本Text切分时采用长度为q、滑动距离为d的滑动窗口,切分得到长度为q的子串。为了计算q-gram与模式串的匹配个数,引入匹配数组B[d,j],如果某一个q-gram d属于Qj,则B[d, j]=l;否则B [d, j] =0。这样,对于每一个q-gramd,B[d,*]给出了每一块d的匹配信息。在确定了某段区域有存在近似匹配的可能之后,就需要对该段区域进行验证。应用比较广泛的验证算法是基于位并行技术的,比如BPM算法。但是该方法适用于完成模式串长度比较短时的近似匹配验证。本发明选取的验证算法是基于动态规划矩阵的DP算法。该算法的思想是通常模式串在文本中成功匹配的数目是很少的,因此,在编辑距离矩阵M中,每一列的值从上往下计算很快就达到k+1 (即不匹配了),如果某个矩阵元素的值大于k+1,那么搜索结果就不会依赖于这个元素。如果一个矩阵元素的值小于或等于k,那么这个元素就称为活动的。该方法只计算到每一列的最后一个活动元素,不需要再对后面的元素进行计算。本发明与现有的近似匹配算法相比,具有以下显著优点
(I)近似捜索中大量使用位并行方法,很多很好的结果都是使用位并行方法得到。然而位并行算法适用于模式串较短的情况,但是现实需求中很多搜索都是对长模式串进行。如果模式串的长度超过了计算机的字长,那么匹配的效果将变得非常的糟糕。而本近似捜索算法非常适合长模式串的近似匹配,当模式串的长度m和阀值k的比值增加时,其效率也相应的提高。(2)在未増加新的过滤策略之前,近似匹配算法的时间开销主要是计算数组M以及用DP算法验证可能的匹配区域。通过增加过滤策略,简化了匹配时计算每个q-gram索引与模式串中每个块的匹配时间,从而大大缩短了计算数组M的时间。在最好情况下,本算法能比原算法能缩短一半的匹配时间。(3)过滤算法只能提高算法在平均情况下的效率,它的优势在于可能不需要检查文本中的每个字符。过滤算法的效率和它能过滤掉的文本大小有关,并且对错误水平非常的敏感。大多数过滤算法在错误水平较低时工作得很好,否则就很差。而本过滤算法在错误水平较高时,依然保持了良好的性能。实验显示,当错误水平较高时,本算法比同类算法 所需的匹配时间能減少一半。


图I是构造索引对文本串的处通不意图;图2是模式串的处理示意图。
具体实施例方式为了更好地理解本发明,下面结合实施例对本发明作进ー步说明,但本发明要求保护的范围并不局限于实施例表示的范围。实施案例I :手机短信分类近些年,我国加快了社会信息化和数字化的发展步伐,人们每天要处理的信息越来越多。各应用服务商为了提醒或者让客户尽快了解相关信息会以短信的方式通知客户,如电子商务网商品推荐、网上银行信息回馈、各种扣费通知还有用户本身的聊天信息等。但随着人们接触的业务越来越多,这些信息变得繁杂难以管理。大家需要ー种很方便、松散、有效的方式分类短信,摆脱直接打开收件箱应对各类信息的窘况。应用本发明“ー种基于过滤型的字符串快速匹配方法”能够实现用模版来分类短息的功能。当用户需要划分ー个新的信息类别,只需要提供一条或者多条该类型的信息,系统就能利用近似匹配的办法自动分类将来收到的短信,应用步骤如下(I)用户建立一个新的信息类,提供一条或若干条短信作为该类的样本,这些样本就是该类的模式串。而新的短信内容则作为目标文本串,如果某类模式串与该文本串相匹配则该文本串属于该类。(2)假设短信样本的长度是m=32,短信文本串索引的长度q=2 ;用户设定相似度是k=4,在匹配过程中短信索引与模式串子块的因子精确匹配的最少个数s=2 ;则其中
h= m f — g + 1 =4;如图2所示,对模式串进行预处理记模式串长度为(k+s)h=24的前 _ k + s J
缀为Po,将Po切分成k+s=6个长度为h=4的模式串子块,将每一个模式串子块的长度延长k+q-1 = 5,则两个连续模式串子块之间存在长度为k+q-Ι = 5的重叠部分;这k+s=6个延长之后的模式串子块分别记为Q1, Q2,…,Q6 ;(3)如图I所示,对于新的短信,假设其长度是128 ;创建短信的索引从短信起始位置开始,每隔h=4长度依次读取短信的q=2个字符作为新短信索引,短信索引分别标记为
Cll、^2) ... d32 ;(4)创建匹配数组B[d,j],如果某ー个短信索引Cli属于Qj,则Β[‘ j]=l;否则B[di; j]=0;为每个短信创建长度为m’的数组M,用于记录短信索引的匹配个数,记も对应的数组为Mdi [6],Mdi [6]初始化为O ;(5)计算k+s=6个连续的短信索引与模式串子块的匹配个数将短信索引与模式串子块进行匹配;在记录匹配情况的过程中,若出现Mdi[b]彡b-4(这里有b>4)的情况,则停止构建该数组,转而继续构建下ー个索引的数组吣1+1 ;若元素Mdi[6]彡2,则需要进ー步 检测近似匹配,继续下一歩;(6)检测近似匹配若存在近似匹配,则待检测的区域位于短信的j-32至j+14部分(j是某一次匹配中连续6个索引最后ー个索引的在日记文档的结束位置),并用动态规划算法检测该区域,如果检测出近似匹配,则给出近似匹配的所有出现位置,否则报告该区域不存在近似匹配。ー个短信可以属于多个类,只要匹配成功就证明该短信的部分内容符合某类的模版要求。实施案例2 日记文档模糊捜索随着计算机技术的迅速发展和生活速度的加快,相对于以往用纸笔写日记、完成工作文档的情况,人们现在更偏向于用计算机完成文本工作。主要有三个原因1)计算机技术使人们完成文本工作更容易和快捷;2)计算机日记更具有娱乐色彩,如编辑心情;3)满足人们随手记录的要求。相比于一天结束后完成一篇日记或者工作报告,即时记录更符合人们的需求,随着手机硬件技术、手写字识别和语音识别技术的发展,我们更方便更直接地记录日常信息,通过计算机识别技木,这些多媒体信息将会转化为文本进行存储。对于这些比较随意散乱、文学性不强的文档,应用本发明“一种过滤型快速近似模式匹配方法”可以满足用户模糊捜索日志的需求,应用步骤如下( I)用户指定日记文档作为本实施例中的文本串,输入查询语句作为本发明中的模式串;(2)查询语句的长度记为m=16,用户设定查询相似度k=2,在匹配过程中日记文档索引与查询语句子块的因子精确匹配的最少个数s为1,日记文档索引的长度q=3;则
h= W ^ q + l =4;对查询语句进行预处理记查询语句的长度为(k+s)h=12的前缀为Pci,
将Ptl切分成k+s=3个长度为4的查询语句子块,将每一个查询语句子块的长度延长k+q-1=4,则两个连续查询语句子块之间存在长度为4的重叠部分;这3个延长之后的查询语句子块分别记为Q1, Q2, Q3;(3)创建日记文档索引假设日记的长度是1000。从日记文档起始位置开始,每隔4个字符依次读取日记文档的3个字符作为日记文档索引,日记文档索引分别标记为も、
^2) · · · d250 ;(4)创建匹配数组B[d,j],如果某ー个日记文档索引Cli属于Qj.,则Β[‘」]=1;否则B Wi,j] =O ;为每个日记文档创建长度为3的数组M,用于记录日记文档索引的匹配个数,记Cli对应的数组为Mdi [3],Mdi [3]初始化为O ;(5)计算3个连续的日记文档索引与查询语句子块的匹配个数将日记文档索引与查询语句子块进行匹配;在记录匹配情况的过程中,若出现Mdi[b]彡b-2(这里有b>2)的情况,则停止构建该数组,转而继续构建下ー个索引的数组吣1+1 ;若元素Mdi [m’ ]彡S=I,则需要进ー步检测近似匹配,继续下一歩;(6)检测近似匹配若存在近似匹配,则待检测的区域位于日记文档的j-17至j+7 (j是某一次匹配中连续3个索引最后ー个索引的在日记文档的结束位置)部分,并用动态规划算法检测该区域,如果检测出近似匹配,则给出近似匹配的所有出现位置,否则报告 该区域不存在近似匹配。只要存在某处匹配成功的文档作为候选文档提供用户详细查看。
权利要求
1.一种基于过滤型的字符串快速匹配方法,其特征在于包括如下步骤 (1)对模式串进行预处理记模式串长度为(k+S)h的前缀为P。,将P。切分成k+s个长度为h的模式串子块,将每一个模式串子块的长度延长k+q-l,则两个连续模式串子块之间存在长度为k+q-l的重叠部分;这k+s个延长之后的模式串子块分别记为Q1' Q2>…、Qk+S ;其中
2.根据权利要求I所述的基于过滤型的字符串快速匹配方法,其特征在于所述文本串为字符串,模式串为字符串;所述字符串是定义在有限字母表上的字符序列。
3.根据权利要求I所述的基于过滤型的字符串快速匹配方法,其特征在于给定字符串x,y和z,称X是xy的一个前缀,x是yx的一个后缀,x是yxz的一个因子。
全文摘要
本发明公开了一种基于过滤型的字符串快速匹配方法,该方法先对模式串进行预处理将模式串前缀P0切分成k+s个长度为h的模式串子块,将每一个模式串子块的长度延长k+q-1,分别记为Q1、Q2、…、Qk+s;然后从文本串起始位置开始,每隔h长度依次读取文本串的q个字符作为文本串索引,文本串索引分别标记为d1、d2,...dn/h;再创建匹配数组B[d,j]如果某一个文本串索引di属于Qj,则匹配数组B[di,j]=1;计算k+s个连续的文本串索引与模式串子块的匹配个数,最后检测近似匹配。本方法结合了动态规划算法与过滤算法,并且增加了新的过滤策略,缩短近似匹配的平均时间,使得匹配性能有了较大的提高。
文档编号G06F17/30GK102750379SQ201210211829
公开日2012年10月24日 申请日期2012年6月25日 优先权日2012年6月25日
发明者李拥军, 林浩, 谢豪, 邹少聪, 黄格仕 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1