MCPcopy
hub / github.com/QData/TextAttack / log_summary

Method log_summary

textattack/loggers/attack_log_manager.py:93–174  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

91 self.log_summary_rows(attack_detail_rows, "Attack Details", "attack_details")
92
93 def log_summary(self):
94 total_attacks = len(self.results)
95 if total_attacks == 0:
96 return
97
98 # Default metrics - calculated on every attack
99 attack_success_stats = AttackSuccessRate().calculate(self.results)
100 words_perturbed_stats = WordsPerturbed().calculate(self.results)
101 attack_query_stats = AttackQueries().calculate(self.results)
102
103 # @TODO generate this table based on user input - each column in specific class
104 # Example to demonstrate:
105 # summary_table_rows = attack_success_stats.display_row() + words_perturbed_stats.display_row() + ...
106 summary_table_rows = [
107 [
108 "Number of successful attacks:",
109 attack_success_stats["successful_attacks"],
110 ],
111 ["Number of failed attacks:", attack_success_stats["failed_attacks"]],
112 ["Number of skipped attacks:", attack_success_stats["skipped_attacks"]],
113 [
114 "Original accuracy:",
115 str(attack_success_stats["original_accuracy"]) + "%",
116 ],
117 [
118 "Accuracy under attack:",
119 str(attack_success_stats["attack_accuracy_perc"]) + "%",
120 ],
121 [
122 "Attack success rate:",
123 str(attack_success_stats["attack_success_rate"]) + "%",
124 ],
125 [
126 "Average perturbed word %:",
127 str(words_perturbed_stats["avg_word_perturbed_perc"]) + "%",
128 ],
129 [
130 "Average num. words per input:",
131 words_perturbed_stats["avg_word_perturbed"],
132 ],
133 ]
134
135 summary_table_rows.append(
136 ["Avg num queries:", attack_query_stats["avg_num_queries"]]
137 )
138
139 for metric_name, metric in self.metrics.items():
140 summary_table_rows.append([metric_name, metric.calculate(self.results)])
141
142 if self.enable_advance_metrics:
143 perplexity_stats = Perplexity().calculate(self.results)
144 use_stats = USEMetric().calculate(self.results)
145
146 summary_table_rows.append(
147 [
148 "Average Original Perplexity:",
149 perplexity_stats["avg_original_perplexity"],
150 ]

Callers 3

log_resultsMethod · 0.95
_attackMethod · 0.80
_attack_parallelMethod · 0.80

Calls 8

log_summary_rowsMethod · 0.95
AttackSuccessRateClass · 0.90
WordsPerturbedClass · 0.90
AttackQueriesClass · 0.90
PerplexityClass · 0.90
USEMetricClass · 0.90
calculateMethod · 0.45
log_histMethod · 0.45

Tested by

no test coverage detected