File size: 785 Bytes
97799b9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | """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()
|