sensitive-word实现敏感词处理
sensitive-word是一个基于DFA(确定有限状态自动机)算法实现的高性能敏感词过滤工具
依赖
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>sensitive-word</artifactId>
<version>0.21.0</version>
</dependency>
常用API
String s = "我爱毛主席,中华人民共和国";
//检查是否包含敏感词
boolean b = SensitiveWordHelper.contains(s);
System.out.println(b);
//查找第一个敏感词
String first = SensitiveWordHelper.findFirst(s);
System.out.println(first);
//列出所有敏感词
List<String> all = SensitiveWordHelper.findAll(s);
System.out.println(all);
//敏感词替换
String replace = SensitiveWordHelper.replace(s);
System.out.println(replace);
自定义配置
SensitiveWordBs wordBs = SensitiveWordBs.newInstance()
// 使用默认的敏感词词库(黑名单)
.wordDeny(WordDenys.defaults())
// 使用默认的白名单词库,白名单中的词不会被视为敏感词,即使它们在黑名单中
.wordAllow(WordAllows.defaults())
// 忽略大小写,例如:"FuCk" 和 "fuck" 将被同等对待
.ignoreCase(true)
// 忽略全角和半角字符的区别,例如:"fuck" 和 "fuck" 将被同等对待
.ignoreWidth(true)
// 启用连续数字检测, 可用于检测电话号码、QQ号等
.enableNumCheck(true)
// 启用邮箱地址检测,可用于过滤包含邮箱地址的文本
.enableEmailCheck(true)
// 初始化敏感词过滤器, 这一步必须在所有配置完成后调用
.init();
// 使用配置好的过滤器检查文本是否包含敏感词
boolean contains = wordBs.contains(text);
自定义敏感词库
SensitiveWordBs bs = SensitiveWordBs.newInstance()
.wordDeny(new IWordDeny() {
@Override
public List<String> deny() {
return List.of("dqn");
}
}).init();
String s = "我是dqn";
String first = bs.findFirst(s);
System.out.println(first);