基於半監督學習技術的達觀文本過濾系統
文/張健(達觀數據架構師)
社交、直播、論壇、電商等各類平台每天都會產生海量UGC(User Generated Content),其中不可避免地混雜有大量垃圾文本。這些內容不但嚴重影響用戶體驗,而且還可能發生違規的運營風險。面對這些迫切需要,達觀數據提供了垃圾信息過濾的服務,精準定位並剔除不良信息。
通常垃圾信息過濾的問題可以看作分類問題,即判斷一個評論是屬於正常評論這個分類,還是屬於垃圾信息這個分類。
文本分類的研究已經經歷了很長時間的發展,傳統的垃圾信息過濾方法一般是監督的,但是為了確保分類器有良好的泛化能力,這些方法的使用都必須以存在大量標註語料作為前提條件。而在垃圾信息過濾的場景下,標註工作是一件極為困難的事情,達觀的審核系統在開發階段初期就面臨標註樣本不足的挑戰。一方面,用戶活躍的平台每天都能產生大量新的評論,而且垃圾信息所佔的比重會很高,標註成本非常高;另一方面,垃圾信息發布用戶會想方設法把自己「隱藏」在其他正常評論中,只憑語義信息可能難以確定是否垃圾信息。
為了克服標註樣本不足的難題,垃圾信息過濾可以引入半監督學習方法來增強信息處理的能力。半監督學習方法的優勢是能夠在只有少量標註數據的條件下,綜合利用已標註數據和未標註數據的信息,達到較好的過濾效果。
達觀的文本挖掘系統在多個模塊裡面都使用到了半監督學習的方法,主要方式是通過外部知識來對訓練樣本進行語義擴展,然後結合數量較多的未標註樣本選取預測置信度高的子集作為新樣本加入訓練集進行模型訓練。
達觀數據(達觀數據——中國領先的文本搜索推薦技術服務商)專註於企業大數據技術服務,以獨創的多層智能挖掘演算法,實現對海量用戶行為和文本數據的深入挖掘、分析和預測,為企業提供智能文本分析、精準用戶行為建模、個性化推薦、智能搜索縫尖端數據挖掘功能。
下面我介紹一下最近閱讀過的採用半監督學習來進行垃圾信息過濾的兩篇論文:NetSpam和SPEAGLE。
1.NetSpam: a Network-based Spam DetectionFramework for Reviews in Online Social Media
論文鏈接:http://ieeexplore.ieee.org/document/7865975/
NetSpam論文的基本思想是使用了異構信息網路方法來對用戶評論進行建模,比較新穎的是在文本分類過程,利用到了異構網路中不同的邊類型的信息來提升分類效果。另外,使用了無監督的方法能夠在沒有標註樣本的情況下,根據評論數據的統計信息,獲得各種特徵對應的重要性。
a) 特徵類型
這篇文章提到了問題解決使用到的幾方面特徵,主要是從基於用戶/評論和行為/語言特徵兩個維度去刻畫,具體特徵示例參考表格 1:
表1 NetSpam特徵類型
b) 異構信息網路
首先展示異構信息網路(Heterogeneous Information Network,HIN)定義,信息網路可以用一個有向圖G = (V, E)來表示,其中V代表節點,E代表邊。並且用映射函數
?:V→A 來表示每一個節點 v∈V 屬於節點類型集合A: ?(v)∈A,用映射函數ψ:E→R.表示每條邊 e∈E 屬於邊的類型集合R:ψ(e)∈R。而在異構信息網路裡面,節點和邊有多重類型,每個節點或者每個邊都有固定的類型,一個異構信息網路如圖1。圖1 異構信息網路
元路徑P是定義在網路模式TG =
(A, R)上的,如表示了從A1到Al1的複雜的關係,
元路徑P的長度即為關係R的個數。不同元路徑代表著不同的物理意義,元路徑所所蘊含的豐富的語義特徵,是HIN的一大非常重要的特徵。
異構信息網路上分類問題的形式化定義是:對於網路G = (V, E),V』是V中需要進行分類的目標節點子集。目標節點的分類信息包含C1…Ck。C在該場景里,我們在V』中已經有部分已標註的節點,分類任務的目標就是預測V』中所有未標註的節點。
c) 演算法模型
首先計算先驗概率,設定評論u的初始概率記作為yu。模型方案包括了半監督學習和無監督學習兩種。在半監督學習方案中,初始概率yu定義為:
在無監督學習方案中,初始概率yu定義為:
其中 表示評論u在特徵l上的概率,L是所使用特徵的總數。
異構網路網路架構的元素基於多個特徵生成:負面比率(NR),平均內容相似度(ACS),第一人稱數目(1PP)和早期時幀(ETF)等,見圖2。
圖 2 網路架構
基於該網路架構形成的評論到評論的元路徑可表示為表格 2。
表格 2 元路徑列表
給定了元路徑的設定後,論文擴展了異構網路的定義,在元路徑上具有相同的值的兩個評論是相互連通的。給定評論u,u在元路徑pl上的值的計算方式為
其中s表示指定的元路徑對垃圾評論相關的確定性的級別。如果對於兩個評論u和v,如果滿足
那麼在評論網路中就把這兩個評論連通起來。
d) 分類過程
NetSpam的分類過程包括兩個步驟:計算每個特徵的影響權重;計算每條評論的最終概率並且進行標記垃圾/非垃圾信息。NetSpam認為節點的分類是基於評論網路中該節點與其他節點的關係完成的,關聯的兩個節點會有較高的概率帶有同樣的標籤。在此過程中,元路徑的權重會幫助我們去理解評論網路中各種影響因子的重要性,合理設計權重的計算方式對分類效果有直接影響。該論文提出元路徑權重的計算方式為:
標記過程就比較簡單,假設Pru,v是和垃圾評論v有連通關係的未標註評論u可能是垃圾評論的概率,它的計算方式為:
而評論u最終為垃圾評論的概率Pru計算方式為:
圖3展示了對構建的異構信息網路進行分類處理的計算過程:
圖 3 NetSpam分類處理流程
e) 小結
基於異構信息網路對用戶評論進行建模,從全局上充分地收集了評論和用戶,評論和評論,用戶和用戶之間的多元關係信息,在行為和語言特徵兩個維度上進行評估,能在不依賴於專家知識的基礎上,自動地學習到用戶和評論的分類屬性,具有較強的魯棒性。
2. Collective Opinion SpamDetection: Bridging Review Networks and Metadata
論文鏈接:Collective Opinion Spam Detection
SpEagle論文認為垃圾信息過濾需要充分用到包括文本、時間戳和評分在內的元數據和評論網路,並且需要將這它們融合到一個體系內。如圖4所示,SpEagle利用了元數據、評論網路以及評論標籤的信息,完成了識別出垃圾內容發布者、虛假評論和虛假內容目標商品三者的任務,分類過程是通過評論-產品和評論-用戶的關係構建馬爾科夫隨機場模型實現。
圖 4 SPEAGLE系統框架
a) 特徵類型
SPEAGLE用到的特徵和NetSpam論文相似,如表格 3和表格 4(其中第三列的H/L表示和垃圾內容的關聯度是高/低)
表3 SPEAGLE用戶&商品特徵類型
表4 SPEAGLE評論特徵
b) 模型定義
利用評論-產品和評論-用戶的關係,構建出了一個二分圖G=(V,E),節點集合,包括了評論、用戶和產品三種類型的節點。在該二分圖上進行分類的目的是對每一個節點都分配一個標籤,評論類型節點標籤的值域LR={真實,虛假},用戶類型節點標籤的值域LU={正常用戶,垃圾內容發布用戶},產品類型節點標籤的值域LP={垃圾內容目標產品,非目標產品}。該分類問題可以形式化轉化為成對馬爾科夫隨機場模型(MRF)。MRF模型包含了一個無向圖,無向圖的每個節點都和一個隨機變數Yi關聯,作為它的狀態(狀態數目有限)。而在成對MRF中,一個節點的標籤可看做只依賴它的鄰居和與圖中其他所有節點獨立。
標籤的聯合概率可以寫作:
其中y表示對所有節點的一種標籤標註方法,yi是節點分配的標籤,Z是一個標準化常量。
獨立因子是節點的勢函數,表示每個節點的初始分類概率; 是邊的勢函數,表示帶有標籤yi的節點通過邊s連通到帶有標籤yj的節點的概率。
是邊的勢函數,表示帶有標籤yi的節點通過邊s連通到帶有標籤yj的節點的概率。
SPEAGLE演算法面向兩種類型的邊的通用勢函數為:
從上可看出,我們假定了垃圾內容發布用戶的評論都是虛假的,正常用戶發布的評論都是真實的;不過虛假的評論也有可能是一個非目標產品,真實評論也可能和虛假評論在目標產品中共存。
節點的先驗勢函數通過SPEAGLE的特徵類型進行響應的抽取計算來獲取:,
c) 演算法過程
SPEAGLE的演算法過程將用戶-評論-產品的圖G,通用勢函數 ,元數據中抽取出的特徵以及已標註節點的標籤(包括評論、產品和用戶的標籤)作為輸入,輸出為所有未標註節點對應分類的概率。演算法執行過程中,先對所有節點進行分類概率的初始化,如果是已標註節點,則根據
進行設定;如果是未標註節點,則需要抽取這些節點對應的特徵,然後計算出特徵的垃圾內容權重Si,然後設置勢函數為
然後主要步驟是通過Loopy Belief
Propagation(LBP)演算法來計算條件邊緣概率。LBP演算法是基於網路中的每個節點通過和鄰近節點交換信息對自身的概率狀況進行評估,而且這個過程是迭代進行,對於每一次迭代,消息mi-j從節點傳遞到節點j,其中,表示了節點 i和節點 j 的類型。消息mi-j表示節點對節點j的置信度,即i認為的j的分類分布。對於分類分布的,是基於連通節點i和節點j的邊的權重,以及節點i的領域中不包含去j的其他節點中接收到的消息來進行。消息傳遞迭代進行,直到小於閾值到達穩定狀態。當消息穩定之後,計算出邊緣概率bi(yi)見圖。對於分類問題,節點可以根據來進行標記;對於排序問題,則可以按照來進行排序。
圖 5 SPEAGLE演算法偽代碼
d) 小結
SPEAGLE採用了基於評論網路來完成分類任務,將評論、用戶和產品三者置於統一一致的框架內,而且對於不同的對象類型都使用了統一化的分類方法,這個點比較新鮮。
3. 達觀數據垃圾信息過濾工程實踐
達觀的文本挖掘系統在多個模塊裡面都使用到了半監督學習的方法,主要方式是通過外部知識來對訓練樣本進行語義擴展,然後結合數量較多的未標註樣本選取預測置信度高的子集作為新樣本加入訓練集進行模型訓練。從上面兩篇論文中的特徵類型選擇中可以看到,裡面的語義特徵抽取過程在英文文本上進行的。到了中文環境下,語義特徵抽取的過程會變得複雜很多,主要是由於漢語的語言特性造成。具體到垃圾信息過濾這個場景中,變形識別問題是有效進行語義特徵抽取亟需解決的重要問題。
a) 變形識別問題
我們在瀏覽像貼吧、論壇、新聞媒體等各種平台中,會時常看到變形的敏感詞。人腦的思維方式讓我們能夠非常自然地發現這些變形詞,因為這些變形詞在句子中是「異常」的部分,這種「異常」的感覺會將我們的注意力聚集到這一區域,進而逐漸發現完整的變形詞。而機器在直接面對這些變形詞(包括間雜特殊符號,同音變換,形近變換,簡繁轉換,偏旁拆分等)時就顯得稍微力不從心,變形詞識別是解決中文垃圾內容過濾的一個重要問題。
圖 6 變形識別問題
b) 變形詞自動化生成
如果關鍵詞詞庫通過人工配置的話,不僅成本大,而且擴展比較困難,面對新類型的垃圾內容出現反應時間也相對較慢。為了解決變形詞是被的問題,達觀數據變形詞採用了自動化生成的方法,具體步驟包括:
1) 獲取關鍵詞詞庫的字作為種子集合。
2) 構建變形詞關聯網路(結合拼音相似度、字形相似度、字頻、共同出度、共同入度構建關聯邊的權重)。
3) 生成關鍵字的相似度大於閾值的變形詞。
4) 已針對已有關鍵詞詞庫構建變形詞詞庫。
圖 7 自動化生成變形詞詞庫
c) 變形詞檢測
而在正文預測進行變形識別時,如果單純依靠詞庫不結合語境的話,很有可能將正常詞語錯誤識別為變形詞。譬如根據同音轉換的原則進行變形識別是,
「Esports海濤解說視頻專題」識別出變形關鍵詞「海淘」,實際上普通讀者一眼可以看出來這其實是一段正常文本,「海濤」並非「海淘」的變形詞。達觀審核系統在解決變形詞識別時,使用了下面的方法來進行變形詞檢測:1)貝葉斯分析方法
統計變形詞在正常文本上下文中出現概率,計算當前文本上下文中變形詞的後驗概率。像「徽ィ訁」這樣的詞語,在正常文本中出現的概率幾乎為0,所以可以判別為變形詞;而對於出現在「Esports海濤解說視頻專題」的關鍵詞「海濤」,在計算出了當前文本上下文的後驗概率之後,可判別為正常詞語。
2)詞嵌入方法
將單詞轉化為詞向量,計算上下文語義重心,計算單詞的詞向量與上下文文本語義重心向量的相似度。正常文本裡面的詞語跟上下文文本語義接近,所以對應的詞向量在空間上也是比較接近的。通過計算它與上下文語義重心的相似度,可以判別出來該詞語是否處於正常語境中,從而識別出來是否是變形詞。
推薦閱讀:
※windows下如何查看超大文本文件(5G )
※文本情感分析有什麼好資料、網站、工具推薦呢?
※數據特徵的歸一化,是對整個矩陣還是對每一維特徵?
※【譯文】100000個故事的情節分析:一個簡單案例