语言模型

**統計式的語言模型**是一個機率分佈，給定一個長度為 $m$ 的字詞所組成的字串 $w_{1},w_{2},...,w_{m}$ ，派機率給字串： $P(w_{1},\ldots ,w_{m})$ 。

語言模型提供上下文來區分聽起來相似的單詞和短語。例如，短語「再給我兩份蔥，讓我把記憶煎成餅」和「再給我兩分鐘，讓我把記憶結成冰」聽起來相似，但意思不同。

語言模型經常使用在許多自然語言處理方面的應用，如語音識別，機器翻譯，詞性標註，句法分析，手寫體識別和資訊檢索。由於字詞與句子都是任意組合的長度，因此在訓練過的語言模型中會出現未曾出現的字串 (資料稀疏的問題)，也使得在語料庫中估算字串的機率變得很困難，這也是要使用近似的平滑 n - 元語法 (N-gram) 模型之原因。

在語音辨識和在資料壓縮的領域中，這種模式試圖捕捉語言的特性，並預測在語音串列中的下一個字。

在語音識別中，聲音與單詞序列相匹配。當來自語言模型的證據與發音模型和聲學模型相結合時，歧義更容易解決。

當用於資訊檢索，語言模型是與文件有關的集合。以查詢字「Q」作為輸入，依據機率將文件作排序，而該機率 $P(Q|M_{d})$ 代表該文件的語言模型所產生的語句之機率。

## 模型類型

### 單元語法（unigram）

一個單元模型可以看作是幾個單狀態有限自動機的組合。 它會分開上下文中不同術語的概率，比如將 $P(t_{1}t_{2}t_{3})=P(t_{1})P(t_{2}\mid t_{1})P(t_{3}\mid t_{1}t_{2})$ 拆分為 $P_{\text{uni}}(t_{1}t_{2}t_{3})=P(t_{1})P(t_{2})P(t_{3})$ .

在這個模型中，每個單詞的概率只取決於該單詞在文檔中的概率，所以我們只有一個狀態有限自動機作為單位。自動機本身在模型的整個詞彙表中有一個概率分布，總和為 1。下面是一個文檔的單元模型。

　
: $\sum _{\text{term in doc}}P({\text{term}})=1\,$

為特定查詢 (query) 生成的概率計算如下

　
: $P({\text{query}})=\prod _{\text{term in query}}P({\text{term}})$

不同的文檔有不同的語法模型，其中單詞的命中率也不同。不同文檔的概率分布用於為每個查詢生成命中概率。可以根據概率對查詢的文檔進行排序。兩個文檔的單元模型示例:

在信息檢索環境中，通常會對單語法語言模型進行平滑處理，以避免出現 P (term)= 0 的情況。一種常見的方法是為整個集合生成最大似然模型，並用每個文檔的最大似然模型對集合模型進行線性插值來平滑化模型。

### n - 元語法

在一個 n - 元語法模型中，觀測到序列 $w_{1},\ldots ,w_{m}$ 的概率 $P(w_{1},\ldots ,w_{m})$ 可以被近似為

　
: $P(w_{1},\ldots ,w_{m})=\prod _{i=1}^{m}P(w_{i}\mid w_{1},\ldots ,w_{i-1})\approx \prod _{i=1}^{m}P(w_{i}\mid w_{i-(n-1)},\ldots ,w_{i-1})$

此處我們引入馬爾科夫假設，一個詞的出現並不與這個句子前面的所有詞關聯，只與這個詞前的 n 個詞關聯（n 階馬爾科夫性質）。在已觀測到 i-1 個詞的情況中，觀測到第 i 個詞 wi 的概率，可以被近似為，觀測到第 i 個詞前面 n 個詞（第 i-(n-1) 個詞到第 i-1 個詞）的情況下，觀測到第 i 個詞的概率。第 i 個詞前 n 個詞可以被稱為 n - 元。

條件概率可以從 n - 元語法模型頻率計數中計算:

　
: $P(w_{i}\mid w_{i-(n-1)},\ldots ,w_{i-1})={\frac {\mathrm {count} (w_{i-(n-1)},\ldots ,w_{i-1},w_{i})}{\mathrm {count} (w_{i-(n-1)},\ldots ,w_{i-1})}}$

術語 二元語法 (**bigram**) 和三元語法 (**trigram**) 語言模型表示 n = 2 和 n = 3 的 _n_- 元 。

典型地，n - 元語法模型概率不是直接從頻率計數中導出的，因為以這種方式導出的模型在面對任何之前沒有明確看到的 n - 元時會有嚴重的問題。相反，某種形式的平滑是必要的，將一些總概率質量分配給看不見的單詞或 n - 元。使用了各種方法，從簡單的「加一」平滑 (將計數 1 分配給看不見的 n - 元，作為一個無信息的先驗) 到更複雜的模型，例如 Good-Turing discounting 或 back-off 模型。

#### 例子

在二元語法模型中 (_n_ = 2) , _I saw the red house_ 這個句子的概率可以被估計為

　
: ${\begin{aligned}&P({\text{I, saw, the, red, house}})\\\approx {}&P({\text{I}}\mid \langle s\rangle )P({\text{saw}}\mid {\text{I}})P({\text{the}}\mid {\text{saw}})P({\text{red}}\mid {\text{the}})P({\text{house}}\mid {\text{red}})P(\langle /s\rangle \mid {\text{house}})\end{aligned}}$

而在三元語法模型中，這個句子的概率估計為

　
: ${\begin{aligned}&P({\text{I, saw, the, red, house}})\\\approx {}&P({\text{I}}\mid \langle s\rangle ,\langle s\rangle )P({\text{saw}}\mid \langle s\rangle ,I)P({\text{the}}\mid {\text{I, saw}})P({\text{red}}\mid {\text{saw, the}})P({\text{house}}\mid {\text{the, red}})P(\langle /s\rangle \mid {\text{red, house}})\end{aligned}}$

注意前 n-1 個詞的 n - 元會用句首符號 
 填充。

### 指數型

最大熵語言模型用特徵函數編碼了詞和 n - 元的關係。

$$
P(w_{m}|w_{1},\ldots ,w_{m-1})={\frac {1}{Z(w_{1},\ldots ,w_{m-1})}}\exp(a^{T}f(w_{1},\ldots ,w_{m}))
$$

其中 $Z(w_{1},\ldots ,w_{m-1})$ 是分區函數, $a$ 是參數向量， $f(w_{1},\ldots ,w_{m})$ 是特徵函數。

在最簡單的情況下，特徵函數只是某個 n-gram 存在的指示器。使用先驗的 a 或者使用一些正則化的手段是很有用的。

對數雙線性模型是指數型語言模型的另一個例子。

## 外部連結

* LMSharp （頁面存檔備份，存於網際網路檔案館） - 開源統計語言模型工具包，支持 n-gram 模型（Kneser-Ney 平滑），以及反饋神經網絡模型（recurrent neural network model）