关键词快速过滤方法

文档序号:6590448阅读:916来源:国知局
专利名称:关键词快速过滤方法
技术领域
本发明具体涉及一种关键词快速过滤方法。
背景技术
在计算机的研究领域中,关键词匹配是最早出现的计算机应用之一,其解决的问题是快速判断某一数据块中是否包含关键词集合中的某一或某些关键词。关键词匹配技术广泛应用于文本处理、网络内容分析、入侵检测、信息检索和病毒检测等领域。近年来随着网络技术的飞速发展和用户的剧烈增长,网络传输数据量越来越大,网络用语越来越趋于多样化。如何快速的屏蔽用户的不当言论、过滤用户发表内容中的非法词汇已成为关键词匹配领域的一项重大难题。在网络应用的早期,诞生了自动机、丽(Wu-Manber算法)等关键词匹配算法。自动机算法是一种最直接的方法,其将每一个关键词都与待匹配文本进行一次匹配,复杂度在最坏情况下需要对待匹配文本进行N(关键词个数)次扫描和匹配。WM算法是在1994年由Sun Wu和Udi Manber提出的另一种快速而有效的多模式匹配算法。WM (Wu-Manber算法)算法利用了多级匹配和散列的思想,利用SHIFT (移动表),HASH (哈希)和PREFIX (前缀表)三个在输入模式集合上预先建立的哈希表,以及BM算法中跳跃的思想来避免大量不必要的匹配测试。通过这两个技术,WM算法在实际的应用中表现出了很高的效率。WM算法是精确匹配算法,主要适用于待匹配文本是阿拉伯语系、拉丁语系的环境。在中文领域,文本的最小单元是单个汉字,且汉字与汉字之间可任意组词,词汇量相对于任何语言都是最庞大的。这就需要对关键词匹配算法有更精确的要求,从而使得现有的关键词匹配算法在实际应用中不能达到令人满意的效率,特别是进行多关键词的精确匹配,性能尤其差。

发明内容
本发明所要解决的技术问题在于提供一种关键词快速过滤方法,不仅克服了传统模式下关键词匹配效率低的弊端,同时解决了现有的多模式关键字匹配针对汉字领域无法发挥高效特点的问题。本发明是通过以下技术方案解决上述技术问题的:一种关键词快速过滤方法,包括关键词索引方法和关键词匹配方法,
所述关键词索引方法包含以下内容:
步骤10:构建一哈希表Hl,将预设的关键词集合中的各关键词的哈希值存储于哈希表
Hl ;
步骤20:构建哈希表H2和哈希表H3,将所述关键词集合中的各关键词的首字符哈希值存储于哈希表H2,将所述关键词集合中的各关键词的尾字符哈希值存储于哈希表H3中;步骤30:查询所述关键词集合中字符数最多的关键词,并记录该关键词的字符长度L ;所述关键词匹配方法包含以下内容: 步骤40:构造一与所述字符长度L相等长度的线性表,得到首字符列表;
步骤50:将待匹配文本从前往后扫描一字符C ;
步骤60:判断字符C是否属于所述哈希表H2中的各关键词的首字符之一,若是,则将字符C及其在待匹配文本的位置地址存储于所述首字符列表匕,并执行步骤70 ;若否,执行步骤70 ;
步骤70:判断字符C是否属于哈希表H3中的各关键词的尾字符之一,若是,则执行步骤90 ;若否,则执行步骤80 ;
步骤80:将待匹配文本继续往后扫描一个字符C,判断字符C是否为空,若是,结束流程;若否,则执行步骤60;
步骤90:将所述首字符列表中的字符从下向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100 ;
步骤100:计算字符B与字符C在待匹配文本中的位置地址差I,判断是否I ( L,若是,则执行步骤110 ;若否,则清空所述首字符列表,并执行步骤80 ;
步骤110:提取待匹配文本中字符B与字符C之间的字符串S,计算所述字符串S的哈希值Hs,判断哈希值Hs是否属于所述哈希表Hl中各关键词的哈希值之一,若是,则报告一次成功的关键词匹配事件,并清空首字符列表,然后返回步骤80 ;若否,则进入步骤120 ;步骤120:将所述首字符列表1\中的字符继续向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100。进一步地,所述步骤10中的关键词集合中的各关键词的哈希值计算方法如下: 步骤一:将关键词的哈希码Hd设为O ;
步骤二:对所述关键词从后往前扫描一个字符D,
步骤三:判断所述字符D是否为空,若是,则结束流程;若否,则进入步骤四;
步骤四:将所述Hd做左移四位运算,再将所述字符D哈希值与Hd作异或运算,运算后的结果作为Hd的新值;继续提取下一个字符D,重复步骤三和步骤四,直至D为关键词的最后一个字符,最后一个字符的运算结果即为该关键词的哈希值。本发明的有益效果在于:本发明实现了文本内容的敏感词过滤,既能够满足效率的要求,同时又降低了开发实现难度。
具体实施例方式一种关键词快速过滤方法,包括关键词索引方法和关键词匹配方法,
所述关键词索引方法包含以下内容:
步骤10:构建一哈希表H1,将预设的关键词集合中的各关键词的哈希值存储于哈希表
Hl ;
步骤20:构建哈希表H2和哈希表H3,将所述关键词集合中的各关键词的首字符哈希值存储于哈希表H2,将所述关键词集合中的各关键词的尾字符哈希值存储于哈希表H3中;当各关键词的首字符存在相同的字符时,则不重复记录,当各关键词的尾字符存在相同的字符时,亦不重复记录。步骤30:查询所述关键词集合中字符数最多的关键词,并记录该关键词的字符长度L; 所述关键词匹配方法包含以下内容:
步骤40:构造一与所述字符长度L相等长度的线性表,得到首字符列表1\ ;构造一个与所述字符长度L相等长度的线性表,当存入的字符长度超过长度L时则移除最早添加的字符。步骤50:将待匹配文本从前往后扫描一字符C ;
步骤60:判断字符C是否属于所述哈希表H2中的各关键词的首字符之一,若是,则将字符C及其在待匹配文本的位置地址存储于所述首字符列表匕,并执行步骤70 ;若否,执行步骤70 ;
步骤70:判断字符C是否属于哈希表H3中的各关键词的尾字符之一,若是,则执行步骤90 ;若否,则执行步骤80 ;
步骤80:将待匹配文本继续往后扫描一个字符C,判断字符C是否为空,若是,结束流程;若否,则执行步骤60;
步骤90:将所述首字符列表中的字符从下向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100 ;
步骤100:计算字符B与字符C在待匹配文本中的位置地址差I,判断是否I ( L,若是,则执行步骤110 ;若否,则清空所述首字符列表,并执行步骤80 ;
步骤110:提取待匹配文本中字符B与字符C之间的字符串S,计算所述字符串S的哈希值Hs,判断哈希值Hs是否属于所述哈希表Hl中各关键词的哈希值之一,若是,则报告一次成功的关键词匹配事件,并清空首字符列表,然后返回步骤80 ;若否,则进入步骤120 ;步骤120:将所述首字符列表1\中的字符继续向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100。所述关键词集合中的各关键词的哈希值计算方法如下:
步骤一:将关键词的哈希码Hd设为O ;
步骤二:对所述关键词从后往前扫描一个字符D,
步骤三:判断所述字符D是否为空,若是,则结束流程;若否,则进入步骤四;
步骤四:将所述Hd做左移四位运算,再将所述字符D哈希值与Hd作异或运算,运算后的结果作为Hd的新值;继续提取下一个字符D,重复步骤三和步骤四,直至D为关键词的最后一个字符,最后一个字符的运算结果即为该关键词的哈希值。为了使得构造的哈希表具有较好的平衡性,需要为哈希表构造一个均匀性较好的哈希映射函数F,并且所构造的哈希映射函数F应具有较高的计算效率,以减少哈希表的索引开销。对于关键词之间出现的哈希值冲突,本发明采用链表法来解决,其原理为:将哈希值相同的关键词串接到一个链表中,链表中的元素按字典升序排序,再将链表作为值域存入哈希表Hl。所述字符串S的哈希值Hs计算方法与上述关键词的哈希值计算方法一致。由于本发明采用一种结束符触发关键词匹配算法,对于待匹配文本AB⑶EJgSA、B、C、D都属于首字符集合即哈希表H2,如果E是结束符,则会检索ABCDE、BCDE、CDE、DE、E。如果采用从后往前计算哈希值的方法,那就可以利用E的哈希值以及字符D计算DE的哈希值,而不需要再次对E字符进行计算,因此该散列函数构造关键词的哈希值具有较高的效率。
为使本发明更好理解,特举例如下:
定义P为关键词集合,表示为P [北京,上海,厦门,呼和浩特,海口,成都,宜昌,盐城]。定义T为待匹配文本,表示为T[厦门和上海都是宜居的旅游城市]
按照本发明方法的模式匹配过程如下:
首先,构建哈希表:
Hl=[309719:北京;432506:上海;593190:厦门;122676668:呼和浩特;348999:海口 ;617920:成都;408412:宜昌;330288:盐城];
Η2=[21271:北;19978:上;21414:厦;21628:呼;28023:海;25104:成;23452:宜;30416:盐];
Η3=[20140:京;28023:海;38376:门;29305:特;21475: 口 ;37117:都;26124:昌;22478 -M ];
最长关键词为[呼和浩特],所以L=4。构建一个长度为4的线性表即首字符列表,用于存储匹配成功的首字符。然后,扫描待匹配文本T的第一个字符[厦],可见[厦]属于首字符集合即哈希表H2,在待匹配文本的位置地址为1,将其存入1\得1\=[(厦,I)];
扫描下一个字符[门],[门]属于尾字符集合即哈希表H3,提取[门]到[厦]之间的字符串[厦门],[厦门]的长度为2,小于L。计算[厦门]的哈希值为593190,从Hl中获取相同哈希值的关键词为[厦门],匹配成功,清空匕,Pl=[]。扫描下一个字符[和],[和]既不属于哈希表H2也不属于哈希表H3,跳过匹配步骤。扫描下一个字符[上],判断[上]属于关键词的首字符,将[上]及其在待匹配文本的位置地址4存入Pl,Pl=[(上,4)]。扫描下一个字符[海],首先判断[海]属于关键词的首字符,将[海]及其在待匹配文本的位置地址5存入匕,Pl=[(上,4);(海,5)];再判断[海]属于哈希表H3,提取[海]至上一个扫描到的首字符[海]之间的字符串[海],计算[海]的哈希值为28023,从Hl没有匹配到相同的关键词;继续提取[海]至上一个扫描到的首字符[上]之间的字符串[上海],计算[上海]的哈希值为432506,从Hl中获取相同哈希值的关键词为[上海],匹配成功。清空PL,PL=[]。扫描下一个字符[都],判断[都]属于哈希表H3,此时&为空,跳过匹配步骤。当扫描到[宜]时,判断[宜]属于哈希表H2,将[宜]及其在待匹配文本的位置地址8存入PL,PL=[(宜,8)]。继续往后扫描到[城]时,判断[城]属于哈希表H3,提取[城]至上一个扫描到的首字符[宜]之间的字符串[宜居的旅游城],由于该字符串的长度为6,大于L,因此直接跳过匹配步骤。如此反复,直至整个待匹配文本扫描结束。本发明建立哈希表是为了消除通过遍历比较来搜索关键词带来的时间浪费,在搜索匹配的过程中,本发明依据关键词的哈希值来快速判断是否匹配成功。本发明对关键词集合中的各个关键词进行哈希编码,然后通过哈希编码进行关键词匹配,其效率高于普通的多模式关键词匹配算法。本发明采用的是结束符触发关键词匹配,以实现文本扫描过程中当前文本不与任何关键词匹配的快速判定,并且只有当首、尾字符一致时才通过哈希值匹配关键词,从而大大加快了文本扫描和匹配速度。
权利要求
1.一种关键词快速过滤方法,其特征在于:包括关键词索引方法和关键词匹配方法, 所述关键词索引方法包含以下内容: 步骤10:构建一哈希表H1,将预设的关键词集合中的各关键词的哈希值存储于哈希表Hl ; 步骤20:构建哈希表H2和哈希表H3,将所述关键词集合中的各关键词的首字符哈希值存储于哈希表H2,将所述关键词集合中的各关键词的尾字符哈希值存储于哈希表H3中;步骤30:查询所述关键词集合中字符数最多的关键词,并记录该关键词的字符长度L ;所述关键词匹配方法包含以下内容: 步骤40:构造一与所述字符长度L相等长度的线性表,得到首字符列表; 步骤50:将待匹配文本从前往后扫描一字符C ; 步骤60:判断字符C是否属于所述哈希表H2中的各关键词的首字符之一,若是,则将字符C及其在待匹配文本的位置地址存储于所述首字符列表匕,并执行步骤70 ;若否,执行步骤70 ; 步骤70:判断字符C是否属于哈希表H3中的各关键词的尾字符之一,若是,则执行步骤90 ;若否,则执行步骤80 ; 步骤80:将待匹配文本继续往后扫描一个字符C,判断字符C是否为空,若是,结束流程;若否,则执行步骤60; 步骤90:将所述首字符列表中的字符从下向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100 ; 步骤100:计算字符B与字符C在待匹配文本中的位置地址差I,判断是否I ( L,若是,则执行步骤110 ;若否,则清空所述首字符列表,并执行步骤80 ;步骤110:提取待匹配文本中字符B与字符C之间的字符串S,计算所述字符串S的哈希值Hs,判断哈希值Hs是否属于所述哈希表Hl中各关键词的哈希值之一,若是,则报告一次成功的关键词匹配事件,并清空首字符列表,然后返回步骤80 ;若否,则进入步骤120 ;步骤120:将所述首字符列表1\中的字符继续向上提取一字符B,判断字符B是否为空,若是,则执行步骤80 ;若否,则执行步骤100。
2.如权利要求1所述的关键词快速过滤方法,其特征在于:所述步骤10中的关键词集合中的各关键词的哈希值计算方法如下: 步骤一:将关键词的哈希码Hd设为O ; 步骤二:对所述关键词从后往前扫描一个字符D, 步骤三:判断所述字符D是否为空,若是,则结束流程;若否,则进入步骤四; 步骤四:将所述Hd做左移四位运算,再将所述字符D哈希值与Hd作异或运算,运算后的结果作为Hd的新值;继续提取下一个字符D,重复步骤三和步骤四,直至D为关键词的最后一个字符,最后一个字符的运算结果即为该关键词的哈希值。
全文摘要
本发明提供了一种关键词快速过滤方法,包括关键词索引步骤和关键词匹配步骤;本发明对关键词集合中的各个关键词进行哈希编码,然后通过哈希编码进行关键词匹配,其效率高于普通的多模式关键词匹配算法;本发明采用的是结束符触发关键词匹配,以实现文本扫描过程中当前文本不与任何关键词匹配的快速判定,并且只有当首、尾字符一致时才通过哈希值匹配关键词,从而大大加快了文本扫描和匹配速度。
文档编号G06F17/30GK103186669SQ20131009243
公开日2013年7月3日 申请日期2013年3月21日 优先权日2013年3月21日
发明者余小峰, 程行荣, 林贺辉, 时宜 申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1