team-sinhalanuwana / training /prepare_star_data.py
Senali D
Final submission: code, predictions, training
044f4e3 verified
Raw History Blame Contribute Delete
1.43 kB
import argparse
import json
import random
from pathlib import Path
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--questions", default="data/train/verified-mcq.jsonl")
parser.add_argument("--exclude", default="data/train/star2/overlap/excluded_ids.txt",
help="ids that review_overlap.py found similar to a dev or test question")
parser.add_argument("--out_dir", default="data/train/star2")
parser.add_argument("--shards", type=int, default=2)
parser.add_argument("--seed", type=int, default=0)
args = parser.parse_args()
lines = Path(args.questions).read_text(encoding="utf-8").splitlines()
excluded = set(Path(args.exclude).read_text(encoding="utf-8").split())
kept = [line for line in lines if json.loads(line)["id"] not in excluded]
assert len(lines) - len(kept) == len(excluded), "an excluded id is not in the question file"
random.Random(args.seed).shuffle(kept)
out_dir = Path(args.out_dir)
out_dir.mkdir(parents=True, exist_ok=True)
for n in range(args.shards):
shard = kept[n :: args.shards]
(out_dir / f"shard-{n}.jsonl").write_text("".join(line + "\n" for line in shard), encoding="utf-8")
print(f"shard-{n}.jsonl: {len(shard)} questions")
print(f"Kept {len(kept)} of {len(lines)} questions; excluded {len(excluded)} listed in {args.exclude}")
if __name__ == "__main__":
main()