class_docstr: Xiaosen Wang, Hao Jin, Kun He (2019).
  
  Natural Language Adversarial Attack and Defense in Word Level.
  
  http://arxiv.org/abs/1909.06723
class_docstr_tok: ["Xiaosen","Wang",",","Hao","Jin",",","Kun","He","(","2019",")",".","Natural","Language","Adversarial","Attack","and","Defense","in","Word","Level",".","http",":","\/\/arxiv.org\/abs\/1909.06723"]
code: def build(model_wrapper):
      #
      # Swap words with their embedding nearest-neighbors.
      # Embedding: Counter-fitted Paragram Embeddings.
      # Fix the hyperparameter value to N = Unrestricted (50)."
      #
      transformation = WordSwapEmbedding(max_candidates=50)
      #
      # Don't modify the stopwords
      #
      constraints = [StopwordModification()]
      #
      # Maximum words perturbed percentage of 20%
      #
      constraints.append(MaxWordsPerturbed(max_percent=0.2))
      #
      # Maximum word embedding euclidean distance δ of 0.5.
      #
      constraints.append(
          WordEmbeddingDistance(
              max_mse_dist=0.5, compare_against_original=False
          )
      )
      #
      # Goal is untargeted classification
      #
      goal_function = UntargetedClassification(model_wrapper)
      #
      # Perform word substitution with an improved genetic algorithm.
      # Fix the hyperparameter values to S = 60, M = 20, λ = 5."
      #
      search_method = ImprovedGeneticAlgorithm(
          pop_size=60,
          max_iters=20,
          max_replace_times_per_index=5,
          post_crossover_check=False,
      )
  
      return Attack(
          goal_function, constraints, transformation, search_method
      )
  
file_path: TextAttack/textattack/attack_recipes/iga_wang_2019.py
imports: from textattack import Attack
  from textattack.constraints.overlap import MaxWordsPerturbed
  from textattack.constraints.pre_transformation import StopwordModification
  from textattack.constraints.semantics import WordEmbeddingDistance
  from textattack.goal_functions import UntargetedClassification
  from textattack.search_methods import ImprovedGeneticAlgorithm
  from textattack.transformations import WordSwapEmbedding
  from .attack_recipe import AttackRecipe
label_desc: Use image node_id 1 for calling the IGAWang2019 obj's underlying member method code with example usage: obj.build(model_wrapper) and returns: Attack