1. 程式人生 > >NLP --- 文字分類(向量空間模型(Vector Space Model)VSM)

NLP --- 文字分類(向量空間模型(Vector Space Model)VSM)

本節主要介紹文字分類中的一種演算法即向量空間模型,這個演算法很經典,包含文字預處理、特徵選擇、特徵權值計算、分類演算法、這是VSM的幾個主要步驟,在宗老師的書裡都有詳細的講解,這裡也會進行深入的講解,淺顯易懂的是目的,深入理解是目標,下面給出這個VSM模型的方框流程圖:

其中分詞和詞袋的建立我們在前兩節進行解釋了,這一節將主要介紹特徵詞選擇、文字模型表示(VSM),分類演算法的建立。下面就係統的進行梳理VSM的演算法過程,這裡大家多參考宗老師的書效果會更好:

文字分類就是在給定的分類模型下, 由計算機根據文字內容自動判別文字類別的過程。 隨著文字分類技術的發展, 不同的文字表示模型逐漸出現多種文字分類演算法, 使得文字挖掘領域道路越來越寬。 目前已經出現多種中文文字表示方法,如布林模型、向量空間模型、潛在語義模型和概率模型等。 所以在構造自動文字分類器時, 面臨的選擇也越來越多。 空間向量模型是一種出現較早的文字表示模型, 但現在仍然在廣泛的使用。 本篇的重點是對已經出現的基於向量空間模型的文字分類演算法進行研究分析。

文字分類的定義

Sebastiani(2002)以如下數學模型描述文字分類任務。文字分類的任務可以理解為獲得這樣的一個函式:

其中,表示需要進行分類的文件,表示預定義的分類體系下的類別集合。T值表示對於來說,文件d_j屬於類c_i,而F值表示對於而言文件不屬於類c_i。也就是說,文字分類任務的最終目的是要找到一個有效的對映函式,準確地實現域D×C到值T或F的對映,這個對映函式實際上就是我們通常所說的分類器。因此,文字分類中有兩個關鍵問題:一個是文字的表示,另一個就是分類器設計。
一個文字分類系統可以簡略地用下圖所示:

文字表示

中文文字資訊多數是無結構化的, 並且使用自然語言,很難被計算機處理。 因此,如何準確地表示中文文字是影響文字分類效能的主要因素。 經過多年發展,如下圖所示,研究人員提出了布林模型、向量空間模型、潛在語義模型和概率模型等文字表示模型,用某種特定結構去表達文字的語義。基於分類速度的考慮, 目前的文字分類挖掘系統主要採用向量空間模型來表示文字
。VSM由哈佛大學的 G Salton 提出,這一模型將給定的文字轉換成一個維數很高的向量, 並以特徵項作為文字表示的基本單位
, 向量的各維對應文字中的一個特徵項, 而每一維本身則表示了其對應的特徵項在該文字中的權值。 權值代表了特徵項對於所在文字的重要程度, 即該特徵項能夠多大程度上反映它所在文件的類別。

 下面給出VSM的概念和相關的定義,主要參考了宗老師的書,因為我查了很多資料,感覺還是宗老師說的比較簡單明瞭,大家也看看,演算法難點我會詳細的講解的,下面開始:

目前文字表示通常採用向量空間模型(vector space model,VSM)。VSM是20世紀60年代末期由G.Salton等人提出的[Salton,1971],最早用在SMART資訊檢索系統中,目前已經成為自然語言處理中常用的模型。下面首先給出VSM涉及的一些基本概念。

  • 文件(document):通常是文章中具有一定規模的片段,如句子、句群、段落、段落組直至整篇文章。本書對文字(text)和文件不加區分。
  • 項/特徵項(term/feature term):特徵項是VSM中最小的不可分的語言單元,可以是字、詞、片語或短語等。一個文件的內容被看成是它含有的特徵項所組成的集合,表示為:Document = D(t_1,t_2,...,t_n),其中t_k是特徵項,1\leq k\leq n
  • 項的權重(term weight):對於含有n個特徵項的文件D(t_1,t_2,...,t_n),每一特徵項t_k都依據一定的原則被賦予一個權重w_k,表示它們在文件中的重要程度。這樣一個文件D可用它含有的特徵項及其特徵項所對應的權重所表示:D=D(t_1,w_1;t_2,w_2;...;t_n,w_n),簡記為D =D(w_1,w_2,...,w_n),其中w_k就是特徵項t_k的權重,1\leq k\leq n

一個文件在上述約定下可以看成是視維空間中的一個向量,這就是向量空間模型的由來。下面給出其定義。

定義:  (向量空間模型(VSM)) 給定一個文件D=D(t_1,w_1;t_2,w_2;...;t_n,w_n),D符合以下兩條約定:

              (1)各個特徵項t_k1\leq k\leq n)互異(既沒有重複);

              (2)各個特徵項t_k無先後順序關係(即不考慮文件的內部結構)

                在以上兩個約定下,可以把特徵項t_1,t_2,...,t_n看成一個n維座標系,而權重w_1,w_2....,w_n為相應的座標值,因此,一                   個 文字就表示為維空間中的一個向量,我們稱D=D(t_1,w_1;t_2,w_2;...;t_n,w_n)為文字D的向量或向量空間模型,如下                  圖所示:

 向量的相似性度量

定義: 任意兩個文件D_1D_2之間的相似性係數Sim(D_1,D_2)指兩個文件內容的相關程度(degree of relevance)。設文件D_1D_2表示VSM中的兩個向量:

                                           D_1 = D_1(w_{11},w_{12},...,w_{1n})

                                           D_2= D_2(w_{21},w_{22},...,w_{2n})

那麼,可以藉助於n維空間中兩個向量之間的某種距離來表示文件之間的相似度,常用的方法是使用向量之間的內積來計算:

                                          Sim(D_1,D_2) = \sum_{k=1}^{n}w_{1k}\times w_{2k}

考慮到向量的歸一化,則可以使用兩個向量的餘弦值來表示相似係數:             

                                    

這裡需要解釋一下,我們知道在平面向量裡兩個向量越接近,那麼這兩個向量的夾角越小,直到這兩個向量平行這兩個向量才完全相等,大家需要理解一下基本的向量知識就懂了,上式是根據求向量的夾角進行判斷,如下:

設二維空間內有兩個向量  和    ,    和   表示向量a和b的大小,它們的夾角為   ,則內積定義為以下實數: 、                                                                          

 

則 夾角的計算                                          cos\theta = \frac{\overrightarrow{a}\bullet \overrightarrow{b}}{\left | a \right |\left | b \right |}

這樣大家應該可以理解吧,我們繼續:

採用向量空間模型進行文字表示時,需要經過以下兩個主要步驟:

(1)根據訓練樣本集生成文字表示所需要的特徵項序列D(t_1,t_2,...,t_n)

(2)依據文字特徵項序列,對訓練文字集和測試樣本集中的各個文件進行權重賦值、規範化等處理,將其轉化為機器學習算
法所需的特徵向量。
另外,用向量空間模型表示文件時,首先要對各個文件進行詞彙化處理,在英文、法文等西方語言中這項工作相對簡單,但在漢語中主要取決於漢語自動分詞技術。由於n元語法具有語言無關性的顯著優點,而且對於漢語來說可以簡化分詞處理,因此,有些學者提出了將n元語法用於文字分類的實現方法,利用n元語法表示文字單元(“詞”)。

需要指出的是,除了VSM文字表示方法以外,研究比較多的還有另外一些表示方法,例如:片語表示法,概念表示法等。但這些方法對文字分類效果的提高並不十分顯著。片語表示法的表示能力並不明顯優於普通的向量空間模型,原因可能在於,片語雖然提高了特徵向量的語義含量,但卻降低了特徵向量的統計質量,使得特徵向量變得更加稀疏,讓機器學習演算法難以從中提取用於分類的統計特性。 

文字特徵選擇方法

在文字處理過程中,將文字集合中的每個文字實行分詞處理後,通常是統計出每個文字出現的詞以及相應的詞頻,然後將每個文字出現的詞合併成一個詞空間,所以詞空間中出現的不同詞相當多。表示一篇文字的時候,無論文字用向量空間模型還是概率統計模型來表示,文字的特徵的維度都和詞空間的維度一樣。而每個文字中出現的詞只佔詞空間中很少一部分,文字特徵表示非常稀疏。使分類演算法的時間複雜度和空間複雜度增加,而且對文字特徵表示的不準確性嚴重影響了文字分類效能。因此,需要對文字特徵進行篩選,選出最能代表文字類別的特徵,這個過程就是特徵選擇。特徵選擇的一般步驟是:
(1)從訓練文字集中取得所有的特徵項,構成文字特徵集合F

(2)對集合中的每一項用下面將要介紹的特徵評估函式進行打分,然後按照分值由高到低排序,得到有序集合F_1

(3)假設需要選取N個分類需要的特徵項,則從F_1集合中選取前N個特徵項,構成最終的分類特徵項F_sF_s將用於訓練分類器和分類測試。

特徵選擇演算法常用的方法有:基於文件頻率(document frequency,DF)的特徵提取法、資訊增益(information gain,IG)法、\chi ^2統計量(CHI)法和互資訊方法等以下簡要介紹這些方法

文件頻率(document frequency,DF)的特徵提取法

一個特徵的文件頻率是指在文件集中含有該特徵的文件數目。採用DF作為特徵選擇,基於如下基本假設:DF值低於某個域值的詞條是低頻詞,它們不含或含有較少的類別資訊。將這樣的詞條從原始特徵空間中除去,不但能夠降低特徵空間的維數,而且還有可能提高分類的精度。文件頻率是最簡單的特徵選擇方法,由於其相對於訓練語料規模具有線性的計算複雜度,它能夠很容易被用於大規模語料統計。而在資訊檢索研究中通常卻認為值低詞條相對於值高的詞條具有較多的資訊量,不應該將它們完全移除。不同的應用對值的認識不同,因此應根據具體情況來選擇該方法。

資訊增益(information gain,IG)法

資訊增益表示文字中包含某一特徵值時文字類的平均資訊量。它定義為某一特徵在文字中出現前後的資訊熵之差。假定c為文字類變數,C為文字類的集合,d為文字,f為特徵(以下各節同此)。對於特徵f其資訊增益記為IG(f),公式如下:

其中P(\widetilde{f})是語料中不包含該特徵的概率。這裡就不細講了,不理解什麼是熵的請檢視我的這篇文章

從資訊增益的定義可知,一個特徵的資訊增益實際上描述的是它包含的能夠幫助預測類別屬性的資訊量。從理論上講,資訊增益應該是最好的特徵選取方法,但實際上由於許多資訊增益比較高的特徵出現頻率往往較低,所以,當使用資訊增益選擇的特徵數目比較少時,往往會存在資料稀疏問題,此時分類效果也比較差。因此,有些系統實現時,首先對訓練語料中出現的每個詞(以詞為特徵)計算其資訊增益,然後指定一個閾值,從特徵空間中移除那些資訊增益低於此閾值的詞條,或者指定要選擇的特徵個數,按照增益值從高到低的順序選擇特徵組成特徵向量。

其實上面的內容在機器學習中都詳細講過了,這裡就體現了知識的聯絡性,也就是說我們學習的知識是普遍具有聯絡的,有時候用在另一個方面,也可以用在其他方面,這裡大家就需要有發散性的思維了,大家這裡可結合宗老師的書看會更好。

\chi ^2統計量(CHI)法(卡方分佈)

\chi ^2統計量(CHI)衡量的是特徵項t_i和類別C_j之間的相關聯程度,並假設t_iC_j之間符合具有一階自由度的\chi ^2分佈。特徵對於某類的\chi ^2統計值越高,它與該類之間的相關性越大,攜帶的類別資訊也較多,反之則越少。
如果令N表示訓練語料中文件的總數,A表示屬於C_j類且包含t_i的文件頻數,B表示不屬於C_j類但包含t_i的文件頻數,C表示屬於C_j類但不包含t_i的文件頻數,D是既不屬於C_j也不包含t_i的文件頻數,N為總的文字數量。上述4種情況可以下表表示:

 特徵項t_iC_j的卡方值為:

通過上表和上式我們可以看到,開方統計量確實是衡量兩個量的相關程度的,這裡的兩個量是特徵項 t_i和類別C_j之間的相關聯的程度,根據上式我們就可以看到他們的相關度是如何判斷的,這裡大家只需要關注A和D是什麼意思就好了,A說明在C_j的分類中,包含特徵t_i的文字,而D說明了在其他的分類裡不包含這個特徵的文字,這裡的A和D其實表達的是同一個意思,只是從不同的衡量角度進行衡量罷了,這裡大家需要理解,因此如何A和D很大說明該特徵在這一類中關聯度很大,因此AD的乘積越大說明關聯度越大,根據上式的分子,我們可以發現,AD的乘積越大,CB的值越小,此時的卡方值越大,只有CB的理解是類似的,這裡大家自己嘗試理解一下。下面我們繼續:

對於多類問題.,基於CHI統計量的特徵提取方法可以採用兩種實現方法:一種方法是分別計算t_i對於每個類別的CHI值,然後在整個訓練語料上計算:

                                                         

其中,M為類別數。從原始特徵空間中去除統計量低於給定閾值的特徵,保留統計量高於給定閾值的特徵作為文件特徵。另一種方法是,計算各特徵對於各類別的平均值: 

                                                           

以這個平均值作為各類別的CHI值。但有研究表明,後一種方法的表現不如前一種方法 。

互資訊方法

這個方法和上面的卡方統計很類似,這裡就根據上面的說明的符號進行講解一下,很簡單:

互資訊(MI)法的基本思想是:互資訊越大,特徵t_i和類別C_j共線的程度越大。如果A、B、C、N的含義和卡方統計中的約定相同,那麼t_iC_j的互資訊可由下式計算:

如果特徵t_i和類別C_j無關,則,那麼。為了選出對多類文件識別有用的特徵,與上面基於CHI統計量的處理方法類似,也有最大值方法和平均值方法兩種方法: 

以上是文字分類中比較經典的一些特徵選取方法,實際上還有很多其他文字特徵選取方法,例如DTP(distance to transition point)方法、期望交叉熵法、文字證據權法、優勢率方法。

這裡特徵選擇演算法就講完了,下面講一下權值的確定:

特徵權重演算法

這裡只簡單的介紹宗老師書裡的前幾個,後面那幾個很麻煩的原理是一樣的,只是做了一些微調而已。

不同的特徵項對文字的重要程度和區分度是不同的,所以在對文字分類模型進行形式化的時候,需要對所有特徵項進行賦權重處理,常用的加權函式有布林權重、詞頻權重、權重和基於熵概念的權重等。

布林權重 

布林權重是最簡單的一種加權方法,特徵詞出現的次數大於0,則權重賦為1。特徵詞出現的次數為0,則權重賦為0,其表達公式如:

其中W_i為特徵項i的權重,TF為特徵項i出現的次數。

絕對詞頻權重

使用文件中特徵詞的頻率做權重,可以提高文字分類的查全率,但對準確率不好,其公式可以表示為:

                                                                                      \large W_i =TF_i

                                                                                              =特徵詞\large i出現的次數。

這種方法比較簡單,因為有些詞出現的頻率雖然非常高,但是沒有什麼代表性,這樣使一些噪音詞的權重比較高,從而降低了分類的準確率。因為如果某一個特徵在每個類別中出現的頻次都很高,說明這個特徵不是很重要,因此需要考慮出現少一點的詞。

倒排文件頻度 (IDF)

                                                                                  \large W_i =log(\frac{N}{n_i})

N為總文件數,\large n_i表示含有特徵\large t_i的文件數,他們的比值再去對數,說明了什麼呢?其實很簡單呢,如果N不變,\large n_i越小,W_i越大,同理\large n_i越大,W_i越小,也就是說這個思想是特徵出現的次數越少器權值越大,和上面的絕對詞頻正好相反,但是這樣做的缺點是對那些極少出現的詞極度敏感,因此為了結果上面的大也不好,小也不好的缺點,這裡把二者結合在一起即:

\large TFIDF權重

\large TFIDF是在文字處理領域中使用最廣泛的數值權重計算方法。該方法基於以下原因一是特徵\large i在文件\large j中出現次數越多,越重要二是文件集中含有特徵\large i的文件數\large DF_i越大越不重要。方法基於的思想和構造的統計量都很簡單,但是,在實用中卻表現了很好的效能。權重函式為:

其中\large tf_{ik}(Term Frequency)表示項\large t_k在文字\large D_i中的文件內出現的頻率,\large idf_k(lnverse Document Frequency)表示項\large t_k的反文件頻率,是反映\large t_k在一個文件集中按文件統計出現的頻繁程度的指標。它們有多種計算方法,目前較為常用的公式為:

其中表示項\large t_k在文字\large D_i,中出現的次數,N表示全部訓練集的文字數,\large n_k表示訓練文字中出現\large t_k的文字頻數,\large l的取值需要根據實驗來確定,一般取0.01。根據夏農資訊學理論,如果項在所有文字中出現的頻率越高,那麼它所包含的資訊熵就越小;如果項的出現較為集中,只在少量文字中有較高的出現頻率,那麼它就會擁有較高的資訊熵。上述公式就是基於這個思想的一種實現。
考慮到文字長度對權重的影響,還應該對項權重公式做歸一化處理,將各項權重規範到[0,1]之間: 

TFIDF公式是一種經驗公式,並沒有堅實的理論基礎。但是,多年的實驗表明,上述公式是文字處理中的一個有效工具。事實上,這一公式不僅在資訊檢索中得到了成功應用,它對於其他文字處理領域,如資訊分發、資訊過濾和文字分類也有很好的借鑑意義。
其他的都是在此基礎上進行改進的,大家參考宗老師的書本就可以理解了。

分類演算法   

這裡不想繼續寫了,因為這些演算法在機器學習中都詳細的講過了,這裡大家可以自行看一下,宗老師的書裡也給了簡單的介紹,我這裡直接把用到的幾個演算法的連結發到這裡。

樸素貝葉斯演算法

支援向量機

K-近鄰這個演算法當時感覺太簡單了就沒有總結,這裡大家自行總結一下就可以了。

BP神經網路詳解
線性迴歸

決策樹

剩下的演算法大家自己看宗老師的書吧。

文字分類效能評測

如何評估分類方法和系統的效能或者說分類結果是進行文字分類研究的一個重要技術。真正反映文件分類內在特徵的效能評估模型可以作為改進和完善分類系統的目標函式。在文字分類中,使用什麼評價引數取決於具體的分類問題。單標註分類問題一個測試文字只屬於一個類和多標註分類問題一個測試文字可以屬於多個類所使用的評估引數是不一樣的。目前使用比較多的分類效能
評估指標為查全率和查準率,這是來源於資訊檢索中的術語。其實就是正確率、召回率和F-測度值。

上表示分類器將輸人文字正確地分類到某個類別的個數;b表示分類器將輸人文字錯誤地分類到某個類別的個數;c表示分類器將輸人文字錯誤地排除在某個類別之外的個數;d表示分類器將輸人文字正確地排除在某個類別之外的個數。該分類器的召回率、正確率和F一測度值分別採用以下公式計算:

其中\large \beta是調整正確率和召回率在評價函式中所佔比重的引數,通常取\large \beta =1,這時的評價指標變為:

其他的請檢視宗老師的書吧。

本節就到這裡,我們下一節分析一下VSM的缺點,針對該缺點提出其他的演算法基於SVD的隱喻意分析進行解決。