---
license: apache-2.0
datasets:
- knowledgator/gliclass-v2.0
pipeline_tag: text-classification
---
# ⭐ GLiClass: Generalist and Lightweight Model for Sequence Classification
This is an efficient zero-shot classifier inspired by [GLiNER](https://github.com/urchade/GLiNER/tree/main) work. It demonstrates the same performance as a cross-encoder while being more compute-efficient because classification is done at a single forward path.
It can be used for `topic classification`, `sentiment analysis` and as a reranker in `RAG` pipelines.
The model was trained on synthetic and licensed data that allow commercial use and can be used in commercial applications.
The backbone model is [mdeberta-v3-base](huggingface.co/microsoft/mdeberta-v3-base). It supports multilingual understanding, making it well-suited for tasks involving texts in different languages.
### How to use:
First of all, you need to install GLiClass library:
```bash
pip install gliclass
pip install -U transformers>=4.48.0
```
Than you need to initialize a model and a pipeline:
English
```python
from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer
model = GLiClassModel.from_pretrained("knowledgator/gliclass-x-base")
tokenizer = AutoTokenizer.from_pretrained("knowledgator/gliclass-x-base", add_prefix_space=True)
pipeline = ZeroShotClassificationPipeline(model, tokenizer, classification_type='multi-label', device='cuda:0')
text = "One day I will see the world!"
labels = ["travel", "dreams", "sport", "science", "politics"]
results = pipeline(text, labels, threshold=0.5)[0] #because we have one text
for result in results:
print(result["label"], "=>", result["score"])
```
Spanish
```python
from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer
model = GLiClassModel.from_pretrained("knowledgator/gliclass-x-base")
tokenizer = AutoTokenizer.from_pretrained("knowledgator/gliclass-x-base", add_prefix_space=True)
pipeline = ZeroShotClassificationPipeline(model, tokenizer, classification_type='multi-label', device='cuda:0')
text = "¡Un día veré el mundo!"
labels = ["viajes", "sueños", "deportes", "ciencia", "política"]
results = pipeline(text, labels, threshold=0.5)[0]
for result in results:
print(result["label"], "=>", result["score"])
```
Italitan
```python
from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer
model = GLiClassModel.from_pretrained("knowledgator/gliclass-x-base")
tokenizer = AutoTokenizer.from_pretrained("knowledgator/gliclass-x-base", add_prefix_space=True)
pipeline = ZeroShotClassificationPipeline(model, tokenizer, classification_type='multi-label', device='cuda:0')
text = "Un giorno vedrò il mondo!"
labels = ["viaggi", "sogni", "sport", "scienza", "politica"]
results = pipeline(text, labels, threshold=0.5)[0]
for result in results:
print(result["label"], "=>", result["score"])
```
French
```python
from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer
model = GLiClassModel.from_pretrained("knowledgator/gliclass-x-base")
tokenizer = AutoTokenizer.from_pretrained("knowledgator/gliclass-x-base", add_prefix_space=True)
pipeline = ZeroShotClassificationPipeline(model, tokenizer, classification_type='multi-label', device='cuda:0')
text = "Un jour, je verrai le monde!"
labels = ["voyage", "rêves", "sport", "science", "politique"]
results = pipeline(text, labels, threshold=0.5)[0]
for result in results:
print(result["label"], "=>", result["score"])
```
German
```python
from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer
model = GLiClassModel.from_pretrained("knowledgator/gliclass-x-base")
tokenizer = AutoTokenizer.from_pretrained("knowledgator/gliclass-x-base", add_prefix_space=True)
pipeline = ZeroShotClassificationPipeline(model, tokenizer, classification_type='multi-label', device='cuda:0')
text = "Eines Tages werde ich die Welt sehen!"
labels = ["Reisen", "Träume", "Sport", "Wissenschaft", "Politik"]
results = pipeline(text, labels, threshold=0.5)[0]
for result in results:
print(result["label"], "=>", result["score"])
```
### Benchmarks:
Below, you can see the F1 score on several text classification datasets. All tested models were not fine-tuned on those datasets and were tested in a zero-shot setting.
#### Multilingual benchmarks
| Dataset | gliclass-x-base | gliclass-base-v3.0 | gliclass-large-v3.0 |
| ------------------------ | --------------- | ------------------ | ------------------- |
| FredZhang7/toxi-text-3M | 0.5972 | 0.5072 | 0.6118 |
| SetFit/xglue\_nc | 0.5014 | 0.5348 | 0.5378 |
| Davlan/sib200\_14classes | 0.4663 | 0.2867 | 0.3173 |
| uhhlt/GermEval2017 | 0.3999 | 0.4010 | 0.4299 |
| dolfsai/toxic\_es | 0.1250 | 0.1399 | 0.1412 |
| **Average** | **0.41796** | **0.37392** | **0.4076** |
#### General benchmarks
| Dataset | gliclass-x-base | gliclass-base-v3.0 | gliclass-large-v3.0 |
| ---------------------------- | --------------- | ------------------ | ------------------- |
| SetFit/CR | 0.8630 | 0.9127 | 0.9398 |
| SetFit/sst2 | 0.8554 | 0.8959 | 0.9192 |
| SetFit/sst5 | 0.3287 | 0.3376 | 0.4606 |
| AmazonScience/massive | 0.2611 | 0.5040 | 0.5649 |
| stanfordnlp/imdb | 0.8840 | 0.9251 | 0.9366 |
| SetFit/20\_newsgroups | 0.4116 | 0.4759 | 0.5958 |
| SetFit/enron\_spam | 0.5929 | 0.6760 | 0.7584 |
| PolyAI/banking77 | 0.3098 | 0.4698 | 0.5574 |
| takala/financial\_phrasebank | 0.7851 | 0.8971 | 0.9000 |
| ag\_news | 0.6815 | 0.7279 | 0.7181 |
| dair-ai/emotion | 0.3667 | 0.4447 | 0.4506 |
| MoritzLaurer/cap\_sotu | 0.3935 | 0.4614 | 0.4589 |
| cornell/rotten\_tomatoes | 0.7252 | 0.7943 | 0.8411 |
| snips | 0.6307 | 0.9474 | 0.9692 |
| **Average** | **0.5778** | **0.6764** | **0.7193** |
## Citation
```bibtex
@misc{stepanov2025gliclassgeneralistlightweightmodel,
title={GLiClass: Generalist Lightweight Model for Sequence Classification Tasks},
author={Ihor Stepanov and Mykhailo Shtopko and Dmytro Vodianytskyi and Oleksandr Lukashov and Alexander Yavorskyi and Mykyta Yaroshenko},
year={2025},
eprint={2508.07662},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2508.07662},
}
```