【Java】如何设计一个敏感词过滤系统?

Java实现DFA算法敏感词过滤 Java实现DFA算法敏感词过滤。 文章目录一. 应用场景二. 实现思路三. 源码实现 一. 应用场景 模拟非法汇自动替换成*字符,且敏感词汇支持动态调整。 效果如下,若配置了敏感词:今天,则当用户在输入:今天,天气真不错。实际应该输出:** **,天气真不错 ** 二. 实现思路 使用MySQL作为敏感词库 使用DFA算法实现文字过滤 Q:什么是DFA? DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向. 阅读详情

 一、问题解析

下图是一个完整的文本审核流程,包括名单匹配、敏感词匹配、AI机器审核、人工审核四个环节。待审核文本需要顺次通过名单匹配、敏感词匹配、AI机器审核三个流程,若结果为嫌疑则需要人工审核,否则将直接给出确定的结果。

敏感词匹配功能可以迅速地匹配文本中的敏感词汇,算法平均耗时为50ms,因其简单、快速、直接、灵活的特点,成为了审核人员对抗垃圾文本的利器。然而身处信息爆炸时代的网民们非常“优秀”,他们源源不断的发明各种新词、谐音词来绕过敏感词检测。

例如某些用户会使用“啋票”、“采漂”等词汇来规避敏感词“彩票”,其中“啋票”不仅是谐音词,还包含多音字,常规的模式匹配算法很难保证完全命中。这不仅给运营规则带来挑战,也对匹配算法的精准度、漏杀率提出了要求。

本文将从算法选型入手,结合两个实际场景来介绍谛听系统的敏感词匹配算法。其中第一节介绍了底层算法选型思路,第二节介绍了两种实际场景下提升敏感词精准度、降低漏杀率的方案。

36.1 算法选型

敏感词匹配功能依托于模式匹配算法。模式匹配的定义是,给定一个子串,在某个字符串中找出与该子串相同的所有子串。其中给定的子串被称为模式串,被匹配的字符串被称为目标串。基于多个模式串进行匹配的算法被称为多模式匹配算法,目前成熟的多模式匹配算法有AC自动机和WM。

多模式匹配算法对比

AC自动机

WM

优势

匹配效率高模式串对匹配效率无影响

匹配效率高内存占用量少模式串预处理流程简单,速度快

劣势

内存占用量大模式串加载流程复杂,耗时较长

Java判断文本是否有敏感词 阅读详情

相关推荐

敏感词过滤Java 敏感词过滤

将不同长度的敏感词放入map中

m0_48296376的博客 942

常见的敏感词过滤方案汇总以及高效工具sensitive-word快速实践!

本文主要对目前常见的敏感词过滤方案进行汇总以及对GitHub热门开源sensitive-word项目介绍以及快速上手

qq_59622162的博客 1万+

基于DFA算法Java敏感词过滤系统设计与优化

本文详细介绍了基于DFA算法构建Java敏感词过滤系统设计与优化实践。针对传统遍历匹配的性能瓶颈,通过构建多叉树结构实现O(n)时间复杂度的快速匹配,并提供了完整的核心代码实现、动态库更新方案、高级优化技巧(如干扰符处理与性能压测)以及Spring Boot项目集成指南,助力开发者打造高效、可维护的内容安全系统

river的博客 175

敏感词过滤

敏感词过滤 敏感词过滤就是库匹配,你定义一个库,里面有很多敏感词,匹配到了就说明这个敏感词。 所以最简单的办法就是建立一个list,先把所有的敏感词读进这个list,然后再利用list的contains方法,就可以判断某一句话中是否有敏感词,如果有就弹个提示,告诉用户语句中有敏感词,禁止用户发送,但是如果须要把把敏感词屏蔽掉(比如用” * “号代替)这个时候contains方法就不行了,得...

西京刀客 1万+

Java面试场景题】如何设计一个敏感词过滤系统

AC自动机算法(Aho–Corasick算法)是一种字符串搜索算法,可以同时将目标串与所有模式串进行匹配,算法均摊情况下具有近似于线性的时间复杂度。AC自动机的匹配原理有两个核心概念:Trie字典树、Fail指针。下面以模式串集合{“she”, “he”, “shers”, “his”, “era”}为例,来介绍这两个概念。AC自动机算法启动时,需要将所有的模式串加载到内存中,构建成一个Trie字典树。

JAVA_aik的博客 1246

敏感词过滤系统设计,基于Java的DFA与AC自动机实现深度对比

解决敏感词高效过滤难题,基于Java实现DFA与AC自动机的深度对比,涵盖文本审核、聊天内容过滤等场景。分析两种算法在性能、内存占用与扩展性上的优劣,提供完整实现思路与优化建议。Java敏感词过滤实现方案详解,值得收藏。

QuickProceed的博客 1094

【2027计算机毕设】基于SpringBoot 的知识产权管理系统设计实现,原创精品,集成协同过滤算法/评论敏感词过滤算法,网站项目,java项目,必选项目

【摘要】本文介绍了一个基于SpringBoot的知识产权管理系统,专为高校计算机专业毕业设计开发,采用B/S架构,整合SpringBoot、Mybatis、Vue+ElementUI等技术栈。系统提供知识产权全生命周期管理功能,包括产权人管理、类型分类、信息登记维护、变更追踪、缴费提醒及投诉处理等核心模块,并配套用户管理、公告发布等基础功能。项目采用IDEA开发,结构清晰,包含完整的代码示例(如新增产权、变更记录、缴费管理等核心逻辑)和系统演示图,适合作为毕业设计参考。作者具有丰富的技术培训经验,提供项目定

2501_92994129的博客 10

DFA敏感词过滤算法

运用DFA算法加密。 首先我先对敏感词库初始化,若我的敏感词库为 冰毒 白粉 大麻 大坏蛋 初始化之后得到的是下面这样。: {冰={毒={isEnd=1}, isEnd=0}, 白={粉={isEnd=1}, isEnd=0}, 大={麻={isEnd=1}, isEnd=0, 坏={蛋={isEnd=1}, isEnd=0}}}。 ok,我把初始化之后的数据用A来表示。假设待检测

蓝天之枫 1万+

如何设计一个敏感词过滤系统

本文介绍了使用Java实现敏感词过滤系统的方案,主要采用Trie(前缀树)数据结构存储敏感词系统包含三个核心功能:通过TrieNode类构建树形结构、使用addSensitiveWord方法添加敏感词、通过filter方法实现文本过滤替换。示例代码展示了如何将"敏感词"等汇替换为"***",并支持动态扩展。系统具有高效匹配、易于扩展的特点,可进一步改进为支持模糊匹配或数据库动态加载。全文提供了完整的Java实现代码和详细注释。

有时间就写写代码 564

Java敏感词过滤

方案一:使用String类的contains() contains()方法用于判断字符串中是否包含指定的字符或字符串。 public static void main(String[] args) { String a = "敏感词"; String b = "我的敏感词"; System.out.println(b.contains(a)); if (b.contains(a)) { System.out.pri

qq_40618664的博客 6012

详细分析Java中的敏感词过滤(附Demo)

自定义方法过滤敏感词,重在思路

码农研究僧的博客 2751

如何优雅地过滤敏感词

敏感词过滤功能在很多地方都会用到,理论上在Web应用中,只要涉及用户输入的地方,都需要进行文本校验,如:XSS校验、SQL注入检验、敏感词过滤等。今天着重讲讲如何优雅高效地实现敏感词过滤敏感词过滤方案一 先讲讲笔者在上家公司是如何实现敏感词过滤的。当时毕竟还年轻,所以使用的是最简单的过滤方案。简单来说就是对于要进行检测的文本,遍历所有敏感词,逐个检测输入的文本中是否含有指定的敏感词。这种方...

hzjjames的博客 7745

java敏感词过滤

运用于内容敏感词过滤打码。

m0_59096111的博客 4546

java实现对指定的敏感词汇进行过滤

首先将每个的第一个字符作为key,value则是另一个HashMap,value对应的HashMap的key为第二个字符,如果还有第三个字符,则存储到以第二个字符为key的value中,当然这个value还是一个HashMap,以此类推下去,直到最后一个字符,当然最后一个字符对应的value也是HashMap,只不过这个HashMap只需要存储一个结束标志就行了,像上述的例子中,我们就存了一个{“isEnd”,“Y”}的HashMap,来表示这个value对应的key是敏感词的最后一个字符。

qq_44727672的博客 1367

vivo 敏感词匹配系统设计与实践

本文从vivo内容审核的实际场景入手,对比了常用的敏感词匹配算法,介绍了谛听系统几个主要场景下的敏感词匹配实践方案。

vivo互联网技术 984
上一篇: 【Java】微信抢红包的功能是如何实现的,如果让你来做你怎么设计?
下一篇: 【Java】电商平台中订单未支付过期如何实现自动关单?
alen101
博客等级 码龄2年 961粉丝 66原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值