Skip to content

Themes

A theme is a slice of everyday vocabulary that a modifier can sit in front of. There are twenty-nine of them, every language fills every one, and a word belongs to exactly one, which is what makes the theme a word reports unambiguous.

Each theme is also a generator of its own. randWord takes the theme as an option; the twenty-nine functions in the third column are the same generator with the theme already chosen, and randNickname builds on the same pools.

ThemeFunctionWhat it holdsKoreanEnglish
animalrandAnimalanimals사자, 고양이Lion, Cat
objectrandObjectthings within reach물병, 우산Bottle, Umbrella
naturerandNaturenature and its phenomena하늘, 노을Sky, Dawn
plantrandPlantplants, and their parts민들레, 솔방울Dandelion, Acorn
gemrandGemstones, metals and gems흑요석, 청동Obsidian, Bronze
conceptrandConceptterms, and ideas from the humanities철학, 자유Philosophy, Truth
mythrandMythcreatures and things out of myth구미호, 불사조Phoenix, Rune
jobrandJobthe trades and roles people hold대장장이, 항해사Blacksmith, Archer
musicrandMusicinstruments, forms and terms교향곡, 거문고Cello, Sonata
placerandPlaceplaces you can walk into or up to광장, 골목Lighthouse, Plaza
foodrandFoodthings to eat떡볶이, 김밥Dumpling, Pancake
sportrandSportsports, and what they are played for양궁, 트로피Archery, Trophy
vehiclerandVehiclethings that carry you열기구, 전차Airship, Tramcar
productrandProductthings you buy이어폰, 냉장고Earbuds, Toaster
colorrandColorcolours, plain and storied주홍, 쪽빛Crimson, Ocher
financerandFinancemoney, and what is done with it이자, 환율Ledger, Yield
techrandTechcomputers, and the networks between them서버, 캐시Server, Subnet
weatherrandWeatherwhat the sky is doing소나기, 무지개Drizzle, Gale
spacerandSpacewhat is beyond the sky은하, 혜성Galaxy, Nebula
timerandTimewhen something happens새벽, 한여름Twilight, Epoch
emotionrandEmotionwhat someone feels그리움, 설렘Longing, Relief
bodyrandBodythe parts of a body손목, 심장Wrist, Sinew
clothingrandClothingwhat people wear두루마기, 양말Cardigan, Linen
toolrandToolwhat a hand works with대패, 곡괭이Chisel, Trowel
drinkrandDrinksomething to drink식혜, 보리차Cider, Cordial
toyrandToytoys and games팽이, 연Kite, Yoyo
soundrandSoundsounds, voices and onomatopoeia속삭임, 함성Whisper, Chime
personrandPersonpeople by age, kinship and character꼬마, 이웃Toddler, Neighbor
furniturerandFurniturefurniture and furnishings흔들의자, 요람Hammock, Cradle
javascript
import { WORD_THEMES, randFood, randWord } from 'randino';

WORD_THEMES;
// ['animal', 'object', 'nature', 'plant', 'gem', 'concept', 'myth', 'job',
//  'music', 'place', 'food', 'sport', 'vehicle', 'product', 'color', 'finance',
//  'tech', 'weather', 'space', 'time', 'emotion', 'body', 'clothing', 'tool',
//  'drink', 'toy', 'sound', 'person', 'furniture']

randWord({ theme: 'food', language: 'en', count: 3 });
// ['Dumpling', 'Cocoa', 'Pancake']

randFood({ language: 'en', count: 3 }); // the same thing
dart
import 'package:randino/randino.dart';

wordThemes; // every WordTheme, in presentation order

randWord(theme: WordTheme.food, language: WordLanguage.en, count: 3);
// [Dumpling, Cocoa, Pancake]

randFood(language: WordLanguage.en, count: 3); // the same thing
python
from randino import WORD_THEMES, rand_food, rand_word

WORD_THEMES
# ('animal', 'object', 'nature', 'plant', 'gem', 'concept', 'myth', 'job',
#  'music', 'place', 'food', 'sport', 'vehicle', 'product', 'color', 'finance',
#  'tech', 'weather', 'space', 'time', 'emotion', 'body', 'clothing', 'tool',
#  'drink', 'toy', 'sound', 'person', 'furniture')

rand_word(theme="food", language="en", count=3)
# ['Dumpling', 'Cocoa', 'Pancake']

rand_food(language="en", count=3)  # the same thing

Leave the theme out and each result draws from one theme picked at random, so a batch spreads across all twenty-nine.

randNickname is the exception: at the default realism it spans twenty-six of them, leaving out color, finance and tech, because a word in front of a colour or a loan reads as a joke rather than a handle. Loosening realism puts them back, and naming one of them works at any realism. See How a nickname behaves.

The rules a theme follows

Themes are disjoint. A word in two of them would make the reported theme ambiguous, and would make the detail output name a theme the caller never asked about. When a new theme claims a word an older one already held, the word moves rather than being copied: place took the twelve places that were sitting in concept, vehicle took the bicycle and the train out of object, plant took the flowers and the trees out of nature, music took the instruments out of object, toy took the tops and the dice out of it, and furniture took the wardrobe and the bookshelf out of product. Where the two senses are genuinely different words, the word is renamed instead: the English toy became Marbles so that gem could keep Marble.

No person names, and no word that is only a name. For English this is enforced against the person-name pools automatically, which is why job has no Knight, Baker or Hunter and plant no Rose or Ivy. Korean and Japanese cannot be held to the same check, because 하늘, 별 and 森 are everyday nouns that happen also to be names. A modifier in front of one is still nobody's name.

Pool sizes are uneven on purpose. Most themes hold a hundred or more nouns per language, and the thinnest sit in the sixties. Some of these slices of vocabulary hold fewer words to begin with, and padding a pool with near-synonyms reads worse than a shorter pool.

The theme a word reports

Where the word came fromWhat theme reports
Drawn from a themeThat theme
Invented at realism: 'invented'Null — unless it happens to spell a real word

That last row is a real coincidence rather than a bug: the syllable templates spell Snake now and then, so an invented word can come back with theme set to animal.

See also

  • randWord — the generator the theme belongs to, and the twenty-nine functions beside it.
  • randNickname — the same pools, put together.
  • Constants — the theme list at runtime.

Released under the MIT License