pub struct ZeroShotClassificationModel { /* private fields */ }
Expand description

Template used to transform the zero-shot classification labels into a set of natural language hypotheses for natural language inference.

For example, transform [positive, negative] into [This is a positive review, This is a negative review]

The function should take a &str as an input and return the formatted String.

This transformation has a strong impact on the resulting classification accuracy. If no function is provided for zero-shot classification, the default templating function will be used:

fn default_template(label: &str) -> String {
    format!("This example is about {}.", label)
}

ZeroShotClassificationModel for Zero Shot Classification

Implementations§

Build a new ZeroShotClassificationModel

Arguments
  • config - SequenceClassificationConfig object containing the resource references (model, vocabulary, configuration) and device placement (CPU/GPU)
Example
use rust_bert::pipelines::sequence_classification::SequenceClassificationModel;

let model = SequenceClassificationModel::new(Default::default())?;

Zero shot classification with 1 (and exactly 1) true label.

Arguments
  • input - &[&str] Array of texts to classify.
  • labels - &[&str] Possible labels for the inputs.
  • template - Option<Box<dyn Fn(&str) -> String>> closure to build label propositions. If None, will default to "This example is {}.".
  • max_length -usize Maximum sequence length for the inputs. If needed, the input sequence will be truncated before the label template.
Returns
  • Result<Vec<Label>, RustBertError> containing the most likely label for each input sentence or error, if any.
Example
use rust_bert::pipelines::zero_shot_classification::ZeroShotClassificationModel;

let sequence_classification_model = ZeroShotClassificationModel::new(Default::default())?;

let input_sentence = "Who are you voting for in 2020?";
let input_sequence_2 = "The prime minister has announced a stimulus package which was widely criticized by the opposition.";
let candidate_labels = &["politics", "public health", "economics", "sports"];

let output = sequence_classification_model.predict(
    &[input_sentence, input_sequence_2],
    candidate_labels,
    None,
    128,
);

outputs:

let output = [
    Label {
        text: "politics".to_string(),
        score: 0.959,
        id: 0,
        sentence: 0,
    },
    Label {
        text: "economy".to_string(),
        score: 0.642,
        id: 2,
        sentence: 1,
    },
]
.to_vec();

Zero shot multi-label classification with 0, 1 or no true label.

Arguments
  • input - &[&str] Array of texts to classify.
  • labels - &[&str] Possible labels for the inputs.
  • template - Option<Box<dyn Fn(&str) -> String>> closure to build label propositions. If None, will default to "This example is about {}.".
  • max_length -usize Maximum sequence length for the inputs. If needed, the input sequence will be truncated before the label template.
Returns
  • Result<Vec<Vec<Label>>, RustBertError> containing a vector of labels and their probability for each input text, or error, if any.
Example
use rust_bert::pipelines::zero_shot_classification::ZeroShotClassificationModel;

let sequence_classification_model = ZeroShotClassificationModel::new(Default::default())?;

let input_sentence = "Who are you voting for in 2020?";
let input_sequence_2 = "The central bank is meeting today to discuss monetary policy.";
let candidate_labels = &["politics", "public health", "economics", "sports"];

let output = sequence_classification_model.predict_multilabel(
    &[input_sentence, input_sequence_2],
    candidate_labels,
    None,
    128,
);

outputs:

let output = [
    [
        Label {
            text: "politics".to_string(),
            score: 0.972,
            id: 0,
            sentence: 0,
        },
        Label {
            text: "public health".to_string(),
            score: 0.032,
            id: 1,
            sentence: 0,
        },
        Label {
            text: "economy".to_string(),
            score: 0.006,
            id: 2,
            sentence: 0,
        },
        Label {
            text: "sports".to_string(),
            score: 0.004,
            id: 3,
            sentence: 0,
        },
    ],
    [
        Label {
            text: "politics".to_string(),
            score: 0.975,
            id: 0,
            sentence: 1,
        },
        Label {
            text: "economy".to_string(),
            score: 0.852,
            id: 2,
            sentence: 1,
        },
        Label {
            text: "public health".to_string(),
            score: 0.0818,
            id: 1,
            sentence: 1,
        },
        Label {
            text: "sports".to_string(),
            score: 0.001,
            id: 3,
            sentence: 1,
        },
    ],
]
.to_vec();

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The alignment of pointer.
The type for initializers.
Initializes a with the given initializer. Read more
Dereferences the given pointer. Read more
Mutably dereferences the given pointer. Read more
Drops the object pointed to by the given pointer. Read more
Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more