当前位置: 首页 > news >正文

业务中如何过滤敏感词

在我们访问网站的时候,如果发现我们发布的内容有色情暴力的东西等等,会屏蔽掉,这种行为就是过滤敏感词。

从技术层面实现起来,其实比较简单,因为我们输入的内容就是一个大型的字符串,我们要调用某些api来判断这个字符串有没有敏感词,比如我们可以使用jdk自带的方法,比如String里面有个replace方法可以直接替换字符串。

但是网站在运行过程中,敏感词可能比较多,有几十个,甚至上百个。但是你发的如果是文章,字符串可能非常长,这种情况下,如果用replace一遍一遍替换,性能未免太差了,在实际开发过程中,我们往往会采用前缀树的数据结构

前缀树算法特点

  1. 根节点不包含任何字符,除了根节点以外的每个节点都只包含一个字符
  2. 从根节点到某一个节点经过的路上,经过的字符连接起来就是对应的字符串

从根节点到最末端才能算是敏感词,在我们检测的时候,需要三个指针。第一个指针指向树,默认的是指向根节点;第二个指针指向字符串,默认的是指向字符串中第一个字符;第三个指针依然指向字符串,默认的也是指向字符串中第一个字符。

这样在筛选或者过滤单词的时候,根据二三指针分别标记头尾就可以认为中间字符串是敏感词。二指针永远不回头,而第三个字符串到结尾会再次回到二字符串的新位置。最后用StringBuilder来接收

代码实现

创建存储敏感词的文件

在resources下创建txt文件,里面规定敏感词

 

创建工具类

为了便于使用,我们用@Component将他托管给容器,同时将数据结构封装到内部类中,因为除了这个类,别的类基本不会调用

 

创建前缀树

 

 前缀树的结构其实并不复杂,下一个环节就是根据敏感词文件,与前缀树关联

添加前缀树

 过滤敏感词

 当指针3到达结尾,说明已经可以进行下一次遍历,所以应该用指针3进行遍历

 

 判断是否是敏感词

 

 

http://www.lryc.cn/news/116739.html

相关文章:

  • 用服务器搭建网站需要做什么
  • clickhouse 删除操作
  • C 语言中,「.」与「->」有什么区别?
  • github pages 用法详解 发布自己的网站
  • 坤简炫酷的JQuery轮播图插件
  • C# 条件编译
  • IntelliJ IDEA如何重新弹出git身份验证窗口
  • 【雕爷学编程】Arduino动手做(200)---WS2812B幻彩LED灯带4
  • 【雕爷学编程】Arduino动手做(201)---DFRobot 行空板03
  • Spring中Bean的“一生”(生命周期)
  • 安卓:LitePal操作数据库
  • 【JavaEE初阶】了解JVM
  • 基于vue2.0和elementUi的vue农历日期组件vue-jlunar-datepicker(插件)
  • Python爬虫——selenium_元素定位
  • 短视频内容平台(如TikTok、Instagram Reel、YouTube Shorts)的系统设计
  • 【git】Git 回退到指定版本:
  • kibana+nginx配置密码 ubuntu
  • Git仓关联多个远程仓路径
  • 使用ffmpeg将m4a及wav等文件转换为MP3格式
  • 【CI/CD】Git Flow 分支模型
  • SpringBoot Thymeleaf模板引擎
  • prometheus部署
  • Flink-Window详细讲解-countWindow
  • React 18 state 如同一张快照
  • EasyPoi导出 导入(带校验)简单示例 EasyExcel
  • 八大排序
  • 网络安全【黑客技术】自学
  • 【网络通信】socket编程——TCP套接字
  • ROS2系统学习番外篇2---用VSCode开发ROS2程序
  • 06 - Stream如何提高遍历集合效率?