Skip to content

Ulandaev/classification_of_reviews

Repository files navigation

Review Classification Project

Содержание

Описание проекта

Проект представляет собой классификацию отзывов интернет-магазина по категориям товаров. Особенность - данные для обучения приходят без разметки, поэтому сначала используем автоматическую разметку, далее обучением более легкую модель для классификации по категориям.

Архитектура решения

Первый этап - Разметка данных с помощью 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 install

Настройка DVC для работы с данными

dvc 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 сервера
mlflow server --host 127.0.0.1 --port 8080

Обучение модели

Этап 1: Разметка данных

Перед обучением необходимо разметить исходные данные с помощью LLM:

# Запуск  разметки
python scripts/label_data.py

Входные данные:

  • data/train.csv - CSV файл с колонкой text содержащей отзывы

Выходные данные:

  • data/labeled_train.csv - размеченные данные
  • data/augmented_train.csv - аугментированные данные

Этап 2: Обучение классификатора

# Базовое обучение
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 Dashboard

дашборд:

  1. Запуск: mlflow server --host 127.0.0.1 --port 8080
  2. в браузере: http://127.0.0.1:8080

Контакты

About

ML pipeline for reviews classification for online sales

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages