This sentiment analysis is a response to the claims made by Norris J Lacy in his chapter, “The Mort Artu and Cyclic Closure”. Lacy argues that the reason the final book of the Lancelot-Grail cycle is such an anti-climax, a slow decline of Arthur’s kingdom rather than a resounding end to this massive corpus, is because it is a “romance without adventure” (87). It is lacking in quests and marvels and without this “lifeblood of romance” the narrative grinds into a linear and unerring conclusion, without interlaced quests or adventures. He also argues that as Camelot nears its end and reckons with its sins, the text further turns from a focus on chivalric quests to the question of fortune, as the remaining characters left alive are mortals not gods, who have no choice but to move unerringly towards fate (96). My analysis looks at all five of the LG texts, to determine whether the Mort Artu is in fact more centered on fortune than adventure in comparison to its preceding texts.

Beginning to Process Text

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidytext)
library(dplyr)
library(quanteda)
## Package version: 4.3.0
## Unicode version: 14.0
## ICU version: 71.1
## Parallel computing: disabled
## See https://quanteda.io for tutorials and examples.
LG_dir <- "~/Desktop/Vulgate Corpus"
LG_path_l <- list.files(LG_dir, pattern = 'txt$', full.names = TRUE)
corpus_grail <- lapply(LG_path_l, readLines)

names(corpus_grail) <- c('Estoire', 'Merlin', 'Mort', 'Lancelot', 'Quest')
corpus_grail <- corpus_grail[c(1, 2, 4, 5, 3)]
names(corpus_grail) <- names(corpus_grail)[c(1, 2, 3, 4, 5)]

corpus_grail_tokens <- lapply(corpus_grail, paste, collapse = ' ') |>
  lapply(tolower) |>
  lapply(strsplit, '\\W+') |>
  lapply(unlist)

all_words_df <- bind_rows(
  lapply(names(corpus_grail_tokens), function(name) {
    data.frame(word = corpus_grail_tokens[[name]], book = name, stringsAsFactors = FALSE)
  })
)

freq_df <- all_words_df %>%
  group_by(book, word) %>%
  summarise(Freq = n(), .groups = 'drop') %>%
  arrange(book, desc(Freq))

corpus_grail_text <- lapply(corpus_grail_tokens, paste, collapse = " ")
corpus_grail_text <- unlist(corpus_grail_text)
names(corpus_grail_text) <- names(corpus_grail_tokens)

quanteda_corpus <- corpus(corpus_grail_text)
dfm_grail <- tokens(quanteda_corpus, remove_punct = TRUE) |> dfm()

print(dfm_grail)
## Document-feature matrix of: 5 documents, 15,445 features (56.49% sparse) and 0 docvars.
##           features
## docs         the history    of holy grail  one  who   by order great
##   Estoire  10452       6  3278  319    41  815 1431  616   105   575
##   Merlin   15474       4  5113   97    17 1204 2093  760    94  1067
##   Lancelot  4271       4  1403   24    12  233  513  275    35   183
##   Quest     6384      16  1815  203   154  406  590  379    31   156
##   Mort     40545       6 13889  227    62 2910 4692 2565   237  1799
## [ reached max_nfeat ... 15,435 more features ]
print(head(freq_df))
## # A tibble: 6 × 3
##   book    word   Freq
##   <chr>   <chr> <int>
## 1 Estoire the   10452
## 2 Estoire and    6807
## 3 Estoire he     5092
## 4 Estoire to     4839
## 5 Estoire that   3507
## 6 Estoire of     3278

Making Custom Dictionary

I used ChatGPT for this slimmed down code for removing stop words and further cleaning the text

top_words <- freq_df

top_words_all <- top_words %>%
  group_by(word) %>%
  summarise(total_freq = sum(Freq), .groups = "drop") %>%
  arrange(desc(total_freq))

data("stop_words")
top_words_clean <- top_words_all %>%
  anti_join(stop_words, by = "word") %>%
  filter(grepl("^[a-z]+$", word))

view(top_words_clean) # this should open a separate tab with the list

After looking the first ~1000 top words, I created the below dictionary by sorting relevant terms into either “adventure” or “fortune”: each sentiment has 257 terms. I chose these terms to mirror Lacy’s argument that prior to MA, the LG is more concerned with quests, adventures, knightly endevours whereas MA turns to the inevitable fortune-led downfall of Camelot. Broadly negative terms such as “death” and “betrayal” were sorted into “fortune”, while neutral terms such “castle” and “sword” were listed as “adventure,” to balance these more widely applicable terms out. “joust” and “tournament” were also sorted into “fortune” due to Lacy’s observation that Arthur plans numerous fake battles to compensate for the dearth of actual quests. I didn’t add the top ten top words to either list because I think there are too generic to both adventure and fortune to be helpful. I also excluded any family relation terms like son or wife. The exception is “brother” in reference to the brotherhoods of questing.

Adventure and Fortune Sentiment Dictionary

library(tibble)

Lacy_tb <- tribble(
  ~word,        ~sentiment,
  "castle",     "adventure",
  "sword",      "adventure",
  "love",       "adventure",
  "rode",       "adventure",
  "world",      "adventure",
  "companions", "adventure",
  "shield",     "adventure",
  "arms",       "adventure",
  "worthy",     "adventure",
  "armor",      "adventure",
  "maiden",     "adventure",
  "court",      "adventure",
  "battle",     "adventure",
  "horses",     "adventure",
  "won",        "adventure",
  "brother",    "adventure",
  "honor",      "adventure",
  "lance",      "adventure",
  "heart",      "adventure",
  "beautiful",  "adventure",
  "forest",     "adventure",
  "dear",       "adventure",
  "helmet",     "adventure",
  "table",      "adventure",
  "fight",      "adventure",
  "city",       "adventure",
  "strong",     "adventure",
  "armed",      "adventure",
  "hands",      "adventure",
  "loved",      "adventure",
  "kingdom",    "adventure",
  "company",    "adventure",
  "mounted",    "adventure",
  "ship",       "adventure",
  "fast",       "adventure",
  "gladly",     "adventure",
  "raised",     "adventure",
  "joy",        "adventure",
  "happy",      "adventure",
  "noble",      "adventure",
  "forward",    "adventure",
  "strength",   "adventure",
  "friend",     "adventure",
  "power",      "adventure",
  "army",       "adventure",
  "brothers",   "adventure",
  "quest",      "adventure",
  "prowess",    "adventure",
  "force",      "adventure",
  "mercy",      "adventure",
  "valiant",    "adventure",
  "grail",      "adventure",
  "ride",       "adventure",
  "adventure",  "adventure",
  "bold",       "adventure",
  "handsome",   "adventure",
  "glad",       "adventure",
  "companion",  "adventure",
  "oath",       "adventure",
  "strike",     "adventure",
  "rich",       "adventure",
  "free",       "adventure",
  "wise",       "adventure",
  "guard",      "adventure",
  "powerful",   "adventure",
  "eager",      "adventure",
  "youth",      "adventure",
  "lion",       "adventure",
  "serve",      "adventure",
  "light",      "adventure",
  "protect",    "adventure",
  "learn",      "adventure",
  "saddle",     "adventure",
  "grew",       "adventure",
  "lodging",    "adventure",
  "sight",      "adventure",
  "splendid",   "adventure",
  "understand", "adventure",
  "willingly",  "adventure",
  "comfort",    "adventure",
  "welcomed",   "adventure",
  "tents",      "adventure",
  "seek",       "adventure",
  "amazed",     "adventure",
  "flew",       "adventure",
  "friends",    "adventure",
  "pleased",    "adventure",
  "direction",  "adventure",
  "desire",     "adventure",
  "slept",      "adventure",
  "beauty",     "adventure",
  "move",       "adventure",
  "spring",     "adventure",
  "wondrous",   "adventure",
  "helmets",    "adventure",
  "helped",     "adventure",
  "safe",       "adventure",
  "win",        "adventure",
  "rescue",     "adventure",
  "freed",      "adventure",
  "worth",      "adventure",
  "forever",    "adventure",
  "granted",    "adventure",
  "feats",      "adventure",
  "messenger",  "adventure",
  "counsel",    "adventure",
  "fair",       "adventure",
  "joyful",     "adventure",
  "spirit",     "adventure",
  "deeds",      "adventure",
  "host",       "adventure",
  "meaning",    "adventure",
  "striking",   "adventure",
  "leapt",      "adventure",
  "wide",       "adventure",
  "call",       "adventure",
  "appeared",   "adventure",
  "feels",      "adventure",
  "delighted",  "adventure",
  "receive",    "adventure",
  "wondered",   "adventure",
  "considered", "adventure",
  "request",    "adventure",
  "answer",     "adventure",
  "leagues",    "adventure",
  "traveled",   "adventure",
  "act",        "adventure",
  "overcome",   "adventure",
  "meadow",     "adventure",
  "sought",     "adventure",
  "loyal",      "adventure",
  "honoured",   "adventure",
  "overjoyed",  "adventure",
  "sworn",      "adventure",
  "wishes",     "adventure",
  "ridden",     "adventure",
  "assure",     "adventure",
  "accept",     "adventure",
  "distance",   "adventure",
  "blessed",    "adventure",
  "kissed",     "adventure",
  "crown",      "adventure",
  "greet",      "adventure",
  "knighthood", "adventure",
  "sweet",      "adventure",
  "countryside","adventure",
  "lineage",    "adventure",
  "marvelous",  "adventure",
  "marvel",     "adventure",
  "rescued",    "adventure",
  "climbed",    "adventure",
  "commended",  "adventure",
  "prove",      "adventure",
  "cart",       "adventure",
  "finest",     "adventure",
  "pleasure",   "adventure",
  "recovered",  "adventure",
  "dragon",     "adventure",
  "aware",      "adventure",
  "custom",     "adventure",
  "valor",      "adventure",
  "flying",     "adventure",
  "sun",        "adventure",
  "joyfully",   "adventure",
  "arose",      "adventure",
  "bringing",   "adventure",
  "healthy",    "adventure",
  "search",     "adventure",
  "thrust",     "adventure",
  "belonged",   "adventure",
  "command",    "adventure",
  "boat",       "adventure",
  "driven",     "adventure",
  "shore",      "adventure",
  "battalions", "adventure",
  "hope",       "adventure",
  "saved",      "adventure",
  "knowledge",  "adventure",
  "lodgings",   "adventure",
  "nightfall",  "adventure",
  "perilous",   "adventure",
  "wealth",     "adventure",
  "green",      "adventure",
  "feast",      "adventure",
  "mighty",     "adventure",
  "serpent",    "adventure",
  "pleases",    "adventure",
  "shelter",    "adventure",
  "extraordinary", "adventure",
  "understood", "adventure",
  "challenge",  "adventure",
  "faithful",   "adventure",
  "foreign",    "adventure",
  "bade",       "adventure",
  "comfortable","adventure",
  "crowned",    "adventure",
  "heat",       "adventure",
  "living",     "adventure",
  "undertake",  "adventure",
  "astonished", "adventure",
  "favor",      "adventure",
  "greeting",   "adventure",
  "kinsmen",    "adventure",
  "pride",      "adventure",
  "wildman",    "adventure",
  "swift",      "adventure",
  "mail",       "adventure",
  "siege",      "adventure",
  "stones",     "adventure",
  "approaching","adventure",
  "rejoicing",  "adventure",
  "vision",     "adventure",
  "accomplished","adventure",
  "arrival",    "adventure",
  "hearts",     "adventure",
  "desired",    "adventure",
  "loves",      "adventure",
  "awoke",      "adventure",
  "pledge",     "adventure",
  "marvels",    "adventure",
  "broad",      "adventure",
  "committed",  "adventure",
  "recover",    "adventure",
  "rejoiced",   "adventure",
  "comforted",  "adventure",
  "marvelled",  "adventure",
  "task",       "adventure",
  "lover",      "adventure",
  "victory",    "adventure",
  "courage",    "adventure",
  "goodness",   "adventure",
  "melee",      "adventure",
  "health",     "adventure",
  "haven",      "adventure",
  "precious",   "adventure",
  "knighted",   "adventure",
  "chivalry",   "adventure",
  "accomplish", "adventure",
  "palfrey",    "adventure",
  "adventure",  "adventure",
  "crowd",      "adventure",
  "protection", "adventure",
  "arrive",     "adventure",
  "golden",     "adventure",
  "richly",     "adventure",
  "highborn",   "adventure",
  "happiness",  "adventure",
  "homage",     "adventure",
  "cured",      "adventure",
  "gain",       "adventure",
  "virginity",  "adventure",
  "fitting",    "adventure",
  "ranks",      "adventure",
  "wealthy",    "adventure",
  "deed",       "adventure",
  "kiss",       "adventure",
  "plenty",     "adventure",
  "accept", "fortune",
  "act", "fortune",
  "afraid", "fortune",
  "ago", "fortune",
  "alas", "fortune",
  "anger", "fortune",
  "angry", "fortune",
  "army", "fortune",
  "asleep", "fortune",
  "attack", "fortune",
  "avenge", "fortune",
  "aware", "fortune",
  "badly", "fortune",
  "barely", "fortune",
  "battle", "fortune",
  "bed", "fortune",
  "begged", "fortune",
  "behalf", "fortune",
  "bear", "fortune",
  "beaten", "fortune",
  "bitterly", "fortune",
  "blame", "fortune",
  "blow", "fortune",
  "bodies", "fortune",
  "bound", "fortune",
  "break", "fortune",
  "breaking", "fortune",
  "burned", "fortune",
  "captured", "fortune",
  "chance", "fortune",
  "charged", "fortune",
  "changed", "fortune",
  "closed", "fortune",
  "combat", "fortune",
  "conquered", "fortune",
  "cruel", "fortune",
  "cried", "fortune",
  "crying", "fortune",
  "cursed", "fortune",
  "danger", "fortune",
  "dare", "fortune",
  "dark", "fortune",
  "days", "fortune",
  "deal", "fortune",
  "dead", "fortune",
  "death", "fortune",
  "deceived", "fortune",
  "declared", "fortune",
  "defeat", "fortune",
  "defeated", "fortune",
  "defend", "fortune",
  "delayed", "fortune",
  "delivered", "fortune",
  "depart", "fortune",
  "departed", "fortune",
  "descended", "fortune",
  "destroyed", "fortune",
  "devil", "fortune",
  "died", "fortune",
  "dying", "fortune",
  "disloyal", "fortune",
  "dismayed", "fortune",
  "dismounted", "fortune",
  "dishonor", "fortune",
  "dishonored", "fortune",
  "disgrace", "fortune",
  "disgraced", "fortune",
  "distress", "fortune",
  "distressed", "fortune",
  "distraught", "fortune",
  "distance", "fortune",
  "doubt", "fortune",
  "drawn", "fortune",
  "earthly", "fortune",
  "effort", "fortune",
  "enemies", "fortune",
  "enemy", "fortune",
  "endure", "fortune",
  "evil", "fortune",
  "exhausted", "fortune",
  "fail", "fortune",
  "failed", "fortune",
  "fallen", "fortune",
  "falling", "fortune",
  "faint", "fortune",
  "faith", "fortune",
  "false", "fortune",
  "farther", "fortune",
  "fear", "fortune",
  "feared", "fortune",
  "feeling", "fortune",
  "fell", "fortune",
  "field", "fortune",
  "fiercely", "fortune",
  "fight", "fortune",
  "fighting", "fortune",
  "flee", "fortune",
  "fleeing", "fortune",
  "flesh", "fortune",
  "foolish", "fortune",
  "forever", "fortune",
  "forget", "fortune",
  "force", "fortune",
  "forced", "fortune",
  "fortune", "fortune",
  "fray", "fortune",
  "frightened", "fortune",
  "grief", "fortune",
  "grieve", "fortune",
  "grieved", "fortune",
  "grieving", "fortune",
  "hard", "fortune",
  "harm", "fortune",
  "hated", "fortune",
  "head", "fortune",
  "headlong", "fortune",
  "heal", "fortune",
  "heat", "fortune",
  "heavy", "fortune",
  "hell", "fortune",
  "hidden", "fortune",
  "hurt", "fortune",
  "ill", "fortune",
  "injured", "fortune",
  "judgment", "fortune",
  "joust", "fortune",
  "jousting", "fortune",
  "kill", "fortune",
  "killed", "fortune",
  "killing", "fortune",
  "kingdom", "fortune",
  "knees", "fortune",
  "knelt", "fortune",
  "lance", "fortune",
  "lament", "fortune",
  "lay", "fortune",
  "laid", "fortune",
  "last", "fortune",
  "lasted", "fortune",
  "leave", "fortune",
  "leaves", "fortune",
  "leapt", "fortune",
  "length", "fortune",
  "lie", "fortune",
  "losing", "fortune",
  "loss", "fortune",
  "lost", "fortune",
  "lowered", "fortune",
  "lying", "fortune",
  "mad", "fortune",
  "maimed", "fortune",
  "meaning", "fortune",
  "misfortune", "fortune",
  "mortal", "fortune",
  "mortally", "fortune",
  "mount", "fortune",
  "mouth", "fortune",
  "nearby", "fortune",
  "naked", "fortune",
  "narrow", "fortune",
  "noticed", "fortune",
  "offered", "fortune",
  "opponent", "fortune",
  "pain", "fortune",
  "pass", "fortune",
  "past", "fortune",
  "pay", "fortune",
  "person", "fortune",
  "pieces", "fortune",
  "pity", "fortune",
  "poor", "fortune",
  "power", "fortune",
  "pressed", "fortune",
  "prevent", "fortune",
  "prisoner", "fortune",
  "promise", "fortune",
  "prove", "fortune",
  "provided", "fortune",
  "pursued", "fortune",
  "reach", "fortune",
  "reason", "fortune",
  "read", "fortune",
  "recall", "fortune",
  "recounted", "fortune",
  "refuse", "fortune",
  "refused", "fortune",
  "remain", "fortune",
  "remember", "fortune",
  "removed", "fortune",
  "returns", "fortune",
  "reveal", "fortune",
  "ridden", "fortune",
  "rushed", "fortune",
  "sake", "fortune",
  "sad", "fortune",
  "same", "fortune",
  "scarcely", "fortune",
  "seek", "fortune",
  "seized", "fortune",
  "shame", "fortune",
  "shamed", "fortune",
  "shouted", "fortune",
  "sick", "fortune",
  "silent", "fortune",
  "sin", "fortune",
  "sins", "fortune",
  "slaughter", "fortune",
  "sorrow", "fortune",
  "sought", "fortune",
  "spear", "fortune",
  "spent", "fortune",
  "split", "fortune",
  "sprang", "fortune",
  "strange", "fortune",
  "strike", "fortune",
  "struck", "fortune",
  "surrender", "fortune",
  "table", "fortune",
  "tears", "fortune",
  "test", "fortune",
  "terrible", "fortune",
  "thrust", "fortune",
  "tied", "fortune",
  "time", "fortune",
  "times", "fortune",
  "tired", "fortune",
  "tomb", "fortune",
  "tore", "fortune",
  "torment", "fortune",
  "tower", "fortune",
  "tournament", "fortune",
  "treated", "fortune",
  "treacherous", "fortune",
  "treason", "fortune",
  "treachery", "fortune",
  "trouble", "fortune",
  "troubled", "fortune",
  "true", "fortune",
  "truth", "fortune",
  "unhorsed", "fortune",
  "unable", "fortune",
  "upset", "fortune",
  "violently", "fortune",
  "wake", "fortune",
  "war", "fortune",
  "waste", "fortune",
  "weak", "fortune",
  "weep", "fortune",
  "wept", "fortune",
  "wicked", "fortune",
  "wide", "fortune",
  "witness", "fortune",
  "worry", "fortune",
  "wounds", "fortune",
  "worst", "fortune",
  "wretched", "fortune",
  "yesterday", "fortune"
  
   )

print(Lacy_tb)
## # A tibble: 514 × 2
##    word       sentiment
##    <chr>      <chr>    
##  1 castle     adventure
##  2 sword      adventure
##  3 love       adventure
##  4 rode       adventure
##  5 world      adventure
##  6 companions adventure
##  7 shield     adventure
##  8 arms       adventure
##  9 worthy     adventure
## 10 armor      adventure
## # ℹ 504 more rows
table(Lacy_tb$sentiment)
## 
## adventure   fortune 
##       257       257

Results!

library(tidyverse)
library(quanteda)

Lacy_tb <- Lacy_tb %>% mutate(word = tolower(word))

tidy_dfm <- lapply(docnames(dfm_grail), function(docname) {
  dfm_grail[docname, ] %>%
    convert(to = "data.frame") %>%
    pivot_longer(-doc_id, names_to = "word", values_to = "Freq") %>%
    filter(Freq > 0) %>%
    mutate(doc = docname, word = tolower(word))
}) %>%
  bind_rows()

results <- map_dfr(unique(tidy_dfm$doc), function(text) {
  temp_tokens <- sum(tidy_dfm %>% filter(doc == text) %>% pull(Freq))
  
  sentiment_counts <- tidy_dfm %>%
    filter(doc == text) %>%
    inner_join(Lacy_tb, by = "word") %>%
    group_by(sentiment) %>%
    summarize(sum = sum(Freq), .groups = "drop") %>%
    pivot_wider(names_from = sentiment, values_from = sum, values_fill = list(sum = 0))
  
  # Safely extract counts or default to zero if missing
  adventure_count <- ifelse("adventure" %in% colnames(sentiment_counts), sentiment_counts$adventure, 0)
  fortune_count <- ifelse("fortune" %in% colnames(sentiment_counts), sentiment_counts$fortune, 0)
  
  score <- adventure_count - fortune_count
  
  tibble(doc = text, net_sentiment = ifelse(temp_tokens > 0, 1000 * score / temp_tokens, NA_real_))
})

print(results)
## # A tibble: 5 × 2
##   doc      net_sentiment
##   <chr>            <dbl>
## 1 Estoire         -0.992
## 2 Merlin           5.37 
## 3 Lancelot        -2.57 
## 4 Quest           11.4  
## 5 Mort             6.04

These results demonstrate the while the Mort does lean towards an emphasis on fortune over adventure compared to the highly adventurous (and positively affected) Queste, it is in fact more adventurous than the Lancelot, which one would maybe expect to be the most replete with chivalrous adventures. This is very interesting!

Line Plot Visualisation

#ChatGPT made the code for this ggplot

library(tidyverse)
library(quanteda)


tidy_dfm <- lapply(docnames(dfm_grail), function(docname) {
  dfm_grail[docname, ] %>%
    convert(to = "data.frame") %>%
    pivot_longer(-doc_id, names_to = "word", values_to = "Freq") %>%
    filter(Freq > 0) %>%
    mutate(doc = docname)
}) %>%
  bind_rows()

sentiment_scores <- map_dfr(unique(tidy_dfm$doc), function(text) {
  temp_tokens <- sum(tidy_dfm %>% filter(doc == text) %>% pull(Freq))
  
  temp_score <- tidy_dfm %>%
    filter(doc == text) %>%
    inner_join(Lacy_tb, by = c("word")) %>%
    group_by(sentiment) %>%
    summarize(sum = sum(Freq), .groups = "drop") %>%
    pivot_wider(names_from = sentiment, values_from = sum, values_fill = list(sum = 0)) %>%
    mutate(score = adventure - fortune) %>%
    pull(score)
  
  tibble(doc = text,
         net_sentiment = 1000 * (temp_score / temp_tokens))
})

print(sentiment_scores)
## # A tibble: 5 × 2
##   doc      net_sentiment
##   <chr>            <dbl>
## 1 Estoire         -0.992
## 2 Merlin           5.37 
## 3 Lancelot        -2.57 
## 4 Quest           11.4  
## 5 Mort             6.04
library(ggplot2)
library(dplyr)

results <- tibble(
  doc = c("Estoire", "Merlin", "Lancelot", "Quest", "Mort"),
  net_sentiment = c(-0.9916678, 5.3707156, -2.5747578, 11.4128658, 6.0444230)
)

results <- results %>%
  mutate(
    sentiment_direction = case_when(
      net_sentiment > 0 ~ "adventure",
      net_sentiment < 0 ~ "fortune",
      TRUE ~ "balanced"
    )
  )

ggplot(results, aes(x = reorder(doc, net_sentiment), y = net_sentiment, fill = sentiment_direction)) +
  geom_col() +
  coord_flip() +  # Horizontal bars
  scale_fill_manual(values = c("adventure" = "steelblue", "fortune" = "tomato", "balanced" = "gray")) +
  labs(title = "Sentiment Scores by Text",
       x = "Text",
       y = "Net Sentiment (Fortune - Adventure)",
       fill = "Sentiment") +
  theme_minimal()

Lacy contends that the climax of the chivalric, knightly adventures around which the Round Table is structured occurs way before the Mort, in the Queste or even Lancelot (85). He claims that the Table is “now rotting wood beneath a polished veneer” by the time of the final book (86). A slow descent into destruction caused by the lack of adventure and inevitable turn to bad fortune due to Camelot’s various moral failings have already begun by this point, hence the anti-climatic end to this massive narrative. He writes: “The author gives [the forces of decline] a specific name and origin: they are the workings of Fortune. The Mort Artu offers a half-dozen extended discussions or dramatizations of Fortune, whereas the enormously longer Lancelot Proper mentions the word only a few times, and it never occurs in the Queste del Saint Graal” (89-90). What I would draw from my results is that his argument that the Mort is a romance bereft of adventure and instead obsessed with fortune is overstated. Perhaps instead, it is more accurate to say that themes of adventure and fortune are intertwined throughout the entirety of the Cycle. If the “climax” of the Cycle comes earlier in Lancelot or the Quest, this means that those texts are equally invested in the idea of the fate and conclusions, as much as the Mort continues to discuss the same themes of knightly valour and adventure till the bitter end. This is particularly compelling considering the high emphasis on fortune in the Lancelot: which makes sense in way; if the adultery between the two lovers is a key cause of the downfall, would an anxiety around this not also be present in the Lancelot? I also chose not to include any explicitly Christian terms in my sentiment dictionary, as I was more interested in how the tests are responding to these more secular themes of adventure v fortune. The fact that the Queste contains the highest amount of “adventure” words, which also have more a positive affect, perhaps shows that the themes of spiritual renewal and achievement in the Queste overcome the more negative, and earthly, associations of fortune. Perhaps Mort Artu is less of a romance without adventure and more a romance without a hope of redemption… maybe all of Arthur’s narrative are romances without the hope of avoiding fortune in the end.
This analysis could be improved with a longer and detailed sentiment dictionary. It has also been limited by my personal bias as I selected words for either sentiment. I think a more complicated datafication could take into account how some of these words interact within sentences or plot, to give a closer approximation of a reader’s experience.

Work Cited

Lacy, Norris J. “The Mort Artu and Cyclic Closure.” The Lancelot-Grail Cycle: Texts and Transformations, edited by William K. Kibler, 1994, pp. 85-97.