Source code for textattack.metrics.recipe

"""
Attack Metric Quality Recipes:
==============================

"""

from textattack.metrics.quality_metrics.bert_score import BERTScoreMetric
from textattack.metrics.quality_metrics.meteor_score import MeteorMetric
from textattack.metrics.quality_metrics.perplexity import Perplexity
from textattack.metrics.quality_metrics.sentence_bert import SBERTMetric
from textattack.metrics.quality_metrics.use import USEMetric

from .metric import Metric


[docs]class AdvancedAttackMetric(Metric): """Calculate a suite of advanced metrics to evaluate attackResults' quality.""" def __init__(self, choices=["use"]): self.achoices = choices
[docs] def calculate(self, results): advanced_metrics = {} if "use" in self.achoices: advanced_metrics.update(USEMetric().calculate(results)) if "perplexity" in self.achoices: advanced_metrics.update(Perplexity().calculate(results)) if "bert_score" in self.achoices: advanced_metrics.update(BERTScoreMetric().calculate(results)) if "meteor_score" in self.achoices: advanced_metrics.update(MeteorMetric().calculate(results)) if "sbert_score" in self.achoices: advanced_metrics.update(SBERTMetric().calculate(results)) return advanced_metrics