ZIME偉大雄圖
ZIME偉大雄圖
有禮!
我今天又想了一晌,今後的趨勢是利用網絡服務聚合眾多用家之力,做好詞庫和輸入方案。 將來【中州韻輸入法引擎】會有這樣幾個主要部份,且酷的名字是必需:
*核心算法層 Rhyme【平水韻】
*平台適應層 Weasel【小狼毫】(Windows) Squirrel【鼠鬚管】(Mac OS X)
*網絡服務層(及雲輸入法) Plume【大白雲】
*數據: Brise【東風破】輸入方案倉庫(在線審音,修訂碼表和輸入方案;共識這個名字不夠貼切,不勝以「東風破」代表) Essay【八股文】線上詞庫(分析日誌、提取新詞,同步數據)
或許日後再添些Big RAM: Grams【九宮格】統計語言模型(線下製作)
嘿嘿
佛振又說中州韻輸入法引擎的設計思想,兼技術報告¶
有禮。
中州韻輸入法引擎,這個項目無有文檔。我不是寫文檔的好手,所以本該寫在Wiki裏面的項目簡介,遲遲沒做好,我暫寄郵件給大家看。
這可不叫做“設計思路”:佛振用“思想”。嘿嘿。 寫著寫著,就穿插了一些技術實現的東西。那就這樣吧。
各漢語方言,普遍缺少一款好用的方言拼音輸入法。基於碼表的輸入法平臺,對拼音類輸入法的支持不夠,以至於方言輸入法的用戶體驗與主流的“漢語”拼音輸入法有較大差距。 方言輸入法的用戶能夠努力適應較爲陌生的拼寫法,已經非常不易,因此輸入法的作者應當努力配備現代輸入法應有的智能化設施,讓好用的方言的輸入法成爲生活的一部分。
這一款中州韻輸入法引擎,是專為拼音類輸入法而設計。又因爲出身於中原,便借用歷史上較有影響的中州韻來命名,表示此款輸入法軟件可廣泛適用於諸漢語方言。 或許有種“ZIME更懂漢語方言”的意味。ZIME,實乃英文 ZIMIE Input Method Engine 之省。
採用基於普通話的“漢語”拼音,或是採用某種基於方音的拼寫方式,在技術實現上差別不大。如果做到輸入法算法與具體的拼寫方式無關,以完全可配置的形式完成對輸入串的解釋,程序的絕大部分就可以通用於不同的輸入方案。當然其用途也就不僅限於方言輸入了。
因此相比其他拼音輸入法,要增加一個“輸入方案”(Schema)的概念,這與各式輸入法平臺類似。 每種輸入方案包含一組單字編碼表、詞彙表、配置信息。 這裡我做了一個假定:所有詞語的編碼(讀音),都可以由單字編碼的組合而得到。這“單字”,嚴格地說是:單個音節對應的漢字。爲了支持一些方言中,並非一字一音相對應的情況(比如兒化韻),“單字”可擴展到“讀音為一個音節而包含多個漢字的詞”。以“音節”為一個基本單位,是後續對輸入串進行音節切分的需要。
一下簡述ZIME處理用戶輸入的過程。
要完成不同輸入方案中對用戶輸入動作的解釋,首先要獲取輸入串,這部分偺先說最簡單的情況:在輸入方案的配置信息裏,指定一個字母表;輸入時將連續的字母按鍵序列轉換為輸入串。
下一步是進行音節切分,用該方案中所有可能的拼寫形式,包括全拼音節、容錯拼式、簡拼,嘗試對輸入串進行切分。最終得到可能切分形式構成的有向圖。
接著,遍歷該圖,檢索出包含在該輸入串中的詞語。詞語是通過為每個輸入方案建立的字詞索引取得的。一般地,用詞語的前兩三個音節的編碼作索引,視方案中不同種類音節多寡而定。
詞庫的結構,不是很正規的要分系統詞庫、用戶詞庫。我的用意是避免在組詞造句的過程中將用戶所造的詞區別對待。目前的實現方法是,輸入方案中詞條的數目固定,為每個詞記錄系統詞頻和用戶使用頻次。用戶詞頻在同音詞排序中比重大於由系統詞頻算出的概率。另設一個表記錄來自用戶輸入的二元共現頻次,用戶自造詞通過二元關係算出。這一策略有一些問題,將在下一個核心算法的版本“平水韻”中做出大幅調整。
構建詞圖之後,可算出最優的整句轉換結果。同時算出的有,從輸入串中各個音節切分點開始到結束位置的最優轉換結果。 而在整句轉換結果的展現方式上,我決計不走尋常路。 詞組輸入風格的輸入法,將整句作爲第一候選;我不。我希望用戶在候選詞列表中看到的,是最有可能需要進行選擇的部分。要做到這一點,定位選詞光標的策略要設計得複雜一些。但是我單槍匹馬草創中州韻輸入法時,第一要務是在主要功能完備的前提下,讓他儘早達到能用的程度,所以只能求一個簡化的策略。思想是,仿效微軟拼音的整句輸入風格,結合詞輸入法按空格即確認上屏的便利操作方式。所以只要將選詞光標定位到句中最后一個詞組的位置,既可隨時按一次空格確認到句末而上屏,也方便修改最近錄入的字詞。 於是我便全盤按照自己的想法來了。竪綫狀的光標也不要了,直接把整個待選詞語所在區段反白顯示,左右箭頭既可以移動選中的區域、又可以放大、縮小選中的範圍。移動光標、改變選區大小全是以相鄰的音節切分點為單位,而非以字母為單位進行的。
輸入串的編輯功能。因爲以上設計,就不便移動光標后再來編輯了,只支持在末尾位置編輯輸入串。似乎沒有大礙。因爲採取了輸入過程中即時顯示音節切分或即時轉換為文字、錯誤編碼高亮提示等措施,臆想,很少會發生拼寫錯誤出現在句中的情況。
如果說,有存在價值的項目必須有些獨特之処,那在ZIME中就是,“拼寫運算”技術啦。
先寫到這裡,後面有連載。大家有問題就提出來一起討論,我好知道,怎樣寫好這篇介紹。
上週上了七天班,總共回宿舍三次。很慘呐。所以這個項目相關的事情難免要拖延,對不住各位啦。 當前的首要任務是輸入法由IBus/Linux平臺移植到Windows,開發代號【小狼毫】,感謝Zouive和佛振的辛勤工作。
(續一)ZIME拼寫運算技術¶
有禮。
說說拼寫運算技術。 起一個酷酷的名字,只是我的個人愛好。它事實上,是指用戶輸入到音節代碼的變換機制。 爲什麽要這個機制?因爲拼音類輸入法,多數是有這種需要的。
先來看雙拼。專門的以雙拼為根本的輸入法,像自然碼,直接使用雙拼來做碼表的編碼,以及輸入的編碼。依托於全拼輸入法的雙拼,則是將雙拼的拼式轉換為與全拼等價的音節代碼,再執行取詞等步驟。於是就有了一一對應轉換的過程。
假若以ZIME搭載漢語拼音輸入法,有全拼和雙拼兩種方式,當然希望二者不是各自獨立、毫無關聯的。以全拼打過的用戶自造詞,在雙拼裏頭應當能一次打出。因爲兩者雖然拼寫方式不同,拼寫所表達的内容都是普通話的音節。於是輸入法只需要將漢語拼音的詞庫存儲一份,而由兩種輸入方案共享。有“拼寫運算”的機制,就做到了將用於輸入解析和音節切分的編碼形式同用於詞庫訪問的編碼形式分開。