refactor(stage-2): extract hardcoded curriculum datasets into data/seeds/*.json (-3100 lines)

This commit is contained in:
2026-10-07 14:43:06 +03:00
parent 20eef2c684
commit 9072fc365a
8 changed files with 5718 additions and 3132 deletions
+23 -194
View File
@@ -56,200 +56,29 @@ PHRASAL_PARTICLES = {
"to", "together", "under", "up", "upon", "with"
}
# Curated high-frequency English phrasal verbs (CEFR A2-B2) with clean translations
CURATED_PHRASAL_VERBS: Dict[str, str] = {
# take
"take off": "взлетать; снимать (одежду); быстро уходить",
"take up": "браться за (хобби/дело); занимать (место, время)",
"take on": "брать на себя (ответственность); нанимать",
"take over": "захватывать контроль; вступать во владение",
"take in": "усваивать; приютить; обманывать",
"take out": "вынимать; приглашать (в ресторан); устранять",
"take back": "возвращать (вещь); брать свои слова назад",
"take after": "быть похожим на (родителей)",
"take apart": "разбирать на части",
# give
"give up": "сдаваться; бросать (привычку)",
"give in": "уступать, сдаваться под натиском",
"give away": "раздавать даром; выдавать (секрет)",
"give out": "раздавать; иссякать, отказывать",
"give back": "возвращать",
# get
"get along with": "ладить, быть в хороших отношениях с кем-то",
"get along": "ладить; справляться",
"get away": "убегать, уезжать в отпуск",
"get away with": "выходить сухим из воды",
"get back": "возвращаться",
"get by": "сводить концы с концами, выживать",
"get off": "выходить (из автобуса/поезда); отделываться",
"get on": "садиться (на транспорт); ладить; продолжать",
"get over": "преодолевать, оправляться (от болезни/потери)",
"get rid of": "избавляться от",
"get through": "справляться; дозваниваться",
"get up": "вставать (с постели); подниматься",
# go
"go on": "продолжать; происходить",
"go out": "выходить в свет; встречаться; гаснуть (об огне/свете)",
"go through": "проходить через, испытывать (трудности); просматривать",
"go back": "возвращаться",
"go off": "звонить (о будильнике); взрываться; портиться (о еде)",
"go over": "проверять, внимательно просматривать; повторять",
"go ahead": "начинать, продолжать; давать добро",
"go with": "сочетаться с, подходить к",
"go down": "спускаться, снижаться; входить в историю",
"go up": "подниматься, расти (о цене)",
# come
"come up with": "придумывать, предлагать (идею, решение)",
"come across": "случайно натолкнуться на, производить впечатление",
"come back": "возвращаться",
"come in": "входить",
"come out": "выходить (в свет); выясняться, обнаруживаться",
"come over": "приходить в гости; охватывать",
"come on": "давай!; появляться; начинаться",
"come up": "возникать, всплывать (о вопросе); подходить",
"come down to": "сводиться к",
# look
"look forward to": "ждать с нетерпением, предвкушать",
"look for": "искать",
"look after": "присматривать за, заботиться",
"look into": "исследовать, изучать, разбираться",
"look up": "искать (в словаре/справочнике); улучшаться",
"look up to": "уважать, брать пример с",
"look down on": "смотреть свысока, презирать",
"look out": "остерегаться, быть начеку",
"look around": "осматриваться",
# turn
"turn off": "выключать (прибор, свет, воду)",
"turn on": "включать (прибор, свет, воду)",
"turn up": "прибавлять громкость; неожиданно объявляться",
"turn down": "убавлять громкость; отклонять, отвергать",
"turn out": "оказываться; оборачиваться (результатом)",
"turn into": "превращаться в",
"turn back": "поворачивать назад, разворачиваться",
"turn over": "переворачивать; передавать",
# set
"set up": "устанавливать, организовывать, подготавливать",
"set off": "отправляться в путь; вызывать (реакцию)",
"set out": "отправляться в путь; намереваться",
# put
"put on": "надевать (одежду); включать; прибавлять в весе",
"put off": "откладывать (на потом); вызывать отвращение",
"put out": "тушить (огонь); выпускать (продукцию)",
"put up with": "мириться с, терпеть",
"put away": "убирать на место",
"put forward": "выдвигать (идею/предложение)",
# run
"run out of": "заканчиваться, исчерпать запасы",
"run out": "иссякать, заканчиваться",
"run into": "случайно встретить; сталкиваться",
"run away": "убегать, сбегать",
"run over": "переехать, сбить; повторить бегло",
# bring
"bring up": "воспитывать (детей); поднимать (тему в разговоре)",
"bring about": "вызывать, приводить к",
"bring back": "возвращать, вызывать воспоминания",
"bring in": "привлекать, вводить (закон/доход)",
# call
"call off": "отменять (встречу/мероприятие)",
"call back": "перезванивать; отзывать",
"call on": "навещать; призывать к ответу",
"call for": "требовать, предусматривать",
# carry
"carry out": "выполнять, приводить в исполнение (план/исследование)",
"carry on": "продолжать (дело/разговор)",
# break
"break down": "ломаться (о технике); терять самообладание",
"break up": "расставаться (об отношениях); распадаться",
"break into": "вламываться, незаконно проникать",
"break out": "разразиться (о войне/пожаре); сбегать (из тюрьмы)",
# fall
"fall apart": "разваливаться на куски, терпеть крах",
"fall behind": "отставать (в графике/учёбе)",
"fall for": "попасться на удочку; влюбиться по уши",
"fall out": "ссориться; выпадать",
# keep
"keep up with": "поспевать за, держаться наравне с",
"keep up": "поддерживать на том же уровне",
"keep on": "упорно продолжать",
"keep away": "держаться подальше, избегать",
# hold
"hold on": "подождать (на линии); крепко держаться",
"hold up": "задерживать; грабить",
"hold back": "сдерживать (эмоции/прогресс)",
# point
"point out": "указывать, обращать внимание на",
# figure
"figure out": "выяснить, понять, разобраться",
# find
"find out": "узнавать, выяснять (информацию)",
# show
"show up": "появляться, приходить (неожиданно)",
"show off": "выпендриваться, хвастаться",
# work
"work out": "тренироваться; решать проблему; складываться успешно",
# catch
"catch up with": "догонять, нагонять (упущенное/кого-то)",
"catch up": "догонять; наверстывать упущенное",
# check
"check in": "регистрироваться (в отеле/аэропорту)",
"check out": "выселяться; проверять, заценить",
# drop
"drop in": "заглянуть в гости без предупреждения",
"drop by": "зайти мимоходом",
"drop off": "подвезти (на машине); заснуть",
# end
"end up": "оказаться в итоге (где-то или в каком-то состоянии)",
# stand
"stand out": "выделяться, бросаться в глаза",
"stand for": "означать; выступать в защиту",
# cut
"cut down on": "сокращать потребление (сахара/расходов)",
"cut down": "срубать; сокращать",
"cut off": "отрезать, прерывать (связь)",
# fill
"fill in": "заполнять (пропуски/форму); вводить в курс дела",
"fill out": "заполнять (анкету/бланк)",
# hang
"hang out": "проводить время, тусоваться",
"hang up": "вешать телефонную трубку",
# pass
"pass away": "умирать, уходить из жизни",
"pass out": "терять сознание, отключаться",
# pick
"pick up": "подбирать; заезжать за кем-то; учить на лету",
# pull
"pull through": "справляться, выкарабкиваться (из кризиса/болезни)",
"pull over": "съехать на обочину, притормозить",
# other essentials
"back up": "поддерживать; создавать резервную копию",
"clear up": "проясняться (о погоде); убирать, наводить порядок",
"slow down": "замедляться",
"speed up": "ускоряться",
"switch on": "включать",
"switch off": "выключать",
"throw away": "выбрасывать (мусор)",
"try on": "примерять (одежду)",
"try out": "пробовать, испытывать",
"watch out": "остерегаться, беречься",
"write down": "записывать на бумаге",
"calm down": "успокаиваться",
"cheer up": "приободряться, поднимать настроение",
"make up for": "компенсировать, заглаживать вину",
"make up": "мириться; сочинять (историю); краситься",
"settle down": "остепениться; успокоиться",
"sort out": "улаживать, разбираться с проблемами",
"blow up": "взрываться; выходить из себя",
"burn down": "сгорать дотла",
"tear down": "сносить (здание)",
"wear out": "изнашиваться; утомлять",
"stick to": "придерживаться (плана/правил)",
"kick off": "начинать, давать старт",
"lock up": "запирать на замок",
"pay off": "окупаться; расплачиваться с долгами",
"count on": "рассчитывать на кого-то",
"stay up": "бодрствовать, не ложиться спать",
"speak up": "говорить громче; высказываться смело",
}
import json
from pathlib import Path
from app import config
_CURATED_PHRASAL_VERBS_CACHE: Optional[Dict[str, str]] = None
def get_curated_phrasal_verbs() -> Dict[str, str]:
global _CURATED_PHRASAL_VERBS_CACHE
if _CURATED_PHRASAL_VERBS_CACHE is None:
seeds_file = config.BASE_DIR / "data" / "seeds" / "phrasal_verbs.json"
if seeds_file.is_file():
try:
with open(seeds_file, "r", encoding="utf-8") as f:
_CURATED_PHRASAL_VERBS_CACHE = json.load(f)
except Exception:
_CURATED_PHRASAL_VERBS_CACHE = {}
else:
_CURATED_PHRASAL_VERBS_CACHE = {}
return _CURATED_PHRASAL_VERBS_CACHE
CURATED_PHRASAL_VERBS: Dict[str, str] = get_curated_phrasal_verbs()
def lemmatize_word(w: str) -> List[str]: