This is PyTorch implementation for SUMBT+LaRL: Effective Multi-Domain End-to-End Neural Task-Oriented Dialog System, Hwaran Lee, Seokhwan Jo, Hyungjun Kim, Sangkeun Jung, and Tae-Yoon Kim, IEEE Access, 2021
This code is implemented upon ConvLab. Specifically, it requires Python 3.6, CUDA 10.1, PyTorch 1.0+, and HuggingFace 0.6.1.
For convenience, Build and Run the Dockerfile to get the environment for this implementation. Note that when you run the docker file, mount this repository to access the data and codes.
-
unzip followings:
data/multiwoz/annotation/annotated_user_da_with_span_full_patchName_convai.json.zip
data/multiwoz/annotation/MULTIWOZ2.zip
-
run preprocessing codes:
cd data/multiwoz; python split_dataset.py; python construct_ontology.py --output_dir $output_dir;
or, just unzip followings:
data/multiwoz/sumbt_larl.zip
data/multiwoz/{train, val, test}.json.zip
The main command is following:
python convlab/modules/e2e/multiwoz/SUMBT_LaRL/main.py --do_train --do_eval \
--data_dir $data_dir --task_name $task_name \
--output_dir $output_dir --delex_data_dir $delex_data_dir
For more details, see running scripts in convlab/modules/e2e/multiwoz/SUMBT_LaRL/scripts
for pretraining SUMBT and LaRL modules, end-to-end fine-tuning, and then RL training.
You can run the trained end-to-end models with the simulator in ConvLab with the command.
$ python run.py {spec file} {spec name} {mode}
For example, you can download our trained models from Google Drive and unzip the model inside models
directory, then run the command.
$ python run.py convlab/spec/sumbt_larl.json sumbt_larl eval
If you use this code in your research, please cite following:
@article{lee2021sumbt+,
title={SUMBT+ LaRL: Effective Multi-Domain End-to-End Neural Task-Oriented Dialog System},
author={Lee, Hwaran and Jo, Seokhwan and Kim, Hyungjun and Jung, Sangkeun and Kim, Tae-Yoon},
journal={IEEE Access},
volume={9},
pages={116133--116146},
year={2021},
publisher={IEEE}
}