自然語言處理複習彙總(南京大學)

自然語言處理複習彙總(南京大學)

標籤(空格分隔): 自然語言處理
參考書籍:統計自然語言處理–宗成慶
該文檔用markdown編寫,github地址爲https://github.com/lyfadvance/nlp/blob/master/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E5%A4%8D%E4%B9%A0%E6%96%87%E6%A1%A3.md
如果想繼續編寫,可以fork


統計語言模型

N-Gram

N-1階馬爾可夫鏈我們稱之爲N元語言模型

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)wCount(wi1w)

Count(wi1wi) 由於稀疏性,值可能等於0.從而導致整個句子的概率都等於0

進行平滑處理:

線性平滑:

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)+αw(Count(wi1w)+α)

laplace 平滑:

P(wi|wi1)=P(wi1wi)P(wi1)=Count(wi1wi)+kP(w)(wCount(wi1w))+k

簡單線性插值平滑:

Neural language model

word2vector

文本分類

樸素貝葉斯模型

D爲待分類的文檔,ck 指第k個類別

argmaxckP(ck|D)=argmaxckP(D|ck)P(ck)P(D)=argmaxckP(D|ck)P(ck)

1. Bernoulli document model(伯努利文檔模型)

一個文檔被表示成01向量.向量中每一個元素表示相應的單詞是否在文檔中出現了
Di 表示第i個文檔的01向量

Dit 表示第i個文檔的01向量中第t個元素的值,即單詞wt 是否在文檔i中出現了
P(wt|ck) 表示單詞wt 在類別ck 中出現的文檔數的佔比.

P(wt|ck)=ckwtck

P(Dit|ck)=DitP(wt|ck)+(1Dit)(1P(wt|ck))

P(Di|Ck)=|V|t=1P(Dit|ck)

2. Multinomial document model

一個文檔被表示成整數向量.向量中每一個元素表示相應的單詞在文檔中出現了多少次

Di 表示第i個文檔的向量

Dit 表示第i個文檔的向量中第t個元素的值

P(wt|ck) 表示單詞wt 在類別ck 中出現的文檔數的佔比.

訓練句向量

一般來講每一個類別ck 也可以看成一個向量,記爲f(ck)

文本Di 也表示成向量w

訓練句向量也就是訓練打分模型score(w,f(ck))

可以根據這個設計各種loss函數。用SVM的loss函數訓練

文本或句子向量化

詞袋模型

0-1向量

N-Gram Bag-of-Words

Vocab = set of all n-grams in corpus

Document = n-grams in document w.r.t vocab with multiplicity

For bigram:

Sentence 1: “The cat sat on the hat”

Sentence 2: “The dog ate the cat and the hat”

Vocab = { the cat, cat sat, sat on, on the, the hat, the dog, dog ate, ate the, cat and, and the}

Sentence 1: { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}

Sentence 2 : { 1, 0, 0, 0, 0, 1, 1, 1, 1, 1}

TF-IDF

TF(詞頻)

(TF)=

IDF(逆文檔頻率)

(IDF)=log+1

特徵過濾

  • 停用詞
  • 基於文檔頻率(DF)的特徵提取法
    從訓練預料中統計出包含某個特徵的文檔的頻率(個數),然後根據設定的閾值,當該特徵項的DF值小於某個閾值時,從特徵空間中去掉該特徵項,因爲該特徵項使文檔出現的頻率太低,沒有代表性;當該特徵項的DF值大於另外一個閾值時,從特徵空間中也去掉該特徵項,因爲該特徵項使文檔出現的頻率太高,沒有區分度
  • 信息增益法
    信息增益(IG)法依據某特徵項ti 爲整個分類所能提供的信息量多少來衡量該特徵項的重要程度,從而決定對該特徵項的取捨。某個特徵項ti 的信息增益是指有該特徵或沒有該特徵時,爲整個分類所能提供的信息量的差別,其中,信息量的多少由熵來衡量。因此,信息增益即不考慮任何特徵時文檔的熵和考慮該特徵後文檔的熵的差值:
    Gain(ti)=Entropy(S)Expected Entropy(Sti)={j=1MP(Cj)logP(Cj)}{P(ti)[j=1MP(Cj|ti)logP(Cj|ti)]   +P(ti¯)[j=1MP(Cj|ti¯)logP(Cj|ti¯)]}

    其中P(Cj) 表示Cj 類文檔在預料中出現的概率,P(ti) 表示語料中包含特徵項ti 的文檔的概率,P(Cj|ti) 表示文檔包含特徵項ti 時屬於Cj 類的條件概率,P(ti¯) 表示語料中不包含特徵項ti 的文檔的概率,P(Cj|ti¯) 表示文檔不包含特徵項ti 時屬於Cj 的條件概率,M 表示類別數
  • mutual information(互信息法)
  • χ2 統計量

Distributional similarity-based representations

  • LSI
  • First Propose
  • Word2vec
  • Doc2Vec

詞性標註與隱馬爾科夫模型

維特比算法和算法

A 是狀態轉移概率矩陣

B 是觀測概率矩陣

π 是初始狀態概率向量

隱馬爾科夫模型的三個基本問題

  • 概率計算問題。給定模型λ=(A,B,π) 和觀測序列O=(o1,o2,...,oT) ,計算在模型λ 下觀測序列O 出現的概率P(O|λ)
  • 學習問題.已知觀測序列O=(o1,o2,...,oT) .估計模型λ=(A,B,π) 參數,使得在該模型下觀測序列概率P(O|λ) 最大.即用極大似然估計的方法估計參數.
  • 預測問題,也稱爲解碼(decoding)問題。已知模型λ=(A,B,π) 和觀測序列O=(o1,o2,...,oT) ,求對給定觀測序列條件概率P(I|O) 最大的狀態序列I=(i1,i2,...,iT) .即給定觀測序列,求最有可能的對應的狀態序列.

問題1:

前向算法.

定義前向概率:

給定隱馬爾科夫模型λ ,定義到時刻t 部分觀測序列爲o1,o2,...,ot 且狀態爲qi 的概率爲前向概率,記作

αt(i)=P(o1,o2,...,ot,it=qi|λ)

輸入:隱馬爾科夫模型λ ,觀測序列O

輸出:觀測序列概率P(O|λ)

(1) 初值

α1(i)=πibi(o1),i=1,2,...,N

(2) 遞推 對t=1,2,…,T-1

αt+1(i)=j=1Nαt(j)ajibi(ot+1),i=1,2,...N

(3) 終止

P(O|λ)=i=1NαT(i)

(4)最優路徑回溯

後向算法:

定義後向概率:

給定隱馬爾科夫模型λ ,定義在時刻t 狀態爲qi 的條件下,從t+1T 的部分觀測序列爲ot+1,ot+2,...,oT 的概率爲後向概率,記作

βt(i)=P(ot+1,ot+2,...,oT|it=qi,λ)

輸入:隱馬爾可夫模型λ ,觀測序列O :

輸出:觀測序列概率P(O|λ)

(1)

βT(i)=1,i=1,2,...,N

(2)對t=T1,T2,...,1

βt(i)=j=1Naijbj(ot+1)βt+1(j),i=1,2...N

(3)

P(O|λ)=i=1Nπibi(o1)β1(i)

問題2

Baum-Welch算法(無監督學習方法)

假設給定訓練數據只包含S 個長度爲T 的觀測序列O1,O2,...,OS 而沒有對應的狀態序列,目標是學習隱馬爾科夫模型λ=(A,B,π) 的參數。我們將觀測序列數據看做觀測數據O ,狀態序列數據看做不可觀測的隱數據I ,那麼隱馬爾科夫模型事實上是一個含有隱變量的概率模型

P(O|λ)=IP(O|I,λ)P(I|λ)

它的參數學習可以由EM 算法實現

參數估計問題是HMM面臨的第三個問題,即給定一個觀察序列O=O1O2...OT ,如何調節模型u=(A,B,π) 的參數,使得P(O|u) 最大化:

argmaxuP(Otraining|u)

模型的參數是指構成uπi,aij,bj(k) .最大似然估計方法可以作爲HMM參數估計的一種選擇。如果產生觀察序列O 的狀態序列Q=q1q2...qT 已知,根據最大似然估計,HMM的參數可以通過如下公式計算:
π¯i=δ(q1,si)

a¯ij=QqiqjQqi(qi)=T1t=1δ(qt,si)δ(qt+1,sj)T1t=1δ(qt,si)

b¯j(k)=QqjvkQqj

但實際上,由於HMM中的狀態序列Q是觀察不到的(隱變量),因此,這種最大似然估計的方法不可行。所幸的是,期望最大化(expectation maximization,EM)算法可以用於含有隱變量的統計模型的參數最大似然估計。其基本思想是,初始時隨機地給模型的參數賦值,該複製遵循模型對參數的限制,例如,從某一狀態出發的所有轉移概率的和爲1。給模型參數賦初值以後,得到模型u0 ,然後,根據u0 可以得到模型中隱變量的期望值。例如,從u_0得到從某一狀態轉移到另一狀態的期望次數,用期望次數來替代上式中的實際次數,這樣可以得到模型參數的新估計值,由此得到新的模型u1 .從u1 又可以得到模型中隱變量的期望值,然後,重新估計模型的參數,執行這個迭代過程,知道參數收斂於最大似然估計值.

問題3

維特比算法:

其實就是前向算法的變種形式

輸入:隱馬爾科夫模型λ ,觀測序列O

輸出:最優路徑I=(i1,i2,...,iT)

(1) 初值

α1(i)=πibi(o1),i=1,2,...,N

ψ1(i)=0

(2) 遞推 對t=1,2,…,T-1

αt+1(i)=max1jNj=1Nαt(j)ajibi(ot+1),i=1,2,...N

ψt+1(i)=argmax1jNj=1Nαt(j)aji,i=1,2,...N

(3) 終止

P=max1iNαT(i)

iT=argmaxiiNαT(i)

統計語義分析

PCFG,概率上下文無關文法

三個基本問題
- 給定一個句子W=w1w2...wn 和文法G ,如何快速計算概率P(W|G)
- 給定一個句子W=w1w2...wn 和文法G ,如何選擇該句子的最佳結構?即選擇句法結構樹t 使其具有最大概率:argmaxtP(t|W,G)
- 給定PCFG G和句子W=w1w2...wn ,如何調節G的概率參數,使句子的概率最大?即求解argmaxGP(W|G)

問題1:

內向算法和外向算法:

內向算法的基本思想是:利用動態規劃算法計算非終結符A 推導出W 中子串wiwi+1...wj 的概率aij(A)

有遞推公式如下:

aii(A)=P(A>wi)

aij(A)=B,Cikj1P(A>BC)aik(B)a(k+1)j(C)

算法如下:

輸入:PCFG G(S)和句子W=w1w2...wn

輸出:aij(A),1ijn

步1 初始化:aii(A)=P(Awi),1in

步2 歸納計算:j=1...n,i=1...nj ,重複下列計算:

ai(i+j)(A)=B,Ciki+j1P(ABC)aik(B)a(k+1)(i+j)(C)

步3 終結:P(Sw1w2...wn)=a1n(S)

外向算法的基本思想是:

定義外向變量βij(A) 爲初始非終結符S 在推導出語句W=w1w2...wn 的過程中,產生符號串w1...wi1Awj+1...wn 的概率

有如下遞推公式:

β1n(A)={10A=SAS

βij(A)=B,Ck>jP(BAC)α(j+1)k(C)βik(B)   +B,Ck<iP(BCA)αk(i1)(C)βkj(B)

問題2:
就是將內向算法的遞推式取最大
aii(A)=P(Awi)

aij(A)=argmaxB,CN;iki+jP(ABC)aik(B)a(k+1)j(C)

然後用變量βij 記憶子串wi...wj 的維特比句法分析樹

βij(A)=argmaxB,CN;iki+jP(ABC)aik(B)a(k+1)j(C)

Treebank

Chomsky Normal Form

統計機器翻譯

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