敏感词检测API - 私有化部署提供文本识别、智能鉴黄、敏感词过滤、涉政检测等服务,可部署至「本地服务器」或「专有云服务器」,保障数据私密性,提供一键启动软件部署包私有化。 简介敏感词库从760000词组中整理出来,基于NLP算法检测支持Windows、MacOs、Linux等64位主流系统可以部署在本地服务器,也可以部署至阿里云、腾讯云、华为云、百度云等云服务器通过下载部署包 ,即可一键启动私有化的"敏感词检测 API服务"自动云更新最新词库支持http json方式或grpc方式查询单服务参考查询效率70000次/分钟,同时支持并行服务按需自定义添加文本白名单/黑名单服务运行内存 65M左右,非常轻便应用场景用户昵称、聊天消息、直播弹幕、评论留言、用户简介、商品详情、创作文章等内容合规检测过滤演示地址坚果墙在线敏感词检测服务下载地址https://github.com/bosnzt /wordscheckhttps://gitee.com/bosnzt/wordscheck快速接入文档文档地址敏感词分类色情:色情传播、x用品、av女优、色情描写、x器官、x行为、色情行为政治:领导人
序 本文简单介绍下敏感词或者脏词检测算法。 经典AC算法 经典的AC算法由三部分构成,goto表,fail表和output表,共包含四种具体的算法,分别是计算三张查找表的算法以及AC算法本身。 this.value = value; this.isLast = isLast; } //...... } doc 字符串多模式匹配:AC算法 Java实现DFA算法对敏感词 、广告词过滤功能 敏感词过滤的算法原理之 Aho-Corasick 算法 敏感词过滤的算法原理之DFA算法 AC自动机和Fail树 基于双数组的AC匹配算法学习
PHP实现的敏感词过滤方法,有好的编码和好的实现方法,可以发出来一起交流一下。以下是一份过滤敏感词的编码 ? 它的基本思想是基于状态转移来检索敏感词,只需要扫描一次待检测文本,就能对所有敏感词进行检测,所以效率比方案一高不少。 假设我们有以下5个敏感词需要检测:傻逼、傻子、傻大个、坏蛋、坏人。 三.敏感词过滤方案三 方案二在性能上已经可以满足需求了,但是却很容易被破解,比如说,我在待检测文本中的敏感词中间加个空格,就可以成功绕过了。 只要被检测文本不要太长,那么我们只要在方案二的基础上再多扫描一次被检测文本去除无效字符就行了,这个性能损耗也还是可以接受的。 如果敏感词是英文,则还要考虑大小写的问题。 有一个比较简单的解决方案是在初始化敏感词时,将敏感词都以小写形式存储。同时,在检测文本时,也统一将待检测文本转化为小写,这样就能解决大小写的问题了。
前言 如果可以用第三方的话,那么你是幸运的,因为现在这种敏感词过滤,敏感图片,敏感语音过滤的第三方服务还是挺多的 敏感词过滤 核心代码 利用PHP内置的三个函数 array_combine() | array_fill ,count($item),'*')); $content = strtr($content,$replace); array_combine array_fill strtr 完整代码 //过滤敏感词所有匹配的敏感词用一个
最近有一个需求就是需要给一串文字做敏感词校验 需求 根据上传的一串字符里通过校验可以返回里面的敏感词 不同的用户有一个敏感词库 用户可以随时修改需要校验的敏感词库(不会经常修改) 解决方案 存储敏感词库 由于我们用的数据库是MYSQL 我们就将这个敏感词存在数据库,那就是怎么存text一下全部存储还是每个敏感词都分开,最后根据娇艳的规则方式将其存储为一个或一段敏感词存储在一行。
简述: 关于敏感词过滤可以看成是一种文本反垃圾算法,例如 题目:敏感词文本文件 filtered_words.txt,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」, ,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符: 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”] 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中 实战案例: 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十亿个标题,存在一个文件中,一行一个标题。有5万个敏感词,存在另一个文件。 写一个程序过滤掉所有标题中的所有敏感词,保存到另一个文件中。 1、DFA过滤敏感词算法 在实现文字过滤的算法中,DFA是比较好的实现算法。 算法核心是建立了以敏感词为基础的许多敏感词树。
今天给大家推荐一款高性能敏感词检测开源库。 01 项目简介 这是一款基于.Net开发的、高性能敏感词工具箱,支持繁简互换、全角半角互换,拼音模糊搜索等功能。功能强大、高性能,秒级检测亿级别的文章。 03 项目结构 04 使用方法 敏感词检测 过滤敏感词,可以设置跳字长度,默认全角转半角、忽略大小写、跳词、重复词、黑名单。返回结果包含:关键字、关键字起始位置、结束位置、关键字序号等信息。 Assert.AreEqual(2, all.Count); var str = iwords.Replace(test, '*'); Assert.AreEqual("我是***", str); 敏感词通配符检测 []|,通过正则表达式可以进行模糊匹配,提升检测精准度。 string s = ".
二、敏感词汇获取 既然是要屏蔽敏感词汇,肯定需要先确定哪些词算是敏感词,再以这些词汇作为标准作为屏蔽。 ? 为了更好地测试,我写了一个刘小爱,将其设定为1级,毕竟总不可能真的写那些敏感词。 好,敏感词汇准备好了,就要创建Filter过滤器以及编写如何屏蔽的业务逻辑代码了。 ③切割字符串 字符串为一行的内容:是以“|”为分隔,前面为敏感词,后面为屏蔽等级。 所以使用split()方法来将其分隔成一个数组,数组里0索引位为敏感词,1索引位为屏蔽等级。 split[0]表示的也就是敏感词内容,将其存入对应集合即可。 三、过滤代码编写 上述是对过滤器中init()方法里的代码编写,用于获取敏感词一共有哪些。 (str):以遍历的敏感词为标准。
需求分析 系统有千万级的禁词需要去过滤 当中包含人名 特殊符号组成的语句 网址 单字组合成的敏感词 等等 初步设计 1.解决千万级禁词存储及查找问题 2.解决被过滤文本内容过多问题 详细设计 1. 采用ES作为禁词库 千万级数据检索时间在毫秒级满足需求 2.不适用分词器需要完整匹配 分词后很多词都是合法的 组合之后才是敏感词 3.被过滤文本内容分词不完整 利用IK分词器分词结果不适合现在的业务场景
敏感词过滤方案一 先讲讲笔者在上家公司是如何实现敏感词过滤的。当时毕竟还年轻,所以使用的是最简单的过滤方案。简单来说就是对于要进行检测的文本,遍历所有敏感词,逐个检测输入的文本中是否含有指定的敏感词。 它的基本思想是基于状态转移来检索敏感词,只需要扫描一次待检测文本,就能对所有敏感词进行检测,所以效率比方案一高不少。 假设我们有以下5个敏感词需要检测:傻逼、傻子、傻大个、坏蛋、坏人。 getSensitiveWords方法则是扫描一遍待检测文本,逐个检测每个字符是否在敏感词库中,然后将检测到的敏感词截取出来放到集合中返回给客户端。 可以看到,我们成功地过滤出了敏感词。 敏感词过滤方案三 方案二在性能上已经可以满足需求了,但是却很容易被破解,比如说,我在待检测文本中的敏感词中间加个空格,就可以成功绕过了。 有一个比较简单的解决方案是在初始化敏感词时,将敏感词都以小写形式存储。同时,在检测文本时,也统一将待检测文本转化为小写,这样就能解决大小写的问题了。
一、什么是敏感词过滤? 敏感词过滤是一种处理网络内容的技术,可以检测和过滤出网络中的敏感/违禁词汇。它通过给定的关键字或字符串,判断网络内容是否包含某些敏感信息,从而防止违反法律法规的信息流通。 通常,可以使用两种方法来过滤敏感词: 黑名单过滤:即定义一个黑名单,将所有敏感词择记录在其中,然后对输入的文本进行对比,如果发现有敏感词,就将其过滤掉。 ToolGood.Words是一款高性能非法词(敏感词)检测组件,附带繁体简体互换,支持全角半角互换,获取拼音首字母,获取拼音字母,拼音模糊搜索等功能。 >返回状态码;为空则表示传入的内容为空;“0”:设置违禁词时发生错误;“1”:敏感内容查询时发生错误;“2”:需要替换的文本内容为空;“3”:原内容中包含敏感/违禁词汇;“4”:原内容中不包含敏感/违禁词汇 , resultStr = "" }); } } 六、前端封装JS方法 /** * 敏感词/违禁词替换 * @param {string} sourctText 需要进行替换的内容 *
来自腾讯课堂笔记:https://ke.qq.com/webcourse/index.html#course_id=152997&term_id=100174752&taid=801037170660773&vid=y1412sc0r8c 知识点: 1: var re = /[我|车|一]+/g; 也可以写成:var re=/我|车|一/g; 即去掉了[]和+,这个案例中,+表示连续多个,可以不用,但是遇到判断类型那种,就必须要了,其实这个也应该加上额,万一“我”字后面还有一个“我”连着呢? 对与中括号
那么多叉树是如何存储敏感词的呢?首先将敏感词分解为一个一个的字符,例如敏感词”CSDN”,第一个字符是C,则在Head下创建子树”C”(如果已经存在则跳过这一步)。 检测敏感词时,对于字符串中的每一个字符,先查找Head下是否有存在对应子树,例如字符串”ELN”,先读取第一个字符E,并检查Head,发现存在子树”E”;于是读取第二个字符L,并检查子树E的子树,发现存在 这种算法会出现一个小意外,如果一个敏感词恰好是另一个敏感词的前缀,就会导致较短的敏感词被长的敏感词覆盖,这种情况可以通过添加结束标记来区分。 14596个敏感词(可能有个别重复),在测试代码里生成了一个长度为1000的字符串,总共包含100个相同敏感词,敏感词中间有逗号隔开 重复执行过滤10000次,并打印结果和时间,结果如下 可以看到程序成功地过滤了敏感词 源文件+敏感词列表 在寻找敏感词列表时发现很多人的分享都被取消了,为了防止敏感词列表被检测出敏感词,使用了zip格式并加密。敏感词库存在部分重复,不过不影响使用。
过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束 第一步:建立一个敏感词库(.txt文本) 第二步:编写代码在文章中过滤敏感词 # print(sensitive_word_stock_path) class ArticleFilter(object): # 实现文章敏感词过滤 def filter_replace(self, string): # string = string.decode(“gbk”) # 存放敏感词的列表 filtered_words = [] # 打开敏感词库读取敏感字 with open(sensitive_word_stock_path ,替换为* def replace_words(self, filtered_words, string): # 保留新字符串 new_string = string # 从列表中取出敏感词 for words in filtered_words: # 判断敏感词是否在文章中 if words in string: # 如果在则用*替换(几个字替换几个*) new_string = string.replace
敏感词过滤器的实现 导包 敏感词文件 前缀树的实现 敏感词过滤器的实现 导包 本文的敏感词过滤器用在SpringBoot项目中,因此,首先需要在pom.xml文件中导入如下依赖 <dependency> 在resources目录下,创建sensitive-word.txt,里面填入需要过滤的敏感词信息。 ,构建敏感词前缀树 @PostConstruct public void init(){ try( InputStream is -1){ tempNode.setKeywordEnd(true); } } } /** * 过滤敏感词 ,将符号写入结果,如 ☆敏感词 情况二:符号在敏感词中间,则将符号与敏感词一起替换,如敏☆感☆词 */ if(isSymbol(c)){
项目中的需要,对用户的输入进行敏感词的过滤,使用的是DFT算法,敏感词可以从数据库进行读取和配置.
* k=敏感词的第一个字符,v=后续字符�?
* * @return 敏感词列�? });
}
public static Map<String,Map> getWordsMap() {
return wordsMap;
}
}
第二个是敏感词检测的类 package com.abc;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/** * 敏感词检测
资料: 图解机器学习 | GBDT模型详解 (showmeai.tech) 图解机器学习 | 决策树模型详解 (showmeai.tech) 现有匹配算法 常用敏感词屏蔽算法(非法词/脏词检测过滤)如下 : DFA确定有限自动机匹配屏蔽,我们将敏感词构造成DFA形式,如敏感词集合 。 需要将敏感词集合构建成Trie树,如AC自动机多模字符串匹配算法。匹配句子时,遍历Trie树,从敏感词集合中找出可匹配的敏感词。 AC自动机多模式 上述敏感词屏蔽算法只能精确屏蔽,如果新增敏感词规则,就需要人工维护敏感词集合,这种迭代更新完全依赖人力,无法自动挖掘敏感词的匹配规则。 例如:“中华”一词多义,如果指香烟,可能算烟草违规的敏感词,但如果指牙膏,那就不算敏感词了。 如果出现主题漂移的情况,上述敏感词屏蔽算法也会出现跨越分词边界匹配,例如:“吃肯德基吧”。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133595.html原文链接:https://javaforall.cn
学会如何在小程序云开发中的云函数后端进行配置,实现文本内容的校验 小程序端在什么时机进行弱校验,为什么有必要这么做 遇到违规文本内容用特殊字符替代 · 正 · 文 · 来 · 啦 · 在前面一文小程序-云开发-如何对敏感词进行过滤即内容安全的检测 js文件当中,通过export的方式导出来,在想要使用的地方引入进去也是可以的 */ const g_reg = /好贱|操|杀|贱|傻|疯|炮|奸|猪|笨|屁|麻痹|滚犊子|婊/gm // 手动对敏感词检测 _hasSensitiveWords(textVal)) { wx.showToast({ title: '含有敏感词,敏感词将会用***号处理', }) _hasSensitiveWords(textVal)) { wx.showToast({ title: '含有敏感词,敏感词将会用***号处理', }) err => { // 失败时,也就是违规做一些用户提示,或者禁止下一步操作等之类的业务逻辑操作 console.error(err); }) }, // 手动对敏感词检测
parse()函数就是打开文件,然后从中取各个关键词,然后将其存在关键词集合中。 filter()函数是一个过滤器函数,其中将消息转化为小写,然后将关键词替换成*。 message.replace(self.keywords[index], repl) return message 在上面的实现例子中,对于搜索查找进行了优化,对于英语单词,直接进行了按词索引字典查找 参考 Github:敏感词过滤系统 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137791.html原文链接:https://javaforall.cn