网络文本服务中敏感词过滤的方法

文档序号:6427708阅读:355来源:国知局
专利名称:网络文本服务中敏感词过滤的方法
技术领域
本发明涉及网络信息过滤技术领域,特别是涉及一种网络文本服务中敏感词过滤的方法。
背景技术
随着互联网的飞速发展,基于文本的网络服务已经深入到人们生活的各个方面。 由于网络文本服务具有内容丰富、互动性强、实时性强的优势,已取代邮件、短信或电话, 成为人们日常沟通中(尤其是陌生人群中)最主要的交流方式。如即时通讯anstant Messaging,简称IM)、论坛、电子邮件、博客、微博等网络服务作为一种便捷的沟通方式已经渗透到人们工作和生活的各个领域,甚至发展出了相应的网络社区,也成为移动互联网的一项重要业务。但是网络文本服务在给人们带来无障碍交流便利的同时,不可避免地也会散播一些未经证实的消息或不良内容,很多情况下均会出现违反国家法律法规并损害公众利益的言行,为了维护国家法律和公民权益,越来越多的网络文本服务中集成了敏感词过滤功能。常见的敏感词过滤功能通常是采用字典方式,简单地对服务中的文本消息进行关键词匹配,需要反复地提取词语并逐词比对。这种反复执行的敏感词查找操作会严重降低网络服务的性能,影响用户的使用速度;此外,一旦词语提取不当,也会错误屏蔽掉用户信息,降低用户通讯质量。为使得用户的网络服务不因敏感词过滤而降低速度和质量,保护合法用户的正当权益,在信息过滤的同时不影响到绝大多数用户的正常使用,准确有效的敏感词过滤显得尤为重要。

发明内容
(一)要解决的技术问题针对现有技术的缺点,本发明为了解决现有技术中的敏感词过滤方式会降低网络服务性能的问题,提供了一种网络文本服务中敏感词过滤的方法,将敏感词库以嵌套哈希表的方式加载到内存中,通过哈希表的逐级比对判断是否出现敏感词,使得敏感词过滤速度仅与消息文本长度有关,大大提高了过滤效率,保证了网络服务的性能。( 二 )技术方案为解决上述技术问题,本发明具体采用如下技术方案进行一种网络文本服务中敏感词过滤的方法,该方法包括步骤Si,将敏感词写入数据库中;S2,在网络文本服务中开辟一个新的线程读取数据库中的敏感词;S3,把敏感词数据以嵌套哈希表的方式载入内存中;S4,所述线程将网络文本服务接收到的用户文本消息与内存中敏感词的嵌套哈希表逐级比较,判断所述文本消息中是否出现了敏感词;若出现敏感词则执行步骤S5,否则跳至步骤S6 ;
S5,对包含敏感词的所述文本消息进行处理后结束;S6,正常发送所述文本消息后结束。优选地,步骤Sl中,在数据库中更新敏感词时,记录敏感词更新时间、生效时间、 操作方式以及此次数据库操作时间。优选地,步骤S2中,所述线程根据各敏感词的第一个字建立第一级哈希表。优选地,步骤S3中,以所述第一级哈希为首表,依次读取各敏感词的各个字建立各级哈希表,同时建立各级哈希表之间的连接。优选地,步骤S5中,所述处理具体为当所述文本消息中出现敏感词时,用特殊字符取代敏感词后进行转发、或者抛弃含有敏感词的文本消息并返回发送者一个提示。优选地,步骤S2中,更新敏感词后所述线程再次读取数据库时,只读取所述数据库操作时间大于最后一次读取数据库时间且敏感词生效时间小于当前时间的敏感词,把新增加的敏感词重新插入哈希表中。优选地,所述最后一次读取数据库时间记录在哈希表头中。优选地,所述线程每经过一预定的时间后就再次读取数据库。优选地,数据库更新的同时通知所述线程再次读取数据库。优选地,所述操作方式包括追加、删除或修正。(三)有益效果本发明的方法将敏感词库以嵌套哈希表的方式加载到内存中,通过哈希表的逐级比对使得敏感词过滤速度仅与消息文本长度有关,大大提高了过滤效率,保证了网络服务的性能;此外,由于采用独立的线程进行控制,可选择性地对敏感词库进行更新并实时应用到网络文本服务中,从而进一步地提高了服务性能。


图1为本发明中敏感词过滤的方法流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。如即时通讯(IM)服务等的网络文本服务为网络用户提供了实时高效的信息交互能力,其实时性和交互能力对用户来说是最重要的性能。然而,现有的敏感词查找方式通常会造成各种网络服务速度的降低,同时一旦更新敏感词库需要重新启动相应的网络服务, 严重影响了用户的使用。本发明提供了一种网络文本服务中敏感词过滤的方法,有效地提高了敏感词过滤效率,同时可支持敏感词库的实时更新。首先参见图1,在本发明的方法中,首先将敏感词写入数据库中;随后在网络文本服务中开辟一个新的线程读取数据库中的敏感词;再把敏感词数据以嵌套哈希表的方式载入内存中;然后,所述线程将网络文本服务接收到的用户文本消息与内存中敏感词的嵌套哈希表逐级比较,判断所述文本消息中是否出现了敏感词;若出现敏感词则对包含敏感词的所述文本消息进行处理后结束方法;否则正常发送所述文本消息后结束方法。具体地,本发明的方法各步骤可进一步采用如下方式实现1、管理员在数据库中录入或更新敏感词,记录敏感词更新时间、生效时间、操作方式(追加、删除、修正)以及此次数据库操作时间。2、网络文本服务中新建一个独立的线程,读取数据库,建立第一级哈希表,第一级哈希表哈希的关键字是敏感词的第一个字,如果敏感词的第一个字有重复的,也只做成一个哈希表,同时记录该表被几个词共用。3、把敏感词库以哈希嵌套哈希的方式加载到内存。以第一级哈希为首表,读取敏感词的第二个字,建立第二级哈希表,重复的字同样只用一个表并记录重复的次数;同样第三个字建立第三级哈希表,依次类推直至最长敏感词的最后一个字。如果敏感词的最大长度为n,则哈希表最多会有η级结构,横向的η级是敏感词的最大长度,原则上没有限制,但实际应用中一个敏感词的长度一般不会超过64个字符,可以根据实际情况动态配置横向η 的大小。同时每一级哈希表中最多包括m项内容,代表当前生效的敏感词中在当前位置可能出现的字总体数量(重复字的不包含在内),该数量一般会控制在千万级别以内。建立各级哈希表之间的连接。4、敏感词的比对。当服务端收到用户发出的文本消息时,首先把文本与第一级哈希词比较,如果没找到则移至下一个文本字继续在第一级哈希中寻找;如果找到了则在第二级哈希中寻找下一个文本字,以此类推直至找出文本中的全部敏感词。因为哈希的复杂度为0(1),所以本发明方法的复杂度最大为len(text);只与输入的文本长度有关。5、对于文本中出现的敏感词需要根据实际需求做出处理,实际情况中可用特殊字符取代敏感词而不影响后续内容的转发,或者抛弃含有该敏感词的文本并返回发送者一个提示。游戏程序可采用前一种方式,对即时聊天、有影响力的论坛等可采用后一种方式。6、若文本中未出现敏感词则正常发送其内容。经过上述处理后本次方法结束,线程等待再次收到文本消息后的再次处理,或等待合适的时机进行敏感词的更新。更进一步地,本发明还可以在不影响网络服务的情况下实时更新敏感词库,具体地,采用如下方式实现在hash表头中记录最后一次读取数据库(读取敏感词加载到内存哈希表)的时间,经过规定时间线程再次读取数据库中的敏感词时,只需读取数据库操作时间大于最后一次读取数据库时间且敏感词生效时间小于当前时间的敏感词即可,这样就可以只读有变化的敏感词,从而提高服务的性能。采用本发明的方法可时时更新敏感词,当敏感词有更新的时候,操作线程会定期重新读取数据库,并且只读上次更新以后更改的敏感词,把新增加的敏感词重新插入hash 表中。此定期时间可根据实际情况来调整配置。此外,除上面描述的根据时间配置程序定时读取敏感词库的方式外,敏感词更新还可采用通知的方式实现。当敏感词库(数据库)有更新的时候通知当前服务程序,相应线程收到通知后刷新内存中的已经建立的哈希表。考虑到当前市面上各种数据库的信号通知方式不同,有些数据库还不提供实时更新通知功能,另外又考虑到程序的易移植性、易懂性等,优选采用程序定时读取的方式实施。
删除敏感词的情况类似,当删除敏感词时,操作线程经过规定时间重新读取数据库(只读上次更新以后有变更的敏感词),把删除的敏感词从hash表中删除。特别说明,如果属于管理员误删除的敏感词,可以重新把该敏感词的状态置成有效状态(即上述步骤中对数据库修正的操作方式)。本发明的方法通过独立的线程将敏感词库以嵌套哈希表的方式加载到内存中,通过哈希表的逐级比对使得敏感词过滤速度仅与消息文本长度有关,大大提高了过滤效率, 保证了网络服务的性能;此外,由于采用独立的线程进行控制,可选择性地对敏感词库进行更新并实时应用到网络文本服务中,从而进一步地提高了服务性能。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的发明保护范围应由权利要求限定。
权利要求
1.一种网络文本服务中敏感词过滤的方法,其特征在于,所述方法包括步骤Si,将敏感词写入数据库中;S2,在网络文本服务中开辟一个新的线程读取数据库中的敏感词;S3,把敏感词数据以嵌套哈希表的方式载入内存中;S4,所述线程将网络文本服务接收到的用户文本消息与内存中敏感词的嵌套哈希表逐级比较,判断所述文本消息中是否出现了敏感词;若出现敏感词则执行步骤S5,否则跳至步骤S6 ;S5,对包含敏感词的所述文本消息进行处理后结束;S6,正常发送所述文本消息后结束。
2.根据权利要求1所述的方法,其特征在于,步骤Sl中,在数据库中更新敏感词时,记录敏感词更新时间、生效时间、操作方式以及此次数据库操作时间。
3.根据权利要求1所述的方法,其特征在于,步骤S2中,所述线程根据各敏感词的第一个字建立第一级哈希表。
4.根据权利要求3所述的方法,其特征在于,步骤S3中,以所述第一级哈希为首表,依次读取各敏感词的各个字建立各级哈希表,同时建立各级哈希表之间的连接。
5.根据权利要求1所述的方法,其特征在于,步骤S5中,所述处理具体为当所述文本消息中出现敏感词时,用特殊字符取代敏感词后进行转发、或者抛弃含有敏感词的文本消息并返回发送者一个提示。
6.根据权利要求2所述的方法,其特征在于,步骤S2中,更新敏感词后所述线程再次读取数据库时,只读取所述数据库操作时间大于最后一次读取数据库时间且敏感词生效时间小于当前时间的敏感词,把新增加的敏感词重新插入哈希表中。
7.根据权利要求6所述的方法,其特征在于,所述最后一次读取数据库时间记录在哈希表头中。
8.根据权利要求6所述的方法,其特征在于,所述线程每经过一预定的时间后就再次读取数据库。
9.根据权利要求6所述的方法,其特征在于,数据库更新的同时通知所述线程再次读取数据库。
10.根据权利要求2所述的方法,其特征在于,所述操作方式包括追加、删除或修正。
全文摘要
本发明涉及网络信息过滤技术领域,提供了一种网络文本服务中敏感词过滤的方法。通过独立的线程将敏感词库以嵌套哈希表的方式加载到内存中,通过哈希表的逐级比对使得敏感词过滤速度仅与消息文本长度有关,大大提高了过滤效率,保证了网络服务的性能;此外,由于采用独立的线程进行控制,可选择性地对敏感词库进行更新并实时应用到网络文本服务中,从而进一步地提高了服务性能。
文档编号G06F17/30GK102253988SQ20111018333
公开日2011年11月23日 申请日期2011年6月30日 优先权日2011年6月30日
发明者张宁 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1