nljubesi's picture
Update README.md
f840887
metadata
language: en
license: cc-by-sa-4.0
tags:
  - text-classification
  - hate-speech
widget:
  - text: Gay is okay.

roberta-base-frenk-hate

Text classification model based on roberta-base and fine-tuned on the FRENK dataset comprising of LGBT and migrant hatespeech. Only the English 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": 6,
        "learning_rate": 3e-6,
        "train_batch_size": 69}

Performance

The same pipeline was run with two other transformer models and fasttext for comparison. 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
roberta-base-frenk-hate 0.7915 0.7785
xlm-roberta-large 0.7904 0.77876
xlm-roberta-base 0.7577 0.7402
fasttext 0.725 0.707

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

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 1.35e-08 1.05e-07

Comparison with xlm-roberta-large yielded inconclusive results. roberta-base has average accuracy 0.7915, while xlm-roberta-large has average accuracy of 0.7904. If macro F1 scores were to be compared, roberta-base actually has lower average than xlm-roberta-large: 0.77852 vs 0.77876 respectively. The same statistical tests were performed with the premise that roberta-base has greater metrics, and the results are given below.

test accuracy p-value macro F1 p-value
Wilcoxon 0.188 0.406
Mann Whithey 0.375 0.649
Student t-test 0.681 0.934

With reversed premise (i.e., that xlm-roberta-large has greater statistics) the Wilcoxon p-value for macro F1 scores for this case reaches 0.656, Mann-Whithey p-value is 0.399, and of course the Student p-value stays the same. It was therefore concluded that performance of the two models are not statistically significantly different from one another.

Use examples

from simpletransformers.classification import ClassificationModel
model_args = {
        "num_train_epochs": 6,
        "learning_rate": 3e-6,
        "train_batch_size": 69}

model = ClassificationModel(
    "roberta", "5roop/roberta-base-frenk-hate", use_cuda=True,
    args=model_args
    
)

predictions, logit_output = model.predict(["Build the wall", 
                                        "Build the wall of trust"]
                                        )
predictions
### Output:
### array([1, 0])

Citation

If you use the model, please cite the following paper on which the original model is based:

@article{DBLP:journals/corr/abs-1907-11692,
  author    = {Yinhan Liu and
               Myle Ott and
               Naman Goyal and
               Jingfei Du and
               Mandar Joshi and
               Danqi Chen and
               Omer Levy and
               Mike Lewis and
               Luke Zettlemoyer and
               Veselin Stoyanov},
  title     = {RoBERTa: {A} Robustly Optimized {BERT} Pretraining Approach},
  journal   = {CoRR},
  volume    = {abs/1907.11692},
  year      = {2019},
  url       = {http://arxiv.org/abs/1907.11692},
  archivePrefix = {arXiv},
  eprint    = {1907.11692},
  timestamp = {Thu, 01 Aug 2019 08:59:33 +0200},
  biburl    = {https://dblp.org/rec/journals/corr/abs-1907-11692.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

and the dataset used for fine-tuning:

@misc{ljubešić2019frenk,
      title={The FRENK Datasets of Socially Unacceptable Discourse in Slovene and English}, 
      author={Nikola Ljubešić and Darja Fišer and Tomaž Erjavec},
      year={2019},
      eprint={1906.02045},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/1906.02045}
}