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

分享 GitHub 上的敏感词汇工具类:sensitive-word

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

分享 GitHub 上的敏感词汇工具类:sensitive-word

  • 前言
  • 介绍sensitive-word
  • SpringBoot使用sensitive-word
  • 敏感词工具类的优缺点总结
  • 结语

前言

在网络世界中,对于敏感词汇的过滤是保障用户体验和维护网络环境的一项基础工作。常见的比如社交平台、论坛、聊天应用等场景,涉及到用户言论都需要考虑内容的敏感性处理,本文将为大家介绍一款GitHub上开源好用的好用敏感词工具sensitive-word

在这里插入图片描述
目前已经有1.4KStar,项目地址 : https://github.com/houbb/sensitive-word

介绍sensitive-word

sensitive-word 是基于 DFA 算法实现的高性能敏感词工具。目前敏感词库内容收录 6W+且不断优化更新。

特性

  • 6W+ 词库,且不断优化更新

  • 基于 fluent-api 实现,使用优雅简洁

  • 基于 DFA 算法,性能为 7W+ QPS,应用无感

  • 支持敏感词的判断、返回、脱敏等常见操作

  • 支持常见的格式转换

  • 全角半角互换、英文大小写互换、数字常见形式的互换、中文繁简体互换、英文常见形式的互换、忽略重复词等

  • 支持敏感词检测、邮箱检测、数字检测、网址检测等

  • 支持自定义替换策略

  • 支持用户自定义敏感词和白名单

  • 支持数据的数据动态更新(用户自定义),实时生效

  • 支持敏感词的标签接口

  • 支持跳过一些特殊字符,让匹配更灵活

SpringBoot使用sensitive-word

在开发java项目中,想使用sensitive-word其实非常简单,只需要maven引入依赖就可以当作一个工具类调用其方法即可使用

maven引入依赖

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

SensitiveWordHelper 作为敏感词的工具类,核心方法如下:
在这里插入图片描述
接下来我们编写相关测试类,来测试对应方法

public class Test {public static void main(String[] args) {//是否有敏感词存在String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";Assert.assertTrue(SensitiveWordHelper.contains(text));//返回第一个敏感词String word = SensitiveWordHelper.findFirst(text);Assert.assertEquals("五星红旗", word);//返回所有敏感词List<String> wordList = SensitiveWordHelper.findAll(text);Assert.assertEquals("[五星红旗, 毛主席, 天安门]", wordList.toString());//默认的替换策略String result = SensitiveWordHelper.replace(text);Assert.assertEquals("****迎风飘扬,***的画像屹立在***前。", result);//指定替换的内容String result = SensitiveWordHelper.replace(text, '0');Assert.assertEquals("0000迎风飘扬,000的画像屹立在000前。", result);}
}

自定义替换策略

场景说明:有时候我们希望不同的敏感词有不同的替换结果。比如【游戏】替换为【电子竞技】,【失业】替换为【灵活就业】

/*** 自定替换策略* @since 0.2.0*/
@Test
public void defineReplaceTest() {final String text = "五星红旗迎风飘扬,毛主席的画像屹立在天安门前。";ISensitiveWordReplace replace = new MyWordReplace();String result = SensitiveWordHelper.replace(text, replace);Assert.assertEquals("国家旗帜迎风飘扬,教员的画像屹立在***前。", result);
}
public class MyWordReplace implements IWordReplace {@Overridepublic void replace(StringBuilder stringBuilder, final char[] rawChars, IWordResult wordResult, IWordContext wordContext) {String sensitiveWord = InnerWordCharUtils.getString(rawChars, wordResult);// 自定义不同的敏感词替换策略,可以从数据库等地方读取if("五星红旗".equals(sensitiveWord)) {stringBuilder.append("国家旗帜");} else if("毛主席".equals(sensitiveWord)) {stringBuilder.append("教员");} else {// 其他默认使用 * 代替int wordLength = wordResult.endIndex() - wordResult.startIndex();for(int i = 0; i < wordLength; i++) {stringBuilder.append('*');}}}
}

我们针对其中的部分词做固定映射处理,其他的默认转换为 *

敏感词工具类的优缺点总结

优点

  • 高效性: 敏感词的存储和检测采用了高效的数据结构和算法,能够在很短的时间内完成检测。
  • 易扩展: Trie 树的结构使得添加、删除敏感词非常方便,同时 AC 自动机算法保证了高效的匹配。

缺点

  • 内存占用: 敏感词库的存储需要一定的内存,随着敏感词数量的增加,内存占用也会相应增加。

结语

GitHub 上的 sensitive-word 工具类是一个功能强大且高效的敏感词汇检测工具。通过简单的引入测试相信大家已经使用方法有了一定了解,这样我们可以在项目中更好地保障用户信息的安全,维护良好的网络环境

相关文章:

分享 GitHub 上的敏感词汇工具类:sensitive-word

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…...

洛谷P1319 压缩技术(C语言)

这样一道入门题目&#xff0c;本来可以用for循环直接操作&#xff0c;但作者异想天开(xian de dan teng)地把所有数据登记在一个数组里面&#xff0c;然后再统一按格式输出。也就是定义一个数组Map&#xff0c;大小为n成n&#xff0c;然后按照输入数据&#xff0c;把Map中每一个…...

HQL,SQL刷题简单查询,基础,尚硅谷

今天刷SQL简单查询&#xff0c;大家有兴趣可以刷一下 目录 相关表数据&#xff1a; 题目及思路解析&#xff1a; 总结归纳&#xff1a; 知识补充&#xff1a; 关于LIKE操作符/运算符 LIKE其他使用场景包括 LIKE模糊匹配情况 相关表数据&#xff1a; 1、student_info表 2、sc…...

MSG3D

论文在stgcn与sta-lstm基础上做的。下面讲一下里面的方法&#xff1a; 1.准备工作 符号。这里是对符号进行解释。 一个人体骨骼图被记为G(v,E) 图卷积&#xff1a; 图卷积定义 考虑一种常用于处理图像的标准卷积神经网络 (CNN)。输入是像素网格。每个像素都有一个数据值向…...

kafka(二)——常用命令

常用脚本 kafka执行脚本默认在安装的bin目录下&#xff0c;本文中示例均基于bin目录执行。 #查询topic状态&#xff0c;新建&#xff0c;删除&#xff0c;扩容 kafka-topics.sh #查看&#xff0c;修改kafka配置 kafka-configs.sh #配置&#xff0c;查看kafka集群鉴权信息 kaf…...

使用Flink处理Kafka中的数据

目录 使用Flink处理Kafka中的数据 前提&#xff1a; 一&#xff0c; 使用Flink消费Kafka中ProduceRecord主题的数据 具体代码为&#xff08;scala&#xff09; 执行结果 二&#xff0c; 使用Flink消费Kafka中ChangeRecord主题的数据 具体代码(scala) 具体执行代码① 重要逻…...

跟着pink老师前端入门教程-day07

去掉li前面的项目符号&#xff08;小圆点&#xff09; 语法&#xff1a;list-style: none; 十五、圆角边框 在CSS3中&#xff0c;新增了圆角边框样式&#xff0c;这样盒子就可以变成圆角 border-radius属性用于设置元素的外边框圆角 语法&#xff1a;border-radius:length…...

Pixelmator Pro Mac版 v3.5 图像处理软件 兼容 M1/M2

在当今数字化时代&#xff0c;图像编辑软件成为了许多人必备的工具之一。无论您是摄影师、设计师还是普通用户&#xff0c;您都需要一款功能强大、易于使用的图像编辑软件来处理和优化您的照片和图像。而Pixelmator Pro for Mac正是满足这一需求的理想选择。 Pixelmator Pro f…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(15)-Fiddler弱网测试,知否知否,应是必知必会

1.简介 现在这个时代已经属于流量时代&#xff0c;用户对于App或者小程序之类的操作界面的数据和交互的要求也越来越高。对于测试人员弱网测试也是需要考验自己专业技术能力的一种技能。一个合格的测试人员&#xff0c;需要额外关注的场景就远不止断网、网络故障等情况了。还要…...

【vscode】远程资源管理器自动登录服务器保姆级教程

远程资源管理器自动登录服务器 介绍如何配置本地生成rsa服务端添加rsa.pub配置config文件 介绍 vscode SSH 保存密码自动登录服务器 对比通过账号密码登录&#xff0c;自动连接能节约更多时间效率&#xff0c;且通过vim修改不容易发现一些换行或者引号导致的错误&#xff0c;v…...

写点东西《Javascript switch 语句的替代方法》

写点东西《Javascript switch 语句的替代方法》 那么 switch 语句有什么问题&#xff1f; Object Literal 查找的替代方法 将我们学到的东西变成一个实用函数 您需要的一切都在一个地方# [](#javascript-version) Javascript 版本Tyepscript version&#x1f31f;更多精彩 本文…...

python学习笔记10(循环结构2)

&#xff08;一&#xff09;循环结构2 1、扩展模式 语法&#xff1a; for 循环变量 in 遍历对象&#xff1a; 语句块1 else: 语句块2 说明&#xff1a;else在循环结束后执行&#xff0c;通常和break和continue结合使用 2、无限循环while while 表达式&#xff1a; 语句块…...

Codefroces 191A - Dynasty Puzzles

思路 d p dp dp d p i , j dp_{i,j} dpi,j​ 表示以 i i i 开始以 j j j 结尾的最长长度。方程&#xff1a; d p j , r m a x ( d p j , l , d p j , l l e n g t h l , r ) dp_{j,r}max(dp_{j,l}\;,\;dp_{j,l}length_{l,r}) dpj,r​max(dpj,l​,dpj,l​lengthl,r​) 有点区…...

HIVE中关联键类型不同导致数据重复,以及数据倾斜

比如左表关联键是string类型&#xff0c;右表关联键是bigint类型&#xff0c;关联后会出现多条的情况 解决方案&#xff1a; 关联键先统一转成string类型再进行关联 原因&#xff1a; 根据HIVE版本不同&#xff0c;数据位数上限不同&#xff0c; 低版本的超过16位会出现这种…...

CRM系统是如何解决企业的痛点的?

在当今竞争激烈的商业世界中&#xff0c;客户关系管理&#xff08;CRM&#xff09;数字化转型已经成为大企业成功的重要秘诀。大型跨国公司如亚马逊、苹果和微软等已经在CRM数字化方面走在了前列&#xff0c;实现了高度个性化的客户体验&#xff0c;加强了客户忠诚度。 然而&a…...

系统架构14 - 软件工程(2)

需求工程 需求工程软件需求两大过程三个层次业务需求(business requirement)用户需求(user requirement)功能需求 (functional requirement)非功能需求 概述活动阶段需求获取基本步骤获取方法 需求分析三大模型数据流图数据字典DD需求定义方法 需求验证需求管理需求基线变更控制…...

vue封装接口

目录 封装接口前缀 配置逻辑 接口存放文件 配置代理 获取数据方法 封装接口前缀 config.js const serverConfig {baseURL: "https://xxx.xxxxxxxx.com/api", // 请求基础地址,可根据环境自定义useTokenAuthorization: false, // 是否开启 token 认证};export …...

Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/1eaTQeX-LnPJwWt3fBJD8lg?pwdajy2 提取码&#xff1a;ajy2 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式&#xff1a;esd/wim/swm 安装方式&am…...

elasticsearch的拼音分词器安装

安装拼音分词器 第一步&#xff1a;下载 要实现根据字母做补全&#xff0c;就必须对文档按照拼音分词。在 GitHub 上恰好有 elasticsearch 的拼音分词插件。地址&#xff1a; 仓管的主页&#xff1a; https://github.com/infinilabs/analysis-pinyin 仓管的版本页 https:…...

2024阿里云优惠,云服务器61元一年起

2024年最新阿里云主机价格&#xff0c;最低配置2核2G3M起步&#xff0c;只要61元一年&#xff0c;还可以在阿里云CLUB中心领券 aliyun.club 专用满减优惠券。 1、云服务器ECS经济型e实例2核2G、3M固定带宽99元一年 2、轻量应用服务器2核2G3M带宽轻量服务器一年61元 3、阿里云轻…...

视频画面匹配软件 影视片段匹配软件出售 创作效率提升 速橙软件-相同视频片段匹配系统

免费下载链接&#xff1a;http://www.suchengai.cn/作为一名视频创作者或影视解说博主&#xff0c;你是否经常面临这样的困境&#xff1f;为了制作一个10分钟的视频解说&#xff0c;需要花费数小时甚至一整天的时间&#xff0c;在原始影片中手动查找和剪辑对应的片段。这不仅效…...

5G NR实战:LDPC与Polar编码在真实场景中的选择与优化技巧

5G NR实战&#xff1a;LDPC与Polar编码在真实场景中的选择与优化技巧 当你在基站调试现场遇到突发的大流量视频传输需求&#xff0c;或是需要为工业自动化设备配置毫秒级响应的控制信道时&#xff0c;编码方案的选择往往决定着整个通信系统的成败。LDPC和Polar这对5G NR的"…...

BGE-Reranker-v2-m3为何必须用?RAG幻觉过滤入门必看

BGE-Reranker-v2-m3为何必须用&#xff1f;RAG幻觉过滤入门必看 如果你正在搭建RAG系统&#xff0c;或者已经搭建了但总觉得回答质量时好时坏&#xff0c;经常出现“幻觉”——也就是模型一本正经地胡说八道——那你很可能遇到了一个核心问题&#xff1a;向量检索“搜不准”。…...

ClawdBot代码实例:修改clawdbot.json实现模型热切换实操

ClawdBot代码实例&#xff1a;修改clawdbot.json实现模型热切换实操 1. 引言&#xff1a;你的个人AI助手&#xff0c;想换模型就换模型 想象一下&#xff0c;你有一个24小时在线的AI助手&#xff0c;它能帮你写代码、回答问题、整理文档。但用久了&#xff0c;你可能会想&…...

基于大数据 Spark+Hadoop+Hive的中国不同城市奶茶品牌的影响力分析

前言现如今在中国市场中&#xff0c;奶茶行业以其别具一格的魅力和庞大的年轻消费群体&#xff0c;具备一些研究价值。伴随着消费者需求的日益多样化和市场竞争的逐步激烈&#xff0c;奶茶品牌在中国不同城市的影响力呈现出显著的差异。本研究基于这一背景&#xff0c;以中国不…...

保姆级教程:手把手教你用GLM-4v-9b搭建图片问答机器人

保姆级教程&#xff1a;手把手教你用GLM-4v-9b搭建图片问答机器人 你是不是经常遇到这样的情况&#xff1a;看到一张复杂的图表&#xff0c;想快速了解里面的数据含义&#xff1b;或者收到一张产品图&#xff0c;想知道它的具体型号和功能&#xff1b;又或者辅导孩子作业时&am…...

提升物业服务满意度的物业管理小程序

一、首页核心服务入口基础功能模块&#xff1a;物业缴费、我的房产、通知公告、投诉建议、维修申报、小区活动、家政服务、优惠好物&#xff0c;覆盖业主日常高频需求信息与活动展示&#xff1a;顶部搜索栏&#xff1a;支持关键词检索&#xff0c;快速定位所需服务物业公告&…...

从Prompt到Agent:收藏这份LLM应用落地演进指南,小白程序员必备!

本文介绍了LLM应用落地的演进过程&#xff0c;从最初的Prompt工程阶段&#xff0c;到Chain编排阶段&#xff0c;再到最新的Agent阶段。文章详细阐述了每个阶段的原理、优缺点及应用实例&#xff0c;并提供了基于Golang的Agent实现示例。通过学习本文&#xff0c;读者可以了解LL…...

什么时候Agent能自己写skill?从极客视角看AI智能体自主进化与实在Agent落地实践

关于人工智能智能体&#xff08;AI Agent&#xff09;何时能够自主编写技能&#xff08;Skill&#xff09;这一课题&#xff0c;根据2026年4月1日的最新科技前沿动态分析&#xff0c;我们正处于从“人工定义技能”向“智能体自主生成与进化技能”跨越的关键转折点。当前的行业共…...

告别pip install失败:手把手教你用Anaconda虚拟环境快速部署Mayavi(Python 3.9亲测)

告别pip install失败&#xff1a;手把手教你用Anaconda虚拟环境快速部署Mayavi&#xff08;Python 3.9亲测&#xff09; 科学计算和三维可视化是Python生态中的重要应用场景&#xff0c;而Mayavi作为一款强大的三维数据可视化库&#xff0c;在流体力学、医学影像、地质勘探等领…...