极简版 Java 敏感词检测工具

文摘   2024-11-12 11:46   陕西  
今天给大家聊个轻量有趣的小工具:极简版的 Java 敏感词检测工具

虽然我知道咱们程序员没少见敏感词的身影,尤其是在各类内容审查和过滤需求中,但今天要介绍的这个工具,完全就是那种“够用就好”的代表。

它轻巧、简单,还兼具一系列方便的配置。

Step 1:准备工作——引入 Maven 依赖

这款工具其实是基于 com.github.houbb:sensitive-word:0.18.0 这个开源库的,所以第一步很简单,咱们直接引入 Maven 依赖。看看这个 Maven 配置:
<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive-word</artifactId>
    <version>0.18.0</version>
</dependency>
加上这几行代码,基本上就完成了初始化。还在担心环境配置?别慌,有了它,你就已经准备好了所有的工具。没有什么比把库加进来更轻松了!🎉

Step 2:核心方法使用实例

接下来就是重头戏——敏感词检测。这个库的核心功能主要围绕查找、替换敏感词展开,我们可以通过几行代码实现基本的敏感词过滤。

常规检测功能

  1. 查找敏感词
    想象一下,我们要检查一句话是否包含敏感词,比如“我今天吃了炸鸡”。假如我们想检查“炸鸡”是不是个敏感词,那可以这样:
    SensitiveWordHelper.containsSensitiveWord("我今天吃了炸鸡");
    上面这行代码返回一个布尔值,告诉你到底有没有这个敏感词。简单吧?
  2. 查找第一个敏感词
    如果你想知道这句话里的第一个敏感词是什么,可以用 findFirst 方法:
    String firstSensitiveWord = SensitiveWordHelper.findFirst("我今天吃了炸鸡");
    不过话说回来,一般来说大家可能更关心是不是所有敏感词都找出来了,所以更推荐用 findAll
  3. 查找所有敏感词
    要查找所有敏感词时,findAll 方法是你的好伙伴:
    List<String> allSensitiveWords = SensitiveWordHelper.findAll("我今天吃了炸鸡和啤酒");
    这个方法会返回所有的敏感词,万一客户想查出一句话里的所有“不和谐词汇”,这就派上用场了。
  4. 替换敏感词
    最后,这个工具还能替换敏感词,你可以指定替换字符,比如用“*”把敏感词打码:
    String replacedText = SensitiveWordHelper.replace("我今天吃了炸鸡"'*');
    输出就会变成“我今天吃了**”,话说这也太直接了😂。

Step 3:特性检测

有时候简单的敏感词检测还不够,这个库还提供了一些特别的检测功能。比如,忽略大小写啦,检测特殊字符啦,简繁体啦……基本上你能想到的,它都考虑到了。

1. 忽略大小写、特殊字符

这个功能特别适合那种“手段多样”的用户,比如“炸鸡”写成“Zha鸡”或者“炸J1”,这个库直接帮你识别了:
SensitiveWordHelper.ignoreCase().ignoreWidth().containsSensitiveWord("我今天吃了Zha鸡");
通过 .ignoreCase().ignoreWidth() 配置,你可以灵活设置检测规则。随意改大小写和字符宽度?不存在的,统统识别!👍

2. 支持简繁体检测

假如你的词库里都是简体字,而用户偏偏输入繁体字,这时候 .ignoreChineseStyle() 就很管用了:
SensitiveWordHelper.ignoreChineseStyle().containsSensitiveWord("我今天吃了炸雞");
这就像是让检测工具掌握了一种“火眼金睛”,不管对方怎么变都逃不过它的法眼。

3. 支持重复字符检测

很多人喜欢加重复字符来“绕过”检测,比如“炸鸡”写成“炸。。。鸡”,一般的过滤还真抓不住。但用上 .ignoreRepeat() 后,工具就可以识别出这些重复字符了:
SensitiveWordHelper.ignoreRepeat().containsSensitiveWord("我今天吃了炸。。。鸡");
这一点对咱们这些程序猿(程序员猩猩)们来说简直就是福音,告别“磨人”的检测规则,轻松精准抓取敏感词!

Step 4:更多检测策略(自定义)

最让我喜欢的一点来了——它还支持自定义检测和替换策略。你完全可以通过实现 IWordReplace 接口,定制属于你的敏感词替换逻辑。话不多说,直接上代码:

自定义替换策略

假如你不想用星号(*)来替换,而是想用“[屏蔽]”这样的文字来替换,可以这样写:
public class CustomWordReplace implements IWordReplace {
    @Override
    public String replace(String word) {
        return "[屏蔽]";
    }
}

// 使用自定义替换策略
SensitiveWordHelper.replace("我今天吃了炸鸡"new CustomWordReplace());
这样一来,每次检测到敏感词都会替换成“[屏蔽]”,看起来就更符合某些特定场景的需求。

Step 5:高级检测选项

除了基本的字符和敏感词检测之外,这个工具还有一些高级功能,比如邮箱、网址、IPv4 地址以及连续数字检测。举个例子,如果我们想检测一段文本中的邮箱,可以这样:
SensitiveWordHelper.containsSensitiveWord("我的邮箱是test@example.com");
检测地址和手机号码有点意思,一般来说,如果有网址或数字出现,它都能检测到。写个段子吧:想象下你的用户留言“我的网站是abc.com”,结果工具直接给你检测出来是个“敏感词”,这谁顶得住啊!

示例:IPv4 地址检测

网络时代,某些 IP 地址会涉及敏感内容。这个工具对 IPv4 地址的检测也是支持的,可以轻松识别:
SensitiveWordHelper.containsSensitiveWord("服务器IP为192.168.1.1");
以上这些检测特性对我们程序员来说尤其友好,特别是面对“聪明”的用户,有了这个工具,就像手握一个“万能钥匙”,不管对方怎么操作,我们都可以一眼识别到违规内容。
这个 Java 敏感词检测工具简单却不简单,不仅能完成各种基础检测,还能提供一系列高级功能,让你有种“一劳永逸”的轻松感。

-END-


ok,今天先说到这,老规矩,给大家分享一份不错的副业资料,感兴趣的同学找我领取。

以上,就是今天的分享了,看完文章记得右下角给何老师点赞,也欢迎在评论区写下你的留言

程序员老鬼
10年+老程序员,专注于AI知识普及,已打造多门AI课程,本号主要分享国内AI工具、AI绘画提示词、Chat教程、AI换脸、Chat中文指令、Sora教程等,帮助读者解决AI工具使用疑难问题。
 最新文章