= null) { // 添加到前缀树 this.addKeyword(keyword); } } catch (IOException e) { log.error("加载敏感词文件失败: " + e.getMessage()); } } 添加敏感词由于我们设置txt中每行一个敏感词,我们可以直接将读取到的keyword传入addKeyword方法。
1.首先建立个敏感词前缀树 敏感词过滤算法:前缀树算法 根节点为空 2.准备好待处理字符串:哈哈大王八子大猪蹄子哦,声明三个指针,分别指向前缀树的根节点以及待处理字符串的开始字符 敏感词过滤算法:前缀树算法 3.position指向的字符与根节点的所有子节点进行匹配,不匹配,position 和 begin分别指向待处理字符串的下...
我们先定义一颗前缀树,在程序开始阶段创建前缀树对敏感词进行保存,便于后续的查找 1. // 前缀树 2. private class TrieNode {3.4. // 关键词结束标识5. private boolean isKeywordEnd = false;6.7. // 子节点(key是下级字符,value是下级节点)8. private Map<Character, TrieNode> subNodes = new HashMap<...
1.首先建立个敏感词前缀树 根节点为空 2.准备好待处理字符串: 哈哈大王八子大猪蹄子哦 ,声明三个指针,分别指向前缀树的根节点以及待处理字符串的开始字符 3.position指向的字符与根节点的所有子节点进行匹配,不匹配,position 和 begin分别指向待处理字符串的下一个字符,tempNode依旧指向 根节点 4.依旧不匹配,pos...
添加敏感词到前缀树中 注意构造树时如果根节点没有孩子节点,要初始化再添加到哈希表中。 privatevoidaddWord(StringlineTxt){TrieNodetempNode=rootNode;// 循环每个字节for(inti=0;i<lineTxt.length();++i){Characterc=lineTxt.charAt(i);// 过滤空格if(isSymbol(c)){continue;}TrieNodenode=tempNode.get...
一个简单的基于Golang的敏感词过滤算法 package main import ( "fmt" "unicode/utf8") // 敏感词过滤 type Trie struct { child map[rune]*Trie word string } // 插入 func (trie *Trie) insert(word string) *Trie { cur := trie for _, v := range []rune(word) { if _, ok := cur.ch...
敏感词检测 实现敏感词检测都很多种方法,例如暴力、正则、前缀树等。例如一个游戏的文字交流的场景,敏感词会被和谐成 * ,该如何实现呢?首先我们先准备一些敏感词如下: sensitiveWords := []string{"傻逼","傻叉","垃圾","妈的","sb", } 由于文章审核原因敏感词就换成别的了,大家能理解意思就行。
敏感词检测 实现敏感词检测都很多种方法,例如暴力、正则、前缀树等。例如一个游戏的文字交流的场景,敏感词会被和谐成 * ,该如何实现呢?首先我们先准备一些敏感词如下: sensitiveWords := []string{"傻逼","傻叉","垃圾","妈的","sb", } 由于文章审核原因敏感词就换成别的了,大家能理解意思就行。