1. 程式人生 > >《NLP漢語自然語言處理原理與實踐》第四章 NLP中的概率圖模型

《NLP漢語自然語言處理原理與實踐》第四章 NLP中的概率圖模型

目前最流行的演算法思想包含如下兩大流派:基於概率論和圖論的概率圖模型;基於人工神經網路的深度學習理論。


4.1概率論迴歸

 4.1.1 多元概率論的幾個基本概念

 4.1.2  貝葉斯與樸素貝葉斯演算法

      樸素貝葉斯理論源於隨機變數的獨立性,之所以稱之為樸素是因為其思想基礎的簡單性:就文字分類而言,從樸素貝葉斯的角度來看,句子中的兩兩詞之間的關係是相互獨立的,即一個物件的特徵向量中每個維度都是相互獨立的。這是樸素貝葉斯理論的思想基礎。

     樸素貝葉斯分類流程:

     第一階段,訓練資料生成訓練樣本集:TF-IDF

     第二階段,對每個類別計算p(yi)

     第三階段,對每個特徵屬性計算所有劃分的條件概率

     第四階段,對每個類別計算p(x|yi)p(yi)

     第五階段,以p(x|yi)p(yi)的最大項作為x的所屬類別。

 

 4.1.3  文字分類

    1.One-Hot表達

     文字分類的結構化方法是One-Hot表達模型。它是最直觀,也是目前為止最常用的詞表示方法,雖然越來越多的實踐已經證明,這種模型存在侷限性,但它仍在文字分類中得到廣泛的應用。

     假設把語料庫中的所有詞都收集為一個詞典D,詞典容納了語料庫中所有句子的詞彙。One-Hot方法就是把每個詞表示為一個長長的向量。這個向量的維度是詞典大小,其中絕大多數元素是0,只有一個維度的值為1.這個維度就代表了當前的詞。

   例如:

文字1: My dog ate my homework

文字2: My cat ate the sandwich 

文字3: A dolphin ate the homework

這三個文字生成的詞典共有9個詞,[a, ate, cat, dolphin, dog, homework, my, sandwich, the]

這“a” -> [1,0,0,0,0,0,0,0,0]

文字1為 [0,1,0,0,1,1,1,0,0]

文字2為 [0,1,1,0,0,0,1,1,1]

文字3為[1,1,0,1,0,1,0,0,1]



     One-Hot的特點是相互獨立地表示語料中的每個詞。詞與詞在句子中的相關性被忽略了,這正符合樸素貝葉斯對文字的假設。


    2.權重策略: TF-IDF方法

    由One-Hot向量形式構成的句子就是一個詞袋模型,它將文字中的詞和模式串轉換為數字,而整個文字集也都轉化為維度相等的詞向量矩陣。

    

文字1為 [0,1,0,0,1,1,1,0,0]  儘管有兩個my,但二元向量表示中仍然是1

文字2為 [0,1,1,0,0,0,1,1,1]

文字3為[1,1,0,1,0,1,0,0,1]

    這種方式的問題忽略了一個句子中出現多個相同的詞頻資訊,增加這些詞頻資訊,就變成了整數計數方式。使用整形計數方式的詞向量表示如下:

    文字1:   [0, 1, 0, 0, 1, 1, 2, 0, 0]   (my出現兩次)

    文字2: [0, 1, 1, 0, 0,  0, 1, 1, 1]

    文字3: [1, 1, 0, 1, 0, 1, 0, 0, 1]

    對整形計數方式進行歸一化。歸一化可以避免句子長度不一致問題,便於演算法計算,而且對於基於概率演算法,詞頻資訊就變為了概率分佈。這就是文件TF資訊,即:

    文字1: [0, 1/5, 0, 0, 1/5, 1/5, 2/5, 0, 0]

    文字2: [0, 1/5, 1/5, 0, 0,  0, 1/5, 1/5, 1/5]

    文字3:    [1/5, 1/5, 0, 1/5, 0, 1/5, 0, 0, 1/5]


   但是這裡還有一個問題,如果體現生成的詞袋中的詞頻資訊呢?

   原資訊:a(1),ate(3),cat(1),dolphin(1),dog(1),homework(2),my(3),sandwich(1),the(2)

   注意:由於詞袋收集了所有文件的詞,這些詞的詞頻是針對所有文件的詞頻,因此,詞袋的統計基數是文件。

   詞條的文件頻率:a(1/3),ate(3/3),cat(1/3),dolphin(1/3),dog(1/3),homework(2/3),my(3/3),sandwich(1/3),the(2/3)

   詞袋模型的IDF的權重如下:

   IDF: a  log(3/1),ate  log(3/3), cat  log(3/1),dolphin   log(3/1), dog log(3/1),homework log(3/2),my log(3/2),

sandwich log(3/1),the  log(3/2)

   

    TF-IDF權重策略:計算文字的權重向量,應該選擇一個有效的權重方案。最流行的方案是對TF-IDF權重的方法。TF-IDF的含義是詞頻-逆文件頻率,其含義是如果某個詞或短語在一篇文章中出現的品類TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF-IDF的假設是,高頻率詞應該具有高權重,除非它也是高文件頻率。逆文件品類就是使用詞條的頻率來抵消該詞的詞頻對權重的影響,而得到一個較低的權重。

   

     詞頻(Term Frequency, TF)是指一個給定的詞語在該檔案中出現的頻率。這個數字是對詞數(Term Count)的歸一化,以防止它偏向長的檔案。對於在某一特定檔案中的詞語來說,它的重要性可表示為:

   TFij = nij/(Σ(k) nkj)

    上式中分子是該詞在檔案中的出現次數,而分母是在檔案中所有字詞的出現次數之和。


     逆向檔案頻率(Inverse Document Frequency, IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總檔案除以包含該詞語之檔案的數目,再將得到的商取對數得到:

    IDFi = log(|D|/|{j:ti∈dj}|)

    為了防止分母為0的情況發生,一般使用1+|{d∈D:t∈d}|作為分母;然後再計算TF和IDF的乘積。

    某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,TFIDF(ij)=TF(ij)I * IDF(ij)可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。 


  TF-IDF的應用(參考http://www.cnblogs.com/chenny7/p/4002368.html):

   

      找出相似文章

  • 使用TF-IDF演算法,找出兩篇文章的關鍵詞;
  • 每篇文章各取出若干個關鍵詞(比如20個),合併成一個集合,計算每篇文章對於這個集合中的詞的詞頻(為了避免文章長度的差異,可以使用相對詞頻);
  • 生成兩篇文章各自的詞頻向量;
  • 計算兩個向量的餘弦相似度,值越大就表示越相似。


   自動提取關鍵詞

  比如我們要想提取一篇新聞的關鍵詞,先要對該新聞進行分詞,然後根據TF-IDF計算每個單詞的權重,並將權重最大的N個單詞作為此新聞的關鍵詞。

   搜尋引擎

   在搜尋引擎中,通常使用TF-IDF模型計算查詢串q(由關鍵詞w1、w2、... wk組成)和文件d之間的匹配度:   TF-IDF(q, d) = sum{i=1,2,...k | TF(wi, d)* IDF(wi)}}   可見,如果關鍵詞wi在一篇文件中出現的頻率很高,同時在其他文件中很少出現,則該詞具有很好的區分能力;
   

  自動摘要

  

4.2 資訊熵

    如果說概率是對事件確定性的度量,那麼資訊(包括資訊量和資訊熵)就是對事物不確定性的度量。  4.2.1  資訊量和資訊熵      資訊量在數學上表示為I(X) = -logP(X)      資訊則被定義為對平均不確定性的度量。一個離散隨機變數X的資訊熵H(X)定義為:    H(X) = - ΣP(X)logP(X)   其中,約定0log(1/0)=0,對數若以2為底,則熵的單位為位元;若以e為底,則其單位為奈特。 (1)資訊熵的本質是資訊量的期望。 (2)資訊熵是對隨機變數不確定性的度量。隨機變數X的熵越大,說明它的不確定性也越大。若隨機變數退化為定值,則熵為0. (3)平均分佈是“最不確定”的分佈。 熵的性質 (1)H(X)>=0 (2)H(X)<=log|X|,等號成立的條件,當且僅當X的所有取值x有P(X=x)=1/|X|。
4.2.2  互資訊、聯合熵、條件熵 1.互資訊 互資訊定義:I(Y;X)=H(X) - H(X|Y) = H(Y) - H(Y|X)=Σ(X,Y)P(X,Y)log{P(X,Y)/[P(X)P(Y)]} 互資訊的性質如下: (1)互資訊可以理解為,收信者收到資訊X後,對信源Y的不確定性的消除。
(3)互資訊是對稱的。
資訊增益  g(D,A) = H(D) - H(D|A)  《統計學方法》 李航 互資訊和資訊增益公式一樣
2.聯合熵
聯合熵是藉助聯合概率分佈對熵的自然推廣,兩個離散隨機變數X和Y的聯合熵定義為H(X,Y)=-Σ(X,Y)P(X,Y)logP(X,Y)
3.條件熵
條件熵是利用條件概率分佈對熵的一個延伸。隨機變數X的熵是用它的概率分佈P(X)來定義的。如果知道另一個隨機變數Y的取值為y,那麼X的後驗概率分佈即為P(X|Y=y)。利用條件分佈可以定義給定Y=y時X的條件熵為 H(X|Y=y)= - Σ(X)P(X|Y=y)logP(X|Y=y) 熵H(X)度量的是隨機變數X的不確定性,條件熵H(X|Y=y)度量的則是已知Y=y後,X的不確定性。 熵的鏈式規則: H(X,Y)=H(X) +H(Y|X) =H(Y)+H(X|Y) I(X;Y)+H(X,Y)=H(X)+H(Y)
邊緣獨立定理:從資訊理論角度為“邊緣獨立”這一概念提供了一個直觀解釋,即兩個隨機變數相互獨立當且僅當它們之間的互資訊為0.
考慮三個變數: I(X;Y|Z) = H(X|Z) - H(X|Y,Z) 表示給定Z時X和Y之間的條件互資訊
定理4-1:對於任意3個離散隨機變數X、Y和Z,有 (1)I(X,Y|Z)>0 (2)H(X|Y,Z) <=H(X|Z) 給定Z,兩個隨機變數X和Y相互獨立,當且僅當它們的條件互資訊為0.

4.2.3 交叉熵和KL散度 1.交叉熵 H(P;Q)=-ΣPp(Z)logPq(Z) (1)交叉熵常用來衡量兩個概率分佈的差異性。 (2)在Logistic中的交叉熵為其代價函式 2.相對熵與變數獨立 相對熵定義:對定義於隨機變數X的狀態空間上的兩個概率分佈P(X)和Q(X),可以用相對熵來衡量它們之間的差異,既有: KL(P,Q)=Σ(X) P(X)log {P(X)/Q(X)} 其中,約定0log(0/q)=0;plog(p/0)=oo(無窮),對應任意p>0.KL(P,Q)又稱P(X)和Q(X)之間的KL散度。但嚴格來講它不是一個真正意義上的距離,因為KL(P,Q)!=KL(Q,P)。 定理4-2:設P(X)和Q(X)為定義在某個變數X的狀態空間上的兩個概率分佈,則有: KL(P,Q)>=0, 其中,當且僅當P與Q相同,即P(X=x)=Q(X=x),等號成立
推論:對應滿足Σf(X)>0的非負函式f(X),定義概率分佈P*(X)為: P*(X)=f(X)/Σf(X) 那麼,對於任意其他的概率分佈P(X),則有:
Σf(X)logP*(X) >= Σf(X)logP(X)
其中,當且僅當P*和P相同時等號成立。