squad2-qa / src /evaluation /metrics.py
Kimis Perros
Initial deployment
461f64f
"""
Lightweight Metrics container.
Benefits:
- Facilitates addition/removal of fields without breaking callers.
- Better isolation of responsibilities around code exporting metrics for experiment tracking.
"""
from dataclasses import dataclass, asdict
from typing import Any, Dict
@dataclass(frozen=True)
class Metrics:
# Minimal required fields (aligns with official script's main ones)
exact_score: float
f1_score: float
total_num_instances: int
def export_for_exp_tracking(self) -> Dict[str, Any]:
"""
Export a dict for experiment artifacts. Skips keys that are None.
"""
raw = asdict(self)
return {k: v for k, v in raw.items() if v is not None}