code: def multi_act_eval(self, data, eval_dial_list=None):
      dials = self.pack_dial(data)
      total_act_num, total_slot_num = 0, 0
  
      dial_num = 0
      turn_count = 0
      for dial_id in dials:
          if eval_dial_list and dial_id + ".json" not in eval_dial_list:
              continue
          dial_num += 1
          dial = dials[dial_id]
          for turn_num, turn in enumerate(dial):
              if turn_num == 0:
                  continue
              target = (
                  turn["multi_act_gen"]
                  if self.reader.multi_acts_record is not None
                  else turn["aspn_gen"]
              )
  
              # diversity
              act_collect, slot_collect = {}, {}
              act_type_collect = {}
              slot_score = 0
              for act_str in target.split(" | "):
                  pred_acts = self.reader.aspan_to_act_list(act_str)
                  act_type = ""
                  for act in pred_acts:
                      d, a, s = act.split("-")
                      if d + "-" + a not in act_collect:
                          act_collect[d + "-" + a] = {s: 1}
                          slot_score += 1
                          act_type += d + "-" + a + ";"
                      elif s not in act_collect:
                          act_collect[d + "-" + a][s] = 1
                          slot_score += 1
                      slot_collect[s] = 1
                  act_type_collect[act_type] = 1
              total_act_num += len(act_collect)
              total_slot_num += len(slot_collect)
              turn_count += 1
  
      total_act_num = total_act_num / (float(turn_count) + 1e-10)
      total_slot_num = total_slot_num / (float(turn_count) + 1e-10)
      return total_act_num, total_slot_num
  
imports: import math, logging, copy, json
  from collections import Counter, OrderedDict
  from nltk.util import ngrams
  from .None import ontology
  from .clean_dataset import clean_slot_values
label_desc: Use image node_id 15 for calling the MultiWozEvaluator obj's underlying member method code with example usage: obj.multi_act_eval(data, eval_dial_list) and returns: total_act_num,  total_slot_num