Files
999/scripts/build_symbolic_oracle_data.py
T

276 lines
26 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script to build the sacred Oracle 999 dataset with strict duality coverage
and filtering of non-relevant bureaucratic/mundane terms.
"""
import urllib.request
import zipfile
import io
import json
print("Loading frequency dictionary...")
try:
url = 'http://dict.ruslang.ru/Freq2011.zip'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
content = urllib.request.urlopen(req, timeout=10).read()
z = zipfile.ZipFile(io.BytesIO(content))
text = z.read('freqrnc2011.csv').decode('utf-8')
lines = text.strip().split('\n')[1:]
entries = []
for line in lines:
parts = line.strip().split('\t')
if len(parts) >= 3:
lemma, pos, freq = parts[0], parts[1], float(parts[2])
entries.append((lemma, pos, freq))
entries.sort(key=lambda x: x[2], reverse=True)
print(f"Loaded {len(entries)} raw entries from RNC.")
except Exception as e:
print(f"Fallback to internal parsing: {e}")
entries = []
pos_map = {
's': 'существительное',
'v': 'глагол',
'a': 'прилагательное',
'adv': 'наречие',
'spro': 'местоимение',
'apro': 'местоименное прил.',
'pr': 'предлог',
'conj': 'союз',
'part': 'частица',
'num': 'числительное',
'intj': 'междометие',
'parenth': 'вводное слово',
'advpro': 'наречие-местоимение',
'praed': 'предикатив',
}
category_map = {
's': 'Образ / Архетип',
'v': 'Действие / Трансформация',
'a': 'Свойство / Качество',
'adv': 'Вектор / Обстоятельство',
'spro': 'Фокус сознания',
'apro': 'Определение',
'pr': 'Связь / Направление',
'conj': 'Узел / Отношение',
'part': 'Импульс / Оттенок',
'num': 'Числовой код',
'intj': 'Всплеск энергии',
'parenth': 'Знак внимания',
'advpro': 'Направление',
'praed': 'Состояние бытия',
}
# Words to unconditionally exclude as non-relevant bureaucratic/mundane noise
banned_mundane_words = {
'мама', 'папа', 'немец', 'журнал', 'газета', 'государство', 'правительство',
'министр', 'советский', 'район', 'область', 'программа', 'орган', 'власть',
'бюджет', 'организация', 'партия', 'проект', 'экономика', 'цена', 'сумма',
'рынок', 'продукция', 'предприятие', 'институт', 'договор', 'служба',
'структура', 'сфера', 'элемент', 'объект', 'субъект', 'система', 'депутат',
'билет', 'метр', 'тонна', 'директор', 'университет', 'рубль', 'доллар',
'процент', 'километр', 'килограмм', 'автобус', 'телевизор', 'телефон',
'квартира', 'кабинет', 'документ', 'паспорт', 'секретарь', 'статья',
'заседание', 'комитет', 'сектор', 'факультет', 'администрация', 'прокуратура',
'миллион', 'миллиард', 'руководство', 'отдел', 'управление', 'аппарат',
'процесс', 'уровень', 'информация', 'проблема', 'вопрос' # generalized filler
}
# Mandatory sacred pairs and polarities (Dualities)
sacred_dualities = [
# Element & cosmic polarities
('огонь', 'существительное', 's', 'Образ / Архетип', 'Очищающее пламя, страсть, трансформация, разрушение иллюзий и горение духа.'),
('вода', 'существительное', 's', 'Образ / Архетип', 'Поток эмоций, интуиция, глубинная память, очищение и способность огибать любые преграды.'),
('воздух', 'существительное', 's', 'Образ / Архетип', 'Мысль, свобода, дыхание жизни, свежее вдохновение и легкость перемен.'),
('земля', 'существительное', 's', 'Образ / Архетип', 'Опора, материализация намерений, устойчивость, терпение и накопление сил.'),
('свет', 'существительное', 's', 'Образ / Архетип', 'Истина, осознанность, рассеяние тьмы, откровение и ясность пути.'),
('тьма', 'существительное', 's', 'Образ / Архетип', 'Скрытый потенциал, неизведанное, время вызревания плода и глубокого внутреннего погружения.'),
('день', 'существительное', 's', 'Образ / Архетип', 'Проявленное действие, ясность видения, активность и солнечная энергия.'),
('ночь', 'существительное', 's', 'Образ / Архетип', 'Пространство тайн, мир подсознания, сновидений и сокровенного покоя.'),
('утро', 'существительное', 's', 'Образ / Архетип', 'Пробуждение, закладка нового семени, свежесть сил и чистый лист судьбы.'),
('вечер', 'существительное', 's', 'Образ / Архетип', 'Подведение итогов, успокоение страстей, созревание мудрости и переход.'),
('север', 'существительное', 's', 'Образ / Архетип', 'Хладная ясность разума, испытание на прочность, кристаллизация духа и несгибаемая воля.'),
('юг', 'существительное', 's', 'Образ / Архетип', 'Пламя страсти, тепло плодородия, буйный расцвет жизненных сил и щедрость природы.'),
('восток', 'существительное', 's', 'Образ / Архетип', 'Зарождение света, исток вдохновения, духовное озарение и начало странствия.'),
('запад', 'существительное', 's', 'Образ / Архетип', 'Закат дневного светила, интеграция опыта, сбор плодов и переход в глубину.'),
('небо', 'существительное', 's', 'Образ / Архетип', 'Высший дух, трансцендентный покой, благословение свыше и безграничность сознания.'),
('бездна', 'существительное', 's', 'Образ / Архетип', 'Первозданный хаос, океан непроявленного, скрытые глубины бессознательного.'),
('верх', 'существительное', 's', 'Образ / Архетип', 'Восхождение к пику, победа над инерцией, раскрытие высшего «Я».'),
('низ', 'существительное', 's', 'Образ / Архетип', 'Заземление, испытание материей, корни бытия и опора на фундамент.'),
('высота', 'существительное', 's', 'Образ / Архетип', 'Широкий кругозор, непривязанность к мелочам, масштабный взгляд с вершины.'),
('глубина', 'существительное', 's', 'Образ / Архетип', 'Сокровенная суть, сокрытые истоки причин, проникновение за пределы внешней формы.'),
('порядок', 'существительное', 's', 'Образ / Архетип', 'Космическая структура, закон гармонии, дисциплина и выверенность каждого шага.'),
('хаос', 'существительное', 's', 'Образ / Архетип', 'Творческая энтропия, разрушение жестких рамок, плодородная почва для рождения нового.'),
('жизнь', 'существительное', 's', 'Образ / Архетип', 'Вечный ток бытия, непрерывное развитие, витальная энергия и способность к исцелению.'),
('смерть', 'существительное', 's', 'Образ / Архетип', 'Великая трансформация, завершение цикла, освобождение от старой формы ради перерождения.'),
('рождение', 'существительное', 's', 'Образ / Архетип', 'Появление на свет нового замысла, свежий импульс жизни, невинность начала.'),
('угасание', 'существительное', 's', 'Образ / Архетип', 'Сворачивание отжившего, тихий отход в тень, освобождение места для нового ростка.'),
('начало', 'существительное', 's', 'Образ / Архетип', 'Священная нулевая точка, момент посева, готовность ступить на неизвестную тропу.'),
('конец', 'существительное', 's', 'Образ / Архетип', 'Фиксация кармического урока, закрытие врат, подведение окончательной черты.'),
('добро', 'существительное', 's', 'Образ / Архетип', 'Созидательная любовь, бескорыстная помощь, свет, умножающий гармонию мира.'),
('зло', 'существительное', 's', 'Образ / Архетип', 'Разрушение гармонии, испытание тьмой, зеркало эгоизма, требующее осознания.'),
('истина', 'существительное', 's', 'Образ / Архетип', 'Непреложная реальность духа, чистое видение без искажений и проекций.'),
('ложь', 'существительное', 's', 'Образ / Архетип', 'Иллюзия, морок, самообман, уводящий от истинного пути и требующий разоблачения.'),
('сила', 'существительное', 's', 'Образ / Архетип', 'Внутренняя мощь, ресурсность, способность преодолевать сопротивление и созидать.'),
('слабость', 'существительное', 's', 'Образ / Архетип', 'Уязвимость, истощение ресурсов, знак необходимости остановиться и восстановить баланс.'),
('любовь', 'существительное', 's', 'Образ / Архетип', 'Высшая связующая сила вселенной, растворение эго, целительный свет и благословение.'),
('ненависть', 'существительное', 's', 'Образ / Архетип', 'Огонь отторжения, разрушительная привязанность к обиде, требующая исцеления сердца.'),
('мир', 'существительное', 's', 'Образ / Архетип', 'Гармония противоположностей, согласие, время созидания и спокойного процветания.'),
('война', 'существительное', 's', 'Образ / Архетип', 'Столкновение сил, кризис, проверка на стойкость и необходимость отстаивать свои ценности.'),
('свобода', 'существительное', 's', 'Образ / Архетип', 'Полет духа, отсутствие внутренних оков, осознанный выбор своего предназначения.'),
('плен', 'существительное', 's', 'Образ / Архетип', 'Зависимость от обстоятельств или чужой воли, кармический урок терпения и поиска выхода.'),
('дух', 'существительное', 's', 'Образ / Архетип', 'Бессмертная искра сознания, высший разум, связь с Божественным Источником.'),
('тело', 'существительное', 's', 'Образ / Архетип', 'Священный храм души, материальный проводник опыта, чувствительный барометр правды.'),
('явь', 'существительное', 's', 'Образ / Архетип', 'Проявленный мир плотных форм, пространство практических действий и проверки истинности.'),
('сон', 'существительное', 's', 'Образ / Архетип', 'Послание бессознательного, предвидение, состояние растворения иллюзий плотного мира.'),
('память', 'существительное', 's', 'Образ / Архетип', 'Связь с корнями, интеграция прошлого опыта, уважение к урокам судьбы.'),
('забвение', 'существительное', 's', 'Образ / Архетип', 'Очищение ментального поля, отпускание груза прошлых обид, целительный покой пустоты.'),
('пустота', 'существительное', 's', 'Образ / Архетип', 'Первозданная Шуньята, священный вакуум, бесконечный потенциал до начала творения.'),
('полнота', 'существительное', 's', 'Образ / Архетип', 'Изобилие бытия, зрелость плодов, ощущение целостности и насыщенности энергией.'),
('вход', 'существительное', 's', 'Образ / Архетип', 'Погружение в новый опыт, готовность переступить порог и принять вызовы нового мира.'),
('выход', 'существительное', 's', 'Образ / Архетип', 'Освобождение из лабиринта, завершение этапа, прорыв к свету сквозь преграды.'),
('друг', 'существительное', 's', 'Образ / Архетип', 'Родственная душа, зеркало верности, соратник в духовных поисках.'),
('враг', 'существительное', 's', 'Образ / Архетип', 'Катализатор роста, безжалостное зеркало слабостей, стимул к укреплению духа.'),
('чистота', 'существительное', 's', 'Образ / Архетип', 'Кристальная прозрачность намерений, незапятнанность духа, источник благодати.'),
('скверна', 'существительное', 's', 'Образ / Архетип', 'Ментальное или кармическое загрязнение, яд сомнений, требующий очищения огнем или водой.'),
('дар', 'существительное', 's', 'Образ / Архетип', 'Благодать, неожиданная помощь свыше, талант, требующий бескорыстной отдачи.'),
('жертва', 'существительное', 's', 'Образ / Архетип', 'Осознанный отказ от малого ради великого, священный акт освобождения от привязанности.'),
('тайна', 'существительное', 's', 'Образ / Архетип', 'Сокровенное знание, скрытый замысел судьбы, требующий благоговения и терпения.'),
('откровение', 'существительное', 's', 'Образ / Архетип', 'Внезапное снятие завесы, прямое постижение истины, озарение высшим светом.'),
('тишина', 'существительное', 's', 'Образ / Архетип', 'Пространство зарождения истины, глубокий покой, слух, обращенный внутрь себя.'),
('зов', 'существительное', 's', 'Образ / Архетип', 'Пробуждение души, импульс к началу пути, зов предназначения, требующий ответа.'),
('ключ', 'существительное', 's', 'Образ / Архетип', 'Разгадка тайны, решение проблемы, доступ к закрытым знаниям и ресурсам.'),
('замок', 'существительное', 's', 'Образ / Архетип', 'Запечатанная дверь, преграда для непосвященных, проверка чистоты намерений.'),
('мать', 'существительное', 's', 'Образ / Архетип', 'Первозданное Лоно, безусловное принятие, рождение формы и защита.'),
('отец', 'существительное', 's', 'Образ / Архетип', 'Закон, Высшая Воля, структура и духовный ориентир.'),
('мудрец', 'существительное', 's', 'Образ / Архетип', 'Зрелость понимания, созерцание без суждений, хранитель сокровенного знания.'),
('безумец', 'существительное', 's', 'Образ / Архетип', 'Священный шут, спонтанный выход за рамки догм, разрыв шаблонов и шаг в неизвестность.'),
('иностранец', 'существительное', 's', 'Образ / Архетип', 'Встреча с Неведомым, выход за рамки привычного мира, чужеродный взгляд и урок адаптации.'),
('летопись', 'существительное', 's', 'Образ / Архетип', 'Скрижали судьбы, память времени, фиксация уроков и кармических связей.'),
('вестник', 'существительное', 's', 'Образ / Архетип', 'Внезапное знамение, озарение, знак свыше о скорых переменах.'),
('сокровище', 'существительное', 's', 'Образ / Архетип', 'Истинная ценность, духовный дар, скрытый потенциал души.'),
('обитель', 'существительное', 's', 'Образ / Архетип', 'Внутреннее святилище, безопасность, сокровенный покой и восстановление сил.'),
('чертог', 'существительное', 's', 'Образ / Архетип', 'Пространство принятия высших решений, тайный совет и концентрация воли.'),
('печать', 'существительное', 's', 'Образ / Архетип', 'Нерушимый завет, закрепленный выбор, знак судьбы.'),
('страж', 'существительное', 's', 'Образ / Архетип', 'Граница между мирами, защита священного, проверка готовности к переходу.'),
]
symbolic_custom_dict = {w[0]: w[4] for w in sacred_dualities}
top_1000 = []
seen = set()
# 1. First add ALL sacred dualities and core archetypes
for item in sacred_dualities:
w, pos, raw_pos, cat, desc = item
if w not in seen:
seen.add(w)
top_1000.append({
'baseId': len(top_1000),
'word': w,
'pos': pos,
'raw_pos': raw_pos,
'category': cat,
'freq': 99.0,
'desc': desc,
})
print(f"Added {len(top_1000)} sacred dualities and core archetypes.")
# 2. Fill the remaining spots from frequency list, filtering out all banned mundane/bureaucratic terms
for lemma, raw_pos, freq in entries:
w = lemma.strip().lower()
if not w or len(w) == 0:
continue
if w in banned_mundane_words:
continue
if w in seen:
continue
seen.add(w)
pos = pos_map.get(raw_pos, raw_pos)
cat = category_map.get(raw_pos, 'Сакральный символ')
top_1000.append({
'baseId': len(top_1000),
'word': w,
'pos': pos,
'raw_pos': raw_pos,
'category': cat,
'freq': round(freq, 1),
'desc': None,
})
if len(top_1000) == 1000:
break
print(f"Total curated sacred lexicon: {len(top_1000)} words.")
def generate_symbolic_desc(word, pos_ru, raw_pos, custom_desc):
if custom_desc:
return custom_desc
if word in symbolic_custom_dict:
return symbolic_custom_dict[word]
if raw_pos == 's':
return f"Сакральный символ («{word}»): архетипический образ в поле судьбы. Олицетворяет ключевую сферу кристаллизации вашего опыта в текущем вопросе."
elif raw_pos == 'v':
return f"Вектор трансформации («{word}»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва."
elif raw_pos == 'a':
return f"Качество энергии («{word}»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или качество для проявления."
elif raw_pos == 'adv' or raw_pos == 'advpro':
return f"Модус судьбы («{word}»): указатель темпа и характера развертывания событий. Показывает, как именно раскрывается ситуация."
elif raw_pos == 'spro' or raw_pos == 'apro':
return f"Фокус осознания («{word}»): точка концентрации воли. Указывает, на какой аспект направлена главная энергия расклада."
elif raw_pos == 'pr':
return f"Вектор связи («{word}»): пространственно-временная направленность силы между элементами вашей ситуации."
elif raw_pos == 'conj':
return f"Узел отношений («{word}»): принцип соединения явлений, показывающий характер перехода между причиной и следствием."
elif raw_pos == 'part':
return f"Импульс модальности («{word}»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания."
elif raw_pos == 'num':
return f"Числовой код («{word}»): сакральная мера количества, циклов или порядка проявления событий."
else:
return f"Символический ключ («{word}»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления."
dart_lines = []
dart_lines.append("// AUTO-GENERATED: 1000 Oracle & Divination Russian Words Dataset (000 to 999)")
dart_lines.append("// Sacred Lexicon with Balanced Polarities, Archetypes, and Symbolic Interpretations")
dart_lines.append("import '../models/word_model.dart';\n")
dart_lines.append("const List<WordItem> kRussianTop1000Words = [")
for idx, item in enumerate(top_1000):
w = item['word']
pos = item['pos']
raw_pos = item['raw_pos']
cat = item['category']
freq = item['freq']
desc = generate_symbolic_desc(w, pos, raw_pos, item['desc'])
w_clean = w.replace('"', '\\"')
pos_clean = pos.replace('"', '\\"')
cat_clean = cat.replace('"', '\\"')
desc_clean = desc.replace('"', '\\"')
dart_lines.append(" WordItem(")
dart_lines.append(f" id: {idx},")
dart_lines.append(f" word: \"{w_clean}\",")
dart_lines.append(f" partOfSpeech: \"{pos_clean}\",")
dart_lines.append(f" frequency: {freq},")
dart_lines.append(f" category: \"{cat_clean}\",")
dart_lines.append(f" description: \"{desc_clean}\",")
dart_lines.append(" ),")
dart_lines.append("];\n")
with open('lib/data/words_data.dart', 'w', encoding='utf-8') as f:
f.write('\n'.join(dart_lines))
print("Wrote lib/data/words_data.dart successfully with 1000 curated items!")