Edit model card

You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

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

Log in or Sign Up to review the conditions and access this model content.

xlm-roberta-large-speech-cap

Model description

An xlm-roberta-large model finetuned on multilingual training data containing texts of the speech domain labelled with major topic codes from the Comparative Agendas Project.

How to use the model

Loading and tokenizing input data

import pandas as pd
import numpy as np
from datasets import Dataset
from transformers import (AutoModelForSequenceClassification, AutoTokenizer, 
                          Trainer, TrainingArguments)

CAP_NUM_DICT = {0: '1', 1: '2', 2: '3', 3: '4', 4: '5', 5: '6', 
6: '7', 7: '8', 8: '9', 9: '10', 10: '12', 11: '13', 12: '14', 
13: '15', 14: '16', 15: '17', 16: '18', 17: '19', 18: '20', 19: 
'21', 20: '23', 21: '999'}

tokenizer = AutoTokenizer.from_pretrained('xlm-roberta-large')
num_labels = len(CAP_NUM_DICT)

def tokenize_dataset(data : pd.DataFrame):
    tokenized = tokenizer(data["text"],
                          max_length=MAXLEN,
                          truncation=True,
                          padding="max_length")
    return tokenized

hg_data = Dataset.from_pandas(data)
dataset = hg_data.map(tokenize_dataset, batched=True, remove_columns=hg_data.column_names)

Inference using the Trainer class

model = AutoModelForSequenceClassification.from_pretrained('poltextlab/xlm-roberta-large-speech-cap',
                                                           num_labels=num_labels,
                                                           problem_type="multi_label_classification",
                                                           ignore_mismatched_sizes=True
                                                           )

training_args = TrainingArguments(
    output_dir='.',
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8
)

trainer = Trainer(
    model=model,
    args=training_args
)

probs = trainer.predict(test_dataset=dataset).predictions
predicted = pd.DataFrame(np.argmax(probs, axis=1)).replace({0: CAP_NUM_DICT}).rename(
    columns={0: 'predicted'}).reset_index(drop=True)

Fine-tuning procedure

xlm-roberta-large-speech-cap was fine-tuned using the Hugging Face Trainer class with the following hyperparameters:

training_args = TrainingArguments(
    output_dir=f"../model/{model_dir}/tmp/",
    logging_dir=f"../logs/{model_dir}/",
    logging_strategy='epoch',
    num_train_epochs=10,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    learning_rate=5e-06,
    seed=42,
    save_strategy='epoch',
    evaluation_strategy='epoch',
    save_total_limit=1,
    load_best_model_at_end=True
)

We also incorporated an EarlyStoppingCallback in the process with a patience of 2 epochs.

Model performance

The model was evaluated on a test set of 92244 examples (10% of the available data).
Model accuracy is 0.78.

label precision recall f1-score support
0 0.67 0.76 0.71 6352
1 0.7 0.54 0.61 2436
2 0.76 0.88 0.81 4133
3 0.8 0.7 0.75 2588
4 0.69 0.67 0.68 3080
5 0.82 0.78 0.8 3053
6 0.74 0.74 0.74 2340
7 0.81 0.75 0.78 1658
8 0.79 0.59 0.68 1759
9 0.71 0.82 0.76 3428
10 0.7 0.73 0.72 3982
11 0.74 0.65 0.69 2622
12 0.75 0.62 0.68 1914
13 0.67 0.69 0.68 3155
14 0.78 0.77 0.77 2900
15 0.77 0.64 0.7 1762
16 0.73 0.44 0.55 1320
17 0.74 0.69 0.71 4872
18 0.67 0.72 0.69 7497
19 0.64 0.66 0.65 2411
20 0.71 0.85 0.77 2764
21 0.94 0.94 0.94 26218
macro avg 0.74 0.71 0.72 92244
weighted avg 0.78 0.78 0.78 92244

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.

Debugging and issues

This architecture uses the sentencepiece tokenizer. In order to run 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.

Downloads last month
4
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Collection including poltextlab/xlm-roberta-large-speech-cap-old