File size: 2,029 Bytes
aacc29a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""CLI: WER comparison + NE-F1 ablation table (paper Tables 3 & 4).

    python scribe/training/scripts/evaluate.py \
      --input artifacts/evaluations/darag_all_preds.jsonl \
      --prediction-columns raw_asr corrected_text gec_pred \
      --wer-output artifacts/evaluations/darag_wer.json \
      --ne-f1-output artifacts/evaluations/darag_ne_f1.json
"""

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.evaluate import build_reports, render_ne_f1_table  # noqa: E402


def main() -> None:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--input", required=True)
    parser.add_argument("--prediction-columns", nargs="+", default=["raw_asr", "corrected_text", "gec_pred"])
    parser.add_argument("--wer-output", default="artifacts/evaluations/darag_wer.json")
    parser.add_argument("--ne-f1-output", default="artifacts/evaluations/darag_ne_f1.json")
    parser.add_argument("--stratified-output", default=None)
    args = parser.parse_args()

    reports = build_reports(
        input_path=Path(args.input),
        prediction_columns=args.prediction_columns,
        wer_output=Path(args.wer_output) if args.wer_output else None,
        ne_f1_output=Path(args.ne_f1_output) if args.ne_f1_output else None,
        stratified_output=Path(args.stratified_output) if args.stratified_output else None,
    )
    print("== WER / term-F1 (paper Table 3) ==")
    print(json.dumps(reports["wer"], ensure_ascii=False, indent=2))
    print("\n== NE micro-F1 ablation (paper Table 4) ==")
    print(render_ne_f1_table(reports["ne_f1"]))
    print("\n== Frozen-eval categories ==")
    print(json.dumps(reports["stratified"], ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()