테마
테마는 수식어를 앞에 붙일 수 있는 일상 어휘의 한 묶음입니다. 모두 29개이고, 모든 언어가 모든 테마를 채우며, 한 단어는 정확히 하나의 테마에만 속합니다. 생성 결과가 보고하는 테마가 모호해지지 않는 이유가 이것입니다.
테마 하나하나가 그 자체로 생성 함수이기도 합니다. randWord는 테마를 옵션으로 받고, 표 세 번째 열의 29개 함수는 테마를 미리 정해 둔 같은 생성기이며, randNickname도 같은 단어 풀 위에서 동작합니다.
| 테마 | 함수 | 담고 있는 것 | 한국어 | 영어 |
|---|---|---|---|---|
animal | randAnimal | 동물 | 사자, 고양이 | Lion, Cat |
object | randObject | 손 닿는 사물 | 물병, 우산 | Bottle, Umbrella |
nature | randNature | 자연과 자연 현상 | 하늘, 노을 | Sky, Dawn |
plant | randPlant | 식물과 그 부분 | 민들레, 솔방울 | Dandelion, Acorn |
gem | randGem | 돌, 금속, 보석 | 흑요석, 청동 | Obsidian, Bronze |
concept | randConcept | 학문 용어와 인문·사회의 개념 | 철학, 자유 | Philosophy, Truth |
myth | randMyth | 신화 속 존재와 사물 | 구미호, 불사조 | Phoenix, Rune |
job | randJob | 직업과 역할 | 대장장이, 항해사 | Blacksmith, Archer |
music | randMusic | 악기, 형식, 용어 | 교향곡, 거문고 | Cello, Sonata |
place | randPlace | 걸어 들어가거나 올라갈 수 있는 곳 | 광장, 골목 | Lighthouse, Plaza |
food | randFood | 먹는 것 | 떡볶이, 김밥 | Dumpling, Pancake |
sport | randSport | 스포츠와 그 목표물 | 양궁, 트로피 | Archery, Trophy |
vehicle | randVehicle | 사람을 실어 나르는 것 | 열기구, 전차 | Airship, Tramcar |
product | randProduct | 사서 쓰는 물건 | 이어폰, 냉장고 | Earbuds, Toaster |
color | randColor | 색 이름 | 주홍, 쪽빛 | Crimson, Ocher |
finance | randFinance | 돈과 돈으로 하는 일 | 이자, 환율 | Ledger, Yield |
tech | randTech | 컴퓨터와 그 사이의 망 | 서버, 캐시 | Server, Subnet |
weather | randWeather | 하늘이 하는 일 | 소나기, 무지개 | Drizzle, Gale |
space | randSpace | 하늘 너머 | 은하, 혜성 | Galaxy, Nebula |
time | randTime | 일이 일어나는 때 | 새벽, 한여름 | Twilight, Epoch |
emotion | randEmotion | 사람이 느끼는 것 | 그리움, 설렘 | Longing, Relief |
body | randBody | 몸의 부위 | 손목, 심장 | Wrist, Sinew |
clothing | randClothing | 입는 것 | 두루마기, 양말 | Cardigan, Linen |
tool | randTool | 손으로 다루는 연장 | 대패, 곡괭이 | Chisel, Trowel |
drink | randDrink | 마실 것 | 식혜, 보리차 | Cider, Cordial |
toy | randToy | 장난감과 놀이 | 팽이, 연 | Kite, Yoyo |
sound | randSound | 소리, 목소리, 의성어 | 속삭임, 함성 | Whisper, Chime |
person | randPerson | 나이, 관계, 성격으로 부르는 사람 | 꼬마, 이웃 | Toddler, Neighbor |
furniture | randFurniture | 가구와 살림살이 | 흔들의자, 요람 | Hammock, Cradle |
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 }); // 같은 결과import 'package:randino/randino.dart';
wordThemes; // 표시 순서대로 나열된 모든 WordTheme
randWord(theme: WordTheme.food, language: WordLanguage.en, count: 3);
// [Dumpling, Cocoa, Pancake]
randFood(language: WordLanguage.en, count: 3); // 같은 결과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) # 같은 결과테마를 생략하면 결과마다 테마를 하나씩 무작위로 골라 뽑으므로, 한 번에 여러 개를 만들면 29개 테마에 고르게 퍼집니다.
randNickname은 예외입니다. 기본 realism에서는 color, finance, tech를 빼고 26개만 돕니다. 색이나 대출 앞에 수식어가 붙으면 핸들이 아니라 농담으로 읽히기 때문입니다. realism을 풀면 다시 들어오고, 테마를 직접 지정하면 어느 realism에서든 나옵니다. 닉네임 동작 방식에 자세히 있습니다.
테마가 지키는 규칙
테마는 서로 겹치지 않습니다. 한 단어가 두 테마에 있으면 보고되는 테마가 모호해지고, 상세 출력이 호출자가 요청한 적 없는 테마를 알려 주게 됩니다. 새 테마가 기존 테마의 단어를 가져갈 때는 복사가 아니라 이동합니다. place는 concept에 있던 장소 열두 개를 가져갔고, vehicle은 object에서 자전거와 기차를, plant는 nature에서 꽃과 나무를, music은 object에서 악기를, toy는 같은 곳에서 팽이와 주사위를, furniture는 product에서 옷장과 책장을 가져갔습니다. 두 뜻이 정말 다른 단어일 때는 이동 대신 이름을 바꿉니다. 영어에서 장난감 구슬을 Marbles로 바꾼 덕분에 gem이 Marble을 유지할 수 있었습니다.
사람 이름은 쓰지 않고, 이름으로만 쓰이는 단어도 쓰지 않습니다. 영어는 사람 이름 풀과 자동으로 대조하므로 job에 Knight, Baker, Hunter가 없고 plant에 Rose나 Ivy가 없습니다. 한국어와 일본어는 같은 검사를 적용할 수 없습니다. 하늘, 별, 森은 이름으로도 쓰이는 일상 명사이기 때문입니다. 그래도 그 앞에 수식어가 붙으면 누구의 이름도 아닙니다.
풀 크기가 고르지 않은 것은 의도된 것입니다. 테마 대부분은 언어마다 명사를 100개 이상 담고 있고, 가장 얇은 테마도 60개대입니다. 어휘 자체가 그만큼밖에 없는 갈래가 있고, 비슷한 말로 풀을 부풀리면 짧은 풀보다 나쁘게 읽힙니다.
보고되는 테마
| 단어의 출처 | theme이 보고하는 값 |
|---|---|
| 테마에서 뽑음 | 그 테마 |
realism: 'invented'로 만들어냄 | null — 우연히 실제 단어를 이루지 않는 한 |
마지막 줄은 버그가 아니라 실제로 일어나는 우연입니다. 음절 템플릿이 이따금 Snake를 만들어내므로, 만들어낸 단어가 theme을 animal로 보고하기도 합니다.
함께 보기
randWord— 테마가 속한 생성 함수와, 그 옆의 29개 함수.randNickname— 같은 단어 풀을 조합하는 쪽.- 상수 — 런타임에서의 테마 목록.