class_docstr: Teacher for spoken two-person dialogues with labels being responses for the previous
  statement.
  
  The data is traversed twice (doubled), once for modelling USER replies and once for
  modelling ASSISTANT replies.
class_docstr_tok: ["Teacher","for","spoken","two-person","dialogues","with","labels","being","responses","for","the","previous","statement",".","The","data","is","traversed","twice","(","doubled",")",",","once","for","modelling","USER","replies","and","once","for","modelling","ASSISTANT","replies","."]
code: def get(self, episode_idx, entry_idx):
      if episode_idx < len(self.episode_map["U"]):
          # USER then ASSISTANT mode [First pass]
          true_idx = self.episode_map["U"][episode_idx]
          conversation = self.convos[true_idx]
          convo_cheat_sheet = self.ep_cheat_sheet[true_idx]
          first_entry_idx, last_entry_idx = (
              convo_cheat_sheet[tm_utils.FIRST_USER_IDX],
              convo_cheat_sheet[tm_utils.LAST_USER_IDX],
          )
      else:
          # ASSISTANT then USER mode [Second pass]
          episode_idx -= len(
              self.episode_map["U"]
          )  # Didn't use '%' because the two maybe unequal in length
          true_idx = self.episode_map["A"][episode_idx]
          conversation = self.convos[true_idx]
          convo_cheat_sheet = self.ep_cheat_sheet[true_idx]
          first_entry_idx, last_entry_idx = (
              convo_cheat_sheet[tm_utils.FIRST_ASSISTANT_IDX],
              convo_cheat_sheet[tm_utils.LAST_ASSISTANT_IDX],
          )
  
      starts_at_odd = first_entry_idx % 2 != 0
      if starts_at_odd:
          predecessor = conversation[entry_idx * 2 + 1]["text"]
          successor = conversation[entry_idx * 2 + 2]["text"]
          ep_done = entry_idx * 2 + 1 == last_entry_idx
      else:
          predecessor = conversation[entry_idx * 2]["text"]
          successor = conversation[entry_idx * 2 + 1]["text"]
          ep_done = entry_idx * 2 == last_entry_idx
  
      action = {
          "id": self.id,
          "text": predecessor,
          "episode_done": ep_done,
          "labels": [successor],
      }
  
      return action
  
imports: from parlai.core.params import ParlaiParser
  import os
  import pandas
  from parlai.core.opt import Opt
  import parlai.core.tod.tod_core
  from typing import Optional
  from parlai.utils.data import DatatypeHelper
  from parlai.utils.io import PathManager
  import parlai.tasks.taskmaster.build
  import parlai.core.tod.tod_agents
  from parlai.core.teachers import FixedDialogTeacher
  from .None import tm_utils
  import json
label_desc: Use image node_id 6 for calling the WozDialogueTeacher obj's underlying member method code with example usage: obj.get(episode_idx, entry_idx) and returns: action