袁聞+王曉曄+鄧高登+韓淼+楊星+謝曉喆
摘 要:垃圾短信制造者出于商業目的或其他詐騙目的向手機用戶大量發送垃圾短信或詐騙短信,使得手機用戶不勝其擾。運營商在發送短信之前對短信加以辨識后,給可能是垃圾短信的信息貼上標簽后再發送,將會大大降低手機用戶受騙的機率。該文采用IF-IDF算法和離散特征的貝葉斯分類器,進行特征詞選取,構建垃圾短信鑒別模型。通過垃圾短信訓練數據集構建的中文垃圾短信貝葉斯分類模型,能夠使垃圾短信的識別率保持在94%以上,具有較高的實用性。
關鍵詞:貝葉斯分類器 中文垃圾短信 特征提取 特征選擇 文本挖掘
中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2017)02(b)-0010-04
1 文本預處理
由于短信文本是由非結構化的中文文字組成,因此在采用傳統的貝葉斯分類器進行垃圾短信的識別之前,需要對垃圾短信進行文本預處理。
中文文本預處理的處理流程如圖1所示。
1.1 文本特征提取
文本挖掘的關鍵就是將文字型非結構化數據轉化為數值型結構化數據,為后續的貝葉斯分類器做準備。中文文本挖掘不同于英文文本單詞與單詞之間用空格分隔的情況,因此中文文本首先要進行分詞處理(例如原文本:此類皮膚特別容易招惹粉刺、黑頭等。分詞處理后的文本:此類;皮膚;特別;容易;招惹;粉刺;、;黑頭;等。分詞處理之后,須對每份文本進行特征提取。即保留具有實際意義的詞,去掉沒有實際意義的虛詞以及標點等停用詞(Stop words)(例如上述文本特征提取后為:皮膚;招惹;粉刺;黑頭)。對于分詞處理和特征提取可采用經典的極速詞典分詞[1]:和TextRank關鍵詞[2]提取,具體細節這里不再詳細描述,而分詞和特征提取可直接采用中科院開發的開源Java工具包:HanLP[3]。內部包含多種分詞以及關鍵詞提取算法,功能十分強大。如果訓練集是在文件中,可以編寫Java代碼,通過 BufferedReader將文本一行一行讀進Java環境中,然后調用HanLP里面的分詞算法,最后將輸出的結果保存在新的文件當中。如果訓練集是在數據庫中,則可通過JDBC導入,后續步驟同上。
1.2 文本的特征選擇
雖然單獨文本的詞語數量通過特征提取降低了,但是對于整體的訓練集來說其詞語數量還是很龐大的。不適合后續的模型構建,所以在特征提取的基礎上需要再進行特征選擇,從而降低整體的詞語數量。經過特征選擇后的詞語可以形成一個關鍵詞集,得到的關鍵詞集是為后續模型的構建做準備的。由于該文所做的是垃圾短信辨識,只需分辨垃圾短信和非垃圾短信兩類數據即可,并且現實生活中垃圾短信占少數,多數為正常短信。所以我們把重心放在預處理垃圾短信上,目標是取得垃圾短信關鍵詞集。
在預處理部分,采用HanLP進行分詞以及特征提取,特征選擇技術則采用信息檢索領域非常著名的TF-IDF算法[4]。
TF-IDF算法的主要思想是評估一字詞對于一個文件集或一個語料庫中某一份文件的重要程度,如果某個詞或短語在一份文件中出現的頻率TF高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。
一個詞的權重為weigt(tj)=TF*IDF,某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重,高權重的詞表明這個詞可以很好地把這個文件識別出來。
在通過TF-IDF計算后,每一個特征詞都有一個權重(weight),將所有特征詞的權重進行排序(可以通過Java中的treeset數據結構[5]進行按值排序),然后設置一個閾值將權重低的特征詞舍棄,保留權重高的特征詞,從而形成關鍵詞集。關鍵詞的個數對于垃圾短信分類器的好壞有著至關重要的影響。
2 貝葉斯分類器構建
通過特征選擇構建關鍵詞集后,就可以實現中文垃圾短信的分類分析。
2.1 建立關鍵詞概率
因為貝葉斯模型是基于概率計算來進行建模的。因此,要為每一個關鍵詞建立分類概率[6]。該文采用如下公式(3)計算概率F:
(3)
式中b表示關鍵詞在垃圾短信中出現的次數,g表示關鍵詞在正常短信中出現的次數。nbad表示垃圾短信的數量,ngood表示正常短信的數量。2為一個經驗系數。垃圾短信評估分類器好壞有兩個重要指標:(1)虛警率:把非垃圾短信當成垃圾短信的概率 ,對應于統計學上的第一類錯誤。(2)誤判率:把垃圾短信當成非垃圾短信的概率,對應于統計學上的第二類錯誤。
在實際生活中這兩種錯誤的代價是不同的,很明顯把正常短信判斷為垃圾短信的代價遠高于把垃圾短信判斷為正常短信的代價。因此,分母g/ngood那一項乘以系數2是用來降低虛警率的。在實際辨識過程中可以不斷調整系數以達到最佳效果。
2.2 文本轉為特征向量(String to vector)
在建立辨識函數之前,須把訓練文本轉化為向量(String to vector)[7]。而所用到的工具就是經過TF-IDF計算并篩選得到的關鍵詞集。假設有關鍵字集[a1,a2,a3……an],初始化向量v=[0,0,0,0…0](一共n個)。將訓練集當中的一封垃圾短信與關鍵字集進行對比,如果關鍵字an出現在短信中,則對應向量v的位置設置為1,如果沒有出現則保持為0。從而將一封文字型的短信轉化為只有0或1的向量。將整個訓練集全部按照上面所敘述的方法進行轉化,從而將整個訓練集樣本都轉化為向量。整個訓練集可以視為一個巨大的含有0和1的矩陣。這有助于后續的模型貝葉斯分類器構建[8]。
2.3 建立垃圾短信鑒別函數(discriminant function)
關鍵詞集可以用做訓練用的特征屬性,在上述文本轉化的向量中,特征屬性的取值為0或1。因為特征屬性的取值是離散的,所以該文決定采用離散特征的貝葉斯分類器構建鑒別函[9]。
3 實驗分析
3.1 實驗數據來源
該文的實驗選用的數據集來源于CCF全國青年大數據創新大賽中的數據集[10],其中包括垃圾短信32 000條,正常短信8 000條。該文按照目前手機用戶中的大致短信比例抽樣選取部分數據集來進行研究。數據分布如表1所示。
3.2 分類器的評價指標
評價指標采用分類任務中常用的混淆矩陣(confusion matrix)對分類結果進行評估。混淆矩陣如圖2所示。
為了有效評估分類器過濾垃圾短信的性能,該文使用兩個評價指標。
(1)準確率(Aaccuracy): 分類器對整個樣本的判定能力,即將正的判定為正,負的判定為負:
A=(TP+TN)/(TP+FN+FP+TN)。
(2)虛警率(alse alarm probability):FPR=FP/(FP+TN),即正常短信被預測為垃圾短信的概率。準確率是對于過濾器的整體性能評估,而虛警率是減小非垃圾短信被分錯的代價。因此,希望準確率越大越好,虛警率越小越好。
3.3 實驗及結果分析
該實驗所涉及到的文本向向量的轉化以及貝葉斯分類器構造的鑒別函數全部通過MATLAB編寫代碼完成,所有的數值運算全部在MATLAB上運行。在實驗中筆者比較所選取關鍵詞的個數以及不同的閾值對于分類器準確率和虛警率的影響。實驗結果如表2和表3所示。
由表2可知,當閾值為0選取的關鍵詞數量增加時,準確率并不會一直增加,當超過某一最優值時,準確率會降低,虛警率在一直增加。原因是權重值weight較低的關鍵詞被選進來,反而影響分類器分類的效果。同時,關鍵詞數量不同時閾值也應該設為不同的值。從表3中可以發現,在一定的關鍵詞數量下,可以通過改變閾值的大小達到最佳的準確率以及較小的虛警率。
4 結論
該文運用TF-IDF進行特征詞選擇,運用離散特征的貝葉斯分類器對垃圾短信進行過濾,形成了一個準確率在94%左右,虛警率低于4%的分類器。可以辨識出日常生活中絕大多數的垃圾短信。后續的工作要注意以下幾點。
(1)試圖改進貝葉斯算法,使其準確率能進一步提高,虛警率能夠進一步降低。
(2)使用更為龐大的數據集,將文本挖掘與云計算整合,在云平臺上進行模型構建與計算。
參考文獻
[1] 黃翼彪.開源中文分詞器的比較研究[D].鄭州大學,2013.
[2] 張雯.TextRank算法的改進及在政法全文檢索系統中的應用[D].廣西大學,2015.
[3] 王寶成,何新宇.基于改進情感詞域識別的輿情情感分析研究[J].電子技術與軟件工程,2016(3):167.
[4] 陳琦,伍朝輝,姚芳,等.基于TF*IDF的垃圾郵件過濾特征選擇改進算法[J].計算機應用研究,2009,26(6):2165-2167.
[5] 江磊晶.Java中的集合接口[J].中文信息,2003(5):83-86.
[6] 李星,田瑩,段海新.中文垃圾郵件過濾系統的實現和評估[J].大連理工大學學報,2005,45(s1):189-195.
[7] 馬強.基于布爾模型和擴展布爾模型的中文信息檢索系統[D].遼寧科技大學,2012.
[8] 詹川,盧顯良,周旭,等.基于貝葉斯公式的垃圾郵件過濾方法[J].計算機科學,2005,32(2):73-75.
[9] 王中鋒.樹型貝葉斯網絡分類器鑒別式訓練研究[D].北京交通大學,2011.
[10] WID,CCF大數據與智能大賽[EB/OL].http://www.wid.org.cn/data/science/player/competition.html?data=227#competitionData.
[11] 蔣璐媛,肖鵬峰,馮學智,等.基于亞分數混淆矩陣的中國典型區大尺度土地覆蓋數據集評價[J].遙感技術與應用,2015,30(2):353-363.