丁世濤 盧 軍 洪鴻輝 黃 傲 郭致遠
(武漢郵電科學研究院 武漢 430074)
隨著互聯網的普及,網頁信息也呈現出了爆發的的態勢,截至2016年12月,中國網頁數量[1]為2360億個,年增長11.2%。目前對于網頁文本分類[2~4]已經有很多建設性的成果,其絕大多數都是先使用機器學習[5~6]方法訓練模型,再將網頁文本信息向量化為特定的特征值,一般情況下,這個特征值的維度較高,計算量比較大,所以耗時比較長。這也造成了分類需求無差別的問題,無形中增加了處理負擔,導致用戶體驗差的問題。
本文研究的方法充分利用了網頁文本的特征,對于大部分網頁內容本身,一般標題就代表了其所屬分類,本文所述系統就充分利用這一特點利用標題進行分類,以達到快速分類的目的。該系統的快速分類功能不僅速度快而且其準確率也達到了人們可以接受的程度,如果你并不是最求快速的分類效果,可以使用系統中精準分類的功能,精準分類功能是將整個網頁文本的數據全部全部作為特征值輸入,這樣能使文本分類達到更好的效果。相對于普通的文本分類快速分類所需時間降低了30%,準確度在接受范圍之內,從而達到了快速處理的目的。
通過對網頁的分割處理,將網頁變成文本數據。
文本的預處理包括幾個方面,首先通過分詞器將文本數據進行分詞,把文本數據的句子變成常用的分詞。然后將獲取到的分詞去停用詞,把一些語氣詞,沒有實際意義的詞,還有一些標點符號等去除。完成這些之后文本信息的預處理工作就基本完成。
在NLP中常用的分詞器[7]就有哈工大的分詞器、清華大學THULAC、斯坦福分詞器、結巴分詞、字嵌入+Bi-LSTM+CRF分詞器、等分詞器。本系統使用的結巴分詞器,其基于前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG);采用了動態規劃查找最大概率路徑,找出基于詞頻的最大切分組合;對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法。通過分詞器分詞之后文本數據變成了分詞。
在本文中所使用的停用詞列表是常用符號和常用語氣詞的結合,自己也可以添加停用詞。
自然語言處理的相關任務中,如果直接將自然語言交給機器學習中的算法處理,機器學習的算法將無法處理所提交的自然語言。機器不是人,機器只能識別特定的數學符號,所以我們要把輸入的自然語言向量化,把它變成計算機可以理解的輸入。分詞向量化[8]主要有離散表示和分布式表示表示,其中每種方式都有自己的優缺點。
離散表示一般有如下幾種方式:
1)One-Hot Representation
向量的分量與分詞是一一對應的,如果該分詞出現,向量中代表該分詞的的分向量就為1。但其向量維度太高,容易造成維度災難,導致計算量太大,無法快速完成。不能很好地刻畫詞與詞之間的相似性,存在詞匯鴻溝,就連醫生跟大夫都會分為不同的類別。
2)Bag of Words[9]
選 用 TF-IDF[10~11](Term Frequency-Inverse Document Frequency),計算詞權重。但其計算量比較大,處理速度慢。
3)Bi-gram 和 N-gram[12~13]
N-gram中的N表示N個分詞聯合,Bi-gram表示2個詞聯合,3-gram表示3個詞聯合,以此類推。但其無法區分向量之間的關聯,語料庫擴展麻煩,存儲效率低。
分布式[14~15]表示(Distributed Representation)有以下幾種:
1)共現矩陣(Cocurrence matrix)
用于主題模型,如LSA(Latent Semantic Analysis)、局域窗中的Word-Word共現矩陣可以挖掘語法和語義信息。將共現矩陣行(列)作為詞向量:
(1)向量維數隨著詞典大小線性增長;
(2)存儲整個詞典的空間消耗非常大;
(3)一些模型如文本分類模型會面臨稀疏性問題;
(4)模型會欠穩定。
2)Word2vec[16~19]
Word2vec是谷歌的Tomas Mikolov在2013年提出的快速處理詞向量的方法,其包含兩種模型,一 種 CBOW[20](Continuous Bag-of-Words Model),一種是Skip-gram[21]模型。其中CBOW的模式是已知上下文,估算當前詞語的語言模型,而Skip-gram是已知當前詞語估算上下文的語言模型。這兩種語言模型如圖1所示。

圖1 Word2vec模型圖
CBOW學習目標是最大化對數似然函數:

Skip-gram的概率模型可以寫成:

其中C代表語料庫,w代表語料庫中任意一詞,u表示w的上下文中的一個詞語。
CBOW的特點是:
1)無隱層的神經網絡。
2)使用雙向上下文窗口。
3)上下文詞序無關。
4)投影層簡化為求和。
Skip-gram的特點是:
1)無隱層的神經網絡。
2)投影層也簡化省去。
3)每個詞向量作為log-linear模型的輸入。
一般在語料非常豐富的情況下選擇Skip-gram模型,其他情況選擇CBOW模型,其相對于以上幾種表達方式有了很大的提高,最大的改進在于限制了向量的維度,可以識別相近詞。
本論文選用word2vec訓練詞向量,其中的語料庫選擇全網新聞數據(SogouCA)完整版進行訓練。
SVM(support vector machine)[22~23]是 Vapnik 在貝爾實驗室提出的基于統計學習理論的機器學習方法。從本質上來說,它的基本的模型是特征空間上的間隔較大的線性分類器,學習的目的就是尋找類別間隔最大化的分類邊界,最終可轉化為一個凸二次規劃問題的求解。SVM有可靠的理論依據,可解釋型較強,相比于黑盒類型的神經網絡有很多用處,其適用于中小規模下,目前最好的一類學習模型。
SVM中最重要的內容是:
1)尋找最大“間隔”的方法。
2)引入核函數解決現行不可分問題。
SVM的理解可以從Linear、Nonlinear兩部分入手,這樣可以更清楚地了解他的本質。
Linear SVM
假設存在訓練樣本(x1,y1),…,(xn,yn)其中 xi∈Rn,yi∈{-1,1} ,如果存在某個超平面 w·x-b=0可以將兩個類別分開,并且使它們的距離足夠大,其中距離最大的平面為最優超平面,如圖2所示。

圖2 SVM線性分類原理圖
如圖2所示,實心圓,空心圓分別代表兩個類別,兩個類別分類邊界線分別為


將兩公式合并為

該公式就是目標函數的約束條件,這樣就將求最大間隔問題變成了二次規劃問題。解決這種問題可以使用用現成的優化工具包直接求解,也可以Lagrange Duality找到一種更有效的方法求解。拉格朗日乘子法有如下優點:
1)更容易通過公式計算。
2)可以更好地挖掘公式背后的原理,近而自然而然的引進kernel函數,將分類拓展到非線性空間。
拉格朗日函數為

其中α不為0,對w,b求導,求解拉格朗日函數可得

最后結果分析,其中α為乘子,yi為+1或只取決于訓練樣本xTixj的兩兩點乘。所謂對模型的訓練就是在已知x,y的情況下通過SMO求解方法求出求出邊界線上的
對于新出現的樣本u,就可以帶入公式:

其中y=+1,否則可判定u對應的y=-1。
Nonlinear SVM
根據機器學習的理論,非線性問題可以通過映射到高維度后,變成一個線性問題。
SVM的處理方法就是選擇一個核函數k()通過將數據映射到高維空間,來解決在原始空間中線性不可分的問題。在線性不可分的情況下,支持向量機首先在低維空間中完成計算,然后通過核函數將輸入空間映射到高維特征空間,最終在高維特征空間中構造出最優分離超平面,從而把平面上本身不好分的非線性數據分開。一堆數據在二維空間無法劃分,從而映射到三維空間里劃分如圖3所示。

圖3 SVM非線性分類原理圖

帶入分類公式:

其中k(x,xi)為核函數,常用的核函有RBF核函數、多項式核函數、高斯核核函數等。一般找到一個特定的核函數比較困難,所以都從以上核函數中尋找。
對于結果的評測我們引入三個指標來對分類器進行評價:
1)精度(Precision),又稱“精度”、“正確率”;
2)召回率(Recall),又稱“查全率”;
3)F1-Score,準確率和召回率的綜合指標。

其中TP(cj)表示屬于cj的樣本且被正確分為cj類的樣本數;FN(cj)表示屬于cj類的樣本,但沒有被正確分為cj類的樣本數;FP(cj)表示不屬于cj類的樣本,但被分為cj類的樣本數。
該系統實驗的流程為
1)將網頁數據變為文本數據。
2)對文本數據進行分詞,去停用詞等處理。
3)快速分類跳到步驟4),普通分類跳到步驟5)。
4)檢查類別隊列里是否有對應的關鍵詞,若沒有則使用word2vec模型訓練分詞向量,并查找類別隊列里是否有最相近的關鍵詞,如果有就直接找出分類完成分類任務,如果沒有就跳到步驟5)。
5)對文本正文數據進行分詞,去停用詞等處理,使用word2vec模型訓練正文數據獲取文本向量,最后使用訓練好的SVM模型完成分類任務。
6)評判結果。
該系統處理普通分類和快速分類兩種任務,普通分類就是將文本內容無差別地使用word2vec以獲取文本向量,再將該文本向量通過SVM進行分類。如果文本內容比較長,并且待分類文本數量比較多的話,那么處理該任務時間將會比較長,但是有些場景需要高效率,低耗時的處理文本分類問題,對于這種需求普通分類不能達到其處理要求。這就要使用該系統提供的快速分類功能,快速分類根據文本標題內容提取相應的關鍵字或者相近的關鍵詞,匹配相應的類別隊列,以達到快速分類的目的。快速分類功能能夠在保證準確度的情況下達到短時間內完成分類的目的,如果分類隊列內容全面,且設置得當,快速分類所需時間會是普通分類所需時間的一半以下。
針對上文提出的SVM的網頁文本分類系統的實現,本實驗選用的數據集為搜狗中文實驗室的全網中文新聞數據集——“SogouCA”完整版,該數據集有多個網站的近2萬篇網頁文檔數據,測試數據為在鳳凰、搜狐等網站爬取的1000篇網頁內容。使用多選擇分類系統的快速分類和普通分類處理文本數據的分類準確率結果對比為如表3。
其中P代表 Precision,R代表Recall,F1代表F1-Score。
使用多選擇分類系統的快速分類和普通分類處理文本數據的分類時間結果對比如表2。

表1 分類準確度結果對比(單位:%)

表2 分類耗時結果對比(單位:Seconds)
針對以上結果,我們可以得出結論:在多選擇分類系統中普通分類處理文本數據的時間明顯長于快速分類時間,普通分類處理文本數據的準確度優于快速分類,但是快速分類準確度也在可接受范圍內。多選擇分類系統提供了多選擇分類服務,能夠滿足不同的分類需求,給我們以后不同的需求場景提供了多選擇機會。
多選擇分類系統通過將網頁文本的分詞,去停用詞,通過已經用word2vec訓練好的模型將標題或者與標題相近詞通過類別隊列提供快速分類服務,或者將文本內容向量化通過SVM提供普通分類服務。該系統能夠根據網頁文本的特點將分類分為快速分類以及普通分類。快速分類根據網頁標題關鍵詞以及其相關詞到類別隊列中查找類別以達到快速分類的目的,這樣省去了文本生成向量以及文本添加到SVM分類器計算的步驟,節省了大量時間。該系統針對不同的分類需求能夠提供不同的服務,提供了有差別的分類服務,這也是該分類系統的優勢。但是該系統依據標題進行快速分類的分類效果還有待提高,一篇文章同屬于多個類別的多分類能力也需改善。希望以后能根據標題以和標題的拓展進行更準確、快速的文本分類服務以及添加文章多分類的功能。