一种敏感词匹配方法和系统的制作方法

文档序号:6427593阅读:159来源:国知局
专利名称:一种敏感词匹配方法和系统的制作方法
技术领域
本发明涉及互联网技术领域,特别是涉及一种敏感词匹配方法和系统。
背景技术
随着互联网信息的爆炸式发展,需要对互联网中的文本信息中的特定敏感词进行匹配过滤。目前公知的敏感词汇匹配技术一般采用敏感词库中的词条向待判定信息全文匹配的方式进行的,具体为把敏感词库中的所有词条依次向待判定信息进行比对,如果词条被完全包含在待判定信息中,则认为命中。这样的匹配技术存在的问题是需要把敏感词库中的每一个词条都依次与待判定信息进行从头到尾的尝试匹配,即需要遍历一遍敏感词库以及反复遍历待判定信息,即需要反复进行回溯。此外,在前述方案的基础上有以下的改进方案采用逐字匹配的方式进行匹配 在待判定信息中从头开始逐字拿出来与敏感词库中的词条的首字进行匹配,如果首字匹配成功,则将此词条的后续部分与待判定信息的后续部分进行匹配,如果全部匹配则认为命中。这样的方案虽然较第一种方案得到的改进,但依旧存在以下问题1、虽然待判定信息中不需要像方案一那样遍历(如果首字不命中,可直接开始判断下一个字),但是,在首字命中后仍然需要对首字的后续部分进行反复比较,还是存在回溯问题,所以性能存在问题。

发明内容
本发明提供了一种敏感词匹配方法,该方法能实现敏感词的快速匹配,提高了性能。本发明还提供了一种敏感词的匹配系统,该系统能实现敏感词的快速匹配,提高了性能。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种敏感词匹配方法,根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并保存这些DFA图,则对于给定的待判定信息,匹配敏感词的方法包括步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中, 则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息,如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点, 则确定待判定信息中存在敏感词汇,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。本发明还公开了一种敏感词匹配系统,该系统包括DFA图生成模块、存储模块、 匹配模块,其中DFA图生成模块,用于根据敏感词库中的所有敏感词汇生成多个确定有限自动机 DFA图,并将这些DFA图保存到存储模块中;存储模块,用于保存DFA图;匹配模块,用于根据如下步骤对给定的待判定信息进行敏感词匹配步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中, 则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息,如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点, 则确定待判定信息中存在敏感词汇,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。由上述可见,本发明这种根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并保存这些DFA图,则对于给定的待判定信息,从首字开始,逐字从DFA图的入口开始匹配,如果与节点匹配,则该节点继续往后走,直到到达该DFA图的出口,如果待判定信息能到达出口,则说明匹配敏感词命中的技术方案,由于对判定信息只遍历一遍,不需要反复遍历或者反复尝试匹配,不存在回溯问题,因此能实现敏感词的快速匹配,提高了性能。


图1是本发明实施例中的DFA图的一个示意图;图2是本发明实施例中的一种敏感词匹配系统的组成结构示意图。
具体实施例方式本发明的核心思想是采用确定有限自动机(DFA,Deterministic Finite Automation),对敏感词库中的所有词汇进行预处理和折叠,生成DFA图,待判定信息中从第一个字开始,逐字从DFA的入口开始匹配,由入口通过连接边进入后续节点,如果与节点匹配,则由该节点继续往后走,直到到达出口,如果有待判定信息能走到出口,说明已匹配, 则命中。为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在本发明的方案中,首先根据敏感词库中的所有敏感词汇生成多个DFA图,并保存这些DFA图。具体过程如下扫描敏感词库中的所有敏感词汇,对于每个当前敏感词汇查看是否存在以当前敏感词汇的首字为入口的DFA图;如果不存在,则创建以当前敏感词汇的首字为入口的DFA图,在该DFA图中当前敏感词汇中的每个字对应一个节点,各节点的排序与各个对应的字在当前敏感词汇中的排序相同,当前敏感词汇中的最后一个字所对应的节点为该DFA图的出口节点;如果存在,则依次判断当前敏感词汇首字之后的后续各字是否也在该DFA图中存在对应的节点,对于没有对应节点的字以及其后续的字,在该DFA图中添加对应的节点,并将当前敏感词汇中的最后一个字所对应的节点为该DFA图的又一个出口节点。举例说明假设有“法国女人”、“法国货”和“法西斯”这三个敏感词汇,则所生成的DFA图如图1所示。图1是本发明实施例中的DFA图的一个示意图。参见图1,该DFA图的生成过程为首先取出“法国女人”,由于还不存在以“法”为入口的DFA图,因此先建立以“法”为入口的DFA图,然后依次生成与“国”、“女”、“人”对应的节点,并按顺序连接,其中节点“人” 为出口节点,其下一跳为“Q”;然后取出“法国货”,由于“法”和“国”两个节点已存在,因此在“国”后建立一个节点“货”,并且该节点的下一跳为“Q”;再取出“法西斯”,由于节点“法” 已存在,则在“法”之后依次建立节点“西”和“斯”,“斯”的下一跳为“Q”。这样就生成了以 “法”字为入口的DFA图。在该DFA图中,“S”的下一跳为入口节点,“Q”的上一跳为出口节点ο此外,还在每个DFA图的相邻两个节点之间的连线边上设置去噪规则。这些去噪规则可以根据实际情况选用现有的一些去噪方法。具体可以按照定义的特殊字符库,处理 DFA图各个节点间的边,构成包含去噪能力的DFA图。例如,图1中的各个边上a、b表示在这些边上设置的去噪规则。例如去噪规则可以是忽略应为字母,标点符号。根据上述方案,将敏感词库中的所有敏感词汇都转化为对应的DFA图,并保存这些DFA图后,对于给定的待判定信息,进行敏感词匹配的过程如下步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中, 则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,根据所述上一个字所在的节点与其下一节点之间的连线边上去噪规则判断当前字是否应该被忽略,是则直接执行步骤3, 否则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息,如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点, 则确定待判定信息中存在敏感词汇,将待判定信息在该命中的DFA图中的路径所对应的敏感词汇作为匹配到的敏感词汇进行输出,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。下面举例对上述匹配过程进行说明设当前的待判定信息为“法法N国N货”,则匹配过程如下1.先取出首字“法”,发现存在如图1所示的以“法”为入口的DFA图,则记录该图 1以及“法”字为入口的第一个节点的信息,称为记录1 ;2.取出第二个“法”字,发现存在如图1所示的以“法”为入口的DFA图,则记录该图1以及“法”字为入口的第一个节点的信息,称为记录2 ;在记录1中,上一个“法”字有命中并记录的DFA图(即图1),则根据图1中的入口的第一个节点与其下一个节点(有两个)之间的边上的去噪规则判断当前字是否被忽略, 结果是不能忽略,则将该第二个“法”字与下一节点(节点“国”和节点“西”)进行匹配,结果是不匹配,因此删除记录1。3、取出“N”,则根据去噪规则,N被忽略。4、取出“国”,假设不存在以“国”为入口的DFA图;在记录2中,“国”之前“法”字有命中并记录的DFA图(即图1),则根据图1中的入口的第一个节点与其下一个节点(有两个)之间的边上的去噪规则判断当前字是否被忽略,结果是不能忽略,则将“国”字与下一节点(节点“国”和节点“西”)进行匹配,结果是命中,因此在记录1中添加“国”字在图1中的位置信息。5、取出“N”,则根据去噪规则,N被忽略。6、取出“货”,假设不存在以“货”为入口的DFA图;在记录2中,“货”之前“国”字有命中并记录的DFA图(即图1),则根据图1中的节点“国”与其下一个节点(有两个)之间的边上的去噪规则判断当前字是否被忽略,结果是不能忽略,则将“货”字与下一节点(节点“货”和节点“女”)进行匹配,结果是命中,并且节点“货”在该命中的DFA图中为出口节点,则确定待判定信息中存在敏感词汇,将待判定信息在该命中的DFA图中的路径所对应的敏感词汇,即“法国货”作为匹配到的敏感词汇进行输出。图2是本发明实施例中的一种敏感词匹配系统的组成结构示意图。如图2所示, 该系统包括DFA图生成模块201、存储模块202、匹配模块203,其中DFA图生成模块201,用于根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并将这些DFA图保存到存储模块中202 ;存储模块202,用于保存DFA图;匹配模块203,用于根据如下步骤对给定的待判定信息进行敏感词匹配步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中, 则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息,如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点, 则确定待判定信息中存在敏感词汇,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。
在图2所示的系统中,所述DFA图生成模块201,用于扫描敏感词库中的所有敏感词汇,对于每个当前敏感词汇查看是否存在以当前敏感词汇的首字为入口的DFA图;如果不存在,则创建以当前敏感词汇的首字为入口的DFA图,在该DFA图中当前敏感词汇中的每个字对应一个节点,各节点的排序与各个对应的字在当前敏感词汇中的排序相同,当前敏感词汇中的最后一个字所对应的节点为该DFA图的出口节点;如果存在,则依次判断当前敏感词汇首字之后的后续各字是否也在该DFA图中存在对应的节点,对于没有对应节点的字以及其后续的字,在该DFA图中添加对应的节点,并将当前敏感词汇中的最后一个字所对应的节点为该DFA图的又一个出口节点。在图2所示的系统中,所述DFA图生成模块201,进一步用于在每个DFA图的相邻两个节点之间的连线边上设置去噪规则。在图2所示的系统中,所述匹配模块203,进一步用于在所述步骤2执行以下步骤 如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配之前,根据所述上一个字所在的节点与其下一节点之间的连线边上去噪规则判断当前字是否应该被忽略,是则直接执行步骤3,否则执行所述将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配的步骤。在图2所示的系统中,所述匹配模块203,进一步用于步骤2中,如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点,则确定待判定信息中存在敏感词汇之后,将待判定信息在该命中的DFA图中的路径所对应的敏感词汇作为匹配到的敏感词汇进行输出。由上述可见,本发明这种根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并保存这些DFA图,则对于给定的待判定信息,从首字开始,逐字从DFA图的入口开始匹配,如果与节点匹配,则该节点继续往后走,之道到达该DFA图的出口,如果待判定信息能到达出口,则说明匹配敏感词命中的技术方案,由于对判定信息只遍历一遍,不需要反复遍历或者反复尝试匹配,不存在回溯问题,因此能实现敏感词的快速匹配,提高了性能。此外,还根据DFA图上的两个节点之间的连线边上设置的去噪规则进行去噪处理的方案,可以在不破坏DFA图的基础上实现如去除特殊字符等,实现对待判定信息边去噪边匹配,同时没有性能损失。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种敏感词匹配方法,其特征在于,根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并保存这些DFA图,则对于给定的待判定信息,匹配敏感词的方法包括步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中,则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息, 如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点,则确定待判定信息中存在敏感词汇,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。
2.根据权利要求1所述的方法,其特征在于,所述根据敏感词库中的所有敏感词生成多个DFA图包括扫描敏感词库中的所有敏感词汇,对于每个当前敏感词汇查看是否存在以当前敏感词汇的首字为入口的DFA图;如果不存在,则创建以当前敏感词汇的首字为入口的DFA图,在该DFA图中当前敏感词汇中的每个字对应一个节点,各节点的排序与各个对应的字在当前敏感词汇中的排序相同,当前敏感词汇中的最后一个字所对应的节点为该DFA图的出口节点;如果存在,则依次判断当前敏感词汇首字之后的后续各字是否也在该DFA图中存在对应的节点,对于没有对应节点的字以及其后续的字,在该DFA图中添加对应的节点,并将当前敏感词汇中的最后一个字所对应的节点为该DFA图的又一个出口节点。
3.根据权利要求2所述的方法,其特征在于,所述根据敏感词库中的所有敏感词生成多个DFA图还包括在每个DFA图的相邻两个节点之间的连线边上设置去噪规则。
4.根据权利要求3所述的方法,其特征在于,步骤2还包括如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配之前,根据所述上一个字所在的节点与其下一节点之间的连线边上去噪规则判断当前字是否应该被忽略,是则直接执行步骤3,否则执行所述将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配的步骤。
5.根据权利要求1至4中任一项所述的方法,其特征在于,步骤2中,如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点,则确定待判定信息中存在敏感词汇之后,进一步包括将待判定信息在该命中的DFA图中的路径所对应的敏感词汇作为匹配到的敏感词汇进行输出。
6.一种敏感词匹配系统,其特征在于,该系统包括DFA图生成模块、存储模块、匹配模块,其中DFA图生成模块,用于根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并将这些DFA图保存到存储模块中;存储模块,用于保存DFA图;匹配模块,用于根据如下步骤对给定的待判定信息进行敏感词匹配步骤1,取出待判定信息中的当前字;其中,首次取出的是待判定信息的首字,之后,每次取出待判定信息中的下一个字作为当前字;步骤2,查询所保存的DFA图,判断是否有以该当前字为入口的DFA图,如果命中,则记录该DFA图以及该当前字处于该DFA图中的节点位置;如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配,如果命中,则记录当前节点在该DFA图中的位置信息, 如果没有命中,则从记录中删除该DFA图;如果当前字有命中的DFA图,并且该命中的DFA图中当前字所在节点为出口节点,则确定待判定信息中存在敏感词汇,结束流程;步骤3,如果还没有到待判定信息的最后一个字,则返回步骤1。
7.根据权利要求6所述的系统,其特征在于,所述DFA图生成模块,用于扫描敏感词库中的所有敏感词汇,对于每个当前敏感词汇 查看是否存在以当前敏感词汇的首字为入口的DFA图;如果不存在,则创建以当前敏感词汇的首字为入口的DFA图,在该DFA图中当前敏感词汇中的每个字对应一个节点,各节点的排序与各个对应的字在当前敏感词汇中的排序相同,当前敏感词汇中的最后一个字所对应的节点为该DFA图的出口节点;如果存在,则依次判断当前敏感词汇首字之后的后续各字是否也在该DFA图中存在对应的节点,对于没有对应节点的字以及其后续的字,在该DFA 图中添加对应的节点,并将当前敏感词汇中的最后一个字所对应的节点为该DFA图的又一个出口节点。
8.根据权利要求7所述的系统,其特征在于,所述DFA图生成模块,进一步用于在每个DFA图的相邻两个节点之间的连线边上设置去噪规则。
9.根据权利要求8所述的系统,其特征在于,所述匹配模块,进一步用于在所述步骤2执行以下步骤如果该当前字的上一个字有命中并记录的DFA图,则将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配之前,根据所述上一个字所在的节点与其下一节点之间的连线边上去噪规则判断当前字是否应该被忽略,是则直接执行步骤3,否则执行所述将该当前字与该DFA图中的上一个字所在节点的下一节点进行匹配的步骤。
10.根据权利要求6至9中任一项所述的系统,其特征在于,所述匹配模块,进一步用于步骤2中,如果当前字有命中的DFA图,并且该命中的DFA 图中当前字所在节点为出口节点,则确定待判定信息中存在敏感词汇之后,将待判定信息在该命中的DFA图中的路径所对应的敏感词汇作为匹配到的敏感词汇进行输出。
全文摘要
本发明公开了一种敏感词匹配方法和系统。所述方法包括根据敏感词库中的所有敏感词汇生成多个确定有限自动机DFA图,并保存这些DFA图,则对于给定的待判定信息,从首字开始,逐字从DFA图的入口开始匹配,如果与节点匹配,则该节点继续往后走,直到到达该DFA图的出口,如果待判定信息能到达出口,则说明匹配敏感词命中。本发明的技术方案,由于对判定信息只遍历一遍,不需要反复遍历或者反复尝试匹配,不存在回溯问题,因此能实现敏感词的快速匹配,提高了性能。
文档编号G06F17/30GK102207979SQ20111018150
公开日2011年10月5日 申请日期2011年6月30日 优先权日2011年6月30日
发明者杨涛 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1