In his essay “Philosophy of Composition” poet Edgar Allan Poe (1846) purports to
describe his approach to literary composition using the example of his poem The Raven.
Despite the poetic framing, the account, in fact, prescribes a reasoning process for creating
narratives in a step by step manner. Among other suggestions he states that a work of art should start with creating the climax.
Combining that with a classical dramatic structure, where the climax follows a part of rising tension and precedes a part with falling tension provides an interesting approach to fabula generation using the Skaleatrics data. That, however, requires a measure of tension that is not yet provided by the data. Two datasets offer potential to perform add an annotation for plot-tensions: The script midpoints table, which contains plausible action triples and the action-pairs table that offers valid conjunctions for plausible action pairs. Because one potential action pair can be used for several action triples they offer more variability, and the decision was made to annotate them. An additional tension column was added, and 2705 out of 3699 rows were hand annotated using a tension scale ranging from 0 (no tension) to 5 (high tension).
As a guideline, tension was taken to be the grade of unexpectedness in transition from the first action to the second, in conjunction with the development of the violence level.
Thus the pair “are_insulted_by:are_arrested_for_killing” receives a tension rating of 5 due to the implied violence, and the unexpected plot twist, while “hire:are_assisted_by” receives a rating of 0 for the complete lack of violence and a predictable development.
Exploratory work was performed on other ways to measure tension. Since the tension of an action can be affected by the location it has been performed in, a way to compute location tension has been added. This tension is determined in an automatic fashion by computing the average sentiment of all the ambience words provided of the location. The results prove interesting but somewhat questionable due to the idiosyncrasies of the dataset.
The fabula generation starts at the climax by choosing a random action-pair with an appropriately high tension level. It then generates the fabula leading to the climax.
For that, the Before Action from the action-pair is used to find all suitable mid-point triples.
Such a midpoint triple is considered suitable for our narrative arc only if:
Its After Action is the same as the Before Action of the climax
The tension of the (Midpoint, After-Midpoint) action-pair is below or equal to the climax action
The tension of the (Before-Midpoint, Midpoint) action-pair is below or equal to the previous action pair.
The same procedure is used to generate the fabula that follows the climax (with an appropriate switch in the compared actions).
Such a baseline system is already surprisingly apt in generating coherent fabula consisting of five action-pairs. We assume that it is the backward/forward generation starting at a climax that is responsible for the coherence, as compared to a completely unidirectional generation. The unidirectional case does not have a distinct climax that, supposedly, acts as a stabilising semantic fixpoint in our approach. This is yet to be empirically evaluated.
Be that as it may, an example for fabula discovered by this approach is:
[('eject', '3.0', 'are_threatened_by'), ('are_threatened_by', '3.0', 'attack'), ('attack', '5.0', 'are_arrested_for_hurting'), ('are_arrested_for_hurting', '3.0', 'beg_forgiveness_from'), ('beg_forgiveness_from', '0.0', 'are_forgiven_by')]
Being able to generate a classical dramatic tension arc, we decided to enable the system to create narratives that follow an arbitrary, provided tension arc. As it turned out this was not trivially realizable with the baseline system, so an algorithmic restructuring had to take place, that unfortunately could not be completed in the restricted time available.
The envisioned structure involves dynamically transforming the rated action-pair list into two trees: one for the fabula leading to the climax, and one leading from the climax. For each tree, the root node is expanded into all action-pairs whose rating is equal to the climax rating. Each of these nodes, in turn, is expanded into all the possible tension ratings. Subsequently, all suitable midpoint-triples are identified and split into two action-pairs. The first action pairs are collected under the node with the appropriate rating. These again are expanded into all possible ratings, and the second action-pairs are collected accordingly.
Following this procedure an arbitrarily deep tree can be constructed. This tree forms the conceptual space of the fabula, and due to its structure it can be traversed in a tension-rating aware manner. Finding the fabula for both sides of the climax becomes a task of finding a suitable path in the respective tree. This can be done using random search or classical tree-search algorithms like MCTS and is a storybook case of exploratory creativity (cf. canonical computational creativity literature like Boden, 1990).
The refactoring procedure conducted by us, in itself is a fine exemplar of a process relevant to creativity and called representational redescription (cf. Gervàs and León, 2015). By manually building the action-tension tree the available data was re-represented by us from a inconvenient list into a readily explorable tree.
In order to enhance the perceived creativity of the system Colton (2008) generally suggests to “climb the meta mountain”, which means to transfer responsibility for more and more tasks from the programmer to the system. Following this tenet, an appropriate extension for the system would be to implement an autonomous redescription.
Initially this would merely mean automatically building trees of the structure above from arbitrary, rated lists. A good first instance for that would be the action-valence data generated by one of the other teams. The more tricky step, and one involving further research, would be to implement an appropriate logic on how to decide which representation to take when, during exploration. Such a system would also exhibit transformatory creativity (Boden, 1990) which is a highly desirable trait.
As soon as the Fabula module delivered a suitable framework, the implemented discourse module exchanges each action verb with an action event through a connection within the Scealextric. This event is an idiomatic embellishment of the action pair. Because the tension arc has modeled the inherent flow of the story, the coupling of the action events does not create a chaotic turn of events. Rather, it tends to produce a logical, but also intuitive, whole.
An interesting addition to the discourse module are functions that are able to randomly embellish sentences. The core makes use of pattern's drivel, a function that generates a description of a noun. An integer constant (not coincidentially named "NUTSNESS") determines the probability of such embellishments. At times, the result happens to be ridiculous and looks like a sentence from James Joyce's notorious novel "Finnegans Wake". However, almost all of the results have a surprising and comic effect. An enhanced version of the embellish function could perhaps be a step from "simple" pattern connection to computational creative storytelling, or at least the illusion of it.
We did not focus on the appearance of special characters in our stories. Nevertheless, for the sake of completeness, characters are generated from the NOC list and included in the text. A suitable introduction and ending has also been added.
[('woo', '3.0', 'are_kissed_by'), ('are_kissed_by', '3.0', 'flirt_with'), ('flirt_with', '5.0', 'are_abducted_by'), ('are_detained_by', '5.0', 'escape_from'), ('escape_from', '3.0', 'are_pursued_by')]
Keith Moon's natural defenses against seduction would have to be pierced. JD Salinger set about to get Keith Moon into bed in a parliament chamber. This is a vibrant place.
Keith Moon kissed JD Salinger tenderly. Later, JD Salinger took Keith Moon for a candlelit dinner in a yoga studio. This is a sweaty place. Horrible.
Keith Moon detained JD Salinger against its will. JD Salinger broke free of Keith Moon's clutches, yet Keith Moon pursued JD Salinger.
Keith Moon would never give up the hunt for JD Salinger.
[3, 3, 5, 5, 3]
Tom De Keyser, Pieter Fivez, Robert Homewood, Leonid Berov