SEMANTIC WORD GOLF FROM LINGUABASE — method file for an LLM or a builder ========================================================================= Companion to https://www.linguabase.org/demo-5-word-golf.html Data (CC0, three mirrors): https://www.linguabase.org/download.html The full-scale version of this game is In Other Words (iOS): https://inotherwords.app — construction story at https://inotherwords.app/making/ THE GAME -------- A hole is two words, an origin and a goal. Each turn shows the current word's CLOUD — its strongest associations after three filters — and the player taps one to move there. Reach the goal in as few hops as possible. Par 3 means a three-tap line exists; a shipped game plays a range (In Other Words runs 3–7 hops). TABLES USED (4 of 13) --------------------- associations.core.parquet word -> ranked list of related words, strongest first. The course is this table. vocabulary.core.parquet word, core_rank (1 = most familiar). Files arrive UNSORTED; sort on core_rank. The TSV mirrors carry a header row. scores_labels.core.parquet word -> content_rating (G/PG/PG-13/R/X), sensitivity (1-5, higher = safer). word_families.core.parquet word -> list of relatives (all forms). THE COURSE SPEC (this page's settings — change them and re-count) ----------------------------------------------------------------- RANK_CAP 30,000 every word on the course is inside this rank CLOUD_SIZE 15 a cloud = the first 15 ranked associates that (a) are inside the rank cap, (b) are rated G or PG with sensitivity > 3, (c) are not relatives of the headword (both directions, case-blind), (d) are not already in the cloud under another spelling. A word with all 15 slots filled is a NODE — a place the player can stand. MIN_INBOUND 8 a GOAL must appear in at least 8 nodes' clouds. PAR 3 a hole is (origin node, goal) whose goal FIRST becomes reachable at exactly three hops. MEASURED COUNTS (July 2026 core release) ---------------------------------------- 400,000 vocabulary rows 30,000 inside the rank cap 28,332 after the G/PG + sensitivity filter 28,219 carry a full 15-word cloud (the nodes) 13,801 goal candidates (8+ inbound cloud memberships) 41,934,946 origin-goal pairs at par 3 = 114,890 years of dailies Cloud size 10 instead: 13,478,954 pairs (36,929 years). Cloud size 20 instead: 84,862,230 pairs (232,499 years). Network shape: SOFT and SWEET each appear in 266 other clouds (the hubs); 3,270 of the 28,219 nodes appear in no cloud at all — they can be origins, never goals. In Other Words met the same shape on its own corpus and banned over-reachable targets (WISDOM, CLARITY) outright. METHOD ------ 1. Sort vocabulary by core_rank; keep the top 30,000. 2. Keep words rated G/PG with sensitivity > 3 (join scores_labels). 3. For each survivor, walk its ranked associates and keep the first 15 that pass the same filters and are not relatives (word_families, both directions). Words filling all 15 slots are nodes. 4. Count inbound cloud memberships; words with 8+ are goal candidates. 5. From each node, breadth-first search three hops through clouds (intermediate hops must be nodes; the goal need not be). Every goal first reached at hop 3 is a par-3 hole with that origin. 6. Per hole, count the three-hop lines (a in cloud(origin), b in cloud(a), goal in cloud(b), a and b nodes, b not the origin or goal) and the first-hop spread (how many opening taps can win). Ship each hole with every cloud within two taps — that pack is the whole runtime dependency; validation and hints read it directly. HONESTY NOTES ------------- - The course is ONE-WAY: association lists are per-word rankings, so reaching B from A says nothing about the trip back. - Every count above is for this spec against this release. The demo page's dial shows the swing: cloud size alone moves the total 6x. - Clouds surface whatever the corpus holds at G/PG — read what you ship, word by word. - Dead ends are real: a cloud can offer a word with no full cloud of its own. Prune them, mark them, or hint around them. THE SCRIPT ---------- https://www.linguabase.org/linguabase-semantic-word-golf.py Runs against the four tables beside it; writes holes.tsv (origin, goal, line count, first-hop spread) and pack.json (playable clouds). Verified to reproduce the five demo holes on the page exactly: candle->shadow (6 lines), soap->ocean (12), pencil->bark (10), wool->fireplace (9), kite->escape (6).