#!/usr/bin/env python3 import random from pathlib import Path IN = Path("data/formatted/dialogues.txt") TRAIN_OUT = Path("data/splits/train.txt") VAL_OUT = Path("data/splits/val.txt") SEED = 42 VAL_FRAC = 0.05 def main(): lines = IN.read_text(encoding="utf-8").splitlines() total = len(lines) seen = set() unique = [] for ln in lines: if ln in seen: continue seen.add(ln) unique.append(ln) n_dupes = total - len(unique) rng = random.Random(SEED) rng.shuffle(unique) n_val = int(len(unique) * VAL_FRAC) val = unique[:n_val] train = unique[n_val:] TRAIN_OUT.parent.mkdir(parents=True, exist_ok=True) TRAIN_OUT.write_text("\n".join(train) + "\n", encoding="utf-8") VAL_OUT.write_text("\n".join(val) + "\n", encoding="utf-8") print(f"total={total} dupes_dropped={n_dupes} unique={len(unique)}") print(f"train={len(train)} val={len(val)} seed={SEED}") if __name__ == "__main__": main()