谛听 - 轻量级高性能敏感词识别与数据脱敏组件
Diting 是一个轻量级、可扩展的敏感词识别组件,支持多种方式加载敏感词库(TXT 文件、JSON 文件、MySQL 数据库、Redis),并提供基于 AC 自动机的高效敏感词匹配功能。
在中国神话中,谛听是地藏菩萨座下的神兽,它耳听八方,能辨善恶,能识真伪,是守护正义的象征。我们的项目 谛听(Diting) ,正是以此为灵感,致力于成为敏感数据识别领域的“神兽”!它用“耳朵”聆听每一段文本,用“智慧”辨别每一个敏感词,守护您的数据安全与内容合规。
确保您的系统已安装以下软件:
git clone https://github.com/yourusername/diting.git
cd diting
mvn clean install
gradle clean build
Diting 的配置文件位于 src/main/resources/application.yml 或 application.properties。以下是一个使用 application.yml 的示例:
sensitive-word:
loaders:
txt:
enabled: true
filePath: classpath:sensitive_words.txt
delimiter: "\n"
json:
enabled: false
filePath: /path/to/sensitive_words.json
mysql:
enabled: false
table: sensitive_words
columns: word
conditions:
status: active
redis:
enabled: false
key: sensitive_words_key
default-loader:
enabled: true
| 属性 | 描述 | 类型 | 默认值 |
|---|---|---|---|
sensitive-word.loaders.txt.enabled | 是否启用 TXT 加载器 | boolean | false |
sensitive-word.loaders.txt.filePath | TXT 文件路径 | String | null |
sensitive-word.loaders.txt.delimiter | 分隔符 | String | "\n" |
sensitive-word.loaders.json.enabled | 是否启用 JSON 加载器 | boolean | false |
sensitive-word.loaders.json.filePath | JSON 文件路径 | String | null |
sensitive-word.loaders.mysql.enabled | 是否启用 MySQL 加载器 | boolean | false |
sensitive-word.loaders.mysql.table | MySQL 表名 | String | null |
sensitive-word.loaders.mysql.columns | 列名 | String | null |
sensitive-word.loaders.mysql.conditions | 查询条件 | Map<String, String> | {} |
sensitive-word.loaders.redis.enabled | 是否启用 Redis 加载器 | boolean | false |
sensitive-word.loaders.redis.key | Redis Key | String | null |
sensitive-word.default-loader.enabled | 是否启用默认加载器 | boolean | true |
注意:确保仅启用您需要的加载器,以优化性能和资源使用。
Diting 提供了 DitingUtil,可以在您的服务或控制器中直接调用其方法来检测和替换敏感词。
import com.rookie.diting.service.SensitiveWordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class YourService {
public void processText(String text) {
// 检测敏感词
boolean contains = DitingUtil.containsSensitiveWord(text);
if (contains) {
// 获取敏感词
Set<String> words = DitingUtil.getSensitiveWords(text);
// 替换敏感词
String sanitized = DitingUtil.replaceSensitiveWords(text, '*');
// 处理逻辑
System.out.println("包含敏感词:" + words);
System.out.println("替换后的文本:" + sanitized);
} else {
// 无敏感词处理逻辑
System.out.println("文本中不包含敏感词。");
}
}
}
谛听0.0.6以上版本提供了敏感词检测和脱敏工具的控制台,这是一个可选的功能,可以通过简单的配置快速启用。
<dependencies>
<!-- 敏感词检测组件 -->
<dependency>
<groupId>com.example</groupId>
<artifactId>diting-spring-boot-starter</artifactId>
<version>0.0.6</version>
</dependency>
<!-- Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Thymeleaf Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
注意:
- 如果项目中未引入 spring-boot-starter-web 和 spring-boot-starter-thymeleaf,控制台页面将无法正常运行。
- 如果你已经使用其他模板引擎(如 FreeMarker),可以根据需要替换 Thymeleaf,但需要自行重写页面模板。
在 application.yml 或 application.properties 文件中配置以下内容:
sensitive-word:
console:
enabled: true # 启用控制台功能
sensitive-word.console.enabled=true # 启用控制台功能
控制台功能 默认开启,如果需要关闭,可以将 sensitive-word.console.enabled 设置为 false。
当控制台功能启用后,启动项目后可以通过以下路径访问:
页面功能包含两个主要区域:
如果你需要自定义控制台页面,可以按以下步骤操作来覆盖默认模板文件
修改样式 :如果需要自定义页面样式,可以直接修改 Thymeleaf 模板中的 CSS,也可以引入你自己的样式文件。
如果需要自定义页面样式,可以直接修改 Thymeleaf 模板中的 CSS,也可以引入你自己的样式文件。

目前,Diting 主要提供了服务层的敏感词检测与替换功能。未来,我们计划引入以下功能以提升组件的易用性和集成性:
我们欢迎大家为这个项目做出贡献!如果你想贡献代码,请遵循以下步骤:
git checkout -b feature/your-feature-name)。git commit -am 'Add new feature')。git push origin feature/your-feature-name)。main 分支。在提交 Pull Request 前,请确保你的修改符合以下要求:
如果有任何问题或需要帮助,请随时创建一个 Issue,我们会尽快为你提供帮助。
本项目采用 MIT 许可证,允许个人、学术或商业用途的代码使用、修改、分发和再许可。
如果你有任何问题、建议或需要进一步了解项目的内容,可以通过以下方式联系我: