class_docstr: Logs attack results to Weights & Biases.
code: def log_attack_result(self, result):
      original_text_colored, perturbed_text_colored = result.diff_color(
          color_method="html"
      )
      result_num = len(self._result_table_rows)
      self._result_table_rows.append(
          [
              f"<b>Result {result_num}</b>",
              original_text_colored,
              perturbed_text_colored,
          ]
      )
      result_diff_table = html_table_from_rows(
          [[original_text_colored, perturbed_text_colored]]
      )
      result_diff_table = wandb.Html(result_diff_table)
      wandb.log(
          {
              "result": result_diff_table,
              "original_output": result.original_result.output,
              "perturbed_output": result.perturbed_result.output,
          }
      )
      self._log_result_table()
  
file_path: TextAttack/textattack/loggers/weights_and_biases_logger.py
imports: from textattack.shared.utils import LazyLoader, html_table_from_rows
  from .logger import Logger
label_desc: Use image node_id 5 for calling the WeightsAndBiasesLogger obj's underlying member method code with example usage: obj.log_attack_result(result) without return types