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