class_docstr: Compile and save results of human+model chats.
  
  Results will be saved on the level of specific conversations, as well as aggregated
  up to the level of each worker as a whole.
code: def __init__(self, opt: Dict[str, Any]):
      super().__init__(opt)
  
      # Input args
      os.makedirs(self.output_folder, exist_ok=True)
      # TODO: see if this can be moved to the superclass
      self.filter_uniform_hits = opt["filter_uniform_hits"]
  
      # Save paths
      self.unacceptable_worker_ids_path = os.path.join(
          self.output_folder, "unacceptable_worker_ids.txt"
      )
      self.annotation_selection_rate_path = os.path.join(
          self.output_folder, "annotation_selection_rates.csv"
      )
      self.likert_score_stat_path = os.path.join(
          self.output_folder, "likert_score_stats.csv"
      )
  
      self.acceptability_checker = AcceptabilityChecker()
  
file_path: ParlAI/parlai/crowdsourcing/projects/humaneval/single_model_eval/analysis/compile_results.py
imports: import os
  from collections import defaultdict
  from datetime import datetime
  from typing import Any, Dict
  import pandas
  from mephisto.data_model.worker import Worker
  import parlai.utils.logging
  from parlai.crowdsourcing.tasks.model_chat.model_chat_blueprint import BLUEPRINT_TYPE
  from parlai.crowdsourcing.utils.acceptability import AcceptabilityChecker
  from parlai.crowdsourcing.utils.analysis import AbstractResultsCompiler
label_desc: Use image node_id 2 to create a new ModelChatResultsCompiler object from inherited base classes: AbstractResultsCompiler with example: obj = ModelChatResultsCompiler(opt)