73 lines
5.9 KiB
Markdown
73 lines
5.9 KiB
Markdown
# Датасет
|
|
|
|
## Откуда берётся
|
|
|
|
`data/labels.csv` — снимок датасета, собранного пайплайном
|
|
`deepseek-harness/default-workspace/dataset.py`: системный Chrome по CDP
|
|
обходит релизы трекеров, из страницы извлекается вкладка описания (kinozal),
|
|
пост (rutracker, nnm), регулярки разбирают строки дорожек, а имена авторов
|
|
канонизируются словарём алиасов. **Метки автоматически сгенерированы
|
|
регулярками** — модель учится воспроизводить эту разметку и обобщать её на
|
|
новые формулировки.
|
|
|
|
Снимок: 3286 строк, 3 источника — rutracker 1660, nnm 1549, kinozal 77.
|
|
После подготовки: 3284 строки + 458 аугментированных морфологических
|
|
вариантов («многоголосое», «дублированное» и т.п.), всего 3742 обучающих
|
|
примера. Файлы `*_entries.csv` / `*_releases.csv` — те же данные в нарезке
|
|
по источникам и по релизам; модель используется только `labels.csv`.
|
|
|
|
## Колонки labels.csv
|
|
|
|
| Колонка | Смысл | Использование моделью |
|
|
|---|---|---|
|
|
| `source`, `release_id` | трекер и id релиза | группировка сплитов |
|
|
| `raw` | строка дорожки целиком (с префиксом «Перевод:»/«Аудио N:») | **вход** (после снятия префикса) |
|
|
| `translation_type` | тип озвучки | **метка 1** |
|
|
| `studio` | автор («(не указана)» если нет) | **метка 2** (спан в тексте) |
|
|
| `age_18`, `note` | флаг/пометка 18+ | **метка 3** |
|
|
| `role_raw` | скобочная часть / конкретный тип из перечисления | вход для nnm tech-строк |
|
|
| остальные (`ru_title`, `codec`, …) | контекст релиза | не используются |
|
|
|
|
## Форматы входа по источникам
|
|
|
|
* **rutracker**: `raw` = тело после «Перевод N:» («Профессиональный
|
|
(двухголосый закадровый) tycoon»); несколько дорожек уже разнесены по строкам.
|
|
* **kinozal**: `raw` = строка целиком с префиксом («Перевод: Дублированный |
|
|
HDRezka Studio»); префикс снимается при подготовке.
|
|
* **nnm**: два вида строк — «Аудио N: Opus, 6 ch, 221 Kbps \| Русский AVO
|
|
(Дмитрий Пучков)» (автор в скобках) и «Перевод: Одноголосый, многоголосый
|
|
закадровый» (одна строка на несколько дорожек; при подготовке вместо общей
|
|
`raw` берётся `role_raw` конкретной дорожки, чтобы одинаковый текст не
|
|
получал разные метки).
|
|
|
|
## Семантика translation_type (14 классов)
|
|
|
|
Составные метки «кто делал × сколько голосов»:
|
|
|
|
* префикс: `проф.` (профессиональная), `люб.` (любительская), `авт.`
|
|
(авторская), без префикса — в тексте не указано;
|
|
* вид: `дубляж`/`дублированный`, `многоголосый`, `двухголосый`,
|
|
`одноголосый` (обычно закадровые), `неизвестно`.
|
|
|
|
Все «*неизвестно»-варианты объединены в `неизвестно`; типы «оригинал» и
|
|
«субтитры» (1–2 строки-проскока генератора) удалены.
|
|
|
|
## Аудит (reports/data_audit.md) и что с находками сделано
|
|
|
|
| Находка | Обработка |
|
|
|---|---|
|
|
| Из 3286 строк уникальных текстов ~2000, 377+ строк повторяются в разных релизах | Сплиты группируются не только по релизу, но и по тексту — одинаковые строки не попадают одновременно в train и test |
|
|
| 26 «мусорных» studio («лицензия R5», «+ вставки», «x4», суффиксы «ненормативная лексика») | Считаются «автора нет»; суффиксы дополнительно чистятся в словаре алиасов |
|
|
| Слитые дорожки (одна строка = несколько типов) | nnm решается через `role_raw`; оставшихся противоречий — 0 |
|
|
| Спан автора не найден в тексте | 11 строк: автор в метке есть, но в тексте написан иначе; BIO-разметка для них пустая |
|
|
| 18+ | 156 строк (в 1 строке флаг есть только в note, в тексте не виден — недообучаемая) |
|
|
|
|
## Словарь алиасов (src/studio_norm.py)
|
|
|
|
Порт `STUDIO_ALIASES` генератора датасета: «hdrezka studio»→HDrezka,
|
|
«read head sound»→Red Head Sound, «гаврилов»→Андрей Гаврилов, инициалы
|
|
«ю. сербин»→Юрий Сербин и т.д. Поиск спана автора в тексте пробует по
|
|
порядку: точное вхождение → алиасы → фамилия/инициалы → гибкий шаблон
|
|
«слова через произвольные кавычки/разделители» (ловит «Студия «Кравец»,
|
|
LostFilm» и «SDI Media \| TV 1000»).
|