Spaces:
Sleeping
Sleeping
| """CLI: leakage / memorization report for synthetic data (paper App. C / Table 6). | |
| python scribe/training/scripts/check_leakage.py \ | |
| --synthetic artifacts/synthetic/synthetic_clean_smoke.jsonl \ | |
| --real artifacts/gec_pairs/vimedcss_gipformer_pairs_smoke.jsonl \ | |
| --output artifacts/evaluations/leakage_smoke.json | |
| Requires the training extras (sentence-transformers, sacrebleu). | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import sys | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe" / "training")) | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[3] / "scribe")) | |
| from gec.cliutil import configure_stdout # noqa: E402 | |
| configure_stdout() | |
| from gec.data import read_jsonl # noqa: E402 | |
| from gec.leakage import leakage_report # noqa: E402 | |
| from gec.retrieval import DEFAULT_SEMANTIC_MODEL # noqa: E402 | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument("--synthetic", required=True, help="synthetic_clean.jsonl (clean_text).") | |
| parser.add_argument("--real", required=True, help="GEC pairs JSONL (gold_text/segment_text).") | |
| parser.add_argument("--model", default=DEFAULT_SEMANTIC_MODEL) | |
| parser.add_argument("--label", default="synthetic") | |
| parser.add_argument("--output", default="artifacts/evaluations/leakage.json") | |
| args = parser.parse_args() | |
| synthetic_texts = [ | |
| r["clean_text"] for r in read_jsonl(Path(args.synthetic)) if r.get("clean_text") | |
| ] | |
| real_texts = [ | |
| str(r.get("gold_text") or r.get("segment_text") or "").strip() | |
| for r in read_jsonl(Path(args.real)) | |
| if str(r.get("gold_text") or r.get("segment_text") or "").strip() | |
| ] | |
| report = leakage_report(synthetic_texts, real_texts, model_name=args.model, dataset_label=args.label) | |
| text = json.dumps(report, ensure_ascii=False, indent=2) | |
| output_path = Path(args.output) | |
| output_path.parent.mkdir(parents=True, exist_ok=True) | |
| output_path.write_text(text, encoding="utf-8") | |
| print(text) | |
| if __name__ == "__main__": | |
| main() | |