2007年6月11日星期一

從Chrasis談手寫辨識引擎在移動裝置的機會

Gentoo TaiwanPalatis日前公開他發展中的手寫辨識引擎與訓練程式,可參考blog文章「Chrasis 0.1.0 alpha!」,專案發展紀錄可參考Chrasis - Chinese Handwriting Recognition As-Is」,正如版本號所宣示的,現在還有很大的改進空間,不過已經初步可運作,以下是其訓練手寫辨識程式的執行畫面:
程式碼可透過Subversion存取:

# svn co svn://svn.berlios.de/chrasis/Engine/libchrasis/trunk libchrasis
# svn co svn://svn.berlios.de/chrasis/Linux/ChrasisTrainer/trunk ChrasisTrainer
libchrasis為手寫辨識引擎,其相依性有: (以Ubuntu 7.04為例)
  • libxml++2.6-dev
  • libsqlite3-dev
  • sqlite3
  • libboost-dev
ChrasisTrainer顧名思義就是訓練程式,以Gtk+打造,其相依性如下:
  • libgtkmm-2.4-dev
  • llibxml++-2.6-dev
測試了幾個簡單的中文字,都能正確辨識,算是不錯了。當然,手寫辨識的議題很複雜,以下是筆者在wiki - ChineseInformationProcessing的「手寫輸入」段落紀錄的部份資訊l:

以下為 rabit 的個人見解 (Modified by User:jserv):

  • KanjiPad 本身使用的辨識方法是很簡單的字典法,當使用者透過手寫版或滑鼠寫出字時,程式辨識出筆劃種類,並紀錄每個筆劃的順序,然後根據字典查出候選字。也因此,KanjiPad 根本不考慮寫出來的字形貌是否相似,只求筆劃順序相符。

chinput_5.gif

  • 以 Cinput (修改自 Kanji Pad) 的圖為例,「林」這個字辨識出來的候選字有「林、杯、枝、板、茂」,這幾個字右半邊的「木、不、支、反」筆劃順序都是跟「木」是相似的。這樣的演算法辨識 率是不高的,一但筆順不對,就很難辨識出來,不過話說回來,也不能太苛求 KanjiPad,因為它原本的用途就是日本人寫來學習漢字用的,可以說本來就是當作字典使用。
  • 中文手寫辨識是難度相當高的, 困難的地方有二:
    • 就技術而言,在辨識方面會用到許多數學模型,如 Baysian Decision Theory hidden Markov models、類神經網路等,而辨識中文還必須對中文字作分析,找出每個中文字的特徵 (筆形、筆順等),若要更精準,需拆解中文字成基本的部件,來作分析 (有點像漢字跡因工程),這時就要處理寫字上連筆的問題,技術上有實現的複雜度,但或許還不是最困難的。
    • 必須對每一個字的分析,建立資料庫,這是需要大量的成本 (包含時間、人力等),中文字尤其複雜,除了大量的漢字,還有異體字、罕用字等,我想這對 open source 是最困難之處,這跟 open source license 中文字型的狀況有些類似。
看似這是NP-Hard的問題,但如果我們思考Mobile 2.0對我們的衝擊,可以發現,大多數的手持裝置都需要手寫、筆跡、觸碰軌跡辨識的技術,而且也依賴原本在桌面系統的軟體元件與操作習慣,此時,危機反而就是轉機。具體來說,我們可思考「新酷音」一類智慧型輸入法如何移植到手持式裝置如PDA或SmartPhone一類的裝置,基本上,運算速度與儲存裝置都不是大問題 (早在兩年前,「新酷音」輸入法系統就證明在某隻SmartPhone上正確運作),真正的難題反而是輸入法的「輸入」本身。是的,以「新酷音」來說,支援兩種基本符號:
  • 注音符號
  • 拼音字母
這兩者背後也有學問,光是注音符號對照的鍵盤排列就可玩許多花樣,諸如許氏注音、倚天26鍵等等,拼音系統就不必多說,在台灣根本就是多頭馬車。以往,「新酷音」的開發者花了很大的心力去維護這些子系統的可用性與正確度,整合到libchewing (核心函式) 中,但如今要整合到手持式裝置,就面臨新問題:
「如何將傳統鍵盤的行為導入輸入法系統?」
我們首先會想到手寫辨識,就目前的系統來說,多半會內建OSK (On-Screen Keyboard),所以「新酷音」理所當然可架構於OSK之上,不過這與我們中文打字者的思維有很大的落差。何以此說?試想,「新酷音」的中文簡介是什麼?就是「智慧型注音輸入法」,透過統計與預測方式,大幅降低同音字詞的出現率,進而改善注音輸入的速度,使用鍵盤只是一種過度,真正使用者腦海中的思維,仍是「注音」(或拼音)本身,所以,日前筆者也跟Palatis聊到一種新途徑:
「何不直接辨識注音符號,然後導入新酷音輸入法引擎去作猜字處理?」
這種技術難度對於Chrasis一類的簡化手寫辨識引擎來說,算是綽綽有餘,如果不討論太複雜的連寫與草寫議題的話。某種角度來說,這說明了Mobile 2.0的思維方式:「過去的桌面技術有機會走入移動裝置之中」與「打破過去封閉技術的藩籬,個人也得以貢獻新的技術元素到移動裝置設計」,如今,我們有完全開放程式碼並開放手機規格與實做的openmoko、有高效率的動態組字技術,以及最寶貴的資源,也就是富有高度創意的自由軟體開發者,其整體的影響將會很有趣,手持裝置才正要作更有意義的應用,咱們拭目以待。

沒有留言: