Files
qingjian/docs/plan/zh_tw_support_plan.md
T
yenharvey 533e09b8ab fix(core): 繁体台湾档只换字形,配置改用 traditional_variant
台湾档从 s2twp 改回 s2tw,与 0.2.1 的 traditional = true 输出相同;三档都只换字形不换用语,输入法不替用户改词。
新写法换成 [general] traditional_variant(字符串):旧版本只认布尔 traditional,复用同一个键时退回旧版本整个配置解析失败。
旧键只在没写新键时读,true 按台湾档;不认识的写法只让这一项回简体。
2026-10-15 11:57:47 +08:00

4.4 KiB
Raw Blame History

青簡輸入法:繁體中文與台灣注音支援計畫 (zh-TW Support Plan)

這份文件記錄了為青簡輸入法加入「繁體中文輸出」與「台灣在地化注音支援」的技術分析與後續實作藍圖。


一、目前的痛點分析

青簡原生的打字推薦與整句轉換流程為: 按鍵 \to 拼音 \to 查簡體詞庫與簡體語言模型 (LCCC / 簡體百科) \to 輸出簡體中文字。

如果只在最後一關套用 ferrous-opencc 將結果從簡體轉為繁體,會遇到以下三大痛點:

  1. 讀音標準不同(台灣教育部國語審定音 vs 大陸普通話 / Unihan 讀音):
    • 許多常見字詞讀音完全不同,如「垃圾」(台灣:ㄌㄜˋ ㄙㄜˋ / 大陸:lā jī)、「企劃」(台灣:ㄑㄧˋ ㄏㄨㄚˋ / 大陸:qǐ huà)。
    • 注音使用者若按台灣發音習慣鍵入,轉換出的拼音會無法在底層簡體詞庫中命中。
  2. 詞彙習慣與語料偏向:
    • 原生詞庫缺乏台灣在地用語(如:軟體、螢幕、列印、品質、捷運、便當、悠遊卡),反而會優先給出大陸慣用語(軟件、屏幕、打印)。
  3. 簡轉繁的「一對多」歧義:
    • 例如「后」(皇后 vs 後來)、「发」(發展 vs 頭髮)、「干」(乾淨 vs 幹部 vs 干預)。以簡體為底層運算再轉繁體,容易出現錯別字。

二、雙軌並行的解決方案

為了解決不同客群的需求,我們將採用「雙軌並行」的策略來完善繁體與注音支援。

軌道一:在 Core 實作 OpenCC 繁體轉換 (PR 3) —— 已完成(2026-09-16)

落地時與下面的草案有一處不同:設定不是布林 traditional_output,而是 [general] traditional_variant 四選一 (off / taiwan / hongkong / standard,對應 OpenCC 的 s2tw / s2hk / s2t),因為台灣與香港字形取捨不同; 三檔都只換字形、不換用語。轉換只發生在候選出 Core 的那一步,詞庫與學習資料一律是簡體(crates/qingjian-core/src/traditional/), 使用者說明見 docs/user/input/traditional.md。以下為當初的分析。

目標客群:習慣打拼音(全拼 / 雙拼),但希望能直接輸出繁體字的用戶。 作法:

  1. 將 ferrous-opencc 作為 qingjian-core 的一個可選依賴或內建功能。
  2. 在 GeneralConfig 增加 traditional: bool 的設定選項。
  3. 在 Core 的候選詞結果輸出前,若該選項為 true,則進行簡轉繁。 優點:架構改動最小,跨平台(Windows / macOS / CLI)共享一致的轉換邏輯,完全滿足官方維護者的期望。

軌道二:替換原生台灣繁體詞庫 (Native zh-TW Dictionary)

目標客群:真正的台灣大千注音使用者,需要精確的台灣讀音與在地詞彙。 作法: 這部分不需要修改輸入法核心 Rust 程式碼,而是屬於「資料工程」:

  1. 編譯專屬詞庫 (Rust 原生實作):
    • 擴充 tools/dict-convert 工具,新增一個 Rust 原生的抓取與轉換指令(例如 cargo run --release -p qingjian-dict-convert -- fetch-mcbopomofo)。
    • 讓該 Rust 程式自動抓取開源的「小麥注音(McBopomofo)」或「萌典」資料集。
    • 將這些台灣在地詞彙與對應的注音符號,在 Rust 中轉換為青簡底層需要的拼音格式(如 垃圾\tle se\t8000),並直接打包為 zh-TW.qj 容器,捨棄原先 Python 腳本的過渡作法,保持專案純 Rust 的技術堆疊。
  2. 編譯專屬語言模型:
    • 收集台灣繁體維基百科與 PTT 語料。
    • 透過 qingjian-dict-convert 的 bigram 統計功能,打包出台灣專用的 zh-TW-lm.qj 語言模型。
  3. 無縫切換:
    • 教導台灣使用者,在設定檔中將詞庫路徑指向 zh-TW.qj 與 zh-TW-lm.qj,並關閉第一軌道的 OpenCC 轉換。 優點:從根本解決讀音差異、兩岸用語不同、以及一對多繁簡轉換錯誤的終極解法!

三、執行優先級 (Action Items)

  1. [優先] 完成 PR 3 (Core Traditional Output):
    • 滿足上游開源專案需求,為拼音用戶提供穩定的繁簡轉換功能。
  2. [後續] 實作 Rust 原生的台灣注音資料打包工具 (qingjian-dict-convert):
    • 將原有的 Python 腳本雛形,用 Rust 改寫並整合進 tools/dict-convert 中,釋出官方的「台灣注音資料包」與生成工具。