October 05, 2008

Novel-PinYin : 基於自然語言處理的拼音輸入法

前一篇 [新酷音進度報告 6 ] 即提過 [Novel-PinYin],本文再補上一些資訊。Novel-PinYin 的開發者是任職於 Novell 的吳鵬 (Peng Wu,網路代號為 "epico"),與 SCIM 輸入法架構的作者蘇哲共事過,特色是完整的拼音輸入支援,包括不完全拼音的快速比對,採用類似 Sun PinYin 的 bi-gram 的自然語言處理引擎,提昇字詞比對率。

就目前的實做來看,Novel-PinYin 包含以下子項目:
  • Pinyin Parser : 由蘇哲撰寫的拼音解析器,同時支持若干種雙拼方案,包含 Microsoft 雙拼
  • Storage : 以 Berkeley DB 處理 N-gram 的資料
  • Training : 在實驗原型系統中,透過參數來淬鍊語料庫
  • Lookup : 候選字詞查閱與選擇
  • Self-Learning : 在最終輸入 (commit) 時,學習使用者偏好的字詞
  • novel-imengine : 與 SCIM 銜接的 IMEngine
為了避開詞庫版權爭議,選用 [CEDICT] (Chinese-English Dictionary) 詞庫和 scim-pinyin 的字庫,而在 Data Smoothing 的演算法處理上,在實驗原型中實做 Back-off 和 interpolation。語料庫為自然語言統計處理方法提供了更多可能,統計方法則推動了語料庫語言學的發展,所以,在如此的基礎上,我們得以:
  • 發現語言使用的普遍規律
  • 進行機器學習,以自動擷取語言知識
  • 對未知字詞進行推測
基於效能考量,前期採用最單純的 cut-off prune (比 Sun PinYin 的模型更加簡化),後期計畫採用以 distribution 為基礎的演算法。輸入法本身暫無使用者自定義詞庫的功能,但支持自動學習,現有兩個詞庫:gb 和 gbk。

以下是 Novel-PinYin 0.2.3 的 test suite 參考結果:
$ ./test_simple_lookup 
huangjingqun
Spent 105324 us for 100 operations, 1053.240000 us/op, 949.451217 times/s.

pos:0,token:16779717    pos:1,token:16780842    pos:2,token:16783543    
黄敬群
上為在資料庫中給定拼音,作候選字詞查閱。
$ ./test_parser 
Input:huangjingqun
Parsed 12 chars, 3 keys:
huang jing qun 
0 5 5 4 9 3 
ㄏㄨㄤ ㄐㄧㄥ ㄑㄩㄣ 
Input:
上為測試拼音解析器,也支援注音符號輸出。
$ ./test_pinyin_index 
huang
Spent 4339 us for 1000 operations, 4.339000 us/op, 230467.849735 times/s.

start:16779717  end:16779718
黄      huang2   20546huang      3
start:16779698  end:16779703
荒      huang1   4801huang5      3
巟      huang1   3
衁      huang1   3
慌      huang1   4026huang5      3
肓      huang1   71
...
上為查閱給定的拼音對應的字,包含音調的輸出。
由 jserv 發表於 October 5, 2008 12:29 PM
迴響

不懂這個,但看看也無妨。

AYE思博網 發表於 October 8, 2008 11:48 AM

呵呵,最近还有一个ibus呢,要取代scim来着

邱焜 發表於 October 12, 2008 05:00 PM

我也看不懂。。。

無名部落格 發表於 October 15, 2008 03:47 PM
發表迴響









記住我的資訊?