段友祥 張曉天
(中國石油大學(華東)計算機科學與技術學院 青島 266580)
在網絡信息時代,大多數信息是通過文本信息儲存和傳輸的,其中難免會有一些心懷不軌的人通過網絡發表一些不合法的言論。這些數據藏匿于海量的文本數據中不易被人發現。因此,如何對這些數據進行處理已經成為一個重要的研究領域。
文本分類技術可以有效地對文本進行整理和挖掘,提高信息檢索的效率,同時可以挖掘出文本更深層的信息。隨著互聯網技術的提高,數據的收集已經不再是難題,但是傳統基于監督學習的文本分類技術需要大量的已標注的訓練集來進行學習,本文所需要的數據又隱藏在海量的文本數據中,對數據標注需要耗費大量的人工成本。為解決該問題,本文引入了主動學習[1]的方法來減少標注成本。
Lewis和Gale引入了基于池的主動學習方案[2],主要是專家從一組未標記的數據中選擇一些樣本并給其標注上真實標簽。標記的樣本再由分類器進行自我更新,反復的從樣本池中選取有價值的樣本。這種方案雖然在一定程度上降低了人工標記所用的成本,但對于本文來講,初始樣本集標記仍需要耗費的很大的人工成本。因此本文提出了通過使用敏感詞向量來生成初始樣本集。
通過使用敏感詞向量來生成的初始樣本集并不是最優的,往往還會存在一些邊緣數據,這些數據對分類器的訓練沒有特別明顯的作用。文獻[3]提出將k-means 與svm 相結合的分類方法,并通過實驗獲得較好的效果。因此,本文在初始樣本集上使用k-means 聚類算法對初始樣本集進行聚類選擇,以減少邊緣數據的影響。
由于本文的樣本數據相對較少,文獻[4~6]表明支持向量機能使用更有效的技術進行模型訓練,尤其是在訓練集較小且不平衡的情況下表現更加優異。因此我們選擇SVM作為本文的分類器。
本文通過對文本分類的研究,利用主動學習的理論[7],研究如何降低在初始訓練集標記上所耗費的人工成本,同時減少初始訓練集的邊緣數據,使得所選的初始訓練集更能代表該類別的數據,提高了支持向量機文本分類算法的分類效果。
目前,所有的監督學習分類器都需要使用標記的樣本進行訓練,并且分類器的分類效果對標記樣本的質量有較大的依賴性。獲取訓練樣本需要耗費大量的人工成本,尤其是訓練數據還隱藏在海量數據中。
假設主動學習的訓練過程中,L 是一組已經標注的樣本訓練集;U 是未標注樣本池;Q 是查詢函數,負責在未標注樣本池中查詢高質量的樣本。高質量的初始樣本集可以幫助分類模型做出更好的判斷。文獻[8]采用的是隨機從未標注樣本池U中選取小部分樣本進行標注,但是隨機選取往往會導致樣本集分布不合理,從而影響主動學習的算法效率和最終的準確率。本文使用敏感詞向量來生成多個集合的初始樣本集,并通過k-means 算法[9]不斷迭代從各個集合中選取出代表性樣本,將其標注后作為分類器的初始樣本訓練集。
本文初始樣本集的選擇是采用敏感詞向量[10]將未標記文本劃分為三個集合:涉政,涉黃,廣告。所謂的敏感詞向量就是先建立一個敏感詞庫,詞庫內容包括涉政、涉黃、廣告等詞語,如“藏獨”,“臺獨”,“援交”,“招妓”,“博彩”,“澳門娛樂城”等,同時為每個詞分配一個情感強度值w,并生成n 維行向量A(A1,A2,…,An)。然后,將這些敏感詞進行向量化,生成一個n 維全為零的行向量,記B(B1,B2,…,Bn)。初始樣本選擇步驟如下。
步驟1 將數據庫中的敏感詞按涉政類、廣告類、涉黃類的順序生成詞袋,如[“薄熙來”,“毛澤東”,“港獨”,“臺獨”,“法輪功”,……,“色情服務”,“亂交”]。之后將詞袋向量化[11~12],即轉化成一個n維的全為零的行向量。
步驟2 未標注文本經過分詞、停用詞之后將該文本中的每一個詞作為一個特征詞與詞袋中的詞進行匹配,如果該詞在詞袋中存在,在B 向量中對應的位置上加1。
步驟3 計算文本的傾向值,將各個集合的傾向值相比較,得到初始的樣本集合。傾向之計算公式如下:

其中:n為某個敏感詞出現的次數,w 為該敏感詞的情感強度值。
為了減少邊緣數據的影響,本文采用k-means算法來對初始訓練集進行聚類處理。該算法根據文本之間的相似度對樣本集進行聚類,從初始樣本集中選出代表性樣本,并將相似性較低的邊緣數據刪除。
假設訓練集為S,初始類別數為n,類別為c=(c1,c2,…,cn),每類的樣本集數是m,xˉi代表ci的簇中心。實現步驟如下。
步驟1 數據預處理:將樣本集進行分詞和停用詞處理。并將文本進行向量化處理。
步驟2 讀入文本向量,計算出簇的中心向量xˉi:

步驟3 計算出各個樣本集到簇中心向量的平均距離:

步驟4 取出以簇中心向量xˉi中心、dr為半徑的樣本,作為初始訓練集樣本。超出dr范圍的作為邊緣數據刪除。
支持向量機(Support Vector Machine,SVM)方法在很多領域都有應用[13~14]。它的基本模型是在特征空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SVM 是用來解決二分類問題的有監督學習算法,在引入了該方法之后SVM 也可以用來解決非線性問題。同時支持向量機在訓練樣本較少的情況下的表現要優于其他分類算法。在分類時要使超平面和支持向量之間的間隔盡可能的大,這樣超平面才可以將兩類樣本準確的分開,而保證間隔盡可能的大就是保證我們的分類器誤差盡可能地小,盡可能地健壯。
下面以二維空間的線性可分數據來說明SVM分類器的構建,如圖1所示。

圖1 SVM二分類示意圖
一個超平面,在二維空間的例子就是一個直線。定義超平面方程為

其中:x為輸入值,w為權重,γ為偏移量。
如果我們的超平面方程能夠完全正確地對圖1中的樣本點進行分類,就會滿足下面的方程:

即

當等號成立時,即在圖1 中虛線上的樣本點,就是SVM中的支持向量點,稱為“支持向量”。
首先定義整個空間內的樣本點到超平面的距離為

因此尋找分類效果好的超平面的過程就可以轉換成求d 的最大值問題,可進一步將公式簡化成:

隨后我們求解d 的最大化問題變成了||ω||的最小化問題。進而||ω||的最小化問題等效于求:

引入拉格朗日乘子,我們就可以得到以下拉格朗日函數:

其中αi是拉格朗日乘子,αi大于等于0。
首先固定α,要讓L(w,b,α)關于w 和b 最小化,我們分別對w和b偏導數,令其等于0,即:

將式(11)代入式(10)得:

此時的函數只含有一個變量,即αi。因此確定α的最優值之后可得最優分類函數:

得到分類函數之后便可對二維空間樣本分類,而對于線性不可分的數據來說只需要將該函數映射的高維空間即可。
目前文本分類中普遍使用的性能評估指標有:召回率(Recall)、精確率(Precision)以及F1 值(f1-score)[15~16]。具體公式如下。
召回率(Recall):

精確率(Precision):

F1值(f1-score):

其中TP:將正類預測為正類數,TN:將負類預測為負類數,FP:將負類預測為正類數,FN:將正類預測為負類數。
由于本文分類任務的特殊性,沒有現成的數據集供實驗使用,因此本文通過python爬蟲從某民宿平臺上獲取到137890 條有關評論的數據作為本實驗的數據來源。
本文爬取的初始數據存放在MySQL 數據庫中,本實驗使用本文提出的敏感詞向量和k-means相結合的方法來獲取初始訓練集。獲取步驟如下。
步驟1 對初始數據進行預處理:從數據庫中取出樣本數據,并對其進行分詞[17~18],分完詞之后對文本進行一次簡單的降維,即停用詞處理。本文采用jieba 分詞中的全模式,該模式下有助于提高敏感詞向量的匹配準確率。同時本文采用自定義的詞典,使得匹配的準確率進一步提高。
步驟2 使用敏感詞向量對預處理完成的數據進行選擇,并將得到的數據以txt 形式保存到train文件夾下的ad(廣告類),normal(正常類),policies(涉政類),porn(涉黃類)文件中,并從中隨機選出30%的數據放入test 文件中,使train 和test 中的數量比例為7∶3。本次獲得的數據簡記為L1。
步驟3 使用k-means 算法對L1 進行聚類,并刪除邊緣數據,得到初始訓練集簡記為L2。
為了證明本文提出的方法效果,設計了對比實驗。將傳統的SVM 文本分類方法與改進后基于主動學習的SVM 分類方法(簡記為AL-SVM)做比較。對比實驗的步驟如下。
步驟1 從文件夾中讀取數據,對所有的樣本L1、L2進行分詞和停用詞處理。
步驟2 將預處理完成的文本數據生成詞典,并進行特征提取[19~20],將一些出現頻率過高或者過低的詞刪除。最后將處理好數據轉換成文本向量形式。
步驟3 傳統SVM 方法使用L1 訓練樣本來訓練,得到SVM 分類模型。而本文的AL-SVM 則用L2訓練樣本來訓練,并得到分類模型。
步驟4 得到兩個分類模型之后,使用test 文件夾下的測試樣本分別對兩個模型進行測試,并將得到的測試結果進行比較。
得到實驗結果之后,通過精確率(Precision)、召回率(Recall)、F1 值(f1-score)三項指標來進行評估,實驗結果如表1所示。

表1 實驗結果對比
為了反映聚類之后的訓練集的質量,將兩種方法使用的樣本數以及分類所用的時間做了對比,實驗結果如表2所示。

表2 實驗時間對比
從實驗結果可以得到以下結論。
1)使用AL-SVM 方法的分類效果比單單使用SVM方法有一定的提升。
2)使用AL-SVM 方法可以在保證準確率的基礎上減少訓練樣本的數量,同時減少分類所用的時間。
傳統的支持向量機是基于小樣本統計理論的基礎上的。而且支持向量機比神經網絡具有較好的泛化推廣能力。SVM 在小樣本訓練集上能夠得到比其它算法好很多的結果。而本文的初始數據源過于龐大,使用人工標記需要耗費大量的成本,因此本文引入了主動學習的方法。并在主動學習初始數據集的選擇上做了改進,引入了基于敏感詞向量的初始樣本選擇策略,從而大大地降低了人工的標注成本。同時使用k-means 聚類算法保留中心向量及鄰近樣本,刪除樣本集合的邊緣數據,以提高初始訓練集的樣本質量。通過對比實驗表明,使用此方法可在文本分類準確率基本不變的情況下,減少文本分類的訓練集,同時可降低文本分類所使用的時間。