Łukasz Żyła
Finnegans Workphonologyphonemeslanguagesmusicriverslongest wordsreportraw text

The Phonology of Finnegans Wake:
a phonemic analysis in IPA notation

A report from my corpus experiment; all figures are computed and the pages assembled by my run.py script. Broad (phonemic) transcription. Conventions: /x/ — phoneme, ⟨x⟩ — grapheme, σ — syllable, C — consonant, V — vowel, OOV — item absent from the pronouncing dictionary.

riverrun, past Eve and Adam's, from swerve of shore to bend of bay, brings us by a commodius vicus of recirculation back to Howth Castle and Environs.

[…] The fall (bababadalgharaghtakamminarronnkonnbronntonnerronntuonnthunntrovarrhounawnskawntoohoohoordenenthurnuk!) of a once wallstrait oldparr is retaled early in bed and later on life down through all christian minstrelsy.

— James Joyce, Finnegans Wake (1939), opening

My rewriting

Every reading is a new writing — and this page is mine: Finnegans Wake rewritten into phonemes, counts and curves. I first encountered Finnegans Wake in secondary school, through Maciej Słomczyński's Polish translations of selected fragments. After Ulysses and Pynchon, this was the literature that kept pulling me back — yet my English, or more precisely Joyce's English, would not let me immerse myself in that reality. What finally pushed me towards linguistic analysis was Krzysztof Bartnicki's translation: he undertook the break-neck task of rendering the whole of Finnegans Wake into Polish, which took him some thirty years. Using NLP and machine learning, I decided to look for the "substance" of this text. Playing with it, I have discovered plenty of patterns — but I still hope that one day I will experience here what I experienced with Ulysses.

My machines

This project is an exercise in machine reading, so it is only fair to disclose the machines — concretely. Every number on this page comes from a deterministic, fully re-runnable pipeline: twelve Python modules (~3,600 lines, standard library only, Python 3.13) working on the raw text (1.3 MB) and open lexical data — the CMU Pronouncing Dictionary (135,166 entries), a 370,105-item English wordlist, OpenSubtitles frequency lists for eleven languages, and hunspell dictionaries for Irish and Latin. Nothing in the results is generated by a neural network.

Two kinds of models stood behind the making. The pipeline was written in tandem with a transformer-based large language model driven through an agentic harness in my terminal: it drafted the ARPABET→IPA mapping, the letter-to-sound rules for Joyce's coinages and the first version of every module, and it argued with me over the operationalisations — whether a rhyme should require a differing onset, where to cut the sonority scale. The collaboration was not blind trust: verification runs caught, among other things, a stress-pattern bug rooted in a Python quirk (the empty string counts as a substring of any string, so consonants were silently voting on word stress), and the fact that macOS's built-in dictionary lacks words as ordinary as ⟨proud⟩, ⟨hang⟩ and ⟨feet⟩ — which had inflated the neologism rate from the true 52.8% to a spectacular-but-wrong 70%.

In a parallel strand of the project I experiment with character-level recurrent networks (LSTMs) trained on the Wake itself: asked to continue Joyce, they hallucinate eerily plausible Wakese — a reminder of how much of the book's texture lives in the raw statistics of its letters. The symmetry is fitting: Joyce compressed dozens of languages into single portmanteau words; language models decompress such words back into probabilities.

What I did and what fell out

I took the full text of Finnegans Wake (1939) — 219,191 words, 57,718 distinct forms — and rewrote it as phonemes, the sounds of speech in IPA notation. On that material I counted which sounds dominate, how places and manners of articulation are distributed, how "singable" the words are (sonority), what lexical stress rhythm the vocabulary carries, and how many rhymes, assonances, alliterations and tip~top-type pairs hide inside the sentences. Three findings stand out: Joyce's invented words are significantly more sonorous than the ordinary English of the same book (Welch's test, p < 0.001); the vocabulary's rhythm is markedly trochaic (DA-da, the pulse of a lullaby); and the prose turns out to be as dense with rhyme as verse — over ten thousand rhyming pairs within sentences.

1. What I read and how I respelled it

As the basis of the transcription I took the CMU Pronouncing Dictionary (ARPABET), which represents General American; I mapped its symbols onto the IPA. Text coverage: 80.54% of tokens. Out-of-vocabulary items (OOV — mostly Joyce's coinages and blends, 19.46% of tokens) I transcribed with my own rule-based G2P (grapheme-to-phoneme) module built on the regularities of English spelling (⟨sh⟩→/ʃ/, ⟨ph⟩→/f/, ⟨igh⟩→/aɪ/, ⟨c⟩→/s/ before ⟨e i y⟩, etc.). OOV transcriptions carry no stress information. Total material: 869,056 segments.

Vowels and diphthongs (15): ⟨AA⟩→/ɑ/ ⟨AE⟩→/æ/ ⟨AH⟩→/ʌ/ ⟨AO⟩→/ɔ/ ⟨AW⟩→/aʊ/ ⟨AY⟩→/aɪ/ ⟨EH⟩→/ɛ/ ⟨ER⟩→/ɝ/ ⟨EY⟩→/eɪ/ ⟨IH⟩→/ɪ/ ⟨IY⟩→/i/ ⟨OW⟩→/oʊ/ ⟨OY⟩→/ɔɪ/ ⟨UH⟩→/ʊ/ ⟨UW⟩→/u/; unstressed AH0 is rendered as schwa /ə/.
Consonants (24): ⟨B⟩→/b/ ⟨CH⟩→/tʃ/ ⟨D⟩→/d/ ⟨DH⟩→/ð/ ⟨F⟩→/f/ ⟨G⟩→/ɡ/ ⟨HH⟩→/h/ ⟨JH⟩→/dʒ/ ⟨K⟩→/k/ ⟨L⟩→/l/ ⟨M⟩→/m/ ⟨N⟩→/n/ ⟨NG⟩→/ŋ/ ⟨P⟩→/p/ ⟨R⟩→/ɹ/ ⟨S⟩→/s/ ⟨SH⟩→/ʃ/ ⟨T⟩→/t/ ⟨TH⟩→/θ/ ⟨V⟩→/v/ ⟨W⟩→/w/ ⟨Y⟩→/j/ ⟨Z⟩→/z/ ⟨ZH⟩→/ʒ/.

2. The sounds I counted

Vowels make up 38.8% of all segments. Switch the subset to compare the sound profile of dictionary words with Joyce's coinages:

The dominance of /ɪ/, /n/, /t/, /s/, /ɹ/ is close to the distributions reported for conversational American English (Mines, Hanson & Shoup 1978); the share of /ɪ/ is additionally inflated by the CMUdict convention, in which unstressed ⟨IH0⟩ is not reduced to schwa (see §8). The deviations concentrate in the neologisms — switch the toggle above to see /k/, /æ/ and /ʃ/ climb.

3. How I mapped the consonants (place × manner)

Values: share of each phoneme in all segments of the text (%); cell shading is proportional to the combined share of its phonemes.

bilabiallabiodentaldentalalveolarpostalveolarpalatalvelarlabial-velarglottal
plosive/b/ 2.17 /p/ 2.16/t/ 5.96 /d/ 4.39/k/ 3.02 /ɡ/ 1.01
affricate/dʒ/ 0.53 /tʃ/ 0.51
fricative/f/ 1.97 /v/ 1.81/ð/ 2.40 /θ/ 0.55/s/ 5.84 /z/ 2.12/ʃ/ 0.69 /ʒ/ 0.03/h/ 2.07
nasal/m/ 3.15/n/ 6.61/ŋ/ 1.10
lateral/l/ 4.83
approximant/ɹ/ 5.60/j/ 0.60/w/ 2.06

4. Where I placed the vowels (height × backness)

Vowel nuclei on the IPA quadrilateral; dot area is proportional to frequency. The toggle above (§2) applies here too — the chart redraws for the chosen subset.

heightbacknessshare
near-closefront6.78%
midcentral6.29%
open-midfront4.70%
near-openfront4.21%
open-midcentral3.22%
openback2.96%
closefront2.71%
openfront2.28%
open-midback1.64%
closeback1.54%
close-midfront1.17%

5. How I measured the singing (sonority)

I adopted a sonority scale modelled on the hierarchies of Selkirk (1984) and Clements (1990) (on physical correlates of sonority cf. Parker 2008), normalised to 1–10: open vowels 10, mid 9, close 8; approximants /j w ɹ/ 7; lateral /l/ 6; nasals /m n ŋ/ 5; voiced fricatives 4, voiceless 3; affricates 2.5; voiced plosives 2, voiceless 1. A word's index = the mean sonority of its segments.

vcl. plosivesvcd. plosivesaffricatesvcl. fricativesvcd. fricativesnasalslateralsapproximantsclose Vmid Vopen Vlexicon 5.531OOV 5.736

The unit of analysis is the lexical type (no frequency weighting). Mean index of dictionary types: 5.531 (SD = 0.876, n = 18,959); of OOV types: 5.736 (SD = 0.798, n = 38,757). The difference of +0.205 is statistically significant (Welch's test, t = 27.21, p < 0.001), though the effect size is moderate. Joyce's lexicon is, on average, more sonorous than its English background.

Pick a word to see its sonority contour — the segmental "melody" of rises towards vowels and dips into consonants:

6. The rhythm I heard (lexical prosody)

Stress patterns of polysyllabic words (CMUdict data; DA = stressed syllable). I use foot names for the lexical stress shapes of words, not for verse metre. Distribution of the most frequent patterns:

stressed monosyllable (DA)112,075unstressed monosyllable (da)28,676trochee (DA-da)22,092iamb (da-DA)4,389dactyl (DA-da-da)2,759amphibrach (da-DA-da)1,975spondee (DA-DA)1,522101770
patterntokens
stressed monosyllable (DA)112,075
unstressed monosyllable (da)28,676
trochee (DA-da)22,092
iamb (da-DA)4,389
dactyl (DA-da-da)2,759
amphibrach (da-DA-da)1,975
spondee (DA-DA)1,522
101770

The advantage of the trochaic shape over the iambic one (22,092 vs 4,389 tokens) is consistent with the predominance of initial stress in the English vocabulary (Cutler & Carter 1987); deciding whether the text amplifies this tendency beyond the lexicon's norm would require a reference-corpus comparison, which I have not carried out. Mean word length: 1.539 syllables (syllabification = counting vowel nuclei). Distribution of word length in syllables (tokens):

1 syll.146,0562 syll.43,6193 syll.18,8024 syll.7,4165 syll.2,3966 syll.6387 syll.1448 syll.115

7. The echoes I hunted (sound figures in the sentence)

The domain of observation is the orthographic sentence (split at ⟨. ! ?⟩; n = 15,061). I excluded function words from the rhyme and paronomasia rankings. How I defined each figure:

Frequency of the four figure types across the whole text (note: rhyme and paronomasia are counted in pairs, assonance and alliteration in runs — the values are not directly comparable across types):

exact rhyme (pairs)10,762apophonic paronomasia (pairs)2,196assonance (runs)1,386phonemic alliteration (runs)1,208

7.1. Exact rhyme

10,762 rhyming pairs in total. Search the ranked list (type a fragment, e.g. night):

The most frequent rhyme endings: /-ɛd/ (2,181), /-ɛs/ (1,137), /-ɛɹ/ (994), /-ɪŋ/ (764), /-ɛɹs/ (309), /-is/ (250), /-eɪʃən/ (243), /-æn/ (220), /-ʌs/ (177), /-ʌm/ (177), /-æs/ (163), /-ɪn/ (154).

7.2. Assonance

1,386 runs in total. The value n is the length of a single run of consecutive words, not the phoneme's corpus frequency.

nucleusnrun
/ɪ/15gnarlybird ygathering runalittle doalittle preealittle pouralittle wipealittle kicksalittle severalittle eatalittle whinealittle kenalittle helfalittle pelfalittle gnarlybird
/æ/8shortartempa bad cad dad fad sad mad nad
/ə/7muertification and uxpiration and dumnation and annuhulation
/ɪ/7into chancerisk wishing him with his famblings
/ɪ/6since his shebi his shide adi
/eɪ/6waiting they wait taking they take
/ɔ/6for all for all all all
/æ/6laugh that flat that after that
/æ/6paa lickam laa lickam apl lpa
/eɪ/6moanday tearsday wailsday thumpsday frightday shatterday

7.3. Phonemic alliteration

1,208 runs in total.

onsetnrun
/p/21pin puff pive piff piff puff pive poo poo puff pive pree pree puff pive pfoor pfoor puff pive pippive poopive
/h/9hicky hecky hock huges huges huges hughy hughy hughy
/t/8tilling teel tum telling toll teary turty taubling
/b/7bald black bronze brown brindled betteraved blanchemanged
/b/7boosted blasted bleating blatant bloaten blasphorus blesphorous
/d/7dark deadly dismal doleful desolate dreadful desperate
/w/7windr wondr wildr weltr wirbl warbl world
/t/7tay tibby tanny tummy tasty tosty tay
/h/6hoother had his hurricane hips his
/m/6milk music married missusses might mercy

7.4. Apophonic paronomasia

2,196 pairs in total. Typical hits follow the i–a(–o) alternations familiar from English ablaut reduplication:

pairn
like ~ look15
man ~ many10
last ~ lost7
live ~ love6
back ~ buck4
tap ~ tip4
along ~ long4
lead ~ old4
sing ~ song4
came ~ come4
feel ~ full4
find ~ found4
dear ~ dearo4
laughed ~ left3

8. Where I may be wrong

What I stood on (references and data)

Walk the book with me (a time series)

The text is divided into 100 equal windows (~2,200 words each). Pick a measure and move your mouse across the chart — the crosshair follows and the exact value is read out below (the slider does the same). Dashed verticals mark the boundaries of Books I–IV.