sensitive - word 敏感词过滤工具介绍
最近工作中,我遇到了一个需求:对用户评论进行敏感词过滤。于是我开始了疯狂的研究,给我发现了一个非常好用的小工具——sensitive-word!今天就来给大家安利一下
一、工具介绍
sensitive - word 是 GitHub 上一款基于 DFA(Deterministic Finite Automaton)算法的高性能敏感词过滤工具。它的核心词库收录超过了 6 万条敏感词汇。这个工具以 7W+ QPS 的处理能力著称,可以无缝集成到各类需要内容审核的场景中,例如社交平台、电商评论区、在线教育系统等。
核心优势解读
-
算法与性能:采用 DFA 算法构建敏感词树,通过状态转移实现 O (n) 时间复杂度的高效匹配。测试数据显示,单机环境下对 10 万字文本的检测耗时仅需 14ms。
-
多维度处理策略:支持全角 / 半角互换、简繁体转换、英文大小写归一化、数字变形识别(如 "1" 与 "①" 等价)等复杂场景。
-
动态扩展能力:支持运行时动态更新敏感词库和白名单,实时生效无需重启服务。
那么什么是DFA算法呢?我给大家放在文末讲解了
二、功能模块详解与 API 实战
核心 API 方法详解
1、contains(String text)
-
功能:检测字符串是否包含敏感词。
-
参数:text(待检测的字符串)。
-
返回值:boolean(存在敏感词返回 true,否则 false)。
-
使用场景:快速验证文本是否需要脱敏处理。
-
示例:
String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
boolean hasSensitive = SensitiveWordHelper.contains(text); // 返回true
2、findFirst(String text)
-
功能:返回第一个匹配的敏感词。
-
参数:text(待检测的字符串)。
-
返回值:String(第一个敏感词,若无则返回 null)。
-
示例:
String firstWord = SensitiveWordHelper.findFirst(text); // 返回"五星红旗"
3、findAll(String text)
-
功能:返回所有敏感词列表。
-
参数:text(待检测的字符串)。
-
返回值:List(敏感词集合)。
-
示例:
List<String> words = SensitiveWordHelper.findAll(text); // 返回["五星红旗", "毛主席", "天安门"]
4、replace(String text)
-
功能:用默认符号 * 替换敏感词。
-
参数:text(待脱敏的字符串)。
-
返回值:String(脱敏后的文本)。
-
示例:
String result = SensitiveWordHelper.replace(text); // "****迎风飘扬,***的画像屹立在***前。"
5、replace(String text, char replaceChar)
-
功能:用指定字符替换敏感词。
-
参数:text(待脱敏的字符串),replaceChar(替换字符)。
-
返回值:String(脱敏后的文本)。
-
示例:
String result = SensitiveWordHelper.replace(text, '0'); // "0000迎风飘扬,000的画像屹立在000前。"
高级特性与配置
敏感词检测策略:通过 SensitiveWordBs 可灵活配置检测规则:
SensitiveWordBs wordBs = SensitiveWordBs.newInstance()
.ignoreCase(true) //