在9.2 節(jié)中,我們將看到如何將文本序列映射到標(biāo)記中,其中這些標(biāo)記可以被視為一系列離散的觀察結(jié)果,例如單詞或字符。假設(shè)文本序列中的標(biāo)記長(zhǎng)度T依次是 x1,x2,…,xT. 語言模型的目標(biāo)是估計(jì)整個(gè)序列的聯(lián)合概率:
其中可以應(yīng)用第 9.1 節(jié)中的統(tǒng)計(jì)工具。
語言模型非常有用。例如,一個(gè)理想的語言模型將能夠自行生成自然文本,只需一次繪制一個(gè)標(biāo)記即可 xt~P(xt∣xt?1,…,x1). 與使用打字機(jī)的猴子完全不同,從這種模型中出現(xiàn)的所有文本都將作為自然語言傳遞,例如英文文本。此外,只需在先前的對(duì)話片段上調(diào)節(jié)文本,就足以生成有意義的對(duì)話。顯然,我們離設(shè)計(jì)這樣一個(gè)系統(tǒng)還有很長(zhǎng)的路要走,因?yàn)樗枰?/font>理解文本,而不僅僅是生成語法合理的內(nèi)容。
盡管如此,語言模型即使在其有限的形式下也能提供很好的服務(wù)。例如,“to recognize speech”和“to wreck a nice beach”這兩個(gè)短語聽起來非常相似。這可能會(huì)導(dǎo)致語音識(shí)別中出現(xiàn)歧義,這很容易通過一種語言模型來解決,該模型拒絕將第二種翻譯認(rèn)為是古怪的。同樣,在文檔摘要算法中,值得知道“狗咬人”比“人咬狗”更頻繁,或者“我想吃奶奶”是一個(gè)相當(dāng)令人不安的陳述,而“我想吃,奶奶”要溫和得多。
import tensorflow as tf
from d2l import tensorflow as d2l
9.3.1. 學(xué)習(xí)語言模型
顯而易見的問題是我們應(yīng)該如何對(duì)文檔甚至一系列標(biāo)記進(jìn)行建模。假設(shè)我們?cè)趩卧~級(jí)別標(biāo)記文本數(shù)據(jù)。讓我們從應(yīng)用基本概率規(guī)則開始:
例如,包含四個(gè)單詞的文本序列的概率為:
9.3.1.1. 馬爾可夫模型和n-克
在9.1節(jié)的序列模型分析中,我們將馬爾可夫模型應(yīng)用到語言建模中。序列上的分布滿足一階馬爾可夫性質(zhì),如果 P(xt+1∣xt,…,x1)=P(xt+1∣xt). 更高的階數(shù)對(duì)應(yīng)更長(zhǎng)的依賴關(guān)系。這導(dǎo)致我們可以應(yīng)用一些近似值來對(duì)序列建模:
評(píng)論