Digital Humanities · NLP · Computational Analysis
« 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.
01 · The Corpus
The initial corpus centers on four medieval women whose textual traces are richly documented — chosen to maximize linguistic, geographic, and generic diversity.
Author of the Alexiad — the first memoir written by a woman in the Western tradition.
Mystic, composer, scientist — her O Clarissima Mater maps the divine through language.
Her Lais use natural metaphor to encode desire, longing, and social transgression.
Poet and intellectual who hosted Córdoba's literary salon — and embroidered her verses on her robes.
02 · Data Collection
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.
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.
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 App03 · Analysis Pipeline
Medieval texts in four languages are transformed into a comparable emotional signal through a four-stage pipeline.
04 · NLP — Linguistic Feature Extraction
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.
05 · Stylometry — Authorial Signatures
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.
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.
06 · Clustering — Thematic Connections
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.
Natural imagery and romantic longing — bridges Marie de France and Wallada across centuries.
Formal rhetoric and historical lineage — dominated by Anna Komnene's Alexiad.
Divine revelation and cosmic order — isolates Hildegard's theological vocabulary.
Melancholy of displacement — a cross-temporal cluster binding voices from different continents.
| 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 |
07 · Timeline — Emotional Trajectories
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.
08 · Historical GIS — Geography of Emotion
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.
The cartography maps four geographic nodes to their dominant emotional cluster:
| Node | Author | Dominant Cluster | Key Emotion |
|---|---|---|---|
| Constantinople | Anna Komnene | Power / History | Anger · Sadness |
| Bingen (Rhineland) | Hildegard von Bingen | Spirituality | Joy · Surprise |
| Caen (Normandy) | Marie de France | Nature / Love | Joy · Sadness |
| Córdoba | Wallada bint al-Mustakfi | Loss / Memory | Anger · Joy |
09 · Key Findings
Rather than confirming identity-based assumptions, the analysis surfaces structural patterns that emerge from the text itself.
Anger appears across all four authors with consistently high confidence scores — the most cross-cultural emotion in the corpus.
Cluster 01 (Nature/Love) groups Marie de France and Wallada despite a 150-year gap and different languages.
Hildegard's theological prose produces the most stable emotional trajectory — genre, not personality, drives rhythm.
Geographic distance does not predict emotional distance. The most geographically separated authors share the same cluster.
10 · Global Corpus & Contribution
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."
*Includes voices from the edge of the medieval/early modern transition.
↗ Add an entry to the corpus11 · Citation & Methodology
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 ↗