2.构建前缀树的方法 代码语言:javascript 复制 publicvoidaddSensitiveWord(String words){TreeNode tempNode=rootNode;for(int i=0;i<words.length();i++){Character c=words.charAt(i);if(!isSymbol(c)){continue;}TreeNode node=tempNode.getSubNode(c);if(node==null){node=newTreeNode();tempNode....
在后续的搜索过程中,我们设置三个指针,指针1指向树,指针2,3指向字符串,具体流程见代码 1. /**2. * 过滤敏感词 3. * 4. * @param text 待过滤的文本 5. * @return 过滤后的文本 6. */7. public String filter(String text) {8. if (StringUtils.isBlank(text)) {9. return null;10. }11.12....
1.首先建立个敏感词前缀树 根节点为空 2.准备好待处理字符串: 哈哈大王八子大猪蹄子哦 ,声明三个指针,分别指向前缀树的根节点以及待处理字符串的开始字符 3.position指向的字符与根节点的所有子节点进行匹配,不匹配,position 和 begin分别指向待处理字符串的下一个字符,tempNode依旧指向 根节点 4.依旧不匹配,pos...
具体是把敏感词转换成[]rune类型来代表敏感词中的一个个字符,添加完后再将最后一个字符节点的 End 设置True,Data为完整的敏感词数据。 可能这样还不好理解,举个例子: package main import"fmt"//SensitiveTrie 敏感词前缀树type SensitiveTriestruct{ replaceChar rune//敏感词替换的字符root *TrieNode }//TrieN...
添加敏感词到前缀树中 注意构造树时如果根节点没有孩子节点,要初始化再添加到哈希表中。 privatevoidaddWord(StringlineTxt){TrieNodetempNode=rootNode;// 循环每个字节for(inti=0;i<lineTxt.length();++i){Characterc=lineTxt.charAt(i);// 过滤空格if(isSymbol(c)){continue;}TrieNodenode=tempNode.get...
敏感词检测 实现敏感词检测都很多种方法,例如暴力、正则、前缀树等。例如一个游戏的文字交流的场景,敏感词会被和谐成 * ,该如何实现呢?首先我们先准备一些敏感词如下: sensitiveWords := []string{"傻逼","傻叉","垃圾","妈的","sb", } 由于文章审核原因敏感词就换成别的了,大家能理解意思就行。