Все проекты
GenreNeuro
Завершён
research

GenreNeuro

Нейросетевой классификатор детских книг — 89.16% точности на 6 жанрах по текстовым описаниям

В цифрах

0%

Accuracy на тесте

+58.9pp

Прирост над бейзлайном

0

Обучающих записей

0

Жанров

Проблема

Что я решала

Каталоги русских детских книг — тысячи названий и непоследовательные жанровые теги. Библиотекари или издатели сортируют вручную или доверяют жанру, который угадал первый каталогизатор. Частотный бейзлайн, который всегда предсказывает самый частый жанр, даёт около 30% accuracy — бесполезно.
Мой подход

Как я делала

Классификатор на Keras/TensorFlow по текстовым описаниям. Архитектура намеренно простая: Embedding → GlobalAveragePooling → два Dense-слоя с Dropout. Шесть жанров: проза, сказки, приключения, познавательная, поэзия, young adult. Обучена на 9409 записях из парного scraper-проекта. Веса классов, потому что "сказок" было в 10 раз больше, чем "young adult". Токенизация справляется с русской морфологией без отдельного стеммера — эмбеддинги сами выучивают формы.

Выбор технологий

  • Keras/TensorFlowПростые архитектуры для маленьких датасетов. GlobalAveragePooling сработал лучше LSTM — меньше оверфита на 9k примерах.
  • Class weightingБез него модель предсказывает "сказки" для всего и выдаёт 40% accuracy. С ним меньшие жанры перестают быть невидимыми.
  • Dropout 0.5Агрессивная регуляризация на малом датасете. 0.3 начинало переучиваться к 20-й эпохе; 0.5 плавно выходило на плато.
Результат

Что получилось

89.16% accuracy на тесте — +58.9 процентных пункта к частотному бейзлайну. Confusion matrix показывает, какие жанры модель путает (приключения vs проза — основная пара, честно — они действительно пересекаются). Поставляется с небольшим inference-скриптом: описание на вход, жанр + confidence на выход.