class_docstr: Query for finetune query generator.
  
  human_gold: human written search query that lead to perfect utterance,
      e.g better_search_query->perfect; better_search_query -> better_search_doc -> perfect;
          better_search_query -> better_search_doc -> better_response -> perfect
  human_bronze: human written search query that doesn't belong to perfect utterance
  bot_gold: bot search queries that leads to perfect utterance e.g. better_doc -> perfect
class_docstr_tok: ["Query","for","finetune","query","generator",".","human_gold",":","human","written","search","query","that","lead","to","perfect","utterance",",","e.g","better_search_query-",">","perfect",";","better_search_query","-",">","better_search_doc","-",">","perfect",";","better_search_query","-",">","better_search_doc","-",">","better_response","-",">","perfect","human_bronze",":","human","written","search","query","that","does","n't","belong","to","perfect","utterance","bot_gold",":","bot","search","queries","that","leads","to","perfect","utterance","e.g",".","better_doc","-",">","perfect"]
code: def setup_data(self, data_path):
      raw_data = self._load_raw_data(data_path)
      data = []
      for chat in raw_data:
          perfect_episode, _ = self._get_perfect_episode(
              chat, is_training=self.is_training
          )
          feedbacks = self._extract_feedback(perfect_episode)
          if self.query_source in ["human_gold", "human", "all"]:
              data.extend(feedbacks["human_gold"])
          if self.query_source in ["human_bronze", "human", "all"]:
              data.extend(feedbacks["human_bronze"])
          if self.query_source in ["bot_gold", "all"]:
              data.extend(feedbacks["bot_gold"])
  
      for turn in data:
          yield Message(turn), True
  
imports: import os
  import copy
  import json
  import random
  from typing import Optional
  from parlai.utils.misc import warn_once
  from parlai.utils.data import DatatypeHelper
  from parlai.core.opt import Opt
  from parlai.core.teachers import DialogTeacher
  from parlai.core.params import ParlaiParser
  from parlai.core.message import Message
  from parlai.utils.io import PathManager
  from parlai.tasks.wizard_of_internet import constants
  from .mutators import normalize_reply, get_knowledge_appended_context, get_knowledge_sentence_with_special_tokens_only
  from .build import build
  from .constants import FeedbackType, TITLE_PASSAGE_DELIMITER, OK_LABEL, NOT_OK_LABEL
label_desc: Use image node_id 3 for calling the QueryTeacher obj's underlying member method code with example usage: obj.setup_data(data_path) without return types