高效Java实现敏感词过滤算法工具包
2.0版本提供更高效的標點符號的判斷跳過過程
舊版請參考本人2011年博文:高效Java敏感詞、關鍵詞過濾工具包_過濾非法詞句
本文是Java敏感詞過濾的原理以及工具包的提供地址,原理:基于多叉樹的查找。
第一步:把敏感詞讀入搜索多叉樹中,
樹結構:
?
第二步,對需過濾的句子進行逐字匹配:
?
比如句子:解放了全中國
1、記錄起始位置start=0,讀到了“解”,匹配了搜索樹中起始節點的的“解”字;
2、繼續讀入“放”,又匹配了搜索樹中的下一節點的“放”字,此時其子節點的isEnd為true,即當前為一敏感詞的結束位,則把當前匹配長度2放入臨時變量length;
3、繼續第2步,直到map中找不到相匹配的字;
4、如果length>0把從start到start+length的字符替換為“*”,從start+length重新開始第1步;
5、如果length=0,從start+1開始第1步。
本算法對純文本匹配執行效率已改進到:5000字5毫秒(2400敏感詞庫)
張人杰 2017.7.20
下載地址:點擊打開鏈接
程序已考慮了標點符號間隔的情況,自動處理標點符號間隔的關鍵詞:
3.0版本加入了正向詞匯配置表和反向詞匯配置表,掃描過程還是順序一次,但正向詞匯和反向詞匯有交叉時,以等級值大的為準,從而順利解決了江陰毛紡廠問題。
源碼:GitHub - AlexZhangrj1981/sensitive-words-filter
總結
以上是生活随笔為你收集整理的高效Java实现敏感词过滤算法工具包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [VC]旋转位图图片的算法函数
- 下一篇: 如何将android例子程序添加到Ecl