一种基于编码关联的多模式匹配算法及系统技术方案

技术编号:8022403 阅读:266 留言:0更新日期:2012-11-29 04:38
本发明专利技术公开了一种基于编码关联的多模式匹配算法及系统。所述系统包括:关键字组输入模块,用于获取匹配关键字集合;Goto函数生成模块,用于生成辅助结构Goto函数;FailedJump函数生成模块,用于生成辅助结构FailedJump函数;匹配执行模块,用于读取搜索对象并对其进行多关键字匹配。本算法的特色在于:通过字符拆分,优化了Wang算法在Unicode编码、中文语义环境下的空间存储结构;通过利用编码关联,消除了Wang算法在编码转换后的错位匹配,并提升了Wang算法的最大跳转值,从而提升了当前编码环境下Wang算法的运行速度。本发明专利技术算法可广泛应用于对以Unicode为编码方式的关键信息扫描定位、各类电子文档中的关键字匹配检查等计算机产品中。

【技术实现步骤摘要】
一种基于编码关联的多模式匹配算法及系统
本专利技术属于文本内容处理与查找
,特别涉及一种基于编码关联的多模式匹配算法及系统。
技术介绍
电子文档,伴随着信息技术的发展与PC电脑的普及,已成为当今社会中信息的重要载体。由于电子文档的大量应用与广泛普及,对于电子文档的相关信息处理技术,如电子文档中指定关键字的索引建立、一些涉密文件的指定关键字检查等,变的愈发重要。多模式匹配算法作为一种快速的在目标内容段中寻找指定关键字的算法,是对电子文档进行关键字信息处理的核心技术,所使用多模式匹配算法的空间性能,将直接决定整个电子文档关键信息处理系统的可行性,而所使用多模式匹配算法的时间性能,将直接决定整个电子文档关键信息处理系统的执行效率。对于电子文档的关键字信息处理,第一步是解析并提取出电子文档中的有效内容字段,由于常用的电子文档,如微软Word2003系列中的doc、ppt、xls等类型文件,对于中文字符,都使用Unicode方式对其进行编码,且主流的电子文档内容解码器,大部分也采用Unicode编码作为其提取信息后的编码载体,因此,直接使用获取的Unicode编码作为下一步匹配中模式串的编码环境,可以避免繁琐而耗时的编码类型转换(如果将Unicode编码通过API函数转换为ASCII或UTF8等编码,其时间消耗一般都大于对当前文本匹配串进行一次多模式匹配的时间消耗。),在时间、空间与稳定性上,都是较好的选择。综上,对于电子文档的中文关键字查找,其最常见而且最有效的编码环境,便是Unicode编码环境,因此有必要针对于电子文档关键字查找中的Unicode编码环境,针对性的设计更加实用而高效的多模式匹配算法,以实现对于电子文档中关键字处理的可行性与高效性。多模式匹配算法作为计算机的基本算法之一,经历了长时间的发展,先后产生了多种巧妙的算法,如A-C算法、W-M算法、Wang算法等,这些算法的设计思路虽然各不相同,但都遵循着算法领域的通用规律,即或用空间消耗来换取时间效益,或用时间消耗来换取空间效益。以下将分别介绍上述三种算法。A-C算法通过使用输入关键字集合构造自动状态机,来实现对多个关键字的并行匹配,参见图1,为使用关键字组:{arda,apple,care}构造的自动状态机。除了利用自动状态机来进行匹配串的字符状态转换,A-C算法还分别使用Failed函数与Output函数,来分别进行当字符失配时的跳转状态确定与匹配信息的输出与记录,两个函数的功能与生成方法分别如下:1.失效函数(Failed函数):Failed(now)=Next,标识着在now节点发生失配的情况下,自动状态机的下一个转换状态Next。这个状态节点的特征是:从此状态节点向上直到根节点(状态0)所经历的所有输入字符路径,与从产生失效状态的节点now向上所经历的输入字符串或其子串完全相同。如果此类节点有多个,则选择这些节点中深度最大的节点。如果不存在满足条件的状态节点,则失效函数指向0状态节点。2.输出函数(Output函数):用于当某个关键字匹配完成后,输出当前的匹配信息以及其它的一些标示码,需要注意的是,如果关键字集合中元素间存在着包含与被包含关系,则应在到达输出状态时同时输出当前的匹配关键字与其所包含的子关键字信息,以防止输出遗漏。W-M算法则在初始化阶段,生成三个辅助表:SHIFT[h]表、HASH[h]表与PREFIX表。其中,SHIFT[h]表用于确定当前匹配窗口内Length个字符集合的哈希值h所对应的最大跳转距离;HASH[h]表标示关键字中最后Length个字符的哈希值为h的所有关键字的链表,是当SHIFT[h]值为0时的所有可能发生匹配的关键字的集合;而PREFIX表由各个关键字的一定长度的前缀字符的哈希值生成,用于进一步比较过滤当前窗口下具有相同后缀HASH值的关键字,以减少实际比较的次数。W-M算法通过上述三个辅助表,来实现多模式下关键字的快速跳转。W-M算法的流程步骤如下所示:1.计算当前扫描窗口的最后Length个字符的哈希值h。2.如果SHIFT[h]>0,则向后跳跃SHIFT[h],并转第1步继续;否则进行第3步。3.计算当前匹配窗口的前缀的散列值prefix_hash,排除部分局部匹配的情况。4.对于HASH[h]指向的列表的每个字符串,依次从后向前匹配当前窗口内字符,检查是否存在匹配。5.将当前窗口向后移动一个字符,转1继续进行匹配,直到扫描完全部文件内容。Wang算法属于A-C算法族,也是通过构造自动状态机来实现多模式匹配的字符状态转换,其在自动状态机构造上与A-C算法的实现相似,但是为A-C算法自动状态机的逆向形式,同样以模式串组:{arda,apple,care}为例,Wang算法构造的自动状态机参见图2。除了构造反向自动状态机,Wang算法还生成了利用了失配坏字符思想的失效跳转函数FailedJump,用于当失配发生时,对算法进行辅助的快速跳跃。Wang算法的比较方式为从当前窗口的最右边,依次向左进行比较,如发生匹配,则输出或者记录匹配信息,如发生字符失配,则考察Wang算法当前窗口的最右边字符的下一个字符,读取此字符在FailedJump函数中的对应跳转值,进行快速的跳转。参见图3,为Wang算法跳转规则的公式表达形式,其中s为当前失配字符距当前模式串最左端的距离,z为匹配串长度,minlen为模式串组中的最小模式串长度。分析上述三种算法,可以看到,Wang算法充分使用了坏字符思想,其可获取的最大跳转距离为minlen+1(minlen为模式串组中最短模式串长度),而W-M算法最大跳转距离为minlen,A-C算法由于每次只读入一个字节,且没有辅助的字符跳转函数,因此其跳转距离恒为1。考虑到关键信息检索环境为中文环境,由于中文环境的大字符集特点,失配的情况将较多出现,Wang算法取得其最大跳转值的几率相对较高,其平均跳转距离期望值也要大于W-M算法与A-C算法。因此其平均检索速度在中文语义下理论上应高于W-M算法与A-C算法,是一种更适用于中文语义环境下的多模式匹配算法。由于Wang算法使用自动状态机来实现多模式匹配得状态转移。可以计算,在Unicode编码环境下,每个自动状态机的节点,都需要存放256*256个下一个状态的信息,如果以32位大小的指针来存储这些信息的话,则每个节点需要占用4*256*256=261244byte,大约是0.25M的空间,设模式串的个数为100,模式串的平均长度为10,则此自动状态机的节点所占用的空间将膨胀为:Space=100*10*0.25M=250M可见,此空间消耗已经相当惊人,由于空间消耗过于严重,在Unicode编码的大字符集环境下,直接使用Wang算法已经失去了实用性与可行性。而如果对从文档中提取的内容字段或从内容提取工具提取的内容字段进行编码转换,将其转换为单字节编码方式的ASCII编码或UTF8编码,又将额外的带来更高的时间消耗与空间复杂性,使算法的时间效益降低,流程变的复杂。一种解决Wang算法空间膨胀问题的有效而巧妙的方法是使用编码字符拆分,即将文件内容段的每个以Unicode编码方式编码的字符拆分为两个相邻的编码范围在0至255本文档来自技高网...
一种基于编码关联的多模式匹配算法及系统

【技术保护点】
一种Unicode编码环境下的建立自动状态机与失效跳转函数的方法,其特征在于,所述方法包括:根据预设的关键字分隔符,分割输入的多关键字组,得到分割后的子关键字集合;根据所得关键字组,进行字符的字节拆分,并反向生成状态转移函数Goto函数;根据所得关键字组,进行字符的字节拆分,并使用每个码值拆分后得到的低位字节,生成失效跳转函数FailedJump函数。

【技术特征摘要】
1.一种应用于电子文档中多模式匹配的方法,其特征在于,所述方法包括:根据预设的关键字分隔符,分割输入的多关键字组,得到分割后的子关键字集合;根据所得关键字组,进行字符的字节拆分,并反向生成状态转移函数Goto函数;根据所得关键字组,进行字符的字节拆分,并使用每个码值拆分后得到的低位字节,生成失效跳转函数FailedJump函数,具体为:依次将关键字集合中元素的各个字符码值进行拆分,生成拆码模式串;构造长度为当前编码范围大小的失效跳转表FailedTable,FailedTable表的初始值为当前关键字模式串组中模式串拆分前的最小模式串长度minLen的两倍再加二,即2minLen+2;依次计算各个拆码模式串的偶数位字符,即原来以Unicode编码的字符码值的低半位字符的对应跳转值,并用此跳转值重写FailedTable表中角标与当前拆码模式串的码值相等位置的跳转值,如FailedTable表同一位置值有多个对应的拆码模式串跳转值,则选取其中跳转值最小者,替换FailedTable表中对应位置的值。2.如权利要求1所述的应用于电子文档中多模式匹配的方法,其特征在于,根据预设的关键字分隔符,分割输入的多关键字组,得到分割后的子关键字集合,具体为:以Unicode编码为编码方式,设定指定的分隔符,依次以分隔符对同样以Unicode编码为编码方式的输入多关键字组进行划分,以得到待查找的关键字的集合。3.如权利要求1所述的应用于电子文档中多模式匹配的方法,其特征在于,根据所得关键字组,进行字符的字节拆分,并反向生成状态转移函数Goto函数,具体为:依次输入关键字集合中各个关键字,将每个关键字字符的各个码值进行拆分,即将一个以Unicode为编码方式的中文汉字,看做两个编码范围在0至255之间的单字节,分割关键字编码后,得到编码范围缩小,同时关键字长度加倍的拆码模式串,再使用此拆码模式串,以此模式串最后字节为起点,反向输入自动状态机,以生成状态转移函数Goto函数。4.如权利要求1所述的应用于电子文档中多模式匹配的方法,其特征在于,根据所得关键字组,进行字符的字节拆分,并使用每个码值拆分后得到的低位字节,生成失效跳转函数FailedJump函数,具体为:分别输入拆码模式串组中各拆码模式串,以拆码模式串中每个原Unicode编码的低半位字符的对应跳转值,替换FailedTable表中角标与当前拆码模式串的码值相等位置的跳转值,拆码模式串中每个码值对应的跳转值计算方程为:JumpLen=PatterLen–i,其中JumpLen为当前码值对应的跳转值,P...

【专利技术属性】
技术研发人员:朱永强
申请(专利权)人:成都网安科技发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1