Проект по распознаванию эмоций в тексте, выполнен в рамках 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
Our website uses cookies, including web analytics services. By using the website, you consent to the processing of personal data using cookies. You can find out more about the processing of personal data in the Privacy policy