一万字带你了解 sensitive-word 敏感词过滤工具

sensitive - word 敏感词过滤工具介绍

最近工作中,我遇到了一个需求:对用户评论进行敏感词过滤。于是我开始了疯狂的研究,给我发现了一个非常好用的小工具——sensitive-word!今天就来给大家安利一下

一、工具介绍

sensitive - word 是 GitHub 上一款基于 DFA(Deterministic Finite Automaton)算法的高性能敏感词过滤工具。它的核心词库收录超过了 6 万条敏感词汇。这个工具以 7W+ QPS 的处理能力著称,可以无缝集成到各类需要内容审核的场景中,例如社交平台、电商评论区、在线教育系统等。

核心优势解读

  1. 算法与性能:采用 DFA 算法构建敏感词树,通过状态转移实现 O (n) 时间复杂度的高效匹配。测试数据显示,单机环境下对 10 万字文本的检测耗时仅需 14ms。

  2. 多维度处理策略:支持全角 / 半角互换、简繁体转换、英文大小写归一化、数字变形识别(如 "1" 与 "①" 等价)等复杂场景。

  3. 动态扩展能力:支持运行时动态更新敏感词库和白名单,实时生效无需重启服务。

那么什么是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)       //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值