code: def calculate_scores(self, ground_truth, predict):
      if os.path.exists("pred") and os.path.exists("gt"):
          shutil.rmtree("pred")
          shutil.rmtree("gt")
      os.makedirs("pred", exist_ok=False)
      os.makedirs("gt", exist_ok=False)
      cnt = 0
      for g, p in zip(ground_truth, predict):
          self.dump_tmp(g, os.path.join("gt", str(cnt) + ".txt"))
          self.dump_tmp(p, os.path.join("pred", str(cnt) + ".txt"))
          cnt += 1
      self.rouge.model_filename_pattern = "#ID#.txt"
      self.rouge.system_filename_pattern = r"(\d+).txt"
      self.rouge.model_dir = "gt"
      self.rouge.system_dir = "pred"
      rouge_results = self.rouge.convert_and_evaluate()
      print(rouge_results)
  
file_path: graph4nlp/examples/pytorch/summarization/cnn/rouge.py
imports: import os
  import re
  import shutil
  from graph4nlp.pytorch.modules.evaluation.base import EvaluationMetricBase
  import pyrouge
label_desc: Use image node_id 2 for calling the SummarizationRouge obj's underlying member method code with example usage: obj.calculate_scores(ground_truth, predict) without return types