At the moment, we only use the text modality to correctly classify the emotion of the utterances.The experiments were carried out on two datasets (i.e. MELD and IEMOCAP)
Prerequisites
An x86-64 Unix or Unix-like machine
Python 3.8 or higher
Running in a virtual environment (e.g., conda, virtualenv, etc.) is highly recommended so that you don't mess up with the system python.
First configure the hyper parameters and the dataset in train-erc-text.yaml and then,
In this directory run the below commands. I recommend you to run this in a virtualenv.
python train-erc-text.py
This will subsequently call train-erc-text-hp.py and train-erc-text-full.py.
Results on the test split (weighted f1 scores)
Model
MELD
IEMOCAP
EmoBERTa
No past and future utterances
63.46
56.09
Only past utterances
64.55
68.57
Only future utterances
64.23
66.56
Both past and future utterances
65.61
67.42
→ without speaker names
65.07
64.02
Above numbers are the mean values of five random seed runs.
If you want to see more training test details, check out ./results/
If you want to download the trained checkpoints and stuff, then here is where you can download them. It's a pretty big zip file.
They are based on RoBERTa-base and RoBERTa-large, respectively. They were trained on both MELD and IEMOCAP datasets. Our deployed models are neither speaker-aware nor take previous utterances into account, meaning that it only classifies one utterance at a time without the speaker information (e.g., "I love you").
Flask app
You can either run the Flask RESTful server app as a docker container or just as a python script.
Running the app as a docker container (recommended).
There are four images. Take what you need:
docker run -it --rm -p 10006:10006 tae898/emoberta-base
docker run -it --rm -p 10006:10006 --gpus all tae898/emoberta-base-cuda
docker run -it --rm -p 10006:10006 tae898/emoberta-large
docker run -it --rm -p 10006:10006 --gpus all tae898/emoberta-large-cuda
Running the app in your python environment:
This method is less recommended than the docker one.
Run pip install -r requirements-deploy.txt first.
The app.py is a flask RESTful server. The usage is below:
python app.py --host 0.0.0.0 --port 10006 --device cpu --model-type emoberta-base
Client
Once the app is running, you can send a text to the server. First install the necessary packages: pip install -r requirements-client.txt, and the run the client.py. The usage is as below:
client.py [-h] [--url-emoberta URL_EMOBERTA] --text TEXT
For example:
python client.py --text "Emotion recognition is so cool\!"
The best way to find and solve your problems is to see in the github issue tab. If you can't find what you want, feel free to raise an issue. We are pretty responsive.
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
Fork the Project
Create your Feature Branch (git checkout -b feature/AmazingFeature)
Run make style && quality in the root repo directory, to ensure code quality.
Commit your Changes (git commit -m 'Add some AmazingFeature')
Push to the Branch (git push origin feature/AmazingFeature)