Проект по распознаванию эмоций в тексте, выполнен в рамках My First Data Project для поступления в ИТМО.
Link to Github/etc: https://gitlab.com/ViktorVlasov/mfdp-sentiment
Задача анализа эмоционального окраса диалогов с оператором тех.поддержки. В качестве решения предлагается функция как сервис, т.е
Такой сервис может облегчить решение задач сегментации клиентского негатива и оценку динамики тональности диалогов.
Итоговый датасет является объединением нескольких наборов данных: "cedr", "ok_ml_cup", "dairai_emotions" и "emotions_go". Некоторые из них - "dairai_emotions" и "emotions_go" - изначально были на английском языке и были переведены на русский с помощью API Yandex Translate. Размер датасета: ~100к пар предложение/эмоция.
Все артефакты, возникающие при обучении моделей (чекпоинты модели, метрики, гиперпараметры) логируются с использованием MLflow. Для развертывания MLflow в проекте используется четвертый сценарий. MLflow Tracking Server развертывается на Yandex Cloud, а для хранения артефактов используется хранилище S3. Для хранения сущностей (метрик) используется база данных PostgreSQL. Обратите внимание, что MLflow не включает модуль авторизации, поэтому в проекте была реализована авторизация через HTTP Basic authentication.
Переменные окружения с учетными данными для авторизации в MLflow хранятся в файле .env
. Для версионирования и хранения данных в проекте используется DVC S3 с s3 бакетом на VK Cloud. Учетные данные для доступа к хранилищу S3 через DVC находятся в .dvc/config.
Файлы с учетными данными (.env и .dvc/config) зашифрованы с использованием git-crypt.
Модели обучались на GPU, поэтому в качестве базового образа для Docker используется образ 11.7.0-cudnn8-devel-ubuntu20.04. Для использования gpu в докер-контейнере требуется установка nvidia-container-toolkit.
Все настраиваемые параметры для обучения модели находятся в src/configs/params.yaml. Для упрощения работы с конфигурацией используется YACS.
Дообучал различные bert модели по следующей стратегии
Группа моделей | Название моделей |
---|---|
Small Berts | cointegrated/rubert-tiny, cointegrated/rubert-tiny2 |
Multilingual Berts | 'cointegrated/LaBSE-en-ru', 'sentence-transformers/LaBSE', 'bert-base-multilingual-cased' |
DeepPavlov Berts | 'DeepPavlov/rubert-base-cased-sentence', 'DeepPavlov/rubert-base-cased-conversational', 'DeepPavlov/distilrubert-tiny-cased-conversational', 'DeepPavlov/distilrubert-base-cased-conversational' |
Sber Berts | 'sberbank-ai/sbert_large_nlu_ru', 'sberbank-ai/sbert_large_mt_nlu_ru' |
Лучше всего показала себя модель sentence-transformers/LaBSE.
Метрики:
f1: 0.832
accuracy: 0.896
Основные проблемы и выводы по обучению:
В качестве бэкенда использовал FastAPI, для фронтенда использовал фреймворк gradio
Телеграм @rhythm
Cookies help us deliver our services. By using our services, you agree to our use of cookies.