敏感词/脏词开源工具-sensitive-word
我们应该都遇见过敏感词过滤,比如当我们输入一些包含暴力或者色情的文本,系统会阻止信息提交。敏感词过滤就是检查用户输入的内容有没有敏感词,检查之后有两个策略。
1.直接阻止信息保存,接口返回错误信息
2.允许信息保存,但是会把敏感词替换为***
不管是哪种策略,首先都得找到是否包含敏感词,这个判断一般是在服务端完成的。

要判断用户输入有无敏感词,首先要知道哪些词语是敏感词,也就是得有个敏感词库。比如现在敏感词库里记录了两个敏感词:“abc”和“cde”,如何判断用户输入的内容里是否包含这两个敏感词呢?最容易想到的方法是遍历敏感词库,依次判断输入内容是否有“abc”和“cde”。这种方法是可靠的,但是真实的敏感词库里存放的敏感词是非常多的,这时候遍历敏感词库的性能比较低,而且大部分情况下用户输入的内容都是不包含敏感词的,这时需要完全遍历敏感词库,也就是说大部分情况下遇到的都是这个算法复杂度最高的情形。

有没有一种比较高效的方法来查找敏感词呢?DFA算法可以做到。
DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。
今天就介绍一个基于基于 DFA算法,性能较好敏感词工具类-sensitive word。
sensitive word功能特色
sensitive-word 是一个 Java 编写的敏感词过滤工具包,可以用于对文本中的敏感词进行过滤。该工具包提供了多种敏感词匹配算法,并支持自定义敏感词库和替换策略。使用该工具包可以有效地保护用户隐私,防止不良信息的传播。具体来说,sensitive-word 工具包提供了以下功能:
多种敏感词匹配算法,包括 DFA、AC 自动机等,可以根据实际需求选择合适的算法;
支持自定义敏感词库和替换策略,可以根据实际需求添加、删除或修改敏感词;
支持对文本中的敏感词进行替换或标记,可以根据实际需求选择合适的处理方式;
支持对敏感词进行分组,可以根据实际需求对敏感词进行分类管理。

总之,sensitive-word 工具包是一个功能强大、易于使用的敏感词过滤工具,可以帮助开发者快速、准确地对文本中的敏感词进行过滤,保护用户的隐私和安全。
除了上述功能,sensitive-word 工具包还有以下特点:
高性能:采用多种优化方式,如位图压缩、缓存预热等,可以提高敏感词匹配速度;
易于扩展:支持自定义敏感词库和替换策略,可以根据实际需求进行扩展;
易于集成:可以通过 Maven 或 Gradle 等构建工具进行集成,也可以直接下载源码进行使用;
开源免费:使用 Apache License 2.0 开源许可证,可以免费商用。

总之,sensitive-word 工具包是一个功能强大、性能高效、易于扩展和集成的敏感词过滤工具,适用于各种 Java 项目,可以帮助开发者提高开发效率和用户体验,减少不良信息的传播。
sensitive word集成使用
环境:
JDK1.7+
Maven 3.x+
Maven 引入:

在 resources 下添加文件:
文件以及文件内容如下
敏感: mySensitiveWords.txt
工具类:

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案