敏感词过滤算法 为内容保驾护航 Java/.Net/C++/c/Python等语言是如何进行敏感词打码限制的 高效防范违规内容

有人的地方,就有江湖,有输入框的地方,就有注入风险!有输入框的地方,就有敏感词!敏感词就像一个平台杀手,可能直接导致平台被封锁!

敏感词是一个APP、一个网站、一个内容平台的“杀手”,危害程度杀伤力相当大。将一个文本中的敏感词过滤掉,是一个合法合规平台所必须使用的技术。敏感词的过滤算法是关键词查找、过滤打码的过程,可有效结合时间复杂度高效的树型结构进行算法设计与实现!

敏感词可能是脏话,也可能是不同文化背景下的禁词,也可能是政治敏感词汇,等等,敏感词可能导致平台遭受法律或政策的制约。举个简单的例子,非法涉黄的网站可能直接被取消网站备案,无法在中国大陆访问。不做敏感词的后果是相当严重的。

做为一个程序员,一个开发工程师,一定要掌握敏感词算法么?工程师分为很多派系,对于做搜索的工程师,算法,b树,敏感词过程,应该要从底层,从设计到实现都不能放过!做为应用工程师(小白程序员),能掌握算法原理,并能使用,我觉得就好了,树叶有专攻!来来来,来一段算法描述。目前查到的敏感词过滤算法。

一、敏感词少的情况

如果敏感词少的话,就直接使用replace,indexOf等等来搞定吧,只是这种情况存在的可能性太小了。敏感词可以说是很多很多。不过,不讲究效率的地方,能实现业务要求的话,使用这种方式也可以。

二、敏感词较多的情况

敏感词受政治、人文、种族各种因素影响,词汇量较多,要做到全面的过滤,自然要考虑考虑算法的设计,以保证过滤的高效性。在这里介绍网上流行的一种敏感词过滤算法。深入了解专业算法已经超出了本文的范畴,请自行找其他资料查看。网上流传的算法,主要是将敏感词库放到树型数据结构中,将带过滤的文本投射到敏感词树上,命中的就是踩到敏感词。用树型结构体加速匹配速度。

2.1 构建敏感词树

什么是树?主要是树型结构在时间复杂度上有优势。详细了解时间复杂度与树型算法,关注公众号回“算法”!今天不展开介绍树型结构。构建敏感词树型结构体,可以通过第三方库来完成,有现成的。回复公众号“敏感词库”可获取相关信息。如图所示,我们构建了一棵敏感词树,这棵树有傻子、傻逼、傻逼人三个敏感词​。

2.2 投射文本

把文本填充到敏感词树上,就能直观的看到哪些敏感词覆盖到了。如果有人在平台发布违禁信息,可以快速识别出来。在这里使用投射文本描述,只是为了描述算法,具体实现就看代码。如图所示,投射到树上文本“傻逼”,就是被发现的​敏感词。

敏感词过滤算法的核心就是这两步!一棵敏感词树,一次投射文本,就能把敏感词全遍找过来,高效​!

今天的算法分享就要告一段落了,赶紧播放赞助商广告!

技术岛公众号
技术岛公众号

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注