1.4K+Stars!开源的高性能敏感词工具

墨林一码农 2024-01-21 12:51:07

墨林码农专注分享开源项目, 精选开源社区技术干货,分享Github、Gitee上有趣、有价值的项目,一起学习,一起成长。

大家都知道几乎每一个web应用或游戏设计中,都需要做敏感词的过滤以及转换。为了应对越来越多的敏感词,寻找一个高效率的敏感词过滤算法就摆在了各个程序员的面前。目前业内公认的效率最高的就是 DFA 算法。

小编今天为大家分享这个开源项目也是基于DFA 算法实现:sensitive-word,用于过滤敏感词的 Java 库。一款高性能的敏感词过滤工具,词库共收录了 6w+ 内容,支持自定义敏感词、白名单、替换策略、数字常见形式的互换、忽略重复词等功能。

该项目在 GitHub 上的star数更是一路飙升到了1.4k。

️ 最新版本的功能特性6W+ 词库,且不断优化更新基于 fluent-api 实现,使用优雅简洁基于 DFA 算法,性能为 7W+ QPS,应用无感支持敏感词的判断、返回、脱敏等常见操作支持常见的格式转换全角半角互换、英文大小写互换、数字常见形式的互换、中文繁简体互换、英文常见形式的互换、忽略重复词等支持敏感词检测、邮箱检测、数字检测、网址检测等支持自定义替换策略支持用户自定义敏感词和白名单支持数据的数据动态更新(用户自定义),实时生效支持敏感词的标签接口支持跳过一些特殊字符,让匹配更灵活

性能测试

1、测试环境为普通的笔记本

处理器 12th Gen Intel(R) Core(TM) i7-1260P 2.10 GHz机带 RAM 16.0 GB (15.7 GB 可用)系统类型 64 位操作系统, 基于 x64 的处理器

2、测试数据:100+ 字符串,循环 10W 次。

不同环境会有差异,但是比例基本稳定。

如何使用

项目的使用非常简单快捷,具体步骤如下:

1、环境依赖:

JDK1.7+Maven 3.x+

2、在 pom 中引入依赖

<dependency> <groupId>com.github.houbb</groupId> <artifactId>sensitive-word</artifactId> <version>[最新版本]</version></dependency>3、判断是否包含敏感词final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";Assert.assertTrue(SensitiveWordHelper.contains(text)); 其他用法

1、返回第一个敏感词

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

2、返回所有敏感词

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";List<String> wordList = SensitiveWordHelper.findAll(text);

3、默认的替换策略,将敏感换为 *

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";String result = SensitiveWordHelper.replace(text);//输出:****迎风飘扬,***的画像屹立在***前。

4、指定替换的内容

final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";String result = SensitiveWordHelper.replace(text, '0');//输出: 0000迎风飘扬,000的画像屹立在000前。

5、邮箱检测

final String text = "楼主好人,邮箱 sensitiveword@xx.com";List<String> wordList = SensitiveWordHelper.findAll(text);Assert.assertEquals("[sensitiveword@xx.com]", wordList.toString());

此外,项目还提供了一个 IWordResultHandler 结果处理类,可以对敏感词的结果进行处理,允许用户自定义。在使用的时候更加灵活。小伙伴们可以参考项目的主页文档自行尝试。

整体来说,使用起来还是很简单,如果你需要做一个过滤敏感词的功能,或者你自己准备造一个类似的,可以了解一下,避免重复造轮子,非常方便!

结束语

几个简单的字符,就能创造出欢乐,

几个简单的号码,便能写出奇迹。

一个键盘,就能畅游世界,

一根网线,便能知晓天下。

创作不易,感谢大家的支持。后续也会分享更多的干货和技术资讯,您的阅读就是对小编的支持,再次感谢各位老铁!

1 阅读:176

墨林一码农

简介:感谢大家的关注