丁世濤 盧 軍 洪鴻輝 黃 傲 郭致遠(yuǎn)
(武漢郵電科學(xué)研究院 武漢 430074)
隨著互聯(lián)網(wǎng)的普及,網(wǎng)頁信息也呈現(xiàn)出了爆發(fā)的的態(tài)勢(shì),截至2016年12月,中國網(wǎng)頁數(shù)量[1]為2360億個(gè),年增長11.2%。目前對(duì)于網(wǎng)頁文本分類[2~4]已經(jīng)有很多建設(shè)性的成果,其絕大多數(shù)都是先使用機(jī)器學(xué)習(xí)[5~6]方法訓(xùn)練模型,再將網(wǎng)頁文本信息向量化為特定的特征值,一般情況下,這個(gè)特征值的維度較高,計(jì)算量比較大,所以耗時(shí)比較長。這也造成了分類需求無差別的問題,無形中增加了處理負(fù)擔(dān),導(dǎo)致用戶體驗(yàn)差的問題。
本文研究的方法充分利用了網(wǎng)頁文本的特征,對(duì)于大部分網(wǎng)頁內(nèi)容本身,一般標(biāo)題就代表了其所屬分類,本文所述系統(tǒng)就充分利用這一特點(diǎn)利用標(biāo)題進(jìn)行分類,以達(dá)到快速分類的目的。該系統(tǒng)的快速分類功能不僅速度快而且其準(zhǔn)確率也達(dá)到了人們可以接受的程度,如果你并不是最求快速的分類效果,可以使用系統(tǒng)中精準(zhǔn)分類的功能,精準(zhǔn)分類功能是將整個(gè)網(wǎng)頁文本的數(shù)據(jù)全部全部作為特征值輸入,這樣能使文本分類達(dá)到更好的效果。相對(duì)于普通的文本分類快速分類所需時(shí)間降低了30%,準(zhǔn)確度在接受范圍之內(nèi),從而達(dá)到了快速處理的目的。
通過對(duì)網(wǎng)頁的分割處理,將網(wǎng)頁變成文本數(shù)據(jù)。
文本的預(yù)處理包括幾個(gè)方面,首先通過分詞器將文本數(shù)據(jù)進(jìn)行分詞,把文本數(shù)據(jù)的句子變成常用的分詞。然后將獲取到的分詞去停用詞,把一些語氣詞,沒有實(shí)際意義的詞,還有一些標(biāo)點(diǎn)符號(hào)等去除。完成這些之后文本信息的預(yù)處理工作就基本完成。
在NLP中常用的分詞器[7]就有哈工大的分詞器、清華大學(xué)THULAC、斯坦福分詞器、結(jié)巴分詞、字嵌入+Bi-LSTM+CRF分詞器、等分詞器。本系統(tǒng)使用的結(jié)巴分詞器,其基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG);采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合;對(duì)于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法。通過分詞器分詞之后文本數(shù)據(jù)變成了分詞。
在本文中所使用的停用詞列表是常用符號(hào)和常用語氣詞的結(jié)合,自己也可以添加停用詞。
自然語言處理的相關(guān)任務(wù)中,如果直接將自然語言交給機(jī)器學(xué)習(xí)中的算法處理,機(jī)器學(xué)習(xí)的算法將無法處理所提交的自然語言。機(jī)器不是人,機(jī)器只能識(shí)別特定的數(shù)學(xué)符號(hào),所以我們要把輸入的自然語言向量化,把它變成計(jì)算機(jī)可以理解的輸入。分詞向量化[8]主要有離散表示和分布式表示表示,其中每種方式都有自己的優(yōu)缺點(diǎn)。
離散表示一般有如下幾種方式:
1)One-Hot Representation
向量的分量與分詞是一一對(duì)應(yīng)的,如果該分詞出現(xiàn),向量中代表該分詞的的分向量就為1。但其向量維度太高,容易造成維度災(zāi)難,導(dǎo)致計(jì)算量太大,無法快速完成。不能很好地刻畫詞與詞之間的相似性,存在詞匯鴻溝,就連醫(yī)生跟大夫都會(huì)分為不同的類別。
2)Bag of Words[9]
選 用 TF-IDF[10~11](Term Frequency-Inverse Document Frequency),計(jì)算詞權(quán)重。但其計(jì)算量比較大,處理速度慢。
3)Bi-gram 和 N-gram[12~13]
N-gram中的N表示N個(gè)分詞聯(lián)合,Bi-gram表示2個(gè)詞聯(lián)合,3-gram表示3個(gè)詞聯(lián)合,以此類推。但其無法區(qū)分向量之間的關(guān)聯(lián),語料庫擴(kuò)展麻煩,存儲(chǔ)效率低。
分布式[14~15]表示(Distributed Representation)有以下幾種:
1)共現(xiàn)矩陣(Cocurrence matrix)
用于主題模型,如LSA(Latent Semantic Analysis)、局域窗中的Word-Word共現(xiàn)矩陣可以挖掘語法和語義信息。將共現(xiàn)矩陣行(列)作為詞向量:
(1)向量維數(shù)隨著詞典大小線性增長;
(2)存儲(chǔ)整個(gè)詞典的空間消耗非常大;
(3)一些模型如文本分類模型會(huì)面臨稀疏性問題;
(4)模型會(huì)欠穩(wěn)定。
2)Word2vec[16~19]
Word2vec是谷歌的Tomas Mikolov在2013年提出的快速處理詞向量的方法,其包含兩種模型,一 種 CBOW[20](Continuous Bag-of-Words Model),一種是Skip-gram[21]模型。其中CBOW的模式是已知上下文,估算當(dāng)前詞語的語言模型,而Skip-gram是已知當(dāng)前詞語估算上下文的語言模型。這兩種語言模型如圖1所示。
圖1 Word2vec模型圖
CBOW學(xué)習(xí)目標(biāo)是最大化對(duì)數(shù)似然函數(shù):
Skip-gram的概率模型可以寫成:
其中C代表語料庫,w代表語料庫中任意一詞,u表示w的上下文中的一個(gè)詞語。
CBOW的特點(diǎn)是:
1)無隱層的神經(jīng)網(wǎng)絡(luò)。
2)使用雙向上下文窗口。
3)上下文詞序無關(guān)。
4)投影層簡(jiǎn)化為求和。
Skip-gram的特點(diǎn)是:
1)無隱層的神經(jīng)網(wǎng)絡(luò)。
2)投影層也簡(jiǎn)化省去。
3)每個(gè)詞向量作為log-linear模型的輸入。
一般在語料非常豐富的情況下選擇Skip-gram模型,其他情況選擇CBOW模型,其相對(duì)于以上幾種表達(dá)方式有了很大的提高,最大的改進(jìn)在于限制了向量的維度,可以識(shí)別相近詞。
本論文選用word2vec訓(xùn)練詞向量,其中的語料庫選擇全網(wǎng)新聞數(shù)據(jù)(SogouCA)完整版進(jìn)行訓(xùn)練。
SVM(support vector machine)[22~23]是 Vapnik 在貝爾實(shí)驗(yàn)室提出的基于統(tǒng)計(jì)學(xué)習(xí)理論的機(jī)器學(xué)習(xí)方法。從本質(zhì)上來說,它的基本的模型是特征空間上的間隔較大的線性分類器,學(xué)習(xí)的目的就是尋找類別間隔最大化的分類邊界,最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問題的求解。SVM有可靠的理論依據(jù),可解釋型較強(qiáng),相比于黑盒類型的神經(jīng)網(wǎng)絡(luò)有很多用處,其適用于中小規(guī)模下,目前最好的一類學(xué)習(xí)模型。
SVM中最重要的內(nèi)容是:
1)尋找最大“間隔”的方法。
2)引入核函數(shù)解決現(xiàn)行不可分問題。
SVM的理解可以從Linear、Nonlinear兩部分入手,這樣可以更清楚地了解他的本質(zhì)。
Linear SVM
假設(shè)存在訓(xùn)練樣本(x1,y1),…,(xn,yn)其中 xi∈Rn,yi∈{-1,1} ,如果存在某個(gè)超平面 w·x-b=0可以將兩個(gè)類別分開,并且使它們的距離足夠大,其中距離最大的平面為最優(yōu)超平面,如圖2所示。
圖2 SVM線性分類原理圖
如圖2所示,實(shí)心圓,空心圓分別代表兩個(gè)類別,兩個(gè)類別分類邊界線分別為
將兩公式合并為
該公式就是目標(biāo)函數(shù)的約束條件,這樣就將求最大間隔問題變成了二次規(guī)劃問題。解決這種問題可以使用用現(xiàn)成的優(yōu)化工具包直接求解,也可以Lagrange Duality找到一種更有效的方法求解。拉格朗日乘子法有如下優(yōu)點(diǎn):
1)更容易通過公式計(jì)算。
2)可以更好地挖掘公式背后的原理,近而自然而然的引進(jìn)kernel函數(shù),將分類拓展到非線性空間。
拉格朗日函數(shù)為
其中α不為0,對(duì)w,b求導(dǎo),求解拉格朗日函數(shù)可得
最后結(jié)果分析,其中α為乘子,yi為+1或只取決于訓(xùn)練樣本xTixj的兩兩點(diǎn)乘。所謂對(duì)模型的訓(xùn)練就是在已知x,y的情況下通過SMO求解方法求出求出邊界線上的
對(duì)于新出現(xiàn)的樣本u,就可以帶入公式:
其中y=+1,否則可判定u對(duì)應(yīng)的y=-1。
Nonlinear SVM
根據(jù)機(jī)器學(xué)習(xí)的理論,非線性問題可以通過映射到高維度后,變成一個(gè)線性問題。
SVM的處理方法就是選擇一個(gè)核函數(shù)k()通過將數(shù)據(jù)映射到高維空間,來解決在原始空間中線性不可分的問題。在線性不可分的情況下,支持向量機(jī)首先在低維空間中完成計(jì)算,然后通過核函數(shù)將輸入空間映射到高維特征空間,最終在高維特征空間中構(gòu)造出最優(yōu)分離超平面,從而把平面上本身不好分的非線性數(shù)據(jù)分開。一堆數(shù)據(jù)在二維空間無法劃分,從而映射到三維空間里劃分如圖3所示。
圖3 SVM非線性分類原理圖
帶入分類公式:
其中k(x,xi)為核函數(shù),常用的核函有RBF核函數(shù)、多項(xiàng)式核函數(shù)、高斯核核函數(shù)等。一般找到一個(gè)特定的核函數(shù)比較困難,所以都從以上核函數(shù)中尋找。
對(duì)于結(jié)果的評(píng)測(cè)我們引入三個(gè)指標(biāo)來對(duì)分類器進(jìn)行評(píng)價(jià):
1)精度(Precision),又稱“精度”、“正確率”;
2)召回率(Recall),又稱“查全率”;
3)F1-Score,準(zhǔn)確率和召回率的綜合指標(biāo)。
其中TP(cj)表示屬于cj的樣本且被正確分為cj類的樣本數(shù);FN(cj)表示屬于cj類的樣本,但沒有被正確分為cj類的樣本數(shù);FP(cj)表示不屬于cj類的樣本,但被分為cj類的樣本數(shù)。
該系統(tǒng)實(shí)驗(yàn)的流程為
1)將網(wǎng)頁數(shù)據(jù)變?yōu)槲谋緮?shù)據(jù)。
2)對(duì)文本數(shù)據(jù)進(jìn)行分詞,去停用詞等處理。
3)快速分類跳到步驟4),普通分類跳到步驟5)。
4)檢查類別隊(duì)列里是否有對(duì)應(yīng)的關(guān)鍵詞,若沒有則使用word2vec模型訓(xùn)練分詞向量,并查找類別隊(duì)列里是否有最相近的關(guān)鍵詞,如果有就直接找出分類完成分類任務(wù),如果沒有就跳到步驟5)。
5)對(duì)文本正文數(shù)據(jù)進(jìn)行分詞,去停用詞等處理,使用word2vec模型訓(xùn)練正文數(shù)據(jù)獲取文本向量,最后使用訓(xùn)練好的SVM模型完成分類任務(wù)。
6)評(píng)判結(jié)果。
該系統(tǒng)處理普通分類和快速分類兩種任務(wù),普通分類就是將文本內(nèi)容無差別地使用word2vec以獲取文本向量,再將該文本向量通過SVM進(jìn)行分類。如果文本內(nèi)容比較長,并且待分類文本數(shù)量比較多的話,那么處理該任務(wù)時(shí)間將會(huì)比較長,但是有些場(chǎng)景需要高效率,低耗時(shí)的處理文本分類問題,對(duì)于這種需求普通分類不能達(dá)到其處理要求。這就要使用該系統(tǒng)提供的快速分類功能,快速分類根據(jù)文本標(biāo)題內(nèi)容提取相應(yīng)的關(guān)鍵字或者相近的關(guān)鍵詞,匹配相應(yīng)的類別隊(duì)列,以達(dá)到快速分類的目的??焖俜诸惞δ苣軌蛟诒WC準(zhǔn)確度的情況下達(dá)到短時(shí)間內(nèi)完成分類的目的,如果分類隊(duì)列內(nèi)容全面,且設(shè)置得當(dāng),快速分類所需時(shí)間會(huì)是普通分類所需時(shí)間的一半以下。
針對(duì)上文提出的SVM的網(wǎng)頁文本分類系統(tǒng)的實(shí)現(xiàn),本實(shí)驗(yàn)選用的數(shù)據(jù)集為搜狗中文實(shí)驗(yàn)室的全網(wǎng)中文新聞數(shù)據(jù)集——“SogouCA”完整版,該數(shù)據(jù)集有多個(gè)網(wǎng)站的近2萬篇網(wǎng)頁文檔數(shù)據(jù),測(cè)試數(shù)據(jù)為在鳳凰、搜狐等網(wǎng)站爬取的1000篇網(wǎng)頁內(nèi)容。使用多選擇分類系統(tǒng)的快速分類和普通分類處理文本數(shù)據(jù)的分類準(zhǔn)確率結(jié)果對(duì)比為如表3。
其中P代表 Precision,R代表Recall,F(xiàn)1代表F1-Score。
使用多選擇分類系統(tǒng)的快速分類和普通分類處理文本數(shù)據(jù)的分類時(shí)間結(jié)果對(duì)比如表2。
表1 分類準(zhǔn)確度結(jié)果對(duì)比(單位:%)
表2 分類耗時(shí)結(jié)果對(duì)比(單位:Seconds)
針對(duì)以上結(jié)果,我們可以得出結(jié)論:在多選擇分類系統(tǒng)中普通分類處理文本數(shù)據(jù)的時(shí)間明顯長于快速分類時(shí)間,普通分類處理文本數(shù)據(jù)的準(zhǔn)確度優(yōu)于快速分類,但是快速分類準(zhǔn)確度也在可接受范圍內(nèi)。多選擇分類系統(tǒng)提供了多選擇分類服務(wù),能夠滿足不同的分類需求,給我們以后不同的需求場(chǎng)景提供了多選擇機(jī)會(huì)。
多選擇分類系統(tǒng)通過將網(wǎng)頁文本的分詞,去停用詞,通過已經(jīng)用word2vec訓(xùn)練好的模型將標(biāo)題或者與標(biāo)題相近詞通過類別隊(duì)列提供快速分類服務(wù),或者將文本內(nèi)容向量化通過SVM提供普通分類服務(wù)。該系統(tǒng)能夠根據(jù)網(wǎng)頁文本的特點(diǎn)將分類分為快速分類以及普通分類??焖俜诸惛鶕?jù)網(wǎng)頁標(biāo)題關(guān)鍵詞以及其相關(guān)詞到類別隊(duì)列中查找類別以達(dá)到快速分類的目的,這樣省去了文本生成向量以及文本添加到SVM分類器計(jì)算的步驟,節(jié)省了大量時(shí)間。該系統(tǒng)針對(duì)不同的分類需求能夠提供不同的服務(wù),提供了有差別的分類服務(wù),這也是該分類系統(tǒng)的優(yōu)勢(shì)。但是該系統(tǒng)依據(jù)標(biāo)題進(jìn)行快速分類的分類效果還有待提高,一篇文章同屬于多個(gè)類別的多分類能力也需改善。希望以后能根據(jù)標(biāo)題以和標(biāo)題的拓展進(jìn)行更準(zhǔn)確、快速的文本分類服務(wù)以及添加文章多分類的功能。