核心概念#
自然語言的上下文相關特性,可以透過統計語言模型(Statistical Language Model)來建立數學模型。這個模型是今天所有自然語言處理的基礎,廣泛應用於機器翻譯、語音識別、拼寫糾錯、漢字輸入和文獻查詢。
用數學的方法描述語言規律#
賈里尼克(Jelinek)的核心思路非常簡單:判斷一個句子是否合理,就看它出現的可能性大小,用概率來衡量。
- 假設句子 $S$ 由詞 $w_1, w_2, \ldots, w_n$ 組成,句子的概率為 $P(S) = P(w_1, w_2, \ldots, w_n)$
- 利用條件概率展開:$P(S) = P(w_1) \cdot P(w_2|w_1) \cdot P(w_3|w_1, w_2) \cdots P(w_n|w_1, \ldots, w_{n-1})$
- 直接計算所有條件概率不可行,因此引入馬爾可夫假設:每個詞的出現只與前面一個詞有關,即 $P(w_i|w_1, \ldots, w_{i-1}) \approx P(w_i|w_{i-1})$
- 對應的模型稱為二元模型(Bigram Model),更一般地,假設與前 $N-1$ 個詞有關的稱為 N 元模型(N-Gram Model)
條件概率 $P(w_i|w_{i-1})$ 的估算非常簡單:只需從大量語料庫中統計詞對 $(w_{i-1}, w_i)$ 的共現次數,除以 $w_{i-1}$ 出現的次數即可,即 $P(w_i|w_{i-1}) \approx \frac{#(w_{i-1}, w_i)}{#(w_{i-1})}$。
書中舉了三個統計語言模型的成功案例:李開復用它將語音識別簡化為 997 個詞的識別問題;Google 的羅塞塔翻譯系統依靠語言模型在 NIST 評測中一鳴驚人;以及利用大數據讓計算機自動回答問題。
延伸閱讀:統計語言模型的工程訣竅#
高階語言模型#
- 實際中最常用的是 $N = 3$ 的三元模型,更高階的模型因參數空間呈指數增長($O(|V|^N)$),訓練代價過高而很少使用
- 馬爾可夫假設的局限性在於無法捕捉長程依賴(Long Distance Dependency)
零概率問題和平滑方法#
- 語料庫中未出現的詞對會導致條件概率為零,稱為模型「不平滑」
- 古德-圖靈估計(Good-Turing Estimate):從概率總量中分配一小部分給未見事件,對已見事件的概率適當下調
- 估計二元模型概率時,出現次數超過閾值 $T$ 的直接用相對頻度,低於 $T$ 的用古德-圖靈估計打折,未出現的分配剩餘概率
- 卡茨退避法(Katz Backoff)與刪除差值(Deleted Interpolation)是常見的平滑方法,後者用低階模型和高階模型的線性插值來達到平滑
語料的選取#
- 訓練數據應與應用數據領域一致,例如搜索引擎的語言模型應用網頁數據訓練,而非新聞稿
- 訓練數據中的噪音需要適當過濾,但數據量與領域匹配比「乾淨」更重要
本章小結#
統計語言模型在形式上非常簡單,卻能將複雜的語音識別、機器翻譯等問題化繁為簡。數學的魅力就在於用簡單的模型就可以幹大事。