基于文法模型的中文糾錯系統

徐明 編譯
論文位址:http://www.anthology.aclweb.org/W/W14/W14-6827.pdf
相關開源項目:https://github.com/shibing624/pycorrector
摘要
本文介紹了我們的系統在SIGHAN-8 Bake-Off 中的中文拼寫檢查(Chinese spelling check,CSC)任務。給定一個句子,我們的系統被設計用來檢測和糾正拼寫錯誤。正如我們所知,CSC仍然是一個熱門話題今天,這是一個尚未解決的問題。N-gram語言模組化(LM)由于其簡單性和強大性,在CSC中得到了廣泛的應用。我們提出了一種聯合二進制、三元文法和中文分詞的模型。此外,我們使用動态規劃來提高效率,使用平滑技術來處理訓練資料中的N元文法資料的稀疏性。評價結果表明了我們的CSC系統具有很好的實用性。
1. 介紹
拼寫檢查是每種書面語言的共同任務,它可以用于自動檢測和糾正人類的拼寫錯誤(Wu等人,2013)。自動拼寫校正早在20世紀60年代就開始了(Kukic,1992)。拼寫檢查系統應該具有錯誤檢測和錯誤糾正兩種能力。錯誤檢測是指檢測在文本中拼寫錯誤的各種類型,錯誤糾正是指進一步改正檢測到的錯誤字元。
近幾十年來,漢語作為外語正在蓬勃發展。未來幾年漢語作為外語(Chinese as a foreign language,CFL)的學習者的數量将會越來越大(Xiong等人,2014)。漢語自動拼寫檢查已成為當今的一項重要任務。為此,在SIGHAN Bake-off組織了中文拼寫檢查(CSC)任務,為比較和研究中文自動拼寫檢查系統提供了一個平台。然而,與英語或其他字母語言不同,漢語是音調音節和字元組成的語言,其中每個字元的發音都是音調音節共同組成(Chen等人,2013)。在漢語中,詞之間沒有分隔符或邊界,每個漢語“詞”的長度非常短,在大多數情況下可能隻有兩個或三個字元。此外,拼寫錯誤的類型比其他語言多,因為許多漢字的形狀相似或發音相同,甚至有些字元在形狀和發音上都相似(吳等人,2010;劉等人,2011)。
到目前為止,大量的研究正在進行中。例如,基于規則的模型(Jiang等人,2012;Chiu等人,2013)、n元文法模型(Wu等人,2010;Wang等人,2013;Chen等人,2013;Huang等人,2014)、圖論(Bao等人,2011;Jia等人,2013;Xin等人,2014)、統計學習方法(Han和Chang,2013;Xiong等人,2014)等。
語言模型(LM)在CSC中得到了廣泛的應用,迄今為止應用最廣泛、實踐最成熟的語言模型是N元文法語言模型(Jelinek,1999),因為它簡單并且好了解。我們也繼續使用N元文法語言模型,并且提出了一種聯合二進制和三元文法的拼寫錯誤檢測和糾正模型。我們在預處理階段進行了分詞,在一定程度上提高了系統性能。另外,為了減少程式的運作時間,采用了動态規劃的方法,并采用加法平滑的方法來解決訓練集中的資料稀疏問題。
本文的其餘部分結構如下:在第2節中,我們簡要介紹了我們的CSC系統、混淆集和N元文法中N的選擇;第3節詳細介紹了我們的中文語言模型;評估結果在第4節中給出;最後一部分對本文進行了總結,并對今後的工作進行了展望。
2. 系統介紹
2.1 系統概覽
圖1顯示了我們的CSC系統的流程圖。該系統主要由中文分詞、混淆集、語料庫和語言模型四部分組成。它有以下步驟:
- 步驟1:利用中文分詞技術對給定句子進行切詞。分詞結果将作為下一步的基礎。
- 步驟2:根據判斷條件,系統收集句子中對應詞的混淆集。
- 步驟3:對于這個句子中可以替換的每個字元(根據相應的條件),系統将枚舉其混淆集的每個詞來替換原始詞語。我們将在這個步驟之後得到一個候選句子集。
- 步驟4:系統采用聯合二進制和三元文法語言模型(根據不同的條件使用二進制文法和三元文法)計算每個候選句子的得分。我們使用CCL語料庫和搜狗語料庫來生成N元文法的頻率。最後,選擇最高得分的句子作為最終輸出。
為了減少在步驟3和步驟4中的運作時間,我們采用動态規劃來優化算法。
2.2 混淆集
混淆集,由容易被混淆的字元及詞組成的資料集,在文本的拼寫錯誤檢測和糾正中起着關鍵作用(Wang等人,2013)。大多數漢字在形狀或發音上都有相似的特征。由于拼音輸入法是目前最流行的中文輸入法,是以在建構我們系統中使用的混淆集時,相似發音占優勢。此外,形似的字元不是特别多,但仍然存在着相當大的比例(Liu等人,2011)。書寫相似的字元也被添加到我們的混淆集中。是以,系統使用的混淆集是由許多帶有限制的規則建立的,包括相似的發音和類似的字形。
一些發音相似的漢字,如漢語同音字(“字”和“自”)、鼻音(“藏”)和非鼻音(“贊”)、卷舌(“找”和非卷舌(“早”)等。
此外,它還包括其他容易混淆的條件(基于統計),如“妻”-“西”、“嫂”-“搜”等。
對于形似的漢字,例如漢字的同一字根(“固”和“回”)和類似的五筆輸入法(“丏”和“丐”)。
所有這些規則都受限于漢字的筆劃,以減少每個字元的混淆集的大小。
2.3 語言模型
由于語言模型可以用來測量給定文本的通順度,是以許多以前的研究者采用語言模型預測正确的詞來替換句子中疑似錯誤的詞(Chen等人,2009;Liu等人,2011;Wu等人,2010)。迄今為止最廣泛使用和效果良好的語言模型是N元文法模型(Jelinek,1999),因為它的簡單并且預測結果公平。
在n-gram模組化中選擇n-gram的順序是非常重要的。高階的n-gram模型,如4gram或5gram以及更大的語料庫,往往會提高模型的品質,是以會生成較低的文本困惑度。然而,高階n-gram模型通常具有稀疏性,進而導緻一些零條件機率結果産生(Chen等人,2013)。由于這個原因,我們基于不同規則使用二進制文法模型或者三元文法模型,來确定哪個字元是最佳糾正選擇。具體的,在我們的系統中,根據中文分詞結果,判斷它是否有長度大于或等于2的連續的詞,如果單詞的長度等于2,則使用二進制模型,如果大于2,則使用三元模型。
3 中文N元文法模型
3.1 二進制文法模型
給定中文字元串,如果句子中有錯誤,錯誤單詞将出現在中文分詞後的一個連續的單詞串中。一般,連續句的長度在沒有錯誤的句子的分裂之後不超過2。根據這個判斷,當連續詞的長度等于2時,系統将采用雙元文法模型來檢測和糾正錯誤。
例如,像這個句子“李大年的确是一個問提”的切詞結果是“李大年/的确/是/一個/問/提”,而“題”是“提”的糾正結果。如果存在多個連續單詞長度等于2的地方,這意味着句子可能存在多處拼寫錯誤,那麼我們在相應的地方使用二進制文法模型。例如,在切詞之後,句子“李大年的是的确是一個溫題”将是“李大年/的/是/的确/是/一個/溫/題”,其中第一“是”應該是“事”,而“溫”應該是“問”。
二進制文法模型中字元串的機率是由各個詞的條件機率乘積的近似表示(Jelinek,1999),在二進制文法模型中,我們作出一個假設,一個詞的機率隻取決于其前面的一個單詞。在我們的系統中,以下面的方式使用二進制文法模型:使用具有最大得分的二進制組單詞作為正确的字元串來替換舊的字元串。
3.2 三元文法模型
上面提到的二進制文法模型,我們認為如果連續單詞的長度超過2,則二進制文法模型來表達句子的似然機率就不合适了。因為有三個或更多的連續詞,我們有理由相信出現在打字錯誤中的句子可能是連續的。是以,在這種情況下,我們使用三元模型來檢測和糾正錯誤。
在上述三元文法模型中,我們對詞語的似然機率的近似隻依賴于其前面兩個單詞的似然機率值。
3.3 得分函數的定義
我們先定義一個候選句子, 這個候選句子是從原句中通過混淆集替換派生出來的。利用得分計算函數選擇最合适的候選句子。圖2(a)和(b)分别是用二進制模型和三元模型表示得分函數的僞代碼。
圖3(a)和(b)分别是用二進制模型和三元模型計算得分函數的示例。
3.4 動态規劃
比較簡單,不多說。
3.5 加法平滑
在統計學中,加法平滑或其别名Laplace平滑和Lidstone平滑都是一種用于平滑資料的技術(Chen等人,1996)。
在我們的模型中,資料彌補了語料庫中每個字元串的出現次數。由于訓練資料的稀疏性,即訓練資料中沒有出現的漢字,我們使用加法平滑來緩解這種資料稀疏性問題。
我們重新定義新的得分計算函數,如圖5所示。
4 實驗
4.1 任務
中文拼寫檢查任務是為SIGHAN-8 bake-off而組織的。本課題的目标是确定中文拼寫檢查系統的能力,并希望産生更先進的中文拼寫檢查技術。文章由幾個有或沒有拼寫錯誤的句子組成,即多詞、缺詞、單詞亂序和單詞選擇錯誤。每個字元或标點都算一個位置,如果句子中有任何拼寫錯誤,系統應該自動傳回不正确字元和正确字元的位置。提供兩個訓練資料(CLP-SIGHAN 2014 CSC Datasets 3 and SIGHAN-7 CSC Datasets),以及CFL資料。
4.2 評測标準
判斷正确的标準是:
(1)檢測級别:給定段落中不正确字元的所有位置都應該與金标準完全一緻。
(2)糾正級别:所有糾正位置和糾正詞應與金标準完全一緻。
4.3 評測結果
SIGHAN-8中文拼寫檢查任務吸引了9個隊伍參加。9個隊伍中有6個送出了結果。對于正式測試,每個參與者有權送出最多三次運作結果,使用不同的模型或參數設定。最後送出了15次結果。
我們系統的三個結果
我們的系統三次送出結果如下:
第一次(Tri-gram+分詞):先依次用相應的混淆集替換句子中的每個詞,然後使用tri-gram模型計算新的句子得分。同時,我們将句子切分數作為評分計算的标準之一。換言之,我們認為切分總數越少,句子得分越高,即切詞數與得分成反比。
第二次(聯合bi-gram和tri-gram+分詞):本文中提出的聯合bi-gram和tri-gram語言模型以及分詞提出的方法。
第三次(Tri-gram):使用第一次的方法,但沒有中文分詞的結果。這是我們去年在Bake-Off 2014任務中提出的方法(Huang等人,2014)。我們用它作為基線模型。
第二次結果的驗證
表1顯示了第二次結果的前3名驗證分數,即使用不同加法平滑參數的結果,并且它們的參數值分别是30、35和40。我們利用TEST1的方法和參數作為任務的最終結果送出。
SIGHAN中文糾錯任務最終結果
表2顯示了最終測試的評測結果。Run1、Run2和Run3是我們的系統用不同的方法送出的三次運作結果。“最佳”表示CSC任務中每個度量名額的最高分。“平均”代表15次結果的平均值。
根據表2中的結果,我們可以看到我們的系統的結果接近于平均水準。我們系統的主要缺點是召回率。原因可能是我們沒有應用單獨的錯誤檢測子產品。
雖然與三元文法模型的基線模型相比,使用聯合二進制文法和三元文法的模型得到了比較好的改善,但N元文法模型的潛在能力遠未充分利用。下一節将介紹目前系統的一些典型錯誤,在第5節中将總結一些可能的改進。
4.4 錯誤分析
圖6顯示了我們系統中的一些典型錯誤示例(“O”代表原始句子,“M”代表糾正後的句子):
5 結論和展望
本文介紹了華南農業大學(SCAU)參加SIGHAN-8中文拼寫檢查任務。本文提出的聯合二進制和三元文法語言模型有助于提高檢測和校正的結果。在輸入句子上進行分詞,針對三元文法模型計算過程中計算量大的問題,采用動态規劃的方法提高算法的效率。采用加法平滑的方法解決訓練集中的資料稀疏問題。此外,我們通過在混淆集中補充書寫相似的字元(五筆相似)來優化糾正正準确率。
這是我們第二次嘗試中文拼寫檢查任務,SIGHAN-8最終測試的評估結果表明,與去年CLP-SIGHAN Bake-Off 2014CSC任務中提出的方法相比,錯誤檢測F值(DF)和錯誤糾正F值(CF)分别提高了9.7%和6.3%。語言模型在中文糾錯任務中得到了廣泛的應用。然而,N元文法語言模型僅僅着眼于捕捉語言的局部上下文資訊或詞彙規律。未來的工作将探索大跨度語義資訊的語言模組化,以進一步改善中文糾錯任務。更重要的是,我們仍然需要對如何處理字元誤殺(過多糾正)問題進行更多的研究,使中文糾錯系統更加完善。
參考文獻
Zhuowei Bao, Benny Kimelfeld, Yunyao Li. 2011. A Graph Approach to Spelling Correction in Domain- th Centric Search. In Proceedings of the 49 Annual Meeting of the Association for Computational Linguistics (ACL 2011), pp.905–914.
Stanley F. Chen, Joshua Goodman. 1996. An Empirical Study of Smoothing Techniques for th Language Modeling. In Proceedings of the 34 Annual Meeting of the Association for Computational Linguistics (ACL 1996), pp.310-318.
Berlin Chen. 2009. Word Topic Models for Spoken Document Retrieval and Transcription. ACM Transactions on Asian Language Information Processing, Vol. 8, No. 1, pp. 2: 1-2: 27.
Kuan-Yu Chen, Hung-Shin Lee, Chung-Han Lee , et al.. 2013. A Study of Language Modeling for Chinese Spelling Check. In Proceedings of the Seventh 7th Workshop on Chinese Language Processing (SIGHAN-7), Nagoya, Japan, 14 Oct., 2013, pp. 79–83.
Hsun-wen Chiu, Jian-cheng Wu and Jason S. Chang. 2013. Chinese Spelling Checker Based on Statistical Machine Translation. In Proceedings of the 7 th SIGHAN Workshop on Chinese Language Processing (SIGHAN-7), Nagoya, Japan, 14 Oct., 2013, pp. 49-53.
Dongxu Han, Baobao Chang. 2013. A Maximum Entropy Approach to Chinese Spelling Check. In Proceedings of the 7 th SIGHAN Workshop on Chinese Language Processing (SIGHAN-7), Nagoya, Japan, 14 Oct., 2013, pp. 74-78.
Qiang Huang, Peijie Huang, Xinrui Zhang, et al.. 2014. Chinese spelling check system based on tri- gram model. In Proceedings of the Third CIPS-SIGHAN Language Joint Conference on Chinese Language Processing (CLP-2014), Wuhan, China, 20-21 Oct., 2014. pp.173-178.