錯別字檢查系統-模板模型(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比對後 會得到 打開、開們 比對混淆模板後 開們 可以找到 開門這個正字,就會被取代掉。
比對模板的系統與實作大致是這樣子,當然還有很多細部可以精進準度的方法。
留言
張貼留言