一、拼寫糾正任務
1、拼寫任務
- 發現拼寫錯誤
- 糾正拼寫錯誤
- 自動糾正
- 給出糾正建議(一個詞)
- 給出糾正建議(一些詞)
2、拼寫錯誤的類型
- 拼寫出來的不是單詞(non-word spelling error):graffe→giraffe
- 拼寫出來的是另一個單詞
- 排字(Typographical )錯誤:three→there
- 認知錯誤(同音異形):too→two
3、拼寫出來的不是單詞的錯誤(non-word spelling error)
- 錯誤發現:預先有一個字典,任何不在字典中的單詞就是錯誤,字典越大越好
- 錯誤糾正:
- 生成修正可選項:和錯誤相似的實際單詞
- 選擇最好的那個
- 最短權重編輯距離
- 最高噪音通道(noisy channel)機率
4、拼寫出來是另一個單詞(real word spelling error)
- 對每一個單詞,w,生成一個候選集(candidate set)
- 找到發音相似的候選詞
- 找到拼寫相似的候選詞
- 把w也放在候選集中
- 選擇最好的候選詞
- 噪音通道
- 分類
二、拼寫的噪音通道(noisy channel)模型
1、噪音通道模型
- 初始想法:一開始初始單詞(original word)經過噪音通道(noisy channel)會生成噪音單詞(noisy word)。我們通過對噪音單詞的解碼得到猜測的單詞(guessed word)。
- 噪音通道模型:當我們拿到一個拼錯的單詞x的時候,我們可以利用下面的公式得到正确的w。
- P(w)表示語言模型
- P(x|w)表示通道模型(channel model)或者是錯誤模型(error model)
2、從拼寫出來的不是單詞的錯誤(non-word spelling error)開始
- 錯誤是:acress
- 候選詞生成(candidate generation)
- 相似拼寫的單詞:找到最小的編輯距離
- 相似發音的單詞:找到發音的最小的編輯距離
- 這裡選取相似拼寫來舉例子
- 編輯距離:我們采取Damerau-Levenshtein編輯距離
- 對兩個字元串而言,之間的基本編輯操作是:插入、删除、替換和兩個相鄰的字母的交換
- 以acress來舉例子來看編輯操作
- 80%的錯誤都是編輯距離為1的錯誤
- 所有的錯誤都是編輯距離為1或者2的錯誤
- 同時也包含連字元-和空格的插入
- thisday→ this day
- inlaw→in-law
- 語言模型
- 包含任何我們之前學習的語言模型算法,包括一進制、二進制、三元以及stupid backoff(針對web規模的拼寫糾正)
- 以acress的候選集舉例,來看他們的語言模型
- 通道模型機率
- 又稱錯誤(error model)模型機率,編輯(edit)機率
- 定義:
- 拼錯的單詞X=X1,X2,X3…Xm
- 糾正的單詞w=w1,w2,w3…wm
- P(X|w)表示編輯機率
- 計算:混淆矩陣
- 計算公式 其中, 對這四種編輯公式,我們分别構造混淆矩陣,一共是四個混淆矩陣,形如下圖
- 以acress舉例,通道模型計算如下
- 以acress舉例,噪音通道機率計算如下:
- 改進:使用二進制語言模型
- 在大部分的情境下,二進制模型會更準确
- 例子如下:
3、評估
我們可以利用一些拼寫錯誤測試集進行評估
三、拼寫出來是另一個單詞的錯誤糾正(real-word spelling correction)
1、解決方案
- 對句子中的每一個單詞
- 生成候選集,包含(單詞本身、同音異形詞,和原來的單詞之差一個字母編輯的單詞)
- 選擇最好的候選(用噪音通道,或者分類)
2、公式描述
- 給定一個句子包含一系列單詞w1,w2,w3,…,wn
- 對每個單詞都生成一系列的候選詞(candidate)
- 選擇一系列的單詞W使得P(W)最大
- 圖解如下:
3、化簡版:每個句子一個錯誤
- 假設句子裡面隻有一個單詞出現了錯誤,隻對一個單詞進行糾正
- 分别計算糾正過的機率,選擇機率最大的那個
4、如何确定機率
- 語言模型:一進制、二進制、等等
- 通道模型:和非單詞拼寫錯誤(non-word spelling correction)一樣,除此之外加上沒有發生錯誤的機率P(w|w)
- P(w|w)的計算
- 一個計算的例子
四、一些改進
1、人機互動的拼寫問題
- 如果對糾正很有自信:自動糾正
- 次之,給出最好的糾正
- 次之,給出糾正清單
- 次之,示意出現了錯誤
2、噪音通道的改進
- 不應該直接将先驗和錯誤的模型相乘,這樣的理論基礎是獨立假設。但是實際上先驗機率放在這裡是不合适的。
- 是以,取而代之的公式應該是這樣:
- 我們可以從一個發展測試集(development test set)來學習lamdba