C 實現敏感詞過濾演算法(含原始碼)

2021-07-26 01:26:36 字數 680 閱讀 8674

將所有敏感詞庫按模組聚合構建成乙個詞樹(所謂聚合,就是將相同字開頭的部分進行聚合,以減少對詞的查詢範圍,相當於建立敏感詞索引,如:他奶奶的、他媽的、他娘的,這三個詞,聚合構建成詞樹時,「他」字就是這三個詞的索引,同時每個詞的結尾都有乙個結束標誌和該詞的一些描述,如敏感級別等),然後從頭到尾掃瞄一遍目標文字,當遇到以敏感詞樹中的索引的字時,檢視後面的文字是否構成敏感詞(如果這裡有以這個敏感詞開頭的更長的敏感詞時,以更長的為匹配結果,並判斷該詞在文字中前後是否有分隔符來區別其匹配方式),如果是則記錄,一遍掃瞄完之後所有敏感詞即被掃瞄出來了!

詞樹整體為多叉樹結構,詞樹節點包含當前位置可能出現的所有字元(位元組),以及該字元對應的下一節點位址,節點的高度對應相關敏感詞的位元組位置,節點的分支數表示該節點的被復用的次數,每個敏感詞的都會有乙個特殊的結束節點。詞樹結構可以節省儲存空間,提公升查詢效率。

詞庫ab

ab1ab2

baba1

ba2詞樹

a b \r

1 \r

2 \r

b a \r

1 \r

2 \r

使用遞迴演算法查詢詞樹,找出符合要求的最大長度敏感詞

ababc

輸入abcd,則命中abc

從文字的起始位置,以每個字元作為單詞的起始字元向後查詢,

abc輸入

123abc123,命中abc

敏感詞過濾演算法實現

說到敏感詞過濾,我也覺得這裡沒有必要寫這個文章,因為前人已經前前後後有過很多種演算法解決該問題。這裡我之所以寫這個文章,是因為我自己自創了一種演算法 真的是自創哦,因為我在寫這個演算法的時候,完全是自己想出來的方式,沒有借鑑任何 靈感來自於一篇文章中的一句話 如果能掃瞄一遍文字就能將所有的詞找出來,...

敏感詞過濾演算法實現

filterhelper類 region 非法關鍵字過濾 bate 1.1 public class filterhelper public filterhelper string dictionarypath private string dictionarypath string empty 詞...

C 敏感詞過濾實現方法

這兩天突然想到了敏感詞過濾 就結合網上找到的資料自己寫了乙個,髒字數量700 效率不是很高 測試在110多kb的情況下比replace快 3 4倍 測試結果圖 單位 秒 如下 system.text.stringbuilder sb new system.text.stringbuilder tex...