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.resolve(__dirname, './libs/'));files.forEach(file => {if (path.extname(file) === '.txt') {const rl = readline.createInterface({input: fs.createReadStream(path.resolve(__dirname, './libs/', file))});rl.on('line', line => {if (line) {if (line.substring(line.length - 1) === ',') {line = line.substring(0, line.length - 1);}this.data.push(line);}});}});}public static get instance () {if (!BadWords._instance) {BadWords._instance = new BadWords();}return BadWords._instance;}filter (content: string) {const tempImgs: Array<string> = [];let result = content;// 将图片部分放入临时数组中,以避免待会儿过滤词会匹配到图片内容result = result.replace(/!\[.+\]\(.+\)/g, val => {tempImgs.push(val);return '#IMG#';});// 匹配过滤词并用*替换this.data.forEach(keyword => {if (result.toUpperCase().includes(keyword.toUpperCase())) {const asterisks: Array<'*'> = [];for (let i = 0; i < keyword.length; i++) {asterisks.push('*');}result = result.replace(new RegExp(keyword, 'gi'), asterisks.join(''));}});// 恢复图片if (tempImgs.length) {result = result.replace(/#IMG#/g, () => <string>tempImgs.shift());}return result;}
}
在需要使用的地方引入
import BadWords from '../../common/badWords/index';
const badWords = BadWords.instance;badWords.filter(userName)
详细资源可点击下方链接下载
每个 `txt` 文件代表一个类型的敏感词词库,词库数据来源:
https://github.com/fwwdn/sensitive-stop-words
https://github.com/fighting41love/funNLP/tree/master/data/%E6%95%8F%E6%84%9F%E8%AF%8D%E5%BA%93
node实现敏感词过滤及敏感词库相关推荐
- .NET 6 实现敏感词过滤
一.什么是敏感词过滤? 敏感词过滤是一种处理网络内容的技术,可以检测和过滤出网络中的敏感/违禁词汇.它通过给定的关键字或字符串,判断网络内容是否包含某些敏感信息,从而防止违反法律法规的信息流通. 通常 ...
- Java练习 基于数组的敏感词过滤/用户注册合法性判定
用户注册 在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作: 用户名长度大于等于6位 密码长度大于等于8位,必须包含英文字母以及数字 以上两个条件同时成立注册才能成功. packa ...
- spring boot 使用DFA算法实现敏感词过滤
spring boot 使用DFA算法实现敏感词过滤 敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的. DFA算法简介 DFA全称为:Deterministi ...
- 【C++】实现敏感词过滤算法(含源码)
敏感词过滤算法(聚合词树查询法) 1.构建词树 2.敏感词判断 3.遍历文本 关于敏感词过滤算法,数不胜数,在参考众多算法后,选取了比较实用的算法,进行总结与改进.大家可以参考一下链接: 敏感词过滤算 ...
- 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法
文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...
- python骂人的程序_Python实现敏感词过滤的4种方法
在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...
- python敏感词过滤代码简单_大型企业都在用,Python实现敏感词过滤
在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...
- dfa算法c语言,DFA跟trie字典树实现敏感词过滤(python和c语言)
DFA和trie字典树实现敏感词过滤(python和c语言) 现在做的项目都是用python开发,需要用做关键词检查,过滤关键词,之前用c语言做过这样的事情,用字典树,蛮高效的,内存小,检查快. 到了 ...
- python敏感词过滤replace_Serverless 实战:3 分钟实现文本敏感词过滤
敏感词过滤是随着互联网社区一起发展起来的一种阻止网络犯罪和网络暴力的技术手段,通过对可能存在犯罪或网络暴力的关键词进行有针对性的筛查和屏蔽,能够防患于未然,将后果严重的犯罪行为扼杀于萌芽之中. 随着各 ...
- python敏感词过滤代码简单代码_Python 实现王者荣耀中的敏感词过滤示例
Python 实现王者荣耀中的敏感词过滤示例 王者荣耀的火爆就不用说了,但是一局中总会有那么几个挂机的,总能看到有些人在骂人,我们发现,当你输入一些常见的辱骂性词汇时,系统会自动将该词变成" ...
最新文章
- Cron表达式的详细用法
- SD-WAN:MSP连接
- delphi中DateTimePicker控件同时输入日期和时间
- 好嗨哟~谷歌量子神经网络新进展揭秘
- git、github、gitlab、gitee都是什么?
- 【Win32汇编】复制字符串
- jQuery修改数组$.map
- 信息学奥赛C++语言:火柴盒
- 2017 4月25日下午
- Java多线程学习二十五:阻塞和非阻塞队列的并发安全原理||如何选择适合自己的阻塞队列?
- matlab levy,Levy Flight 模型及Matlab实现
- 前端flv.js设置缓冲时间和大小_好程序员web前端细解cookie那些事
- 计算机安全性分析建模,计算机网络安全性分析建模研究
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_17-页面静态化-模板管理-GridFS研究-存文件...
- 编译OpenJDK8-u302出错:error C3861: “INT64_C”: 找不到标识符
- 素材网站整理(持续更新ing~)
- vue3 组合式API composition 简单使用
- 强烈推荐几款IDEA插件,12款小白神器
- 关于table固定宽高以及td内容过长换行的解决办法
- 勒索病毒的发展史及解密办法
热门文章
- Python打地鼠小游戏源代码
- C语言程序设计(第三版)何钦铭著 习题2-2
- 基于RV1126平台imx291分析 --- v4l2_pipeline_pm_use
- 数据结构严蔚敏(c语言版)课后算法题答案-树和二叉树
- IKM 线上测试JavaScript
- 单片机与PC通信:USB转TTL、USB转RS232、RS232转TTL等情况的分析
- python快速搭建网页_使用python快速搭建HTTP服务实现局域网网页浏览或文件传输...
- python爬取网站所有资源
- 01.linux内核源码结构
- 大学生论文查重软件都有哪些?