The TextAttack attack module: A command line parser to run an attack from user specifications.
| 12 | |
| 13 | |
| 14 | class AttackCommand(TextAttackCommand): |
| 15 | """The TextAttack attack module: |
| 16 | |
| 17 | A command line parser to run an attack from user specifications. |
| 18 | """ |
| 19 | |
| 20 | def run(self, args): |
| 21 | attack_args = CommandLineAttackArgs(**vars(args)) |
| 22 | dataset = DatasetArgs._create_dataset_from_args(attack_args) |
| 23 | |
| 24 | if attack_args.interactive: |
| 25 | model_wrapper = ModelArgs._create_model_from_args(attack_args) |
| 26 | attack = CommandLineAttackArgs._create_attack_from_args( |
| 27 | attack_args, model_wrapper |
| 28 | ) |
| 29 | Attacker.attack_interactive(attack) |
| 30 | else: |
| 31 | model_wrapper = ModelArgs._create_model_from_args(attack_args) |
| 32 | attack = CommandLineAttackArgs._create_attack_from_args( |
| 33 | attack_args, model_wrapper |
| 34 | ) |
| 35 | attacker = Attacker(attack, dataset, attack_args) |
| 36 | attacker.attack_dataset() |
| 37 | |
| 38 | @staticmethod |
| 39 | def register_subcommand(main_parser: ArgumentParser): |
| 40 | parser = main_parser.add_parser( |
| 41 | "attack", |
| 42 | help="run an attack on an NLP model", |
| 43 | formatter_class=ArgumentDefaultsHelpFormatter, |
| 44 | ) |
| 45 | parser = CommandLineAttackArgs._add_parser_args(parser) |
| 46 | parser.set_defaults(func=AttackCommand()) |