Переобучение на нескольких авторах в строке: метки PARSE_VERSION 9, новая models/best (base)
docker / build (push) Successful in 43s
docker / build (push) Successful in 43s
Метки пересобраны новыми парсерами (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]>
This commit is contained in:
1 parent
8511744d3a
commit
e8035e1e9d
4 files changed
+2041
-3860
No files matched your search
@@ -10,8 +10,9 @@ kinozal / nnm-club) модель определяет:
|
||||
алиасов («HDRezka Studio» → `HDrezka`, «Ю. Сербин» → «Юрий Сербин»);
|
||||
* **18+** дорожка или нет — бинарная голова.
|
||||
|
||||
Обучено на датасете из 60 944 строк (71 339 размеченных строк из 30 401 релиза
|
||||
`data/raw` + морфологическая аугментация). Как страницы превращаются в строки и
|
||||
Обучено на датасете из 52 658 строк (69 511 размеченных строк из 30 451 релиза
|
||||
`data/raw` + морфологическая аугментация; у строки может быть несколько авторов —
|
||||
«Многоголосый (HDRezka Studio, LostFilm)» даёт обоих). Как страницы превращаются в строки и
|
||||
что было исправлено в сборщике — [docs/dataset-coverage.md](docs/dataset-coverage.md).
|
||||
Multi-task RuBERT: сравниваются `rubert-tiny2` и `ruBert-base`,
|
||||
лучшая кладётся в `models/best`.
|
||||
@@ -79,22 +80,27 @@ docs/ документация
|
||||
|
||||
## Качество
|
||||
|
||||
Held-out test (6 258 строк, группировка по релизам и текстам; после полной
|
||||
переиндексации `data/raw` 09.11.2026). Обе модели оценены на **одном и том же**
|
||||
тесте (`python -m src.runs --dirs … --refresh`):
|
||||
Held-out test (4 984 строки, группировка по релизам и текстам; метки пересобраны
|
||||
парсерами `PARSE_VERSION` 9, строки со списком студий склеены в одну с несколькими
|
||||
авторами). Все модели оценены на **одном и том же** тесте:
|
||||
|
||||
| модель | type acc | type macro-F1 | span exact | 18+ acc | lang acc | joint exact |
|
||||
|---|---|---|---|---|---|---|
|
||||
| прежняя `models/best` (02.11) | 0.949 | 0.880 | 0.643 | 1.000 | 0.994 | 0.615 |
|
||||
| **новая `models/best` (09.11)** | **0.976** | **0.906** | **0.674** | **1.000** | **0.995** | **0.658** |
|
||||
| модель | type acc | type macro-F1 | span exact | 18+ acc | lang acc | joint exact [95 %] | строки с 2+ авторами (438), span |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| прежняя `models/best` (09.11, один автор на строку) | 0.981 | 0.909 | 0.813 | 1.000 | 0.998 | 0.800 [0.788–0.810] | 0.011 |
|
||||
| rubert-tiny2, несколько авторов | 0.978 | 0.904 | 0.869 | 0.999 | 0.999 | 0.854 [0.843–0.863] | 0.637 |
|
||||
| **ruBert-base, несколько авторов (`models/best`)** | **0.979** | **0.976** | **0.919** | **1.000** | **0.999** | **0.903** [0.895–0.911] | **0.815** |
|
||||
|
||||
* joint exact — строка распознана полностью (тип + автор + 18+).
|
||||
* Абсолютный `span exact` ниже прежних 0.922 не потому, что модель стала хуже:
|
||||
тест теперь включает форматы, которых раньше в датасете не было (авторы из
|
||||
кодек-строк и списков, аниме-раздачи, «Язык озвучки», nnm `Аудио … (Русский,
|
||||
X)`), и в нём много одиночных имён в перечислениях. На одном и том же тесте
|
||||
новая модель лучше прежней по всем головам (+2.7 п.п. type acc, +3.1 п.п. span).
|
||||
* E2E по релизам (`tests/e2e_segmenter.py`, по 400 тестовых страниц на трекер, пары
|
||||
* joint exact — строка распознана полностью (тип + все авторы + 18+); span exact
|
||||
сравнивает набор авторов строки целиком.
|
||||
* Новая `models/best` против прежней на тех же строках: исправлено 647, сломано 131
|
||||
(знаковый критерий p ≈ 1e-83). Прежняя модель часть тестовых строк видела при
|
||||
обучении, так что сравнение в её пользу.
|
||||
* Противоречивых строк (один текст — разные метки) в датасете 1.2 % вместо 20 %:
|
||||
исправлены парсеры студий (пол голоса, техпараметры, «т/к», «N-й канал»), а
|
||||
списки студий размечаются целиком. Оставшиеся расхождения между релизами
|
||||
разбираются вручную: `tools/collect.py` → «Разбор противоречий»
|
||||
(`data/text_fixes.csv`).
|
||||
* E2E по релизам (замер для модели от 09.11 с одним автором на строку) (`tests/e2e_segmenter.py`, по 400 тестовых страниц на трекер, пары
|
||||
тип + студия, precision / recall) — новая модель на тех же страницах:
|
||||
kinozal 0.805 / 0.867, rutracker 0.771 / 0.740, nnm 0.752 / 0.693; прежняя
|
||||
модель там же: 0.752 / 0.830, 0.729 / 0.700, 0.669 / 0.604. Справочно, правила:
|
||||
@@ -102,16 +108,16 @@ Held-out test (6 258 строк, группировка по релизам и
|
||||
* Сегментатор (`models/segmenter`) переобучен на расширенном наборе страниц
|
||||
(`models/segmenter_v2`, line precision 0.933 / recall 0.977), но e2e новых весов
|
||||
хуже по nnm (0.610 / 0.560) — в `models/segmenter` оставлены прежние веса.
|
||||
* `models/best-onnx` не пересобран под новую модель: `python -m src.export_onnx`.
|
||||
Паритет предыдущего экспорта — [reports/onnx_parity.md](reports/onnx_parity.md).
|
||||
* `models/best-onnx` пересобран под новую модель: паритет с PyTorch 100 % по типу,
|
||||
авторам и 18+ — [reports/onnx_parity.md](reports/onnx_parity.md).
|
||||
|
||||
## Ограничения
|
||||
|
||||
* Метки датасета сгенерированы регулярками (пайплайн deepseek-harness) — метрики
|
||||
измеряют согласование с этой разметкой; ценность модели — обобщение на новые
|
||||
формулировки без сопровождения регулярок.
|
||||
* Датасет: 71 339 строк из 30 401 релиза (kinozal 23 969 / nnm 27 092 /
|
||||
rutracker 20 278); после подготовки 60 944 строки. Покрытие страниц `data/raw`
|
||||
* Датасет: 69 511 строк из 30 451 релиза (kinozal 23 749 / nnm 26 478 /
|
||||
rutracker 19 284); после подготовки 52 658 строк (3 529 — с несколькими авторами). Покрытие страниц `data/raw`
|
||||
— 85.5 % (30 260 из 35 385); оставшиеся — почти все без озвучки (русский
|
||||
оригинал, «не требуется», музыка/сканы), см. [docs/dataset-coverage.md](docs/dataset-coverage.md).
|
||||
* Извлечение автора уверенно работает на форматах записи, представленных в
|
||||
|
||||
+1975
-3803
File diff suppressed because it is too large.
Load diff
+37
-35
@@ -1,46 +1,54 @@
|
||||
# Аудит датасета: data/labels.csv
|
||||
строк в CSV: 71339
|
||||
строк после подготовки: 60944 (train 54686 / test 6258)
|
||||
источники: {'kinozal': 15188, 'rutracker': 21303, 'nnm': 24453}
|
||||
уникальных нормализованных текстов: 30761
|
||||
групп (релиз ∪ одинаковый текст): 8743
|
||||
удалено: пустой текст 0, мусорный studio 447, не-озвучка (оригинал/субтитры) 13, отказ от озвучки 184, противоречивые дубли 123 (групп-противоречий: 100), несколько дорожек в одной строке 7, лишние повторы (> 40 одинаковых) 20649
|
||||
спан автора найден: 50477 (82.8%), не найден: 299
|
||||
аугментировано морфологических вариантов: 10513
|
||||
дорожек 18+: 1156 (из них без упоминания «18» в тексте: 27)
|
||||
язык размечен: 38352 из 60944; со строкой «Аудио» во входе: 30844; классы: {'RUS': 36243, 'UKR': 1978, 'ENG': 90, 'KAZ': 21, 'JPN': 20}; редкие (<20, не учатся): {'DEU': 8, 'FRA': 13, 'CHI': 3, 'BEL': 2, 'GEO': 1, 'ITA': 14, 'KOR': 1, 'LAV': 1, 'UZB': 1, 'CZE': 5, 'SPA': 7}
|
||||
строк в CSV: 69511
|
||||
строк после подготовки: 52658 (train 47674 / test 4984)
|
||||
источники: {'kinozal': 14015, 'rutracker': 17812, 'nnm': 20831}
|
||||
уникальных нормализованных текстов: 30041
|
||||
групп (релиз ∪ одинаковый текст): 8749
|
||||
удалено: пустой текст 0, мусорный studio 359, не-озвучка (оригинал/субтитры) 13, отказ от озвучки 184, противоречивые дубли 109 (групп-противоречий: 109), несколько дорожек в одной строке 7, лишние повторы (> 40 одинаковых) 20592
|
||||
несколько авторов в одной строке: склеено 5727 строк, строк с 2+ авторами 3529
|
||||
ручные решения data/text_fixes.csv: 5 текстов, метка заменена в 409 строках, выброшено 0 строк
|
||||
спан автора найден: 42489 (80.7%), не найден: 272
|
||||
аугментировано морфологических вариантов: 9711
|
||||
дорожек 18+: 1066 (из них без упоминания «18» в тексте: 25)
|
||||
язык размечен: 34038 из 52658; со строкой «Аудио» во входе: 26700; классы: {'RUS': 32125, 'UKR': 1848, 'ENG': 65}; редкие (<20, не учатся): {'DEU': 8, 'FRA': 13, 'CHI': 3, 'KAZ': 14, 'BEL': 4, 'GEO': 2, 'ITA': 5, 'KOR': 1, 'JPN': 14, 'LAV': 1, 'UZB': 1, 'CZE': 1, 'SPA': 10}
|
||||
|
||||
## Распределение translation_type
|
||||
- проф. многоголосый: 15272
|
||||
- проф. дубляж: 14484
|
||||
- авт. одноголосый: 7096
|
||||
- неизвестно: 6806
|
||||
- одноголосый: 3717
|
||||
- многоголосый: 3468
|
||||
- проф. двухголосый: 3467
|
||||
- люб. многоголосый: 2171
|
||||
- двухголосый: 1557
|
||||
- люб. двухголосый: 1001
|
||||
- люб. одноголосый: 966
|
||||
- люб. дубляж: 520
|
||||
- проф. одноголосый: 410
|
||||
- авт. двухголосый: 6
|
||||
- авт. многоголосый: 3
|
||||
- проф. многоголосый: 13827
|
||||
- проф. дубляж: 13226
|
||||
- авт. одноголосый: 6463
|
||||
- неизвестно: 4918
|
||||
- проф. двухголосый: 3079
|
||||
- одноголосый: 3016
|
||||
- многоголосый: 2446
|
||||
- люб. многоголосый: 2039
|
||||
- двухголосый: 923
|
||||
- люб. двухголосый: 921
|
||||
- люб. одноголосый: 914
|
||||
- люб. дубляж: 492
|
||||
- проф. одноголосый: 387
|
||||
- авт. двухголосый: 5
|
||||
- авт. многоголосый: 2
|
||||
|
||||
## Примеры противоречий (один текст — разные типы)
|
||||
- rutracker:6111749 «(св-дубль - вгтрк) [vhs] [rus ac3 2ch 192kbps]» -> ['неизвестно', 'проф. дубляж']
|
||||
- nnm:nnm-1009875 «русский dts 5.1, 1509 kbps, 48.0 khz (двуголосый) п. гланц и» -> ['двухголосый', 'проф. двухголосый']
|
||||
- nnm:nnm-1014436 «ac-3, 48.0 khz, 2 ch, 192 kbps, cbr (russian) - двухголосый » -> ['двухголосый', 'проф. двухголосый']
|
||||
- nnm:nnm-1028054 «ac-3, 48.0 khz, 6 ch, 448 kbps (russian) - многоголосый [rus» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1058230 «ac3, 2 канала, 384 кбит/сек - русский (многоголосый закадров» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1104137 «ac-3, 48.0 khz, 1 ch, 192 kbps, cbr (русский, проф. многогол» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1104203 «lpcm, 1 ch, 1152 kbps, 48,0 khz - русский (многоголосый ''ка» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1116916 «ac3, 2 ch, 192 kbps, 48,0 khz (русский - двухголосый ''видео» -> ['двухголосый', 'проф. двухголосый']
|
||||
- nnm:nnm-1126664 «1 ac3, 2 ch, 192 kbps - русский, многоголосый (св-дубль) [ru» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1141333 «ac3, 6 ch, 448 kbps (русский - многоголосый ''d2lab'') [rus » -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1151582 «русский, aac, 2 ch, 192 kbps, 48,0 khz (многоголосый r5) med» -> ['многоголосый', 'проф. многоголосый']
|
||||
- nnm:nnm-1154096 «ac3, 2 ch, 192 kbps (русский - двухголосый ''нтв+'') [rus ac» -> ['двухголосый', 'проф. двухголосый']
|
||||
- nnm:1176495 «ac3, 2 ch, 192 kbps (русский - многоголосый ''первый канал''» -> ['многоголосый', 'проф. многоголосый']
|
||||
|
||||
## Спан не найден (примеры)
|
||||
- [rutracker] studio=«студия Кадр , по заказу РТР, 1995 г» text=«Профессиональный (дублированный): студия "Кадр" (при уч. студии "Нота"»
|
||||
- [rutracker] studio=«от : : gamekoff» text=«от [Fansub AOS]: Переводчик: gamekoff, Anku, Cracknight, Makentosh, sh»
|
||||
- [nnm] studio=«SovetRomantica 2) HorribleSubs» text=«1) GerKo, Ryuji, Tousaka Jun (01-06 + SP); SovetRomantica (07-11) 2) H»
|
||||
- [nnm] studio=«Истари Комикс + Anilibria» text=«Funimation; Истари Комикс (OVA) + Anilibria (TV)»
|
||||
- [nnm] studio=«FRT Sora & KaijuKeizer Media Info на первую серию» text=«Shift (TV) | FRT Sora & KaijuKeizer (TV + OVA) Media Info на первую се»
|
||||
- [nnm] studio=«YakuSub Studio + SovetRomantica» text=«Wakanim (TV 01-12 + OVA); YakuSub Studio (TV 01-10) + SovetRomantica (»
|
||||
- [nnm] studio=«Zottig & Daidzobu» text=«Zottig (Teisoku) & Daidzobu (Aragami Fansubs)»
|
||||
- [rutracker] studio=«Ancord & Noir Ancord» text=«Ancord & Noir (01-35) Ancord (36+)»
|
||||
- [rutracker] studio=«Правильный от студии ПЭ http» text=«Любительский (Гоблинa, "Правильный от студии "Полный ПЭ" http://www.op»
|
||||
- [rutracker] studio=«Тот самый с кассет» text=«Профессиональный (полное дублирование) + Aвторский перевод А.Михалёва »
|
||||
@@ -48,10 +56,4 @@
|
||||
- [rutracker] studio=«но его довольно часто встречал» text=«Любительская (одноголосая) - озвучника не помню как зовут, но его озву»
|
||||
- [rutracker] studio=«absurd95 & Eladiel» text=«absurd95 (м.) & Eladiel (ж.)»
|
||||
- [rutracker] studio=«Доп.инфо о : Инна Королева и Петр Гланц» text=«Профессиональный (двухголосый закадровый) Доп.инфо о переводе: Инна Ко»
|
||||
- [rutracker] studio=«Persona99 ^_^» text=«Persona99 (одноголосое закадровое женское) ^_^»
|
||||
- [rutracker] studio=«Доп.инфо о НТВ+» text=«Профессиональный (двухголосый закадровый) Доп.инфо о переводе НТВ+»
|
||||
- [rutracker] studio=«Доп.инфо о НТВ+» text=«Профессиональный (многоголосый закадровый) Доп.инфо о переводе НТВ+»
|
||||
- [rutracker] studio=«эп. 1-9 , эп. 10-13» text=«эп. 1-9 [YakuSub Studio], эп. 10-13 [Advantage]»
|
||||
- [rutracker] studio=«Кубик в кубе на ознакомительный день и преображение дома. На Банан не требуется» text=«Профессиональный (двухголосый, закадровый) Кубик в кубе на ознакомител»
|
||||
- [rutracker] studio=«версия 2015» text=«Одноголосый закадровый Александр Герусов, версия озвучки 2015»
|
||||
- [rutracker] studio=«Доп.инфо о НТВ+» text=«Профессиональный (многоголосый закадровый) Доп.инфо о переводе НТВ+»
|
||||
- [rutracker] studio=«Persona99 ^_^» text=«Persona99 (одноголосое закадровое женское) ^_^»
|
||||
@@ -1,9 +1,10 @@
|
||||
# ONNX parity (test split)
|
||||
|
||||
- строк: 645
|
||||
- модель: models/best / model.onnx (711.2 MB)
|
||||
- строк: 2000
|
||||
- совпадение класса типа: 1.0000
|
||||
- совпадение текста спана: 1.0000
|
||||
- совпадение флага 18+: 1.0000
|
||||
- макс. расхождение type_logits: 4.29e-06
|
||||
- макс. расхождение type_logits: 2.57e-05
|
||||
|
||||
Вердикт: **OK** (≥99% все критерии)
|
||||
Reference in new issue
Block a user