java判断敏感词_java实现文章敏感词过滤检测

importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;/*** @Description: 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型

* @Project:test

* @Author : zhangyuntao

* @Date : 2018年4月20日 下午2:27:06

*@version1.0*/

public classSensitiveWordInit {private String ENCODING = "UTF-8"; //字符编码

@SuppressWarnings("rawtypes")publicHashMap sensitiveWordMap;publicSensitiveWordInit(){super();

}/***@authorzhangyuntao

* @date 2018年4月20日 下午2:28:32

*@version1.0*/@SuppressWarnings("rawtypes")publicMap initKeyWord(){try{//读取敏感词库

Set keyWordSet =readSensitiveWordFile();//将敏感词库加入到HashMap中

addSensitiveWordToHashMap(keyWordSet);//spring获取application,然后application.setAttribute("sensitiveWordMap",sensitiveWordMap);

} catch(Exception e) {

e.printStackTrace();

}returnsensitiveWordMap;

}/*** 读取敏感词库,将敏感词放入HashSet中,构建一个DFA算法模型:

* 中 = {

* isEnd = 0

* 国 = {

* isEnd = 1

* 人 = {isEnd = 0

* 民 = {isEnd = 1}

* }

* 男 = {

* isEnd = 0

* 人 = {

* isEnd = 1

* }

* }

* }

* }

* 五 = {

* isEnd = 0

* 星 = {

* isEnd = 0

* 红 = {

* isEnd = 0

* 旗 = {

* isEnd = 1

* }

* }

* }

* }

*@authorzhangyuntao

* @date 2018年4月20日 下午3:04:20

*@paramkeyWordSet 敏感词库

*@version1.0*/@SuppressWarnings({"rawtypes", "unchecked"})private void addSensitiveWordToHashMap(SetkeyWordSet) {

sensitiveWordMap= new HashMap(keyWordSet.size()); //初始化敏感词容器,减少扩容操作

String key = null;

Map nowMap= null;

Map newWorMap = null;//迭代keyWordSet

Iterator iterator =keyWordSet.iterator();while(iterator.hasNext()){

key= iterator.next(); //关键字

nowMap =sensitiveWordMap;for(int i = 0 ; i < key.length() ; i++){char keyChar = key.charAt(i); //转换成char型

Object wordMap = nowMap.get(keyChar); //获取

if(wordMap != null){ //如果存在该key,直接赋值

nowMap =(Map) wordMap;

}else{ //不存在则,则构建一个map,同时将isEnd设置为0,因为他不是最后一个

newWorMap = new HashMap();

newWorMap.put("isEnd", "0"); //不是最后一个

nowMap.put(keyChar, newWorMap);

nowMap=newWorMap;

}if(i == key.length() - 1){

nowMap.put("isEnd", "1"); //最后一个

}

}

}

}public static voidmain(String[] args) {

Set set= newHashSet();

set.add("中国");

set.add("中国人民");

set.add("中国人");newSensitiveWordInit().addSensitiveWordToHashMap(set);

}/*** 读取敏感词库中的内容,将内容添加到set集合中

*@authorzhangyuntao

* @date 2018年4月20日 下午2:31:18

*@return*@version1.0

*@throwsException*/@SuppressWarnings("resource")private Set readSensitiveWordFile() throwsException{

Set set = null;

File filexx=new File("");

String path=filexx.getAbsolutePath();

File file= new File(path+"\\src\\SensitiveWord.txt"); //读取文件

InputStreamReader read = new InputStreamReader(newFileInputStream(file),ENCODING);try{if(file.isFile() && file.exists()){ //文件流是否存在

set = new HashSet();

BufferedReader bufferedReader= newBufferedReader(read);

String txt= null;while((txt = bufferedReader.readLine()) != null){ //读取文件,将文件内容放入到set中

set.add(txt);

}

}else{ //不存在抛出异常信息

throw new Exception("敏感词库文件不存在");

}

}catch(Exception e) {throwe;

}finally{

read.close();//关闭文件流

}returnset;

}

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部