開源中文輸入法


github上的本文地址

開源中文輸入法

在Windows上面中文拼音輸入法數不勝數。簡單數了一下自己用過,就有六種以上:

  • 智能ABC
  • 微軟拼音
  • 紫光拼音
  • 搜狗輸入法
  • 谷歌輸入法
  • QQ輸入法
  • ......

可參考wikipedia 中文輸入法列表,以及小眾軟件 我最喜歡的《拼音輸入法》。在手機端各種拼音輸入法種類更多。

而在Unix和Linux平台上也存在不少中文輸入法,它們不僅免費,而且開源。如果想要了解輸入法的實現,不妨從它們入手。

輸入法大致可分為三部分:

  1. 輸入法框架
  2. 輸入法引擎
  3. 輸入法界面

關於輸入法結構的介紹,可以參見這篇文章Packaging Input Method Framework and Engines

輸入法框架

Windows系統提供統一的輸入法框架,在Windows XP和之前版本是IMM(Input Method Manger),之后是TSF(Text Service Framework)。搜狗,谷歌,QQ等輸入法都是在IMM框架下面實現了引擎和界面。而Linux下面輸入法框架並不統一,這給兼容性帶來很大問題。

IBus

Intelligent Input Bus。相對較新。使用C和Python開發。

特點:

  • 輸入法引擎可以按需加載\卸載
  • 支持系統托盤(Systray)
  • 支持XKB
  • 配置更改即可生效
  • 提供C和Python的綁定

提供以下拼音輸入法引擎:

  • ibus-pinyin IBus主要開發者開發的
  • ibus-googlepinyin 由Android項目移植過來

Scim

Smart Common Input Method。歷史比較悠久,曾作為多數Linux發行版默認的中文輸入法。使用C++開發。

特點:

  • 使用C++編寫,完全面向對象。
  • 高度模塊化。
  • 非常靈活的架構,即可以用作動態加載的庫,也可以作為C/S輸入法環境。
  • 簡單的編程接口。
  • 完全支持i18n,及UCS-4/UTF-8編碼
  • 包含很多方便實用的函數來加速開發
  • 特性非常豐富的GUI Panel
  • 統一的配置框架

提供以下拼音輸入法引擎:

  • scim-ccinput
  • novel-pinyin
  • scim-pinyin
  • fitx
  • scim-sunpinyin

Fcitx

小企鵝輸入法,Free Chinese Input Toy for X。

特點:

  • 支持主題(Theme)
  • 支持系統托盤(Systray)
  • 支持Kimpanel
  • 支持KDE配置模塊
  • 全局簡繁轉換

提供以下拼音輸入法引擎:

  • fcitx-pinyin
  • fcitx-sunpinyin
  • fcitx-googlepinyin

Rime

全名中州韻輸入法,不僅僅是一個輸入法,而是一個輸入法算法框架。 非常有創意地通過YAML格式的配置文件,定制輸入法。參見RimeWithSchemata

Rime 是一款強調個性的輸入法。 Rime 不要定義輸入法應當是哪個樣、而要定義輸入法可以玩出哪些花樣。 Rime 不可能通過預設更多的輸入方桉來滿足玩家的需求;真正的玩家一定有一般人想不到的高招。

它支持主流操作系統:

  • Linux: 中州韻 ibus-rime
  • Windows: 小狼毫 Weasel
  • Mac OS X: 鼠須管 Squirrel

輸入法引擎

除了輸入法框架自帶的pinyin輸入法引擎,sunpinyinlibgooglepinyin比較常用。

sunpinyin

sunpinyin是基於統計語言模型(Statistical Language Model)輸入法引擎。支持上述的三個輸入法框架。 Mac下面的FIT輸入法也將sunpinyin作為輸入法引擎。參見FIT攜手sunpinyin

SunPinyin是由Sun中國工程研究院的北京國際化中心開發,並貢獻給開源社區的。最初由張磊(Phill.Zhang)博士獨立完成,后來由眾多的社區開發者共同推進,目前的版本是2.0.x。支持整句輸入,能夠記錄用戶的詞匯和語言模型,從而訓練出更適合你的輸入法。

在Google code的項目的wiki上面,有三篇非常詳細的代碼導讀系列文章,可以讓有興趣的人能有相對深入了解的途徑。 很少能看到類似關於拼音輸入法引擎如何實現的文章。

libgooglepinyin

Google pinyin Android 版本(注意不是桌面版本)是曾經開源的,但從2009年后就再未更新。libgooglepinyin就是從這個版本移植過來的。同樣的項目還有scim-googlepinyinfcitx-googlepinyin

Github上還有反向工程版本com.google.android.inputmethod.pinyin

其他有趣的項目

libpinyin

參見開源拼音輸入法社區的大融合libpinyin是SunPinyin、Novel Pinyin和iBus-Pinyin社區聯合創建的子項目,致力於為中文拼音輸入法提供智能整句輸入的算法核心,將試圖合並novel-pinyin和sunpinyin中的智能拼音整句輸入算法部分。

javachinesepinyin

這是一個中文拼音輸入法的Java實現,基於HMM模型,無詞典,能完成拼音轉漢字,和漢字轉拼音的任務,並結合Edit Distance使其具有中文輸入糾錯功能。

結論

輸入法相關的開源項目很多,但成熟並實際應用的不多,很多個人項目不再更新,甚至沒有內容。今后會繼續關注,不斷在這篇文章進行更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM