Awesome
Talk The Walk: Navigating New York City Through Grounded Dialogue
This repository provides code for reproducing experiments of the paper Talk The Walk: Navigating New York City Through Grounded Dialogue by Harm de Vries, Kurt Shuster, Dhruv Batra, Devi Parikh, Jason Weston, and Douwe Kiela.
Getting started
(1) Setup the environment
First, create a conda environment with installed dependencies:
conda env create -f environment.yml
source activate ttw
# run your experiments
deactivate # Exit virtual environment
In case you get the error "no module named ttw" when running one of the experiments, please add the main directory to your python path:
export PYTHONPATH=/path/to/talkthewalk:$PYTHONPATH
(2) Download the data
Download the data by running the following bash script:
sh scripts/download_data.sh DATA_DIR
where DATA_DIR specifies the directory where the data files will be downloaded to (defaults to ./data).
(3) Run experiments
For all experiments, the data directory can be specified through the --data-dir
argument.
Experiment directory
Create a directory to store your experiments (logs and model checkpoints), for instance by mkdir exp
to
create an experiment directory in the main talkthewalk folder. By default, experiments will be saved to ./exp
but you can change the experiment directory via the --exp-dir
flag. The results of each experiment will be saved
in this directory under the experiment name, specified via --exp-name
.
Running emergent language experiments
To reproduce tourist location via discrete communication, run the following command to train the tourist and guide models:
python ttw/train/predict_location_discrete.py \
--vocab-sz 500 --apply-masc \
--T 1 --exp-name discrete_masc_T1 \
--num-epochs 200 --cuda
For continuous communication, run:
python ttw/train/predict_location_continuous.py \
--vocab-sz 500 --apply-masc \
--T 1 --exp-name continuous_masc_T1 \
--num-epochs 200 --cuda
Running natural language experiments
First, create a dictionary:
python ttw/dict.py --data-dir DATA_DIR
which will save the dictionary to DATA_DIR/dict.txt
.
Next, train the tourist with imitation learning:
python ttw/train/train_tourist.py \
--exp-name tourist_imitation \
--exp-dir EXP_DIR --cuda
To train a guide (from scratch) to perform location prediction from generated tourist utterances, run:
python ttw/train/predict_location_generated.py \
--tourist-model EXP_DIR/tourist_imitation/tourist.pt \
--decoding-strategy greedy --trajectories all \
--train-guide --T 0 --cuda
where --trajectories all
indicates to train on random walk trajectories of length --T
. If --trajectories human
, then the model will be trained
on human trajectories of the Talk The Walk dataset.
To optimize the tourist generation (with RL) in conjunction with a pre-trained guide: first, pretrain the guide:
python ttw/train/predict_location_language.py \
--last-turns 1 \
--exp-name guide_imitation \
--apply-masc --T 3 --cuda
next, train the tourist with the following command:
python ttw/train/predict_location_generated.py \
--tourist-model EXP_DIR/tourist_imitation/tourist.pt \
--guide-model EXP_DIR/guide_imitation/guide.pt \
--decoding-strategy sample --train-tourist --cuda
Evaluating on full task
For discrete comm, the command will be of the following form:
python scripts/evaluate_location.py \
--tourist-model TOURIST_CHECKPOINT \
--guide-model GUIDE_CHECKPOINT \
--communication discrete --cuda
For natural language communication, run:
python scripts/evaluate_location.py \
--tourist-model TOURIST_CHECKPOINT \
--guide-model GUIDE_CHECKPOINT \
--communication natural \
--decoding-strategy greedy --cuda
Running landmark classification experiments
If you want to run experiments using fasttext features, please install fastText via anaconda's pip of the ttw environment (follow instructions here). Next, download pretrained vectors wiki.en.zip, extract wiki.en.bin and put the file into the data directory.
To run landmark classification with text recognition features, use the following command:
python ttw/train/classify_landmarks.py --textrecog-features
License
Talk the Walk is CC-BY-NC licensed, as found in the LICENSE file.