反垃圾江湖風雲紀事 | 技術頭條
列位看官,你道此文從何而來?說起根由雖近荒唐,細諳則深有趣味,且聽筆者細細道來。
作者 | 愛奇藝技術團隊
責編 | 唐小引
出品 | CSDN(ID:CSDNnews)
第一回 風起雲湧
怒來無發亦衝冠,劍氣能令六月寒
有人的地方,就有江湖;有江湖的地方,就有黑白善惡,也就有了黑白和善惡無盡的鬥爭。
在網際網路的江湖中,有這麼一群邪惡的組織,散落在世界各個陰暗角落,為了謀取利益( 據傳該利益市場有千億之巨 ),為非作歹,對江湖各名門大派以及無名小派,進行盜號、薅羊毛、散播病毒、廣發垃圾帖、刷單刷量等破壞行為,嚴重威脅到江湖穩定,甚至有些門派因此被迫退出江湖。
我們稱他們為,黑產。
作為網際網路視訊江湖的重要一脈,愛奇藝自然是黑產重點關注的物件。在黑產的各種破壞行為中,對千千萬萬享受愛奇藝視訊內容服務的老百姓中,產生直接影響的,就是廣發垃圾帖,通常都是廣告、色情資訊內容。
為了社群內容的繁榮穩定,對抗黑產發帖派,鍾馗就此誕生。
鍾馗(kui),鍾馗的鐘,鍾馗的馗,與中國古代神話人物鍾馗重名(如有雷同,純屬故意)。
籍貫,愛奇藝技術團隊。
職業,反垃圾。
雖然鍾馗出生於網際網路時代,但早在幾百年前,就有人稱讚過鍾馗的厲害。有詩為證:“怒來無發亦衝冠,劍氣能令六月寒”。從出生起,鍾馗就在諸位名師的指點下,苦練本領,希望能成為各業務、各社群的守護神。
除了與黑產發帖派進行對抗,社群裡也有很多罵人的、灌水的、發無語義內容的普通使用者,這部分內容,通常也是不允許存在的。有時候,鍾馗像個警察,除了廣告貼、色情貼這種涉黑的刑事案件,各種灌水、罵人擾民的民事糾紛也要管理。
第二回 系統架構
尋龍分金看纏山,一重纏是一重關
當前鍾馗採用 QAE 方式部署,便於橫向縱向擴充套件,也支援例行任務批量呼叫。如下圖所示,當前文字反垃圾系統架構分為三層,分別為服務層、演算法策略層、模型管理層、監控層。
其中, 服務層負責為各業務方提供服務介面 ,各業務方通過 HTTP 請求形式呼叫反垃圾服務,傳入相應引數即可得到返回結果;
演算法策略層為垃圾檢測的核心環節 ,又分為預處理模組、規則模組、關鍵詞模組、風控模組、模型模組等幾個部分,每個模組又細分為數個到數十個的子模組。策略組支援按業務需要配置,可針對不同的業務定製不同的演算法策略組合,以滿足不同業務針對文字特點、響應時長的需求,有很高的配置靈活性。除此之外,策略組還支援短路操作,即有某一策略判定該條文字為垃圾文字,則不再進行後續判斷,可以加快響應速度,縮短響應時間;
在演算法策略層之下則是一些輔助與互動模組,主要有人工稽核資料分析系統、預料標註系統、ML 模型離線訓練系統、日誌檢索引擎與監控報警系統,該部分一方面可進行語料資料集的擴充、標註以及利用其進行相關機器學習、深度學習模型的訓練工作,另一方面可以針對反垃圾服務的各項指標如 QPS、呼叫量等的監控及報警,保證服務穩定性。
第三回 策略介紹
十步殺一人,千里不留行
行走江湖,懲惡揚善,離不開一身過硬的本領。下面,就來介紹鍾馗的各種武功:
-
關鍵詞策略 —— 七傷拳
關鍵詞匹配是識別 Spam 最直接,最簡單、最有效,也是最暴力的方法。鍾馗擁有一套較為完善的關鍵詞識別演算法體系,如硬匹配、跳詞匹配、聯絡方式匹配、拼音匹配、標點符號匹配、長句模糊匹配、完全匹配等。這些不同的匹配演算法,在針對不同的垃圾文字中發揮著各自的作用。
這裡給大家簡單介紹一下兩種關鍵詞匹配演算法,希望給大家有一個感性的認識。
硬匹配(HardMatch) ,顧名思義就是一種比較生硬的匹配演算法,關鍵詞是啥,識別的內容就要一個字不差的相同。硬匹配還支援多個關鍵詞的匹配,如“售賣,會員”,那麼如果一個文字是“低價會員.....售賣,聯絡我”,那就會被識別出來,不管是“售賣”和“會員”的相對出現順序是什麼。
跳詞匹配 是在硬匹配上進化而來的一種匹配演算法。當我們要識別的內容的每個字都被空格,或者橫槓隔開,那麼通過硬匹配加詞可能就有點不方便了。跳詞匹配預設會把關鍵詞中的每個詞分開單獨匹配。比如我們要識別“找--小–姐,私聊”,那麼只要新增“找小姐”,就能夠準確命中目標。
通常線上發現一些垃圾文字,運營第一時間會配置一些關鍵詞加以控制,這樣是最快速有效的。
關鍵詞策略雖好,但是太過於暴力,稍有不慎,就有誤傷,就像七傷拳一樣,稍微控制不好,傷人傷己。
-
規則策略 —— 獨孤九劍
單單有關鍵詞,還不足以識別所有的垃圾內容,畢竟關鍵詞識別太具體了,能夠識別的內容也是有限的。這個時候就需要編寫一些規則去更加普適性的識別垃圾內容。
規則,可以用來解決一類問題,就像獨孤九劍一樣,有破劍式、破刀式、破鞭式等。鍾馗的規則策略,也有破色情式、破廣告式、破辱罵式等。只不過,鍾馗會的招式更多。經過幾年和黑產的鬥爭,鍾馗已經積累的幾十個不同的規則。
我們知道,現在很多小朋友在看動畫片的時候,拿著 iPad,在鍵盤上亂敲一通,作為評論傳送。其實這些都是屬於無語義的內容,並不是啥正兒八經的評論,運營一般都會建議刪除類似的評論。鍾馗有一個規則叫“最長連續字母”,它是計算一句話中最長的連續的字母有多少,如果有 20 個,想必一般都不會是英文單詞,從線上實際情況來看,基本都是無語義。當然也有類似 hahaha 這種,只要額外處理一下就行了。
評論歸評論,升級到對明星個人攻擊就不對了。我們有一個規則叫“基於依存分詞器的情感分析”,專門用來識別這種評論。依存分析的結果是一個樹,樹的邊對應一種語法關係,比如名詞修飾,主謂短語。在我們的資料庫中,會配置一些演員名,和一些語法關係,比如名詞修飾關係 NMOD(傻逼,__ACTORS__),表示但凡有人稱呼某個明星是傻逼,我們就認為這句話需要特殊關照一下。
對於不同的業務線,稽核的力度和尺度都是有些不同的,所以我們使用的規則會把計算結果和評判的尺度解耦,同樣一句話,同樣的規則,計算的值肯定是一樣的。但是配置不同的尺度,可能在有些業務線被判定為垃圾,有些可以存活下來。
-
模型策略 —— 九陰真經
《九陰真經》分上下兩卷,上卷內功心法、下卷武功招式。機器學習模型,亦是如此。標註語料如同內功心法、演算法模型如同武功招式。強大的內功,加上凌厲的招式,方能擊退敵人。
模型主要針對的文字型別有色情文字、廣告文字、無語義文字、辱罵文字、低俗文字等。而模型型別經過多輪迭代,擁有了 LogisticRegression、LSTM、Convolutional-LSTM、CNN、BiLSTM-Attention、cw2vec-Attention 等眾多形式的模型結構,每種模型都在垃圾文字識別中發揮著重要作用。
LogisticRegression 模型:
該模型為線性模型,形式簡單,迭代快速,效果一般好,特徵項有分詞及 n-gram 形式的 BagOfWord 布林特徵、輔以部分規則特徵和 1-gram 拼音特徵,可在一定程度上捕捉句子結構及同音異形字特徵,但該模型受資料集類別平衡性影響較大,需要對訓練集做大量標籤清洗工作。
上圖即為色情 LR 模型示例,其中各字元數量取對數的原因在於使所有特徵取值範圍相似,提高模型收斂速度。
LSTM 模型:
該模型由一個單層 LSTM 單元構成,擁有 128 維的隱層狀態輸出及上下文編碼輸出,LSTM 是一種特殊的 RNN 結構,其提出主要是為了解決長序列訓練過程中的梯度消失和梯度爆炸問題,相對於普通 RNN 來說,能夠在更長的序列中有著更好的表現。
Convolutional-BiLSTM 模型:
眾所周知,CNN 在影象領域取得了巨大的成功,其核心之一在於卷積操作可以更好地捕捉區域性特徵,在文字處理中借鑑這一思想,將區域性資訊進一步強化,結合雙向 LSTM 獲取句子的編碼表示,相對於單向 LSTM 來說,既包含有上文資訊,又包含有下文資訊,做到基於上下文語義資訊判斷文字是否屬於垃圾。下圖即為該模型結構的一個示例:
CNN 模型:
CNN 模型完全使用卷積操作來提取特徵,通過不同的卷積視窗大小來獲取視野和序列特徵,提供強大的特徵表示能力,同時,池化操作能夠減少引數數量、降低噪聲干擾,起到進一步特徵選擇的作用。
為了針對黑產經常採用的使用同音字來對漢字進行替換逃避關鍵詞匹配或創造 OOV 條件越過模型檢查的手段,如“黃色”就可以被替換為“璜色”、“煌色”、“簧色”等,我們加入了針對拼音維度的考量,拼音特徵可以很好地建立替換字與原始字的對應關係,在一定程度上增加模型對替換字的識別能力,最後將漢字特徵與拼音特徵相結合,能夠得到更強的句子表示,提高分類效能。同時,CNN 相對於 LSTM 來說,訓練和預測速度更快。
Cw2vec-Attention 模型:
由於黑產經常對漢字進行替換來逃避檢測,因此該模型關注的重點在如何找出替換字與原始字除拼音之外的聯絡,通過觀察樣本資料,我們發現,黑產除了替換為同音字之外,還會替換為同形字,如“微信”可以被替換為“徽信”、“媺信”、“徵信”、“徾信”等,而漢字筆順特徵可以較好地建立替換字與原始字的聯絡,因此,引入漢字部件的筆順資訊,可以在一定程度上增加模型對替換字的識別能力。同時藉助 Attention 機制來獲取多樣化的上下文關係,增強部分特徵詞的作用,提高檢測效能。模型架構如下圖所示:
-
風控策略 —— 葵花點穴手
前面的策略,都說的是輸出技能。鍾馗還會控制技能,手指輕輕一點,就把敵人控制住,讓他動彈不得,無法出招。
當前,鍾馗所採用的風控策略只是一些簡單的針對使用者 ID、裝置 ID 級別的規則,比如,水貼識別策略,可以判斷使用者一定週期內傳送文字內容的相似度及頻率,再決定是否用葵花點穴手將其點住,進行限制。
第四回 無盡之戰
路漫漫其修遠兮,吾將上下而求索
反垃圾的路,有起點,但沒有終點。鍾馗在成長、在壯大、在苦練學習各種武功祕籍,但作為對手的黑產們,面臨鉅額的誘人利益,又何嘗不是呢?現在黑產們以及發展出群控、雲控技術,甚至也在使用人工智慧技術。這注定,不是一條一勞永逸的路,鍾馗也將繼續勤學苦練,完善自我。魔高一尺,那就讓道,高它一丈吧。
宣告:本文為原創投稿,作者獨立觀點,不代表 CSDN 立場。
【END】
作為碼一代,想教碼二代卻無從下手:
聽說少兒程式設計很火,可它有哪些好處呢?
孩子多大開始學習比較好呢?又該如何學習呢?
最新的程式設計教育政策又有哪些呢?
下面給大家介紹CSDN新成員: 極客寶寶(ID: geek_baby)
戳他了解更多↓↓↓
熱 文推 薦
☞重磅!Facebook 更新 PyTorch 1.1,打算跨 GPU 分割神經網路 | 技術頭條
☞ 阿里半跪過,任正非差點跳樓,京東被騙光錢:成年人的生活哪有容易二字?
☞強推!盤點阿里巴巴 15 款開發者工具 | 程式設計師硬核評測
☞17篇論文入選CVPR 2019,百度AI都在關注什麼?(附論文地址)
System.out.println("點個在看吧!"); console.log("點個在看吧!"); print("點個在看吧!"); printf("點個在看吧!\n"); cout << "點個在看吧!" << endl; Console.WriteLine("點個在看吧!"); Response.Write("點個在看吧!"); alert("點個在看吧!") echo "點個在看吧!"
點選閱讀原文,輸入關鍵詞,即可搜尋您想要的 CSDN 文章。
你點的每個“在看”,我都認真當成了喜歡