使用「字首樹」過濾敏感詞

2021-09-28 11:17:26 字數 1432 閱讀 7524

- 名稱:trie、字典樹、查詢樹

- 特點:查詢效率高,消耗記憶體大

- 應用:字串檢索、詞頻統計、字串排序等

- 定義字首樹

- 根據敏感詞,初始化字首樹

- 編寫過濾敏感詞的方法

@component

public class sensitivefilter

} catch (ioexception e)

}// 將乙個敏感詞新增到字首樹中

private void addkeyword(string keyword)

// 指向子節點,進入下一輪迴圈

tempnode = subnode;

// 設定結束標識

if (i == keyword.length() - 1) }}

/*** 過濾敏感詞

** @param text 待過濾的文字

* @return 過濾後的文字

*/public string filter(string text)

// 指標1,指向根

trienode tempnode = rootnode;

// 指標2,不回頭,一直向前移動

int begin = 0;

// 指標3

int position = 0;

// 結果

stringbuilder sb = new stringbuilder();

// 因為指標3會先達到最後位置,所以用指標3作為判斷條件會減少迴圈

while (position < text.length())

// 無論符號在開頭或中間,指標3都向下走一步

position++;

continue;

}// 檢查下級節點

tempnode = tempnode.getsubnode(c);

// 以begin開頭的字串不是敏感詞

if (tempnode == null) else if (tempnode.iskeywordend()) else

}// 將最後一批字元計入結果

return sb.tostring();

}// 判斷是否為符號

private boolean issymbol(character c)

// 字首樹結構

private class trienode

public void setkeywordend(boolean keywordend)

// 新增子節點

public void addsubnode(character c, trienode node)

// 獲取子節點

public trienode getsubnode(character c)

}}

敏感詞過濾演算法 字首樹演算法

背景平時我們在逛貼吧 牛客網的時候,我們經常可以看到一些形如 的符號,通過上下文,我們也可以很容易猜到這些詞原來是罵人的話,只是被系統和諧了。那麼這是如何實現的呢?作為普通人,我們最先想到的一種辦法就是把所有敏感串存入乙個列表中,然後使用者每發一條內容後台就把該內容與敏感串列表的每一項進行匹配,然後...

字典樹 敏感詞過濾

在 開發中,通常會對使用者發布的問題 文章等內容進行文字過濾操作,倘若用傳統的字元比較篩選或者kmp演算法,顯然時間效率上遠遠達不到要求,因此引入字典樹 字首樹 即現將要遮蔽的敏感詞通過字典樹的形式儲存起來,再通過對使用者發布的內容進行搜尋遍歷打碼等操作,將處理後的內容發布在網頁上。字典樹的結構如下...

敏感詞過濾

最近需要實現對聊天裡的敏感詞過濾,要求比較簡單,只需要對字型檔中存在的關鍵字進行匹配,所以不需要非常複雜的實現,但是需要能夠快速地對乙個關鍵字集合進行匹配。搜了一下相關的資料,比較簡單的乙個演算法是使用aho corasick演算法,以下簡稱ac演算法。該演算法的基本思想中包含了kmp演算法,即利用...