class_docstr: NLI-based zero-shot classification pipeline using a `ModelForSequenceClassification` trained on NLI (natural
  language inference) tasks. Equivalent of `text-classification` pipelines, but these models don't require a
  hardcoded number of potential classes, they can be chosen at runtime. It usually means it's slower but it is
  **much** more flexible.
  
  Any combination of sequences and labels can be passed and each combination will be posed as a premise/hypothesis
  pair and passed to the pretrained model. Then, the logit for *entailment* is taken as the logit for the candidate
  label being valid. Any NLI model can be used, but the id of the *entailment* label must be included in the model
  config's :attr:*~transformers.PretrainedConfig.label2id*.
  
  Example:
  
  ```python
  >>> from transformers import pipeline
  
  >>> oracle = pipeline(model="facebook/bart-large-mnli")
  >>> oracle(
  ...     "I have a problem with my iphone that needs to be resolved asap!!",
  ...     candidate_labels=["urgent", "not urgent", "phone", "tablet", "computer"],
  ... )
  {'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['urgent', 'phone', 'computer', 'not urgent', 'tablet'], 'scores': [0.504, 0.479, 0.013, 0.003, 0.002]}
  
  >>> oracle(
  ...     "I have a problem with my iphone that needs to be resolved asap!!",
  ...     candidate_labels=["english", "german"],
  ... )
  {'sequence': 'I have a problem with my iphone that needs to be resolved asap!!', 'labels': ['english', 'german'], 'scores': [0.814, 0.186]}
  ```
  
  Learn more about the basics of using a pipeline in the [pipeline tutorial](../pipeline_tutorial)
  
  This NLI pipeline can currently be loaded from [`pipeline`] using the following task identifier:
  `"zero-shot-classification"`.
  
  The models that this pipeline can use are models that have been fine-tuned on an NLI task. See the up-to-date list
  of available models on [huggingface.co/models](https://huggingface.co/models?search=nli).
class_docstr_tok: ["NLI-based","zero-shot","classification","pipeline","using","a","`","ModelForSequenceClassification","`","trained","on","NLI","(","natural","language","inference",")","tasks",".","Equivalent","of","`","text-classification","`","pipelines",",","but","these","models","do","n't","require","a","hardcoded","number","of","potential","classes",",","they","can","be","chosen","at","runtime",".","It","usually","means","it","'s","slower","but","it","is","*","*","much","*","*","more","flexible",".","Any","combination","of","sequences","and","labels","can","be","passed","and","each","combination","will","be","posed","as","a","premise\/hypothesis","pair","and","passed","to","the","pretrained","model",".","Then",",","the","logit","for","*","entailment","*","is","taken","as","the","logit","for","the","candidate","label","being","valid",".","Any","NLI","model","can","be","used",",","but","the","id","of","the","*","entailment","*","label","must","be","included","in","the","model","config","'s",":","attr",":","*","~transformers.PretrainedConfig.label2id","*",".","Example",":","``","`","python",">",">",">","from","transformers","import","pipeline",">",">",">","oracle","=","pipeline","(","model=","''","facebook\/bart-large-mnli","''",")",">",">",">","oracle","(","...","``","I","have","a","problem","with","my","iphone","that","needs","to","be","resolved","asap","!","!","``",",","...","candidate_labels=","[","``","urgent","''",",","``","not","urgent","''",",","``","phone","''",",","``","tablet","''",",","``","computer","''","]",",","...",")","{","'sequence","'",":","'","I","have","a","problem","with","my","iphone","that","needs","to","be","resolved","asap","!","!","'",",","'labels","'",":","[","'urgent","'",",","'phone","'",",","'computer","'",",","'not","urgent","'",",","'tablet","'","]",",","'scores","'",":","[","0.504",",","0.479",",","0.013",",","0.003",",","0.002","]","}",">",">",">","oracle","(","...","``","I","have","a","problem","with","my","iphone","that","needs","to","be","resolved","asap","!","!","``",",","...","candidate_labels=","[","``","english","''",",","``","german","''","]",",","...",")","{","'sequence","'",":","'","I","have","a","problem","with","my","iphone","that","needs","to","be","resolved","asap","!","!","'",",","'labels","'",":","[","'english","'",",","'german","'","]",",","'scores","'",":","[","0.814",",","0.186","]","}","``","`","Learn","more","about","the","basics","of","using","a","pipeline","in","the","[","pipeline","tutorial","]","(","..","\/pipeline_tutorial",")","This","NLI","pipeline","can","currently","be","loaded","from","[","`","pipeline","`","]","using","the","following","task","identifier",":","`","``","zero-shot-classification","''","`",".","The","models","that","this","pipeline","can","use","are","models","that","have","been","fine-tuned","on","an","NLI","task",".","See","the","up-to-date","list","of","available","models","on","[","huggingface.co\/models","]","(","https",":","\/\/huggingface.co\/models","?","search=nli",")","."]
code: def __init__(
      self,
      args_parser=ZeroShotClassificationArgumentHandler(),
      *args,
      **kwargs,
  ):
      self._args_parser = args_parser
      super().__init__(*args, **kwargs)
      if self.entailment_id == -1:
          logger.warning(
              "Failed to determine 'entailment' label id from the label2id mapping in the model config. Setting to "
              "-1. Define a descriptive label2id mapping in the model config to ensure correct outputs."
          )
  
file_path: transformers/src/transformers/pipelines/zero_shot_classification.py
imports: import inspect
  from typing import List, Union
  import numpy
  from ..tokenization_utils import TruncationStrategy
  from ..utils import add_end_docstrings, logging
  from .base import PIPELINE_INIT_ARGS, ArgumentHandler, ChunkPipeline
label_desc: Use image node_id 1 to create a new ZeroShotClassificationPipeline object from inherited base classes: ChunkPipeline with example: obj = ZeroShotClassificationPipeline(args_parser)