Ex.3–Cultural Trends Through Manuscript Metadata
📚 Context
As a digital humanist, you are studying the cultural and intellectual movements of the European Renaissance by analyzing metadata from a large corpus of digitized manuscripts. These manuscripts come from various European archives and are described with metadata such as:
title
: Title of the manuscriptauthor
: Author’s name (if known)year
: Approximate year of creationlanguage
: Language of the manuscriptlocation
: City or region where the manuscript was producedinstitution
: The current institution where the manuscript is preservedtype
: Type of manuscript (e.g., “scientific”, “religious”, “literary”, “legal”)
This metadata is stored as a list of dictionaries in Python.
🧩 Dataset Sample
python manuscripts = [
{
"title": "Summa Theologica",
"author": "Thomas Aquinas",
"year": 1274,
"language": "Latin",
"location": "Naples",
"institution": "Biblioteca Nazionale",
"type": "religious"
},
{
"title": "De Revolutionibus Orbium Coelestium",
"author": "Nicolaus Copernicus",
"year": 1543,
"language": "Latin",
"location": "Nuremberg",
"institution": "Jagiellonian Library",
"type": "scientific"
},
...
]
🎯 Assignment Objectives
Your goal is to build a set of Python functions that support historical interpretation by analyzing this metadata.
✅ Tasks
1. Chronological Distribution
- Write a function
count_by_century(data)
that returns a dictionary mapping each century (e.g.,1200s
,1300s
, …) to the number of manuscripts produced.
2. Language Evolution
- Write a function
language_distribution_over_time(data)
that returns a nested dictionary: python{ "Latin": {1300: 4, 1400: 10}, "Italian": {1300: 1, 1400: 5}, ... }
Each key is a language, and the value is another dictionary showing the count of manuscripts per century in that language.
3. Regional Specialization
- Write a function
manuscript_types_by_location(data)
that returns: python{ "Florence": {"religious": 5, "literary": 8}, "Paris": {"scientific": 2, "religious": 9}, ... }
This shows how different cities specialized in different manuscript types.
4. Institutional Concentration
- Write a function
top_institutions(data, n=3)
that returns the topn
institutions by the number of manuscripts in the dataset.
5. Author Productivity Timeline
- Write a function
author_timeline(data)
that returns: python{ "Dante Alighieri": [1315], "Copernicus": [1543], ... }
The result shows each author with the list of years when their manuscripts were created.
🔍 Advanced Interpretive Bonus Tasks
6. Detecting the Renaissance Shift
- Use your functions to analyze when and where the shift from religious to scientific manuscripts becomes evident. Provide Python code that filters the manuscripts by type and century, then prints a basic summary.
7. Cultural Network Inference
- Write a function
author_language_location(data)
that creates a triple-indexed dictionary: python{ "Copernicus": {"Latin": ["Nuremberg"]}, "Thomas Aquinas": {"Latin": ["Naples", "Paris"]}, }
This helps infer linguistic and geographic networks of intellectual production.
🧠 Reflection Questions (non-programmatic)
- What does the metadata suggest about the role of Latin as a scholarly lingua franca?
- How do patterns of manuscript types correlate with known historical movements (e.g., Humanism, Scientific Revolution)?
- What limitations might this metadata-only approach have compared to full-text analysis?
📦 Optional Extension
Provide students with a .json
or .csv
file and ask them to:
- Load the dataset using
json
orpandas
- Clean inconsistent data entries (e.g., “latin” vs “Latin”)
- Visualize results using
matplotlib
orseaborn