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

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

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

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

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

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

即

當(dāng)?shù)忍柍闪r,即在圖1 中虛線上的樣本點,就是SVM中的支持向量點,稱為“支持向量”。
首先定義整個空間內(nèi)的樣本點到超平面的距離為

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

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

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

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

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

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

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

精確率(Precision):

F1值(f1-score):

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

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

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