|
# sloberta-frenk-hate |
|
Text classification model based on `EMBEDDIA/sloberta` and fine-tuned on the [FRANK dataset](https://www.clarin.si/repository/xmlui/handle/11356/1433) 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: |
|
```python |
|
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 |
|
|
|
```python |
|
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]) |
|
``` |