The full dataset is not published yet. A license review comes first, and the dataset will be released once it is finished; no date is promised. Until then the site shows the dataset's statistics and a sample, and lists cannot be built or downloaded.

Common English OpenList

The CEOL Universe, version 1.0

Every row is a candidate string, never a verdict. A row records that a pinned source lists the string, that it was inherited from the English OpenList at a pinned revision, or both.

Rows
10,020,150rows
Version
1.0, built October 25, 2026
Data license
CC BY-SA 4.0
On Hugging Face
ryanjosephkamp/ceol-universe, private until the release
DOI
minted at the release

What this dataset is

The CEOL Universe is an inventory of candidate English strings, each with its provenance: which pinned sources list it, how it entered the pool, and its corpus features. It is a frame from which anyone can derive a word list under a definition of their own. Its strings are the output of an executable grammar (pipeline/ceol/grammar.py) that admits hyphenated compounds, accented loanwords, contractions, apostrophe forms, ligature and diaeresis spellings, and multiword terms. This version holds 10,020,150 rows, 1 per string.

The family of datasets has 3 kinds of member:

  • The EOL (ryanjosephkamp/english-openlist): an English word list under its own grammar and governance. The universe reads it at a pinned revision and never writes to it. Its public dataset is this dataset's eol-valid config: the 344,713 rows of its list at that revision that this version ships.
  • The CEOL Universe (this dataset, ryanjosephkamp/ceol-universe): the candidate inventory, versioned as its pins are.
  • Derived datasets, each built from a version of the universe under its own rule, with its own name (ceol-<rule>-<version>) and its own card.

The configs

The universe config is the public rows; the filter configs are subsets of it, and the features config is a separate table. Each is shipped as its own file.

The configs of the version, with their rows
ConfigWhat it holdsRows
universe every row 10,020,150config.universe.rows
features the single-token rows, with the feature columns 9,725,285config.features.rows
panel-listed rows a published word list lists 1,384,833config.panel-listed.rows
eol-valid the English OpenList at revision c1139698 344,713config.eol-valid.rows
spaced multiword rows 294,865config.spaced.rows
exceptions rows with a hyphen, an accent, a diaeresis, an apostrophe, or a ligature 209,883config.exceptions.rows
sample the rows whose id begins with 00, for trying the dataset 38,988config.sample.rows

Load it

Python, with the datasets library
from datasets import load_dataset

rows = load_dataset(
    "ryanjosephkamp/ceol-universe",
    "universe",
    revision="v1.0",
    split="candidates",
)
print(rows.num_rows)
DuckDB, straight from the hub
SELECT count(*)
FROM
  'hf://datasets/ryanjosephkamp/ceol-universe@v1.0/data/universe.parquet';

The release's consumer test loads every config this way in a clean environment and checks what it gets. To load only the rows you need, compose a list and take its code.

In this section

  • Profile

    Every dimension of every row, charted; click to filter them all.

  • Limitations

    What to know before using it, stated first.

  • Columns

    The data dictionary: every column, its type, and its nulls.

  • What is withheld

    The lists, labels, rows, and feature columns this version leaves out, and why.

  • Sources and licenses

    Where the strings come from, the licenses, and the credits.

  • Versions

    The version, the pin it rests on, and the change log.

  • Cite and contact

    How to cite it, how to ask for a change, and the canary.