- Описание проекта
- Структура проекта
- Установка и настройка
- Обучение модели и предсказание
- Мониторинг и логирование
- Контакты
Проект представляет собой классификацию отзывов интернет-магазина по категориям товаров. Особенность - данные для обучения приходят без разметки, поэтому сначала используем автоматическую разметку, далее обучением более легкую модель для классификации по категориям.
Первый этап - Разметка данных с помощью LLM:
- Используется модель
Qwen/Qwen2-1.5B-Instructдля автоматической разметки обучающей выборки - Применяется few-shot learning с примерами для улучшения качества классификации
- Выполняется аугментация данных с помощью перефразирования отзывов
Второй этап - Обучение классификатора:
- Используется легкая BERT-модель
cointegrated/rubert-tiny2, оптимизированная для русского языка - Далее обучаем с помощью LoRA
- Достигается weighted F1-score = 0.82 на валидационной выборке
Предсказание -Среднее время предсказание метки отзыва около 2-3 секунд
- бытовая техника
- обувь
- одежда
- посуда
- текстиль
- товары для детей
- украшения и аксессуары
- электроника
- нет товара
review_classifier/
├── configs/ # Конфигурационные файлы Hydra
├── classification_of_reviews/ # Исходный код проекта
│ ├── data/ # Модули работы с данными
│ ├── models/ # Модели классификации и разметки
│ ├── training/ # Логика обучения
│ ├── inference/ # Модули инференса
├── data/ # Данные проекта
├── scripts/ # Скрипты
├── models/ # Сохраненные модели
├── plots/ # Графики и визуализации
└── tests/ # Тесты
- Python ~3.12
- Git
- conda
- poetry
- DVC (для управления версиями данных)
- MLflow (для трекинга экспериментов)
Вариант 1: Настройка окружения
# Клонирование репозитория
git clone
cd classification_of_reviews
# Создание окружения
conda create -n review_classifier python=3.12
conda activate review_classifier
poetry lock
poetry installdvc init
# Добавление локального хранилища
dvc remote add -d data ~/dvc-storage/data
dvc remote add -d models ~/dvc-storage/models
# Загружаем данные в папку data далее
dvc add data/train.csv data/test.csv# Запуск MLflow сервера
mlflow server --host 127.0.0.1 --port 8080Перед обучением необходимо разметить исходные данные с помощью LLM:
# Запуск разметки
python scripts/label_data.pyВходные данные:
data/train.csv- CSV файл с колонкойtextсодержащей отзывы
Выходные данные:
data/labeled_train.csv- размеченные данныеdata/augmented_train.csv- аугментированные данные
# Базовое обучение
python scripts/train.pyВыходные данные:
- размеченные на тесте данные
Конфигурируемые параметры:
training.num_train_epochs- количество эпохtraining.learning_rate- скорость обученияtraining.per_device_train_batch_size- размер батчаmodel.peft.method- метод PEFT (lora/adapter/none)
Обучение автоматически логируется в MLflow. Для просмотра метрик:
# Открытие MLflow UI
mlflow ui --host 127.0.0.1 --port 8080Метрики:
- Weighted F1-score
- Accuracy
- Loss curves
Файл должен быть в CSV формате с колонкой text:
text
"Отличный товар, быстрая доставка"
"Качество оставляет желать лучшего"
"Размер не соответствует, пришлось вернуть"Результаты сохраняются в data/processed/test_predictions.csv:
text,predicted_category
"Отличный товар, быстрая доставка","нет товара"
"Качество оставляет желать лучшего","одежда"
"Размер не соответствует, пришлось вернуть","обувь"- Среднее время предсказания: 2-3 секунды на 1000 отзывов
дашборд:
- Запуск:
mlflow server --host 127.0.0.1 --port 8080 - в браузере:
http://127.0.0.1:8080
- почта - ulandaev.vn@phystech.edu