LINGUABASE — MAKE A CATEGORIES GAME (machine-readable method file) ================================================================== Companion to https://www.linguabase.org/ — a free, public-domain (CC0) semantic dataset of English. This file is self-contained: tables, method, the five exclusivity checks, measured results, and a complete worked example. Written to be read by an LLM asked to adapt the method to a different grouping game. THE GAME SHAPE -------------- A board of 16 words hides four groups of four (the genre Connections made famous). Every word must fit exactly one group. The player picks four words and checks them; a solved group reveals its name and a one-line sense. THE DATA -------- Download (parquet or TSV, identical on three mirrors, linked from linguabase.org/download.html). Tables used here, 5 of 13: topics headword, sense, members, verdict (good/maybe), quality_score (2-12), content_rating (G..X), obviousness — 373,382 rows; the group supply, built for grouping play vocabulary word, core_rank rank 1 = most familiar of 400,000 scores_labels word, content_rating (G..X), sensitivity (1-5, 5 safest) associations word -> ranked association cloud (~130-160 entries) categories category -> members; 72,802 curated pools Data notes (they will bite otherwise): - files are not sorted; sort vocabulary on core_rank before slicing - (headword, sense) is NOT unique in topics — 11,211 duplicate pairs past the quality bar alone; dedupe on headword - categories member fields are raw COMMA-joined strings (every other table uses pipe-lists / parquet lists) - association clouds contain capitals and phrases; casefold both sides before matching THE METHOD ---------- 1 Funnel the topics table to board-ready groups: verdict good -> rating G/PG -> quality_score >= 11 -> one sense per headword (best quality, then member_count, then sense) -> keep groups with >= 6 board-ready members. A member is board-ready when it is a single a-z word, ranked 1,000-30,000 for familiarity (above 1,000 is grammar's plumbing), rated G or PG with sensitivity > 3 in scores_labels. A group's four tiles are its first four board-ready members — the table's own member order is curated, iconic-first. 2 Order the queue: quality desc, then mean tile rank asc (commonest tiles first), then headword. 3 Seat four groups per board, testing every candidate against every seated group with the FIVE CHECKS below; rejected candidates return to the queue for a later board. Skip any candidate sharing 3+ tiles with a previously seated group (a near-twin). 4 Order each board's groups by mean tile rank — commonest plays easiest — and ship name + sense as the reveal. THE FIVE CHECKS (candidate C vs each seated group S) ---------------------------------------------------- 1 tile a word picked by both C and S 2 pool a C tile inside S's full member list, or vice versa 3 cloud a C tile inside associations[S.headword], or an S tile inside associations[C.headword] 4 name C.headword and S.headword too close: one inside the other's cloud, member list, or tiles; or the two clouds sharing >= 8 entries (across 44,850 pairings of the top 300 groups the median cloud overlap is 0 and 99% share <= 6; the near-synonyms mislay/misplace share 63) 5 phantom after seating C, some categories pool holds >= 3 board tiles across >= 2 groups — a group nobody intended, which a player may find first MEASURED RESULTS (June 2026 release; all counted, none estimated) ----------------------------------------------------------------- Funnel: 373,382 -> 304,038 good -> 269,770 G/PG -> 103,853 quality 11+ -> 44,989 one sense per headword -> 42,314 with 6+ board-ready words Tile-depth variants: cap 5,000: 26,340 groups; 30,000: 42,314; 100,000: 43,328 Build: the top 4,000 of the queue seat 844 boards (85% of groups read get seated) = 2.3 years of dailies; caps 5k/100k give 837/864. Supply bound: 42,314 / 4 = 10,578 boards (~29 years) if everything seated; the checks make the true number smaller. C(42314,4) ~ 1.3e17 is combinations, not supply. Exclusivity is expensive: filling one board's fourth slot took 96 candidates (95 rejected: 63 phantom, 15 pool, 9 cloud, 8 tile); board 1 consumed 139 candidates in all. The fuller the board, the harder it is to join: rejections per seat ran 0, 5, 35, 95. Checks pass 16,260 of 44,850 pairings among the top 300 groups; the phantom-pool check does most of the rejecting. Payload: 844 boards as JSON = 624 KB (~750 bytes per board). Example board (board 1 of the build): I'm home (honey, doorway, keys, mail — "announcing one's arrival at home, homecoming phrases"), wallflower (shy, corner, dance, invisible), clean bill of health (passed, results, relief, celebrate), piranha (razor, splash, bone, jaw). THE BUILD SCRIPT (complete, runnable) ------------------------------------- Download: linguabase.org/linguabase-categories-board.py — reads the five tables from the working directory, writes boards.tsv and boards.json, prints "42,314 board-ready groups / 844 boards" against the June 2026 release. Constants at the top (TILE_FLOOR, TILE_CAP, NEED, QMIN, SHARED_MAX, TOP) are the whole tuning surface. AT PLAY TIME ------------ Load boards.json once. Play is comparisons, nothing more: - selection of 4 == some group's word set -> solved; show the reveal - overlap of 3 with any unsolved group -> "one away" message - order groups easiest-first by the record's mean_rank WHAT COUNTING DOES NOT SETTLE ----------------------------- Whether mean tile rank matches played difficulty (playtesting); which boards you would cut on sight (reading them — the checks are filters, not a playtest, and a resemblance the tables don't record can still surface); every rating and grade is a model estimate. YOUR GAME --------- To adapt: state your board shape (five groups of five, themed weeks, harder tiles), then (1) rewrite the funnel's thresholds; (2) keep the five checks — they are shape-independent; (3) count boards at three settings and read three sample boards at each. The tables are CC0 — no permission needed, commercial or otherwise.