敏感词过滤
生活在天朝的网站,必须要有保持和谐的工具。根据网站的规模不同选择不同的技术方案:
1.前期上一个敏感词过滤系统,发的文章只要命中敏感词就不让发。
2.后期可以通过机器学习来自动识别一篇简历是否是正常简历,一篇正常简历的特征还是很明显的,通过训练机器识别正常简历的语料,能让机器自动判断是否是违规信息。
敏感词过滤系统
比如检测用户输入的一篇文章中是否含有网安给的违禁词列表。现在正常的做法都是通过Trie 树来实现。Trie 树的基本原理基于这样一个事实:假设我从文本中查询的单词是abcd,那么在他前面的单词中,以b,c,d,f之类开头的我显然不必考虑。
以“中华人民”为例显示在Trie树中字典的存储结构:
上图中每一个节点都表示一个TrieNode,每个TrieNode有一个dict和val,root是一个打平的dict,包含违禁词中所有开头的第一个字。
比如词典在文本中保存格式是:
中华
中华书局
中华书库
中华人民
国家
国家专利
国家专利局
中华书局
中华书库
中华人民
国家
国家专利
国家专利局
那么root这个节点中dict的key包含['中','国']。
python的实现:
#!/usr/bin/python # -*- encoding: UTF-8 -*- import codecs import time class TrieNode: def __init__ (self): self.val = 0 self.trans = {} class Trie (object): def __init__ (self): self.root = TrieNode() def __walk (self, trienode, ch): if ch in trienode.trans: trienode = trienode.trans[ch] return trienode, trienode.val else: return None, 0 def add (self, word, value=1): curr_node = self.root for ch in word: try: curr_node = curr_node.trans[ch] except: curr_node.trans[ch] = TrieNode() curr_node = curr_node.trans[ch] curr_node.val = value def _find_ch(self,curr_node,ch,word,start,limit): curr_node, val = self.__walk (curr_node, ch) if val: return val while curr_node is not None and start<(limit-1): start= start+1 ch = word[start] curr_node, val = self.__walk (curr_node, ch) if val: return val def match_all (self, word): ret = [] curr_node = self.root index = 0 size = len(word) while index<size: val = self._find_ch(curr_node,word[index], word, index, size) if val: ret.append(val) index=index+1 return ret class Dict (Trie): def __init__(self, fname): super (Dict, self).__init__() self.load(fname) def load(self, fname): file = codecs.open(fname, 'r', 'utf-8') for line in file: word = line.strip() self.add(word, word) file.close() if __name__ == "__main__": dic = Dict("/home/yunpeng/test3/data/words-forbidden-1_.dic") for x in range(100): starttime = time.time() test_str = u"大庆让胡路喇嘛甸哪里有找小姐服务186-5555-2557娜娜【QQ1968454688空间选小姐】哪里有小姐服务186-5555-2557【QQ1968454688空间选小姐】哪里有小姐服务186-5555-2557娜娜【QQ1968454688空间看照片】无论朋友你常住本市。。 哪里找小姐服务娜娜【186-5555-2557娜娜】还是阁下才来我市。这些都不重要。。哪里找小姐服务186-5555-2557娜娜因为找我们在寂寞的深夜你不在感到孤单和寂寞。。" ret = dic.match_all(test_str) endtime = time.time() exe_time = (endtime - starttime)*1000 print "find forbidden %s cost:%s" %(" ".join(ret),exe_time)
相关推荐
本项目提供的"java违禁词过滤 .rar"是一个Java实现的违禁词过滤工具,其中包含了一个名为"BannedWordUtil.java"的核心类。下面将详细介绍这个工具的工作原理和相关知识点。 1. **字符串匹配算法**: - 该工具的...
总结来说,Java实现文章汉字关键词(违禁词)识别需要结合多种数据结构和算法,如哈希表、Trie树、分词库和过滤算法。通过合理的设计和优化,我们可以构建出高效、准确的违禁词检测系统,满足内容审核的需求。
本文将深入探讨“违禁词功能匹配规则过滤处理”这一主题,主要关注PHP语言实现违禁词过滤的方法。我们将围绕标题和描述中的知识点展开讨论,并结合提供的文件“Prohibited.php”和“Prohibited.txt”来解析实现过程...
当需要检测一段文本时,程序会遍历该树结构,快速定位并识别出其中的敏感词汇,实现高效的过滤功能。 首先,让我们深入了解Trie树。Trie树是一种字符串检索的数据结构,它通过节点之间的链接来表示前缀关系。每个...
Java作为一种广泛应用的编程语言,提供了多种实现敏感词过滤的方法。本篇将详细探讨如何在Java中进行敏感词过滤,并展示如何显示内容中包含的敏感词。 首先,我们要理解敏感词过滤的核心原理。敏感词过滤通常基于...
"Go-golang敏感词过滤"是一个与文本处理相关的项目,主要关注如何在Go语言中实现对敏感词汇的检测和过滤。在描述中提到的“golang 敏感词过滤”意味着我们需要构建一个服务或库,能够检查输入的文本,找出并替换或者...
php扩展:trie_filter 过滤敏感词。1.生成敏感词文件,2.加载使用敏感词库,3.查找敏感词。可以循环查找替换,最后输出替换后的文本
在Java编程语言中,敏感词监测是一项重要的功能,特别是在处理用户输入、社交媒体分析、内容过滤等场景中。这个压缩包文件可能包含了一套后端实现敏感词检测的解决方案。下面我们将详细探讨Java如何进行敏感词监测,...
"用于检测敏感词的 PHP 扩展"就是针对这一需求而设计的,它是一个名为trie_filter的PHP扩展,主要功能是快速有效地检测和过滤用户输入中的敏感词汇。 trie_filter扩展基于字典树(Trie)数据结构,字典树是一种高效...
这可能是通过了一些优化策略,如使用字典树(Trie树)或者部分匹配算法,牺牲了一定的精确度来换取更高的处理速度。适合对速度有较高要求,但可以接受一定程度误检的场景。 3. **SensitiveWord**: 这个工具同样具有...