Artificial Wasteland artwaste.land

Rime bands of English, under a stated anchor rule

7 of 7 conditions 155,854 rows · 56.0 MB · 33 files

155,854 rows over 126,052 headwords: every reading of every word in the dictionary, with the rime it belongs to.

The files

This dataset is sharded into 27 data files. They are listed in full below and in manifest.json, each with its own digest.

FileRowsBytessha256
rhymes-0.jsonl 15 4,609 2f0667845e1f5dbb4d07b5a5a085cede29bca72eb457bccdbbb9e10d3d74da5d
rhymes-a.jsonl 8,873 3,221,256 121d8931f5dbb41b513d8c24463ee7165dc0ab200cc6ffb1976c57b8dad2013e
rhymes-b.jsonl 11,201 3,976,947 1dfc5768d6de9a308eb65892bde2bf296a179a8be06f71b095ff8183b06fe777
rhymes-c.jsonl 12,565 4,564,239 7738d2adb0d02ab36c9b26298b9036b813e73cda80217296f0c22f8e488d3d95
rhymes-d.jsonl 8,850 3,178,260 87c5e4fd9024daca07a1790077af56797123066e933e197f63f203cb9524c91d
rhymes-e.jsonl 5,659 2,084,350 7d60e5c49ac56b98edacb59f2bd2e434cfe71bd86fd8265512a796adda09fcbf
rhymes-f.jsonl 6,104 2,187,056 e23f583e5a7ff65673db2d338320f0521a99dc7a96aa2600022b586f1cc56853
rhymes-g.jsonl 6,602 2,346,190 e5f75173aae1ab5cab3de7994c4f29c719484756c99ab132c22d7bf5eb85fc3d
rhymes-h.jsonl 7,547 2,728,517 14880d73dc804430d118f6c7ebb675c3e7a4b6c576b90d3317ed6ba01b6d1a76
rhymes-i.jsonl 4,187 1,577,901 125943e4f7bb80d677dd865e02d11dbddeac9b06197e4ca81a4798f243b26d2a
rhymes-j.jsonl 1,841 647,724 0795a5b4cb82448e5e4d0d53e7eff8b2bfe5558adcbdcb89438866458f591ea9
rhymes-k.jsonl 4,501 1,573,170 a30568af93c00f3b3997dca94be7d41c6b4ecc78849e3dbb8044ea3bbf34d43d
rhymes-l.jsonl 6,292 2,222,600 35f7af3b101cc2718b18b8d3d005137cff3402d198f6f78c0d6fcea947395bd4
rhymes-m.jsonl 11,015 3,958,399 decaab06d1ac8e19ff461f34d48f701a45e989980af8ff8f7be17b7606c7de12
rhymes-n.jsonl 3,771 1,356,736 ccf1f4afd3dd94ed7af0067ecbde1e847ea15c84e587e0aa8e404de2b04752c2
rhymes-o.jsonl 3,660 1,319,251 c1178e751fcb6957de369f9a14f0c323ad741f58b2001a53141497b860e066f2
rhymes-p.jsonl 9,586 3,466,756 72e9c251fa057f19fd9c861ff8a6e06af35dd52947852a31a2be36543bc4f728
rhymes-q.jsonl 526 188,098 00226ac4c0446ce281298013b541a9f2721e99c0e646939d565d41abc7e3e5f5
rhymes-r.jsonl 8,324 2,980,688 8eb8f902bca669beebd72f59e4f509e0fd880d82b99d1678569bf2c3dff17304
rhymes-s.jsonl 16,214 5,812,251 839006dd1e99445e4b13a4871b208f299d758e4e127f4ff988c0acd25f838544
rhymes-t.jsonl 6,537 2,322,286 5c0ddc0eff9f0885cfddb6113f7a66c590663ae30ae3ba84ce903c6e4e3e156d
rhymes-u.jsonl 2,188 812,643 486ac8b1ad866cefac4a5b374f37fad98f6a8e4afcc4ee2daf02e1431d557588
rhymes-v.jsonl 2,627 942,964 197c1d6ce2be77f433d10d008511a7f7266679acc1eca3f54c5b52e304b8dd40
rhymes-w.jsonl 5,289 1,886,228 444e1922a927b8358822df54b33ae8afa539cb3f2061894683feb1de181647fd
rhymes-x.jsonl 90 30,765 863542bd68053091f169fe129752d8f4bb5013dea79788ecfa074bf7e1c5b438
rhymes-y.jsonl 797 271,489 4cf2b323de75276851a0c8c42868f1ddd25c877af136f371c0903fd435208186
rhymes-z.jsonl 993 341,642 2c3b5964fdb522b802a39ed43ffa97bcbe17f916b71151a00893417f346535d0
CMUDICT-LICENSE.txt n/a 1,754 bd4ce8e44170a5f9f481310ca85c51de3c4f851a65e679b40e603b143bd3542a
README.md n/a 3,225 30e2369683a9e0be6c4a85e376100bac69ddf822bc82f621985d8894ec0394f5
SCOWL-COPYRIGHT.txt n/a 11,135 1d7c0128f6c72d2270bf1b271b37a3a21267f759161b68c4dc6c501574c0892e
schema.json n/a 5,694 884af930390a3bed90f3c18f6ca645308be5db79654aa99eefc8ccf57fcd4b67
sources.json n/a 3,177 8392f4e6496140dc8a8703ab9bae01b350b1240b842f1522d74ce26ee7000b3b
validate.mjs n/a 15,198 67aceadfaea1f0b4611fa24f550c1b648437f25fbf20f19bf864292700aa69a2

Take the folder and check it yourself: node validate.mjs in the downloaded directory re-runs every row against the schema and every file against the digest above, with no dependencies and no network. The dataset's own full account is README.md.

A row, field by field

Origin is the column that decides whether we may give a field away at all. built is ours; redistributed is a source's own content, and it may only ship where that source's licence permits it.

FieldTypeOriginWhat it is
word string redistributed The headword, lowercased. Variants such as word(2) are folded into one headword and separated by `variant`.
variant integer built Which pronunciation of this headword, 1-based, in the dictionary's order.
phones array redistributed ARPAbet phonemes as printed, vowels carrying their stress digit 0, 1 or 2.
band integer or null redistributed SCOWL commonness band, 10 commonest to 95 rarest. Null for the 67,705 headwords SCOWL's ordinary-word lists do not contain; the intersection rule that decides membership is ours.
anchor_index integer built Index into `phones` of the vowel this reading is anchored on.
anchor_stress integer built The stress digit on the anchor vowel. THE RULE: the last vowel carrying stress of ANY grade, not the last primary-stressed one. That is the whole difference from an ordinary rhyming dictionary.
nucleus string built The anchor vowel, bare of its stress digit.
onset array built The anchor syllable's onset AFTER the maximal-onset correction, which is what stops quicksilver reading as a perfect rhyme for silver.
raw_onset array built The onset before that correction. Where the two differ, the correction fired.
coda array built Consonants closing the anchor syllable.
tail array built Everything after the anchor syllable. Empty means a masculine ending.
has_tail boolean built Whether anything follows the anchor syllable.
final_cons string or null built The last consonant of the word, used for consonance.
fragment array built The rime: the anchor vowel and everything after it, AFTER the pre-rhotic neutralisation.
raw_fragment array built The rime before that neutralisation.
rime string built fragment joined by single spaces. Two rows sharing this string are a perfect rhyme under this rule; it is the join key of the dataset.
normalised boolean built True where fragment differs from raw_fragment, i.e. the match needed the pre-rhotic IH/IY neutralisation because the source is inconsistent before /r/ (hear HH IY1 R against clear K L IH1 R).
secondary boolean built True where this reading anchors on a secondary stress. These rows exist because the final non-primary stress digit is close to a coin toss in the source (willow OW2 against pillow OW0), so both readings are kept rather than one being chosen.

Where it came from, and how we know we may pass it on

The CMU Pronouncing Dictionary (cmudict), rolling working copy

Carnegie Mellon University / CMU Sphinx project · https://github.com/cmusphinx/cmudict

Licence
BSD 2-Clause, Copyright (C) 1993-2015 Carnegie Mellon University
How we know
licence file
Accessed
UNKNOWN
Covers
The headwords and their phoneme strings.

The licence text was fetched from https://raw.githubusercontent.com/cmusphinx/cmudict/master/LICENSE on 2026-09-04 and is included here verbatim as CMUDICT-LICENSE.txt. Clause 1 requires the notice to travel with redistributions, which is why that file is in this directory: until tonight this project redistributed 3.6 MB of the dictionary at /tools/does-it-rhyme/cmudict.txt with a one-line summary and no licence text.

UNKNOWN: the copy was committed to this repository without a retrieval date, and the upstream is a rolling working copy carrying no version header. It is identified here by sha256 alone, which is what the tool's own meta.json says it is doing.

SCOWL (Spell Checker Oriented Word Lists), commonness bands

Kevin Atkinson · http://wordlist.sourceforge.net/

Licence
SCOWL permission notice, Copyright 2000-2011 Kevin Atkinson
How we know
licence file
Accessed
UNKNOWN
Covers
The `band` field only.

The notice is committed in this repository at research/rhyme-orphans/data/SCOWL-COPYRIGHT.txt and travels with this dataset as SCOWL-COPYRIGHT.txt. It grants permission to "use, copy, modify, distribute and sell these word lists ... provided that the above copyright notice appears in all copies".

UNKNOWN: the raw lists were committed to research/rhyme-orphans/data/scowl-raw/ without a retrieval date.

The anchor rule, the rime banding and the three corrections

Artificial Wasteland · https://artwaste.land/tools/does-it-rhyme/

Licence
CC0 1.0 Universal
How we know
publisher statement
Accessed
2026-09-04
Covers
Everything except word, phones and band.

Ours to give: this project places its own derived fields in the public domain.

Required attributionPronunciations from the CMU Pronouncing Dictionary, Copyright (C) 1993-2015 Carnegie Mellon University, BSD 2-Clause; its full licence text travels with this dataset as CMUDICT-LICENSE.txt. Commonness bands from SCOWL, Copyright 2000-2011 Kevin Atkinson; its notice travels as SCOWL-COPYRIGHT.txt. The anchor rule, the rime bands and the three corrections are by the Artificial Wasteland.

The seven conditions, and what was measured

  1. Bytes 27 data file(s), 56,003,015 bytes, largest 5.5 MiB
  2. Shape 155,854 rows checked, 0 violation(s)
  3. Count 155,854 rows across 27 file(s), all counts agree
  4. Fixity 33 file(s) verified by sha256
  5. Provenance 3 source(s), each with a licence from the table
  6. Origin 18 field(s): 15 built here, 3 redistributed under a licence that permits it
  7. Rebuild research/data-room/emit/rhyme-anchors.mjs (byte-equality proved by: node research/data-room/publish.mjs --check)

← every dataset, and the three we could not publish