language:
- en
tags:
- text-classification
- pytorch
metrics:
- accuracy
- f1-score
extra_gated_prompt: >-
Our models are intended for academic use only. If you are not affiliated with
an academic institution, please provide a rationale for using our models.
If you use our models for your work or research, please cite this paper:
Sebők, M., Máté, Á., Ring, O., Kovács, V., & Lehoczki, R. (2024). Leveraging
Open Large Language Models for Multilingual Policy Topic Classification: The
Babel Machine Approach. Social Science Computer Review, 0(0).
https://doi.org/10.1177/08944393241259434
extra_gated_fields:
Name: text
Country: country
Institution: text
E-mail: text
Use case: text
xlm-roberta-large-english-legislative-cap-v3
Model description
An xlm-roberta-large
model fine-tuned on english training data containing legislative documents (bills, laws, motions, legislative decrees, hearings, resolutions) labeled with major topic codes from the Comparative Agendas Project.
How to use the model
This snippet prints the three most probable labels and their corresponding softmax scores:
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained("poltextlab/xlm-roberta-large-english-legislative-cap-v3")
tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-large")
sentence = "This is an example."
inputs = tokenizer(sentence,
return_tensors="pt",
max_length=512,
padding="do_not_pad",
truncation=True
)
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=1).tolist()[0]
probs = {model.config.id2label[index]: round(probability, 2) for index, probability in enumerate(probs)}
top3_probs = dict(sorted(probs.items(), key=lambda item: item[1], reverse=True)[:3])
print(top3_probs)
Model performance
The model was evaluated on a test set of 148474 examples.
Model accuracy is 0.9.
label | precision | recall | f1-score | support |
---|---|---|---|---|
0 | 0.85 | 0.8 | 0.83 | 5794 |
1 | 0.83 | 0.81 | 0.82 | 2920 |
2 | 0.91 | 0.92 | 0.92 | 10336 |
3 | 0.9 | 0.92 | 0.91 | 5258 |
4 | 0.82 | 0.9 | 0.86 | 4604 |
5 | 0.91 | 0.93 | 0.92 | 6173 |
6 | 0.87 | 0.89 | 0.88 | 5111 |
7 | 0.88 | 0.92 | 0.9 | 4251 |
8 | 0.87 | 0.91 | 0.89 | 1517 |
9 | 0.89 | 0.92 | 0.91 | 8119 |
10 | 0.91 | 0.9 | 0.9 | 10326 |
11 | 0.87 | 0.88 | 0.88 | 5471 |
12 | 0.86 | 0.86 | 0.86 | 3078 |
13 | 0.88 | 0.86 | 0.87 | 9050 |
14 | 0.88 | 0.89 | 0.88 | 10197 |
15 | 0.87 | 0.88 | 0.87 | 2556 |
16 | 0.92 | 0.92 | 0.92 | 4821 |
17 | 0.86 | 0.86 | 0.86 | 4106 |
18 | 0.9 | 0.87 | 0.89 | 17295 |
19 | 0.9 | 0.9 | 0.9 | 10681 |
20 | 1 | 0.2 | 0.33 | 25 |
21 | 0.99 | 0.96 | 0.97 | 16785 |
macro avg | 0.89 | 0.86 | 0.86 | 148474 |
weighted avg | 0.9 | 0.9 | 0.9 | 148474 |
Fine-tuning procedure
This model was fine-tuned with the following key hyperparameters:
- Number of Training Epochs: 10
- Batch Size: 8
- Learning Rate: 5e-06
- Early Stopping: enabled with a patience of 2 epochs
Inference platform
This model is used by the CAP Babel Machine, an open-source and free natural language processing tool, designed to simplify and speed up projects for comparative research.
Cooperation
Model performance can be significantly improved by extending our training sets. We appreciate every submission of CAP-coded corpora (of any domain and language) at poltextlab{at}poltextlab{dot}com or by using the CAP Babel Machine.
Reference
Sebők, M., Máté, Á., Ring, O., Kovács, V., & Lehoczki, R. (2024). Leveraging Open Large Language Models for Multilingual Policy Topic Classification: The Babel Machine Approach. Social Science Computer Review, 0(0). https://doi.org/10.1177/08944393241259434
Debugging and issues
This architecture uses the sentencepiece
tokenizer. In order to use the model before transformers==4.27
you need to install it manually.
If you encounter a RuntimeError
when loading the model using the from_pretrained()
method, adding ignore_mismatched_sizes=True
should solve the issue.