class_docstr: Speaker Classifier Teacher.
  
  This teacher is used for the RPA classifier training.
  
  This teacher should NOT be used directly.
class_docstr_tok: ["Speaker","Classifier","Teacher",".","This","teacher","is","used","for","the","RPA","classifier","training",".","This","teacher","should","NOT","be","used","directly","."]
code: def add_speaker_classifier_cmdline_args(parser):
      group = parser.add_argument_group("Speaker Classifier args")
      group.add_argument(
          "--speaker-label-type",
          type=str,
          default="speaker",
          choices=["speaker", "listener"],
          help="Whether the label should be the person who is speaking, or the "
          "person whom is being spoken to.",
      )
      group.add_argument(
          "--classifier-label-type",
          type=str,
          default="character",
          choices=["character", "role"],
          help="Whether the label should be the character, or role in the "
          "conversation (i.e., self or partner)",
      )
      group.add_argument(
          "--num-utterances",
          type=int,
          default=-1,
          help="Number of utterances to include in the example prior to final utterance. "
          "Default <=0 will use all utterances in an episode.",
      )
      group.add_argument(
          "--annotate-speaker",
          type="bool",
          default=True,
          help="If true, annotate each utterance with speaker name",
      )
      group.add_argument(
          "--speaker-separator",
          type="bool",
          default=True,
          help="Whether to surround speaker annotation with special tokens",
      )
      group.add_argument(
          "--speaker-annotation-position",
          type=str,
          choices=["prefix", "suffix"],
          default="suffix",
          help="If annotating speaker, where to add speaker annotation relative to text.",
      )
      group.add_argument(
          "--include-light-context",
          type="bool",
          default=True,
          help="Whether to prepend each episode with light context",
      )
      group.add_argument(
          "--exclude-from-context",
          type=str,
          default=None,
          help="comma-separated list of keys for items to exclude from the context. "
          f"Choices: {','.join(CONTEXT_KEYS)}",
      )
      group.add_argument(
          "--exclude-from-context-delimiter",
          type=str,
          default=",",
          help="how to split the exclude_from_context specifications",
      )
      group.add_argument(
          "--inline-candidate-type",
          type=str,
          default="all",
          choices=["all", "conversation"],
          help="What to include as inline label candidates. All will use all "
          "characters from the data split; conversation will be just the characters "
          "within the conversation.",
      )
      group.add_argument(
          "--num-train-inline-candidates",
          type=int,
          default=100,
          help="If --inline-canidate-type is `all`, how many candidates to subsample for training "
          "Set to -1 to keep all cands",
      )
      group.add_argument(
          "--left-to-right",
          type="bool",
          default=False,
          help="If true, generate an example for every word in the label; "
          "i.e., classify from left to right",
      )
      group.add_argument(
          "--delimit-label-control",
          type="bool",
          default=True,
          help="If False, do not insert the delimiter between the context and label control",
      )
  
imports: from abc import ABC
  from collections import deque
  import re
  from typing import Optional
  from parlai.core.build_data import modelzoo_path
  from parlai.core.message import Message
  from parlai.core.metrics import AverageMetric
  from parlai.core.opt import Opt
  from parlai.core.params import ParlaiParser
  from parlai.tasks.light_dialog.agents import SimpleMultiTeacher
  from parlai.utils.data import DatatypeHelper
  import parlai.utils.logging
  import copy
  import os
  import random
  import torch
  import torch.nn
  import torch.nn.functional
  from typing import List, Dict, Tuple
  from projects.light_whoami.task.utils import DEFAULT_DELIM, CONTEXT_KEYS, extract_characters, WHO_AM_I, WHO_ARE_YOU, SELF, PARTNER, WHO_IS_THIS, maybe_annotate
  import projects.light_whoami.task.mutators
label_desc: Use image node_id 1 for calling the SpeakerClassifierTeacher obj's underlying member method code with example usage: obj.add_speaker_classifier_cmdline_args(parser) without return types