Java敏感詞過濾
點選(此處)摺疊或開啟
-
package test.java.lang;
-
-
import java.io.IOException;
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
-
/**
-
* @title KeywordFilter
-
* @description TODO
-
* @author
-
* @date 2014-4-17
-
* @version 1.0
-
*/
-
public class KeywordFilter {
-
/** 敏感詞集合
-
* {法={isEnd=0, 輪={isEnd=1}}, 中={isEnd=0, 國={isEnd=0, 人={isEnd=1}, 男={isEnd=0, 人={isEnd=1}}}}}
-
* */
-
private HashMap keysMap = new HashMap();
-
-
/**
-
* 新增敏感詞
-
* @param keywords
-
*/
-
public void addKeywords(List<String> keywords) {
-
for (int i = 0; i < keywords.size(); i++) {
-
String key = keywords.get(i).trim();
-
HashMap nowhash = keysMap;//初始從最外層遍歷
-
for (int j = 0; j < key.length(); j++) {
-
char word = key.charAt(j);
-
Object wordMap = nowhash.get(word);
-
if (wordMap != null) {
-
nowhash = (HashMap) wordMap;
-
} else {
-
HashMap<String, String> newWordHash = new HashMap<String, String>();
-
newWordHash.put(\"isEnd\", \"0\");
-
nowhash.put(word, newWordHash);
-
nowhash = newWordHash;
-
}
-
if (j == key.length() - 1) {
-
nowhash.put(\"isEnd\", \"1\");
-
}
-
}
-
}
-
}
-
-
/**
-
* 檢查一個字串從begin位置起開始是否有keyword符合,
-
* 如果沒有,則返回0
-
* 如果有符合的keyword值,繼續遍歷,直至遇到isEnd = 1,返回匹配的keyword的長度,
-
*/
-
private int checkKeyWords(String txt, int begin) {
-
HashMap nowhash = keysMap;
-
int res = 0;
-
for (int i = begin; i < txt.length(); i++) {
-
char word = txt.charAt(i);
-
Object wordMap = nowhash.get(word);//得到該字元對應的HashMap
-
if (wordMap == null) {
-
return 0;//如果該字元沒有對應的HashMap,return 0
-
}
-
-
res++;//如果該字元對應的HashMap不為null,說明匹配到了一個字元,+1
-
nowhash = (HashMap) wordMap;//將遍歷的HashMap指向該字元對應的HashMap
-
if (((String) nowhash.get(\"isEnd\")).equals(\"1\")) {//如果該字元為敏感詞的結束字元,直接返回
-
return res;
-
} else {
-
continue;
-
}
-
}
-
return res;
-
}
-
-
/**
-
* 判斷txt中是否有關鍵字
-
*/
-
public boolean isContentKeyWords(String txt) {
-
for (int i = 0; i < txt.length(); i++) {
-
int len = checkKeyWords(txt, i);
-
if (len > 0) {
-
return true;
-
}
-
}
-
return false;
-
}
-
-
/**
-
* 返回txt中關鍵字的列表
-
*/
-
public List<String> getTxtKeyWords(String txt) {
-
List<String> list = new ArrayList<String>();
-
int l = txt.length();
-
for (int i = 0; i < l;) {
-
int len = checkKeyWords(txt, i);
-
if (len > 0) {
-
String tt = txt.substring(i, i + len);
-
list.add(tt);
-
i += len;
-
} else {
-
i++;
-
}
-
}
-
return list;
-
}
-
-
/**
-
* 初始化敏感詞列表
-
* */
-
public void initfiltercode() {
-
List<String> keywords = new ArrayList<String>();
-
keywords.add(\"中國人\");
-
keywords.add(\"中國男人\");
-
keywords.add(\"法輪\");
-
this.addKeywords(keywords);
-
}
-
-
public static void main(String[] args) throws IOException {
-
KeywordFilter filter = new KeywordFilter();
-
filter.initfiltercode();
-
String txt = \"哈哈,反倒是 法輪熱舞功,中國人,\";
-
boolean boo = filter.isContentKeyWords(txt);
-
System.out.println(boo);
-
List<String> set = filter.getTxtKeyWords(txt);
-
System.out.println(\"包含的敏感詞如下:\" + set);
-
}
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1144669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- JAVA使用DFA演算法過濾敏感詞Java演算法
- JavaScript評論敏感詞過濾程式碼JavaScript
- 教你如何實現Python 過濾敏感詞Python
- js實現敏感詞過濾演算法JS演算法
- 高效的關鍵詞替換和敏感詞過濾工具
- 過濾器應用【編碼、敏感詞、壓縮、轉義過濾器】過濾器
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- DFA在C#中的實現:過濾敏感詞C#
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)Spring BootFilterJDK
- PbootCMS設定當前站點模板,模板子目錄,黑白名單,敏感詞過濾等boot
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- Safari網頁敏感文字過濾外掛:Profanity Filter for Mac網頁FilterMac
- 【log4j2日誌框架】敏感字元過濾框架字元
- java 過濾 htmlJavaHTML
- Java Filter過濾器JavaFilter過濾器
- 基於JavaScript的關鍵詞過濾示例JavaScript
- GO語言敏感詞檢測Go
- 爬蟲敏感圖片的識別與過濾,瞭解一下?爬蟲
- python輕鬆過濾處理髒話與特殊敏感詞彙的方法Python
- 敏感詞 v0.19.0 新特性之敏感詞單個編輯,不必重複初始化
- 基於 Tire 樹的敏感詞檢測
- 有沒有golang 敏感詞的專案Golang
- 敏感詞庫專案 Sensitive-lexicon
- Java實現過濾中文亂碼Java
- Java設計模式-過濾器模式Java設計模式過濾器
- java--FilenameFilter檔案過濾器JavaFilter過濾器
- 過濾Servlet--過濾器Servlet過濾器
- IM敏感詞演算法原理和實現演算法
- Java Stream過濾器案例解說 - FoojayJava過濾器
- RangeBitmap提升Java流資料過濾效能Java
- Java 中的 Filter 過濾器詳解JavaFilter過濾器
- java過濾器中如何轉移地址?Java過濾器
- 過濾