code: def __init__(self, reader, cfg):
      self.reader = reader
      self.domains = ontology.all_domains
      self.domain_files = self.reader.domain_files
      self.all_data = self.reader.data
      self.test_data = self.reader.test
      self.cfg = cfg
      self.set_attribute()
  
      self.bleu_scorer = BLEUScorer()
  
      self.all_info_slot = []
      for d, s_list in ontology.informable_slots.items():
          for s in s_list:
              self.all_info_slot.append(d + "-" + s)
  
      # only evaluate these slots for dialog success
      self.requestables = [
          "phone",
          "address",
          "postcode",
          "reference",
          "id",
      ]
      self.data_prefix = self.cfg.data_prefix
      self.mapping_pair_path = (
          self.data_prefix + "/multi-woz/mapping.pair"
      )
  
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 1 to create a new MultiWozEvaluator object from inherited base classes: object with example: obj = MultiWozEvaluator(reader, cfg)