語言模型
聯合概率
給定文本序列 x 1 , ? , x t x_1,\cdots,x_t x1?,?,xt?,語言模型的目標是估計聯合概率 P ( x 1 , ? , x t ) P(x_1,\cdots,x_t) P(x1?,?,xt?). 這里的 x t x_t xt? 可以認為是文本序列在時間步 t t t 處的觀測或標簽,而所謂聯合概率指的是一個句子的整體概率,即句子中所有單詞相繼出現的概率。
語言模型的用處:可以在語音識別上解決同音句歧義問題和斷句問題。
語言建模
根據上一節中的序列模型的分析,有基礎概率規則: P ( x 1 , x 2 , ? , x T ) = ∏ t = 1 T P ( x t ∣ x 1 , ? , x t ? 1 ) P(x_1,x_2,\cdots,x_T)=\prod_{t=1}^TP(x_t|x_1,\cdots,x_{t-1}) P(x1?,x2?,?,xT?)=t=1∏T?P(xt?∣x1?,?,xt?1?)例如一個四個單詞的文本序列的概率表示為: P ( d e e p , l e a r n i n g , i s , f u n ) = P ( d e e p ) P ( l e a r n i n g ∣ d e e p ) P ( i s ∣ d e e p , l e a r n i n g ) P ( f u n ∣ d e e p , l e a r n i n g , i s ) P(deep,learning,is,fun)=P(deep)P(learning|deep)P(is|deep,learning)P(fun|deep,learning,is) P(deep,learning,is,fun)=P(deep)P(learning∣deep)P(is∣deep,learning)P(fun∣deep,learning,is)
為了訓練語言模型,我們需要計算單詞的概率, 以及給定前面幾個單詞后出現某個單詞的條件概率。 這些概率本質上就是語言模型的參數。
計數建模
最容易想到的方法是統計單詞(詞元)在數據集中出現的次數,然后除以整個語料庫的單詞總數。例如: P ( l e a r n i n g ∣ d e e p ) = n ( d e e p , l e a r n i n g ) n ( d e e p ) P(learning|deep)=\frac{n(deep,learning)}{n(deep)} P(learning∣deep)=n(deep)n(deep,learning)? 其中 n ( x ) , n ( x , x ‘ ) n(x),n(x,x`) n(x),n(x,x‘) 分別表示單個單詞和連續單詞出現次數。
這種方法在一些高頻詞上表現的不錯,但是在一些低頻詞和長句多單詞組合的情況表現不佳,因為可能語料庫中這樣的數據很少,即使提出了一些解決辦法如拉普拉斯平滑(通過計數中添加小常量),但仍不能解決該問題。
馬爾可夫模型與n元語法
當單純使用計數法時可能存在長單詞序列樣本極少導致 n ( x 1 , ? , x t ) ≤ 1 n(x_1,\cdots,x_t)\leq1 n(x1?,?,xt?)≤1 的情況。回憶上一章序列模型中提到的馬爾可夫模型,將其用于語言建模。
我們可以不用考慮整個序列模型,而是只用考慮長度為 τ \tau τ 的時間跨度,還是以長度為 4 4 4 的句子的聯合概率舉例。
一元語法 τ = 0 \tau = 0 τ=0:不用考慮單詞之間的聯系,只考慮互相獨立概率,這樣前后文之間無關聯的語法并不適用時序的模型。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ) = n ( x 1 ) n ( x 2 ) n ( x 3 ) n ( x 4 ) n 4 P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2)P(x_3)P(x_4)=\frac{n(x_1)n(x_2)n(x_3)n(x_4)}{n^4} P(x1?,x2?,x3?,x4?)=P(x1?)P(x2?)P(x3?)P(x4?)=n4n(x1?)n(x2?)n(x3?)n(x4?)?
二元語法:只與前一個詞元有關。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P ( x 4 ∣ x 3 ) P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2|x_1)P(x_3|x_2)P(x_4|x_3) P(x1?,x2?,x3?,x4?)=P(x1?)P(x2?∣x1?)P(x3?∣x2?)P(x4?∣x3?)
通常,涉及一個、兩個和三個變量的概率公式分別被稱為一元語法(unigram)、二元語法(bigram)和三元語法。 n n n 元語法模型最大好處在于:在處理比較長的序列時可以將所有長為 n n n 的子序列概率存下來,假設存下來所有情況的數量為 k k k,那么之后查詢時復雜度固定為 O ( k ) O(k) O(k) 而不用遍歷整個文本 O ( n ) O(n) O(n).