CoolFace
Datasetpublic

gujilab/chinese-classical-bench

Chinese Classical Bench 中国古典语言能力评测基准 — 6 个任务 × 100 题 = 600 道,覆盖翻译、断句、字义、典故、续写填空、现代→文言压缩。 📊 在线排行榜: 🤗 Space — chinese-classical-bench-leaderboard 🔗 评测代码 & runner: github.com/gujilab/chinese-classical-bench — eval runner(OpenAI 兼容端点)、打分器、排行榜聚合脚本 📦 配套语料集: gujilab/chinese-classical-corpus (CC0 公有领域) — 题目均从该语料抽样生成 为什么做这个 中文(尤其文言文)常被说成"高密度优势"。这套基础设施(bench + corpus + 4 个论点实证实验)想把这个论点变成可验证的数字 —— 包括它在哪些场景成立、在哪些场景不成立。 Tokenizer 层面(实证) 7 个主流 tokenizer… See the full description on the dataset page: https://huggingface.co/datasets/gujilab/chinese-classical-bench.

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes53downloads
Dataset Card

Chinese Classical Bench

中国古典语言能力评测基准 — 6 个任务 × 100 题 = 600 道,覆盖翻译、断句、字义、典故、续写填空、现代→文言压缩。

📊 在线排行榜: 🤗 Space — chinese-classical-bench-leaderboard 🔗 评测代码 & runner: github.com/gujilab/chinese-classical-bench — eval runner(OpenAI 兼容端点)、打分器、排行榜聚合脚本 📦 配套语料集: gujilab/chinese-classical-corpus (CC0 公有领域) — 题目均从该语料抽样生成

为什么做这个

中文(尤其文言文)常被说成"高密度优势"。这套基础设施(bench + corpus + 4 个论点实证实验)想把这个论点变成可验证的数字 —— 包括它在哪些场景成立、在哪些场景不成立

Tokenizer 层面(实证)

7 个主流 tokenizer 横评(详见下方 Tokenizer 横评章节):

  • 国产 tokenizer (Qwen / DeepSeek / GLM) 上文言文 = 英文 0.57×、现代中文 0.69×
  • 老 GPT-3.5/4 (cl100k_base) 对中文比英文还费 19% token
  • 这一层的"省 token"是真的 ✓

Prompt / 任务层面(实证)

3 组下游实验(experiments/):

场景Token 节省准确率 / 质量结论
英文 prompt → 文言文 prompt−74% 字符+2pp 准确率大赢
现代中文 prompt → 文言文 prompt(同任务)−4.7%−11.3pp不是 free lunch
典故 prompt vs 字面展开(盲评 140 对)−25% token字面赢 49% > 典故 38%省 token,质量有代价

校准结论

Chinese 高密度 = 真的 tokenizer-level 优势,≠ LLM-task-level free lunch。 替换英文 prompt 大赢;替换现代中文或用典故压缩则省 token 但有质量代价。 详细数据:prompt-compression / idiom-prompting

时间深度(未实证)

3000+ 年单一书写系统的跨时代训练信号 —— 尚未做 task,欢迎社区贡献。


现状问题:训练语料古典占比极低,公开 benchmark(CMMLU / C-Eval)几乎只评白话,没人针对古典的"高密度短文本"优化 tokenizer 或评测体系。本评测 + 配套语料集是想把这条赛道做扎实的两个基础设施 —— 让 LLM 中文古典能力变得可量化、可对比、可训练

具体到这个 bench,600 题在回答两个问题:

  1. 1.哪些模型在中文古典任务上已经达到可用水平? —— 给做古籍/教育/出版/法律/中医等应用的人选模型用
  2. 2.不同能力维度(理解 / 操控 / 记忆 / 推理 / 压缩)的 ceiling 和 bottleneck 在哪? —— 给训练/微调的人定方向用

6 个任务

config名称题数主要指标
translate古译今100chrF (n=1..6, F2) + char-F1
punctuate断句加标点100标点位置 F1 + 字符保留率
char-gloss字义解释100chrF (punct-stripped) + char-F1
idiom-source典故出处100书名 EM + 引文 chrF
fill-in字词填空100单字精确匹配
compress现代汉语→文言压缩100chrF × (1 − 输出/输入字符比) = efficiency

数据格式

每行一条 JSON 记录,模型只看 instruction + input,输出与 reference 比较:

json
{
  "id": "translate#1",
  "task": "translate",
  "instruction": "将下列古文翻译成现代汉语:",
  "input": "周市军还去,田儋因率兵东略定齐地。",
  "reference": "周市的军队撤走以后,田儋乘机带兵东进,夺取并平定了齐国的土地。",
  "metadata": {"source": "史记·七十列传/田儋列传", "category": "史"}
}

metadata 含评分需要的额外字段(如 idiom-source 的标准书名、fill-in 的被挖空位置)。任务详细说明见 docs/tasks.md

Quick Start

python
from datasets import load_dataset

translate = load_dataset("gujilab/chinese-classical-bench", "translate", split="train")
punctuate = load_dataset("gujilab/chinese-classical-bench", "punctuate", split="train")
print(translate[0])

跑评测(需先启动一个 OpenAI / Anthropic 兼容端点):

bash
git clone https://github.com/gujilab/chinese-classical-bench
python scripts/eval_runner.py \
  --model Qwen/Qwen3-7B-Instruct \
  --base-url http://localhost:8000/v1 --api-key EMPTY --concurrency 8
python scripts/aggregate.py --out leaderboard.md

Leaderboard

Modeltranslate (chrF)punctuate (Punct F1)char-gloss (chrF)idiom-source (Book EM)fill-in (Exact)compress (Eff)Avg
claude-opus-4-70.2440.8000.2130.6500.8400.1470.482
claude-opus-4-7-thinking0.2420.7900.2070.6300.8700.0910.472
claude-sonnet-4-60.2310.7850.1570.5600.7000.1630.432
deepseek-3.20.2400.7450.1390.7400.5500.1630.429
glm-50.2410.7990.1760.7400.4400.1530.425
minimax-m2.10.2160.7090.1730.6600.6300.0940.414
Qwen3.5-35B-A3B0.2250.7530.1750.5000.3800.407
minimax-m2.50.2190.7090.1610.5500.5900.0920.387
qwen3-coder-next0.2270.7670.1160.5400.5200.1130.381
claude-haiku-4-50.2040.7290.1280.3400.3500.0870.306
compress (Eff) = chrF × (1 − 输出/输入字符比),同时奖励压缩率和保真度。人类参考上限 ≈ 0.49。

核心发现

  1. 1.Claude Opus 4.7 接管榜首(0.482)—— 5/6 项前三(翻译 / 断句 / 字义 / 单字填空 / 总分),仅典故记忆和压缩不是绝对最强。同代 Sonnet 4.6 仅 0.432、Haiku 4.5 仅 0.306 —— 说明"Claude 中文古典弱"是尺寸问题
  2. 2.Thinking 模式整体退步 —— Opus 4.7 thinking (0.472) 6 项里 5 项更差。压缩任务 thinking 崩塌(0.091 vs 0.147):thinking 把内容压成 ratio 0.26(人类 0.51),chrF 跌到 0.20。"力求简洁"指令下走过头,延长推理对"分寸"类任务有害
  3. 3.压缩任务 Sonnet 4.6 / DeepSeek V3.2 并列第一(0.163) —— 都把 ratio 维持在 ~0.52(人类基线 0.51),chrF 维持 0.35。GLM-5 (0.153) 紧随。这个任务直接验证"中文古典作为信息密度工具"的可行性 —— 顶级模型已经能稳定输出 50% 压缩、保真度可接受的文言文
  4. 4.典故识别 GLM-5 已追平 DeepSeek —— 并列 (0.74) > MiniMax-2.1 (0.66) > Opus 4.7 (0.65)
  5. 5.fill-in(单字填空)Claude 全家通吃 —— Opus thinking 0.87 / Opus 0.84 / Sonnet 0.70 / DeepSeek 0.55
  6. 6.GLM-5(0.425)/ DeepSeek(0.429)/ Sonnet 4.6(0.432)三家咬得很紧 —— 三家平均分仅差 0.007,国产开源在中文古典上已经平视 Claude 中端
  7. 7.MiniMax M2.1 → M2.5 是中文古典 retrograde —— 新版 m2.5 (0.387) 反而低于老版 m2.1 (0.414)
欢迎提交其他模型结果 —— 在 GitHub 仓库 开 PR 把 results/<model>.json 加进来即可。

关于分数

  • chrF 是字符级 n-gram F2 分数(n=1..6),同义改写会扣分但语义对的话主要靠 char_f1 兜底
  • `chrF` 与 LLM-as-judge 相关性 moderate — Claude Opus 4.7 对 5 模型 × 1000 道题重打分(experiments/llm-judge):translate Pearson +0.46 / char-gloss +0.47。chrF 是方向正确的下限,不是质量指标。Judge 重排后 Sonnet 4.6 上升、GLM-5 下降 —— 当前 chrF leaderboard 排名需要结合 judge 分数解读
  • idiom-source 的 Book EM 较宽松:模型答 "《史记》" 就算对,不要求卷次/篇名匹配
  • fill-in 单字答案,模型能从带引号或单字输出中抽取

Tokenizer 横评(实证文言文的 token 经济学)

为了量化"中文古典 = 高密度语言"这个论点,我们做了一个独立的 tokenizer 横评:30 对文言文 + 现代中文 + 英文翻译三联对照,跑过 7 个主流 tokenizer(详见 tokenizer_study/report.md)。

Tokenizer文言文现代中文英文文言/英文
🥇 Qwen2.5 / Qwen352.064.691.20.57×
🥇 DeepSeek-V351.261.189.30.57×
GLM-452.363.290.90.58×
Yi-1.557.768.795.40.60×
GPT-4o (o200k_base)57.676.389.00.65×
GPT-3.5/4 (cl100k_base)79.4108.691.00.87×

关键发现

  • 国产 tokenizer (Qwen / DeepSeek / GLM / Yi) 对文言文 ≈ 英文的 57%
  • 老 GPT-3.5/4 (cl100k_base) 对现代中文反而比英文还费 19% token(1.19×)—— 老 GPT 用户为中文付了双倍的钱
  • 用 DeepSeek-V3 tokenizer,1000 个英文 token ≈ 685 现代中文 token ≈ 574 文言文 token —— 用文言文做 prompt 压缩可降本 ~45%

已知 limitation

  • translate / char-gloss 用 chrF 评分,对同义改写过严 — 已加 LLM judge 实验experiments/llm-judge,Pearson 0.46-0.47,建议结合使用)
  • 题目均从配套 corpus 抽样,可能与某些模型的训练数据有重合污染(开源模型大多训练过《十三经》《史记》)
  • 100 题/task 是 trade-off:太少噪声大,太多跑评测贵 — 后续可能扩到 200/task

License

题目和评分代码:MIT。源数据来自 chinese-classical-corpus (CC0)。