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.
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
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.
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
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!
#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.
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.