[发明专利]一种基于编码关联的多模式匹配算法及系统有效
申请号: | 201210113672.4 | 申请日: | 2012-04-10 |
公开(公告)号: | CN102799600B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 朱永强 | 申请(专利权)人: | 成都网安科技发展有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙)11371 | 代理人: | 吴开磊 |
地址: | 610092 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 编码 关联 模式 匹配 算法 系统 | ||
技术领域
本发明属于文本内容处理与查找技术领域,特别涉及一种基于编码关联的多模式匹配算法及系统。
背景技术
电子文档,伴随着信息技术的发展与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继续进行匹配,直到扫描完全部文件内容。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都网安科技发展有限公司,未经成都网安科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210113672.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种新型墙体防水内撑杆
- 下一篇:一种纳米铝塑复合板