EmoMosaic-base / README.md
vtlustos's picture
Update README.md
e102047 verified
metadata
language: en
tags:
  - text-classification
  - emotion classification
  - emotion recognition
  - cross-domain emotion recognition
datasets:
  - go_emotions
  - sem_eval_2018_task_1
  - xed_en_fi
  - daily_dialog
license: mit
widget:
  - text: >-
      All your work was lost when the computer crashed.</s><s>Oh my god. I spent
      a whole week on that.

EmoMosaic-base

EmoMosaic-base is a model designed for classifying emotions in text, demonstrating strong performance across multiple domains. The model was developed as a part of my master's thesis.

Author

Author: Bc. Vít Tlustoš (tlustos.vit@gmail.com)

Supervisor: doc. Malik Aamir Saeed Ph.D

Thesis Text

Once the thesis has been defended, the text will be accessible at https://www.vut.cz/studenti/zav-prace/detail/153407. You are welcome to read it. Should you have any questions, please don't hesitate to contact me via the provided email.

Demo Application

As a part of the solution we developed a Gradio application and deployed it on the Hugging Face Spaces platform. Once the thesis is made public, you can access it at: https://huggingface.co/spaces/vtlustos/EmoMosaic-space. This allows anyone to experiment with the models easily without requiring any technical skills or setup.

Models

To utilize these models within your application, first install all the necessary dependencies.

pip install torch
pip install transformers
pip install datasets

To utilize these models within your application, integrate following code and format your samples as context</s><s>sentence. The context is optional and represents sentences preceding the sentence to be classified, while sentence refers to the actual sentence undergoing classification. This example demonstrates how to use the EmoMosaic-base model. If you prefer to use its larger counterpart, replace vtlustos/EmoMosaic-base with vtlustos/EmoMosaic-large.

import torch
from transformers import RobertaTokenizer
from transformers import RobertaForSequenceClassification

# 1. initialize the model
tokenizer = RobertaTokenizer.from_pretrained(
    "vtlustos/EmoMosaic-base"
)
model = RobertaForSequenceClassification.from_pretrained(
    "vtlustos/EmoMosaic-base"
).to('cuda:0')

# 2. tokenize the sentences
tokens = tokenizer(
    [
        "All your work was lost when the computer crashed.</s><s>Oh my god. I spent a whole week on that."
    ],
    truncation=True,
    padding=True,
    return_tensors = "pt"
)    

# 3. make the prediction
with torch.no_grad():
    logits = model(
        tokens["input_ids"].to('cuda:0'), 
        tokens["attention_mask"].to('cuda:0')
    ).logits

# 4. convert to probabilities
preds = torch.sigmoid(logits)

print(preds)

After executing the code, you will receive a tensor with dimensions [S,E], where S represents the number of samples and E denotes the number of emotions. To associate individual probabilities with their respective emotions, use to the dictionary provided below:

ix2label = {
    "0": "admiration",
    "1": "amusement",
    "2": "anger",
    "3": "annoyance",
    "4": "anticipation",
    "5": "approval",
    "6": "caring",
    "7": "confusion",
    "8": "curiosity",
    "9": "desire",
    "10": "disappointment",
    "11": "disapproval",
    "12": "disgust",
    "13": "embarrassment",
    "14": "excitement",
    "15": "fear",
    "16": "gratitude",
    "17": "grief",
    "18": "happiness",
    "19": "joy",
    "20": "love",
    "21": "nervousness",
    "22": "optimism",
    "23": "pessimism",
    "24": "pride",
    "25": "realization",
    "26": "relief",
    "27": "remorse",
    "28": "sadness",
    "29": "surprise",
    "30": "trust"
}

Results

Here we present a brief overview of the results. For an in-depth analysis and discussion, please refer to the text of the thesis. The analysis covers model training, comparisons with other methods, assessments of performance at the level of individual categories, calibration, and qualitative evaluations across various scenarios.

SemEval-2018 Task 1: Affect in Tweets

Model Accuracy P (macro) R (macro) F1 (macro) P (micro) R (micro) F1 (micro)
EmoMosaic-base 20.65 54.96 62.58 58.44 64.63 73.62 68.83
EmoMosaic-large 22.49 57.97 64.12 60.72 67.44 75.27 71.14

Note: P and R denote precision and recall, respectively. Results are shown for our top-performing models measured on the test set of the SemEval-2018 Task 1: Affect in Tweets dataset.

GoEmotions

Model Accuracy P (macro) R (macro) F1 (macro) P (micro) R (micro) F1 (micro)
EmoMosaic-base 46.47 51.41 57.81 53.72 52.70 62.53 57.19
EmoMosaic-large 46.67 51.35 58.34 53.93 52.86 63.39 57.65

Note: P and R denote precision and recall, respectively. Results are shown for our two top-performing models measured on the test set of the GoEmotions dataset.

XED

Model Accuracy P (macro) R (macro) F1 (macro) P (micro) R (micro) F1 (micro)
EmoMosaic-base 51.78 48.47 63.00 54.67 48.62 63.86 55.21
EmoMosaic-large 52.59 50.35 66.54 57.19 50.43 67.43 57.70

Note: P and R denote precision and recall, respectively. Results are shown for our two top-performing models measured on the test set of the XED dataset.

DailyDialog

Model Accuracy P (macro) R (macro) F1 (macro) P (micro) R (micro) F1 (micro)
EmoMosaic-base 84.85 46.34 49.60 46.94 53.44 64.81 58.57
EmoMosaic-large 85.05 47.20 53.80 49.65 54.24 68.77 60.65

Note: P and R denote precision and recall, respectively. Results are shown for our two top-performing models measured on the test set of the DailyDialog dataset.

Per-Emotion Performance

EmoMosaic-base

Emotion Precision Recall F1
admiration 63.82 80.16 71.06
amusement 74.11 94.32 83.00
anger 63.46 74.08 68.36
annoyance 35.15 44.37 39.23
anticipation 39.09 55.15 45.75
approval 43.40 45.87 44.60
caring 45.67 42.96 44.27
confusion 36.10 56.86 44.16
curiosity 48.48 67.25 56.34
desire 53.09 51.81 52.44
disappointment 35.57 35.10 35.33
disapproval 40.00 49.44 44.22
disgust 62.05 71.31 66.36
embarrassment 57.69 40.54 47.62
excitement 37.40 44.66 40.71
fear 61.93 68.69 65.13
gratitude 93.29 90.91 92.09
grief 66.67 66.67 66.67
happiness 58.10 70.76 63.81
joy 73.43 81.18 77.11
love 64.95 73.74 69.07
nervousness 33.33 43.48 37.74
optimism 64.33 76.00 69.68
pessimism 42.31 52.80 46.98
pride 66.67 37.50 48.00
realization 32.71 24.14 27.78
relief 55.56 45.45 50.00
remorse 55.56 89.29 68.49
sadness 58.65 70.14 63.88
surprise 40.02 51.29 44.96
trust 35.33 47.01 40.34

EmoMosaic-large

Emotion Precision Recall F1
admiration 65.25 79.37 71.62
amusement 73.87 93.18 82.41
anger 64.29 76.00 69.66
annoyance 33.81 44.06 38.26
anticipation 42.10 57.99 48.78
approval 42.66 44.73 43.67
caring 40.26 45.93 42.91
confusion 38.76 52.94 44.75
curiosity 48.40 74.65 58.73
desire 65.08 49.40 56.16
disappointment 34.36 37.09 35.67
disapproval 39.14 47.94 43.10
disgust 63.62 72.30 67.68
embarrassment 58.33 37.84 45.90
excitement 39.82 43.69 41.67
fear 64.22 71.24 67.55
gratitude 91.01 92.05 91.53
grief 66.67 66.67 66.67
happiness 58.21 75.23 65.63
joy 74.55 83.53 78.78
love 64.13 76.13 69.62
nervousness 42.86 39.13 40.91
optimism 66.98 79.38 72.66
pessimism 43.66 47.73 45.61
pride 63.64 43.75 51.85
realization 34.29 24.83 28.80
relief 33.33 36.36 34.78
remorse 57.78 92.86 71.23
sadness 61.08 72.67 66.37
surprise 44.02 55.67 49.16
trust 40.59 48.26 44.09