feat: Random.org dice and daily word matrix, interpreter voices, curated lexicon
Wire cleromancy rolls and the once-per-UTC-day 000-999 word shuffle to RANDOM.ORG JSON-RPC, with a local CSPRNG fallback. Add settings for interpreter personas and a cleaner default oracle prompt. Replace proper names and bureaucratic filler in the 1000-word lexicon with sacred symbols.
This commit is contained in:
@@ -0,0 +1,490 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Rebuild the Oracle 999 lexicon: drop names/bureaucracy, keep function words, expand the sacred core to exactly 1000."""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SRC = ROOT / "lib/data/words_data.dart"
|
||||
OUT = SRC
|
||||
|
||||
CAT_ORDER = [
|
||||
"Образ / Архетип",
|
||||
"Космический Знак",
|
||||
"Сакральный Символ",
|
||||
"Священный Предмет",
|
||||
"Сакральное Место",
|
||||
"Тотем / Архетип",
|
||||
"Архетип Человека",
|
||||
"Действие / Трансформация",
|
||||
"Свойство / Качество",
|
||||
"Вектор / Обстоятельство",
|
||||
"Связь / Направление",
|
||||
"Направление",
|
||||
"Определение",
|
||||
"Узел / Отношение",
|
||||
"Импульс / Оттенок",
|
||||
"Фокус сознания",
|
||||
"Числовой код",
|
||||
]
|
||||
|
||||
CORE_ORDER = [
|
||||
"огонь", "вода", "воздух", "земля", "свет", "тьма", "день", "ночь", "утро", "вечер",
|
||||
"север", "юг", "восток", "запад", "небо", "бездна", "верх", "низ", "высота", "глубина",
|
||||
"порядок", "хаос", "жизнь", "смерть", "рождение", "угасание", "начало", "конец",
|
||||
"добро", "зло", "истина", "ложь", "сила", "слабость", "любовь", "ненависть", "мир", "война",
|
||||
"свобода", "плен", "дух", "тело", "явь", "сон", "память", "забвение", "пустота", "полнота",
|
||||
"вход", "выход", "друг", "враг", "чистота", "скверна", "дар", "жертва", "тайна", "откровение",
|
||||
"тишина", "зов", "ключ", "замок", "мать", "отец", "мудрец", "безумец",
|
||||
"звезда", "солнце", "луна", "комета", "затмение", "рассвет", "закат", "зенит", "эфир", "вечность",
|
||||
"судьба", "рок", "знамение", "пророчество",
|
||||
"алтарь", "святилище", "храм", "купель", "чаша", "посох", "меч", "щит", "корона", "цепь",
|
||||
"кольцо", "свиток", "зеркало", "свеча", "нить", "печать", "завеса", "колокол", "факел", "кристалл",
|
||||
"океан", "пустыня", "пещера", "лабиринт", "скала", "гора", "долина", "остров", "источник", "родник",
|
||||
"водопад", "перекресток", "порог", "врата", "мост", "башня", "сад", "роща",
|
||||
"древо", "корень", "семя", "плод", "цветок", "роза", "лотос",
|
||||
"змей", "орел", "волк", "ворон", "лев", "сова", "лебедь", "дракон", "феникс",
|
||||
"странник", "хранитель", "воин", "целитель", "пророк", "вестник", "страж", "царь", "жрец", "маг",
|
||||
"отшельник", "творец", "спутник",
|
||||
]
|
||||
CORE = set(CORE_ORDER)
|
||||
|
||||
FUNC_POS = {
|
||||
"предлог", "союз", "частица", "местоимение", "местоименное прил.", "наречие-местоимение",
|
||||
}
|
||||
|
||||
DROP = {
|
||||
# names / toponyms / abbreviations
|
||||
"александр", "америка", "андрей", "борис", "виктор", "владимир", "европа", "иван",
|
||||
"иванович", "игорь", "михаил", "москва", "николай", "россия", "рф", "сергей", "ссср",
|
||||
"сталин", "сша",
|
||||
# ordinals
|
||||
"первый", "второй", "третий",
|
||||
# bureaucratic / mundane nouns
|
||||
"автор", "анализ", "армия", "база", "безопасность", "большинство", "бумага", "вариант",
|
||||
"возможность", "возраст", "врач", "время", "выбор", "генерал", "глава", "группа", "губа",
|
||||
"данные", "действие", "дело", "директор", "доктор", "задача", "здание", "значение",
|
||||
"изменение", "использование", "исследование", "карман", "качество", "класс", "количество",
|
||||
"команда", "комплекс", "контроль", "культура", "курс", "литература", "масса", "материал",
|
||||
"метод", "минута", "мнение", "модель", "население", "наука", "начальник", "неделя",
|
||||
"необходимость", "номер", "образование", "обстоятельство", "общество", "объем", "операция",
|
||||
"организация", "оценка", "очередь", "период", "писатель", "план", "площадь", "повод",
|
||||
"подготовка", "позиция", "политика", "положение", "понятие", "практика", "предложение",
|
||||
"предмет", "председатель", "представитель", "представление", "президент", "пример",
|
||||
"проведение", "продукт", "производство", "работа", "разговор", "размер", "регион",
|
||||
"республика", "реформа", "роль", "ряд", "самолет", "содержание", "соответствие", "состав",
|
||||
"спектакль", "способ", "средство", "срок", "степень", "страна", "строительство", "текст",
|
||||
"тема", "техника", "технология", "тип", "товарищ", "требование", "услуга", "участие",
|
||||
"участник", "участок", "факт", "федерация", "фильм", "хозяйство", "член", "школа",
|
||||
"господин",
|
||||
# journalistic adjectives
|
||||
"американский", "боевой", "больший", "бывший", "военный", "городской", "детский", "должен",
|
||||
"единственный", "известный", "местный", "мировой", "московский", "народный", "небольшой",
|
||||
"немецкий", "нужный", "нынешний", "обычный", "отдельный", "очередной", "рабочий",
|
||||
"российский", "русский", "собственный", "современный", "способный", "средний", "старший",
|
||||
"судебный", "человеческий",
|
||||
# bureaucratic verbs
|
||||
"заявить", "использовать", "иметься", "называться", "отметить", "относиться", "позволять",
|
||||
"получаться", "получиться", "предлагать", "представить", "представлять", "привести",
|
||||
"принимать", "приходиться", "провести", "проводить", "произойти", "происходить", "работать",
|
||||
"следовать", "составлять", "состоять", "считать", "требовать", "удаться", "установить",
|
||||
"являться", "заниматься", "определить", "оказаться", "оказываться", "приехать", "позвонить",
|
||||
"купить", "сообщить", "составить", "выступать", "получать",
|
||||
# meta / journalistic adverbs
|
||||
"весьма", "видимо", "видно", "вовсе", "вполне", "впрочем", "далее", "действительно",
|
||||
"довольно", "достаточно", "значит", "известно", "кажется", "конечно", "кстати", "менее",
|
||||
"может", "наиболее", "например", "необходимо", "несмотря", "обычно", "одновременно",
|
||||
"особенно", "полностью", "практически", "совершенно", "также",
|
||||
}
|
||||
|
||||
# word, category, description — exactly 236 universal core symbols
|
||||
NEW_CORE = [
|
||||
# --- Образ / Архетип (80) ---
|
||||
("лёд", "Образ / Архетип", "Застывший поток, остановка движения, хрупкая прозрачность сохранённой памяти."),
|
||||
("пламя", "Образ / Архетип", "Живой огонь преображения, неудержимый подъём, свет, требующий пищи."),
|
||||
("искра", "Образ / Архетип", "Первый толчок замысла, крошечное начало великого горения."),
|
||||
("пепел", "Образ / Архетип", "Остаток сожжённого, смирение формы, почва для нового ростка."),
|
||||
("дым", "Образ / Архетип", "След исчезнувшего, молитва, уходящая в небо, завеса между мирами."),
|
||||
("пар", "Образ / Архетип", "Граница воды и воздуха, переход состояний, невидимая сила нагрева."),
|
||||
("тень", "Образ / Архетип", "Спутник света, сокрытая сторона души, то, без чего нет объёма."),
|
||||
("луч", "Образ / Архетип", "Направленный свет, пронзающий тьму, избранный путь озарения."),
|
||||
("сияние", "Образ / Архетип", "Избыток света, слава присутствия, излучение без источника-огня."),
|
||||
("мрак", "Образ / Архетип", "Плотная тьма без звёзд, испытание слепотой, лоно невидимого."),
|
||||
("сумерки", "Образ / Архетип", "Порог дня и ночи, час двусмысленности, время духов и знаков."),
|
||||
("полдень", "Образ / Архетип", "Пик явленности, беспощадная ясность, тень, сжатая под ногами."),
|
||||
("полночь", "Образ / Архетип", "Сердце ночи, точка перелома суток, час глубоких решений."),
|
||||
("зима", "Образ / Архетип", "Сон земли, испытание холодом, время корней и внутреннего огня."),
|
||||
("весна", "Образ / Архетип", "Пробуждение соков, нежность начала, возврат жизненной силы."),
|
||||
("осень", "Образ / Архетип", "Сбор плодов, золотое увядание, мудрость отпускания."),
|
||||
("молния", "Образ / Архетип", "Мгновенный удар неба, озарение-разрыв, воля без отлагательства."),
|
||||
("гром", "Образ / Архетип", "Голос небес после вспышки, предупреждение, сотрясение основ."),
|
||||
("дождь", "Образ / Архетип", "Благодатное омовение, слёзы неба, питание иссохшей земли."),
|
||||
("туман", "Образ / Архетип", "Скрывающий покров, растворение границ, время не доверять глазам."),
|
||||
("роса", "Образ / Архетип", "Тихий дар утра, чистота, собранная без грозы."),
|
||||
("иней", "Образ / Архетип", "Хрупкий узор холода, красота, тающая от дыхания."),
|
||||
("буря", "Образ / Архетип", "Ярость стихий, очистительный слом, проверка, крепки ли корни."),
|
||||
("волна", "Образ / Архетип", "Ритм океана, подъём и спад, сила, возвращающаяся к берегу."),
|
||||
("прилив", "Образ / Архетип", "Нарастание сил, прибытие дара, заполнение пустот."),
|
||||
("отлив", "Образ / Архетип", "Отход вод, обнажение дна, время увидеть скрытое."),
|
||||
("лава", "Образ / Архетип", "Расплавленная сердцевина, разрушительное творение новой земли."),
|
||||
("радуга", "Образ / Архетип", "Завет после грозы, мост цветов, знак примирения стихий."),
|
||||
("эхо", "Образ / Архетип", "Возвращённый голос, последствие слова, память пространства."),
|
||||
("миг", "Образ / Архетип", "Атом времени, дверь, открытая лишь на вдох."),
|
||||
("цикл", "Образ / Архетип", "Вечный круговорот, возврат урока, закон повторения до понимания."),
|
||||
("эпоха", "Образ / Архетип", "Большой цикл судьбы, смена мирового дыхания."),
|
||||
("карма", "Образ / Архетип", "Неустранимый посев дел, возвращающийся плод каждого выбора."),
|
||||
("грех", "Образ / Архетип", "Нарушение внутренней правды, трещина в целостности духа."),
|
||||
("вина", "Образ / Архетип", "Груз содеянного, зов к искуплению, якорь прошлого."),
|
||||
("стыд", "Образ / Архетип", "Огонь обнажённости, страж границ, сигнал совести."),
|
||||
("гордыня", "Образ / Архетип", "Раздутое «я», слепота высоты, падение, уже начавшееся внутри."),
|
||||
("смирение", "Образ / Архетип", "Сила, преклонившая голову, податливость, в которой нет слабости."),
|
||||
("отчаяние", "Образ / Архетип", "Дно колодца, точка, где остаётся только крик к Небу."),
|
||||
("сомнение", "Образ / Архетип", "Трещина в вере, страж от слепоты, яд, если пьют без меры."),
|
||||
("мудрость", "Образ / Архетип", "Зрение сквозь время, тихий плод прожитых ошибок."),
|
||||
("справедливость", "Образ / Архетип", "Весы мира, восстановление меры, меч, не знающий лица."),
|
||||
("месть", "Образ / Архетип", "Круг боли, возвращающий удар, огонь, сжигающий держащего."),
|
||||
("прощение", "Образ / Архетип", "Размыкание цепи, отпускание яда, свобода обоих берегов."),
|
||||
("клятва", "Образ / Архетип", "Слово, ставшее узами, печать воли, которую нельзя снять легко."),
|
||||
("обет", "Образ / Архетип", "Добровольный зарок, стена и крылья избранного пути."),
|
||||
("искушение", "Образ / Архетип", "Приманка тени, проверка подлинности желания."),
|
||||
("искупление", "Образ / Архетип", "Цена возврата к целому, труд очищения долга."),
|
||||
("посвящение", "Образ / Архетип", "Переход через порог знания, смерть старого имени."),
|
||||
("чудо", "Образ / Архетип", "Вмешательство иного порядка, разрыв привычной причинности."),
|
||||
("благословение", "Образ / Архетип", "Поток благой силы, рука, лежащая на судьбе."),
|
||||
("проклятие", "Образ / Архетип", "Заклятый яд слова, узел, требующий расплетения."),
|
||||
("яд", "Образ / Архетип", "Скрытая порча, лекарство в капле, смерть в чаше."),
|
||||
("нектар", "Образ / Архетип", "Пища бессмертия, сладость истины, дар, которого нельзя требовать."),
|
||||
("голод", "Образ / Архетип", "Пустота, движущая к поиску, испытание нуждой."),
|
||||
("жажда", "Образ / Архетип", "Зов к источнику, сухость духа, неутолённое стремление."),
|
||||
("покой", "Образ / Архетип", "Неподвижность целого, мир после бури, священная остановка."),
|
||||
("тревога", "Образ / Архетип", "Сторожевой звон, предчувствие сдвига, ум без места."),
|
||||
("гнев", "Образ / Архетип", "Огонь границы, сила «нет», разрушительный без узды."),
|
||||
("печаль", "Образ / Архетип", "Дождь сердца, честная дань утрате, очищение через тяжесть."),
|
||||
("скорбь", "Образ / Архетип", "Глубокое озеро потери, время, когда мир сужается до боли."),
|
||||
("страсть", "Образ / Архетип", "Пожирающий жар желания, двигатель творения и гибели."),
|
||||
("холод", "Образ / Архетип", "Отстранение, ясность без тепла, сон чувств."),
|
||||
("жар", "Образ / Архетип", "Лихорадка жизни, перегрев воли, пламя, близкое к болезни."),
|
||||
("изобилие", "Образ / Архетип", "Переполнение даров, рог судьбы, испытание мерой."),
|
||||
("нищета", "Образ / Архетип", "Обнажённость без покровов, свобода от лишнего, урок нуля."),
|
||||
("болезнь", "Образ / Архетип", "Весть тела, остановка привычного, зов к исцелению корня."),
|
||||
("рана", "Образ / Архетип", "Открытый край опыта, место, где входит и свет, и яд."),
|
||||
("шрам", "Образ / Архетип", "Зажившая память, знак пройденного огня, печать урока на коже."),
|
||||
("безмолвие", "Образ / Архетип", "Глубже тишины, отказ от слова, слух, ставший безграничным."),
|
||||
("шёпот", "Образ / Архетип", "Тайная речь, совет на ухо, сила малого звука."),
|
||||
("крик", "Образ / Архетип", "Прорыв невыносимого, зов о помощи, разрыв завесы."),
|
||||
("смех", "Образ / Архетип", "Освобождение сжатого, священное несерьёзное, победа над страхом."),
|
||||
("плач", "Образ / Архетип", "Вода глаз, разрешение камня в груди, дождь исцеления."),
|
||||
("танец", "Образ / Архетип", "Молитва тела, согласие с ритмом мира, путь без слов."),
|
||||
("бдение", "Образ / Архетип", "Сторожение в ночи, отказ от сна ради смысла."),
|
||||
("пост", "Образ / Архетип", "Священный голод, очищение от лишнего, заточка воли."),
|
||||
("пир", "Образ / Архетип", "Праздник полноты, союз за столом, опасность избытка."),
|
||||
("благодать", "Образ / Архетип", "Незаслуженный дар свыше, масло на рану мира."),
|
||||
("дыхание", "Образ / Архетип", "Нить жизни, обмен с миром, первая и последняя молитва тела."),
|
||||
# --- Космический Знак (14) ---
|
||||
("заря", "Космический Знак", "Первый цвет неба, обещание дня, нежность начала света."),
|
||||
("горизонт", "Космический Знак", "Линия невозможного касания, предел видимого, зов идти дальше."),
|
||||
("небосвод", "Космический Знак", "Чаша над головой, кров судьбы, поле, по которому ходят светила."),
|
||||
("созвездие", "Космический Знак", "Узор судеб на тёмном поле, союз далёких огней, дающих имя пути."),
|
||||
("планета", "Космический Знак", "Странник орбиты, характер влияния, тело, держащее свой закон."),
|
||||
("метеор", "Космический Знак", "Короткий огонь падения, исполнение желания, след, сгорающий в полёте."),
|
||||
("аврора", "Космический Знак", "Полярное сияние духа, завеса меж мирами, танец невидимых сил."),
|
||||
("надир", "Космический Знак", "Противоточка зенита, глубинная опора, низ, без которого нет верха."),
|
||||
("солнцеворот", "Космический Знак", "Перелом годового колеса, возврат света или тьмы, священный канун."),
|
||||
("полнолуние", "Космический Знак", "Полная чаша ночи, пик чувства, безумие и ясность одновременно."),
|
||||
("новолуние", "Космический Знак", "Тёмное зерно месяца, посев втайне, сила начинать в невидимом."),
|
||||
("равноденствие", "Космический Знак", "Равный шаг света и тьмы, точка меры, хрупкий космический баланс."),
|
||||
("зодиак", "Космический Знак", "Пояс зверей неба, круг архетипов, через который проходит Солнце."),
|
||||
("орбита", "Космический Знак", "Закон возвращения, путь вокруг центра, верность своему кругу."),
|
||||
# --- Сакральный Символ (28) ---
|
||||
("спираль", "Сакральный Символ", "Путь, который возвращается выше, рост через виток, живая геометрия."),
|
||||
("узел", "Сакральный Символ", "Связка судеб, заклятие или союз, то, что нельзя разрубить без цены."),
|
||||
("яйцо", "Сакральный Символ", "Целое до рождения, защищённый потенциал, мир, ещё не расколотый."),
|
||||
("весы", "Сакральный Символ", "Мера правды, час выбора, требование не перевесить чашу."),
|
||||
("якорь", "Сакральный Символ", "Верность глубине, остановка дрейфа, тяжесть, спасающая в буре."),
|
||||
("крест", "Сакральный Символ", "Схождение вертикали духа и горизонтали мира, принятие полной меры."),
|
||||
("руна", "Сакральный Символ", "Сжатое имя силы, знак, который действует, когда его произносят."),
|
||||
("мандала", "Сакральный Символ", "Священный круг порядка, карта внутреннего космоса, целостность узора."),
|
||||
("уроборос", "Сакральный Символ", "Змей, кусающий хвост, вечное самопожирание и саморождение цикла."),
|
||||
("грааль", "Сакральный Символ", "Невзятая чаша духа, святыня поиска, дар лишь чистым намерениям."),
|
||||
("колесо", "Сакральный Символ", "Фортуна и закон оборота, взлёт, падение и снова взлёт."),
|
||||
("ось", "Сакральный Символ", "Неподвижный стержень вращения мира, точка, вокруг которой всё пляшет."),
|
||||
("рог", "Сакральный Символ", "Сила зверя и изобилие, зов сбора, власть, растущая из плоти."),
|
||||
("кадуцей", "Сакральный Символ", "Жезл согласия противоположностей, исцеление через сплетение змеев."),
|
||||
("тотем", "Сакральный Символ", "Родовой зверь-хранитель, живой герб души, запрет и защита крови."),
|
||||
("идол", "Сакральный Символ", "Застывший образ силы, опасность поклонения форме вместо сути."),
|
||||
("скрижаль", "Сакральный Символ", "Высеченный закон, слово, ставшее камнем, нестираемая заповедь."),
|
||||
("гримуар", "Сакральный Символ", "Книга тайных имён, опасное знание, ключ, требующий зрелости."),
|
||||
("дуб", "Сакральный Символ", "Царь леса, стойкость веков, священная ось между корнем и кроной."),
|
||||
("ива", "Сакральный Символ", "Плачущая гибкость, вода в дереве, сила, что гнётся и не ломается."),
|
||||
("берёза", "Сакральный Символ", "Чистота северного света, обновление кожи, нежность и живучесть."),
|
||||
("кедр", "Сакральный Символ", "Нетленное дерево, благовонный столп, память, не гниющая во времени."),
|
||||
("кипарис", "Сакральный Символ", "Страж порога смерти, вечнозелёная скорбь, дерево иного берега."),
|
||||
("плющ", "Сакральный Символ", "Верность опоре, медленное овладение, жизнь, держащаяся чужого ствола."),
|
||||
("полынь", "Сакральный Символ", "Горькая трава ясности, изгнание морока, лекарство, которое не сладко."),
|
||||
("папоротник", "Сакральный Символ", "Цветок Ивановой ночи, скрытый огонь в тени, удача для ищущего."),
|
||||
("лавр", "Сакральный Символ", "Венок победы и поэта, слава, которую нельзя сорвать без цены."),
|
||||
("олива", "Сакральный Символ", "Ветвь мира, масло света, долготерпение среди камней."),
|
||||
# --- Священный Предмет (32) ---
|
||||
("карта", "Священный Предмет", "Лик пути, расклад возможностей, зеркало, говорящее образами."),
|
||||
("компас", "Священный Предмет", "Верность северу души, стрелка, не лгущая в тумане."),
|
||||
("стрела", "Священный Предмет", "Намерение, пущенное в полёт, слово, которое уже не вернуть."),
|
||||
("лук", "Священный Предмет", "Напряжённая воля, гибкая сила, готовность к точному выстрелу."),
|
||||
("копьё", "Священный Предмет", "Прямая воля на расстоянии, укол правды, оружие стража порога."),
|
||||
("кинжал", "Священный Предмет", "Сокровенное оружие близи, скрытое решение, клинок в рукаве судьбы."),
|
||||
("топор", "Священный Предмет", "Рассекающий удар, рубка лишнего, орудие и строительства, и казни."),
|
||||
("молот", "Священный Предмет", "Сила кузницы, удар, придающий форму, гром ремесла и суда."),
|
||||
("верёвка", "Священный Предмет", "Связь и путы, спасение и петля, то, чем вяжут судьбы."),
|
||||
("сосуд", "Священный Предмет", "Вместилище дара или яда, мера того, что вы способны удержать."),
|
||||
("лампа", "Священный Предмет", "Ручной свет в темноте, знание, которое носят с собой."),
|
||||
("фонарь", "Священный Предмет", "Страж ночной тропы, круг света среди неизвестного."),
|
||||
("маска", "Священный Предмет", "Личина роли, защита лица, опасность забыть, кто под ней."),
|
||||
("вуаль", "Священный Предмет", "Полускрытость тайны, стыдливость святыни, дымка между вами и сутью."),
|
||||
("плащ", "Священный Предмет", "Покров странника, невидимость, достоинство, которое носят на плечах."),
|
||||
("барабан", "Священный Предмет", "Сердцебиение ритуала, зов к сбору, ритм, подчиняющий шаг."),
|
||||
("флейта", "Священный Предмет", "Голос ветра в тростнике, зачарование, зов, ведущий за собой."),
|
||||
("арфа", "Священный Предмет", "Струны души, гармония сфер, музыка, примиряющая небо и землю."),
|
||||
("лира", "Священный Предмет", "Оружие поэта, строй космоса, дар укрощать зверя песней."),
|
||||
("жребий", "Священный Предмет", "Священный случай, кость вопроса, согласие принять выпавшее."),
|
||||
("кость", "Священный Предмет", "Остов формы, память предков, оракул, брошенный на землю."),
|
||||
("амулет", "Священный Предмет", "Малая стража на теле, сжатая молитва, щит, который носят скрытно."),
|
||||
("талисман", "Священный Предмет", "Заряженный знак удачи, якорь намерения, вещь, держащая заклинание."),
|
||||
("реликвия", "Священный Предмет", "Остаток святого присутствия, мост к предку, сила через касание."),
|
||||
("кадило", "Священный Предмет", "Дым молитвы, очищение воздуха, качающийся ритм священнодействия."),
|
||||
("ладан", "Священный Предмет", "Благовоние восхождения, сладкий дым, несущий слово вверх."),
|
||||
("мирра", "Священный Предмет", "Горький дар погребения и царей, масло скорби и коронации."),
|
||||
("котёл", "Священный Предмет", "Лоно превращений, варево судеб, место, где многое становится одним."),
|
||||
("кубок", "Священный Предмет", "Чаша союза, клятва за столом, глоток, связывающий пьющих."),
|
||||
("хлеб", "Священный Предмет", "Плоть земли, дар насущный, преломление, делающее чужих своими."),
|
||||
("вино", "Священный Предмет", "Кровь лозы, опьянение духа, таинство радости и жертвы."),
|
||||
("соль", "Священный Предмет", "Завет нетления, вкус правды, охрана от гниения и порчи."),
|
||||
# --- Сакральное Место (26) ---
|
||||
("колодец", "Сакральное Место", "Глубина, откуда пьют, голос снизу, опасная и живая тьма воды."),
|
||||
("кладбище", "Сакральное Место", "Сад предков, порог иного берега, тишина, учащая мере жизни."),
|
||||
("тропа", "Сакральное Место", "Узкий путь знающих, след, протоптанный теми, кто шёл раньше."),
|
||||
("перевал", "Сакральное Место", "Высшая точка перехода, ветер двух склонов, решение идти дальше."),
|
||||
("пропасть", "Сакральное Место", "Разрыв земли, испытание головокружением, край, за которым нет дна."),
|
||||
("болото", "Сакральное Место", "Зыбкая середина, место застревания, опасность принять топь за путь."),
|
||||
("озеро", "Сакральное Место", "Зеркало в земле, стоячая глубина, душа, смотрящая на себя."),
|
||||
("ручей", "Сакральное Место", "Малый живой ток, начало реки, скромная сила, которая не иссякает."),
|
||||
("маяк", "Сакральное Место", "Огонь для заблудших, одинокая башня смысла в море хаоса."),
|
||||
("кузница", "Сакральное Место", "Священный жар ремесла, место, где ударом рождается форма."),
|
||||
("катакомбы", "Сакральное Место", "Подземные ходы памяти, скрытая церковь, путь в темноте костей."),
|
||||
("чертог", "Сакральное Место", "Чертог силы, зал присутствия, пространство, где являются властители."),
|
||||
("дворец", "Сакральное Место", "Обитель порядка и соблазна власти, красота, требующая стражи."),
|
||||
("хижина", "Сакральное Место", "Малый кров отшельника, простота, в которой живёт большое."),
|
||||
("шатёр", "Сакральное Место", "Переносной храм странника, временный круг своего среди чужого."),
|
||||
("костёр", "Сакральное Место", "Сердце ночного стана, огонь собрания, круг, отгоняющий тьму."),
|
||||
("пристань", "Сакральное Место", "Место прибытия и прощания, пауза между морями пути."),
|
||||
("капище", "Сакральное Место", "Языческий престол сил, открытый алтарь под небом, место договора с духами."),
|
||||
("дубрава", "Сакральное Место", "Священный лес дубов, вече предков, шепчущий свод листвы."),
|
||||
("чаща", "Сакральное Место", "Густая глубь леса, потерянность, испытание без ориентиров."),
|
||||
("ущелье", "Сакральное Место", "Узкий ход меж скал, вынужденный путь, эхо каждого шага."),
|
||||
("обрыв", "Сакральное Место", "Край, где кончается земля, требование прыжка или поворота."),
|
||||
("подземелье", "Сакральное Место", "Низ мира, место испытания и клада, спуск за своей тенью."),
|
||||
("очаг", "Сакральное Место", "Сердце дома, хранимый огонь рода, точка, вокруг которой собираются свои."),
|
||||
("скит", "Сакральное Место", "Уединённая обитель молитвы, пустынь духа вдали от шума."),
|
||||
("обитель", "Сакральное Место", "Общий дом посвящённых, устав и кров, школа тишины."),
|
||||
# --- Тотем / Архетип (30) ---
|
||||
("медведь", "Тотем / Архетип", "Сон и мощь, хозяин чащи, сила, которая умеет уходить в зиму."),
|
||||
("лиса", "Тотем / Архетип", "Хитрость тропы, рыжий ум границы, искусство быть непойманным."),
|
||||
("олень", "Тотем / Архетип", "Благородство леса, венценосные рога года, чуткость и гордый шаг."),
|
||||
("конь", "Тотем / Архетип", "Ветер под седлом, верный ход судьбы, сила, несущая всадника."),
|
||||
("паук", "Тотем / Архетип", "Ткач сетей, терпеливый охотник центра, узор, в котором вязнут."),
|
||||
("бабочка", "Тотем / Архетип", "Душа после кокона, хрупкое преображение, красота короткого дня."),
|
||||
("рыба", "Тотем / Архетип", "Молчаливая мудрость вод, добыча и спасение, жизнь в невидимой глубине."),
|
||||
("кит", "Тотем / Архетип", "Левиафан глубин, память океана, огромность, поющая в бездне."),
|
||||
("петух", "Тотем / Архетип", "Глашатай рассвета, страж порога ночи, гордыня и верный крик."),
|
||||
("бык", "Тотем / Архетип", "Земная мощь, упрямство плодородия, сила, которую нельзя сдвинуть легко."),
|
||||
("коза", "Тотем / Архетип", "Живучесть склонов, жертва и свобода, тварь, идущая там, где не ступают."),
|
||||
("баран", "Тотем / Архетип", "Лоб удара, начало зодиака, упрямство первопроходца."),
|
||||
("скорпион", "Тотем / Архетип", "Тайное жало, смерть и воскресение, страж того, что хранят в тени."),
|
||||
("журавль", "Тотем / Архетип", "Вестник дальних стран, танец верности, птица, несущая души."),
|
||||
("сокол", "Тотем / Архетип", "Удар с высоты, зрение охотника, посланник царской воли."),
|
||||
("кабан", "Тотем / Архетип", "Ярость чащи, клык земли, опасная прямота неукрощённой силы."),
|
||||
("тигр", "Тотем / Архетип", "Полосатый огонь джунглей, царственная опасность, красота хищника."),
|
||||
("пантера", "Тотем / Архетип", "Ночная бархатная смерть, грация тени, сила, которая не шумит."),
|
||||
("рысь", "Тотем / Архетип", "Тайное зрение севера, бесшумный прыжок, страж скрытых троп."),
|
||||
("заяц", "Тотем / Архетип", "Робкая лунная тварь, плодовитость страха, скорость спасения."),
|
||||
("черепаха", "Тотем / Архетип", "Долготерпение, дом на себе, мудрость, не спешащая к гибели."),
|
||||
("пчела", "Тотем / Архетип", "Соты порядка, сладкий труд, жалящая служительница общего блага."),
|
||||
("муравей", "Тотем / Архетип", "Малая сила множества, путь, которого не стыдятся, строительство снизу."),
|
||||
("голубь", "Тотем / Архетип", "Вестник мира, нежность духа, птица, несущая ветвь после потопа."),
|
||||
("ласточка", "Тотем / Архетип", "Возврат весны, быстрый дом под стрехой, весть, что зима кончилась."),
|
||||
("филин", "Тотем / Архетип", "Ночной мудрец, круглое зрение тьмы, голос, от которого стынет кровь."),
|
||||
("грифон", "Тотем / Архетип", "Страж сокровищ, союз орла и льва, тварь, не пускающая недостойных."),
|
||||
("единорог", "Тотем / Архетип", "Неуловимая чистота, сила, клонящаяся лишь к невинности."),
|
||||
("сфинкс", "Тотем / Архетип", "Загадка на пороге, смерть за неверный ответ, страж тайны человека."),
|
||||
("дельфин", "Тотем / Архетип", "Радость глубин, спаситель утопающих, ум, играющий в волне."),
|
||||
# --- Архетип Человека (26) ---
|
||||
("ведьма", "Архетип Человека", "Знающая края, хозяйка трав и луны, сила, живущая вне закона толпы."),
|
||||
("шаман", "Архетип Человека", "Ходок меж мирами, лекарь трещин, тот, кто платит собой за проход."),
|
||||
("король", "Архетип Человека", "Бремя короны, ответственность за порядок, солнце человеческого круга."),
|
||||
("королева", "Архетип Человека", "Лунная власть сердца, держащая трон изнутри, плодородие и закон дома."),
|
||||
("нищий", "Архетип Человека", "Обнажённый перед миром, святой или сломленный, учитель пустых рук."),
|
||||
("дитя", "Архетип Человека", "Невинное начало, открытые глаза, будущее, которое ещё можно направить."),
|
||||
("старец", "Архетип Человека", "Снег на кроне, живая летопись, благословение последнего слова."),
|
||||
("дева", "Архетип Человека", "Закрытый сад потенциала, чистота, ещё не отданная миру."),
|
||||
("охотник", "Архетип Человека", "Выслеживание сути, терпение тропы, тот, кто кормит племя точным ударом."),
|
||||
("кузнец", "Архетип Человека", "Мастер огня и железа, придающий судьбе форму ударами воли."),
|
||||
("пилигрим", "Архетип Человека", "Идущий к святыне, обет дороги, жизнь, ставшая путём."),
|
||||
("изгнанник", "Архетип Человека", "Вычтенный из круга, горькая свобода чужбины, урок бездомности."),
|
||||
("предатель", "Архетип Человека", "Разрыв клятвы, нож в спине союза, тень, без которой не узнать верности."),
|
||||
("спаситель", "Архетип Человека", "Тот, кто входит в чужую беду, свет, платящий собой за других."),
|
||||
("демон", "Архетип Человека", "Испытатель воли, олицетворение страсти, сила, требующая имени и узды."),
|
||||
("ангел", "Архетип Человека", "Вестник иного порядка, страж и посланник, присутствие без тяжести плоти."),
|
||||
("богиня", "Архетип Человека", "Женский лик Божественного, лоно и корона, сила, дающая и забирающая."),
|
||||
("палач", "Архетип Человека", "Холодный слуга предела, рука закона без гнева, конец, который кто-то должен явить."),
|
||||
("судья", "Архетип Человека", "Держатель весов, слово, рассекающее спор, ответственность за меру."),
|
||||
("шут", "Архетип Человека", "Священный перевёртыш, правда в колпаке, единственный, кому можно сказать королю."),
|
||||
("вдова", "Архетип Человека", "Хранительница после утраты, чёрный покров силы, жизнь по ту сторону союза."),
|
||||
("сирота", "Архетип Человека", "Дитя без корня, поиск рода в мире, душа, что растит себе опору сама."),
|
||||
("близнец", "Архетип Человека", "Парность судьбы, зеркало рядом, урок «я» и «другой» как одно."),
|
||||
("двойник", "Архетип Человека", "Тень, ходящая вашим лицом, встреча с собой в чужой плоти."),
|
||||
("жрица", "Архетип Человека", "Служительница тайны, уста оракула, женщина порога меж мирами."),
|
||||
("рыцарь", "Архетип Человека", "Обет служения, клинок чести, сила, преклонившаяся перед высшим."),
|
||||
]
|
||||
|
||||
assert len(NEW_CORE) == 236, len(NEW_CORE)
|
||||
NEW_WORDS = [w for w, _, _ in NEW_CORE]
|
||||
assert len(NEW_WORDS) == len(set(NEW_WORDS)), "duplicate new words"
|
||||
|
||||
|
||||
def parse_existing(text: str):
|
||||
pattern = re.compile(
|
||||
r"WordItem\(\s*id:\s*(\d+),\s*word:\s*\"([^\"]+)\",\s*partOfSpeech:\s*\"([^\"]+)\","
|
||||
r"\s*frequency:\s*([0-9.]+),\s*category:\s*\"([^\"]+)\",\s*description:\s*\"([^\"]*)\",?\s*\)",
|
||||
re.S,
|
||||
)
|
||||
items = []
|
||||
for i, w, p, f, c, d in pattern.findall(text):
|
||||
items.append({
|
||||
"id": int(i),
|
||||
"word": w,
|
||||
"pos": p,
|
||||
"freq": float(f),
|
||||
"category": c,
|
||||
"desc": d,
|
||||
})
|
||||
return items
|
||||
|
||||
|
||||
def dart_escape(s: str) -> str:
|
||||
return s.replace("\\", "\\\\").replace('"', '\\"')
|
||||
|
||||
|
||||
def fmt_freq(f: float) -> str:
|
||||
if abs(f - round(f)) < 1e-9:
|
||||
return f"{f:.1f}"
|
||||
text = f"{f:.1f}"
|
||||
return text
|
||||
|
||||
|
||||
def main():
|
||||
items = parse_existing(SRC.read_text(encoding="utf-8"))
|
||||
assert len(items) == 1000, len(items)
|
||||
|
||||
existing_words = {it["word"] for it in items}
|
||||
drop = set(DROP)
|
||||
drop -= CORE
|
||||
for it in items:
|
||||
if it["pos"] in FUNC_POS:
|
||||
drop.discard(it["word"])
|
||||
|
||||
missing = drop - existing_words
|
||||
if missing:
|
||||
raise SystemExit(f"drop not in dataset: {sorted(missing)}")
|
||||
|
||||
overlap = set(NEW_WORDS) & (existing_words - drop)
|
||||
if overlap:
|
||||
raise SystemExit(f"new words collide with kept: {sorted(overlap)}")
|
||||
|
||||
kept = [it for it in items if it["word"] not in drop]
|
||||
assert len(kept) + len(NEW_CORE) == 1000, (len(kept), len(NEW_CORE), len(kept) + len(NEW_CORE))
|
||||
|
||||
by_word = {it["word"]: it for it in kept}
|
||||
new_by_word = {w: (cat, desc) for w, cat, desc in NEW_CORE}
|
||||
|
||||
core_index = {w: i for i, w in enumerate(CORE_ORDER)}
|
||||
new_index = {w: i for i, w in enumerate(NEW_WORDS)}
|
||||
|
||||
grouped = {cat: [] for cat in CAT_ORDER}
|
||||
extra_cats = []
|
||||
|
||||
def bucket(word, pos, freq, category, desc, kind):
|
||||
rec = {
|
||||
"word": word,
|
||||
"pos": pos,
|
||||
"freq": freq,
|
||||
"category": category,
|
||||
"desc": desc,
|
||||
"kind": kind, # 0 core, 1 new, 2 rest
|
||||
}
|
||||
if category not in grouped:
|
||||
grouped[category] = []
|
||||
extra_cats.append(category)
|
||||
grouped[category].append(rec)
|
||||
|
||||
for w in CORE_ORDER:
|
||||
it = by_word[w]
|
||||
bucket(it["word"], it["pos"], it["freq"], it["category"], it["desc"], 0)
|
||||
|
||||
for w, cat, desc in NEW_CORE:
|
||||
bucket(w, "существительное", 99.0, cat, desc, 1)
|
||||
|
||||
for it in kept:
|
||||
if it["word"] in CORE:
|
||||
continue
|
||||
bucket(it["word"], it["pos"], it["freq"], it["category"], it["desc"], 2)
|
||||
|
||||
def sort_key(rec):
|
||||
if rec["kind"] == 0:
|
||||
return (0, core_index[rec["word"]])
|
||||
if rec["kind"] == 1:
|
||||
return (1, new_index[rec["word"]])
|
||||
return (2, rec["word"])
|
||||
|
||||
ordered = []
|
||||
for cat in CAT_ORDER + extra_cats:
|
||||
recs = grouped.get(cat, [])
|
||||
recs.sort(key=sort_key)
|
||||
ordered.extend(recs)
|
||||
|
||||
assert len(ordered) == 1000, len(ordered)
|
||||
words = [r["word"] for r in ordered]
|
||||
assert len(words) == len(set(words))
|
||||
|
||||
lines = [
|
||||
"// AUTO-GENERATED: 1000 Oracle & Divination Russian Words Dataset (000 to 999)",
|
||||
"// Sacred Lexicon with Balanced Polarities, Archetypes, and Symbolic Interpretations",
|
||||
"// Grouped by category. Function words kept for allegory; names/bureaucracy replaced.",
|
||||
"import '../models/word_model.dart';",
|
||||
"",
|
||||
"const List<WordItem> kRussianTop1000Words = [",
|
||||
]
|
||||
for idx, rec in enumerate(ordered):
|
||||
lines.append(" WordItem(")
|
||||
lines.append(f" id: {idx},")
|
||||
lines.append(f" word: \"{dart_escape(rec['word'])}\",")
|
||||
lines.append(f" partOfSpeech: \"{dart_escape(rec['pos'])}\",")
|
||||
lines.append(f" frequency: {fmt_freq(rec['freq'])},")
|
||||
lines.append(f" category: \"{dart_escape(rec['category'])}\",")
|
||||
lines.append(f" description: \"{dart_escape(rec['desc'])}\",")
|
||||
lines.append(" ),")
|
||||
lines.append("];")
|
||||
lines.append("")
|
||||
OUT.write_text("\n".join(lines), encoding="utf-8")
|
||||
|
||||
from collections import Counter
|
||||
counts = Counter(r["category"] for r in ordered)
|
||||
print(f"Wrote {OUT} with {len(ordered)} words")
|
||||
print(f"Dropped {len(drop)}, added {len(NEW_CORE)}, kept {len(kept)}")
|
||||
print("Category counts:")
|
||||
for cat, n in counts.items():
|
||||
print(f" {n:3d} {cat}")
|
||||
leftover = sorted(w for w in DROP if w not in existing_words)
|
||||
print("leftover drop (not in file)", leftover)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user