Files
grabber-ai/docs/dataset.md
T

5.9 KiB

Датасет

Откуда берётся

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»).