Deep neural networks have enabled machines to be creative by generating images, music, poetry and films; however, most of these results are parlor tricks and do not approach the level of artistry that human experts exhibit. We want to create an AI that can collaborate with humans to create art that neither could on their own.
What it does
bairon is a human-ai collaborative poetry editing environment. As you write poetry, bairon assists with your creativity via a number of modules. If you select a word you have written, bairon will suggest synonyms and rhymes for that word.
The pies de resistance is bairon's poetry generation module. We created a deep neural network that generates novel poetry by training it on 3,000 poems (over 2.5M words) from legendary writers. As you create, bairon writes its own poem based on what you have written so far. This provides real-time inspiration and feedback during the writing process. We hope this will boost creativity and combat writer's block.
How we built it
Our frontend is built using React.js and our backend is a Python Flask server. We interface with the dictionary.com and datamuse APIs for thesaurus and rhyme suggestions, respectively.
Our poetry generation module is built on a GRU recurrent neural network, which we constructed and trained from scratch using TensorFlow and data from PoetryDB.org.
Challenges we ran into
Most of our challenges revolved around creating a beautiful and intuitive UI for collaborative editing and debugging our neural network. Recurrent neural networks are theoretically complex, and TensorFlow's documentation for them is lacking.
Accomplishments that we're proud of
We are proud of building a tool that is both technically cool and practically useful. I plan on using bairon for my own writing in the future.
What we learned
- Learned to construct GRU language models with TensorFlow's RNN API.
- Learned how to deploy deep learning models with TensorFlow Serving.
What's next for bairon
We would like to deploy our web app and deep learning model so that other people can work with bairon. We'd also like to experiment with new model architectures to make poetry generation even better. One idea we have is to train a phoneme generation model so that bairon can learn concepts like rhyme and consonance.