Spaces:
Runtime error
Runtime error
""" | |
CheckList: | |
========================= | |
(Beyond Accuracy: Behavioral Testing of NLP models with CheckList) | |
""" | |
from textattack import Attack | |
from textattack.constraints.pre_transformation import RepeatModification | |
from textattack.goal_functions import UntargetedClassification | |
from textattack.search_methods import GreedySearch | |
from textattack.transformations import ( | |
CompositeTransformation, | |
WordSwapChangeLocation, | |
WordSwapChangeName, | |
WordSwapChangeNumber, | |
WordSwapContract, | |
WordSwapExtend, | |
) | |
from .attack_recipe import AttackRecipe | |
class CheckList2020(AttackRecipe): | |
"""An implementation of the attack used in "Beyond Accuracy: Behavioral | |
Testing of NLP models with CheckList", Ribeiro et al., 2020. | |
This attack focuses on a number of attacks used in the Invariance Testing | |
Method: Contraction, Extension, Changing Names, Number, Location | |
https://arxiv.org/abs/2005.04118 | |
""" | |
def build(model_wrapper): | |
transformation = CompositeTransformation( | |
[ | |
WordSwapExtend(), | |
WordSwapContract(), | |
WordSwapChangeName(), | |
WordSwapChangeNumber(), | |
WordSwapChangeLocation(), | |
] | |
) | |
# Need this constraint to prevent extend and contract modifying each others' changes and forming infinite loop | |
constraints = [RepeatModification()] | |
# Untargeted attack & GreedySearch | |
goal_function = UntargetedClassification(model_wrapper) | |
search_method = GreedySearch() | |
return Attack(goal_function, constraints, transformation, search_method) | |