1、创建敏感字Map
public static Map addWordToHashMap(Set<String> keyWordSet) { if(0 == keyWordSet.size()) return new HashMap(); Map map = new HashMap(keyWordSet.size()); String key = null; Map nowMap = null; Map<String, String> newWorMap = null; Iterator<String> iterator = keyWordSet.iterator(); while(iterator.hasNext()){ key = iterator.next(); nowMap = map; for(int i = 0; i < key.length(); i++){ char keyChar = key.charAt(i); Map wordMap = (Map) nowMap.get(keyChar); if(wordMap != null) nowMap = wordMap; else{ newWorMap = new HashMap<String,String>(); nowMap.put(keyChar, newWorMap); nowMap = newWorMap; } if(i == key.length() - 1) nowMap.put("isEnd", "1"); } } return map; }
2、创建正则特殊符号过滤
public static String formatString(String str) { if (StringUtils.isNotBlank(str)) { String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; return Pattern.compile(regEx).matcher(str).replaceAll("").trim(); } return ""; }
3、校验字符串
public static String checkWork(String txt, Map map, boolean needToFormat) { try { if (needToFormat) txt = formatString(txt); StringBuffer sb = new StringBuffer(); boolean has = false; char word; int num; for (int i = 0; i < txt.length(); i++) { word = txt.charAt(i); sb = new StringBuffer(word); if (map.containsKey(word)) { Map m = (Map) map.get(word); sb.append(word); num = i + 1; while (true) { if (num < txt.length()) { word = txt.charAt(num++); sb.append(word); if (m.containsKey(word)){ m = (Map) m.get(word); if (m.containsKey("isEnd")) { has = true; return sb.toString(); } } else break; } else break; } } } if (has) return sb.toString(); } catch (Exception e) { //logger.error("检验敏感字出错,原因为:{}", e); e.printStackTrace; } return null; }
相关推荐
在最近的开发中遇到了敏感词过滤,便去网上查阅了很多敏感词过滤的资料,在这里也和...下面这篇文章主要给大家介绍了关于java利用DFA算法实现敏感词过滤功能的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
主要介绍了基于java实现DFA算法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java。dfa算法实现敏感词过滤
DFA算法敏感庞屏蔽java实现DFA算法敏感庞屏蔽java实现
本篇文章主要介绍了Java实现DFA算法对敏感词、广告词过滤功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的...
高效敏感词过滤JAVA实现(DFA算法) 5000字2ms 节点 + 2进制标识(节省空间/提高查询效率) 附源码、注释,附带专业敏感词库(3396个敏感词) 看得上就拿去用,替换下一两处util方法、改个路径即可 不求什么,...
java使用dfa算法实现敏感词过滤,此算法效率最高,附带了一个敏感词库,轻松搞定论坛网站的敏感词过滤问题。
高效敏感词过滤JAVA实现(DFA算法) 5000字2ms 节点 + 2进制标识(节省空间/提高查询效率) 附源码、注释,附带专业敏感词库(3396个敏感词) 看得上就拿去用,替换下一两处util方法、改个路径即可 不求什么,...
构造正则表达式的简化DFA算法论文 介绍了构造等价于给定正则表达式的简化确定有限自动机(DFA) 的算 法. 方法是首先构造与正则表达式等价的非确定有限自动机(NFA) , 这里省略了构 造带E动作的有限自动机的操作, 然后...
主要介绍了Java使用DFA算法实现过滤多家公司自定义敏感字功能,结合实例形式分析了DFA算法的实现原理及过滤敏感字的相关操作技巧,需要的朋友可以参考下
实现了DFA,NFA算法,DFA最小化,NFA转化为DFA以及正则表达式转化为NFA的算法,是有限状态自动机的初学者很不错的学习资源
使用DFA算法实现的内容安全,反垃圾,智能鉴黄,敏感词过滤,不良信息检测,文本校验,敏感词检测,包括关键词提取,过滤html标签等。
导入后运行TestSensitiveWdFilter.java里面的TestFilter()方法即可见效果
编译原理,确定有限自动机编程。里面是源代码。
基于Java实现了DFA,NFA,DFA最小化,NFA转化为DFA以及正则表达式转化为NFA的算法,对于初学者来说,是学习词法分析的一份不错资源
1.基于dfa算法实现敏感词查找; 2.敏感词库管理,敏感词库初始化,添加,判断等
为DFA.java 中的DFA 类实现成员函数boolean recongnizeString(int move[][], int accept_state[], String word)
JAVA查重算法,包括HanLP 相似度比较、二叉树、DFA算法实现、敏感词处理工具、IKAnalyzer中文分词工具、分词进行敏感词过滤等查重算法,可以计算海明距离、余弦相似性、莱文斯坦距离、Jaccard 相似度、Sorensen Dice...
DFA算法实现的敏感词过滤工具,支持Skip参数控制敏感词干扰噪音,支持白名单跳过白名单词汇,支持在线添加和删除敏感词,管理敏感词库