专利名称:大规模关键词匹配的方法和系统的制作方法
技术领域:
本发明涉及文本处理技术领域,特别是一种大规模关键词匹配方法和系统。
背景技术:
多关键词匹配的技术已经比较成熟,而且广泛的用于文本处理、内容过滤的各个方面。传统的多关键词匹配算法是将待扫描的文本看成是一维的字符串,充分利用已知关键词串的特征,在扫描过程中尽量向前跳跃,以提高匹配的性能。多关键词匹配算法根据对关键词预处理方法的不同,可以分为三种形式前缀模式(KMP、AC、Shift-AND、Shift-Or等算法)、后缀模式(Boyer-Moore、Wu-Manber等算法)、子串模式(BDM、BOM、SBDM、SBOM等算法)。多关键词匹配算法的性能主要受一下三个方面的影响关键词数量、关键词的最小长度、字符集。此外,匹配速度也和待扫描文本中出现关键词的次数有关系。
为了不断的提高关键词匹配的性能,出现了很多新的方法,但都是在对关键词本身的预处理上进行改进,即尽可能多的利用关键词串的特征,寻求新的数据结构来存储特征和由特征计算出来的跳跃量,改进跳跃方式等,这样的改进方法对匹配速度的提高很有限,通常可以提高20%-40%左右。
发明目的随着计算机应用和网络应用的普及,数据处理量日益增大。尤其是在网络应用环境中,存在大量的实时数据处理的需求,例如垃圾邮件的实时过滤,网络内容安全等。在这些应用中,系统因为用户使用习惯和数据处理量的不断增大,关键词数量也会不断的增大,规模常常达到上万级。这时,传统的匹配技术的速度会明显的急剧下降,已经不能很好的满足应用需求,尤其是实时数据处理的需求。
发明内容
为了满足大规模的快速关键词匹配的需求,本发明提供了一种针对大规模的关键词匹配方法,包括步骤定义关键词匹配时间的评价函数;对给定的关键词进行分组,并通过训练的方法得到每一组的最佳匹配算法;组成关键词匹配的一组算法,然后进行最终的扫描。
为了实现以上目的,本发明还提供了一种大规模关键词匹配的系统(图1),包括用于规范化给定关键词的装置;用于寻找最优分组和最佳匹配方法的装置,提供两种机制一是动态规划机制(图2、3),二是最短路径机制(图4、5),此装置将结果以配置文件的形式存储的装置;用于读取最佳结果,并对每个分组创建扫描自动机的装置;用于最终扫描,并将结果存储在指定内存结构或者文件中的装置。
本发明尤其涉及基于内容的文本过滤和网络内容安全。
在大规模关键词匹配方法中,最核心的是怎样求解一个最优的分组,最短路径方法是其中的一种方法,另外一种是动态规划的方法。
本发明解决了针对过滤中关键词大规模(通常关键词数量在5000以上)关键词快速匹配的问题,特别适用于实时网络数据的处理。实验证明,使用本发明给出的系统,平均可以使关键词匹配的速度提高1倍。
一种大规模关键词匹配的方法,包括步骤对关键词集合进行规范化;对关键词集合进行最优分组和寻找最佳匹配方法;建立一组扫描自动机;扫描,并返回结果。
图1是本发明的大规模关键词匹配的系统示意图。
图2是本发明的动态规划机制求解最优分组的示意图。
图3是本发明的动态规划机制求解最优分组方法的实现流程图。
图4是本发明的最短路径机制求解最优分组的示意图。
图5是本发明的最短路径机制求解最优分组方法的实现流程图。
具体实施例方式
如图1所示,本发明的系统包括装置(1)规范化关键词装置,作用是对给定的大量关键词,按照长度进行个数的统计,然后按照长度排序;装置(2)求解最优分组和最佳匹配方法的装置,作用是可以使用两种机制求解最优分组一是采用动态规划机制得到最优分组,然后通过训练的方法得到每组的最佳匹配方法;另一种是使用最短路径机制直接得到分组和每一组的最佳匹配方法;此装置最终以配置文件的方式将分组和最佳匹配方法的结果存储在文件中;装置(3)建立扫描自动机的装置,作用是读取配置文件,采用训练后的结果,依次为每一个分组的关键词建立扫描自动机;装置(4)扫描装置,作用是使用装置(3)中建立的一组扫描自动机,对输入的文本进行扫描匹配,将结果存储在指定的内存结构或者外部文件中。
各装置的详细操作将在下面分别详细描述。
1.规范化装置规范化装置是将给定的一组关键词,首先按照长度排序,可以从小到大或者从大到小,然后统计相同长度的关键词个数。
定义一组关键词K={K1,K2,K3,...,Kn},对应的长度L={l1,l2,l3,...,ln}。规范化的过程首先将K排序成为K’={K1’,K2’,K3’,...,Kn’},使得对应长度L’={l1’,l2’,l3’,...,ln’}满足l1’<=l2’<=l3’<=...<=ln’(或者是>=)。然后对L’进行统计,计算相同长度的个数,得到统计值序列LNn1,n2,n3,...,nm。其中,m是关键词的最大长度;ni,l<=i<=m表示长度为i的关键词的个数。
2.求解最优分组和最佳匹配方法的装置此装置的目的是对规范化后的关键词集合求解一个最优的分组,并且在每个分组上使用最适合的一种匹配方法,从而使整个集合的匹配速度达到最快。为了达到这个目的,此装置可以通过两种机制实现一是动态规划机制;一是最短路径机制。下面分别进行描述。
2.1动态规划机制使用动态规划机制分成四个步骤定义评价函数步骤、分组步骤、训练步骤和存储配置信息步骤。在定义评价函数步骤中,给定一个函数,它是与关键词个数和长度相关的,在分组步骤中使用;在分组步骤中,使用动态规划的方法,利用规范化模块中计算的统计信息,求解一个对给定关键词集合的最优分组方案;训练步骤中,对每一个分组中的关键词,寻找最适合的匹配方法;在存储配置信息步骤中,将分组位置信息和分组内的最佳匹配方法信息记录在磁盘文件中,供最终的扫描自动机读取使用。
(1)、定义评价函数步骤(图3中step1)根据对传统的关键词匹配算法的分析,我们认为关键词匹配时间在字符集一定的情况下,和关键词的数量成正比,和关键词的最小长度成反比,即关键词数量越大,匹配的时间就越长;关键词的最小长度越大,匹配的时间就越短。更进一步,如果用F(K)表示文本通过关键词集合K的时间,用G(|K|)表示与关键词集合K的个数的影响关系,用Lmin(K)表示与关键词最小长度的影响关系,我们可以将它们的关系表述成F(K)=G(|K|)×Lmin(K)=|K|min(K)]]>(公式1)即匹配的时间与关键词个数的开根成正比,与最小长度(ming(K))成反比。
(2)、分组步骤(图3中step2)第一种分组方法步骤如下下面我们描述怎样使用动态规划的方法求解一个最优分组。
动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。它通常可以按照一下几个步骤进行a、找出最优解的性质,并刻画其结果特征;b、递归的定义最优值;c、以自底向上的方式计算出最优值;d、根据计算最优值时得到的信息,构造一个最优解。
我们的问题是找到一种对集合K的分组,使F(K)值最小。最优解的性质见公式1的表述。为了求最优解,实质上,我们是要找一个使F(K)最小的分组。
记对一个有序集合K的分组为F[1:n],如果第一个分组的位置在k处将集合分开,则有F[1:n]=F[1:k]+F[k+1:n],对F[k+1:n]可以依次类推。对于分组求解的递归式为F[k:n]=minG(p)k+F[k+p:n],1≤p≤n-kG(n-k+1)k,1≤k≤n]]>计算过程从F[n:n]开始计算,F[n-1:n],F[n-2:n],...,一直到F[1:n]为止。计算中,使用表来存储中间的计算结果F[k:n],利于后面计算的查找,这也是动态规划算法的核心思想。同时,要使用数组position存储F[k:n]取值处的位置信息。
回溯过程当F[1:n]的值得到时,计算过程结束,然后由position的值开始进行回溯得到最终解。首先取position[1]的值,它表示对于F[1:n]的分组位置,然后取position[position[1]],它表示下一个位置,直到position[n]为止,这样得到的位置序列就是一个最优的分组位置。
使用动态规划方法对长度为n的序列进行分组,它的时间复杂度为O(n2),空间复杂度为O(n)。
(3)、训练步骤(图3中step3)第二种分组方法如下使用最短路径的方法求解最优分组。对于集合K,可以对它构造一个有向图。节点、有向边、有向图、边的权重定义如下点将规范化后的关键词集合中,相同长度的关键词形成一个分组,作为图的一个点,记为Ni,i表示此点的关键词长度;有向边从点Ni到Nj之间的有向边表示将长度为i到长度为j-1的所有关键词组成一组,记为Bij;有向图对于给定的一组关键词和一个训练文本,如果关键词的最小长度为p,最大长度为q,p<=q,则它对应的一个有向图为由点集合{Np,Np+1,...,Nq,Nq+1}和有向边集合{Bij},p<=i<=q,p<j<=q+1,组成的一个有向图;边上的权重上述有向图中,Bij上的权重表示由长度为[i,j]的关键词组成的扫描自动机通过训练文本的时间,记为Tij;由上面的定义,可以方便的构造一个集合K上的有向图,利用求解有向图上的最短路径方法,可以计算得到分组的位置。
分组完成之后,对于每个分组的关键词使用哪种合适的匹配方法,本发明采用通过训练的方法得到。在前面技术背景中我们对成熟的关键词匹配技术进行了说明,我们可以选择其中几种来进行训练。在本发明的系统中,我们选用了BOM、WuManber、AC三种方法。训练文本的使用根据不通字符集大小生成的随机数据文件。
对分组后的每一组依次使用训练选用匹配方法A1,A2,..,Ap中每一种,对训练文本进行扫描匹配,记录扫描完成所需要的时间Ti,1<=i<=p。最终计算{T1,T2,..,Tp}中的最小值Tj,则对此分组,使用第j种匹配方法。依次训练所有的分组,并记录每个分组的最佳匹配方法。
(4)、存储配置信息步骤(图3中step4)训练完成后,将分组结果和训练结果按照指定的格式写入系统的配置文件中,以便后面的建立扫描自动机装置读取使用。本发明的系统中,采用的是整数序列的方式写入配置文件,第一行表示分组结果,第二行表示匹配方法的训练结果。整数中间使用tab键分隔开。
例如3 14 401 3 2第一行表示最终分成3组,长度<=3的为一组,长度为4-14的为一组,长度为15-40的为一组;第二行表示第一组关键词匹配使用方法1,第二组使用方法3,第三组使用方法2。具体方法1、2、3代表哪种方法,系统内部自己约定。
使用动态规划机制的示意图见附图2。图中,没有给出上述步骤1的示例。最顶端给出以长度表示的一组关键词,用虚线表示对它们使用动态规划求出的分组情况,这对应了上述的分组步骤;下面,对于每一个分组中的关键词,使用一个训练文本,在3个候选的扫描匹配自动机中,训练得到一个最佳的自动机,这对应了上述的训练步骤;最后,将分组的信息、每一个分组使用的最佳扫描自动机信息存储在外部存储设备中,这对应了上述的存储配置信息步骤。相应的实现流程见附图3。
2.2最短路径机制最短路径机制来源于求解一个图的最短路径技术。针对大规模关键词匹配的问题,我们做如下的定义定义1将规范化后的关键词集合中,相同长度的关键词形成一个组,作为图的一个点,记为Ni,i表示此点的关键词长度。
定义2从点Ni到Nj之间的有向边表示将长度为i到长度为j-1的所有关键词组成一组,记为Bij。
定义3Bij上的权重表示由长度为[i,j)的关键词组成的扫描自动机对训练文本扫描一遍的时间,记为Tij。
定义4对于给定的一组关键词和一个训练文本,如果关键词的最小长度为p,最大长度为q,p<=q,则它对应的一个有向图为由点集合{Np,Np+1,...,Nq,Nq+1}和有向边集合{Bij},p<=i<=q,p<j<=q+1,组成的一个有向图。
根据如上的定义,我们对给定的关键词集合建立了有向图,然后可以根据给定的训练文本求出每条边的权重,最后求出图的最短路径,即最优的分组。有向图上求解一个最短路径机制分为以下几步(1)、将规范化的关键词集合表示成如上所定义的有向图;(图5中的step1)(2)、计算每条边上的权重。在计算的过程中,对每一边使用设定的多种匹配方法计算,最终取最小值(扫描时间最短)最为这条边的权重,并记录此边使用的匹配方法;(图5中的step2)(3)、求出有向图的最短路径,得到最优分组,同时可以得到每一组对应的最佳匹配方法;(图5中的step3)(4)、将最终的结果存储在系统的配置文件中。配置文件格式同4.2.1中存储配置信息步骤中所述。(图5中的step4)附图4所示的是一个对给定关键词集合求解最优分组的示意图。图中假设关键词长度为2-7,则根据定义1,有向图有标号为2-8的7个节点,根据定义2每个节点有指向标号大于本身的有向边,根据定义3可以计算出每条边上的权重(图中没有具体标出),然后可以对此图求解它的最短路径。如果最短路径为2-6-8,则分组情况为长度为2-5的为一组,长度为6-7的为一组。
使用最短路径机制,设关键词长度的个数为n,即有向图中节点的个数n,则单纯计算有向图的最短路径的时间复杂度是O(n2)。如果考虑在计算边的权重过程中带有多个匹配方法的训练过程,设选取的匹配方法有m种,则最短路径机制的时间复杂度为O(n2*m)。作为系统的初始化阶段,这是可以接受的。
3.建立扫描自动机装置读取配置信息建立扫描自动机的装置根据系统的配置信息,读取分组的位置(长度分隔位置),然后将相应长度的关键词组成一组,并根据配置信息中记录的本组内最佳的扫描匹配自动机来构造自动机,最终,对原始的关键词集合构造成一个由多个自动机组成的自动机序列。
建立扫描自动机装置读取系统的配置,首先根据分组的情况,对原始的关键词集合进行分组,对每一个组,使用相同的数据结构,存储组内的关键词、关键词的长度、关键词原索引号等信息;然后再根据训练的情况,分别建立不同匹配方法的扫描自动机。系统存储每个扫描自动机的入口地址,以便后面的扫描装置直接使用。
关于怎样建立扫描自动机,不属于本发明的范围,此处不详细叙述。
4.扫描装置扫描装置读取外界输入的文本数据,这个数据可能是本地磁盘上存储的文件,也可以是网络上传输过来的各种数据。文本数据依次通过系统的各个扫描自动机,当有匹配成功的关键词出现时,系统将记录他们的索引号、出现位置等信息,可以在内存的相应机结构中统计这些信息,供外部的其它应用系统使用,也可以直接将他们存储在磁盘文件中。
5.积极效果采用以上的处理,我们可以提高大规模关键词匹配的速度。使用动态规划的方法对关键词进行分组,可以保证在系统设定的匹配速度评价函数下,这种分组是理论最优的;对于每个分组,因为组内关键词个数不同,最小长度也不相同,所以系统采用训练的方法找到最佳的匹配方法。使用最短路径机制,将寻找最优分组和最佳匹配方法结合起来,可以在实际系统运行中,保证分组实际运行速度最快。计算最优分组和寻找最佳匹配的过程时间复杂度稍差,但是因为它们都在系统的初始化部分做,所以不影响最终的扫描匹配速度。
分别使用两种不同的分组机制,我们可以保证在给定关键词集合和给定的训练文本下,得到一种扫描速度最快的分组。通过建立一个扫描自动机的序列,我们解决了大规模关键词匹配速度下降严重的问题。试验证明同样条件下,使用本发明的方法和系统,与传统的成熟的多关键词匹配方法(AC、WuManber、SBOM)相比,匹配速度是最快的单个匹配方法的2倍,是最慢的单个匹配方法的4倍。
权利要求
1.一种大规模关键词匹配的方法,包括步骤对关键词集合进行规范化;对关键词集合进行最优分组和寻找最佳匹配方法;建立一组扫描自动机;扫描,并返回结果。
2.根据权利要求1的大规模关键词匹配的方法,其特征在于,规范化步骤如下定义评价函数步骤;分组步骤;训练步骤;存储配置信息步骤。
3.根据权利要求2的大规模关键词匹配的方法,其特征在于,定义评价函数步骤如下根据对传统的关键词匹配算法的分析,关键词匹配时间在字符集一定的情况下,和关键词的数量成正比,和关键词的最小长度成反比,如果用F(K)表示文本通过关键词集合K的时间,用G(|K|)表示与关键词集合K的个数的影响关系,用Lmin(K)表示与关键词最小长度的影响关系,我们可以将它们的关系表述成F(K)=G(|K|)×Lmin(K)=|K|min(K)]]>(公式1)即匹配的时间与关键词个数的开根成正比,与最小长度(ming(K))成反比。
4.根据权利要求1或2的大规模关键词匹配的方法,其特征在于,分组步骤,第一种分组方法步骤如下使用动态规划的方法求解一个最优分组,先求解子问题,然后从这些子问题的解得到原问题的解,通常可以按照一下几个步骤进行a、找出最优解的性质,并刻画其结果特征;b、递归的定义最优值;c、以自底向上的方式计算出最优值;d、根据计算最优值时得到的信息,构造一个最优解;找到一种对集合K的分组,使F(K)值最小,最优解的性质见公式1的表述,为了求最优解,实质上,我们是要找一个使F(K)最小的分组,记对一个有序集合K的分组为F[1:n],如果第一个分组的位置在k处将集合分开,则有F[1:n]=F[1:k]+F[k+1:n],对F[k+1:n]可以依次类推,对于分组求解的递归式为F[k:n]=minG(p)k+F[k+p:n],1≤p≤n-kG(n-k+1)k,1≤k≤n]]>计算过程从F[n:n]开始计算,F[n-1:n],F[n-2:n],...,一直到F[1:n]为止,计算中,使用表来存储中间的计算结果F[k:n],利于后面计算的查找,同时,要使用数组position存储F[k:n]取值处的位置信息,回溯过程当F[1:n]的值得到时,计算过程结束,然后由position的值开始进行回溯得到最终解。
5.根据权利要求1或2的大规模关键词匹配的方法,其特征在于,分组步骤,第二种分组方法如下使用最短路径的方法求解最优分组,对于集合K,可以对它构造一个有向图,节点、有向边、有向图、边的权重定义如下点将规范化后的关键词集合中,相同长度的关键词形成一个分组,作为图的一个点,记为Ni,i表示此点的关键词长度;有向边从点Ni到Nj之间的有向边表示将长度为i到长度为j-1的所有关键词组成一组,记为Bij;有向图对于给定的一组关键词和一个训练文本,如果关键词的最小长度为p,最大长度为q,p<=q,则它对应的一个有向图为由点集合{Np,Np+1,...,Nq,Nq+1}和有向边集合{Bij},p<=i<=q,p<j<=q+1,组成的一个有向图;边上的权重上述有向图中,Bij上的权重表示由长度为[i,j]的关键词组成的扫描自动机通过训练文本的时间,记为Tij;由上面的定义,可以方便的构造一个集合K上的有向图,利用求解有向图上的最短路径方法,可以计算得到分组的位置。
6.根据权利要求2的大规模关键词匹配的方法,其特征在于,训练步骤如下分组完成之后,对于每个分组的关键词使用的匹配方法采用通过训练的方法得到,选用了BOM、WuManber、AC三种方法,训练文本的使用根据不通字符集大小生成的随机数据文件,对分组后的每一组依次使用训练选用匹配方法A1,A2,..,Ap中每一种,对训练文本进行扫描匹配,记录扫描完成所需要的时间Ti,1<=i<=p,最终计算{T1,T2,..,Tp}中的最小值Tj,则对此分组,使用第j种匹配方法,依次训练所有的分组,并记录每个分组的最佳匹配方法。
7.根据权利要求2的大规模关键词匹配的方法,其特征在于,存储配置信息步骤训练完成后,将分组结果和训练结果按照指定的格式写入系统的配置文件中,以便后面的建立扫描自动机装置读取使用,采用的是整数序列的方式写入配置文件,第一行表示分组结果,第二行表示匹配方法的训练结果,整数中间使用tab键分隔开。
8.一种大规模关键词匹配的系统,包括规范化关键词装置,用于对给定的大量关键词,按照长度进行个数的统计,然后按照长度排序;求解最优分组和最佳匹配方法的装置,用于使用两种机制求解最优分组一是采用动态规划机制得到最优分组,然后通过训练的方法得到每组的最佳匹配方法;另一种是使用最短路径机制直接得到分组和每一组的最佳匹配方法;此装置最终以配置文件的方式将分组和最佳匹配方法的结果存储在文件中;建立扫描自动机的装置,用于读取配置文件,采用训练后的结果,依次为每一个分组的关键词建立扫描自动机;扫描装置,用于使用建立扫描自动机的装置中建立的一组扫描自动机,对输入的文本进行扫描匹配,将结果存储在指定的内存结构或者外部文件中。
9.根据权利要求8的大规模关键词匹配系统,其特征在于,规范化装置是将给定的一组关键词,首先按照长度排序,可以从小到大或者从大到小,然后统计相同长度的关键词个数,定义一组关键词K={K1,K2,K3,...,Kn},对应的长度L={l1,l2,l3,...,ln},规范化的过程首先将K排序成为K’={K1’,K2’,K3’,...,Kn’},使得对应长度L’={l1’,l2’,l3’,...,ln’}满足l1’<=l2’<=l3’<=...<=ln’(或者是>=),然后对L’进行统计,计算相同长度的个数,得到统计值序列LNn1,n2,n3,...,nm.,其中,m是关键词的最大长度;ni,l<=i<=m表示长度为i的关键词的个数。
10.根据权利要求8的大规模关键词匹配系统,其特征在于,求解最优分组和最佳匹配方法的装置,对规范化后的关键词集合求解一个最优的分组,并且在每个分组上使用最适合的一种匹配方法,通过两种机制实现一是动态规划机制;一是最短路径机制。
11.根据权利要求8的大规模关键词匹配系统,其特征在于,读取配置信息建立扫描自动机的装置根据系统的配置信息,读取分组的位置,然后将相应长度的关键词组成一组,并根据配置信息中记录的本组内最佳的扫描匹配自动机来构造自动机,最终,对原始的关键词集合构造成一个由多个自动机组成的自动机序列。
12.根据权利要求8的大规模关键词匹配系统,其特征在于,扫描装置读取外界输入的文本数据,数据可能是本地磁盘上存储的文件,也可以是网络上传输过来的各种数据,文本数据依次通过系统的各个扫描自动机,当有匹配成功的关键词出现时,系统将记录他们的索引号、出现位置信息,可以在内存的相应机结构中统计这些信息,供外部的应用系统使用,也可以直接将他们存储在磁盘文件中。
全文摘要
本发明提供针对大规模关键词匹配的方法和系统。按照所提供的方法和系统,首先将给定关键词集合进行规范化,在规范化的关键词集合(也可以直接在原始关键词集合上)上求解一个最优分组和组内最佳匹配方法,这个过程可以使用两种机制一是使用动态规划的方法计算出一个最优分组,依照此结果将给定的关键词集合划分成若干个组;然后,针对每一个组,通过训练的方式得到一个最佳的匹配方法;一是通过训练建立一个边上带权重的有向图,求解此图的最短路径,得到最优分组和组内最佳匹配方法;然后对所有的组,使用训练的结果依次构造扫描自动机,形成一个扫描自动机序列,使输入的待扫描文本依次通过,得到最终的扫描结果。
文档编号G06F17/30GK1648901SQ200510007089
公开日2005年8月3日 申请日期2005年2月3日 优先权日2005年2月3日
发明者刘萍, 谭建龙, 程学旗 申请人:中国科学院计算技术研究所