Ai-detector-websterfly / scripts /augment_training.py
Websterfly's picture
Deploy Websterfly educational AI detection workbench
97799b9 verified
Raw History Blame Contribute Delete
785 Bytes
"""Apply pinned RAID surface attacks to both classes, retaining source groups."""
import argparse,json
from pathlib import Path
from app.robustness import raid_attack
def main():
p=argparse.ArgumentParser();p.add_argument('input',type=Path);p.add_argument('--output',type=Path,required=True);a=p.parse_args()
with a.output.open('w') as out:
for line in a.input.read_text().splitlines():
row=json.loads(line)
if row.get('split')!='train':raise ValueError('Augment training partition only; do not leak validation/test derivatives.')
out.write(json.dumps(row|{'attack':'none'})+'\n')
for kind in ['zero_width','whitespace','homoglyph']:
out.write(json.dumps(row|{'text':raid_attack(row['text'],kind)['generation'],'attack':kind})+'\n')
if __name__=='__main__':main()