Go to file
2020-01-08 23:47:18 +08:00
2020-01-07 13:27:55 +08:00
2020-01-08 23:47:18 +08:00
2020-01-08 23:37:12 +08:00
2020-01-07 11:14:44 +08:00
2020-01-07 11:14:44 +08:00
2020-01-07 11:14:44 +08:00
2020-01-07 11:14:44 +08:00
2020-01-07 11:14:44 +08:00
2020-01-07 11:14:44 +08:00
2020-01-08 21:13:41 +08:00
2020-01-08 21:10:49 +08:00
2020-01-07 11:14:44 +08:00
2020-01-08 21:10:49 +08:00
2020-01-07 11:14:44 +08:00

sensitive-word

sensitive-word 基于 DFA 算法实现的敏感词工具。

Maven Central

创作目的

实现一款好用敏感词工具。

基于 DFA 算法实现,目前敏感词库内容收录 18W+ 感觉过于臃肿。

后期将进行相关优化,降低字典的数量。

希望可以细化敏感词的分类,感觉工作量比较大,暂时没有太好的思路。

后期目标

  • 持续扩容对应的敏感词(如合法的数据抓取)

  • 添加英文大小写忽略,全角半角忽略

  • 中文添加拼音相关转换,添加繁简体转换忽略

  • 允许用户自定义敏感词和白名单

快速开始

准备

  • JDK1.7+

  • Maven 3.x+

Maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive-word</artifactId>
    <version>0.0.3</version>
</dependency>

使用实例

所有测试案例参见 SensitiveWordBsTest

判断是否包含敏感词

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";

Assert.assertTrue(SensitiveWordBs.getInstance().contains(text));

返回第一个敏感词

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";

String word = SensitiveWordBs.getInstance().findFirst(text);
Assert.assertEquals("五星红旗", word);

返回所有敏感词

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";

List<String> wordList = SensitiveWordBs.getInstance().findAll(text);
Assert.assertEquals("[五星红旗, 毛主席, 天安门]", wordList.toString());

默认的替换策略

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
String result = SensitiveWordBs.getInstance().replace(text);
Assert.assertEquals("****迎风飘扬,***的画像屹立在***前。", result);

指定替换的内容

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";
String result = SensitiveWordBs.getInstance().replace(text, '0');
Assert.assertEquals("0000迎风飘扬000的画像屹立在000前。", result);
Description
👮‍♂️The sensitive word tool for java.(敏感词/违禁词/违法词/脏词。基于 DFA 算法实现的高性能 java 敏感词过滤工具框架。内置支持单词标签分类分级。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。高性能敏感词检测过滤组件,附带繁体简体互换,支持全角半角互换,汉字转拼音,模糊搜索等功能。)
Readme 5.7 MiB
Languages
Java 98.5%
Shell 1.1%
Batchfile 0.4%