1. 程式人生 > >自然語言處理(三)語言模型

自然語言處理(三)語言模型

文章目錄

語言模型基本概念

用數學的方法描述語言規律,即用句子 S =

w 1 , w 2 w n
S = w_1,w_2\dots w_n 的概率 p ( S ) p(S) 刻畫句子的合理性.

對語句合理性判斷:

  • 規則法:判斷是否合乎語法、語義(定性分析)
  • 概率統計法:通過可能性大小來判斷(定量計算)

模型思想
p ( S ) = p ( w 1 ) p ( w 2 w 1 ) p ( w n w 1 w n 1 ) = i = 1 n p ( w i w 1 w 1 ) p(S) = p(w_1)p(w_2|w_1)\dots p(w_n|w_1\dots w_{n-1}) = \sum_{i=1}^np(w_i|w_1\cdots w_{-_1})
i = 1 i=1 時, p ( w 1 w 0 ) = p ( w 1 ) p(w_1|w_0) = p(w_1)

輸入:句子S

輸出:句子概率 p ( S ) p(S)

引數 p ( w i w 1 , w i 1 ) p(w_i|w1,\dots w_{i-1})

計算第 i i 個統計基元,如果共有 L L 個不同的基元,那麼第 i i 個基元將會有 L i L^i 種不同的歷史情況. 如果L=5000, m=3,引數的數目將達到1250億!而一個漢語句子平均有有22個詞/字!

解決方法
採用馬爾可夫方法:假設任意一個詞 w i w_i 出現的概率只與它前面的 w i 1 w_{i-1} 有關.

n元文法(n-gram)

一個詞有前面的n-1個詞決定.

理論上,n越大越好,但同樣引數也會增多,通常採用3元文法.

語言模型引數估計

引數估計

通過模型訓練獲取模型中所有的模型引數即條件概率.

引數的學習方法:最大似然估計MLE

由於語料是有限的,不可能包含所有可能出現的詞的組合,因此在必然存在零概率問題.

資料平滑

基本思想

調整最大似然估計的概率值,使零概率增加,非零概率下調.

基本目標

測試樣本的語言模型越小越好

基本約束:

w j p ( w i w 1 , w 2 w i 1 ) = 1 \sum_{w_j}p(w_i|w_1,w_2\dots w_{i-1})=1

方法

  • 加1法

    每一種情況出現的次數都加1

  • 減值法/折扣法

    修改訓練樣本中事件的實際技術,使樣本中的事件概率之和小於1,剩餘的概率分配給未見概率.

    Good-Turing、Back-off、絕對減值、線性減值

  • 刪除插值法

    用低階文法估計高階文法,即當3-gram的值不能從訓練資料中估計時,採用2-gram代替.

效能評價

  1. 實用方法

  2. 理論方法

    計算模型對於測試樣本的困惑度,n-gram對於英文文字的困惑度一般為50~10000,對應於交叉熵範圍為6-10bits/word.

語言模型應用

  1. 計算句子概率
  2. 給定若干詞,預測下一個詞

改進的語言模型

n-gram存在的問題

  1. 對語料敏感,訓練引數難以反映不同領域之間語言規律上的差異.
  2. 某些在文字中很少出現,但在某區域性文字中大量出現的情況.

基於快取的語言模型

在文字中剛剛出現過的詞在後邊的句子中再次出現的可能性往往較大,比標準的n-gram模型預測的概率要大.

自適應方法

  • 將k個最近出現過的詞存於一個快取中,作為獨立的訓練資料.
  • 通過這些資料,計算動態頻度分佈資料.
  • 將動態頻度分佈資料與靜態分佈資料通過線性插值的方法結合
    p ^ c a c h e ] ( w i w 1 i 1 ) = 1 / K j = i k i 1 I w j = w i p ^ ( w i w 1 i 1 ) = λ p ^ c a c h e ( w i w 1 i 1 ) + ( 1 λ ) p ^ n g r a m ( w i w i n + 1 i 1 ) \hat{p}_{}cache](w_i|w_1^{i-1}) = 1/K\sum_{j=i-k}^{i-1}I_{w_j=w_i}\\ \hat{p}(w_i|w_1^{i-1}) = \lambda\hat{p}_{cache}(w_i|w_1^{i-1}) + (1-\lambda)\hat{p}_{n-gram}(w_i|w_{i-n+1}^{i-1})
    其中, 0 < λ < 1 0<\lambda<1 ,為插值係數,可以通過EM演算法求得.

基於混合方法的語言模型

大規模訓練語料來自不同領域,在主體、風格都有一定的差異,而測試預料通常是同源的,為了獲得最佳效能,語言模型必須適應各種不同型別的語料對齊效能的影響.

自適應方法

  • 將訓練語料聚為n類,語言模型劃分成n個子模型.
  • 確定適當的訓練語料子集,並利用這些預料建立特定的語言模型.
  • 在模型執行時識別測試預料的主題或主題的集合.
  • 整個語言模型的概率通過下面的線性插值公式計算得到.
    p ^ ( w i w 1 i 1 ) = j