Download source/scripts/benchmarks/compare_zh_baselines.py from Voltline/vimeml-tiny-zh-v1: direct link, hf CLI and curl.
- Browser
- Download file 1.98 kB
-
https://huggingface.co/Voltline/vimeml-tiny-zh-v1/resolve/main/source/scripts/benchmarks/compare_zh_baselines.py
- Command line
-
hf download hf://Voltline/vimeml-tiny-zh-v1/source/scripts/benchmarks/compare_zh_baselines.py
-
curl -L -o compare_zh_baselines.py https://huggingface.co/Voltline/vimeml-tiny-zh-v1/resolve/main/source/scripts/benchmarks/compare_zh_baselines.py
1.98 kB
| """Score a Rime configuration or an external LM on the Standard zh benchmark, for vimeml-tiny-zh-v1. | |
| usage: | |
| python -I -X utf8 scripts/benchmarks/compare_zh_baselines.py engine {ice,ice-gram,luna} OUT --track full [--split blind --blind-plan PLAN] | |
| python -I -X utf8 scripts/benchmarks/compare_zh_baselines.py lm {qwen2.5-0.5b,qwen3-0.6b-base} OUT --track full [--split ...] [--device cuda] | |
| python -I -X utf8 scripts/benchmarks/score_standard_ime_zh.py compare A/result B/result OUT.json | |
| Engines need `rime_candidates.py deploy --variant V` once. See docs/zh-CN/benchmarks/baselines-zh-v1-plan.md. | |
| """ | |
| import argparse | |
| from pathlib import Path | |
| import sys | |
| ROOT = Path(__file__).resolve().parents[2] | |
| sys.path.insert(0, str(ROOT / "src")) | |
| from vimeml.benchmarks.zh_baselines import ENGINES, EXTERNAL, engine, lm # noqa: E402 | |
| def main(): | |
| parser = argparse.ArgumentParser(description=__doc__.split("\n")[0]) | |
| commands = parser.add_subparsers(dest="command", required=True) | |
| for name, choices in (("engine", ENGINES), ("lm", sorted(EXTERNAL))): | |
| p = commands.add_parser(name) | |
| p.add_argument("system", choices=choices) | |
| p.add_argument("out") | |
| p.add_argument("--track", choices=("full", "abbrev"), required=True) | |
| p.add_argument("--split", choices=("development", "blind"), default="development") | |
| p.add_argument("--blind-plan") | |
| if name == "lm": | |
| p.add_argument("--device", default="cuda") | |
| args = parser.parse_args() | |
| if args.command == "engine": | |
| summary = engine(ROOT, args.system, args.split, args.track, args.out, args.blind_plan) | |
| else: | |
| summary = lm(ROOT, args.system, args.split, args.track, args.out, args.blind_plan, args.device) | |
| a = summary["all"] | |
| print(f'{summary["system"]} {args.track}/{args.split}: top1 {a["top1"]}/{a["n"]} ({a["top1_rate"]:.3f}), ' | |
| f'top3 {a["top3_rate"]:.3f}, fallbacks {summary["fallbacks"]}') | |
| if __name__ == "__main__": | |
| main() | |