知乎反作弊垃圾文本識別

背景

截止今年 8 月,知乎註冊用戶量已突破 2 億。對於垃圾信息的治理,我們面臨着更大的挑戰和考驗。過去我們通過不斷升級「悟空」的策略引擎,通過在行爲、環境、資源、文本等多維度組合應用,已經取得了非常不錯的效果。近期我們嘗試引入深度學習識別垃圾文本,「悟空」對 Spam 的治理能力又邁上了一個新的臺階。

問題分析

我們對當前站內垃圾文本進行了梳理,發現目前主要包括四種形式:

  • 導流內容:這類內容大概能佔到社區中垃圾文本的 70%-80%,比較典型的包括培訓機構, 美容,保險,代購相關的。導流內容會涉及到 QQ,手機號,微信,url 甚至座機,在一些特殊時間節點還會出現各類的專項垃圾文本,比如說世界盃,雙十一,雙十二,都是黑產大賺一筆的好時機。
  • 品牌內容:這類內容會具有比較典型的 SEO 特色,一般內容中不會有明顯的導流標識,作弊形式以一問一答的方式出現,比如提問中問什麼牌子怎麼樣?哪裏的培訓學校怎麼樣?然後在對應的回答裏面進行推薦。
  • 詐騙內容:這類內容一般以冒充名人,機構的方式出現,比如單車退款類,在內容中提供虛假的客服電話進行詐騙。
  • 騷擾內容:比如一些誘導類,調查類的批量內容, 非常嚴重影響知友體驗。

這些垃圾文本的核心獲益點一方面是面向站內的傳播,另一方面,面向搜索引擎,達到 SEO 的目的。

算法介紹

從算法角度可以把這個問題看作是一個文本分類問題,把站內的內容分爲垃圾文本和正常文本兩個類別。常用文本分類算法有很多,我們不打算詳細介紹每一個分類算法,只是分享我們在處理實際問題中遇到的一些問題。

我們遇到的第一個問題是使用 RNN 還是 CNN。一般來說,CNN 是分層架構,RNN 是連續結構。CNN 適合由一些關鍵詞來決定的任務;RNN適合順序建模任務 ,例如語言建模任務,要求在瞭解上下文的基礎上靈活建模。這一結論非常明顯,但是目前的 NLP 文獻中並沒有支持性的文章。另外一般來說,CNN 訓練速度和預測速度都快於RNN。考慮到上述站內垃圾文本的主要形式,導流和品牌內容中都會出現關鍵詞,同時對於垃圾文本檢測的速度要求比較高,我們最終使用 CNN。一個典型的 CNN 文本分類模型如下圖所示。

接下來,我們遇到的一個問題是,使用字還是詞語作爲輸入。詞語具有比字更高的抽象等級,更豐富的含義。但是導流內容中的 QQ、手機號、微信、url、座機等,通常不會出現在已有詞庫中,品牌詞也具有類似的特點,一般是未登錄詞。而且,導流內容通常會出現變體詞,使用詞語作爲輸入,不能很好地捕捉類似特徵。所以,我們最終使用的是字作爲輸入。

在決定使用字作爲輸入之後,需要考慮使用在知乎站內語料上預訓練的字向量初始化模型的Embedding層,還是直接在分類模型中隨機生成初始字向量。這裏的考慮是垃圾文本的數據分佈和知乎站內文本的數據分佈具有比較大的區別,垃圾文本相對於站內正常文本是一個比較特定的領域。因此我們使用隨機初始化字向量。

在決定使用字向量之後,我們觀察到“有意者加我諮詢:2839825539”、“找北京·合·合·天·下”等關鍵信息,按字來計算通常都很長。因此,CNN需要更大的感受域來提取相關文本特徵,如果簡單增加捲積核大小,會增加參數數量。我們考慮使用空洞卷積(dilated convolution),來增加捲積的感受域,同時不增加網絡參數數量。一個典型的空洞卷積如下圖所示。

另外我們觀察到需要識別的垃圾文本並不都是短文本,還有一部分是長文本。由於文本長度的關係,如果簡單將卷積層的輸出取平均,輸出到全連接層,那麼文本能決定是否是垃圾文本的關鍵特徵很可能被其他特徵所淹沒,導致模型精度難以提升。因此,我們加入了一個 Attention 層,通過它給予關鍵特徵更大的權重。Attention 計算方法如下圖所示。

通過上述分析,我們最終採用的模型結構如下圖所示。

垃圾文本分類算法結構

模型效果

目前,垃圾文本模型會對知乎站內的所有內容進行評分,輸出 0-1 之間的分數,系統會對高分內容進行處理。

模型分數在知乎部分業務線上的表現

文本分數 >=0.9準確率 >=0.8準確率 >=0.7準確率
回答 100.0% 99.8% 95.6%
提問 100.0% 99.1% 97.7%
評論 100.0% 99.6% 98.0%

當前情況下,模型結合其他反作弊維度,可實現對垃圾評分 0.5 分以上的內容進行刪除,同時準確率達到 97% 以上。上線以來,每天刪除垃圾內容數千條。

模型實時處理

另外值得一提的是端午期間,知乎站內涌現了一波違法違規的 spam,垃圾文本模型覆蓋了 98% 以上內容,使得這波攻擊大概持續了 1000 條左右就停了。

端午 spam 攻擊

後續計劃

垃圾文本識別是一個長期攻防的過程,站內垃圾文本會隨着時間不斷演變,現有模型的效果也會隨之變化。爲了應對站內垃圾文本的挑戰,我們將一直收集 badcase,進一步優化模型的效果。

最後

由於本人的水平有限,如有錯誤和疏漏,歡迎各位同學指正。

本文轉載自知乎

原文鏈接

https://zhuanlan.zhihu.com/p/46877662

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