語言模型
一段自然語言文本可以看作是一個離散時間序列硅蹦,給定一個長度為TT的詞的序列w1,w2,…,wTw1,w2,…,wT颅悉,語言模型的目標(biāo)就是評估該序列是否合理嘀粱,即計算該序列的概率:
P(w1,w2,…,wT).P(w1,w2,…,wT).
本節(jié)我們介紹基于統(tǒng)計的語言模型,主要是nn元語法(nn-gram)爬迟。在后續(xù)內(nèi)容中,我們將會介紹基于神經(jīng)網(wǎng)絡(luò)的語言模型菊匿。
語言模型
假設(shè)序列w1,w2,…,wTw1,w2,…,wT中的每個詞是依次生成的付呕,我們有
P(w1,w2,…,wT)=∏t=1TP(wt∣w1,…,wt?1)=P(w1)P(w2∣w1)?P(wT∣w1w2?wT?1)P(w1,w2,…,wT)=∏t=1TP(wt∣w1,…,wt?1)=P(w1)P(w2∣w1)?P(wT∣w1w2?wT?1)
例如,一段含有4個詞的文本序列的概率
P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3).P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3).
語言模型的參數(shù)就是詞的概率以及給定前幾個詞情況下的條件概率跌捆。設(shè)訓(xùn)練數(shù)據(jù)集為一個大型文本語料庫徽职,如維基百科的所有條目,詞的概率可以通過該詞在訓(xùn)練數(shù)據(jù)集中的相對詞頻來計算佩厚,例如姆钉,w1w1的概率可以計算為:
P^(w1)=n(w1)nP^(w1)=n(w1)n
其中n(w1)n(w1)為語料庫中以w1w1作為第一個詞的文本的數(shù)量,nn為語料庫中文本的總數(shù)量。
類似的潮瓶,給定w1w1情況下陶冷,w2w2的條件概率可以計算為:
P^(w2∣w1)=n(w1,w2)n(w1)P^(w2∣w1)=n(w1,w2)n(w1)
其中n(w1,w2)n(w1,w2)為語料庫中以w1w1作為第一個詞,w2w2作為第二個詞的文本的數(shù)量毯辅。
n元語法
序列長度增加埂伦,計算和存儲多個詞共同出現(xiàn)的概率的復(fù)雜度會呈指數(shù)級增加。nn元語法通過馬爾可夫假設(shè)簡化模型思恐,馬爾科夫假設(shè)是指一個詞的出現(xiàn)只與前面nn個詞相關(guān)沾谜,即nn階馬爾可夫鏈(Markov chain of order?nn),如果n=1n=1胀莹,那么有P(w3∣w1,w2)=P(w3∣w2)P(w3∣w1,w2)=P(w3∣w2)基跑。基于n?1n?1階馬爾可夫鏈描焰,我們可以將語言模型改寫為
P(w1,w2,…,wT)=∏t=1TP(wt∣wt?(n?1),…,wt?1).P(w1,w2,…,wT)=∏t=1TP(wt∣wt?(n?1),…,wt?1).
以上也叫nn元語法(nn-grams)媳否,它是基于n?1n?1階馬爾可夫鏈的概率語言模型。例如栈顷,當(dāng)n=2n=2時逆日,含有4個詞的文本序列的概率就可以改寫為:
P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w1,w2,w3)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3)
當(dāng)nn分別為1、2和3時萄凤,我們將其分別稱作一元語法(unigram)室抽、二元語法(bigram)和三元語法(trigram)。例如靡努,長度為4的序列w1,w2,w3,w4w1,w2,w3,w4在一元語法坪圾、二元語法和三元語法中的概率分別為
P(w1,w2,w3,w4)P(w1,w2,w3,w4)P(w1,w2,w3,w4)=P(w1)P(w2)P(w3)P(w4),=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3),=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w2,w3).P(w1,w2,w3,w4)=P(w1)P(w2)P(w3)P(w4),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w2)P(w4∣w3),P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(w3∣w1,w2)P(w4∣w2,w3).
當(dāng)nn較小時,nn元語法往往并不準(zhǔn)確惑朦。例如兽泄,在一元語法中,由三個詞組成的句子“你走先”和“你先走”的概率是一樣的病梢。然而蜓陌,當(dāng)nn較大時,nn元語法需要計算并存儲大量的詞頻和多詞相鄰頻率飒责。
思考:nn元語法可能有哪些缺陷?
參數(shù)空間過大
數(shù)據(jù)稀疏
語言模型數(shù)據(jù)集
讀取數(shù)據(jù)集