敏感词过滤的方法和装置与流程

文档序号:11590417阅读:356来源:国知局

本发明涉及网络技术领域,特别是涉及一种敏感词过滤方法和装置。



背景技术:

互联网的出现极大地促进了各种信息内容在用户之间的发布和传播,例如,即时通信工具因其可以方便、快捷的完成客户端之间的沟通而被越来越多的人使用。在这个过程中,常常会有人利用各种互联网工具发送包括“敏感词”的文本信息。其中,敏感词包括不文明词汇、涉及国家安全的词汇等。传统的对文本内容中的敏感词的识别大多通过人工方式来进行的,但是通过人工方式检查不仅耗时耗力,而且效率低。



技术实现要素:

基于此,为了解决上述查找敏感词效率低的问题,提出了一种敏感词过滤方法和装置。

一种敏感词过滤的方法,所述方法包括:接收待检查的文本内容;将接收到的所述文本内容进行分词处理;将处理得到的分词与敏感词库中的敏感词进行匹配;若匹配成功,则将所述分词标记为敏感词;将所述标记为敏感词的分词进行隐藏处理。

在其中一个实施例中,在所述接收待检查的文本内容的步骤之前还包括:建立树状敏感词库,包括:将敏感词中的第一个字作为第一层节点,将所述敏感词中的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层。

在其中一个实施例中,所述将接收到的所述文本内容进行分词处理的步骤为:根据文本内容的长度n和敏感词库中的最大敏感词长度m进行分词处理,建立分词列表;所述建立分词列表的步骤包括:将文本内容中的第k个字放入第一列第k行的位置,将文本内容中的第k个和第k+1个字放入第二列第k行 的位置,依次类推,直到将第k至第k+m-1个字放入第m列第k行的位置,其中,所述k为大于0小于n的正整数,k+m-1小于等于n的正整数。

在其中一个实施例中,所述将处理得到的分词与敏感词库中的敏感词进行匹配的步骤包括:在敏感词库的第一层节点中查找与所述分词列表中第一列第k行匹配的关键字,其中,首次读取所述分词列表中的第一列第一行中的分词,之后每次读取第一列中下一行中的分词;若在所述敏感词库的第一层节点中未查找到与所述第一列第k行匹配的关键字,则继续在所述第一层节点中查找与第一列第k+1行匹配的关键字;若在所述敏感词库的第一层节点中查找到了与所述第一列第k行匹配的关键字,则在所述第一层节点下的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键字,如果在所述第二层节点中未查到与所述第k行第二列分词中的第二个字匹配的关键字,则回到敏感词库的第一层节点查找与第一列第k+1行匹配的关键字;如果在所述第二层节点中查找到了与第k行第二列分词中的第二个字匹配的关键字,则获取与所述第二层节点对应的敏感词列表,在所述敏感词列表中查找与第k行中的分词匹配的敏感词。

在其中一个实施例中,所述将标记为敏感词的分词进行隐藏处理的步骤为:用符号代替标记为敏感词的分词。

一种敏感词过滤的装置,所述装置包括:接收模块,用于接收待检查的文本内容;分词模块,用于将接收到的所述文本内容进行分词处理;匹配模块,用于将处理得到的分词与敏感词库中的敏感词进行匹配;标记模块,用于若分词与敏感词库中的敏感词匹配成功,则将所述分词标记为敏感词;

隐藏模块,用于将所述标记为敏感词的分词进行隐藏处理。

在其中一个实施例中,所述装置还包括:建立模块,用于建立树状敏感词库,包括:将敏感词中的第一个字作为第一层节点,将所述敏感词中的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层。

在其中一个实施例中,所述分词模块还用于根据文本内容的长度n和敏感词库中的最大敏感词长度m进行分词处理,建立分词列表;所述建立分词列表 的步骤包括:将文本内容中的第k个字放入第一列第k行的位置,将文本内容中的第k个和第k+1个字放入第二列第k行的位置,依次类推,直到将第k至第k+m-1个字放入第m列第k行的位置,其中,所述k为大于0小于n的正整数,k+m-1小于等于n的正整数。

在其中一个实施例中,所述匹配模块还用于在敏感词库的第一层节点中查找与所述分词列表中第一列第k行匹配的关键字,其中,首次读取所述分词列表中的第一列第一行中的分词,之后每次读取第一列中下一行中的分词;若在所述敏感词库的第一层节点中未查找到与所述第一列第k行匹配的关键字,则继续在所述第一层节点中查找与第一列第k+1行匹配的关键字;若在所述敏感词库的第一层节点中查找到了与所述第一列第k行匹配的关键字,则在所述第一层节点下的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键字,如果在所述第二层节点中未查到与所述第k行第二列分词中的第二个字匹配的关键字,则回到敏感词库的第一层节点查找与第一列第k+1行匹配的关键字;如果在所述第二层节点中查找到了与第k行第二列分词中的第二个字匹配的关键字,则获取与所述第二层节点对应的敏感词列表,在所述敏感词列表中查找与第k行中的分词匹配的敏感词。

在其中一个实施例中,所述标记模块还用于用符号代替标记为敏感词的分词。

上述敏感词过滤的方法和装置,通过接收待检查的文本内容,将接收到的文本内容进行分词处理,将处理得到的分词与敏感词库中的敏感词进行匹配,若匹配成功,则将所述分词标记为敏感词,并将标记为敏感词的分词进行隐藏处理。该方法通过计算机将接收到的文本内容进行分词处理,进而将得到的分词与敏感库中的敏感词进行匹配,若匹配成功,则将该分词标记为敏感词,并进行隐藏处理,这个过程全自动进行,提高了敏感词查找的效率。

附图说明

图1为一个实施例中敏感词过滤的方法流程图;

图2为另一个实施例中敏感词过滤的方法流程图;

图3为一个实施例中敏感词库的示意图;

图4为一个实施例中将分词与敏感词库匹配的方法流程图;

图5为一个实施例中敏感词过滤装置的结构框图;

图6为另一个实施例中敏感词过滤装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,提出了一种敏感词过滤的方法,该方法包括:

步骤102,接收待检查的文本内容。

在本实施例中,服务器接收终端发送的待检查的文本内容。具体的,终端首先接收用户输入的文本内容,再将所接收的文本内容作为待检查的文本内容上传到服务器,服务器接收终端发送的待检查的文本内容。

步骤104,将接收到的文本内容进行分词处理。

具体的,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。将接收到的文本内容进行分词处理,就是要将文本内容划分为一个个的字或词,便于后续与敏感词库中的敏感词进行匹配。在本实施例中,是根据文本内容的长度和敏感词库中最大敏感词长度(即敏感词库中最长的敏感词的长度)来确定具体的分词数目的。比如,假设敏感词库中最大敏感词长度为4,那么进行分词时,分别将文本内容,分为一个字,两个字,三个字和四个字的词。

步骤106,将处理得到的分词与敏感词库中的敏感词进行匹配,若匹配成功,则进入步骤108,若匹配失败,则结束。

具体的,敏感词库为树状敏感词库,其中,敏感词的第一个字作为第一层节点,敏感词的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层,具有相同第一个字和第二个字的所有敏感词组成了第二层节点下的敏感词列表。将处理得到的分词与敏感词库中的敏感词进行匹配,若匹配成功,则将该分词进行标记,若匹配失败,则说明该分词不是敏感词, 不作处理。

步骤108,将分词标记为敏感词。

具体的,当分词与敏感库中的敏感词匹配成功时,说明该分词为敏感词,将该分词进行标记,便于后续进行隐藏处理。

步骤110,将标记为敏感词的分词进行隐藏处理。

具体的,将标记为敏感词的分词用其他字符代替或者不显示。比如,可以用“*”代替标记为敏感词的分词,这样在用户端,该敏感词就显示为“*”。

在本实施例中,通过接收待检查的文本内容,将接收到的文本内容进行分词处理,将处理得到的分词与敏感词库中的敏感词进行匹配,若匹配成功,则将所述分词标记为敏感词,并将标记为敏感词的分词进行隐藏处理。该方法通过计算机将接收到的文本内容进行分词处理,进而将得到的分词与敏感库中的敏感词进行匹配,若匹配成功,则将该分词标记为敏感词,并进行隐藏处理,这个过程全自动进行,提高了敏感词查找的效率。

如图2所示,在一个实施例中,在接收待检查的文本内容的步骤之前还包括:步骤101,建立树状敏感词库,包括:将敏感词中的第一个字作为第一层节点,将所述敏感词中的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层。

具体的,树状敏感词一共分为三层,其中,将敏感词中的第一个字作为第一层节点,将敏感词的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层。比如将“真钱斗”,“真钱投注”,“真钱赌博”,“真实文凭”,“真实资格”,“真实视频”等词作为敏感词,在敏感词库中的表示如图3所示,其中,敏感词的第一个字“真”作为第一层节点,第二个字“钱”或“实”作为第二层节点,“真钱斗”,“真钱投注”,“真钱赌博”“真实文凭”,“真实资格”,“真实视频”在第三层。

在一个实施例中,将接收到的所述文本内容进行分词处理的步骤为:根据文本内容的长度n和敏感词库中的最大敏感词长度m进行分词处理,建立分词列表;所述建立分词列表的步骤包括:将文本内容中的第k个字放入第一列第k 行的位置,将文本内容中的第k个和第k+1个字放入第二列第k行的位置,依次类推,直到将第k至第k+m-1个字放入第m列第k行的位置,其中,所述k为大于0小于n的正整数,k+m-1小于等于n的正整数。

在本实施例中,将接收到的文本内容进行分词处理是根据文本内容的长度n和敏感词库中的最大敏感词长度m来进行分词处理的,建立分词列表,通过将文本内容中的第k个放入分词列表中的第一列第k行的位置,将文本内容中的第k个和第k+1个字放入第二列第k行的位置,依次类推,直到将第k至第k+m-1个字放入第m列第k行的位置,其中,n为文本内容的长度,m为敏感词库中最大的敏感词长度,k为大于0小于等于n的正整数,k+m-1小于等于n的正整数。最终的分词总数为nm-[m(m-1)/2]。具体的,假设敏感词库中最大的敏感词长度为4,输入的文本内容长度为5,那么其总的分词总数为18。比如,文本内容为“我是博雅人”,首先,将文本内容的第一个字“我”放入分词列表中的第一列第一行的位置,将第一个字“我”和第二个字“是”一起放入第二列第一行的位置,依次类推,直到将第一个字至第四个字“我是博雅”一起放入第四列第一行的位置。按照上述规则,将文本内容的第二个字“是”放入分词列表中的第一列第二行的位置,依次类推。最后得到的分词列表如表1所示:

表1

如图4所示,在一个实施例中,将处理得到的分词与敏感词库中的敏感词进行匹配的步骤包括:

步骤106a,在敏感词库的第一层节点中查找与分词列表中第一列第k行匹配的关键字,其中,首次读取分词列表中的第一列第一行中的分词,之后每次读取第一列中下一行中的分词;若匹配失败则进入步骤106b,若匹配成功,则进入步骤106c。

具体的,首先在敏感词库中的第一层节点查找与分词列表中第一列第k行匹配的敏感词,其中,k为大于0小于等于文字内容长度n的正整数,第一列中的分词为单个字的分词,如表1所示。首次读取分词列表中的分词是从第一列的第一行开始的,之后每次读取第一列中下一行中的分词。若在敏感词库的第一层节点中没有查找到与第一列第k行匹配的关键词,则继续在敏感词库中的第一层节点查找与第一列第k+1行匹配的关键词。若在敏感词库中的第一层节点中查找到了与第一列第k行匹配的关键词,则继续在敏感词库中的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键词。

步骤106b,在第一层节点中查找与第一列第k+1行匹配的关键字。

具体的,当在敏感词库中的第一层节点中没有查找到与分词列表中的第一列第k行匹配的关键词,则继续在敏感词库中的第一层节点中查找与第一列第k+1行匹配的关键词,依次类推。

步骤106c,在第一层节点下的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键字,若匹配失败,则进入步骤106b,若匹配成功,则进入步骤106d。

具体的,当在敏感词库中的第一层节点中查找到了与分词列表中的第一列第k行匹配的关键词,则在该第一层节点下的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键词,如果在敏感词库中的第二层节点没有查找到与第k行第二列匹配的关键词,则回到到第一层节点查找与第一列第k+1行匹配的关键词。如果在该第一层节点下的第二层节点中查找到了与第k行第二列匹配的关键词,则获取与该第二层节点对应的敏感词列表,在该敏感词列表中查找与第k行中的分词匹配的敏感词。

步骤106d,获取与第二层节点对应的敏感词列表,在敏感词列表中查找与第k行中的分词匹配的敏感词,若匹配成功,则进入步骤108,若匹配失败,则 进入步骤106b。

具体的,当在第一层节点下的第二层节点中查找到了与第k行第二列匹配的关键词,则在敏感词列表中查找与第k行中的分词匹配的敏感词,若匹配成功,则将对应的分词标记为敏感词。若匹配失败,则回到第一层节点查找与第一列第k+1行匹配的关键字。

在本实施例中,通过建立分词列表,根据上述设定的规则将分词列表中的分词与敏感词库中的敏感词进行匹配,该算法先在第一层节点中匹配关键字,只有匹配到关键字才进入第二层节点,该算法时间复杂度低,最好的情况下时间复制度为o(n),最坏的情况下时间复杂度为o(nm),其中,n表示文本内容的长度,m表示敏感词库中最大敏感词的长度,其中,o(n)、o(nm)为线性阶。

在一个实施例中,将处理得到的分词与敏感词库中的敏感词进行匹配的具体过程为:将分词列表按照xy轴结构组织,将分词列表中的行作为x轴,将列作为y轴,以表1为例来进行说明,分词列表的行1,2,3,4分别表示x1,x2,x3,x4;分词列表的列1,2,3,4,5分别表示为y1,y2,y3,y4,y5。比如,“我”所在的位置为x1y1。将文本内容“我是博雅人”与敏感词库匹配的步骤如下:首先,取x1y1位置的“我”与敏感词库中的第一层节点匹配,此时时间复杂度为o(1),如果匹配不成功,则说明处于y1横轴上的词不存在于于敏感词库中,可直接跳过y1横轴上的其他分词匹配,接下来去取x1y2位置的“是”与敏感词库中的第一层节点匹配。如果匹配成功,则取x2y1位置的“我是”中的第二个“是”字与第一层节点“我”下的第二层节点匹配,如果匹配不成功,同样可直接跳过y1横轴上的其他分词,接下来去取x1y2位置的“是”与敏感词库中的第一层节点匹配。若匹配成功,则取出该第二层节点下的敏感词列表,与y1轴中剩下的分词进行匹配,若匹配成功,则将对应的分词标记为敏感词。

具体的,参考图3中的敏感词库,当取到x1y4位置的“博”可在敏感词库中的第一层节点中匹配到“博”,则继续取x2y4位置的“博雅”中的第二个字“雅”与第一层节点“博”下面的第二层节点匹配,发现匹配到了第二层 节点中的“雅”,接下来取第二层节点“雅”对应的敏感词列表(“博雅”,“博雅人”,“博雅棋牌”),将y4横轴上的分词与敏感词列表匹配,最后,标记出“博雅”“博雅人”为敏感词,将原始文本内容中的“博雅”“博雅人”替换为“*”,则最终在用户端显示为“我是***”。

在一个实施例中,将标记为敏感词的分词进行隐藏处理的步骤为:用符号代替标记为敏感词的分词。

具体的,将标记为敏感词的分词用其他符号代替进行隐藏。比如,可以用“*”代替标记为敏感词的分词,这样在用户端,该敏感词就显示为“*”。

如图5所示,在一个实施例中,提出了一种敏感词过滤的装置,所述装置包括:

接收模块502,用于接收待检查的文本内容;

分词模块504,用于将接收到的所述文本内容进行分词处理;

匹配模块506,用于将处理得到的分词与敏感词库中的敏感词进行匹配;

标记模块508,用于若分词与敏感词库中的敏感词匹配成功,则将所述分词标记为敏感词;

隐藏模块510,用于将所述标记为敏感词的分词进行隐藏处理。

如图6所示,在一个实施例中,上述敏感词过滤的装置还包括:

建立模块501,用于建立树状敏感词库,包括:将敏感词中的第一个字作为第一层节点,将所述敏感词中的第二个字作为第二层节点,将具有相同第一个字和第二个字的所有敏感词作为第三层。

在一个实施例中,分词模块504还用于根据文本内容的长度n和敏感词库中的最大敏感词长度m进行分词处理,建立分词列表;所述建立分词列表的步骤包括:将文本内容中的第k个字放入第一列第k行的位置,将文本内容中的第k个和第k+1个字放入第二列第k行的位置,依次类推,直到将第k至第k+m-1个字放入第m列第k行的位置,其中,所述k为大于0小于n的正整数,k+m-1小于等于n的正整数。

在一个实施例中,匹配模块506还用于在敏感词库的第一层节点中查找与 所述分词列表中第一列第k行匹配的关键字,其中,首次读取所述分词列表中的第一列第一行中的分词,之后每次读取第一列中下一行中的分词;若在所述敏感词库的第一层节点中未查找到与所述第一列第k行匹配的关键字,则继续在所述第一层节点中查找与第一列第k+1行匹配的关键字;若在所述敏感词库的第一层节点中查找到了与所述第一列第k行匹配的关键字,则在所述第一层节点下的第二层节点中查找与第k行第二列分词中的第二个字匹配的关键字,如果在所述第二层节点中未查到与所述第k行第二列分词中的第二个字匹配的关键字,则回到敏感词库的第一层节点查找与第一列第k+1行匹配的关键字;如果在所述第二层节点中查找到了与第k行第二列分词中的第二个字匹配的关键字,则获取与所述第二层节点对应的敏感词列表,在所述敏感词列表中查找与第k行中的分词匹配的敏感词。

在一个实施例中,标记模块508还用于用符号代替标记为敏感词的分词。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1