class_docstr: The basic manually defined verbalizer class, this class is inherited from the :obj:`Verbalizer` class.
  
  Args:
      tokenizer (:obj:`PreTrainedTokenizer`): The tokenizer of the current pre-trained model to point out the vocabulary.
      classes (:obj:`List[Any]`): The classes (or labels) of the current task.
      label_words (:obj:`Union[List[str], List[List[str]], Dict[List[str]]]`, optional): The label words that are projected by the labels.
      prefix (:obj:`str`, optional): The prefix string of the verbalizer (used in PLMs like RoBERTa, which is sensitive to prefix space)
      multi_token_handler (:obj:`str`, optional): The handling strategy for multiple tokens produced by the tokenizer.
      post_log_softmax (:obj:`bool`, optional): Whether to apply log softmax post processing on label_logits. Default to True.
docstr: Add prefix to label words. For example, if a label words is in the middle of a template,
  the prefix should be ``' '``.
  
  Args:
      label_words (:obj:`Union[Sequence[str], Mapping[str, str]]`, optional): The label words that are projected by the labels.
      prefix (:obj:`str`, optional): The prefix string of the verbalizer.
  
  Returns:
      :obj:`Sequence[str]`: New label words with prefix.
docstr_tok: ["Add","prefix","to","label","words",".","For","example",",","if","a","label","words","is","in","the","middle","of","a","template",",","the","prefix","should","be","``","'","'","``",".","Args",":","label_words","(",":","obj",":","`","Union","[","Sequence","[","str","]",",","Mapping","[","str",",","str","]","]","`",",","optional",")",":","The","label","words","that","are","projected","by","the","labels",".","prefix","(",":","obj",":","`","str","`",",","optional",")",":","The","prefix","string","of","the","verbalizer",".","Returns",":",":","obj",":","`","Sequence","[","str","]","`",":","New","label","words","with","prefix","."]
code: def add_prefix(label_words, prefix):
      r"""Add prefix to label words. For example, if a label words is in the middle of a template,
      the prefix should be ``' '``.
  
      Args:
          label_words (:obj:`Union[Sequence[str], Mapping[str, str]]`, optional): The label words that are projected by the labels.
          prefix (:obj:`str`, optional): The prefix string of the verbalizer.
  
      Returns:
          :obj:`Sequence[str]`: New label words with prefix.
      """
      new_label_words = []
      if isinstance(label_words[0], str):
          label_words = [
              [w] for w in label_words
          ]  # wrapped it to a list of list of label words.
  
      for label_words_per_label in label_words:
          new_label_words_per_label = []
          for word in label_words_per_label:
              if word.startswith("<!>"):
                  new_label_words_per_label.append(word.split("<!>")[1])
              else:
                  new_label_words_per_label.append(prefix + word)
          new_label_words.append(new_label_words_per_label)
      return new_label_words
  
imports: import json
  from transformers.tokenization_utils import PreTrainedTokenizer
  from yacs.config import CfgNode
  from openprompt.data_utils import InputFeatures
  import re
  from openprompt import Verbalizer
  from typing import *
  import torch
  import torch.nn
  import torch.nn.functional
  from openprompt.utils.logging import logger
label_desc: Use image node_id 3 for calling the ManualVerbalizer obj's underlying member method code with example usage: obj.add_prefix(label_words, prefix) and returns: new_label_words