docstr: Make zero shot predictions from the TARS model.
  
  Args:
      sentences: input sentence objects to classify
      candidate_label_set: set of candidate labels
      multi_label: indicates whether multi-label or single class prediction. Defaults to True.
docstr_tok: ["Make","zero","shot","predictions","from","the","TARS","model",".","Args",":","sentences",":","input","sentence","objects","to","classify","candidate_label_set",":","set","of","candidate","labels","multi_label",":","indicates","whether","multi-label","or","single","class","prediction",".","Defaults","to","True","."]
code: def predict_zero_shot(
      self,
      sentences: Union[List[Sentence], Sentence],
      candidate_label_set: Union[List[str], Set[str], str],
      multi_label: bool = True,
  ):
      """Make zero shot predictions from the TARS model.
  
      Args:
          sentences: input sentence objects to classify
          candidate_label_set: set of candidate labels
          multi_label: indicates whether multi-label or single class prediction. Defaults to True.
      """
      # check if candidate_label_set is empty
      if candidate_label_set is None or len(candidate_label_set) == 0:
          log.warning("Provided candidate_label_set is empty")
          return
  
      # make list if only one candidate label is passed
      if isinstance(candidate_label_set, str):
          candidate_label_set = {candidate_label_set}
  
      # create label dictionary
      label_dictionary = Dictionary(add_unk=False)
      for label in candidate_label_set:
          label_dictionary.add_item(label)
  
      # note current task
      existing_current_task = self._current_task
  
      # create a temporary task
      self.add_and_switch_to_new_task(
          task_name="ZeroShot",
          label_dictionary=label_dictionary,
          label_type="-".join(label_dictionary.get_items()),
          multi_label=multi_label,
          force_switch=True,  # overwrite any older configuration
      )
  
      try:
          # make zero shot predictions
          self.predict(sentences)
      finally:
          # switch to the pre-existing task
          self.switch_to_task(existing_current_task)
          self._drop_task("ZeroShot")
  
      return
  
imports: import logging
  import typing
  from abc import ABC
  from collections import OrderedDict
  from pathlib import Path
  from typing import Any, Dict, List, Optional, Set, Tuple, Union
  import numpy
  import torch
  from sklearn.metrics.pairwise import cosine_similarity
  from sklearn.preprocessing import minmax_scale
  from tqdm import tqdm
  import flair
  from flair.data import Corpus, Dictionary, Sentence, Span
  from flair.datasets import DataLoader, FlairDatapointDataset
  from flair.embeddings import TokenEmbeddings, TransformerDocumentEmbeddings, TransformerWordEmbeddings
  from flair.file_utils import cached_path
  from flair.models.sequence_tagger_model import SequenceTagger
  from flair.models.text_classification_model import TextClassifier
  from flair.training_utils import store_embeddings
label_desc: Use image node_id 18 for calling the FewshotClassifier obj's underlying member method code with example usage: obj.predict_zero_shot(sentences, candidate_label_set, multi_label) without return types