DFA有穷自动机敏感词过滤算法

1.EndType

package com.example.utils.wordfilter;/*** 结束类型定义*/
public enum EndType {/*** 有下一个,结束*/HAS_NEXT, IS_END
}

2.WordType

package com.example.utils.wordfilter;/*** 词汇类型*/
public enum WordType {/*** 黑名单/白名单*/BLACK, WHITE
}

3.FlagIndex

package com.example.utils.wordfilter;import java.util.List;/*** 敏感词标记*/
public class FlagIndex {/*** 标记结果*/private boolean flag;/*** 是否黑名单词汇*/private boolean isWhiteWord;/*** 标记索引*/private List<Integer> index;public boolean isFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}public List<Integer> getIndex() {return index;}public void setIndex(List<Integer> index) {this.index = index;}public boolean isWhiteWord() {return isWhiteWord;}public void setWhiteWord(boolean whiteWord) {isWhiteWord = whiteWord;}
}

4.WordContext

package com.example.utils.wordfilter;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;/*** 词库上下文环境* 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class WordContext {/*** 敏感词字典*/private final Map wordMap = new HashMap();/*** 是否已初始化*/private boolean init;/*** 黑名单列表*/private final String blackList;/*** 白名单列表*/private final String whiteList;public WordContext() {this.blackList = "/blacklist.txt";this.whiteList = "/whitelist.txt";initKeyWord();}public WordContext(String blackList, String whiteList) {this.blackList = blackList;this.whiteList = whiteList;initKeyWord();}/*** 获取初始化的敏感词列表** @return 敏感词列表*/public Map getWordMap() {return wordMap;}/*** 初始化*/private synchronized void initKeyWord() {try {if (!init) {// 将敏感词库加入到HashMap中addWord(readWordFile(blackList), WordType.BLACK);// 将非敏感词库也加入到HashMap中addWord(readWordFile(whiteList), WordType.WHITE);}init = true;} catch (Exception e) {throw new RuntimeException(e);}}/*** 读取敏感词库,将敏感词放入HashSet中,构建一个DFA算法模型:<br>* 中 = { isEnd = 0 国 = {<br>* isEnd = 1 人 = {isEnd = 0 民 = {isEnd = 1} } 男 = { isEnd = 0 人 = { isEnd = 1 }* } } } 五 = { isEnd = 0 星 = { isEnd = 0 红 = { isEnd = 0 旗 = { isEnd = 1 } } } }*/public void addWord(Iterable<String> wordList, WordType wordType) {Map nowMap;Map<String, String> newWorMap;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RHEL - 更新升级软件或系统

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录 小版本软件更新yum update 和 yum upgrade 的区别升级软件和升级系统检查软件包是否可升级指定升级软件使用的发行版本方法1方法2方法3方法4 查看软件升级类型更新升级指定的 RHSA/RHBA/RHEA更新升级指定的 CVE更新升级指定…

L1-069 胎压监测(Java)

小轿车中有一个系统随时监测四个车轮的胎压&#xff0c;如果四轮胎压不是很平衡&#xff0c;则可能对行车造成严重的影响。 让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序&#xff0c;随时监测四轮的胎压&…

Java中的包、类、接口说明

写在开头 包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。 Java中的包 Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包…

Servlet系列:两种创建方式(xml,注解)

一、使用web.xml的方式配置&#xff08;Servlet2.5之前使用&#xff09; 在早期版本的Java EE中&#xff0c;可以使用XML配置文件来定义Servlet。在web.xml文件中&#xff0c;可以定义Servlet的名称、类名、初始化参数等。然后&#xff0c;在Java代码中实现Servlet接口&#x…

数据结构---数组

一、基本概念 1. 存放一组相同数据类型的集合 2.在内存中,分配连续的空间,数组创建时要指定大小 3. 定义 数据类型 [] 数组名 // 1.定义一个数组,里面的元素包含10, 20, 24, 17, 35, 58, 45, 74 int arr[] {10, 20, 24, 17, 35, 58, 45, 74}; 4. 获取数组的长度 int lengt…

wayland(xdg_wm_base) + egl + opengles 最简实例

文章目录 前言一、ubuntu 下相关环境准备1. 获取 xdg_wm_base 依赖的相关文件2. 查看 ubuntu 上安装的opengles 版本3. 查看 weston 所支持的 窗口shell 接口种类二、xdg_wm_base 介绍三、egl_wayland_demo1.egl_wayland_demo2_0.c2.egl_wayland_demo3_0.c3. xdg-shell-protoco…

Chatopera 云服务支持大语言模型对话(LLM),定制您的聊天机器人

2024 年&#xff0c;Chatopera 云服务继续不断完善&#xff0c;为开发者提供最好的定制聊天机器人的工具。在过去的一年&#xff0c;用户们反映最多的建议是 Chatopera 云服务内置大语言模型的对话&#xff0c;今天 Chatopera 云服务完成了产品升级&#xff0c;满足了这个诉求。…

HCIP-BGP选路实验

一.实验拓扑图 二.详细配置 R1 interface GigabitEthernet0/0/0 ip address 12.1.1.1 255.255.255.0interface LoopBack0 ip address 1.1.1.1 255.255.255.0interface LoopBack1 ip address 10.1.1.1 255.255.255.0bgp 1 router-id 1.1.1.1 peer 12.1.1.2 as-number 2ipv4-fa…

Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

从表格中选择数据 要从MySQL中的表格中选择数据&#xff0c;请使用"SELECT"语句&#xff1a; 示例选择"customers"表格中的所有记录&#xff0c;并显示结果&#xff1a; import mysql.connectormydb mysql.connector.connect(host"localhost"…

模型服务网格:云原生下的模型服务管理

作者&#xff1a;王夕宁 模型服务网格&#xff08;Model Service Mesh&#xff09;是一种架构模式&#xff0c;用于在分布式环境中部署和管理机器学习模型服务。它提供了一个可扩展的、高性能的基础架构&#xff0c;用于将多个模型服务进行管理、部署和调度&#xff0c;以此更…

0基础开发EtherNet/IP:协议格式,JAVA、C#、C++处理

经过一阵倒腾&#xff0c;把CIP、Ethernet/ip协议搞到手 协议的概念和理论就不提及了&#xff0c;上网随便一搜索EtherNet/IP遍地都是。 直接将协议关键点列举出来吧。 更多协议资料 www.jngbus.com 通讯软件群 30806722 这里讲解的是TCP和UDP协议的格式&#xff0c;EtherN…

vue.config.js中打包相关配置

1.原始篇 let path require(path); const webpack require(webpack); const ThemeColorReplacer require(webpack-theme-color-replacer); const { getThemeColors, modifyVars } require(./src/utils/themeUtil); const { resolveCss } require(./src/utils/theme-color…

Python并发与多线程:并发网络通信模型

在Python中&#xff0c;有多种方式可以实现并发网络通信模型&#xff0c;其中包括多线程、多进程、协程和异步IO等。在本篇中&#xff0c;我们主要讨论多线程实现并发网络通信的方法。 使用多线程可以在一个程序中同时处理多个网络连接&#xff0c;从而提高程序的性能和效率。…

如何本地部署虚拟数字克隆人 SadTalker

环境&#xff1a; Win10 SadTalker 问题描述&#xff1a; 如何本地部署虚拟数字克隆人 SadTalker 解决方案&#xff1a; SadTalker&#xff1a;学习逼真的3D运动系数&#xff0c;用于风格化的音频驱动的单图像说话人脸动画 单张人像图像&#x1f64e; ♂️音频&#x1f3…

伊恩·斯图尔特《改变世界的17个方程》傅里叶变换笔记

主要是课堂的补充&#xff08;yysy&#xff0c;我觉得课堂的教育模式真有够无聊的&#xff0c;PPT、写作业、考试&#xff0c;感受不到知识的魅力。 它告诉我们什么&#xff1f; 空间和时间中的任何模式都可以被看作不同频率的正弦模式的叠加。 为什么重要&#xff1f; 频率分量…

【图解数据结构】顺序表实战指南:手把手教你详细实现(超详细解析)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;图解数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️线性表1.1 &#x1f514;线性表的定义1.2 &#x1f514;线性表的存储结构 二. ⛳️顺序表…

论文阅读_CogTree_推理的认知树

英文名称: From Complex to Simple: Unraveling the Cognitive Tree for Reasoning with Small Language Models中文名称: 从复杂到简单&#xff1a;揭示小型语言模型推理的认知树链接: http://arxiv.org/abs/2311.06754v1代码: https://github.com/alibaba/EasyNLP作者: Junbi…

OpenCompass大模型测评

一、笔记 为什么大模型需要开展测评? 大模型测评有以下原因&#xff1a; 1、让普通用户了解大模型的能力和特点&#xff0c;选择合适的大模型 2、让开发者了解大模型的能力边界&#xff0c;找到提升的地方 3、让管理机构更了解大模型&#xff0c;减少大模型带来的社会风险 …

为vs code配置unity开发环境

1.安装.NET.Core SDK 我们可以访问官网下载安装SDK及tool&#xff08;https://www.microsoft.com/net/download/core&#xff09;下载。有的系统只提供了执行文件&#xff0c;没有提供安装包&#xff0c;需要自己做一些配置。 下载好对应的版本就可以安装了&#xff0c;安装好以…

Video 不支持微信小程序的show-bottom-progress属性

原文地址&#xff1a;Video 不支持微信小程序的show-bottom-progress属性-鹭娃网络 相关平台 微信小程序 小程序基础库: 2.20.1使用框架: React 复现步骤 import { Video} from tarojs/components; 渲染一个Video播放视频&#xff0c;无法隐藏手机屏幕最底部的进度条&#…