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()