Java实现自定义敏感词库过滤

article/2025/9/19 12:39:51

最近接到一个需求,要添加一个敏感词管理模块,一如既往的CURD,敏感词我们添加到了自己的库里。然后进行一个自定义敏感词过滤,话不多说直接贴代码

1、工具类

这里只是最简单的得到敏感词进行转换,可以根据自己的业务需求进行填充

package com.zylc.bixiang.business.keywords.web;import com.zylc.bixiang.business.keywords.domain.repository.BXKeyWordsMapper;
import com.zylc.bixiang.business.keywords.domain.vo.BXKeyWordsVO;
import org.springframework.beans.factory.annotation.Autowired;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;/*** @author admin* @Description: 敏感词过滤 工具类* @Date : 2021/10/28 10:21* @Modified By :*/
public class SensitiveWordFilter {@AutowiredBXKeyWordsMapper bxKeyWordsMapper;//初始化private StringBuilder replaceAll;private String encoding = "UTF-8";private String replceStr = "*";private int replceSize = 500;private List<BXKeyWordsVO> keyWordsVOS;/*** @param str 将要被过滤信息* @return 过滤后的信息*/public String filterInfo(String str) {StringBuilder buffer = new StringBuilder(str);HashMap<Integer, Integer> hash = new HashMap<Integer, Integer>(keyWordsVOS.size());String temp;for (int x = 0; x < keyWordsVOS.size(); x++) {temp = keyWordsVOS.get(x).getValue();int findIndexSize = 0;for (int start = -1; (start = buffer.indexOf(temp, findIndexSize)) > -1; ) {//从已找到的后面开始找findIndexSize = start + temp.length();//起始位置Integer mapStart = hash.get(start);//满足1个,即可更新mapif (mapStart == null || (mapStart != null && findIndexSize > mapStart)) {hash.put(start, findIndexSize);}}}Collection<Integer> values = hash.keySet();for (Integer startIndex : values) {Integer endIndex = hash.get(startIndex);buffer.replace(startIndex, endIndex, replaceAll.substring(0, endIndex - startIndex));}hash.clear();return buffer.toString();}/*** 初始化敏感词库*/public void InitializationWork() {replaceAll = new StringBuilder(replceSize);for (int x = 0; x < replceSize; x++) {replaceAll.append(replceStr);}//加载词库keyWordsVOS = bxKeyWordsMapper.findAllKeywords();}public StringBuilder getReplaceAll() {return replaceAll;}public void setReplaceAll(StringBuilder replaceAll) {this.replaceAll = replaceAll;}public String getReplceStr() {return replceStr;}public void setReplceStr(String replceStr) {this.replceStr = replceStr;}public int getReplceSize() {return replceSize;}public void setReplceSize(int replceSize) {this.replceSize = replceSize;}public void setEncoding(String encoding) {this.encoding = encoding;}
}

3、因为我们业务有敏感级别,我要得到每个敏感词和相对应的级别,所以上方初始化词库用的集合对象 

 

 


http://chatgpt.dhexx.cn/article/F4u21ocL.shtml

相关文章

node实现敏感词过滤及敏感词库

核心代码 import * as fs from fs; import * as path from path; import * as readline from readline;export default class BadWords {private static _instance: BadWords;private data: Array<string> [];constructor () {const files fs.readdirSync(path.resol…

百度内容审查做敏感词库筛选

最近在做项目的敏感词库筛选更新。笔者最终的目标是通过百度API将现有的敏感词库筛选更新成。 一、准备工作 读者需在百度智能云登陆账号&#xff0c;然后开通百度内容审核功能&#xff0c;然后根据API Key和Secret Key可以获得调用接口所需的access_token。 二、代码调用API…

敏感词过滤之——自定义构建查询词库与快速查询实现

关于敏感词过滤的一点思考与实践 业务场景思考与研究逻辑分析代码实现(php)构建敏感词树分割字符串敏感词树长分支的递归实现读取敏感词库 敏感词树的查询查询实现调用 测试、分析与总结 业务场景 最近在公司维护的小程序上&#xff0c;遇到一个需要用到敏感词过滤功能的业务模…

计算机网络网络协议与网络结构

协议三要素 语法syntax&#xff1a;数据与控制信息的结构与格式&#xff0c;信号与电平 语义semantics&#xff1a;发出何种信息&#xff0c;做出何种响应&#xff0c;差错控制 时序timing&#xff1a;事件顺序 网络边缘 客户/服务器应用模型client/server&#xff1a;如we…

互联网网络协议 网络三种连接方式描述

学习笔记 目录 网络三种连接方式描述 子网掩码 网络三种连接方式描述 桥接模式: 使用外部统一网段,虚拟机可以和外部系统通讯,但是容易照成IP冲突 NAT模式: 网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突,外部地址不能访问内部虚拟系统应为虚拟系统是通过代理…

计算机网络 协议三要素

1. 语法&#xff1a;数据与控制信息的结构或特点 2.语义&#xff1a;需要发出何种控制信息&#xff0c;完成何种动作以及做出何种响应 3.同步&#xff1a;事件实现顺序的详细说明 例题&#xff1a;

网络协议 -- 最全的网络协议图

转载自&#xff1a;http://www.52im.net 图片较大&#xff0c;建议单击放大或者下载后查看

计算机术语mls指什么意思,了解计算机网络协议的原则与要素两者

计算机网络协议是有关计算机网络通信的一整套规则&#xff0c;或者说是为了进行数据交换而制订的规则、约定和标准。网络协议由语法、语义和时序三大要素组成。现在就跟着小编共同来学习一下&#xff1a;了解计算机网络协议的原则与要素两者。 想必不需要小编多说&#xff0c;大…

网络协议介绍

一、什么是协议 协议&#xff0c;就是大家共同遵守的一些约定&#xff0c;协议是一种约定&#xff0c;是指通信双方共同指定的一个标准约定 举两个例子&#xff1a; 例子1&#xff1a;一个宿舍的人来自五湖四海&#xff0c;开学来到宿舍后&#xff0c;如果大家都说自己家乡的…

计算机网络协议层次

计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。计算机网络协议同我们的语言一样&#xff0c;多种多样。 为了给网络协议的设计提供一个结构&#xff0c;网络设计者以分层的方式组织协议。 一个协…

网络协议是什么 网络协议三要素是什么

本文向大家详细介绍网络协议是什么以及网络协议三要素是什么的基础知识&#xff0c;不懂的朋友可以通过本文了解学习 网络协议是什么 网络协议的定义&#xff1a;为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 一个网络协议至少包括三要素: 语法&#xff1a;用来…

常见网络协议

一、网络协议 二、TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09; TCP头格式 TCP协议中的三次握手和四次挥手 TCP报文抓取工具三、HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09; 请求报…

网络通信的三要素

一、要素一&#xff1a;IP地址 设备在网络中的地址&#xff0c;是唯一的标识。 IP地址&#xff1a; IP&#xff08;Internet Protocol&#xff09;&#xff1a;全称”互联网协议地址”&#xff0c;是分配给上网设备的唯一标志。 常见的IP分类为&#xff1a;IPv4和IPv6 I…

计算机中的网络协议包括哪些,网络协议三要素有什么关系

网络协议三要素有什么关系?为进行计算机网络中的数据交换而建立的规则、标准或约定的集合&#xff0c;协议总是指某一层的协议。准确地说&#xff0c;它是对同等层实体之间的通信制定的有关通信规则或约定的结合。佰佰安全网看看吧。 一个网络协议至少包括三要素: 语法&#x…

网络协议概述(一)

目录 一、协议三要素 二、常用的网络协议 2.1 由url确定目标ip地址&#xff08;DNS协议&#xff09; 2.2 打包需要发送的信息&#xff08;http/https协议&#xff09; 2.3 有应用层到传输层&#xff08;TCP协议保证应用层包一定送达&#xff09; 2.4 有传输层到达网络层&…

推荐:大视频免费压缩成指定大小的小视频的解决方法

给大家推荐一款好用的视频压缩软件MOO0视频压缩器&#xff0c;免费压缩&#xff0c;可选压缩画质&#xff0c;小巧便捷&#xff0c;这款软件不像某捷、某云这些软件&#xff0c;不花钱的话你是没办法压缩大文件的 云盘下载&#xff1a; 链接: https://pan.baidu.com/s/1ZUOi7…

如何下载网页中的小视频

想要下载页面中的视频&#xff0c;但是页面中却没有下载选项&#xff1f;教你一招 具体步骤&#xff1a; 一、打开开发者工具。 二、打开网络窗口。 三、刷新页面。 四、右键链接在新标签页中打开。 五、在右下角找到下载选项。 一、开发者工具是用于审查网页元素和查看网页源代…

视频观看小站

[在此处输入文章标题] 这种网站&#xff0c;永远不嫌多~ 视频小站&#xff0c;一次性满足所有观影需求&#xff01; 低端影视&#xff1a;https://ddrk.me/ 优点&#xff1a;1080P全高清均可观看&#xff0c;无广告&#xff0c;支持站内搜索&#xff0c;观影体验不错。 http:/…

如何压缩视频?教你几个简单的视频压缩方法

怎么将视频给压缩一下呢&#xff1f;通过压缩视频&#xff0c;可以减小视频的大小&#xff0c;从而减少需要存储的视频体积&#xff0c;节省存储空间。虽然视频压缩可能会降低视频的清晰度&#xff0c;但是如果压缩比例得当&#xff0c;仍然可以保持较好的视频观看质量&#xf…