sloberta-frenk-hate / README.md
5roop's picture
Added use examples
cde7fe0

sloberta-frenk-hate

Text classification model based on EMBEDDIA/sloberta and fine-tuned on the FRANK dataset comprising of LGBT and migrant hatespeech. Only the slovenian subset of the data was used for fine-tuning and the dataset has been relabeled for binary classification (offensive or acceptable).

Fine-tuning hyperparameters

Fine-tuning was performed with simpletransformers. Beforehand a brief hyperparameter optimisation was performed and the presumed optimal hyperparameters are:

model_args = {
        "num_train_epochs": 14,
        "learning_rate": 1e-5,
        "train_batch_size": 21,
        }

Performance

The same pipeline was run with two other models and with the same dataset. Accuracy and macro F1 score were recorded for each of the 6 fine-tuning sessions and post festum analyzed.

model average accuracy average macro F1
sloberta-frenk-hate 0.7785 0.7764
EMBEDDIA/crosloengual-bert 0.7616 0.7585
xlm-roberta-base 0.686 0.6827

From recorded accuracies and macro F1 scores p-values were also calculated:

Comparison with crosloengual-bert:

test accuracy p-value macro F1 p-value
Wilcoxon 0.00781 0.00781
Mann Whithney U test 0.00163 0.00108
Student t-test 0.000101 3.95e-05

Comparison with xlm-roberta-base:

test accuracy p-value macro F1 p-value
Wilcoxon 0.00781 0.00781
Mann Whithney U test 0.00108 0.00108
Student t-test 9.46e-11 6.94e-11

Use examples

from simpletransformers.classification import ClassificationModel
model_args = {
        "num_train_epochs": 14,
        "learning_rate": 1e-5,
        "train_batch_size": 21,
        }

model = ClassificationModel(
    "bert", "5roop/bcms-bertic-frenk-hate", use_cuda=True,
    args=model_args
    
)

predictions, logit_output = model.predict(["Silva, ti si grda in neprijazna.", "Naša hiša ima dimnik."])
predictions
### Output:
### array([1, 0])