Исходный код abs_text_attack.attacks.DeepWordBug_en

from textattack import Attack as TAAttack
from textattack.constraints.overlap import LevenshteinEditDistance
from textattack.constraints.pre_transformation import (
    RepeatModification,
    StopwordModification,
)
from textattack.goal_functions import UntargetedClassification
from textattack.search_methods import GreedyWordSwapWIR
from textattack.transformations import (
    CompositeTransformation,
    WordSwapNeighboringCharacterSwap,
    WordSwapRandomCharacterDeletion,
    WordSwapRandomCharacterInsertion,
    WordSwapRandomCharacterSubstitution,
)

from abs_text_attack.core.interfaces import Attack

[документация] class DeepWordBug(Attack):
[документация] @staticmethod def build(model_wrapper, kwargs = {}): if kwargs.get("use_all_transformations", True): transformation = CompositeTransformation( [ WordSwapNeighboringCharacterSwap(), WordSwapRandomCharacterSubstitution(), WordSwapRandomCharacterDeletion(), WordSwapRandomCharacterInsertion(), ] ) else: transformation = WordSwapRandomCharacterSubstitution() constraints = [RepeatModification(), StopwordModification()] constraints.append(LevenshteinEditDistance(kwargs.get("leven_dist", 30))) goal_function = UntargetedClassification(model_wrapper) search_method = GreedyWordSwapWIR() return TAAttack(goal_function, constraints, transformation, search_method)