海量特征串集合的匹配方法及系统的制作方法

文档序号:6508141阅读:542来源:国知局
海量特征串集合的匹配方法及系统的制作方法
【专利摘要】本发明提供了一种海量特征串集合的匹配方法及系统,其中的方法包括预处理阶段和特征串匹配阶段,其中,在预处理阶段通过对特征串进行统计并分组,建立位向量掩码表,使过滤算法在同等空间和规则数量下的通过率更低,进而能够容纳更多的特征串;在特征串匹配阶段,采用位并行方式进行后缀和前缀匹配,支持不等长特征串的匹配并且在匹配数据中能够以跳跃的方式大范围快速查找特征串;通过区分普通匹配窗口和长匹配窗口,来保证跳跃的安全和减少过滤通过率。通过本发明能够使匹配过程在相同资源条件下,能够容纳数量更多的特征串,并且具有性能稳定的特点,能够在极端情况下保持模式匹配的高效率。
【专利说明】海量特征串集合的匹配方法及系统
【技术领域】
[0001]本发明涉及信息识别【技术领域】,更为具体地,涉及一种海量特征串集合的匹配方法及系统。
【背景技术】
[0002]模式匹配是信息识别中的重要核心技术之一,用于从目标串中发现特征串。随着信息技术的高速发展,模式匹配被越来越广泛地应用于网络信息搜索、数据流挖掘、网络入侵检测以及计算生物学等领域。
[0003]模式匹配是指在文本T=I^t2...1^中找出某个给定的特征串集合P= {p1;p2,...,pr}的所有出现位置,其中T和Pi(KiSr)是在有限字符表Σ上的字符序列。随着网络和生物学的发展,在匹配更多的特征串条目的同时,需要保持有较高的处理速度,这就对多模式匹配的处理能力提出了更高的要求。然而在很多现有的多模式匹配算法中,当特征串规模超过I万时,由于其处理能力的下降,已经无法满足需求,因而基于位并行与q-gram技术的多模式匹配方法应运而生。此种方法在数量10万以下规模的特征串匹配过程中能够取得较好的效果。
[0004]基于位并行技术的多模式匹配算法,例如Shift-And/Or算法、BNDM算法,其基本思想是:将特征串集合与文本串的匹配状态用位向量存储,匹配过程就是用位操作更新位向量的过程。由于Shift-And和Shift-Or算法的原理基本相同,以下着重介绍Shift-And算法和BNDM算法的原理。
[0005](I)Shift-And算法维护一个字符串的集合,集合中的每个字符串既是特征串p的前缀,同时也是已读入文本的后缀。每读入一个新的文本字符,该算法采用位并行的方法更新该集合。该集合用一个位掩码D=dm...(I1来表示。D的第j位被置为I,当且仅当P1...P」是tp..tj的后缀。
[0006]Shift-And算法首先构造一个表B,记录字母表中每个字符的位掩码bm...t^。如果Pfc,掩码B[c]的第j位被置为1,否则为O。首先置D=0m,对于每个新读入的文本字符ti+1,用如下公式对D进行更新:
[0007]Di+1 一 ((Di?l) 0m+1l)&B[ti+1]
[0008]上面Oni表示有连续m个O,例如,用O3I来表示0001。在匹配时,逐个扫描文本字符并更新向量D,测试是否匹配成功的掩码为IOm'即当幸Om时,在文本位置i处匹配成功。
[0009](2)BNDM (Backward Nondeterministic Dawg Matching,向后非确定性匹配)算法的搜索与BDM算法相同,但它使用位并行来识别特征串。在当前搜索窗口内,设已读入的字符串为u, BNDM算法维护一个集合,记录u在P中所有出现位置。同Shift-And算法一样,该集合可以用一个位向量D来表示。如果特征串P1...Pj+iu1-1等于u,那么D的第m-j+1位是I,表示P的位置j是一个活动状态。
[0010]同Shift-And算法一样,BNDM算法预先计算一张表B,表B用一个位掩码记录了该字符在P中出现的位置。对于每个新读入的文本字符ti,利用如下公式,可以从D更新到0’,其中,0’ 一 Φ〈〈1)&Β[\],初始化D=lm,且需要用额外变量last保存特征串前缀的最左位置。
[0011]为了能容纳更大的规则数,使用q-gram技术以扩大表的规模。该技术将q个字符转化为一个字符来处理。其中,将q个字符转化为一个q-gram字符有两种方式,即重叠q-gram和连续q-gram。当使用重叠q-gram时,依次从原字符串的每一个字符开始取q个字符进行转化,使用连续q-gram时,依次从原字符串的每q个字符开始去q个字符进行转化。例如,在转化字符串“pony”时,使用重叠q-gram转化为“po-on_ny”,而使用连续q-gram转化为“po-ny”。本文中使用q-gram技术时,使用的都是重叠q-gram。
[0012]为了实现快速的匹配,采用SOG算法或者BG算法来保证多模式匹配的执行效率。
[0013]SOG算法是使用q-gram将Shift-Or算法扩展成基于过滤技术的多模式匹配算法。该算法是以牺牲精确匹配为前提,将“确认能匹配”改成“确认不能匹配”,以一次相对快速的匹配过程,过滤掉大量不能成功匹配的数据,以保证算法的执行效率。对于少量过滤通过的情况,配合其他算法,再针对数据中的特定的位置进行精确匹配的校验。对于大多数匹配过程,最终不会产生命中,如果也没有误报产生,那么过滤算法的性能就等同于整个模式匹配过程的性能。
[0014]具体的方法是,首先在算法的预处理阶段,以每个特征串为基础,构建Shift-Or算法的掩码表B,然后将多个掩码表B,以每个字符位掩码为单位进行或运算,进而合并成为一张掩码表,后续的匹配过程不变。不同在于,当D[i]MOnri Φ Om时,在文本位置i处不再表示匹配成功,而是有可能会发生匹配,需要使用其他能够逐个字符比较的方法进行再次确认。
[0015]SOG算法需要将多个位向量进行或运算,位向量的位长就必须都是相等的,所以要求所有的特征串都是等长的。如果出现不等长的情况,就以最短串的长度为基准,将所有长串提取等长子串,让子串参与匹配。如果提取的等长子串长度Imin小于机器字长,lmin*r仍然不超过一个机器字长,还可以将一个机器字长划分成r个等长分组,将r个位向量包装进一个机器字内,从而节省空间。ShiftAnd/Or类的无跳跃的算法,还可支持不等长分组,使长字符串可以保留更长的子串。
[0016]作为实现快速模式匹配的另一种算法,BG是使用q-gram将BNDM算法扩展成为基于过滤技术的多模匹配算法,其扩展方法同Shift-And/Or算法类似。这里不再详述。
[0017]多模式匹配过滤类算法主要被应用于一次完整模式匹配的前端过滤,评价一个过滤算法的性能,主要体现在两个方面:过滤效率和过滤通过率。过滤效率,表示纯粹过滤过程的处理速度。过滤效率比较容易评价:匹配同等的数据量,执行时间越短,效率越高。过滤通过率也可以理解为“误报率”,每一次误报,还需要进行一次额外的精确匹配的确认过程,所以过滤通过率会影响整体匹配效率。一般来说同等特征串数目,通过率越低越好。
[0018]虽然SOG、BG算法与传统的多模匹配相比,在支持较大规模特征串的情况下,具有较好的处理速度。从实测数据看来,SOG算法与BG算法在特征串规模达到10000时,仍然保持了较好的处理速度,在这种规模下,传统的多模式匹配算法已经不再适用。然而,SOG算法与BG算法还存在一些不足,导致在特征串规模更大的情况下,其处理速度仍不能满足要求。其中,SOG算法与BG算法主要存在以下不足:[0019]I)在利用q-gram技术时,q取2或3,对应SOG与BG算法的字母表取216或224,当字母表取216时,有较高的冲突概率,在一定的通过率下,算法能容纳的规则数相对较少,当字母表取224时,算法能容纳的规则数很大,但是掩码表所占用的空间也很大,无法充分利用处理器的cache,算法访存需消耗大量时间,降低了算法的性能。
[0020]2)S0G与BG算法在构造掩码表时,都没有对特征串进行分组。因此只能对所有特征串都截取等长的前缀。当将较长字符串截取为较短的前缀时,会丢失大量特征信息,也会造成掩码表空间浪费,直接导致过滤算法的过滤效果变差。虽然S0G、BG算法也可以进行分组,但其只是简单的将特征串分为2组或4组,并没有提出有效的自动分组的算法,因此,分组带来的效果并不理想。而BG算法,从算法的基本原理看,不能进行不等长分组,这样当实际特征串集合中含有较短特征串时,BNDM算法的跳跃优势就会大大削弱。
[0021]3)当特征串数量达到一定规模时,会导致BG算法失去跳跃能力,此时,BG会因为过度的校验计算,使整体效率变的很低。
[0022]4)虽然SOG具有稳定性能,不会因为特征串的数量增大而导致过度校验计算,但也因为它没有跳跃的能力,当特征串规模减少时,其匹配速度也不会提升。

【发明内容】

[0023]鉴于上述问题,本发明的目的是提供一种海量特征串集合的匹配方法及系统,以实现在同等空间、同等规则数量下,使过滤算法具备容纳更多特征串的能力。
[0024]根据本发明的一个方面,提供一种海量特征串集合的匹配方法,包括预处理阶段和特征串匹配阶段,其中,预处理阶段包括:
[0025]确定位向量掩码表的空间容量;
[0026]根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组,建立分组位向量掩码表;
[0027]根据算法字符的位长确定散列函数;
[0028]特征串匹配阶段包括:
[0029]根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与散列函数的转换获得算法字符;
[0030]根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
[0031]从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从位向量掩码表中获取位向量;其中,
[0032]如果位向量中的所有有效位都不全为0,则以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,
[0033]如果位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;
[0034]如果位向量的有效位不全为O且位向量的某一个分组的最高位为1,则匹配当前分组特征串的后缀,保留初始向量中相应的有效位;其中,
[0035]在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
[0036]当位向量的更新过程结束时,如果特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行特征串匹配命中的确认;
[0037]如果在匹配特征串的后缀过程中,如果偏移值没有改变,则对偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
[0038]其中,在对特征串进行分组的过程中,根据特征串的分组数、每组位长、每组所容纳的特征串的数量以及位掩码表的参数,获取每组的过滤通过率;通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对特征串进行分组。
[0039]其中,在当前的起始偏移值所指向的普通匹配窗口中进行匹配命中的确认的过程中,依次从普通匹配窗口末端反向逐个获取算法字符,更新位向量;如果更新后的位向量的某一个分组的最低位是I,则记录一次特征串匹配命中的可能,其中,可能会发生命中的特征串的起点即是当前读入的算法字符。
[0040]另一方面,本发明还提供一种海量特征串集合的匹配系统,包括特征串分组单元和特征串匹配单元:
[0041]其中,特征串分组单元包括:
[0042]空间容量确定单兀,用于确定位向量掩码表的空间容量;
[0043]位向量掩码表建立单元,用于根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组建立分组位向量掩码表;
[0044]散列函数确定单元,用于根据算法字符的位长确定散列函数;
[0045]特征串匹配单元包括:
[0046]初始单元,用于根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与散列函数的转换获得算法字符;
[0047]数据获取单元,用于根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
[0048]位向量获取单元,用于从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从掩码表中获取位向量;
[0049]匹配单元,用于当位向量中的所有有效位不全为O时,以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,
[0050]如果位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;[0051]如果位向量的有效位不全为O且位向量的某一个分组的最高位为1,则已经匹配了当如分组特征串的后缀,保留初始向量中相应的有效位;其中,
[0052]在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
[0053]当位向量的更新过程结束时,如果特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行特征串匹配命中的确认;
[0054]匹配命中单元,用于当匹配单元中发生过特征串后缀命中时,在当前的起始偏移值所指向的普通匹配窗口中进行特征串命中的确认;
[0055]偏移值获取单元,用于在匹配特征串的后缀过程中,当偏移值没有改变时,对偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
[0056]利用上述根据本发明的海量特征串集合的匹配方法及系统,能够在同等空间和同等规则数量下,使过滤算法的通过率更低,实现容纳更多特征串的能力,并达到合理利用资源的目的。
[0057]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
【专利附图】

【附图说明】
[0058]通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
[0059]图1为根据本发明实施例的海量特征串集合的匹配方法流程示意图;
[0060]图2为根据本发明实施例的散列函数由机器字符转换为算法字符的转换关系示意图;
[0061]图3为根据本发明实施例的海量特征串集合的匹配系统的方框示意图。
[0062]在所有附图中相同的标号指示相似或相应的特征或功能。
【具体实施方式】
[0063]以下将结合附图对本发明的具体实施例进行详细描述。
[0064]针对前述现有的过滤类多模式匹配方法存在空间利用率低算法访存消耗的时间多、跳跃性的匹配特征串不支持特征串不等长分组、过滤通过率高导致整体匹配效率不高的问题,本发明以位并行和q-grams作为技术基础,在预处理阶段通过对特征串的分组优化,使过滤算法在同等空间和规则数量下的通过率更低,进而能够容纳更多的特征串;在特征串匹配阶段,支持不等长特征串的匹配并且在匹配数据中能够以跳跃的方式大范围快速查找特征串,保证了特征串的匹配执行效率。
[0065]为了说明本发明提供的海量特征串集合的匹配方法,图1示出了根据本发明实施例的海量特征串集合的匹配方法流程示意图。
[0066]如图1所示,本发明提供的海量特征串集合的匹配方法包括:预处理阶段和匹配阶段:
[0067]其中,预处理阶段的工作流程包括:
[0068]Slll:根据实际运行的硬件环境确定位向量掩码表的空间容量。
[0069]S112:根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组建立分组位向量掩码表。
[0070]其中,在对特征串进行分组的过程中,根据特征串的分组数、每组位长、每组所容纳的特征串的数量以及位向量掩码表的参数,获取每组的过滤通过率;通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对特征串进行分组。
[0071]其中,在获取每组的过滤通过率的过程中,将过滤通过率定义为:
[0072]
【权利要求】
1.一种海量特征串集合的匹配方法,包括预处理阶段和特征串匹配阶段,其中,所述预处理阶段包括: 确定位向量掩码表的空间容量; 根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对所述特征串进行分组,建立分组位向量掩码表; 根据所述算法字符的位长确定散列函数; 所述特征串匹配阶段包括: 根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与所述散列函数的转换获得所述算法字符; 根据所述起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据; 从所述当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从所述位向量掩码表中获取位向量;其中, 如果所述位向量中的所有有效位不全为O,则以所述位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在所述新的长匹配窗口的长度范围内,采用位并行方式对所述位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在所述位向量进行更新的过程中, 如果所述位向量的有效位全为O,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新; 如果所述位向量的有效位不全为O且所述位向量的某一个分组的最高位为1,则匹配当iu分组特征串的后缀,保留初始向量中相应的有效位;其中, 在所述特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符; 当所述位向量的更新过程结束时,如果所述特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清O,作为所述特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行所述特征串匹配命中的确认; 如果在匹配所述特征串的后缀过程中,所述偏移值没有改变,则对所述偏移值进行重新定位,获取新的起始偏移值,并在所述偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
2.如权利要求1所述的海量特征串集合的匹配方法,其中,在对所述特征串进行分组的过程中, 根据所述特征串的分组数、每组位长、每组所容纳的特征串的数量以及所述位向量掩码表的参数,获取每组的过滤通过率; 通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对所述特征串进行分组。
3.如权利要求2所述的海量特征串集合的匹配方法,其中,通过下述等式获取每组分组方式的过滤通过率:
4.如权利要求1所述的海量特征串集合的匹配方法,其中,在当前的起始偏移值所指向的普通匹配窗口中进行匹配命中的确认的过程中, 依次从所述普通匹配窗口末端反向逐个获取算法字符,更新所述位向量; 如果更新后的所述位向量的某一个分组的最低位是1,则记录一次特征串匹配命中的可能,其中,可能会发生命中的特征串的起点即是当前读入的算法字符。
5.一种海量特征串集合的匹配系统,包括特征串分组单元和特征串匹配单元: 其中,所述特征串分组单元包括: 空间容量确定单兀,用于确定位向量掩码表的空间容量; 位向量掩码表建立单元,用于根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对所述特征串进行分组,建立分组位向量掩码表; 散列函数确定单元,用于根据所述算法字符的位长确定散列函数; 所述特征串匹配单元包括: 初始单元,用于根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与所述散列函数的转换获得所述算法字符; 数据获取单元,用于根据所述起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据; 位向量获取单元,用于从所述当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从所述掩码表中获取位向量; 匹配单元,用于当所述位向量中的所有有效位不全为O时,以所述位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在所述新的长匹配窗口的长度范围内,采用位并行方式对所述位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在所述位向量进行更新的过程中, 如果所述位向量的有效位全为O,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新; 如果所述位向量的有效位不全为O且位向量的某一个分组的最高位为1,则已经匹配了当如分组特征串的后缀,保留初始向量中相应的有效位;其中, 在所述特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符; 当所述位向量的更新过程结束时,如果所述特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清O,作为所述特征串前缀匹配的初始向量;匹配命中单元,用于在匹配单元发生过后缀命中时,在当前的起始偏移值所指向的普通匹配窗口中进行所述特征串命中的确认; 偏移值获取单元,用于在匹配所述特征串的后缀过程中,当所述偏移值没有改变时,对所述偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征 串匹配 。
【文档编号】G06F17/30GK103544208SQ201310363274
【公开日】2014年1月29日 申请日期:2013年8月16日 优先权日:2013年8月16日
【发明者】侯智瀚, 尹延伟 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1