音韵推论 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,

更希望成为东亚历史音韵研究的共用基础平台。