Skip to content

替換輔助碼

ksqsf edited this page Dec 12, 2023 · 7 revisions

數據量較大,不建議手動進行處理。本方案提供了完整的工具供用戶自行生成想要的方案,下面以虎碼 + 簡體字優先爲例做一解說。

環境要求

  • schemagen.py 需要 Python 3.10+ 和少數 pip 包(根據 import 報錯按需安裝即可)
  • update_compact_dicts.sh 需要 bash、grep、sed 等命令

已測試在 Linux 和 macOS 下是可用的。建議 Windows 用戶在 WSL 環境下操作。

文件說明

整句模式涉及的詞庫數量很多:

  1. 單字主表 moran.chars.dict.yaml —— 該表非常重要!!
  2. 詞語表 moran.extended.dict.yaml 及其中導入的所有其他詞表(words, computer, moe, thuocl, tencent
  3. 簡碼表 moran_fixed.dict.yaml

若只使用字詞模式,可只更新 moran_fixed.dict.yaml 文件。

1. 準備輔助碼表

創建 tools/data/tigerdb.txt ,將虎碼碼表中的單字信息提取出來,只保留前2位,例如

他	je
这	vu
有	nv
个	jg
上	yf
地	ge
们	ja
你	jx
以	vj
……

2. 生成單字表

適用模式:默認模式、整句模式、輔篩模式

執行如下命令

python3 ./schemagen.py --auxiliary-code=tiger --pinyin-table=data/pinyin_simp.txt gen-chars > chars.txt

此時會將生成的單字數據輸出到 tools/chars.txt 中。手動將數據內容替換到 moran.chars.dict.yaml 文件中即可。

3. 生成簡碼表

適用模式:默認模式、字詞模式

執行如下命令

python3 ./schemagen.py --auxiliary-code=tiger --pinyin-table=data/pinyin_simp.txt gen-fixed --charset=data/simp_chars.txt --input-dict=data/simp_words.txt > fixed.txt

其中,

  • charset 參數用於指定簡碼碼表中僅含這些字
  • input-dict 參數用於指定簡碼碼表中僅含這些詞

此時會將生成的簡碼碼表輸出到 tools/fixed.txt 中,手動將數據內容替換到 moran_fixed.dict.yaml 文件中即可。

4. 替換詞庫

適用模式:默認模式、整句模式、輔篩模式

本倉庫中所分發的詞庫默認爲繁體字,若需簡體字輔助碼,需首先轉換爲簡體詞庫,一一將所有詞表用 opencc -c t2s.json 轉換即可。 🛑不要轉換 chars 字表!

以 bash 爲例,方法是:

for d in words essay tencent moe computer thuocl
do
  opencc -c t2s.json -i moran.${d}.dict.yaml -o moran.${d}.dict.yaml
done

注意,雖然此時詞庫中的詞語本身已經轉換成了簡體,但輔助碼編碼沒有轉換,仍是繁體。使用 tools/update_compact_dicts.sh 腳本批量自動轉換詞庫中的輔助碼編碼。

$ (cd tools ; ./update_compact_dicts.sh)

5、替換輔篩模式碼表

適用模式:輔篩模式

輔篩模式所依據的輔助碼定義來自於 lua/zrmdb.txt 文件,你可以直接用第一步生成的輔助碼替換其中數據。

另一種辦法是把第一步生成的輔助碼文件拷貝到 lua 目錄下,再修改 moran_aux_translator.lua 中的輔助碼文件路徑:搜索 zrmdb.txt 替換成新的文件名即可。

Clone this wiki locally