A fantasy storytelling generator with a machine and a user as co-authors
A machine writing a storytelling together with a user is my final dissertation for the degree Advanced Software Engineer MSc being studied at University of Westminster, London, UK during the 2017-2018 academic year. It has the aim of developing a system which allows a user to co-write a story with a machine by taking turns. This project focuses on research which will lead to the development of software that is able to manipulate user’s pieces of a story as an input and provide the following part of the story as an output until the story is completed.
The system execution flow would start by the user defining some stories parameters such as their character's name and gender. Following, they would start by writing an introduction to their character. Next, the system will continue the story by introducing it's character. In the third exchange, the user introduces an event (or problem) to the story and the machine will answer with a continuation to such event trying to keep its response in the correct story context. Finally, the user will write a conclusion to the story.
The project focuses on Artificial Intelligence (AI), more specifically, applying concepts related to Natural Language Processing in order to develop the idea. As for the big picture, the system is composed mainly by 5 components: a Story Rules Checker that goes through the user's input to determine if the user is following the rules such as correct story tense, characters introduced, word limit, etc.; Keyword Selector to define the most important and related keywords from the user's input that will help the selection of a response from the system's side; an Output Selector that receives a set of keywords as input and checks the database of pieces of story to select one that fits with the user's input as a continuation of the story; an Output Generator that uses lexicalization to manipulate the selected piece of story to incorporate details about the story such as characters' references; and a Story Management that unifies and is used as a link between the 4 components described before.
The implementation of all the components in a whole was done in 4 stages:
- The system’s skeleton was defined through several projects, each of them with the aim to focus on specific solutions that will help the machine to achieve the expected results.
- A very basic implementation for these solutions was done for each of the components, allowing a minimal working project that allowed a user to input pieces of stories and get the responses from the machine.
- Generate more pieces of stories to expand the database/ontology.
- The system was improved through more complex algorithms to increase the machine’s responses accuracy.