UGC社区敏感词过滤原理


UGC社区是以用户原创内容为主的移动互联网线上社区,其前身是网页端的bbc论坛。社区型平台每天会产生大量由用户自发形成的内容,有文字、图片、视频等形式,当然现在还有直播等形式的内容,由于用户层次的不同,产生的内容自然就有优劣之分,同时,有人的地方就会有商机,自然不乏广告或者垃圾信息的存在,因此需要对这些东西进行过滤。

传统的方式是使用KMP算法对用户输入的字符串进行敏感词的匹配,然后将敏感词删除或者替换掉。对于内容比较短的字符串可能处理速度不会出现太大的问题,但当内容比较多的时候就会出现时间复杂度非常高的弊端,会严重影响系统的运行。本文介绍了一种当前比较流行的敏感词过滤的算法的原理。


过程:

1.首先根据敏感词构建字典树(每个字符当做一个节点),并在叶子节点做上标记

2.创建三个变量,分别监测Root节点,字符串的首字符,然后构建一个StringBuilder对象。如下图所示:


3.字符串首字符与字典树中的第一层子节点进行匹配,如果变量③所指字符与变量①所指字符不相同,变量③往后推进一位,变量②也往后挪一位,并通过append()加入sb中;

如果变量③所指字符与变量①所指字符字符相同,变量①就指向子节点,变量③继续往后遍历,变量①也指向下一个子节点,当匹配不成功时,如图所示,变量①重新指向root节点,变量③指向匹配不相同时所指向的字符,变量②也指向变量③所指字符,并添加进去sb中;





当匹配成功的时候,而且变量①所指节点是做过标记的叶子节点,则判断变量②跟变量③之间字符串是敏感词,则将这段字符串删除或者用*代替并加入sb中,如图所示:



然后将变量①指向root节点;

依次执行上面的操作,直至字符串中的最后一个字符都添加到了sb中,遍历结束,敏感词过滤完毕,然后将sb输出。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值