Text Classification
Transformers
Safetensors
modernbert
democracy
political-science
party-competition
democratic-rhetoric
mmBert
text-embeddings-inference
Instructions to use LBenoit/democracy-mmBert with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use LBenoit/democracy-mmBert with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="LBenoit/democracy-mmBert")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("LBenoit/democracy-mmBert") model = AutoModelForSequenceClassification.from_pretrained("LBenoit/democracy-mmBert") - Notebooks
- Google Colab
- Kaggle
| language: | |
| - de | |
| - sv | |
| - en | |
| - fr | |
| - multilingual | |
| license: mit | |
| library_name: transformers | |
| tags: | |
| - text-classification | |
| - democracy | |
| - political-science | |
| - party-competition | |
| - democratic-rhetoric | |
| - mmBert | |
| datasets: | |
| - custom | |
| metrics: | |
| - f1 | |
| - accuracy | |
| - precision | |
| - recall | |
| pipeline_tag: text-classification | |
| base_model: jhu-clsp/mmBERT-base | |
| # Democracy Detector — Multilingual Modern Bert - Binary Classifier | |
| ## Task | |
| Binary classification of sentences from political party press releases: | |
| - **0 — Not democracy**: Sentence does not contain a democratic appeal. | |
| - **1 — Democracy**: Sentence contains a democratic appeal (any rhetorical invocation of democracy, democratic norms, institutions, or principles). | |
| This is **Stage 1** of a two-stage classification pipeline: | |
| 1. **Stage 1 (this model)**: Fast binary detection of democracy-related sentences. | |
| 2. **Stage 2 (GPT-based)**: Strategy classification of detected sentences (self-assertion, accusation, counter-claim, agenda-setting). | |
| ## Model Details | |
| - **Base model**: `jhu-clsp/mmBERT-base` | |
| - **Fine-tuned on**: ~3654 hand-coded sentences from the [PartyPress](https://doi.org/10.7910/DVN/OINX7Q) dataset | |
| - **Languages**: German, Swedish, English, Danish, Polish and Spanish (multilingual press releases) | |
| - **Max sequence length**: 104 tokens | |
| ## Training Configuration | |
| | Parameter | Value | | |
| |---|---| | |
| | Learning rate | 0.0001 | | |
| | Epochs | 3 | | |
| | Batch size | 16 | | |
| | Warmup ratio | 0.1 | | |
| | Weight decay | 0.01 | | |
| | Scheduler | cosine | | |
| | Class weights | True | | |
| | Focal loss | False (gamma=2.0) | | |
| | Precision | fp16 | | |
| ## Training Data | |
| | Split | Total | Democracy (1) | Not democracy (0) | | |
| |---|---|---|---| | |
| | Train | 3654 | 1512 | 2142 | | |
| | Val | 731 | 205 | 526 | | |
| | Test | 412 | 169 | 243 | | |
| ## Performance (Test Set) | |
| precision recall f1-score support | |
| Not democracy 0.907 0.918 0.912 243 | |
| Democracy 0.880 0.864 0.872 169 | |
| accuracy 0.896 412 | |
| macro avg 0.893 0.891 0.892 412 | |
| weighted avg 0.895 0.896 0.895 412 | |
| ## Usage | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
| import torch | |
| repo = "LBenoit/democracy-mmBert" | |
| tokenizer = AutoTokenizer.from_pretrained(repo) | |
| model = AutoModelForSequenceClassification.from_pretrained(repo) | |
| model.eval() | |
| sentence = "Die AfD gefährdet unsere demokratische Grundordnung." | |
| inputs = tokenizer(sentence, return_tensors="pt", truncation=True, max_length=104) | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| prob = torch.softmax(logits, dim=-1)[0, 1].item() | |
| label = "Democracy" if prob >= threshold else "Not democracy" | |
| print(f"{label} (p={prob:.3f})") | |
| ``` | |
|  | |
|  | |
| ## Citation | |
| Part of a PhD dissertation on democratic credibility competition in European party systems. | |
| ## Author | |
| Léandre Benoit | |