嘸蝦米:最好的傳統中文輸入法

本文以實驗證實嘸蝦米勝過其他傳統中文輸入法的地方

簡介

嘸蝦米輸入法,為台灣人劉重次發明的中文輸入法。它是一種形碼輸入法,將漢字分拆成字型結構,再以字型結構的形、音、義與英文字母加以聯想,拼出漢字。嘸蝦米輸入法的發想始於劉重次在歐洲留學期間(1969年 - 1975年左右),當時因為Telex電傳系統(電報機)普及,劉重次於是想創造一種便利中文資訊溝通的方法,於是投入中文檢字法的世界,經過數十年後嘸蝦米輸入法才告完成,並於1990年成立「行易有限公司」

中文輸入法分類

  1. 拼音輸入法
    • 注音、拼音
    • 需要知道字的唸法
    • 選字頻率較高
  2. 拼字(拆字)輸入法
    • 倉頡、大易、速成、嘸蝦米、五筆、行列
    • 需要知道字的寫法
    • 選字頻率較低
    • 需要額外記憶字根
      • 注音和羅馬拼音也算是字根,不過學校會教

評價標準

  1. 學習成本
    • 易學性
      • 拆碼邏輯的合理性
      • 拼音輸入法的拆碼較直觀
    • 鍵位
      • 是否有額外鍵盤位置需記憶,如注音、倉頡需要記憶各碼的對應的鍵盤位置
  2. 打字速度
    • 編碼長度
      • 愈常用字編碼應愈短,以符合資訊熵的最短編碼方法
    • 手指移動距離
      • 手指移動距離愈短愈好
      • 最理想的情況就是左右手交互打字
    • 選字
      • 重碼率:重碼率越低,減少選字的疑慮,輸入速度越快
        • 選字至少多花一碼的時間
        • 實際上多花的時間:看選字表+翻頁+輸入對應數字
        • 這是拼音輸入法的的劣勢
      • 不用選字是盲打的必要條件
    • 簡碼:簡碼可大幅增加常用字的輸入速度,但必須額外背誦
      • 簡碼是否好背
    • 困難字方案:如何打出不知道拆碼的字
      • 一字多拆:避免一些字型由於主觀認知上的差異而拆不出的困擾
      • 模糊輸入:不會拆字時可用模糊的輸入方式拆出
        • abc*,會列出abcaabcbabccabcd…所對應的字
  3. 普遍性
    • 一般電腦是否有安裝此輸入法
    • 購買價格
  4. 非漢字輸入
    • 切換成英文的方法
    • 標點符號、注音、希臘符號、數學符號、表情符號(emoji)
  5. 擴充性
    • 自訂編碼或自訂詞庫
    • 不同國家的漢字
      • 簡體、繁體、韓文、日文
    • 記憶功能
      • 輸入法自動學習、記憶常用字
    • 字庫大小
      • 是否能輸入生僻字

實驗

資料來源

  • 台灣的常用國字標準字體表(共4808字)
    • 教育部定義的常用國字
  • 教育部字頻表
    • 即常用的字,如「的」、「不」、「一」、「我」、「是」、「人」、「有」…
    • 字頻表前100字
    • 字頻表前500字
    • 字頻表前1200字
    • 字頻表前2500字
    • 字頻表前3700字
      • 據研究,國三學生約認識3700字
    • 以字的頻率加權平均
  • 一般散文
    • 小王子(27519字)
    • 我所知道的康橋(5857字)
    • 背影(1324字)

假設

  1. 按空白鍵等同按0.5個普通鍵的時間
    • 應該是高估的數字
    • 因為大姆指基本上都在空白鍵上,應該是不用花這麼久
  2. 需要選字的輸入法,其選字頻率為2%
    • 不確定真實數字
  3. 選字等同按2個普通鍵的時間
    • 應該是低估的數字
      • 需要查看想要的字的位置(排第幾個)
      • 需要額外輸入方向鍵、數字鍵或空白鍵
    • 如果用舊注音,已經將位置背起來了,那等同1個普通鍵
      • 但是需要的記憶量很大,在此不考慮
  4. 手指移動不花時間
    • 因為難以計算
    • 有興趣的人可以實作此部份

計算方式

  1. 計算文章中的中文及符號,若遇到無法拆解的情況(很少),會直接跳過
  2. 計算文章中一個字的拆字長度平均
  3. 嘸蝦米一個字有多種拆字法,所以用嘸蝦米最簡碼、嘸蝦米最長碼來表示其上下限

輸入法解碼

拆碼的方法

  • 參考Linux上中文輸入法的編碼表
  • 拼音輸入法:直接轉換
  • 嘸蝦米:使用正版軟體的編碼表

結果

實作程式碼連結

由圖可知,大易和嘸蝦米對字頻的編碼都是出現頻率愈高的字編碼愈短;而且嘸蝦米在打非常常用的字時(常用1200字內),拆碼比大易短。

這可以有效減少一般打字時的拆碼長度(參考字頻表-頻率加權的欄位)。

這使得嘸蝦米在考慮字頻加權的情況下,例如散文時,編碼長度是前幾低的。

拼音在散文上的表現也很好(雖然不知道原因),所以也能考慮使用。

註:五筆輸入法沒有放入比較,因為我完全搞不懂他的拆字邏輯

嘸蝦米和其他輸入法比較

所以嘸蝦米強在哪?以上述各評價標準來比較

  1. 學習成本
    • 易學性:字根同時有形、音、義三種來源
      • 拆碼好不好記很主觀
      • 我個人認為嘸蝦米的字根因為同時使用多種來源,雖然許多字根很天馬行空,但還算是容易聯想的
    • 鍵位:⭕使用英文拆碼,不需額外記憶
  2. 打字速度
    • 編碼長度:⭕由上述實驗可知,嘸蝦米的編碼是很短的
    • 選字:⭕幾乎不會重碼
      • 嘸蝦米把常用的重碼字移到兩碼簡碼了
        • 尾碼輸入V等同選第二順位的字,大幅加快選字速度
          • 例子
    • 簡碼:❌嘸蝦米的兩碼簡碼很多是硬湊的,特別難記
    • 困難字方案:⭕注音輸入、同音詞輸入
      • 注音輸入:就是內建的注音
        • 對於剛學習的新手來說,是非常有用的(會顯示嘸蝦米編碼)
      • 同音詞輸入:想打「蝦」字,但忘了字怎麼寫,可以找一個同音的字如「瞎」,就會列出同音的字作為選項
  3. 普遍性 ➖
    • 要付費,不過終生可使用,很划算
      • 680(家用版)、990(一般版)、200(Android)
    • 在台灣算是常見,有些公共電腦也有嘸蝦米
    • 台大有買授權版,可以在軟體中心下載
  4. 非漢字輸入
    • ⭕標點符號、希臘符號、數學符號、注音/平假/片假名符號
      • 注音 ,l2
      • 日文 a,
      • 日文 shi.
      • 特殊符號 , , , ,
    • ❌沒韓文、表情符號(emoji)
  5. 擴充性 ⭕
    • 可輸出成簡體或日文漢字
      • ,,j → 之後輸出的字為日文標準
        • 有些日文漢字要用此模式才能輸出,如畑(はた, FQO)
      • ,,c → 之後輸出的字為简体標準
      • ,,ct → 可以用繁体字的逻辑拆字,输出时为简体字

嘸蝦米使用心得

❓:學嘸蝦米要先學哪些字
❗:「嘸蝦米」(OVFF COX MN),因為你需要經常Google簡碼的邏輯

  • 緣由
    • 因為我不想額外記鍵盤配置,所以倉頡、大易之類的直接不考慮
    • 剛好學校有提供嘸蝦米,就試著學習看看,想不到還蠻好用的
  • 目前日常打字約60~70字/分,比打注音快一些
    • 測試平台:https://typing.tw/
  • 能輸入日文和一些特殊符號,非常有用
  • 輸入法可視為一種加密表
    • 可用來當作密碼或密語
    • 嘸蝦米文翻譯機

嘸蝦米教學

  • PAPAYA 電腦教室 - 為什麼公司的前輩們打字都那麼快? 來談談那些年他們一起練過的嘸蝦米輸入法 ~
  • 官網教學
  • 學習軟體
  • Wiki: 嘸蝦米輸入法
  • 查碼網站(非官方)
  • 嘸蝦米有快打模式,在使用非最簡碼輸入時,會出現提示

誰能擊敗嘸蝦米?

標題已經表示,傳統的(拼字、拼音)輸入方法是贏不了嘸蝦米的,需要更聰明的方法

  • 智慧選字
    • 注音聲母,如ㄐㄅㄈㄏ → 加倍奉還
    • 拼音縮寫,如AWSL → 啊我死了
  • 自動補字(Auto Complete)
    • 自動產生/補完後面的字
  • 語音輸入
  • 意念輸入
    • 腦機介面(brain-computer interface, BCI)
      • 這類似SAO那一套
      • 這是霍金那一套嗎?

上述幾個智慧方法的缺點是難以輸入專有名詞(人名、產品名、專業術語),還是會有需要修正錯字或選字的情形

參考資料

  • 輸入法列表
  • 嘸蝦米官網
  • Wiki: 中文輸入法