邢照野,劉曉群
(河北省建筑工程學(xué)院,河北 張家口 065000)
文檔自動(dòng)分類是一種采用統(tǒng)計(jì)方法或者機(jī)器學(xué)習(xí)方法來確定文本內(nèi)容類別的過程,本文設(shè)計(jì)其思想為:根據(jù)一些已經(jīng)有標(biāo)簽并分好類的訓(xùn)練數(shù)據(jù),對(duì)模型進(jìn)行訓(xùn)練,對(duì)新的數(shù)據(jù)進(jìn)行分類得到標(biāo)簽。基于有監(jiān)督學(xué)習(xí)的機(jī)器學(xué)習(xí)文本分類器可以根據(jù)數(shù)據(jù)集中的內(nèi)容,獲得文本信息的類別標(biāo)簽。由于人工進(jìn)行分類文本的效率比較差,因此運(yùn)用技術(shù)解決文本分類問題成為了目前研究的熱點(diǎn)。
從技術(shù)的層面上講,本文使用監(jiān)督學(xué)習(xí)算法來對(duì)歷史數(shù)據(jù)訓(xùn)練,并生成模型,用于對(duì)未知文本的類別進(jìn)行預(yù)測(cè)。不過目前由單一的算法所搭建的分類器效果較差,因此文本設(shè)計(jì)實(shí)現(xiàn)通過不同的組合方式和優(yōu)化方式,對(duì)某批文本設(shè)計(jì)出最優(yōu)的分類器,達(dá)到更好的分類效果。文本的分類器選擇的是SVM,這是因?yàn)镾VM是除了深度學(xué)習(xí)以外的最好的分類算法,它有如下特征:它既可應(yīng)用于線性分類,也可以用于非線性分類。
1.2.1 系統(tǒng)流程
文本分類流程如圖1所示。

圖1 文本分類流程圖Fig. 1 flow chart of text classification
1.2.2 業(yè)務(wù)流程
本系統(tǒng)的目的是實(shí)現(xiàn)一個(gè)系統(tǒng)可以自動(dòng)對(duì)文本信息進(jìn)行分詞處理,詞頻統(tǒng)計(jì)和分類處理。在數(shù)據(jù)上傳部分,可以人為將所需要分類的文本信息進(jìn)行粘貼上傳,同時(shí)也可以通過給予一個(gè) url地址,使用爬蟲功能進(jìn)行文本內(nèi)容的獲取。在文本分類處理部分,可以分別展示文本分詞效果,詞頻統(tǒng)計(jì)效果和文本的分類效果,可以將程序?qū)ξ谋拘畔⒆鎏幚淼倪^程和結(jié)果進(jìn)行可視化操作。
1.3.1 中文文本分詞
分詞主要通過python的jieba分詞庫來實(shí)現(xiàn)。通過傳入需要分詞的字符串并選擇分詞模式。精確模式適合文本分析,此方法可以提高模型的召回率。同時(shí)分詞的精度也會(huì)對(duì)后續(xù)應(yīng)用的模塊有影響,所以分詞任務(wù)是首要完成的主要模塊之一。
1.3.2 TF-IDF特征提取
TF-IDF是“詞頻-逆文檔頻率”,TF就是詞頻,IDF是用來反映某個(gè)詞的重要性。當(dāng)某一個(gè)詞在其中一類文文信息中出現(xiàn)的頻率較高的時(shí)候,然而卻在全部數(shù)據(jù)集文檔中出現(xiàn)的頻率較少,那么這個(gè)詞可以在一定程度上有文檔的區(qū)分能力。一般特征提取也是基于此而形成的,出現(xiàn)頻率較大的該詞就是本篇文檔的特征詞。最終進(jìn)行特征標(biāo)準(zhǔn)化和特征工程,并將數(shù)據(jù)傳入以機(jī)器學(xué)習(xí)算法構(gòu)建的分類器中進(jìn)行分類。文本的數(shù)值化方法有多種,本文使用的是TF-IDF技術(shù)。
1.3.3 支持向量機(jī)
(1)SVM的線性分類
(2)SVM解決的問題
(3)超平面
(4)SMO算法
(5)VC維
(6)結(jié)構(gòu)風(fēng)險(xiǎn)最小化
(7)核函數(shù)的選擇
1.3.4 模型評(píng)估與調(diào)優(yōu)
(1)召回率:召回率的公式=TP / (TP + FN),召回率又稱查全率,衡量的是檢索系統(tǒng)的查全率;
(2)召回率=相關(guān)文件數(shù)/所有相關(guān)的文件總數(shù);
(3)準(zhǔn)確率(精度):準(zhǔn)確率的公式=(TP +TN)/總樣本。是指文本中分類正確的數(shù)量與文檔總數(shù)之間的比率;
(4)準(zhǔn)確率=相關(guān)文件/所有文件數(shù);
(5)準(zhǔn)確率與召回率之間具有很大的關(guān)聯(lián)性。正常來說,準(zhǔn)確率和召回率成反比。
1.3.5 混淆矩陣
混淆矩陣如表1所示。

表1 混淆矩陣Tab.1 Confusion matrix
1.4.1 分類信息上傳模塊
通過文件上傳或文本粘貼的形式,將文本信息上傳入系統(tǒng)。分別對(duì)文本進(jìn)行分詞處理,詞頻統(tǒng)計(jì),并通過調(diào)用訓(xùn)練好的模型,進(jìn)行對(duì)未知文本做分類處理,得出來的類別標(biāo)簽并保存。分別通過核函數(shù)的選擇,原始分類器的使用。得出分類結(jié)果,并傳入前端界面展示。
1.4.2 普通結(jié)果查看模塊
用戶進(jìn)入系統(tǒng)后,上傳想要分類的文本信息后,可以瀏覽到有關(guān)該篇文本的信息,比如:分詞結(jié)果,詞云圖,詞頻統(tǒng)計(jì)柱狀圖和分類標(biāo)簽所屬的類別。用戶通過點(diǎn)擊中文分類模塊中的不同的按鈕,可以查看以核函數(shù)分類的結(jié)果和原始分類器的分類結(jié)果。
1.4.3 算法設(shè)計(jì)模塊
(1)中文分詞
分詞是自然語言處理中數(shù)據(jù)預(yù)處理部分的模塊,后期模型分類的準(zhǔn)確度也會(huì)受到分詞的影響,結(jié)巴分詞是專門使用Python開發(fā)的分詞系統(tǒng),精確度較高。
將數(shù)據(jù)進(jìn)行分詞以后,原本連續(xù)的字序列變成了向量形式。向量中每個(gè)分量都代表著獨(dú)立的意義,本文使用的是全模式分詞(cut_all = True),最終通過分詞實(shí)現(xiàn)了文本的結(jié)構(gòu)化。
(2)詞頻統(tǒng)計(jì)
該模塊主要的功能是統(tǒng)計(jì)詞頻,求出TF-IDF值,將文本向量化處理,計(jì)算出每個(gè)詞頻,最終將向量化結(jié)果傳入分類器,進(jìn)行模型訓(xùn)練和樣本類別的預(yù)測(cè)。首先通過結(jié)巴庫進(jìn)行分詞,然后進(jìn)行中文詞頻統(tǒng)計(jì),計(jì)算每個(gè)詞在文章中出現(xiàn)的頻率。用戶在前臺(tái)點(diǎn)擊按鈕以后,可以展現(xiàn)出從前臺(tái)界面所傳入的文本信息處理后的結(jié)果詞頻統(tǒng)計(jì)后的結(jié)果,并計(jì)算出所需分類的文本詞頻。
(3)詞云展示
該模塊主要依據(jù)詞頻統(tǒng)計(jì)結(jié)果,將文本詞頻繪制成詞云,在前臺(tái)界面做出展示。后臺(tái)接收從界面?zhèn)魅氲奈谋拘畔ⅲㄟ^分詞,詞頻統(tǒng)計(jì)等一系列數(shù)據(jù)清洗和數(shù)據(jù)預(yù)處理,并通過python中的wordcloud庫制作形成詞云,將詞云保存進(jìn)入數(shù)據(jù)庫,最終顯示在前端界面的相應(yīng)位置。
(4)文本分類
文本分類模塊將實(shí)現(xiàn)多種那個(gè)選擇的分類模式,并將分類結(jié)果可視化,展現(xiàn)在前臺(tái)界面,通過選擇不同的分類方式以及核函數(shù)的類別,將在界面展現(xiàn)出該篇文本分類后的標(biāo)簽值,以及分類器的準(zhǔn)確率與模型的得分。可是實(shí)現(xiàn)查看分類器調(diào)參形成的模型好壞與分類的結(jié)果。
(1)主界面:系統(tǒng)的主界面是由文件的傳入窗口和分類結(jié)果的展示窗口所組成。
(2)上傳窗口可以收集在前端界面上傳的文件內(nèi)容并返回給后臺(tái)系統(tǒng),調(diào)用后臺(tái)分類器進(jìn)行對(duì)數(shù)據(jù)的處理。
(3)結(jié)果展示區(qū)有多個(gè)功能模塊。其中包括:中文分詞后的分詞結(jié)果展示模塊,詞頻統(tǒng)計(jì)后對(duì)詞頻可視化模塊,使用每篇文本的詞頻設(shè)計(jì)出的詞云的展示模塊和文本分類結(jié)果的顯示模塊。
在分類器的設(shè)計(jì)方面,主要基于SVM算法,通過調(diào)用python中的SVC庫進(jìn)行分類,通過改變核函數(shù)的類型和其相應(yīng)的參數(shù),設(shè)計(jì)出一個(gè)適合于該類文本的分類器模型。
本文的算法實(shí)現(xiàn)主要是基于 scikit-learn包實(shí)現(xiàn)。
3.1.1 中文分詞

3.1.2 詞云展示


3.1.3 詞頻統(tǒng)計(jì)

3.1.4 數(shù)據(jù)去重
在做特征提取之前,數(shù)據(jù)清洗也是一個(gè)比較重要的部分,因?yàn)橹貜?fù)數(shù)據(jù)會(huì)給訓(xùn)練集帶來噪音影響。因此在進(jìn)行分類器的模型訓(xùn)練之前,首先要對(duì)數(shù)據(jù)做好數(shù)據(jù)清洗并做去重處理。
3.1.5 特征提取
通過CountVectorizer計(jì)算特征數(shù)值的大小,從而進(jìn)行特征提取。訓(xùn)練樣本只考慮的是特征詞匯出現(xiàn)的頻率,TfidfVectorizer:這個(gè)函數(shù)是用來求文本TF-IDF值,將文本的內(nèi)容變?yōu)門F-IDF矩陣的方法。這個(gè)函數(shù)的實(shí)現(xiàn)原理是通過計(jì)算某詞匯在文本中出現(xiàn)的次數(shù),并計(jì)算包括這個(gè)詞的所有文本數(shù)量,通過這種方法可以減少高頻但是沒有分類意義的詞匯的出現(xiàn)對(duì)特征提取的結(jié)果帶來的影響。因此得出結(jié)論:文本數(shù)據(jù)的數(shù)量越多,TFIDF的效果越顯著。
3.1.6 SVC分類效果
實(shí)驗(yàn)證明,在相同的條件下,rbf徑向基核的引入帶來較好的分類效果,在線性核函數(shù)(linear核)的條件下,懲罰因子C越小,分類器的分類效果越好,然而rbf核與poly核的分類效果不受懲罰因子的影響。SVM 多分類主要方法是One/One,One/Other,分類結(jié)果如圖2所示。

圖2 SVM多分類方法結(jié)果圖Fig.2 Results of SVM multi-classification method
通過one-vs-all組合SVM的方式,即用一個(gè)分類器只對(duì)應(yīng)數(shù)據(jù)集中的一個(gè)類別,完成該步驟以后再使每個(gè)分類器都把將其他的全部類別當(dāng)作相反類傳入分類器中進(jìn)行分類處理。首先導(dǎo)入實(shí)現(xiàn)該功能的包
from sklearn.multiclass import OneVsRest-Classifier
將已經(jīng)完成特征提取和歸一化處理的數(shù)據(jù)傳入分類器,使其自動(dòng)完成分類任務(wù)并進(jìn)行預(yù)測(cè)新文本的類別。此時(shí)可以通過分類效果進(jìn)行調(diào)參工作。
模型評(píng)估的作用是主要用來判斷分類器模型建立的好壞。本文采用交叉驗(yàn)證法:首先將數(shù)據(jù)集劃分為K個(gè)相同大小的又相互排斥的子集。再提取k-1個(gè)互斥的子集形成并集,將并集作為訓(xùn)練集。
TF/IDF指的是某詞對(duì)文本特征表示的重要程度。其中TF表示的是某個(gè)詞在文中出現(xiàn)的次數(shù),IDF表示逆向文件頻率。
在超平面H1,H,H2都能將2個(gè)類別分開的同時(shí),H具有最大邊界,為支持向量尋找的超平面,SVM可以適合處理高緯度空間數(shù)據(jù),且不受數(shù)據(jù)緯度大小限制。
4.2.1 核函數(shù)
多項(xiàng)式核函數(shù):

其中(xi,xj)為訓(xùn)練樣本,a為調(diào)節(jié)參數(shù),b,?為次數(shù)。
RBF徑向基核函數(shù)(高斯核函數(shù)):

其中,n為函數(shù)的寬度參數(shù),控制了函數(shù)的徑向作用范圍。
一般使用的是RBF核函數(shù),因?yàn)樵摵撕瘮?shù)可以將數(shù)據(jù)集投射到無窮維。
4.2.2 SVM求解
SVM 的求解過程實(shí)際上是在用對(duì)偶理論求解一個(gè)二次凸優(yōu)化的問題,對(duì)偶問題如下:
(1)線性可分:

i=1,2,…m
其中,m是訓(xùn)練數(shù)據(jù)的屬性數(shù)。
對(duì)偶問題求解的最終結(jié)果:

(2)線性不可分
對(duì)于線性不可分的情況,首先要擴(kuò)維然后再計(jì)算。


i=1,2,…m
(3)超平面
超平面上的正反例判定依據(jù)為:

其中,x為訓(xùn)練樣本,ω為權(quán)重,b為位移項(xiàng)。
超平面的方程為:ωTx=0
N維空間中的超平面方程為:ωT+b= 0 ,其中x為平面上的點(diǎn),ω是該平面上的法向量,它的方向決定了超平面的方向,常數(shù)b的大小指的是超平面到原點(diǎn)之間的距離。
(4)支持向量
對(duì)于原始的問題和對(duì)偶最優(yōu)化的問題,將訓(xùn)練數(shù)據(jù)集中對(duì)應(yīng)于*0jα>的樣本點(diǎn)稱為支持向量。
對(duì)偶問題:

(5)損失函數(shù)
損失函數(shù)累加預(yù)測(cè)錯(cuò)誤的類別,然后比較函數(shù)的輸出值大小兵評(píng)分。在整個(gè)訓(xùn)練集合中的損失值L為:


通過二叉樹分類思想,以構(gòu)造如下分類器:

圖3 二叉樹分類器Fig.3 Binomial tree classifier
5.2.1 SVM多類別分類實(shí)現(xiàn)

5.2.2 SVM one-versus-rest


本設(shè)計(jì)基于機(jī)器學(xué)習(xí)算法實(shí)現(xiàn),將算法應(yīng)用在了生活中,很好的利用了機(jī)器學(xué)習(xí)的優(yōu)點(diǎn)來簡(jiǎn)化人們的工作量。在本次設(shè)計(jì)中,同時(shí)也出現(xiàn)了很多的問題,比如如何設(shè)計(jì)這個(gè)系統(tǒng)的流程以及在設(shè)計(jì)過程中,當(dāng)分類器的準(zhǔn)確度不高時(shí),要如何進(jìn)行參數(shù)的調(diào)整,要往哪個(gè)方向進(jìn)行調(diào)整。在此過程中,我翻閱了中國知網(wǎng)上的各種論文和手頭的算法設(shè)計(jì)書,在研究完算法原理后,重新思考了優(yōu)化方向。