article_classifier / report.md
asriel14's picture
Upload 9 files
2f97561 verified
|
Raw History Blame Contribute Delete
3.11 kB

Отчёт по проекту: классификатор тематик научных статей

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.