Renaissance Drama — Topics · seed 42

Methods

Corpus

The English performance-language view of corpus v3 (EEBO-TCP texts, DEEP metadata, 580 edition documents): the language presented as spoken, sung or recited in performance — speeches, choruses, songs, and reviewed prologues, epilogues and inductions attributed to their edition, whether encoded in the body, front or back matter. Selection combines structural XML rules with recorded contextual decisions (the corpus repository's decision tables). Speaker labels, encoded stage directions, notes, headings and running titles are removed at extraction; book-level dedications and plot summaries are excluded. Spelling: a second view applies EarlyPrint's reg token by token where a node could be aligned to EarlyPrint (99.5 % of nodes paired; accepted reg values at 19 % of token positions); unaligned nodes keep the extracted text with only long s and word-initial VV normalized. EarlyPrint can supply corrected readings where its transcription has them, but the pairing does not establish that every <gap> was restored. The unregularized text is shown on each chunk page for comparison.

Chunking

docs580
chunks17422
ruletarget 500 words, allowed 400-600, measured on B, cuts at node boundaries, DP-balanced
words_median495
words_p10472
words_p90518
long_nodes_split23
long_nodes_unsplit0
short_docs2
tokenizerQwen/Qwen3-Embedding-0.6B
tokens_median658
tokens_max971

Name masking

Character names were replaced by the placeholder someone before embedding, play by play, using the cast lists of Kim's character-clustering project matched to each edition by its TCP id (484 editions matched exactly, 73 through the collection volume's base id, 1 by an explicit override; 22 editions without a cast list — pageants and entertainments — were left unmasked). Only persons are masked: places, nations and demonyms, deities, role words (king, duke, nurse) and personifications stay. A name that is also a common word is masked only when capitalised; spelling variants of a cast name within the edition (I/J, u/v, similarity ≥ 0.85) are caught. 86,736 of 8,588,995 tokens were replaced (1.0 %). Keywords are computed on the unmasked text, so names can appear in a topic's keyword list although the embedding never saw them. Nicknames absent from the cast lists (Harry, Jack) survive the masking and may still link passages.

Embedding

Computed on the name-masked chunk text.

modelQwen/Qwen3-Embedding-0.6B
revision97b0c614be4d77ee51c0cef4e5f07c00f9eb65b3
max_seq_length2048
batch_size8
n_chunks17422
dim1024
devicemps
text_filechunks_B_masked.csv

Clustering

UMAP to 5 dimensions (n_neighbors 15, min_dist 0.05, cosine) → HDBSCAN (min_cluster_size 30, min_samples 10, Euclidean, EOM). Three seeds were run; this site shows seed 42 and reports each chunk's topic in the other seeds on its page.

Fitted on one representative edition per work: 15,370 chunks of 516 editions. The other 64 editions (2,052 chunks) were placed afterwards by umap.transform and hdbscan.approximate_predict and are excluded from the topic statistics and the genre comparison (each chunk page shows whether it was in the fit). Edition policy: the earliest dated edition, except the New Oxford Shakespeare control texts for eight Shakespeare works (Folio for seven, Q1 for Lear) — the policy of Kim's project, recorded in edition_selection.csv. Among the representative editions 59.6 % of chunks are unassigned.

n_chunks17422
n_in_fit15370
n_topics63
outlier_share_in_fit0.5955
outlier_share0.6011
seed42

Choice of clustering scheme

The same embeddings were clustered under several schemes, three seeds each; statistics on the representative editions. ARI = adjusted Rand index between seed pairs (a similarity of partitions, not a share of clusters reproduced); flip = share of chunks that are an outlier in one seed and assigned in another; name share = share of the top-10 keywords that are character names. HDBSCAN with min_samples 10 was taken as the main analysis (stable cores, few single-work clusters, coverage reported as a share); K-means 50 assigns every chunk but its partitions vary more between seeds and its cluster edges were found diffuse on reading, so it is kept as a limited comparison for a few core themes, not as a second analysis.

schememethodclustersoutliers %single-work clustersmedian works / clusterlargestARI assignedARI allflip %name share %
hdb30hdbscan min_samples=3041.764.426.38640.8690.72510.57.9
hdb10hdbscan min_samples=1060.359.82.35.75530.9580.70611.811.9
hdb5hdbscan min_samples=566.755.33.35.85970.90.64914.311.6
km30kmeans k=30300.0062.58070.4980.4980.02.1
km50kmeans k=50500.0034.25040.4170.4170.03.8
km70kmeans k=70700.00.724.24120.4050.4050.05.7

Keywords and labels

Class-TF-IDF (BERTopic's ClassTfidfTransformer, default settings) on one document per topic with a uniform vectorizer (min_df 1, max_df 1.0, alphabetic tokens, a stop-list including early-modern function-word spellings); KeyBERT-style words rank the same candidates by cosine to the topic centroid with the embedding model; MMR diversifies them (λ 0.5). Words capitalised in ≥80 % of their occurrences are marked as probable names. Labels are written by the researcher from the keywords and the chunks; AI drafts are marked as such until confirmed.

Review of the clusters

Drafts. For every cluster an AI draft was written from the uniform keywords, the work concentration (share of the largest work, of the three largest, number of works with three or more chunks) and a sample of chunks — the chunks read are listed per cluster (chunks_read, 63 clusters). Each draft proposes a content-first label without genre words, a pattern basis (thematic discourse / shared narrative / recurring role or name / mixed), a use category and a short basis (content note, concentration, suitability for cross-work comparison). Drafts never propose included; concentration in one work is recorded as a flag, not used as an exclusion rule.

Workbook. The drafts, statistics, three keyword lists and three representative chunks per cluster go into a review workbook (topic_sheet.xlsx). The reviewer edits three columns: the use category — included (enters the genre comparison), pending (read but undecided), contextual only (one work or one story, kept for context) — the label, and notes. A round-trip script validates ids, cluster sizes and values before writing the decisions back, keeps the drafts as they were before the review, and derives a review status from what changed.

Decisions. All 63 clusters received researcher decisions informed by the keywords, the work concentration and documented AI-assisted readings of sampled passages: 53 cross-work theme (confirmed, in the genre comparison), 6 reviewed — decision pending, 4 context only — excluded from the genre comparison. Review status: 57 confirmed by the researcher, 6 left pending by the researcher. 31 clusters carry reviewer notes (which cite the excerpts read, mostly three passages from different works plus full-chunk follow-ups on boundary cases); 26 labels were revised from the draft. This was a review of cluster interpretations, not an exhaustive validation of every assigned chunk. Two policies were fixed during the review: a shared story (Troy, Hercules, Thebes, Antony and Cleopatra, the Fairy Queen) counts as a subject for comparison in the same way as a subject area (Rome, English chronicle matter, the gods) does — the pattern basis keeps the distinction visible; and a cluster dominated by one work is not excluded for that reason but re-checked without that work (see Genre comparison). Each topic page shows the classification, its basis, the review status and the notes; the drafts before and after the review are kept in the repository (ab_spelling/drafts_masked_hdb10/).

Typicality

Cosine similarity between a chunk's embedding and the mean embedding of its topic. Unassigned chunks show their nearest topic instead.

Genre comparison

Chunk → edition → work → genre, word-weighted, editions of a work averaged, works equal-weighted; only topics classified as cross-work themes enter the comparison, and the share of each genre's words that falls outside them is reported. Kruskal–Wallis across genres with ≥10 works, Benjamini–Hochberg over the selected topics; descriptive. Dominant-work check: a topic in which one work holds ≥ 33 % of the topic's words is aggregated again without that work, and the Genre page reports how the highest genre and the means move (the clustering itself stays fixed; the threshold is an operational rule and does not cover several works of one author or story).

Genre of a work: the British Drama label (Wiggins & Richardson, via DEEP) when it is a single main genre; when it is compound or missing, the Annals of English Drama label (Harbage, Schoenbaum & Wagonheim, via DEEP) when that is a single main genre; otherwise the work is described but not placed in a genre. Both labels and the source used are recorded for every work (see the Genre page and each play page).

Author comparison (Shakespeare and his contemporaries)

Author groups: within one genre group, every work whose author field contains the name (collaborations included) against every other work of the genre; Anonymous is never a group; groups need at least five works and the rest at least ten. Roles are read from the DEEP author list: a translator is never an author group, a reviser counts as a signature, an original author of English translations (Seneca) is compared but labelled as such, and a work in which the author's role cannot be resolved is held out of that author's comparison. The corpus author field is split against DEEP's separated name list so that concatenated collaborators are never read as one person; the field itself was not changed and no attribution research was done.

Divergence: Jensen–Shannon divergence, log2, in bits (the divergence, not the square-rooted distance), between the two groups' mean topic profiles (works equal-weighted): once on the included topics renormalised to 100 %, once with the remaining words as an extra bin (which checks the effect of coverage differences). Reference: 1,000 random groups of the same number of works drawn from the same genre, the rest as the other group — a reference range for the group size, not a confidence interval; period and company are not controlled. Leave-one-out drops each work of the author group in turn with the rest unchanged; a sole-signature variant is reported where at least five sole-signature works exist. Per topic the pages give the difference of mean shares in percentage points and the works supplying most of each side's mean (share ÷ number of works); the mean-share difference is not the topic's share of the divergence.

Overview charts (top of the Authors page): the first chart shows, for the genre chosen, the ten included topics with the highest simple average of the two groups' mean shares (Shakespeare's plays; all other plays of the genre), the same topics in the same order on both sides. The values are the equal-weighted mean shares of all words from the Shakespeare comparison table, not renormalised to the ten topics or to the included topics; the sum quoted is the mean over plays of the ten shares. "n/N plays" counts the plays of a group with at least one chunk assigned to the topic; a play without one is not thereby without the subject. Where one play supplies more than half of a group's total for a topic, the play is named. The second chart shows the divergence on the selected topics (the "conditional" value of the author table) for every author group of the genre, sorted by value, with the 2.5–97.5 % range of the 1,000 random same-size groups as a band and one axis for the three genres; Seneca's English translations are shown apart from the playwrights. The two charts use different denominators — shares of all words in the first, the relative distribution within the selected topics in the second — and neither is a ranking of originality or quality.

Comparison period (first overview chart): a toggle restricts the comparison to the pre-set common window of the window check (24_window_check.py) — both sides limited to works whose estimated first-performance / composition year (British Drama first, Annals fallback) falls in the window, both ends inclusive; publication years and date limits are not used for membership. The ten topics and their order stay those of the full corpus, the axis is shared by the two views, and the measure is unchanged (works equal-weighted, shares of all words). Means and plays-with-topic counts come from window_topic_means.csv and window_counts.csv; the works behind each side are rebuilt from work_topic_share.csv with the window's work list and are cross-checked against those files at build time. All of Shakespeare's dated plays in the three genres fall inside the window, so only the other side changes. The author chart, its random reference and sections A–C use the full corpus; the window does not match dates within it and does not remove the effect of date.

Chronology

Date of a work: the British Drama first-performance date; Annals only when British Drama has no entry (reason recorded). The leading year is the adopted year, the bracketed limits of the same source are the limits; licence and revision notes are accompanying events; later revision ranges never widen the limits; publication years are never substituted and the two sources are never averaged. Date kind from the DEEP play type: estimated first performance, composition (closet / unacted), or unclear. Decades are fixed ten-year bins on the adopted year, one per work, none merged; cells with fewer than five works are blank in the figures, five to nine are marked sparse. Sensitivity: works whose limits cross a decade boundary regrouped by lower and by upper limit — boundary cases for the grouping, not alternative datings. The Map filters by publication decade of the edition; the Chronology page groups by estimated first-performance / composition decade of the work; both are labelled as such. All figures are on the representative editions, works equal-weighted, and the included topics are a subset of the words of every work.

Company metadata coverage

DEEP gives a first-performance company from British Drama and one from the Annals, plus the company named on the title page of the edition. Per work (representative edition) the British Drama value is: a clear single name for 238 works, a queried name for 20, several names for 5, unknown for 30, unacted for 4, no entry for 219 (masques and entertainments, interludes, university and closet plays, translations). Where both sources name a company (252 works) they give the identical string for 205, the same name with a different qualifier for 14 and different names for 33. Names are kept exactly as recorded; renamings and successions (Chamberlain's → King's, Chapel → Queen's Revels, …) are listed as reference notes and are not merged. Largest company groups by the clear British Drama value: King's Men (52; tragedy 22; comedy 14; tragicomedy 12; romance 3; history 1), Queen Henrietta Maria's Men (28; comedy 18; tragedy 5; tragicomedy 4; pastoral 1), Lord Chamberlain's (Hunsdon's) Men (21; comedy 10; history 7; tragedy 4), Children of the Queen's Revels (20; comedy 14; tragedy 4; history 1; pastoral 1), Admiral's (Nottingham's) Men (14; comedy 6; tragedy 5; history 1; romance 1; tragicomedy 1), Children of Paul's (second) (14; comedy 11; tragedy 2; romance 1), Queen Anne's Men (11; comedy 3; other/multi 3; history 2; tragedy 2; tragicomedy 1), Children of the King's Revels (8; comedy 6; tragedy 1; tragicomedy 1).

No company comparison is published: what exists is this coverage overview and a candidate list for one comedy pair (Children of the Queen's Revels vs Children of Paul's (second)) with the works' dates and attribution divergences, which is a scope for a future reading, not a result about company style.

company_coverage.csv company_fields_by_work.csv company_source_agreement.csv company_name_notes.csv company_lineage_notes.csv theatre_coverage.csv deep_row_selection.csv company_coverage_summary.md

candidate pair: work list (csv) candidate pair: summary (md)

Map

The chunk map is a separate 2-D UMAP of the embeddings (same neighbourhood settings) for viewing only; colours are the seed-42 topics.