On Fri, Jul 31, 2026, at 2:34 PM, Jim Huang wrote:
> 感謝 kanru 的提案,我依據這三十年內的文獻予以調整和補充相關資訊,請參見附件。
>
> 對應的 HackMD 筆記:
https://hackmd.io/@sysprog/libchewing-rfc
> (可直接編輯)
>
> 更動部分:
> * 回顧 2002 年技術報告
> * 修訂目標,補充以字素 (grapheme) 為處理單位
> * 借鏡 gramambular2
> * 修訂解碼器評分
> * 分析 bigram 作為邊上的轉移成本
>
> -jserv
感謝整理!跟 2002 年技術報告作比較真是太棒了!
其實可以發現新提案的靜態資料有點類似回到第一代的三個檔案模式:
* fontree.dat -> static_dict.bin
* ph_index.dat -> static_words.txt + runtime index
* dict.dat -> static_words.txt
有點忘記原本詞頻資料是存在 fontree.dat 還是 ph_index.dat 了,新的獨立 static_lm.bin
讓資料與索引明確拆開。
實做上,目前
https://codeberg.org/chewing/libchewing/src/branch/bigram-arch
branch 裡面已有基本的資料結構,計算機率的部份還有 bug 之後會解決。下一步是先利用 tsi.src
bootstrap unigram 的 static_lm.bin,然後用同一個斷詞模組來計算 bigram count。
資料來源預計採用 C-100 語料加上 Wikipedia 語料,不過要先用小量資料測試驗證。目前計畫
static_lm.bin 中只儲存 u8 quantized 的 log10 機率,來縮小所需空間。
順序:
1. 分離 tsi.src 為僅有注音的 tsi.csv 以及 unigram 的 tsi_unigram.arpa
(預計會使用 ARPA 格式這樣以後如要用其他通用工具來後製也方便)
2. 用新的工具程式將 tsi.csv 轉為 static_dict.bin 與 static_words.txt
用新的工具程式將 tsi_unigram.arpa 轉為 static_lm.bin
3. 用新的工具程式,讀入上一動的靜態資料後,多工處理語料資料為新的 tsi_lm.arpa
應該會分為一個斷詞程式,跟一個統計程式,或是直接用 KenLM
把 tsi_lm.arpa 存入 libchewing-data 儲存庫作為原始資料供下游重製使用
4. 使用 tsi_lm.arpa 重新編譯 static_lm.bin
以上實做計畫以及實際的資料結構跟驗算法都有可能因為實做的方便性,或是中途遇到的問題而作調整,
之後還需要整理回 RFC 檔案作為新版的技術報告。
kanru