在多種應用比如word中都有拼寫檢查和校正功能,具體步驟分為:
- 拼寫錯誤檢測
- 拼寫錯誤校正:
- 自動校正:hte -> the
- 建議一個校正
- 建議多個校正
拼寫錯誤類型:
- Non-word Errors非詞錯誤:即寫了一個不是單詞的詞,比如graffe並不存在,應校正為giraffe
- 檢測方法:認為任一不在字典中的詞都是一個非詞錯誤,因此字典本身越大越好
- 校正方法:為錯誤詞產生一個候選,其是跟錯誤詞相似的真詞,然后選擇加權編輯距離最短或者信道噪聲概率最高的那個詞。
- Real-word Errors真詞錯誤:
- 印刷錯誤:three->there
- 認知錯誤(同音異形字):piece -> peace; too -> two
- 檢測方法:由於每個真詞可能都是一個錯誤詞,因此我們為每個詞都產生一個候選集,包括該詞本身、跟該詞發音或拼寫相似的詞(編輯距離為1的英文單詞)、同音異形詞。
- 校正方法:按照信道噪聲或者分類器選擇最好的候選詞。
一、非詞錯誤校正
基本方法:使用The Noisy Channel Model of Spelling信道噪聲模型

假設初始詞經過一個噪聲信道輸出一個噪聲詞,即為可能的錯誤詞,我們旨在對該噪聲信道建模,從而使得在解碼階段能夠根據噪聲詞得到一個猜測詞,其跟初始詞一致,即找到錯誤詞正確的拼寫。
而信道噪聲我們視之為一個概率模型,如下:
輸入:一個錯誤詞x
旨在:找到一正確的詞w
要求:

P(w)稱為語言模型表示單詞w為一個單詞的概率,P(x|w)稱為信道概率(或錯誤概率)表示如果是w,x是w拼錯的詞的概率。
例子:
設:有一個錯誤詞“acress”
1. 產生候選詞:
- 相似拼寫詞:跟錯誤詞之間小的編輯距離
- 采用Damerau-Levenshtein edit distance,計算的操作包括:插入、刪除、置換和兩個相鄰字母之間的換位transposition,
- 以下是與“acress”編輯距離=1的列表:

- 80%錯誤詞與正確詞之間的編輯距離為1,大部分的編輯距離都小於等於2
- 允許插入空格或者連字符-:thisidea -> this idea; inlaw -> in-law
- 相似發音詞:跟錯誤詞的發音之間小的編輯距離
2. 選擇最優候選詞:套用公式
a) 計算語言模型P(w):可以采用之前說過的任一語言模型,比如unigram、bigram、trigram,大規模拼寫校正也可以采用stupid backoff。
b) 計算信道概率P(x|w):首先獲得多個單詞拼錯的列表,然后計算混淆矩陣,然后按照混淆矩陣計算信道概率。
設:

有:

x和y為任一字母a-z,計數count表示后面那張情況發生的次數,其中插入和刪除的情況都依賴於前一個字符,sub[x,y]的混淆矩陣結果如下:

然后按照上述混淆矩陣計算信道概率:

c) 整體概率計算實例如下:

也可以選用語言模型計算整體概率,比如:使用bigram或trigram語言模型

3. 結果評估方法:
使用拼寫錯誤測試集:

二、真詞校正
25-40%的拼寫錯誤都是真詞錯誤。
具體步驟:

實例:

為了方便起見,我們假定每個句子中只有一個拼寫錯誤,所以有:

要求從中找到一個組合序列使得序列的概率最高。
計算P(W):
方法1:語言模型,比如unigram、bigram等
方法2:信道模型:跟“一”中的方法一樣,但還需要額外計算沒有錯誤的概率P(w|w),因為候選集中還包括自身詞。
計算P(w|w):其完全依賴於應用本身,表示一個詞可能被拼錯的概率,不同的應用概率不同:

三、經典系統state of art
1. HCI issues in spelling
- 如果對校正結果非常自信:自動校正
- 一般自信:給定一個最好的校正方案
- 一點點自信:給定一個校正方案的列表
- 沒有自信:給錯誤詞做出標記,不校正
2. 經典噪聲信道
實際應用中,信道概率和語言模型概率的權重並非一致,而是采用如下的計算公式:
![]()
然后在開發測試數據集中訓練學習lambdas的值。
3. 語音錯誤模型
針對有相似發音的錯誤拼寫的糾正
a) Metaphone, used in GNU aspell
- 將錯誤拼寫轉換為變音發音,規則如下:
- 然后找到跟錯誤拼寫的發音的編輯距離為1-2的詞
- 給結果列表打分,按照:
- 候選詞跟錯誤詞之間的加權編輯距離
- 候選詞的發音與錯誤詞發音的編輯距離
4. 信道模型的升級版
a) 允許更多的操作(Brill and Moore 200)

b) 在信道中結合發音(Toutanova and Moore 2003)
c)在計算信道概率P(x|w)時考慮更多的影響因素

5. 基於分類器的真詞拼寫校正方法
- 考慮更多的特征
- 針對特定詞對建立分類器
