文本分類簡介

 一.概述

 

文本分類在文本處理中是很重要的一個模塊,它的應用也非常廣泛,比如:垃圾過濾,新聞分類,詞性標註等等。它和其他的分類沒有本質的區別,核心方法爲首先提取分類數據的特徵,然後選擇最優的匹配,從而分類。但是文本也有自己的特點,根據文本的特點,文本分類的流程爲:1.預處理;2.文本表示及特徵選擇;3.構造分類器;4.分類。下面分別介紹每個模塊。

1. 預處理

大家知道,中文書寫時,不像英文,中間用空格隔開,而是字和字連着的,這樣的話,第一步就要進行分詞,把文本分成詞(或字),而且分詞的好壞對後續操作影響較大(分詞方法有詞典法,統計方法等,見我的概率統計模型在搜索引擎中的應用)。緊接着第二步就是要去掉常用且意義不大的詞(稱之爲去停用詞),比如:的、是、了等等。這樣,我們的預處理階段就完成了。

2. 文本表示及特徵選擇

目前常用的文本表示是向量空間模型,即把文本分詞後的每個詞看成一個向量中的一個元素。但是,用什麼表示這個元素呢?最先想到的就是詞出現的頻率,比如:“走進/搜索引擎,學習/搜索引擎”,我們就可以表示成(0,…,2,…,0,1,…,0,1,0…)。爲什麼向量裏面那麼多…呢,那是因爲我們必須把所有的向量都要統一起來,意思就是說,哪個詞在向量的哪個位置上,都必須是確定的。要想確定,那就必須把所有的漢字都按字典序排出來,然後各個詞對號入座。假設漢字有10000個,那麼我要分類“走進搜索引擎,學習搜索引擎”這個短文本,我至少要給它生成一個10000維的向量,而且這10000維的向量只用到3個位置。但是用頻率會出現不公平的現象,比如,“我們”這個詞,它出現的頻率就比較高,那它的向量就比較大,所以,詞頻幾乎不用做特徵,常用的特徵有TF/IDF,互信息量,信息增益,χ2統計量等方法。剛纔提到我們的向量維數很大,就算去掉停用詞也是很大的,既然,維數太大,我們的處理方法一般有兩種:特徵選擇和特徵提取,特徵選擇就是選擇一部分具有代表性的特徵來表示文本,比如,用TF/IDF時,去掉很大的和一些很小的值,剩下的作爲特徵。特徵提取是從現在的特徵重構出來一個新的特徵,當然,這個新的特徵維數要小於原特徵維數,就是降維,最常用的方法就是潛在語義分析,用的是奇異值分解(SVD),我們知道在信號處理中一種常用的處理方法,就是把空間域的信號映射到頻率域(比如FFT,wavelet),到了頻率域,信號能量更集中,便於處理。它的思想和信號處理其實一樣。

3. 構造分類器

接下來的工作就是要構造分類規則,也就是分類器,主要就是對許多數據進行訓練,產生一套模型。常用的方法有kNN,樸素貝葉斯,支持向量機,神經網絡,決策樹,Rocchio,線性最小平方擬合等等

4. 分類

分類器模型產生後,我們只要來一個文本,往分類器一仍,它就會產生該文本的類別。

 

二.特徵選擇

 

上面對文本分類進行了概要性的介紹,下面深入文本分類中的每個模塊,從特徵選擇開始,常用的特徵計算有TF/IDF,互信息量,信息增益,χ2統計量等方法。

1、 TF/IDF

TF/IDF的思想就是越是出現次數多(詞頻高)且罕見的詞彙(文檔頻率低)貢獻越大。

具體請看Google黑板報上吳軍寫的通俗易懂的介紹TF/IDF的文章吧,如果還看不懂的話,那就沒轍了。

2、 信息增益

信息增益的思想就是看特徵能夠爲分類系統帶來多少信息量,帶來的信息量越多,該特徵越重要。信息量的多少由熵來衡量,一個變量X,取值有n中,每種的概率爲Pi,則X的熵爲:H(X) = -∑Pi·log2 Pi

對分類系統來說,類別C是變量,它可能的取值是C1,C2,……,Cn,而每一個類別出現的概率是P(C1),P(C2),……,P(Cn), n就是類別的總數。此時分類系統的熵爲:H(C) = -∑P(Cj)·log2 P(Cj)。信息增益是針對一個一個的特徵而言的,就是看一個特徵ti,系統考慮它和不考慮它的時候信息量各是多少,兩者的差值就是這個特徵給系統帶來的信息量。顯然,不考慮任何特徵的信息量就是H(C),而考慮某特徵又分兩種情況:該特徵出現和該特徵沒有出現。

該特徵ti出現的信息量爲:P(ti)H(C|ti)

該特徵ti不出現的信息量爲:P(ti’)H(C|ti’)

因此,考慮該特徵ti的信息量爲:

H(C|ti)= P(ti)H(C|ti)+ P(ti’)H(C|ti’)

             = -P(ti) ∑P(Cj|ti)·log2 P(Cj|ti) - P(ti’) ∑P(Cj|ti)·log2 P(Cj|ti’)

其中,∑是j從1…n。

最後,特徵ti的信息增益:

IG=H(C)-H(C|ti)

=-∑P(Cj)·log2 P(Cj) –{P(ti) ∑P(Cj|ti)·log2 P(Cj|ti) + P(ti’) ∑P(Cj|ti)·log2 P(Cj|ti’)}

有了以上公式,其他的就比較好計算了,P(Ci),表示類別Ci在語料庫中出現的概率,其實只要用1除以類別總數n就得到了(前提是每個類別平等);P(ti),就是特徵ti在語料庫中出現的概率,只要用出現過ti的文檔數除以總文檔數就可以了,再比如P(Ci|ti)表示出現ti的時候,類別Ci出現的概率,只要用出現了ti並且屬於類別Ci的文檔數除以出現了ti的文檔數就可以了;P(ti’) 表示語料中不包含特徵項ti的文檔的概率;P(Cj|ti’)表示文檔不包含特徵項ti時屬於Ci的條件概率。

 

3、χ2統計量

χ2統計量衡量的是特徵值ti和類別Cj之間的相關聯程度,並假設ti和Cj之間符合具有一階自由度的χ2分佈。特徵對於某類的χ2統計值越高,它與該類之間的相關性越大,攜帶的類別信息也就較多。

現假設N爲訓練語料文檔總數,A表示包含特徵ti且屬於Cj類的文檔數;B表示包含特徵ti且不屬於Cj類的文檔數;C表示不包含特徵ti且屬於Cj類的文檔數;D表示既不包含特徵ti且不屬於Cj類的文檔數。那麼,可以計算一下,理論上包含特徵ti且屬於Cj類的文檔數是多少:EA=(A+C)(A+B)/N(A+C爲屬於Cj類的文檔數,(A+B)/N爲特徵ti的出現概率),則其開方檢驗DA=(A-EA)2/EA。同理,可以算出其他三種情況的開方檢驗,則

χ2(ti,Cj) = DA+DB+DC+DD= { N×(A×D-C×B) } / { (A+C)×(B+D)×(A+B)×(C+D) }

  

4、互信息量

互信息(MI)的思想是:互信息量越大,特徵值ti和類別Cj之間的共現的程度越大。

I(ti, Cj) = log{P(ti, Cj) / P(ti)P(Cj)}

        =log{P(ti|Cj) / P(ti)}

        ≈log{(A×N) / (A+C)×(A+B)}

其中,符號表示同上。

  

最常用的選擇特徵的方法就是:對每個詞根據以上四種方法之一計算一個值,並且從大到小排序,然後設定一個閾值,取出所有大於閾值的詞作爲特徵值組成特徵向量。

 

三.分類器

 

下面來說說文本分類中的分類器,常用的方法有kNN,樸素貝葉斯,支撐向量機,神經網絡,決策樹,Rocchio,線性最小平方擬合等等,在這裏只介紹性能比較好的四個分類器:kNN,樸素貝葉斯,Rocchio,支撐向量機(SVM)。


 

1.k-近鄰算法(kNN)

   kNN算法的基本思想是:給定一個測試文檔,系統在訓練集中查找離它最近(最相似)的k個文檔,然後根據這k個文檔的類別來判定測試文檔的類別。具體步驟如下:

(1)對訓練文檔和測試文檔進行特徵選擇,將它們表示成文本向量。

(2)在訓練集中選出與測試文檔最相似的k個文本,公式如下(cos):

        Sim(T, D)= ∑i=1..N(Ti×Di) / {(∑i=1..N Ti2)×( ∑i=1..N Di2)}1/2

其中T爲測試文檔,D爲訓練文檔。

(3)在計算得到的k個最近鄰文檔中,依次計算每類的權重,公式如下:

             p(T, Cj) = ∑dikNNSim(T, d i) y(d i,Cj)

其中T爲測試文檔,d i爲選出的k個訓練文檔中的第i個,y(d i,Cj)爲隸屬函數,如果文檔d i,屬於Cj類,則其值爲1,反之爲0。

(4)比較類的權重,將文本分到權重最大的那一類。



2.樸素貝葉斯

樸素貝葉斯分類器的基本思想是利用特徵項和類別的聯合概率來估計給定文檔的類別概率。而且假設文本是基於詞的一元模型,也就是說,詞與詞之間是獨立的。根據貝葉斯公式,文檔D屬於Cj類的概率爲:

P(Cj|D) = P(D|Cj)×P(Cj) / P(D)

又,P(D|Cj)= P(D(t1)|Cj)×…×P(D(tn)|Cj),P(D)是個常數,P(Cj)=N(Cj)/N,P(D(ti)|Cj)=(N(ti, Cj)+1) / (N(Cj)+M),其中N(Cj)表示訓練文本中屬於Cj類的文本數量,N爲訓練文本集總數量,N(ti, Cj)表示類別Cj中包含特徵ti的訓練文本數量,M表示訓練文本集中特徵項的總個數。

只要計算出所有類別的P(Cj|D),然後哪個大,該文檔就屬於哪一類了。



3.Rocchio分類器

Rocchio分類器的基本思想是,首先爲每一個訓練文本D建立一個特徵向量,然後使用訓練文本的特徵向量爲每個類建立一個原型向量。當給定一個待分類文本時,計算待分類文本與各個類別的原型向量之間的距離,其距離可以是向量點積、向量之間夾角的餘弦值或其他函數,根據計算出來的距離值來決定待分類文本屬於哪一類別。這個原型向量的計算方法有幾種,其中最簡單的就是把該類的所有文本的特徵向量求平均值。該分類器的效果僅次於kNN和SVM方法。



4.支撐向量機(SVM)

    SVM的分類方法的基本思想是在向量空間中找到一個決策平面,這個平面能最好地分割兩個分類中的數據點。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章