音韻推論 Engine 要如何測試?Quizzman Fanqie Engine QA 流程解析

Quizzman Fanqie Engine 系列(第十三篇)

上一篇:從 Middle Chinese 到拼音與漢越音:支援多種讀音系統

音韻推論 Engine 要如何測試?Quizzman Fanqie Engine QA 流程解析

一般軟體通常只要比較輸出結果是否符合預期即可完成測試。然而,對於歷史音韻推論 Engine 而言,問題要複雜得多。一個漢字可能同時存在多個反切、多種讀音層、不同文獻來源,以及各種歷史變體。如果僅以「正確」或「錯誤」來判斷,往往無法反映真正的情況。因此,Quizzman Fanqie Engine 建立了一套多層次 QA 系統,讓演算法的每一步推論都能被驗證、分類與追蹤。

為什麼 Fanqie Engine 的測試這麼困難?

先看一個最簡單的例子:

國
 ↓
quốc

如果只是一本電子字典,

測試非常簡單:

Expected
 ↓
quốc

Actual
 ↓
quốc

兩者一致,

測試即可通過。

然而,

對 Quizzman Fanqie Engine 而言,

事情遠不只是如此。

Engine 不只是產生:

quốc

它還必須決定:

  • 使用哪一條反切。
  • Middle Chinese 如何重建。
  • 採用哪個聲母。
  • 採用哪個韻。
  • 聲調如何演變。
  • 為什麼最終得到 quốc

只要其中任一步驟出錯,

整條推論鏈都可能受到影響。

結果正確,不代表演算法正確

假設 Engine 最後輸出:

quốc

這並不足以證明演算法正確。

例如,

Engine 可能:

  • 重建錯誤的 Middle Chinese。
  • 選錯反切。
  • 套用了錯誤規律。
  • 卻碰巧仍然得到 quốc

這種情況稱為:

偶然正確(Accidentally Correct)

若未能及時發現,

這類錯誤可能影響數百甚至數千個漢字。

因此,

Quizzman Fanqie Engine 不只驗證最終輸出,

而是檢查整個推論流程

分層測試 Pipeline

Quizzman Fanqie Engine 的 Pipeline 分為多個階段:

反切
   ↓
Middle Chinese
   ↓
Projection
   ↓
Lexical
   ↓
Hybrid

每一層,

都有各自的測試。

例如:

  • Parser Test
  • Middle Chinese Test
  • Tone Test
  • Rime Test
  • Projection Test
  • Candidate Ranking Test
  • API Test

因此,

一旦出現問題,

開發者可以迅速定位錯誤發生的位置。

Golden Fixture

QA 系統中最重要的組成之一,

就是 Golden Fixture

這是一套經人工驗證的標準資料集。

它與一般 Benchmark 不同,

目的不是涵蓋最多漢字,

而是挑選最具代表性的案例,

驗證各項核心規律。

例如:

  • 平聲。
  • 上聲。
  • 去聲。
  • 入聲。
  • 清聲母。
  • 濁聲母。
  • 入聲 -p、-t、-c、-ch
  • 各種歷史例外。

即使只是某一條小規律被破壞,

Golden Fixture 也能立即發現。

Regression Test

所有 Rule Engine 都面臨同一個風險:

修正一個問題,卻破壞更多地方。

例如,

改善:

江攝

可能意外影響:

宕攝

又或者:

次濁平
 ↓
陰平

若規則寫錯,

可能影響數百個漢字。

因此,

每次修改規則後,

系統都會重新執行完整測試。

若出現 Regression(回歸錯誤)

修改內容便需要重新檢查,

確認無誤後才能正式發布。

聲調測試

聲調系統,

是最容易產生錯誤的模組之一。

測試內容,

不只是確認:

  • 陰平。
  • 去聲。

更會檢查:

  • Eight Tone Slot。
  • 陰/陽。
  • 平、上、去、入。
  • 聲母條件。

例如:

次濁
+
平聲

必須確認是否正確演變為:

陰平

如此才能避免演算法更新時,

破壞已經確認的歷史音變規律。

韻母測試

韻母系統同樣具有獨立測試。

例如:

  • 通攝。
  • 江攝。
  • 梗攝。
  • 流攝。
  • 深攝。

針對入聲,

還會驗證:

  • -p
  • -t
  • -c
  • -ch

測試內容,

不只是確認最終韻尾是否正確,

更要確認:

形成該韻尾的歷史條件是否正確。

例如:

-k
 ↓
-c

與:

-k
 ↓
-ch

雖然都源自中古漢語 -k

形成條件卻完全不同。

Candidate Audit

許多漢字同時具有:

  • 多個反切。
  • 多個文獻來源。
  • 多種重建方案。

因此,

僅驗證最終輸出並不足夠。

Quizzman Fanqie Engine 還會檢查:

  • Candidate Ranking 排序是否合理。
  • 每個 Candidate 的分數。
  • 為何某個 Candidate 被選為最佳結果。

如此,

即使資料持續增加,

Candidate Ranking 仍能保持穩定。

Batch Audit

除了單元測試外,

Engine 還會定期執行大型資料集測試。

例如:

  • Random Corpus
  • Benchmark
  • 標準 Corpus
  • 數千漢字 Audit

目的不只是統計準確率,

更重要的是找出:

  • 被破壞的新規律。
  • 錯誤集中出現的區域。
  • 每次更新後的異常變化。

這也是團隊長期追蹤 Engine 品質的重要方式。

分類錯誤,而非只統計錯誤

Quizzman Fanqie Engine 的另一項特色是:

並非所有差異都被視為錯誤。

Audit 完成後,

系統會進一步分類,例如:

  • True Rule Error:音韻規則真正錯誤。
  • Colloquial Variant:口語讀音差異。
  • Polyphonic Character:多音字。
  • Orthographic Difference:正字法差異。
  • Historical Variant:歷史變體。
  • Lexical Difference:詞彙層差異。

透過分類,

開發團隊能判斷:

究竟需要修改演算法,

還是只需更新資料。

API 測試

除了核心演算法,

所有 API 也都納入測試。

例如:

  • 反切解析。
  • 漢越音生成。
  • 拼音生成。
  • 反向查詢。
  • Projection。
  • Health Check。

目的是確保無論使用:

  • Web。
  • CLI。
  • API。

都能取得一致且穩定的結果。

為什麼 QA 如此重要?

一套歷史音韻推論 Engine,

可能包含數百條音韻規則。

而每一條規則,

都可能影響數千個漢字。

若缺乏完整 QA,

即使只是微小修改,

也可能讓整個系統品質下降,

卻難以及時發現。

因此,

QA 並不是程式完成後才開始的工作,

而是整體架構的一部分。

每新增一條規則,

相應的測試也必須同步建立。

測試,也是研究的一部分

Quizzman Fanqie Engine 的最終目標,

並不只是打造一套穩定的軟體。

更重要的是建立一個可以驗證歷史音韻假說的平台

當 Pipeline 的每一層都有獨立測試後,

研究者便能:

  • 修改一條規則。
  • 重新執行整個 Corpus。
  • 觀察規則帶來的影響。
  • 以資料驗證假說,而非依賴主觀判斷。

因此,

Quizzman Fanqie Engine 的 QA 系統,

不只是軟體品質保證工具,

也是歷史語言學研究的重要基礎設施。

下一篇

在介紹完架構、演算法、Benchmark 與 QA 系統後,

本系列最後一篇將展望 Quizzman Fanqie Engine 的未來發展。

除了漢越音推論之外,

平台還可持續擴展至:

  • 漢日音(Kan-on、Go-on)。
  • 漢韓音。
  • 漢語各地方言。
  • 古文獻處理。
  • OCR。
  • 東亞歷史語言研究中的 AI 應用。

Quizzman Fanqie Engine 的目標,

不只是打造一套漢越音推論 Engine,

更希望成為東亞歷史音韻研究的共用基礎平台。