当前位置: 首页 > news >正文

WordShield 一款轻量级且灵活的敏感词过滤库

简介

WordShield 是一款轻量级且灵活的敏感词过滤库,基于 Spring Boot 构建。它提供了简单易用的 API,用于过滤和管理敏感词汇。

特性

敏感词过滤:自动过滤字符串中的敏感词汇。
默认敏感词列表:内置预设的敏感词列表。
可定制敏感词列表:支持从指定路径加载自定义敏感词列表。
动态管理:允许动态添加或移除敏感词。
Spring Boot 集成:自动在应用上下文中注册 SensitiveWordFilter Bean。

快速开始

准备工作

Java 8 或更高版本
Spring Boot 2.x 或更高版本
Maven 或 Gradle

添加依赖

Maven
在 pom.xml 文件中添加以下依赖:

<dependency><groupId>io.github.avidbyte</groupId><artifactId>wordshield</artifactId><version>1.0.0</version>
</dependency>

Gradle
在 build.gradle 文件中添加以下依赖:

dependencies {implementation 'io.github.avidbyte:wordshield:1.0.0'
}

使用方法

初始化过滤器
添加依赖后,SensitiveWordFilter Bean 会被自动注册。您可以在服务类中直接使用它:

import io.github.avidbyte.wordshield.SensitiveWordFilter;@Slf4j
@Service
public class ContentService {private final SensitiveWordFilter sensitiveWordFilter;public ContentService(SensitiveWordFilter sensitiveWordFilter) {this.sensitiveWordFilter = sensitiveWordFilter;}public String filterContent(String content) {SensitiveWordResult sensitiveWordResult = sensitiveWordFilter.checkAndFilter(content, "*");log.info("文本: {} 是否是敏感词: {}", content, sensitiveWordResult.isContainsSensitiveWord());log.info("文本: {} 敏感词处理结果: {}", content, sensitiveWordResult.getFilteredText());}
}

自定义敏感词列表

默认情况下,库会加载预设的敏感词列表。不过,您也可以通过提供文件路径来自定义敏感词列表:

在 application.yml 配置

sensitive:word:loadDefault: falsesource: filefilePath: /opt/sensitive_word.txt

loadDefault 为 true, wordshield 会先加载预设的敏感词列表, 如果不希望使用预设的敏感词列表, 就将 loadDefault 设置为 false

其他数据来源: database, api, etc. 可以通过这种方式加载

sensitive:word:loadDefault: falsesource: database

当前配置 wordshield 不会加载预设的敏感词, 敏感词库完全是空的, 需要使用者自己调用新增敏感词的方法构造敏感词库
通过这四个方法也可以动态地管理敏感词列表

import io.github.avidbyte.wordshield.SensitiveWordFilter;@Service
public class ContentService {private final SensitiveWordFilter sensitiveWordFilter;public ContentService(SensitiveWordFilter sensitiveWordFilter) {this.sensitiveWordFilter = sensitiveWordFilter;}public String addSensitiveWords(List<String> words) {sensitiveWordFilter.addSensitiveWords(words);}public String addSensitiveWord(String word) {sensitiveWordFilter.addSensitiveWord(word);}public String removeSensitiveWords(List<String> words) {sensitiveWordFilter.removeSensitiveWords(words);}public String removeSensitiveWord(String word) {sensitiveWordFilter.removeSensitiveWord(word);}}

http://www.mrgr.cn/news/17636.html

相关文章:

  • 百日草花语探秘:天长地久的情感寄托与丰富内涵解析
  • 注册中心技术选型
  • 模型 U型思考法(深度思考)
  • FPGA搭建XDMA中断模式的PCIE通信架构,简单读写测试,提供7套工程源码和技术支持
  • 华为OD机试真题 - 跳马 - 广度优先搜索BFS(Python/JS/C/C++ 2024 D卷 200分)
  • C++手撕简易list
  • 为基于物联网的监测应用构建边缘云连续体架构
  • 基于CloudflareSpeedTest项目实现git clone加速
  • k8s相关技术栈
  • 问:JAVA中的强、软、弱、虚引用的特点和差异是什么?
  • DL/T645-2007_Part2(参变量数据标识编码表)
  • Hystrix 断路器:微服务中的自我保护
  • 如何打破Java双亲委派模型
  • 录旧文一篇《给知识分分等级》
  • 【简单】 猿人学web第一届 第15题 备周则意怠,常见则不疑
  • 【高中数学/基本不等式】若正数a,b满足a>b,且1/(a+b)+1/(a-b)=1,则3a+2b的最小值是?
  • 微软最新轻量级、多模态Phi-3.5-vision-instruct模型部署
  • 跨语言障碍:全球语言翻译神器崛起
  • 可解释性和公平性在深度学习中的应用
  • 【C++】vector(下)--下篇