File size: 3,109 Bytes
2f97561
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Отчёт по проекту: классификатор тематик научных статей

## 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.