An understanding of narratives is an essential element of literary analysis, particularly of drama and prose fiction, with theories concerning plot going back to Aristotle.

Narrative analysis is also a discipline with many possible pitfalls: one may be able to sum up key events in a novel, but the interesting things may not be in the plot but all that eludes the plot. Still, narrative analyses are good for comparing works, and add to the understanding of genre. A detective novel that does not end with a solution to the crime would stand out from the genre, just as a tragedy that provides a happy ending would be in an (interesting) conflict with the expectations of the genre.

With respect to computational analysis, narrative seems like an obvious subject and a way to reduce the complexity of a text to a series of events that could be the object of comparison throughout a larger corpus. However, it is not easy to formalize narratives in a way that a computer can understand, at least, not in the way humans understand. A person may die in a single sentence, something that would be important to a narrative, but this may easily elude attempts to capture events, just as shifts in time are difficult to decode.

What may be more easily done is to determine where certain characters appear, and how often, offering help for an assisted text analysis.

More advanced approaches could focus on narrative as a way in which a text expresses emotions. For example, sentiment analysis makes it possible to provide a different kind of "blueprint" of the text that does not focus on events in the first place, but on the rhythm of expressiveness.



Inspired by David McClure’s observations of word distributions throughout narrative time (see blog posts in the Article section), use the Reader function in Voyant Tools on your corpus to compare how a word is used in different texts. Explore also the TextualArc to see how words are distributed in one book. The tools allow you to visualise how specific keywords fluctuate across different chapters of e.g. a novel or to compare the relative frequency with which specific words occur in various novels of the same or different authors. 

The construction of a narrative can also be analyzed through its lexical density, i.e. the ratio of lexical words that give the text its meaning divided by the total number of words. Input a text in this online text analyzer to calculate the lexical density and different parts-of-speech, i.e. word classes according to their functions in text. How do different lexical elements contribute to narration?


One goal of narratives is to resonate with the reader’s own experiences or imagined joys and sorrows of human life, and therefore narration, while telling the story further, also develops in terms of sentiment. These implicit associations of words and sentiments can be approximated computationally, and reveal information about the plot structure. A sentiment analysis, i.e. identifying and categorizing sentiments expressed in a text, is a computational approach to explore and reflect a novel's story arc. This analysis can be based on lexicons where each word is linked with a sentiment score (i.e. its valence), for instance at the positivity/negativity axis. Another approach is to use unsupervised or supervised machine learning to associate words with valence based on their semantic similarity. 

Jockers (2014) discovered that the expressiveness of the narrative throughout the story can be used as a proxy for fluctuations in the plot movement. Studying plot shift through sentiment analysis can serve to construct a story arc. The Syuzhet package developed by Jockers can be used to generate a plot shape of a story, or even to cluster books that have a similar plot shape. For a more elaborated discussion about sentiment analysis and its implications for literary analysis, see Hu et al. (2019). 

Run a sentiment analysis on a literary text, retrieved for example from Gutenberg. Extract sentiments with the Syuzhet package and visualize the sentiment plot trajectory.

As to parts-of speech (POS) mentioned in the elementary exercises, you can also retrieve POS-tags for each word in a text computationally in R or Python, for instances following instructions and code provided here and/or here. Calculate the noun-to-verb ratio or the fraction of all words in a text/corpus that are verbs as a measure of the narrative balance between description and action.


Scripts and sites



Character »