Skip to content

SleekVortex/review_classificator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Прототип сервиса по оценке отзывов пользователей

Классификация отзывов о фильмах на тональность (позитивный/негативный), а также прогноз рейтинга для этого отзыва (от 1 до 10).

Мотивация

Задача проекта состояла в построении двух моделей:

1. Предсказания тональности.
2. Предсказания рейтинга отзыва.

А также в построении API, используя Django, которое будет принимать текст отзыва и отправльять ответ с двумя классами. Для решения подобных задач наиболее эффективным и распространенным методом является использование предобученных нейронных сетей. Одной из популярных платформ для работы с такими моделями является Hugging Face.

В качестве решения рекомендуется использовать модели на базе архитектуры BERT, например, distilbert/distilbert-base-uncased. Данная модель, доступная на Hugging Face, является широко используемой и показала себя весьма эффективной. Она подходит для англоязычным текстам и также неплохо себя показывает на небольших вычислительных мощностях.

В ходе работы было проведено дообучение модели анализа тональностей ("fine-tuning"). Процесс обучения завершился успешно, модель обучалась с высокой скоростью. Результатом стало получение Accuracy равной 0.845, при высоких значениях других метрик. Accuracy была выбрана, поскольку в обучающей выборке наблюдался полный баланс классов.

В ходе работы было проведено дообучение модели рейтинга не получилось добиться высокого качества, наилучшим результатом по макроусредненному F1 стало 0.237, F1 было выбрано, поскольку в нашем случае, наблюдался дисбаланс классов для значений рейтинга.

Кастомные нейросети

Тестировались различные виды нейросетей. Начиная от одного слоя эмбеддинга, RNN, LSTM, GRU, заканчивая полносвязными нейросетями.

Наилучшее качество на тесте показала простая модель, состоящая из слоя эмбеддинга и выходного слоя. Наилучшее Accuracy для анализа тональностей получилось 0.855, для модели рейтинга F1 = 0.312

API Django

В качестве прототипа сервиса была написана простая API, используя Django и DRF. Была описана модель прогноза текста, прописан один view-класс(с возможностью POST – запроса), серилизатор.

В качестве виртуальной машины был выбран yandex cloud. Где была создана виртуальная машина на основе Ubuntu. Проект был развернут на сервере, запущен, установлен gunicorn, nginx, настроен домен (greenatommltest.ddns.net).

API ожидает POST запрос на адрес http://greenatommltest.ddns.net/api/predict/ с передачей текста отзыва в виде JSON. Пример запроса: {"text":"The best film ever, very good, i like it"}. Пример ответа: { "text": "The best film ever, i like it", "predicted_rating": 10, "predicted_tonality": 1 } "predicted_rating": 10 – означает, что модель прогнозирует оценку 10. "predicted_tonality": 1 – означает, что модель прогнозирует позитивную тональность, в противном случае – негативную.

Результат

Предобученная модель типа DistilBERT - distilbert/distilbert-base-uncased оказалась неэффективной в нашем случае, модель обучалась значительно дольше, а по качеству была хуже.

  • Подготовлены и проанализированы данные.
  • Обучены по 2 модели классификации (кастомная и предобученная) для рейтинга и анализа тональностей.
  • Создан проект Джанго и сделан API.
  • Проект развернут на удаленном сервере.

Автор

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors