class_docstr: The basic manually defined verbalizer class, this class is inherited from the :obj:`Verbalizer` class.
  This class restrict the use of label words to one words per label. For a verbalzer with less constraints,
  please use Basic ManualVerbalizer.
  
  Args:
      tokenizer (:obj:`PreTrainedTokenizer`): The tokenizer of the current pre-trained model to point out the vocabulary.
      classes (:obj:`classes`): The classes (or labels) of the current task.
      num_classes (:obj:`int`): Optional. The number of classes of the verbalizer. Only one of `classes` and `num_classes` should be used.
      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. (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.
class_docstr_tok: ["The","basic","manually","defined","verbalizer","class",",","this","class","is","inherited","from","the",":","obj",":","`","Verbalizer","`","class",".","This","class","restrict","the","use","of","label","words","to","one","words","per","label",".","For","a","verbalzer","with","less","constraints",",","please","use","Basic","ManualVerbalizer",".","Args",":","tokenizer","(",":","obj",":","`","PreTrainedTokenizer","`",")",":","The","tokenizer","of","the","current","pre-trained","model","to","point","out","the","vocabulary",".","classes","(",":","obj",":","`","classes","`",")",":","The","classes","(","or","labels",")","of","the","current","task",".","num_classes","(",":","obj",":","`","int","`",")",":","Optional",".","The","number","of","classes","of","the","verbalizer",".","Only","one","of","`","classes","`","and","`","num_classes","`","should","be","used",".","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",".","(","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], list):
          assert (
              max([len(w) for w in label_words]) == 1
          ), "Providing multiple label words, you should use other verbalizers instead."
          label_words = [w[0] for w in label_words]
  
      for word in label_words:
          if word.startswith("<!>"):
              new_label_words.append(word.split("<!>")[1])
          else:
              new_label_words.append(prefix + word)
  
      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 One2oneVerbalizer obj's underlying member method code with example usage: obj.add_prefix(label_words, prefix) and returns: new_label_words