敏感词工具(sensitive word)的使用

  • 开始
    • 优点
    • 准备
      • 1.引入对应的包地址
      • 2.常用api盖览
    • 使用实例
      • 1.是否有敏感词存在
      • 2.返回所有敏感词
      • 3.默认的替换策略
      • 4.指定替换词
    • 新工具类
      • 测试新工具

开始

sensitive word工具是一个快速的敏感词过滤工具,基于 DFA 算法实现的高性能敏感词工具。

优点

1.DFA算法是相比于其他算发性能更高,所读更改快
2.其中包含默认的敏感词共6W
3.支持自定替换,支持手动扩展敏感词词库,也可以放行敏感词,方形掉相对于使用方不敏感的词语
3.支持运行时加载敏感词词库,无需进行重新部署

准备

1.引入对应的包地址

    <dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version>0.2.0</version></dependency>

2.常用api盖览

方法 参数 返回值 说明
contains(String) 待验证的字符串 boolean false为不存在敏感词,true为存在敏感词
findAll(String) 待验证的字符串 List 返回值为待验证字符串中敏感词集合
replace(String) 待验证的字符串 String 将敏感词使用*替换之后的字符

使用实例

1.是否有敏感词存在

final String text = "五星红旗迎风飘扬,画像屹立在天安门前。";boolean isFalse = SensitiveWordHelper.contains(text);

2.返回所有敏感词

final String text = "五星红旗迎风飘扬,画像屹立在天安门前。";List<String> wordList = SensitiveWordHelper.findAll(text);

3.默认的替换策略

final String text = "五星红旗迎风飘扬,画像屹立在天安门前。";String result = SensitiveWordHelper.replace(text);

4.指定替换词

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";//指定替换词类ISensitiveWordReplace replace = new MySensitiveWordReplace();String result = SensitiveWordHelper.replace(text, replace);
public class MySensitiveWordReplace implements ISensitiveWordReplace {@Overridepublic String replace(ISensitiveWordReplaceContext context) {String sensitiveWord = context.sensitiveWord();//五星红旗,毛主席铭感词来源可以为数据库if("五星红旗".equals(sensitiveWord)) {return "国家旗帜";}if("毛主席".equals(sensitiveWord)) {return "教员";}// 其他默认使用 * 代替int wordLength = context.wordLength();return CharUtil.repeat('*', wordLength);}}

新工具类

1.为了便于项目的开发,敏感词有一个新的工具类fluent-api 让开发方式更加简化

SensitiveWordBs wordBs = SensitiveWordBs.newInstance().ignoreCase(true) //忽略大小写.ignoreWidth(true)//忽略半角圆角.ignoreNumStyle(true)//忽略数字的写法.ignoreChineseStyle(true)//忽略中文的书写格式.ignoreEnglishStyle(true)//忽略英文的书写格式.ignoreRepeat(true)//忽略重复词.enableNumCheck(true)//是否启用数字检测。默认连续 8 位数字认为是敏感词.enableEmailCheck(true)//是有启用邮箱检测.enableUrlCheck(true)//是否启用链接检测.init();final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
Assert.assertTrue(wordBs.contains(text));

在一般情况下在开发中会遇到一些关于敏感词范围过大或这敏感词范围不全这种情况,这个时候就会用到敏感词的白名单与黑名单

//黑名单
public class MyWordDeny implements IWordDeny {@Overridepublic List<String> deny() {return Arrays.asList("我的自定义敏感词");}}
//白名单
public class MyWordAllow implements IWordAllow {@Overridepublic List<String> allow() {return Arrays.asList("五星红旗");}}
@Configuration
public class SpringSensitiveWordConfig {@Autowiredprivate MyDdWordAllow myDdWordAllow;@Autowiredprivate MyDdWordDeny myDdWordDeny;/*** 初始化引导类* @return 初始化引导类* @since 1.0.0*/@Beanpublic SensitiveWordBs sensitiveWordBs() {SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance().wordAllow(WordAllows.chains(WordAllows.system(), myDdWordAllow)).wordDeny(WordDenys.chains(WordDenys.system(), myDdWordDenys))// 各种其他配置.init();return sensitiveWordBs;}}

如果使用的敏感词白名单与黑名单的数据来源为第三方,或者当敏感词库发生更新时就需要重新加载敏感词,此时也公共了一个方法,这个方法需要手动触发,或者定时任务触发

@Component
public class SensitiveWordService {@Autowiredprivate SpringSensitiveWordConfig springSensitiveWordConfig;/*** 更新词库** 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法。* 如果需要生效,则调用这个方法。** 说明:重新初始化不影响旧的方法使用。初始化完成后,会以新的为准。*/public void refresh() {// 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法,然后调用这个方法。springSensitiveWordConfig.sensitiveWordBs.init();}}

测试新工具

  final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";String replace = springSensitiveWordConfig.sensitiveWordBs().replace(text);

敏感词工具(sensitive word)的使用相关推荐

  1. Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

    Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月22日 http://fansh ...

  2. 【go-zero】go-zero 敏感词过滤 整合 开源过滤敏感词插件 sensitive

    一.背景 关于敏感词,设计的过滤与屏蔽的方案我认为有2个方向 一是:我们在写入的时候,对全部的文本进行控制,让敏感词被replaced 二是:我们在展示的时候,对读取的文本进行控制,让敏感词被repl ...

  3. java 实现敏感词(sensitive word)工具详解使用说明

    sensitive-word 平时工作中,只要涉及到用户可以自由发言(博客.文档.论坛),就要考虑内容的敏感性处理. sensitive-word 基于 DFA 算法实现的高性能敏感词工具.工具使用 ...

  4. 敏感词汇工具类sensitive word的使用及详解

    简述: 1.平时工作中,只要涉及到用户可以自由发言(博客.文档.论坛),就要考虑内容的敏感性处理,sensitive word工具是一个快速的敏感词过滤工具,基于 DFA 算法实现的高性能敏感词工具( ...

  5. 网站发帖敏感字java_网站敏感词过滤的实现(附敏感词库)

    现在基本上所有的网站都需要设置敏感词过滤,z似乎已经成了一个网站的标配,如果你的网站没有,或者你没有做相应的处理,那么小心相关部门请你喝茶哦. 最近在调研Java web网站的敏感词过滤的实现,网上找 ...

  6. 基于布隆过滤器实现敏感词识别和过滤

    在当前的网络环境下,敏感词过滤已经是各大网站的"标准配置",如果不想被大量的垃圾信息充斥,除了使用机器人识别.验证码等验证工具,还需要阻止含有敏感词内容的发布,否则可能面临关站等风 ...

  7. 基于ik分词器和布隆过滤器实现敏感词过滤

    文章目录 准备阶段 为何选用IK Analyzer 什么是布隆过滤器 开发过程 整合Ik 总结 <基于ik分词器和布隆过滤器实现敏感词过滤>首发 牧马人博客转发请加此提示 最近公司业务有个 ...

  8. Java实现敏感词过滤

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  9. vue 敏感词过滤 前端

    vue 敏感词过滤 前端 根据正则来进行过滤 敏感词是一个数组 词比较多 专门存放在js文件里面 vue用 export 导出 再引入到需要用的组件里 judgeBadWord(obj) {let w ...

最新文章

  1. Windows Phone 内容滑动切换实现
  2. mysql+秘密_mysql不被人知的秘密
  3. 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
  4. 宁德时代是前8个月全球最大电动汽车电池供应商
  5. android 音量调节流程分析,Android 4.4 音量调节流程分析(二)
  6. Mathematica最简教程
  7. 阿里云第二次实验——个人网盘的搭建
  8. 电流检测的方式与误差来源
  9. java仓库管理设计报告_仓库管理系统(课程设计JSPJAVA大学设计).doc
  10. Design Patterns - Builder
  11. 国王统治没有显示服务器,国王的统治Reign Of Kings服务器架设教程
  12. 可视化色码表--绘图视觉不可或缺的元素
  13. 光做魔杖,玩转液滴,登上《Science Advances》!
  14. Android 性能优化必知必会(转载)
  15. 2015 史考特(Scottrade)开户指南 + 招商银行香港一卡通汇款【图文教程】
  16. 横板格斗类游戏实战:游戏数值策划表
  17. 中富金石诊股靠谱吗?专业投顾团队,帮助投资者实现财富增值
  18. 手机网站服务器出错怎么办,手机服务器出错
  19. 亚马逊关键词怎么编写_亚马逊关键词怎么选
  20. android 小喇叭动画,CSS动画效果——语音播放小喇叭

热门文章

  1. 消息队列RabbitMQ入门与PHP实战
  2. C# 设置文件默认打开程序
  3. 【大疆2021校招】【硬件B卷】笔试题
  4. 跟读 播放器 android,安卓手机英语学习利器 android 英语复读 跟读 练听力 练口语...
  5. opencv的逻辑运算bitwise详解
  6. 什么区块链,统统都是骗局?
  7. 温莎大学的计算机科学,温莎大学荣誉计算机科学专业本科.pdf
  8. java计算机毕业设计校园订餐系统源码+系统+数据库+lw文档+mybatis+运行部署
  9. CGCS2000国家大地坐标系参数
  10. 中国AR智能隐形眼镜市场竞争态势与投资规划分析报告2022-2028年