This repository contains preliminary code and data for the paper titled:
Modeling Protagonist Emotions for Emotion-Aware Storytelling Faeze Brahman, and Snigdha Chaturvedi. EMNLP 2020.
The dataset can be downloaded from here and unzipped in data/
folder.
Data files includes:
[train/test/dev]_x1.txt
: titles[train/test/dev]_x4.txt
: stories[train/test/dev]_mapped.txt
: automatically annotated emotion arcsgpt2_pretrained_models/
folder.pip install
) it and use run_classifier_bert.py
to train the emotion classifier.comet_generate.py
and find_x_o_appx.py
there. prepare_data.py
to preprocess the story data and transform them into TFRecord format. An example command is (please see the code for more config options).
python prepare_data.py --data_dir=data
* Run `run_[X].sh` for training/testing model `[X]`. (please see config files for more config options.)
* Use `Reinforcement/run_evaluation.py` for evaluation on emotion faithfulness. An example command is:
```bash
python Reinforcement/run_evaluation.py --all-preds-dir <PATH_TO_GENERATED_TSV_FILE> --arc-file <PATH_TO_ARC_FILE> --output_file <PATH_TO_SAVE_JSON_RESULTS>
perl LIB/multi-bleu.perl data/test_x4.txt < <PATH_TO_GENERATED_TXT_FILE>
Distinct-n
scores in the paper use the code here.First, download the pretrained model from here and untar it:
tar -xvzf model_checkpoint.tar.gz
Then run following command to interactively generate emotion-aware stories:
sh run_interactive.sh
Running that, it will ask you to first enter a Title, and then a sequence of three emotions separated by space from joy, anger, sadness, fear, neutral! for example: joy sadness sadness
The code is adapted from Counterfactual Story Generation.
Please cite our paper using the following bibtex:
@inproceedings{brahman-chaturvedi-2020-modeling,
title = "Modeling Protagonist Emotions for Emotion-Aware Storytelling",
author = "Brahman, Faeze and
Chaturvedi, Snigdha",
booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP)",
month = nov,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.emnlp-main.426",
pages = "5277--5294"
}