Building Narratives Computationally from Knowledge Graphs


How can we use knowledge graphs to build narratives?
Humans constantly create narratives to provide explanations for how and why something happens. Therefore, if we want to design systems that are able to reason like humans, such systems should be able to create these narratives. In the literature, there is a distinction between a fabula and a plot. The fabula is a collection of factual events  with their description (actor, location, time, etc). The plot adds a coherence layer to the series of events by introducing meaningful causal links between the most relevant events.

Difference between a story and a plot. Whereas the story events are numbered chronologically, the plot events are connected by cause-and-effect relationships. Reference of the image here.

A knowledge graph is a semantic network with real-world entities (i.e. objects, events, situations, concepts) and relationships between them. Those relationships are described with triples (s, p, o) with s being the subject, p the predicate and o the object. If one uses a knowledge graph as input, building the story would be collecting all facts and their description in the graph. The plot would be about assessing the most relevant events and adding temporal and causal links between events.
At Sony CSL Paris, we investigate how to implement a system that can use knowledge graphs to build narrative structures. Particularly, our research is focused on four different directions: 1) how to represent the narrative? 2) how to construct it? 3) how to enrich it by adding nodes or linking them? 4) how to evaluate it? As a first prototype, we used the Wikidata knowledge graph to build a narrative network about the French Revolution.


Cover photo by Nong V.