Метки пересобраны новыми парсерами (collect.py build --relabel): 69 511 строк из 30 451 релиза;
после prepare_data 52 658 строк, 3 529 с несколькими авторами, 5 ручных решений применены.
Новая models/best (ruBert-base) на общем тесте 4 984 строк: joint exact 0.903 против 0.800 у
прежней, span exact 0.919 против 0.813, type macro-F1 0.976 против 0.909; строки с 2+ авторами —
span 0.815 против 0.011. Прежняя модель — models/best_backup_20261109_164800. ONNX пересобран,
паритет 100 %.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Переразбор всех страниц data/raw: legacy-страницы импорта, форматы префиксов ([*]Перевод (1):, Озвучка:, №2, диапазоны), дорожки только в строках «Аудио» (в т.ч. «(Русский, X)», «| Rus | Звук: …»), «Язык озвучки», несколько студий в одной строке, студия без типа. Кодек-строки: «Аудио #N Русский:», «Аудио pic RUS:», «Звук N:», «Аудиодорожка 01:», кириллические АVO/МVO. «Авторский» без числа голосов -> авт. одноголосый, «двугоголосый». Чистка студий: языки, кодеки, «по заказу», «в составе контейнера», отказы от озвучки.
Итог: страниц с метками 30 260 (85.5 %), страниц с дорожкой без меток 1 259 -> 223; data/pages 30 444; после prepare_data 60 944 строки (train 54 686 / test 6 258).
Новый tools/coverage_audit.py + reports/coverage_audit.md, docs/dataset-coverage.md. Переобучен models/best (base): на общем тесте type acc 0.976 против 0.949 у прежней, span 0.674 против 0.643; e2e kinozal 0.805/0.867, rt 0.771/0.740, nnm 0.752/0.693.
Переобучен после исправления парсера меток (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]>