Что делает представленный скрипт?
Скрипт — это набор шагов, которые позволяют быстро оценить и подготовить датасет “Fable 5” для последующего машинного обучения. Основные задачи:
- Обучить два простейших классификатора Naive Bayes на чистом Python без сторонних библиотек;
- Сгенерировать отчёты: метрики, матрицы ошибок, топ‑токены для каждого класса;
- Сохранить артефакты (CSV, JSON, PNG) в удобную структуру;
- Создать вспомогательный поиск по ключевым словам в таблице — полезно при быстрой проверке строк.
Кому будет полезен такой подход?
Если вы работаете с «теле‑метрикой» моделей, собираете данные из интерактивных сессий и планируете построить простую baseline‑модель, данный шаблон экономит часы ручной работы. Он покрывает всё: от предобработки до готовых файлов экспорта.
Пошаговый разбор кода
1. Предобработка и проверка достаточности данных
Перед обучением скрипт отсекает строки, где output_type пустой, и проверяет, что классов минимум два и строк ≥ 30. Это защита от «плохой статистики», которая могла бы привести к ошибкам в обучении.
2. Обучение первого классификатора – предсказание output_type
- Текст из поля
contextобрезается до 12 000 символов (чтобы не перегрузить память); - Разделение на train/test происходит стратифицировано, что сохраняет равномерное представление классов;
- Классификатор PureMultinomialNB (реализация Naive Bayes) настраивается:
max_features=20000– ограничение словаря,min_df=2– игнорировать редкие токены,alpha=1.0– гладкость Лапласа.
- После обучения выводятся метрики (accuracy, precision, recall, f1), матрица ошибок и топ‑токены, которые наиболее характерны для каждого класса.
- Все результаты сохраняются в CSV/JSON в директорию
OUT_DIR.
3. Обучение второго классификатора – предсказание tool_name
Подход идентичен первому, но:
- Отбираются только строки, где
output_type == "tool_use"; - Для редких инструментов создаётся «заглушка»
__OTHER__, чтобы сохранить достаточную частоту классов; - Только 12 самых популярных инструментов учитываются как отдельные метки.
4. Инструмент быстрого поиска по ключевому слову
Функция search_rows сканирует несколько колонок (context, cot, completion, text_payload) и возвращает первые несколько совпадений с превью текста. Это удобный способ проверить, «не пропустили» ли вы важные примеры в датасете.
5. Формирование итогового отчёта
В JSON‑файле analysis_summary.json собираются сведения о датасете: количество строк, распределение классов, топ‑инструменты, статистика длины полей и ссылки на все артефакты. Кроме того, генерируется Markdown‑отчёт REPORT.md для быстрой презентации результата.
Где искать «сырой» код и данные?
Исходный репозиторий с полным набором скриптов, моделью PureMultinomialNB и инструкциями доступен на GitHub: github.com/your-org/fable5-analysis. Датасет “Fable 5” можно получить из официального источника: huggingface.co/datasets/fable5.
Практические рекомендации
- Проверяйте размер словаря. Если
vocab_sizeслишком большой, уменьшитеmax_featuresили поднимитеmin_df– экономия памяти будет значительной. - Баланс классов. При сильном дисбалансе стоит рассмотреть взвешивание классов (
class_weight) или использовать техники oversampling. - Контроль утечек. Обязательно проверьте колонку
possible_secret_anywhere– строки, содержащие потенциальные токены или ключи, следует удалить или замаскировать. - Экспорт без CoT. Если вы планируете fine‑tuning, используйте файлы
*_no_cot_chat_*.jsonl– они содержат чистый диалог без промежуточных цепочек размышлений. - Автоматизируйте CI. Добавьте шаг генерации отчётов в пайплайн, чтобы каждый новый импорт данных сразу проходил проверку качества.
Что дальше?
После того как baseline‑модель готова, вы можете:
- Протестировать более сложные алгоритмы (Logistic Regression, SVM, небольшие трансформеры);
- Подключить эмбеддинги (TF‑IDF, FastText) вместо «чистого» bag‑of‑words;
- Разработать пайплайн для активного обучения – модель будет предлагать самые «неразобранные» примеры для ручной разметки.





















