Digital Humanities · NLP · Computational Analysis

Medieval Poetesses:
Emotional Intensity
in Historical Verse

NLP Computational Philology K-Means PCA Historical GIS Open Corpus

« If you were truly in love with me, you would not blame my unveiled face. »

— Wallada bint al-Mustakfi (~1010–1091), Córdoba

This project applies natural language processing, unsupervised machine learning, and interactive visualization to model emotional intensity across four medieval women writers — separated by language, century, and geography, yet bound by structural resonances the algorithm reveals.

Four Voices, Four Worlds

The initial corpus centers on four medieval women whose textual traces are richly documented — chosen to maximize linguistic, geographic, and generic diversity.

Anna Komnene
Byzantine Empire · c.1083–1153
Anna Komnene
Political History

Author of the Alexiad — the first memoir written by a woman in the Western tradition.

Hildegard von Bingen
Holy Roman Empire · 1098–1179
Hildegard von Bingen
Cosmology & Spirituality

Mystic, composer, scientist — her O Clarissima Mater maps the divine through language.

Marie de France
Anglo-Norman England · c.1160–1215
Marie de France
Courtly Love & Lais

Her Lais use natural metaphor to encode desire, longing, and social transgression.

Wallada bint al-Mustakfi
Al-Andalus · c.1010–1091
Wallada bint al-Mustakfi
Independence & Passion

Poet and intellectual who hosted Córdoba's literary salon — and embroidered her verses on her robes.

Automatic & Participatory

The corpus is built in two layers: automated scraping from open encyclopedic sources, and a participatory web app that invites researchers to contribute texts by medieval women from underrepresented regions.

Automated Scraping

A Python scraper queries the Wikipedia MediaWiki API targeting the categories Medieval_women_poets and Women_writers_(medieval). For each page, it collects author name, biographical extract, date, source name, and source URL.

BASE_URL = "https://en.wikipedia.org/w/api.php"
CATEGORIES = ["Medieval_women_poets", "Women_writers_(medieval)"]

params = {
    "action": "query",
    "list": "categorymembers",
    "cmtitle": f"Category:{category}",
    "format": "json"
}

The scraper is containerized with Docker and deployed on Quay.io, triggered automatically on each GitHub push.

Participatory Validation App

Scraped entries are reviewed and enriched through a FastAPI web app deployed on Render. Validated entries are written directly to Google Sheets, feeding the live corpus. The app is open to global contributors.

↗ Open the Collection App

From Raw Text to Emotional Map

Medieval texts in four languages are transformed into a comparable emotional signal through a four-stage pipeline.

CH01
Linguistic Feature Extraction
NLP · Translation · Tokenization
CH02
Comparative Stylometry
TF-IDF · PCA
CH03
Unsupervised Clustering
K-Means · Scikit-learn
CH04
Dynamic Visualization
Plotly · GIS · Timeline

Reading Emotion Across Languages

Medieval texts written in Old French, Latin, Byzantine Greek, and Andalusian Arabic are translated into English using a neural machine translation model before emotion classification.

Helsinki-NLP/opus-mt-fr-en DistilRoBERTa pandas DataFrame
Sample — Emotion classification output
Emotion distribution across the corpus

What Makes Each Voice Unique

TF-IDF vectorization weights words by how characteristic they are of a single author. PCA then compresses hundreds of linguistic dimensions into two axes — revealing the "gravitational pull" of each writer's style.

TfidfVectorizer PCA Connected Scatterplot

The connected scatterplot treats text as a sequence — linking verses in order to trace the tonal journey of a work, not just its average position in space.

Comparative stylometry — PCA projection

Patterns the Algorithm Finds Without Instruction

K-Means groups verses by semantic proximity without being told which author wrote them or what the theme is. Four clusters emerged as the optimal balance between granularity and interpretability.

K-Means Scikit-learn Convex Hull
Cluster 01
Nature / Love

Natural imagery and romantic longing — bridges Marie de France and Wallada across centuries.

Cluster 02
Power / History

Formal rhetoric and historical lineage — dominated by Anna Komnene's Alexiad.

Cluster 03
Spirituality

Divine revelation and cosmic order — isolates Hildegard's theological vocabulary.

Cluster 04
Loss / Memory

Melancholy of displacement — a cross-temporal cluster binding voices from different continents.

K-Means cluster map — PCA projection
Comparative trajectory — all four poetesses
Emotional intensity clusters — Convex Hull
Analysis Focus Objective
STYLOMETRY (PCA) Linguistic habits, syntax, rhythmic patterns Isolate the inimitable signature of each author
CLUSTERING (K-MEANS) Semantic meaning, shared vocabulary, topics Connect voices across time through shared archetypes

Emotion as a Time Series

Narrative position functions as a proxy for emotional tempo. Each verse is treated as a moment in a diachronic sequence, allowing comparison of rhythmic structures across genres — historiography, theology, poetry — and across centuries.

The trajectory reveals not just what emotion dominates, but when a writer accelerates, plateaus, or ruptures into feeling.

Emotional trajectory — Wallada bint al-Mustakfi
Emotional trajectory — Marie de France
Emotional trajectory — Hildegard von Bingen
Emotional trajectory — Anna Komnene
Emotional intensity distribution by poetess — violin plot
Emotional intensity distribution by emotion type

Where Feelings Were Written

Semantic clusters are projected onto the geographic nodes where these texts were produced. The map asks: does proximity in emotional space correlate with, or contradict, proximity in physical space?

Córdoba, Bingen, Caen, and Constantinople sit thousands of kilometers apart — yet Cluster 04 (Loss/Memory) draws Wallada and Anna Komnene into the same mathematical neighborhood.

🗺
Interactive GIS map
Plotly geographic visualization — coming with the next corpus update

The cartography maps four geographic nodes to their dominant emotional cluster:

NodeAuthorDominant ClusterKey Emotion
ConstantinopleAnna KomnenePower / HistoryAnger · Sadness
Bingen (Rhineland)Hildegard von BingenSpiritualityJoy · Surprise
Caen (Normandy)Marie de FranceNature / LoveJoy · Sadness
CórdobaWallada bint al-MustakfiLoss / MemoryAnger · Joy

What the Algorithm Reveals

Rather than confirming identity-based assumptions, the analysis surfaces structural patterns that emerge from the text itself.

.
Anger is universal

Anger appears across all four authors with consistently high confidence scores — the most cross-cultural emotion in the corpus.

.
Love bridges centuries

Cluster 01 (Nature/Love) groups Marie de France and Wallada despite a 150-year gap and different languages.

.
Genre shapes signal

Hildegard's theological prose produces the most stable emotional trajectory — genre, not personality, drives rhythm.

.
Geography ≠ affect

Geographic distance does not predict emotional distance. The most geographically separated authors share the same cluster.

Cluster poem generator — emotional reconstruction

Voices Still Waiting

The current corpus reflects what is digitally accessible in European archives. The project actively seeks texts by medieval women from Africa, Asia, and the pre-Columbian Americas.

"Mapping the heartbeats of poetesses whose verses transcend the current digital sample."

Asia & Africa
  • Li Qingzhao — China, Song Dynasty
  • Kristos Samra — Ethiopia, 14th c.
  • Akka Mahadevi — India, 12th c.
LatAm & Eurasia
  • Sor Juana* — Latin America
  • Princess Olga — Russia
  • Oral Traditions — Global

*Includes voices from the edge of the medieval/early modern transition.

↗ Add an entry to the corpus

How to Cite

YANGUERE, N-A. (2026). Mapping Emotional Intensity of Medieval Women's Writing: A Computational Approach to Emotional Trajectories, Chronology, and Geographic Echoes. doi: https://

Keywords: digital humanities · computational philology · emotion analysis · historical GIS · medieval women's writing · NLP · time series · unsupervised learning · K-Means · PCA · attentive reading

Corpus shared under Creative Commons CC-BY 4.0. Source code on GitHub ↗