|
Download README.md from roskosmos19/Coral-Router: direct link, hf CLI and curl.
- Browser
- Download file 3.25 kB
-
https://huggingface.co/roskosmos19/Coral-Router/resolve/main/README.md
- Command line
-
hf download hf://roskosmos19/Coral-Router/README.md
-
curl -L -o README.md https://huggingface.co/roskosmos19/Coral-Router/resolve/main/README.md
3.25 kB
| license: apache-2.0 | |
| pipeline_tag: zero-shot-classification | |
| tags: | |
| - zero-shot | |
| - nli | |
| - classification | |
| - bart | |
| - Coral | |
| datasets: | |
| - multi_nli | |
| base_model: | |
| - facebook/bart-large-mnli | |
| ***Coral-MNLI*** | |
| **Coral-MNLI** is a high-quality zero-shot classification model based on BART-large, fine-tuned on MultiNLI. | |
| It delivers strong performance for zero-shot and few-shot text classification without any task-specific training. | |
| ## What it is good at | |
| - Zero-shot text classification | |
| - Multi-label classification | |
| - Natural Language Inference (NLI) | |
| - Topic detection, sentiment, intent, content moderation, and many other classification tasks | |
| Just provide the text and a list of candidate labels — the model ranks them by how well they fit. | |
| ## Model Details | |
| | Property | Value | | |
| |---------------------------|--------------------------------| | |
| | Architecture | BART-large | | |
| | Task | Sequence Classification (NLI) | | |
| | Labels | contradiction / neutral / entailment | | |
| | Max Sequence Length | 1024 | | |
| | Vocabulary Size | 50,265 | | |
| | License | MIT | | |
| ## Quick Start | |
| ### Using the Pipeline (recommended) | |
| ```python | |
| from transformers import pipeline | |
| classifier = pipeline( | |
| "zero-shot-classification", | |
| model="path/to/Coral-MNLI" | |
| ) | |
| sequence = "One day I will see the world" | |
| candidate_labels = ["travel", "cooking", "dancing"] | |
| result = classifier(sequence, candidate_labels) | |
| print(result) | |
| ``` | |
| ### Multi-label mode | |
| ```python | |
| result = classifier( | |
| sequence, | |
| candidate_labels=["travel", "cooking", "dancing", "exploration"], | |
| multi_label=True | |
| ) | |
| ``` | |
| ### Manual usage | |
| ```python | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| import torch | |
| model = AutoModelForSequenceClassification.from_pretrained("path/to/Coral-MNLI") | |
| tokenizer = AutoTokenizer.from_pretrained("path/to/Coral-MNLI") | |
| premise = "One day I will see the world" | |
| label = "travel" | |
| hypothesis = f"This example is {label}." | |
| inputs = tokenizer(premise, hypothesis, return_tensors="pt", truncation=True) | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| # Take only contradiction (0) and entailment (2) | |
| probs = torch.softmax(logits[:, [0, 2]], dim=1) | |
| prob_label_is_true = probs[0, 1].item() | |
| print(f"Probability that the text is about '{label}': {prob_label_is_true:.4f}") | |
| ``` | |
| ## How Zero-Shot Classification works | |
| The model treats the input text as a **premise** and turns each candidate label into a **hypothesis** of the form: | |
| > "This example is {label}." | |
| It then uses the entailment probability as the score for that label. This simple trick works surprisingly well across many domains. | |
| ## Tips for best results | |
| - Use clear and specific labels | |
| - Prefer multi_label=True when several labels can be true at the same time | |
| - For short texts the model is usually very accurate | |
| - For very long texts, keep the most important part near the beginning (truncation keeps the start) | |
| ## License | |
| MIT | |
| ## Credits | |
| Based on the excellent [facebook/bart-large-mnli](https://huggingface.co/facebook/bart-large-mnli) model. |