錯別字檢查系統-模板模型(Error words with Template Module)


參考:
Wu, Shih-Hung, et al. "Reducing the false alarm rate of Chinese character error detection and correction." Proceedings of CIPS-SIGHAN joint conference on chinese language processing (CLP 2010). 2010.

今天要介紹如何建立錯別字偵測系統的其中一種方法,另外還有統計的方法可以實作,下次再介紹,這篇內容相對上面學術文章簡單,但更易實作。
其偵錯邏輯如圖

這流程有幾個點要解決。
1.斷詞
2.偵測模板的建立
3.比對邏輯
以下依序說明

1.斷詞

斷詞可用open source的斷詞器,結巴等等都可以,但是需經過修改,要確保字典內的詞彙都是正字詞彙,也就是正確字,因此結巴可能就需要把簡體字拿掉,或者你要認為簡體字為正確字也可以XD,不過在產生偵測模板時,就會有大量的正字詞彙,因此用正字詞彙取代到斷詞字典即可。

2.偵測模板

偵測模板可把她想成比對的模板,最花工就在這步驟,因此有一些半自動的方法可以解決。
先做一些名詞解釋
  • 正反面語料庫
正面詞彙:齊天大聖、 錄音機   反面詞彙:齊天大勝、路音機

即是包含正確字與大量錯字的詞庫,用來比對用,這邊表示用人工建立。
  • 混淆字集
一個正確字他可能會寫成的別字集合,包含近音、近行
例如:
"門"的混淆字
近音:們、捫
近行:悶、們、燜
  • 偵測模板
概念與正反面語料庫相同,只是用電腦建立。

那就來講怎麼見偵測模板
1.輸入字典用字與常用字,與確保是正確用字
2.利用混淆字集來創造所有可能反字
3.加入混淆模板
例如
正字:門    正面用語:開門、門簾           混淆字集:們、悶       反面用語:開們、們簾; 開悶、悶簾

比對邏輯

斷詞後,同一句的句字若有完整的詞就拿掉,表示斷詞已認識他是正確的字,剩下的不認識字若相連就合併,再用bi-gram去切,一個一個去比對混淆模板,另外若字詞大於2個字元且有在模板比對到,要長詞優先。
例如
小偷打開們竟然遇到主人         假設斷詞庫收錄 "小偷"  "竟然"  "遇到"  "主人"    
所以剩下  打開們   用bi-gram比對後  會得到   打開、開們       比對混淆模板後 開們 可以找到 開門這個正字,就會被取代掉。

比對模板的系統與實作大致是這樣子,當然還有很多細部可以精進準度的方法。


留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)