精通Python自然語言處理 2 :統計語言建模

CopperDong發表於2018-05-28

程式碼

https://github.com/PacktPublishing/Mastering-Natural-Language-Processing-with-Python

1、理解單詞頻率

   詞的搭配可以被定義為傾向於並存的兩個或多個識別符號的集合。如The United States 

   Unigram(一元語法)代表單一識別符號:以下為Alpino語料庫生成unigrams

import nltk
from nltk.util import ngrams
from nltk.corpus import alpino
alpino.words()
# unigrams = ngrams(alpino.words(), 1)
quadgrams = ngrams(alpino.words(), 4)
for i in quadgrams:
	print(i)

     bigram(二元語法)。首先需要搜尋小寫單詞,把文字建立為小寫單詞列表後,然後建立BigramCollocation- Finder 例項。在nltk.metrics包中找到BigramAssocMeasures可用於在文字中查詢bigrams:

# -*- coding: utf-8
import nltk
from nltk.collocations import BigramCollocationFinder
from nltk.corpus import webtext
from nltk.metrics import BigramAssocMeasures
from nltk.corpus import stopwords
# 新增消除停止詞和標點符號的單詞過濾器
set = set(stopwords.words('english'))
stops_filter = lambda w: len(w) < 3 or w in set 
# 轉為小寫
tokens = [t.lower() for t in webtext.words('grail.txt')]
words = BigramCollocationFinder.from_words(tokens)
words.apply_word_filter(stops_filter)
print(words.nbest(BigramAssocMeasures.likelihood_ratio, 10))

      為給定的文字開發MLE:最大似然估計(Maximum Likelihood Estimate)也被稱為多元邏輯迴歸或條件指數分類器。在nltk.classify.maxent模組裡,所有的概率分佈被認為是與訓練資料保持一致的。該模型用於指代兩個特徵,即輸入特徵(未加標籤)和聯合特徵(加標籤)。MLE用於生成freqdist,包含了文字中給定識別符號出現的概率分佈。引數freqdist由作為概率分佈基礎的頻率分佈組成。

     為了獲取頻率分佈,可以使用最大似然估計。它基於各個識別符號在頻率分佈中的頻率來計算器概率。

     隱馬爾科夫模型估計

2、在MLE模型上應用平滑

      平滑(Smoothing)用於處理之前未曾出現過的單詞。因此,未知單詞的概率為0 。為了解決這個問題,我們用了平滑。

       加法平滑:

       Good Turing平滑:是一種有效的平滑方法,這種方法提高了用於執行語言學任務的統計技術的效能,例如詞義消歧、命名實體識別、拼寫矯正、機器翻譯等。此方法有助於預測未來物件的概率。

       Kneser Ney平滑:

       Witten Bell平滑:

3、為MLE開發一個回退機制

      Katz回退模型可以認為是一個具備高效生產力的n-gram語言模型,如果在n-gram中能夠給出一個指定識別符號的先前資訊,那麼該模型可以計算出其條件概率。

4、應用資料的插值以便獲取混合搭配

       使用加法平滑模型bigram的區域性是當我們處理罕見文字時就會回退到一個不可知的狀態。

5、通過複雜度來評估語言模型

       NLTK中的nltk.model.ngram模組有一個子模組perplexity(text)。

6、在語言建模中應用Metropolis-Hastings演算法

        在馬爾科夫鏈(Markov Chain Monte Carlo, MCMC)中有多種關於後驗概率的執行處理方法。一種方法是使用Mertorpolis-Hastings取樣器。為了實現,需要標準的均勻分佈、建議分佈和與後驗概率成正比的目標分佈。

7、在語言處理中應用Gibbs取樣法

       在Gibbs取樣法的幫助下,可以通過從條件概率中取樣建立Markov。


相關文章