TextAttack Documentation
Get Started
- Basic-Introduction
- Installation
- Command-Line Usage
- Quick API Usage
- FAQ
- Via Slack: Where to Ask Questions:
- Via CLI:
--help - Via our papers: More details on results
- Via readthedocs: More details on APIs
- More Concrete Questions:
Recipes
- Attack Recipes CommandLine Use
- Attack Recipes API
- Attacks on classification models
- A2T (A2T: Attack for Adversarial Training Recipe)
- Alzantot Genetic Algorithm
- Faster Alzantot Genetic Algorithm
- BAE (BAE: BERT-Based Adversarial Examples)
- BERT-Attack:
- CheckList:
- DeepWordBug
- HotFlip
- Improved Genetic Algorithm
- Input Reduction
- Kuleshov2017
- Particle Swarm Optimization
- PWWS
- TextFooler (Is BERT Really Robust?)
- TextBugger
- CLARE Recipe
- Pruthi2019: Combating with Robust Word Recognition
- Attacks on sequence-to-sequence models
- General
- Attacks on classification models
- Augmenter Recipes CommandLine Use
- Augmenter Recipes API
- TextAttack Model Zoo
- Available Models
- Evaluation Results of Available Models
- How we have trained the TextAttack Models
- Training details for each TextAttack Model
- More details on TextAttack fine-tuned NLP models (details on target NLP task, input type, output type, SOTA results on paperswithcode; model card on huggingface):
Using TextAttack
- What is an adversarial attack in NLP?
- How to Cite TextAttack
- Main Paper: TextAttack: A Framework for Adversarial Attacks, Data Augmentation, and Adversarial Training in NLP
- Our Analysis paper: Reevaluating Adversarial Examples in Natural Language
- Our Analysis paper: Searching for a Search Method: Benchmarking Search Algorithms for Generating NLP Adversarial Examples
- Our defense paper: Title: “Towards Improving Adversarial Training of NLP Models”
- Our extended use case paper: “Expanding Scope: Adapting English Adversarial Attacks to Chinese”
- Four Components of TextAttack Attacks
- Benchmarking Search Algorithms for Generating NLP Adversarial Examples
- On Quality of Generated Adversarial Examples and How to Set Attack Contraints
- Title: Reevaluating Adversarial Examples in Natural Language
- Our Github on Reevaluation: Reevaluating-NLP-Adversarial-Examples Github
- Some of our evaluation results on quality of two SOTA attack recipes
- Some of our evaluation results on how to set constraints to evaluate NLP model’s adversarial robustness
- Making Vanilla Adversarial Training of NLP Models Feasible!
- Lessons learned in designing TextAttack
- TextAttack Extended Functions (Multilingual)
- How can I contribute to TextAttack?
Notebook Tutorials
- Tutorial 0: TextAttack End-To-End (Train, Eval, Attack)
- Tutorial 1: Transformations
- Tutorial 2: Constraints
- Tutorial 3: Augmentation
- Tutorial 4: Custom Word Embeddings
- Tutorial 5: Attacking TensorFlow models
- Tutorial 6: Attacking scikit-learn models
- Tutorial 7: Attacking AllenNLP models
- Tutorial 8: Attacking Keras models
- Tutorial 9: Attacking multilingual models
- Tutorial10: Explaining Attacking BERT model using Captum
- Tutorial11: Attacking multilingual - Chinese NLP model using Textattack
API User Guide
- Attack
- Attacker
- AttackResult
- Trainer
- Datasets
- GoalFunction
- Constraints
- Transformations
- SearchMethod
Full Reference
- textattack package
- Subpackages
- textattack.attack_recipes package
- Attack Recipes Package:
- Submodules
- A2T (A2T: Attack for Adversarial Training Recipe)
A2TYoo2021- Attack Recipe Class
AttackRecipe- Imperceptible Perturbations Algorithm
BadCharacters2021- BAE (BAE: BERT-Based Adversarial Examples)
BAEGarg2019- BERT-Attack:
BERTAttackLi2020- CheckList:
CheckList2020- Attack Chinese Recipe
ChineseRecipe- CLARE Recipe
CLARE2020- DeepWordBug
DeepWordBugGao2018- Faster Alzantot Genetic Algorithm
FasterGeneticAlgorithmJia2019- Attack French Recipe
FrenchRecipe- Alzantot Genetic Algorithm
GeneticAlgorithmAlzantot2018- HotFlip
HotFlipEbrahimi2017- Improved Genetic Algorithm
IGAWang2019- Input Reduction
InputReductionFeng2018- Kuleshov2017
Kuleshov2017- MORPHEUS2020
MorpheusTan2020- Pruthi2019: Combating with Robust Word Recognition
Pruthi2019- Particle Swarm Optimization
PSOZang2020- PWWS
PWWSRen2019- Seq2Sick
Seq2SickCheng2018BlackBox- Attack Spanish Recipe
SpanishRecipe- TextBugger
TextBuggerLi2018- TextFooler (Is BERT Really Robust?)
TextFoolerJin2019
- textattack.attack_results package
- textattack.augmentation package
- TextAttack augmentation package:
- Submodules
- textattack.commands package
- TextAttack commands Package
- Submodules
- AttackCommand class
AttackCommand- AttackResumeCommand class
AttackResumeCommand- AugmentCommand class
AugmentCommand- BenchmarkRecipeCommand class
BenchmarkRecipeCommand- EvalModelCommand class
EvalModelCommandModelEvalArgs- ListThingsCommand class
ListThingsCommand- PeekDatasetCommand class
PeekDatasetCommand- TextAttack CLI main class
main()TextAttackCommand- TrainModelCommand class
TrainModelCommand
- textattack.constraints package
- Constraints
- Subpackages
- textattack.constraints.grammaticality package
- textattack.constraints.overlap package
- textattack.constraints.pre_transformation package
- Pre-Transformation:
- Submodules
- Input Column Modification
InputColumnModification- Max Modification Rate
MaxModificationRate- Max Modification Rate
MaxNumWordsModified- Max Word Index Modification
MaxWordIndexModification- Min Word Lenth
MinWordLength- Repeat Modification
RepeatModification- Stopword Modification
StopwordModificationUnmodifiableIndicesUnmodifablePhrases
- textattack.constraints.semantics package
- Submodules
- textattack.datasets package
- textattack.goal_function_results package
- Goal Function Result package:
- Subpackages
- Submodules
- textattack.goal_functions package
- Goal Functions
- Subpackages
- textattack.goal_functions.classification package
- Goal fucntion for Classification
- Submodules
- Determine for if an attack has been successful in Classification
ClassificationGoalFunction- Determine if an attack has been successful in Hard Label Classficiation.
HardLabelClassification- Determine if maintaining the same predicted label (input reduction)
InputReduction- Determine if an attack has been successful in targeted Classification
TargetedClassification- Determine successful in untargeted Classification
UntargetedClassification
- textattack.goal_functions.custom package
- textattack.goal_functions.text package
- textattack.goal_functions.classification package
- Submodules
- textattack.llms package
- textattack.loggers package
- Misc Loggers: Loggers track, visualize, and export attack results.
- Submodules
- Managing Attack Logs.
AttackLogManagerAttackLogManager.add_output_csv()AttackLogManager.add_output_file()AttackLogManager.add_output_summary_json()AttackLogManager.disable_color()AttackLogManager.enable_stdout()AttackLogManager.enable_visdom()AttackLogManager.enable_wandb()AttackLogManager.flush()AttackLogManager.log_attack_details()AttackLogManager.log_result()AttackLogManager.log_results()AttackLogManager.log_sep()AttackLogManager.log_summary()AttackLogManager.log_summary_rows()AttackLogManager.metrics
- Attack Logs to CSV
CSVLogger- Attack Logs to file
FileLogger- Attack Summary Results Logs to Json
JsonSummaryLogger- Attack Logger Wrapper
Logger- Attack Logs to Visdom
VisdomLoggerport_is_open()- Attack Logs to WandB
WeightsAndBiasesLogger
- textattack.metrics package
- textattack.models package
- textattack.prompt_augmentation package
- textattack.search_methods package
- Search Methods
- Submodules
- Reimplementation of search method from Generating Natural Language Adversarial Examples
AlzantotGeneticAlgorithm- Beam Search
BeamSearchDifferentialEvolution- Genetic Algorithm Word Swap
GeneticAlgorithm- Greedy Search
GreedySearch- Greedy Word Swap with Word Importance Ranking
GreedyWordSwapWIR- Reimplementation of search method from Xiaosen Wang, Hao Jin, Kun He (2019).
ImprovedGeneticAlgorithm- Particle Swarm Optimization
ParticleSwarmOptimizationnormalize()- Population based Search abstract class
PopulationBasedSearchPopulationMember- Search Method Abstract Class
SearchMethod
- textattack.shared package
- Shared TextAttack Functions
- Subpackages
- textattack.shared.utils package
- Submodules
LazyLoaderload_module_from_file()download_from_s3()download_from_url()http_get()path_in_cache()s3_url()set_cache_dir()unzip_file()get_textattack_model_num_labels()hashable()html_style_from_dict()html_table_from_rows()load_textattack_model_from_path()set_seed()sigmoid()ANSI_ESCAPE_CODESReprMixinTextAttackFlairTokenizeradd_indent()check_if_punctuations()check_if_subword()color_from_label()color_from_output()color_text()default_class_repr()flair_tag()has_letter()is_one_word()process_label_name()strip_BPE_artifacts()words_from_text()zip_flair_result()zip_stanza_result()batch_model_predict()
- Submodules
- textattack.shared.utils package
- Submodules
- Attacked Text Class
AttackedTextAttackedText.align_with_model_tokens()AttackedText.all_words_diff()AttackedText.convert_from_original_idxs()AttackedText.delete_word_at_index()AttackedText.first_word_diff()AttackedText.first_word_diff_index()AttackedText.free_memory()AttackedText.generate_new_attacked_text()AttackedText.get_deletion_indices()AttackedText.insert_text_after_word_index()AttackedText.insert_text_before_word_index()AttackedText.ith_word_diff()AttackedText.ner_of_word_index()AttackedText.pos_of_word_index()AttackedText.printable_text()AttackedText.replace_word_at_index()AttackedText.replace_words_at_indices()AttackedText.text_after_word_index()AttackedText.text_until_word_index()AttackedText.text_window_around_index()AttackedText.words_diff_num()AttackedText.words_diff_ratio()AttackedText.SPLIT_TOKENAttackedText.column_labelsAttackedText.newly_swapped_wordsAttackedText.num_wordsAttackedText.textAttackedText.tokenizer_inputAttackedText.wordsAttackedText.words_per_input
- Misc Checkpoints
AttackCheckpointAttackCheckpoint.load()AttackCheckpoint.save()AttackCheckpoint.dataset_offsetAttackCheckpoint.datetimeAttackCheckpoint.num_failed_attacksAttackCheckpoint.num_maximized_attacksAttackCheckpoint.num_remaining_attacksAttackCheckpoint.num_skipped_attacksAttackCheckpoint.num_successful_attacksAttackCheckpoint.results_count
- Shared data fields
- Misc Validators
transformation_consists_of()transformation_consists_of_word_swaps()transformation_consists_of_word_swaps_and_deletions()transformation_consists_of_word_swaps_differential_evolution()validate_model_goal_function_compatibility()validate_model_gradient_word_swap_compatibility()- Shared loads word embeddings and related distances
AbstractWordEmbeddingGensimWordEmbeddingWordEmbedding
- textattack.transformations package
- Transformations
- Subpackages
- textattack.transformations.sentence_transformations package
- textattack.transformations.word_insertions package
- textattack.transformations.word_merges package
- textattack.transformations.word_swaps package
- word_swaps package
- Subpackages
- Submodules
- Word Swap
WordSwap- Word Swap by Changing Location
WordSwapChangeLocationidx_to_words()- Word Swap by Changing Name
WordSwapChangeName- Word Swap by Changing Number
WordSwapChangeNumberidx_to_words()- Word Swap by Contraction
WordSwapContract- Word Swap by Invisible Deletions
WordSwapDeletions- Word Swap for Differential Evolution
WordSwapDifferentialEvolution- Word Swap by Embedding
WordSwapEmbeddingrecover_word_case()- Word Swap by Extension
WordSwapExtend- Word Swap by Gradient
WordSwapGradientBased- Word Swap by Homoglyph
WordSwapHomoglyphSwap- Word Swap by OpenHowNet
WordSwapHowNetrecover_word_case()- Word Swap by inflections
WordSwapInflections- Word Swap by Invisible Characters
WordSwapInvisibleCharacters- Word Swap by BERT-Masked LM.
WordSwapMaskedLMrecover_word_case()- Word Swap by Neighboring Character Swap
WordSwapNeighboringCharacterSwap- Word Swap by swaps characters with QWERTY adjacent keys
WordSwapQWERTY- Word Swap by Random Character Deletion
WordSwapRandomCharacterDeletion- Word Swap by Random Character Insertion
WordSwapRandomCharacterInsertion- Word Swap by Random Character Substitution
WordSwapRandomCharacterSubstitution- Word Swap by Invisible Reorderings
WordSwapReorderings- Word Swap by swapping synonyms in WordNet
WordSwapWordNet
- Submodules
- textattack.attack_recipes package
- Submodules
- Attack Class
Attack- AttackArgs Class
AttackArgsAttackArgs.create_loggers_from_args()AttackArgs.attack_nAttackArgs.checkpoint_dirAttackArgs.checkpoint_intervalAttackArgs.csv_coloring_styleAttackArgs.disable_stdoutAttackArgs.enable_advance_metricsAttackArgs.log_summary_to_jsonAttackArgs.log_to_csvAttackArgs.log_to_txtAttackArgs.log_to_visdomAttackArgs.log_to_wandbAttackArgs.metricsAttackArgs.num_examplesAttackArgs.num_examples_offsetAttackArgs.num_successful_examplesAttackArgs.num_workers_per_deviceAttackArgs.parallelAttackArgs.query_budgetAttackArgs.random_seedAttackArgs.shuffleAttackArgs.silent
CommandLineAttackArgs- Attacker Class
Attackerattack_from_queue()pytorch_multiprocessing_workaround()set_env_variables()- AugmenterArgs Class
AugmenterArgsAugmenterArgs.enable_advanced_metricsAugmenterArgs.exclude_originalAugmenterArgs.fast_augmentAugmenterArgs.high_yieldAugmenterArgs.input_columnAugmenterArgs.input_csvAugmenterArgs.interactiveAugmenterArgs.output_csvAugmenterArgs.overwriteAugmenterArgs.pct_words_to_swapAugmenterArgs.random_seedAugmenterArgs.recipeAugmenterArgs.transformations_per_example
- DatasetArgs Class
DatasetArgs- ModelArgs Class
ModelArgs- Trainer Class
Trainer- TrainingArgs Class
CommandLineTrainingArgsTrainingArgsTrainingArgs.alphaTrainingArgs.attack_epoch_intervalTrainingArgs.attack_num_workers_per_deviceTrainingArgs.checkpoint_interval_epochsTrainingArgs.checkpoint_interval_stepsTrainingArgs.early_stopping_epochsTrainingArgs.gradient_accumulation_stepsTrainingArgs.learning_rateTrainingArgs.load_best_model_at_endTrainingArgs.log_to_tbTrainingArgs.log_to_wandbTrainingArgs.logging_interval_stepTrainingArgs.num_clean_epochsTrainingArgs.num_epochsTrainingArgs.num_train_adv_examplesTrainingArgs.num_warmup_stepsTrainingArgs.output_dirTrainingArgs.parallelTrainingArgs.per_device_eval_batch_sizeTrainingArgs.per_device_train_batch_sizeTrainingArgs.query_budget_trainTrainingArgs.random_seedTrainingArgs.save_lastTrainingArgs.tb_log_dirTrainingArgs.wandb_projectTrainingArgs.weight_decay
default_output_dir()
- Subpackages