September 21, 2010

手寫版酷音輸入法雛型

今天胸口非常不舒服,刺痛的感覺讓我連走動都有問題,候診的時候,差點昏過去,不過當時隱約覺得,該把中文輸入法繼續開發下去,畢竟,寫遺書,還是該用自己開發的輸入法,這樣遺憾會少一些,我想。

在今年的 COSCUP 與 ICOS 議程結束後,跟一些朋友又談到中文輸入法,若以 13 年前的 CXWin (為交大李欣叡對 XFree86 的一個 patch,使得可在 X Window 下顯示中文字型,這是當時 FreeBSD 與 GNU/Linux 中文資訊化的基礎建設,因為沒完整的 locale 支援,當時不時得動用繁瑣的轉碼處理) 視為 10% 的完整度,而現有多元的 Linux 發行套件,幾乎可說都達到了 90%,連過去較缺乏多國語文支援的 OpenBSD,也有完整的中文輸出輸入機制。不單單是桌面,移動裝置的變化更讓人讚嘆,至少在我接手開發新酷音輸入法時,還沒能想像才過幾年,就能在 Nokia N900 這樣輕巧卻功能強大的手機上,透過熟悉的 [新酷音輸入法] 來操作,這點 Jouston 已經多次展示,比方說 [Nokia N900: 新酷音輸入法Alpha版移植成功],就不贅述。那麼,下一步呢?

套用 gugod 的說法:「90% 的 code 寫完時,表示還有 90% 的工作待完成」,對新酷音 輸入法來說,更是如此,不僅得加強對現有視窗環境或終端機的功能開發外,精準度與可用性更是當今課題。之前曾在 [從 Chrasis 談手寫辨識引擎在移動裝置的機會] 一文談到簡單可行的方案:
    「何不直接辨識注音符號,然後導入新酷音輸入法引擎去作猜字處理?」
當時最大的技術問題就是,沒有好用 (兼具效能與 API 銜接) 的手寫輸入辨識引擎/函式庫,這也是 Palatis 開發 [Chrasis] 的動機。現在,[Tegaki Project] 給予我們新的機會,一個完整且易於擴充的 open source 手寫辨識系統,提供跨平台的中、日文辨識基礎,配套的工具程式也很完整,授權採用 GNU GPL。而對於新酷音來說,在走入移動裝置時,就需要一個易於書寫且容易讓輸入法引擎 (也就是 "Language Engine" 或 "IM Engine") 處理的設計。現有的 smartphone,比方說 Android 與 iPhone,都提供了全螢幕書寫的機制,只要適度與 framework 打交道,就能走訪 state machine,透過對 [Tegaki Project] 作些 dirty hack,現在的雛型介面大致如下:

雖然單獨要辨識一個注音符號,幾乎沒有技術困難,但要符合人性化的操作,應當要提供連續書寫的設計,至少能讓一個單字的注音符號,得以用原本慣用的筆觸來組合,進而作辨識的動作,這也反映到上圖中,「酷」這個字的注音符號「ㄎㄨˋ」,是連續筆順 (1-2-3-4-5)。一旦從手寫辨識引擎取得「ㄎㄨˋ」輸入序列後,將其轉換成 libchewing 可接受的原始排列 "dj4" 並輸出候選字詞,同理,下一個輸入「一ㄣ」時,libchewing 內部的狀態也跟著改變,而 Python 前端則忠實反應候選字詞的顯示即可。依據初步計算,這樣的「組合式」注音符號序列,至少該有 1409 個,才能確保 libchewing 與新酷音詞庫,得以正常的擷取並挑選合適字詞,如此一來,跟韓文輸入法倒是有幾分相似。顯然,現有的作法有很大的調整空間,應當先行調整 [Tegaki Project] 的演算法,允許有限度的辨識這類注音符號的組合方案。

由 jserv 發表於 September 21, 2010 9:16 PM
迴響
發表迴響









記住我的資訊?