Reproducing Hu, et. al., ICML 2017's "Toward Controlled Generation of Text" in PyTorch with FastNLP. This work is forked from University of Bonn's NLP Lab project on Winter Semester 2017/2018, and for DL course in FDU.
- Python 3.6+
- PyTorch 1.0+
- fastNLP 0.2 https://github.com/fastnlp/fastNLP
- TorchText https://github.com/pytorch/text
- Download
yelp
andSST
and place them in folder.data
- Run
python train_vae.py --save --train_vae {--gpu}
. This will createvae.bin
. Essentially this is the base VAE as in Bowman, 2015 [2]. This will also createdisc.bin
. The discriminator is using Kim, 2014 [3] architecture and the training procedure is as in Hu, 2017 [1].
2. Run test.py --model {vae, ctextgen}.bin {--gpu}
for basic evaluations, e.g. conditional generation and latent interpolation.
- Only conditions the model with sentiment, i.e. no tense conditioning.
- Entirely using SST dataset, which has only ~2800 sentences after filtering. This might not be enough and leads to overfitting. The base VAE in the original model by Hu, 2017 [1] is trained using larger dataset first.
- Obviously most of the hyperparameters values are different.
SST http://nlp.stanford.edu/sentiment/trainDevTestTrees_PTB.zip
yelp https://drive.google.com/file/d/1HaUKEYDBEk6GlJGmXwqYteB-4rS9q8Lg/view?usp=sharing
IMDBhttp://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz
- Hu, Zhiting, et al. "Toward controlled generation of text." International Conference on Machine Learning. 2017. [pdf]
- Bowman, Samuel R., et al. "Generating sentences from a continuous space." arXiv preprint arXiv:1511.06349 (2015). [pdf]
- Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014). [pdf]