We focus on essay generation, which is a challenging task that generates a paragraph-level text with multiple topics. Progress towards understanding different topics and expressing diversity in this task requires more powerful generators and richer training and evaluation resources. To address this, we develop a multi-topic-aware long short-term memory (MTA-LSTM) network. In this model, we maintain a novel multi-topic coverage vector, which learns the weight of of each topic and is sequentially updated during the decoding process. Afterwards this vector is fed to an attention model to guide the generator.
The code in this repository is written in Python 2.7/TensorFlow 1.4.0. And if you use other versions of Python or TensorFlow, you should modify some code.
Composition Data Set: Download
Zhihu Data Set: Download
Data/ respository, you need to prepare two files
vec.txt(word embedding trained by word2vec), which is created from text dataset mentioned above.
Before train the model, you should set some parameters of this model in
Config.py file. Then, you need to run
Preprocess.py file for creating
coverage_data file(convert trainingdata into binary formats of TensorFlow, and more detail about this can be found in the blog),
word_vec.pkl file(this is word embedding) and
word_voc.pkl file(vocabulary of text). At the same time, you should set
total_step parameter in
Train.py whose value is got from output of
Start training the model using
$ python Train.py
After you train the model, you can generate the text in the control of word set. You should modify
Generation.py file and set
test_word to a set of words. Then, if you want, you can also set some parameters for generation in
Config.py file. Generate text by run:
$ python Generation.py