敏感詞過濾算法 爲內容保駕護航 Java/.Net/C++/c/Python等語言是如何進行敏感詞打碼限制的 高效防範違規內容

有人的地方,就有江湖,有輸入框的地方,就有注入風險!有輸入框的地方,就有敏感詞!敏感詞就像一個平臺殺手,可能直接導致平臺被封鎖!

敏感詞是一個APP、一個網站、一個內容平臺的“殺手”,危害程度殺傷力相當大。將一個文本中的敏感詞過濾掉,是一個合法合規平臺所必須使用的技術。敏感詞的過濾算法是關鍵詞查找、過濾打碼的過程,可有效結合時間複雜度高效的樹型結構進行算法設計與實現!

敏感詞可能是髒話,也可能是不同文化背景下的禁詞,也可能是政治敏感詞彙,等等,敏感詞可能導致平臺遭受法律或政策的制約。舉個簡單的例子,非法涉黃的網站可能直接被取消網站備案,無法在中國大陸訪問。不做敏感詞的後果是相當嚴重的。

做爲一個程序員,一個開發工程師,一定要掌握敏感詞算法麼?工程師分爲很多派系,對於做搜索的工程師,算法,b樹,敏感詞過程,應該要從底層,從設計到實現都不能放過!做爲應用工程師(小白程序員),能掌握算法原理,並能使用,我覺得就好了,樹葉有專攻!來來來,來一段算法描述。目前查到的敏感詞過濾算法。

一、敏感詞少的情況

如果敏感詞少的話,就直接使用replace,indexOf等等來搞定吧,只是這種情況存在的可能性太小了。敏感詞可以說是很多很多。不過,不講究效率的地方,能實現業務要求的話,使用這種方式也可以。

二、敏感詞較多的情況

敏感詞受政治、人文、種族各種因素影響,詞彙量較多,要做到全面的過濾,自然要考慮考慮算法的設計,以保證過濾的高效性。在這裏介紹網上流行的一種敏感詞過濾算法。深入瞭解專業算法已經超出了本文的範疇,請自行找其他資料查看。網上流傳的算法,主要是將敏感詞庫放到樹型數據結構中,將帶過濾的文本投射到敏感詞樹上,命中的就是踩到敏感詞。用樹型結構體加速匹配速度。

2.1 構建敏感詞樹

什麼是樹?主要是樹型結構在時間複雜度上有優勢。詳細瞭解時間複雜度與樹型算法,關注公衆號回“算法”!今天不展開介紹樹型結構。構建敏感詞樹型結構體,可以通過第三方庫來完成,有現成的。回覆公衆號“敏感詞庫”可獲取相關信息。如圖所示,我們構建了一棵敏感詞樹,這棵樹有傻子、傻逼、傻逼人三個敏感詞​。

2.2 投射文本

把文本填充到敏感詞樹上,就能直觀的看到哪些敏感詞覆蓋到了。如果有人在平臺發佈違禁信息,可以快速識別出來。在這裏使用投射文本描述,只是爲了描述算法,具體實現就看代碼。如圖所示,投射到樹上文本“傻逼”,就是被發現的​敏感詞。

敏感詞過濾算法的核心就是這兩步!一棵敏感詞樹,一次投射文本,就能把敏感詞全遍找過來,高效​!

今天的算法分享就要告一段落了,趕緊播放贊助商廣告!

技術島公衆號

技術島公衆號

來自: http://www.jishudao.com/2019/07/26/bad_words/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章