PFEemp2024's picture
solving GPU error for previous version
4a1df2e
"""
BLEU Constraints
--------------------------
"""
import nltk
from textattack.constraints import Constraint
class BLEU(Constraint):
"""A constraint on BLEU score difference.
Args:
max_bleu_score (int): Maximum BLEU score allowed.
compare_against_original (bool): If `True`, compare new `x_adv` against the original `x`.
Otherwise, compare it against the previous `x_adv`.
"""
def __init__(self, max_bleu_score, compare_against_original=True):
super().__init__(compare_against_original)
if not isinstance(max_bleu_score, int):
raise TypeError("max_bleu_score must be an int")
self.max_bleu_score = max_bleu_score
def _check_constraint(self, transformed_text, reference_text):
ref = reference_text.words
hyp = transformed_text.words
bleu_score = nltk.translate.bleu_score.sentence_bleu([ref], hyp)
return bleu_score <= self.max_bleu_score
def extra_repr_keys(self):
return ["max_bleu_score"] + super().extra_repr_keys()