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

devtools/2024/12/22 22:39:19/

简介

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

github 地址:

https://github.com/avidbyte/wordshield

特性

敏感词过滤:自动过滤字符串中的敏感词汇。
默认敏感词列表:内置预设的敏感词列表。
可定制敏感词列表:支持从指定路径加载自定义敏感词列表。
动态管理:允许动态添加或移除敏感词
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 会被自动注册。您可以在服务类中直接使用它:

java">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 不会加载预设的敏感词, 敏感词库完全是空的, 需要使用者自己调用新增敏感词的方法构造敏感词
通过这四个方法也可以动态地管理敏感词列表

java">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.ppmy.cn/devtools/107427.html

相关文章

CargosettlementController

目录 1、 CargosettlementController 1.1、 货商结算 1.1.1、 //登录用户 1.2、 结算单号 1.2.1、 //查询供应商账单 1.2.2、 //单号 1.2.3、 //单据日期 1.2.4、 //付款状态 CargosettlementController using QXQPS.Models; using QXQPS.Vo; using System…

使用Natapp内网穿透工具,将内网地址映射为外网地址

最近由于项目需要&#xff0c;测试小程序在手机端的显示效果&#xff0c;自己电脑本地的内网地址访问不到&#xff0c;所以需要将内网地址映射为外网地址&#xff0c;这样外网就能访问我的内网项目地址了。 路由器映射成功之后发现不是公网ip&#xff0c;外网无法访问。在网上…

MySQL5.7.36之高可用架构部署-Atlas读写分离

1、安装Atlas-2.2.1.el6.x86_64.rpm rpm -ivh Atlas-2.2.1.el6.x86_64.rpm 2、进入Atlas目录并且备份配置文件 cd /usr/local/mysql-proxy/conf cp test.cnf test.cnf.bak 3、密码加密采用的是自带的工具 /usr/local/mysql-proxy/bin/encrypt 123456 #因为我的密码是12345…

JVM运行时数据区

JVM运行时数据区 1.概述 内存是非常重要的系统资源&#xff0c;是硬盘和CPU 的中间仓库及桥梁承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略&#xff0c;保证了JVM的高效稳定运行不同的JVM对于内存的划分方式和管理机制…

2408wtl,解析快捷方式

原文 介绍 快捷方式是扩展名为每个文件都包含一个另一个文件的特殊COM对象的.lnk的文件. 一般,试打开.lnk文件时,系统会打开此快捷方式指向文件. 以下实验.在某处创建一个(扩展名为.txt的文件)文本文件.然后创建一个此文件的快捷方式. 然后试用字打开快捷方式,使用File->…

进程的那些事——了解进程(虚拟地址空间)

目录 前言 一、程序地址空间&#xff08;虚拟地址空间&#xff09; 二、虚拟地址寻找物理内存 1.页表 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 程序和进程之间的区别&#xff1a; 进程&#xff1a;对用户而言&#xff0c;进程是运行中的…

【gtokentool】什么是数字货币?怎么使用?

一、什么是数字货币 数字货币是一种基于密码学原理&#xff0c;独立于传统银行体系运行的电子货币形式。数字货币具有以下特点&#xff1a; 去中心化&#xff1a;数字货币采用去中心化的交易验证方式&#xff0c;不依赖于任何中央机构或政府。安全性高&#xff1a;通过加密算法…

Windows下安装ELK8(elasticsearch、logstash、kibana)及相关工具插件

目录 概述 ELK简介 安装elasticsearch 下载elasticsearch 解压 配置不用登录及关闭SSL 启动elasticsearch 访问elasticsearch 安装elasticsearch-head 提前准备node.js 下载elasticsearch-head 解压 浏览器打开index.html 安装kibana 下载kibana 解压 运行kib…