敏感词过滤方法及装置的制造方法

文档序号:10489075阅读:701来源:国知局
敏感词过滤方法及装置的制造方法
【专利摘要】本发明实施例公开了一种敏感词过滤方法及装置,在获得待过滤文本后,首先判断待过滤文本是否包含与敏感词字符串中字符相同的字符,如果待过滤文本中包含敏感词字符串中的字符,则表明待过滤文本可能包含敏感词。继续将待过滤文本中的字符与敏感词字典树进行匹配,如果匹配成功,则表明待过滤文本中包含敏感词。最后,将待过滤文本中包含的敏感词过滤掉。利用敏感词字典树进行敏感词匹配能够极大地减少字符比较工作量,降低算法复杂度,提高运算速度和效率。
【专利说明】
敏感词过滤方法及装置
技术领域
[0001]本发明涉及敏感词检测技术领域,特别是涉及一种敏感词过滤方法及装置。
【背景技术】
[0002]敏感词一般是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明词语。多数论坛、网站为了方便管理,都进行了敏感词设定,也有一些网站根据自身实际情况设定一些只适用于本网站的特殊敏感词。比如,要发布的帖子内容包含敏感词时,这个帖子不能发布,或者,这个帖子包含的敏感词被自动替换为或“X”等。
[0003]现有的敏感词过滤算法,例如KMP单模匹配算法或BM算法,都是针对待过滤文本所包含的字符按顺序依次与敏感词库所包含的敏感词进行比较,如果待过滤文本包括N个字符,敏感词库中包括M个敏感词,则现有的敏感词过滤算法的复杂度为O(N*M),过滤速度慢、效率低。

【发明内容】

[0004]本发明实施例中提供了一种敏感词过滤方法及装置,以解决现有技术中的敏感词过滤速度慢、效率低的问题。
[0005]为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0006]第一方面,本发明实施例提供一种敏感词过滤方法,包括:
[0007]获取待过滤文本,将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,所述敏感词字符串由全部敏感词中的不同首字符组成;
[0008]当所述待过滤文本中的字符与所述敏感词字符串中的字符匹配成功时,将所述待过滤文本中的字符与敏感词字典树中的所述敏感词进行匹配,所述敏感词字典树是根据所述敏感词的首字符建立的包括所述敏感词的所有字符的三叉搜索树;
[0009]当所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功时,从所述待过滤文本中过滤掉所述敏感词。
[0010]可选地,所述将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,包括:
[0011 ]利用分词算法对所述待过滤文本进行分词,得到分词结果;
[0012]将所述分词结果中每个词语的首字符与所述敏感词字符串中的字符进行匹配;
[0013]如果所述分词的首字符与所述敏感词字符串中的字符匹配成功,则确定所述待过滤文本中字符包含在所述敏感词字符串中;
[0014]如果所述分词的首字符与所述敏感词字符串中的字符匹配失败,则确定所述待过滤文本中的字符不包含在所述敏感词字符串中。
[0015]可选地,所述将所述待过滤文本中的字符与敏感词字典树中的敏感词进行匹配,包括:
[0016]从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符;
[0017]将所述目标字符与所述敏感词字典树中间分支的节点进行匹配;
[0018]当所述目标字符与所述分叉节点的字符匹配成功时,获取所述待过滤文本中与所述目标字符紧邻的下一个字符,并与所述匹配成功的分叉节点的子节点的字符进行匹配;如果匹配成功,则获取所述待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。
[0019]可选地,利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配,则所述从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符,包括:
[0020]当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,所述indexOf返回值表征所述待过滤文本所包含的与所述敏感词字符串中字符相同的字符在所述待过滤文本中的位置;
[0021]从所述待过滤文本中获取所述indexOf返回值对应位置的字符,作为所述目标字符。
[0022]可选地,所述方法还包括:
[0023]当所述待过滤文本中的字符与所述敏感词字符串中的字符或所述敏感词字典树中的敏感词匹配失败时,确定所述待过滤文本中不包含敏感词。
[0024]第二方面,本发明实施例提供一种敏感词过滤装置,包括:
[0025]获取模块,用于获取待过滤文本;
[0026]第一匹配模块,用于将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,所述敏感词字符串由全部敏感词的首字符组成;
[0027]第二匹配模块,用于当所述第一匹配模块得到匹配成功的结果时,将所述待过滤文本中的字符与敏感词字典树中的所述敏感词进行匹配,所述敏感词字典树是根据所述敏感词的首字符建立的包括所述敏感词字符的三叉搜索树;
[0028]过滤模块,用于当所述第二匹配模块得到匹配成功的结果时,从所述待过滤文本中过滤掉所述敏感词。
[0029]可选地,所述第一匹配模块,包括:
[0030]分词子模块,用于利用分词算法对所述待过滤文本进行分词,得到分词结果;
[0031]第一匹配子模块,用于将所述分词结果中每个词语的首字符与所述敏感词字符串中的字符进行匹配。
[0032]可选地,所述第二匹配模块,包括:
[0033]第一获取子模块,用于从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符;
[0034]第二匹配子模块,用于将所述目标字符与所述敏感词字典树中间分支的节点进行匹配;当所述目标字符与所述分叉节点的字符匹配成功时,获取所述待过滤文本中与所述目标字符紧邻的下一个字符,并与所述匹配成功的分叉节点的子节点的字符进行匹配;如果匹配成功,则获取所述待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到匹配到叶子节点;
[0035]第一确定子模块,用于当所述第二匹配子模块得到叶子节点匹配成功的匹配结果时,确定所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。
[0036]可选地,利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配,则所述第一获取子模块,具体用于:
[0037]当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,所述indexOf返回值表征所述待过滤文本所包含的与所述敏感词字符串中字符相同的字符在所述待过滤文本中的位置;
[0038]从所述待过滤文本中获取所述indexOf返回值对应位置的字符,作为所述目标字符。
[0039]可选地,所述装置还包括:
[0040]确定模块,用于当第一匹配模块或第二匹配模块得到匹配失败的结果时,确定所述待过滤文本中不包含敏感词。
[0041]由以上技术方案可见,本发明实施例提供的敏感词过滤方法,在获得待过滤文本后,首先判断待过滤文本是否包含与敏感词字符串中字符相同的字符,如果待过滤文本中包含敏感词字符串中的字符,则表明待过滤文本可能包含敏感词。继续将待过滤文本中的字符与敏感词字典树进行匹配,如果匹配成功,则表明待过滤文本中包含敏感词。最后,将待过滤文本中包含的敏感词过滤掉。利用敏感词字典树进行敏感词匹配能够极大地降低字符比较工作量,降低算法复杂度,提高运算速度和效率。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0043]图1为本发明实施例一种敏感词过滤方法的流程示意图;
[0044]图2为本发明实施例一种敏感词字典树匹配过程的流程示意图;
[0045]图3为本发明实施例一种敏感词字典树实例的示意图;
[0046]图4为本发明实施例另一种敏感词过滤方法的流程示意图;
[0047]图5为本发明实施例一种敏感词过滤装置的框图;
[0048]图6为本发明实施例一种第二匹配模块的框图;
[0049]图7为本发明实施例另一种敏感词过滤装置的框图。
【具体实施方式】
[0050]为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0051]参见图1,为本发明实施例提供的一种敏感词过滤方法的流程示意图,该方法应用于服务端,例如,网站服务器。如图1所示,该方法可以包括以下步骤:
[0052]S110,获取待过滤文本。
[0053]待过滤文本可以是用户在客户端输入的文本信息,传递到服务端。也可以是服务端的数据库内的文本信息。
[0054]S120,将待过滤文本中的字符与敏感词字符串中的字符进行匹配;所述敏感词字符串由全部敏感词中的不同首字符组成。如果匹配成功,则执行S130;如果匹配失败,则获取待过滤文本中的下一个字符,并返回执行S120,直到待过滤文本中的全部字符都匹配完。
[0055]在本发明的一些实施例中,从待过滤文本的第一个字符开始扫描,然后比较扫描到的字符与敏感词字符串中的字符是否相同;如果相同,则执行S130。
[0056]如果扫描到的字符与敏感词字符串中的每一个字符都不相同,则确定该字符不是敏感词中的字符,继续获取待过滤字符中的下一个字符重复上述的匹配过程,直到待过滤文本中的全部字符都比较完。例如,待过滤文本是“我爱北京天安门,天安门上太阳升”,经匹配发现“我”与敏感词字符串中的每一个字符都不相同,则继续比较下一个字符“爱”是否与敏感词字符串中的字符相同,直到待过滤文本中的全部字符都比较完。
[0057]其中,敏感词字符串是服务端划定的全部敏感词的首字符(S卩,敏感词的第一个字),例如,敏感词是“天安门”,则该敏感词的首字符是“天”。如果有两个或两个以上个敏感词的首字符相同则在敏感词字符串中只保留一个,例如,“天安门”和“天朝”的首字符都是“天”,但敏感词字符串中只包含一个“天”字符。
[0058]S130,将待过滤文本中的字符与敏感词字典树中的敏感词进行匹配;如果匹配成功,则执行S140;如果匹配失败,则获取待过滤文本中的下一个字符,并返回执行S120直到待过滤文本中的全部字符都匹配完。
[0059]如果S120中确定待过滤文本中的字符与敏感词字符串中的字符相同,则初步确定待过滤文本中包含敏感词,然后进一步将待过滤文本中的字符与敏感词字典树进行比较,精确判断待过滤文本是否包含敏感词。
[0060]敏感词字典树是根据敏感词的首字符建立的包含所述敏感词的所有字符的三叉搜索树。即,根据敏感词字符串中所包含字符的ASCII码值建立敏感词字典树的主干,然后,根据所述敏感词的非首字符的ASCII码值确定敏感词字典树中各个节点对应的叶子节点。其中,整棵敏感词字典树的根节点是敏感词字符串中ASCII码值居中的字符,小于该ASCII码值的字符位于该节点的左侧分支;大于该ASCII码值的字符位于该节点的右侧分支。
[0061]从待过滤文本中与敏感词字符串相同的字符开始扫描,扫描到的字符首先与敏感词字典树中的根节点进行比较,如果该字符的ASCII码值等于该根节点对应的ASCII码值,则获取待过滤文本中该字符紧邻的下一个字符与该根节点的中间分支的节点进行比较;如果该字符的ASCII码值小于该根节点对应的ASCII码值,则继续与敏感词字典树中该根节点左侧分支的节点进行比较;如果该字符的ASCII码值大于该根节点对应的ASCII码值,则继续与该根节点右侧分支的节点进行比较。按照上述过程依次匹配待过滤文本中的字符直到待过滤文本中的全部字符都匹配完,得到待过滤文本所包含的全部敏感字。
[0062]S140,过滤掉待过滤文本中的敏感词。
[0063]按照S130所述的匹配过程依次匹配待过滤文本中的字符直到待过滤文本中的全部字符都匹配完,得到待过滤文本所包含的全部敏感字。然后,过滤掉待过滤文本所包含的全部敏感词。
[0064]具体的过滤方式可以是直接删除待过滤文本中的敏感词,例如,待过滤文本是“我爱北京天安门,天安门上太阳升”,检测到该待过滤文本中包含的两个“天安门”的敏感词,则过滤后的文本是“我爱北京,上太阳升”。
[0065]过滤方式还可以是利用或“X”代替待过滤文本中的敏感词,按照此方式过滤后的文本是“我爱北京*#,*#上太阳升”。
[0066]本实施例提供的敏感词过滤方法,在获得待过滤文本后,首先判断待过滤文本是否包含与敏感词字符串中字符相同的字符,如果待过滤文本中包含敏感词字符串中的字符,则表明待过滤文本可能包含敏感词。继续将待过滤文本中的字符与敏感词字典树进行匹配,如果匹配成功,则表明待过滤文本中包含敏感词。最后,将待过滤文本中包含的敏感词过滤掉。利用敏感词字典树进行敏感词匹配时,待过滤文本中的字符与敏感词字典树的中间分支的节点进行比较,每一层匹配都能减少一半的比较工作量,因此,利用该方法能够大大降低算法复杂度,提高运算速度、提高效率。
[0067]结合图2-图3,图2是本发明实施例一种敏感词字典树匹配过程的流程示意图,该匹配过程可以包括以下步骤:
[0068]S131,从待过滤文本中获取与敏感词字符串中的字符匹配成功的目标字符。
[0069]当待过滤文本中的某个字符与敏感词字符串的某个字符相同时,获取待过滤文本中的该字符作为目标字符。
[0070]在本发明的一些实施例中,利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配。当待过滤文本中包含的与敏感词字符串中的某个字符相同时,indexOf方法能够获得该字符在待过滤文本中首次出现的位置。
[0071]当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,然后,从所述待过滤文本中获取所述indexOf返回的值对应位置的字符,作为所述目标字符。
[0072]获取目标字符紧邻的下一个字符时,直接将indexOf返回值加I,获取该位置的字符。依次类推,获取所述下一个字符紧邻的下一个字符,indexOf返回值加2获取该位置的字符。
[0073]S132,将目标字符与敏感词字典树中间分支的节点进行匹配。
[0074]进一步比较待过滤文本的目标字符之后的字符是否与敏感词字典树中的敏感词相同。首先将目标字符的ASCII码值与敏感词字典树中间分支对应节点的ASCII码值进行比较,如果相等,则执行S133;如果目标字符的ASCII码值小于该节点字符的ASCII码值,则比较目标字符与该节点左侧分支的节点;如果目标字符的ASCII码值大于该节点字符的ASCII码值,则比较目标字符与该节点右侧分支的节点。
[0075]S133,当目标字符与分叉节点的字符匹配成功时,获取待过滤文本中与目标字符紧邻的下一个字符,并与匹配成功的分叉节点的子节点的字符进行匹配;如果与子节点的字符匹配成功,则获取待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到匹配到叶子节点。
[0076]参见图3,为本发明实施例一种敏感词字典树实例示意图,该敏感词字典树的根节点是“王”,其中,“毛”的ASCII码值小于“王”的ASCII码值,因此,“毛”位于“王”的左侧分支,“谢”的ASCII码值大于“王”的ASCII码值,因此,“谢”位于“王”的右侧分支。同理,“蒋”的ASCII码值小于“谢”的,因此,“蒋”位于“谢”左侧的分支;需要说明的是,“毛”、“蒋”、“邓”也有相应的子节点和叶子节点,图中未示出。其中,“王”所在节点的叶子节点是“明”,即以王为首字符的敏感词是“王明”。同理,“谢晋”也是一个敏感词。
[0077]S134,当叶子节点匹配成功时,确定待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。
[0078]例如,待过滤文本是“左倾主义者王明”,敏感词包括“王明”。将待过滤文本与敏感词字符串比较,确定待过滤文本中的“王”与敏感词字符串的“王”相同,则继续比较该字符与敏感词字典树中的根节点“王”,确定待过滤文本中的“王”的ASCII码值与敏感词字典树中的根节点的ASCII码值相同,则获取待过滤文本中与字符“王”紧邻的下一个字符,即“明”。然后,将该字符“明”与敏感词字典树中的节点“王”的下一层节点进行比较,最终确定与节点“王”的叶子节点“明”相同,则确定待过滤文本中包含敏感词“王明”。
[0079]本实施例提供的敏感词过滤方法,利用敏感词字典树进行敏感词匹配时,待过滤文本中的字符与敏感词字典树的中间分支的节点进行比较,如果匹配上就继续沿中间分支向下匹配;如果字符的ASCII码值小于该节点的ASCII码值,则沿着左分支继续匹配;如果字符的ASCII码值大于该节点的ASCII码值,则沿右分支继续匹配;可见,每一层匹配都能减少一半的比较工作量,因此,利用该方法能够大大降低算法复杂度,提高运算速度、提高效率。
[0080]参见图4,为本发明另一种敏感词过滤方法的流程图,该方法包括以下步骤:
[0081 ] S210,获取待过滤文本。
[0082]S220,利用分词算法对所述待过滤文本进行分词,得到分词结果。
[0083]例如,可以利用IK分词器、庖丁分词器等对待过滤文本进行分词或其它的分词算法实现。
[0084]例如,待过滤文本是“抓老虎机器”,分词结果是“抓”“老虎” “机器”。
[0085]S230,将所述分词结果中的每个词语的首字符与所述敏感词字符串中的字符进行匹配。
[0086]待过滤文本进行分词后,得到待过滤文本所包含的词语,故只需要比较分词后的词语的首字符与敏感词字符串中的字符,大大降低了字符匹配运算量,因此提高了匹配速度。
[0087]如果分词后获得的词语的首字符与敏感词字符串中的每一个字符都不相同,则确定该词语不是敏感词,即匹配失败;如果分词后获得的词语的首字符与敏感词字符串中的某个字符相同,则匹配成功,初步确定该词语可能是敏感词。
[0088]S240,当分词结果中每个词语的首字符与所述敏感词字符串中的字符匹配成功时,将所述待过滤文本中的字符与敏感词字典树中的敏感词进行匹配;所述敏感词字典树是根据敏感词的首字符建立的包括所述敏感词的所有字符的三叉搜索树。
[0089]分词结果中词语的首字符与敏感词字符串中的字符匹配成功时,再将该词语与敏感词字典树中的敏感词进行精确匹配,从而确定该词语是否是敏感词。敏感词字典树的匹配过程与图2所示的匹配过程相同,此处不再赘述。
[0090]S250,当所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功时,过滤掉所述待过滤文本中的敏感词。
[0091]本实施例提供的敏感词过滤方法,首先对待过滤文本进行分词得到分词结果;然后,比较分词结果中词语的首字符与敏感词字符串中的字符是否相同;如果相同,再将该词语与敏感词字典树中的敏感词进行匹配,如果匹配成功,则确定该词语是敏感词。通过上述方法,找到待过滤文本中包含的全部敏感词,最后过滤掉待过滤文本中的全部敏感词。对待过滤文本进行分词,降低敏感词误判率;同时,对待过滤文本分词后,以词语为单位与敏感词进行匹配,而非字符为单位,降低了比较对象的数量,因此,提高了敏感词匹配效率。
[0092]与本发明提供的敏感词过滤方法实施例相对应,本发明还提供了敏感词过滤装置实施例。
[0093]参见图5,为本发明实施例提供的一种敏感词过滤装置的框图,该装置应用于服务端,例如网站服务器。如图5所示,该装置可以包括获取模块110、第一匹配模块120、第二匹配模块130和过滤模块140。
[0094]获取模块110,用于获取待过滤文本。
[0095]待过滤文本可以是用户在客户端输入的文本信息,传递到服务端。也可以是服务端的数据库内的文本信息。
[0096]第一匹配模块120,用于将待过滤文本中的字符与敏感词字符串中的字符进行匹配;所述敏感词字符串由全部敏感词中的不同首字符组成。
[0097]如果扫描到的字符与敏感词字符串中的每一个字符都不相同,则确定该字符不是敏感词中的字符,继续获取待过滤字符中的下一个字符重复上述的匹配过程,直到待过滤文本中的全部字符都比较完。
[0098]第二匹配模块130,用于当第一匹配模块得到匹配成功的结果时,将所述待过滤文本中的字符与敏感词字典树中的敏感词进行匹配。
[0099]所述敏感词字典树是根据敏感词的首字符建立的包所述敏感词的所有字符的三叉搜索树。
[0100]如果第一匹配模块确定待过滤文本中的字符与敏感词字符串中的字符相同,则初步确定待过滤文本中包含敏感词,然后进一步将待过滤文本中的字符与敏感词字典树进行比较,精确判断待过滤文本是否包含敏感词。
[0101]从待过滤文本中与敏感词字符串相同的字符开始扫描,扫描到的字符首先与敏感词字典树中的根节点进行比较,如果该字符的ASCII码值等于该根节点对应的ASCII码值,则获取待过滤文本中该字符紧邻的下一个字符与该根节点的中间分支的节点进行比较;如果该字符的ASCII码值小于该根节点对应的ASCII码值,则继续与敏感词字典树中该根节点左侧分支的节点进行比较;如果该字符的ASCII码值大于该根节点对应的ASCII码值,则继续与该根节点右侧分支的节点进行比较。按照上述过程依次匹配待过滤文本中的字符直到待过滤文本中的全部字符都匹配完,得到待过滤文本所包含的全部敏感字。
[0102]参见图6,为本发明实施例一种第二匹配模块的框图,如图6所示,第二匹配模块130包括第一获取子模块131、第二匹配子模块132和第一确定子模块133。
[0103]第一获取子模块131,用于从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符。
[0?04]在本发明的一些实施例中,第一匹配模块利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配,此种应用场景下,第一获取子模块通过以下方法获取目标字符:
[0105]当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,该indexOf返回值表征所述待过滤文本所包含的与所述敏感词字符串中字符相同的字符在所述待过滤文本中的位置;然后,从所述待过滤文本中获取所述indexOf返回值对应位置的字符,作为所述目标字符。
[0106]第二匹配子模块132,用于将所述目标字符与所述敏感词字典树中间分支的节点进行匹配;当所述目标字符与所述分叉节点的字符匹配成功时,获取所述待过滤文本中与所述目标字符紧邻的下一个字符,并与所述匹配成功的分叉节点的子节点的字符进行匹配;如果匹配成功,则获取所述待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到匹配到叶子节点.
[0107]第一确定子模块133,用于当第二匹配子模块得到叶子节点匹配成功的匹配结果时,确定所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。
[0108]过滤模块140,用于当所述第二匹配模块得到匹配成功的结果时,从所述待过滤文本中过滤掉所述敏感词。
[0109]本实施例提供的敏感词过滤装置,在获得待过滤文本后,首先判断待过滤文本是否包含与敏感词字符串中字符相同的字符,如果待过滤文本中包含敏感词字符串中的字符,则表明待过滤文本可能包含敏感词。继续将待过滤文本中的字符与敏感词字典树进行匹配,如果匹配成功,则表明待过滤文本中包含敏感词。最后,将待过滤文本中包含的敏感词过滤掉。利用敏感词字典树进行敏感词匹配时,待过滤文本中的字符与敏感词字典树的中间分支的节点进行比较,每一层匹配都能减少一半的比较工作量,因此,利用该方法能够大大降低算法复杂度,提高运算速度、提高效率。
[0110]参见图7,为本发明实施例另一种敏感词过滤装置的框图,如图7所示,该装置包括:获取模块110、分词子模块121、第一匹配子模块122、第二匹配模块130、过滤模块140和确定模块210。
[0111]获取模块110,用于获取待过滤文本。
[0112]分词子模块121,用于利用分词算法对所述待过滤文本进行分词,得到分词结果。
[0113]例如,可以利用IK分词器、庖丁分词器等对待过滤文本进行分词或其它的分词算法实现。例如,待过滤文本是“抓老虎机器”,分词结果是“抓” “老虎” “机器”。
[0114]第一匹配子模块122,用于将所述分词结果中的每个词语的首字符与所述敏感词字符串中的字符进行匹配。
[0115]如果分词得到的词语的首字符与所述敏感词字符串中的字符匹配成功时,确定所述待过滤文本中字符包含在所述敏感词字符串中,继续由第二匹配模块进行敏感词精确匹配。
[0116]如果分词获得的词语的首字符与敏感词字符串中的每一个字符都不相同,即匹配失败,则确定该词语不是敏感词。
[0117]待过滤文本进行分词后,得到待过滤文本所包含的词语,故只需要比较分词后的词语的首字符与敏感词字符串中的字符,大大降低了字符匹配运算量,因此提高了匹配速度。
[0118]第二匹配模块130,用于当第一匹配子模块得到匹配成功的结果时,将所述待过滤文本中的字符与敏感词字典树中的敏感词进行匹配。
[0119]过滤模块140,用于当第二匹配模块得到匹配成功的结果时,从所述待过滤文本中过滤掉所述敏感词。
[0120]确定模块210,用于当第一匹配子模块或第二匹配模块得到匹配失败的结果时,确定待过滤文本中不包含敏感词。
[0121]本实施例提供的敏感词过滤装置,首先对待过滤文本进行分词得到分词结果;然后,比较分词结果中词语的首字符与敏感词字符串中的字符是否相同;如果相同,再将该词语与敏感词字典树中的敏感词进行匹配,如果匹配成功,则确定该词语是敏感词。通过该装置找到待过滤文本中包含的全部敏感词,最后过滤掉待过滤文本中的全部敏感词。对待过滤文本进行分词,降低敏感词误判率;同时,对待过滤文本分词后,以词语为单位与敏感词进行匹配,而非字符为单位,降低了比较对象的数量,因此,提高了敏感词匹配效率。
[0122]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0123]本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0124]需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0125]以上所述仅是本发明的【具体实施方式】,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种敏感词过滤方法,其特征在于,包括: 获取待过滤文本,将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,所述敏感词字符串由敏感词中的不同首字符组成; 当所述待过滤文本中的字符与所述敏感词字符串中的字符匹配成功时,将所述待过滤文本中的字符与敏感词字典树中的所述敏感词进行匹配,所述敏感词字典树是根据所述敏感词的首字符建立的包括所述敏感词的所有字符的三叉搜索树; 当所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功时,从所述待过滤文本中过滤掉所述敏感词。2.根据权利要求1所述的方法,其特征在于,所述将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,包括: 利用分词算法对所述待过滤文本进行分词,得到分词结果; 将所述分词结果中每个词语的首字符与所述敏感词字符串中的字符进行匹配; 如果所述分词的首字符与所述敏感词字符串中的字符匹配成功,则确定所述待过滤文本中字符包含在所述敏感词字符串中; 如果所述分词的首字符与所述敏感词字符串中的字符匹配失败,则确定所述待过滤文本中的字符不包含在所述敏感词字符串中。3.根据权利要求1所述的方法,其特征在于,所述将所述待过滤文本中的字符与敏感词字典树中的敏感词进行匹配,包括: 从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符; 将所述目标字符与所述敏感词字典树中间分支的节点进行匹配; 当所述目标字符与所述分叉节点的字符匹配成功时,获取所述待过滤文本中与所述目标字符紧邻的下一个字符,并与所述匹配成功的分叉节点的子节点的字符进行匹配;如果匹配成功,则获取所述待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。4.根据权利要求3所述的方法,其特征在于,利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配,则所述从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符,包括: 当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,所述indexOf返回值表征所述待过滤文本所包含的与所述敏感词字符串中字符相同的字符在所述待过滤文本中的位置; 从所述待过滤文本中获取所述indexOf返回值对应位置的字符,作为所述目标字符。5.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当所述待过滤文本中的字符与所述敏感词字符串中的字符或所述敏感词字典树中的敏感词匹配失败时,确定所述待过滤文本中不包含敏感词。6.一种敏感词过滤装置,其特征在于,包括: 获取模块,用于获取待过滤文本; 第一匹配模块,用于将所述待过滤文本中的字符与敏感词字符串中的字符进行匹配,所述敏感词字符串由全部敏感词的首字符组成; 第二匹配模块,用于当所述第一匹配模块得到匹配成功的结果时,将所述待过滤文本中的字符与敏感词字典树中的所述敏感词进行匹配,所述敏感词字典树是根据所述敏感词的首字符建立的包括所述敏感词的所有字符的三叉搜索树; 过滤模块,用于当所述第二匹配模块得到匹配成功的结果时,从所述待过滤文本中过滤掉所述敏感词。7.根据权利要求6所述的装置,其特征在于,所述第一匹配模块,包括: 分词子模块,用于利用分词算法对所述待过滤文本进行分词,得到分词结果; 第一匹配子模块,用于将所述分词结果中每个词语的首字符与所述敏感词字符串中的字符进行匹配。8.根据权利要求6所述的装置,其特征在于,所述第二匹配模块,包括: 第一获取子模块,用于从所述待过滤文本中获取与所述敏感词字符串中的字符匹配成功的目标字符; 第二匹配子模块,用于将所述目标字符与所述敏感词字典树中间分支的节点进行匹配;当所述目标字符与所述分叉节点的字符匹配成功时,获取所述待过滤文本中与所述目标字符紧邻的下一个字符,并与所述匹配成功的分叉节点的子节点的字符进行匹配;如果匹配成功,则获取所述待过滤文本中与所述下一个字符紧邻的下一个字符与所述敏感词字典树中的节点进行匹配,直到匹配到叶子节点; 第一确定子模块,用于当所述第二匹配子模块得到叶子节点匹配成功的匹配结果时,确定所述待过滤文本中的字符与所述敏感词字典树中的敏感词匹配成功。9.根据权利要求8所述的装置,其特征在于,利用indexOf方法对所述待过滤文本中的字符与所述敏感词字符串中的字符进行匹配,则所述第一获取子模块,具体用于: 当所述待过滤文本中字符与所述敏感词字符串中字符匹配成功时,获取indexOf返回值,所述indexOf返回值表征所述待过滤文本所包含的与所述敏感词字符串中字符相同的字符在所述待过滤文本中的位置; 从所述待过滤文本中获取所述indexOf返回值对应位置的字符,作为所述目标字符。10.根据权利要求6所述的装置,其特征在于,所述装置还包括: 确定模块,用于当第一匹配模块或第二匹配模块得到匹配失败的结果时,确定所述待过滤文本中不包含敏感词。
【文档编号】G06F17/30GK105843950SQ201610223369
【公开日】2016年8月10日
【申请日】2016年4月12日
【发明人】谢晓静
【申请人】乐视控股(北京)有限公司, 乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1