1. 程式人生 > >讀《數學之美》第三章 統計語言模型

讀《數學之美》第三章 統計語言模型

其它 bigram 利用 理解 googl track 推斷 art google

自然語言從產生開始。逐漸演變為一種基於上下文相關的信息表達和傳遞方式,在計算機處理自然語言時,一個最主要的問題就是為自然語言上下文相關的特性建立數學模型,叫做統計語言模型(Statistical Language Model)。它是自然語言處理的基礎。廣泛應用於機器翻譯、語音識別、印刷體或手寫體識別、拼音糾錯、漢字輸入和文獻查詢等。

對於一句通順的話<1>。假設改變一些詞的順序,或替換掉一些詞<2>,它的意思就含糊了,假設隨機打亂<3>,則全然不知所雲了。對於<1>表明是句子合乎語法、詞義清晰。對於<2>則雖不符合語法,但詞義還算清晰。對於<3>則詞義都不清晰了。上個世紀七十年代曾經,科學家就是通過推斷文字序列是否合乎文法、含義是否正確等進行自然語言處理的。

賈裏尼克換了一個角度。用簡單的統計模型非常美麗的攻克了這個問題:一個句子是否合理,就看這個句子出現的概率大小怎樣,概率大則說明比較合理。概率小則說明句子不合理。

如果S為某一個句子,由一連串特定順序排列的詞w1,w2,w3,...,wn構成,n為S的句子長度。p(S) = p(w1,w2,w3,...,wn) = p(w1) x p(w2|w1) x p(w3|w1, w2) x ... x p(wn|w1, w2, w3,...,wn-1) 。即p(w1)表示w1這個詞出現的概率,p(w2|w1)表示詞w2在詞w1之後出現的概率。以此類推。

從計算上講。計算一個詞出現的條件概率p(w1)比較簡單,第二個詞出現的條件概率p(w2|w1)也還不算麻煩,第三個詞的條件概率p(w3|w1, w2)已經很難算了。由於涉及到三個變量w1-w2-w3,每一個詞的可能性都是一個語言詞典的大小,到了最後一個詞wn,條件概率基本上無法估算了。

俄國數學家馬爾可夫提出了一種簡化模型:馬爾可夫模型。大體的意思是某一時刻的狀態僅僅與前一時刻的狀態有關。而與其它時刻無關。用於統計語言模型中,可表述為詞wi僅僅與它前一個詞wi-1有關,而與其它詞無關,這樣概率模型採用馬爾可夫模型之後得到:p(S) = p(w1,w2,w3,...,wn) = p(w1) x p(w2|w1) x p(w3|w2) x ... x p(wn|wn-1)。這就是統計語言模型的二元模型(Bigram Model)。如果如果一個詞由它前面N-1個詞決定,則被稱為N元模型。

那麽剩下的就是怎樣預計條件概率p(wi|wi-1)了:

(1) 選擇大量合適的語料庫(機讀文本),數量為#;

(2) 統計詞wi-1出現的次數#(wi-1)。

(3) 統計詞wi-1,wi前後相鄰出現的次數#(wi-1,wi)。

(4) 計算詞語二元組的相對頻度:f(wi-1) = #(wi-1)/#。f(wi-1,wi) = #(wi-1,wi)/#。

(5) 依據大數定理,僅僅要統計量足夠。相對頻度等於概率。則p(wi-1) ≈ #(wi-1)/#。p(wi-1,wi) ≈ #(wi-1,wi)/#。

(6) 依據條件概率公式計算條件概率p(wi|wi-1) = p(wi-1,wi)/p(wi-1) = #(wi-1,wi)/#(wi-1)。

上面僅僅是一個非常粗略的流程描寫敘述,對於真正實現一個好的統計語言模型,還須要有非常多的問題解決:

(1) 零概率問題

假設某個詞在語料庫中沒有出現或僅僅出現一兩次怎麽辦?還能利用大數定理進行分析嗎?

(2) 句子中詞僅僅與前一個詞相關似乎過於簡化了吧?

高階語言模型,階數多少最合適?

(3) 語料庫的設計

怎樣依據詳細應用選擇最合適的語料庫,噪音的考量等。


總結

統計語言模型在形式上非常easy,easy理解。卻學問頗深。前面講到Google的機器翻譯項目Rosetta(羅塞塔:源於羅馬帝國時期在羅塞塔這個地方發現了一塊古埃及石碑,用三種語言埃及象形文字、埃及的拼音文字和古希臘文記錄了古埃及的早期歷史。因此,今天非常多的翻譯軟件和服務都叫做羅塞塔)在07年美國標準局主持下的機器翻譯系統測評中一舉奪魁就體現了統計語言模型的強大功力。

*****************************************************************

2015-8-6

讀《數學之美》第三章 統計語言模型