Переобучен после исправления парсера меток (rt_parse): раздачи rutracker с пустым
«Перевод:» и списком дорожек ниже получили метки, в том числе вручную добавленные
6919056 и 6927571. Строки такого списка у нового сегментатора 0.94–1.00
(у прежнего 0.004–0.12); на 6919056 пайплайн с реальными весами даёт
segmenter=model, 4 дорожки, без segmenter_warning.
- docker-models/models/segmenter: новые веса (Git LFS)
- data: labels.csv, manual_ids.txt, meta.csv; reports/data_audit.md
- tests: 286 ok
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
tools/audit_tracks.py и reports/tracks_audit.md — аудит всех дорожек
техданных по data/raw с планом. Пункт 1 плана: harvest_core.codec_line_rows
добавляет студии из строк «Аудио 2: AC3 … (MVO, LostFilm)», «Аудио Rus: … |
TVShows» (studio_source=codec), которых нет среди строк релиза; тот же шаг
в tools/relabel_studios.py (повторный запуск ничего не добавляет).
labels.csv: +6 428 строк в 2 862 релизах (kinozal 3 444, nnm 1 609,
rutracker 1 375), со студией 29 331 -> 35 759. tests/e2e_segmenter.py:
модель через E2E_MODEL.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* harvest_core.nnm_part_studio: студия из части строки «Перевод:» nnm
(«Дублированный (Невафильм)», «… - Jaskier»); раньше такие строки шли с
«(не указана)», и модель училась не извлекать студию даже из
«Дублированный (Пифагор)». tech-строки со студиями больше не
выбрасываются, если на странице нет строк «Аудио N» с именами.
* harvest_core.kz_title_rows: kinozal, студии из заголовка «ПМ (LostFilm,
HDrezka Studio)», которых нет на странице; вход — сегмент как у сервиса,
строка «Аудио Rus: … | Студия» — в audio_raw.
* tools/relabel_studios.py — то же по готовому labels.csv без пересборки
страниц; применено к data/labels.csv: со студией 22 061 -> 29 331 строк
(nnm +3 051, kinozal +4 219 строк в 3 007 релизах); prepare_data:
39 418 строк, спан студии 24 004 -> 31 214.
* e2e: эталон как aggregate — «тип без студии» убирается, если у типа есть
студия.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Docker: Dockerfile (CPU), compose с FlareSolverr, настройка через DUB_* переменные,
токен доступа к /predict, tools/pack_models.py, workflow Gitea Actions, docs/docker.md
- Модель грузится офлайн (config.json рядом с весами); общий код вынесен в src/spans.py,
сервису не нужны sklearn/matplotlib/pandas
- Обучение: профили tiny2/base/large/modern, запуски в models/runs, реестр и честное
сравнение на одной тестовой выборке (src/runs.py), пункт меню «Модели»
- Датасет: язык и аудио-параметры дорожек, 18+ по строкам «Аудио», ручные метки по ссылкам,
переиндексация сохранённого HTML, параллельная сборка, сбалансированная выборка
- Тексты страниц (data/pages) больше не хранятся в git
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>