# Отчёт по проекту: классификатор тематик научных статей ## 1. Задача Построен веб-сервис для классификации научных статей по title и abstract. Пользователь вводит заголовок статьи и, при наличии, abstract, после чего сервис возвращает наиболее вероятные тематики статьи и набор top-95% классов. ## 2. Почему выбран этот проект Эта задача напрямую соответствует формулировке задания и покрывает полный NLP/MLOps pipeline: сбор данных, обучение трансформера, сохранение артефактов, онлайн-инференс, веб-интерфейс и деплой. ## 3. Данные Данные были собраны через arXiv API по 8 укрупнённым направлениям: cs, econ, eess, math, physics, q-bio, q-fin, stat. На финальном запуске использовалось примерно по 1500 статей на класс. После удаления дубликатов был получен датасет примерно на 11 тысяч объектов. Для обучения использовался объединённый текст: [TITLE] {title} [ABSTRACT] {abstract} Если abstract отсутствует, сервис работает только по title. ## 4. Модель Использована модель distilbert-base-cased в постановке single-label multiclass classification. ## 5. Обучение Использовалась библиотека Hugging Face transformers и стандартный Trainer. Шаги: 1. сбор данных через arXiv API; 2. очистка текста; 3. stratified split на train и validation; 4. токенизация; 5. fine-tuning DistilBERT; 6. подсчёт метрик. ## 6. Итоговые метрики На validation были получены следующие метрики: - accuracy = 0.7380 - macro F1 = 0.7354 - weighted F1 = 0.7371 ## 7. Инференс Во время инференса: 1. текст собирается из title и abstract; 2. модель выдаёт logits; 3. применяется softmax; 4. классы сортируются по вероятности; 5. выбирается минимальный набор классов, чья суммарная вероятность достигает не менее 95%. ## 8. Интерфейс Интерфейс реализован на Streamlit. Он содержит поля для title и abstract, кнопку запуска, примеры, таблицу вероятностей, вывод top-95% классов и обработку ошибок. ## 9. Деплой Проект подготовлен для деплоя в Hugging Face Spaces через Docker.