Spaces:
Sleeping
Sleeping
File size: 3,143 Bytes
3b3f405 | 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | """Build reproducible FEVER and SciFact sample datasets."""
from __future__ import annotations
import argparse
from pathlib import Path
from data.sample_pipeline import (
build_data_quality_markdown,
build_fever_sample,
build_quality_report,
build_scifact_sample,
write_sample_jsonl,
)
from data.build_evidence_corpus import build_evidence_corpus
from evaluation.reporting import write_report
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Build FEVER and SciFact sample artifacts.")
parser.add_argument("--fever-train", type=int, default=200)
parser.add_argument("--fever-val", type=int, default=50)
parser.add_argument("--fever-test", type=int, default=50)
parser.add_argument("--scifact-train", type=int, default=200)
parser.add_argument("--scifact-val", type=int, default=50)
parser.add_argument("--scifact-test", type=int, default=50)
parser.add_argument("--seed", type=int, default=42)
parser.add_argument("--output-dir", default="data/processed")
parser.add_argument("--reports-dir", default="reports")
return parser
def main() -> None: # pragma: no cover - script entrypoint
args = build_parser().parse_args()
output_dir = Path(args.output_dir)
reports_dir = Path(args.reports_dir)
output_dir.mkdir(parents=True, exist_ok=True)
reports_dir.mkdir(parents=True, exist_ok=True)
fever_train, fever_val, fever_test = build_fever_sample(
train_size=args.fever_train,
val_size=args.fever_val,
test_size=args.fever_test,
seed=args.seed,
)
scifact_train, scifact_val, scifact_test, scifact_corpus = build_scifact_sample(
train_size=args.scifact_train,
val_size=args.scifact_val,
test_size=args.scifact_test,
seed=args.seed,
)
write_sample_jsonl(fever_train, output_dir / "fever_train.jsonl")
write_sample_jsonl(fever_val, output_dir / "fever_val.jsonl")
write_sample_jsonl(fever_test, output_dir / "fever_test.jsonl")
write_sample_jsonl(scifact_train, output_dir / "scifact_train.jsonl")
write_sample_jsonl(scifact_val, output_dir / "scifact_val.jsonl")
write_sample_jsonl(scifact_test, output_dir / "scifact_test.jsonl")
build_evidence_corpus(
[*fever_train, *fever_val, *fever_test, *scifact_train, *scifact_val, *scifact_test],
output_dir / "evidence_corpus.jsonl",
)
all_records = [*fever_train, *fever_val, *fever_test, *scifact_train, *scifact_val, *scifact_test]
quality_report = build_quality_report(all_records)
write_report(quality_report, reports_dir / "data_quality.json")
(reports_dir / "data_quality.md").write_text(build_data_quality_markdown(quality_report), encoding="utf-8")
print("Built sample datasets:")
print(f" FEVER records: {len(fever_train)} / {len(fever_val)} / {len(fever_test)}")
print(f" SciFact records: {len(scifact_train)} / {len(scifact_val)} / {len(scifact_test)}")
print(f" SciFact corpus passages: {len(scifact_corpus)}")
if __name__ == "__main__": # pragma: no cover - script entrypoint
main()
|