- Обучить модель на Python для классификации отзывов и присвоения тональности (положительный или отрицательный).
- Разработать веб-сервис на Django для ввода отзывов с автоматической классификацией тональности.
- Развернуть сервис в публичном доступе для использования.
Для классификации отзывов использовались текстовые данные с метками тональности: положительные (1) и отрицательные (0).
-
Очистка и обработка данных:
- Применялась векторизация текста с использованием TfidfVectorizer, чтобы преобразовать текст в числовые признаки.
stop_words='english'
— удаление стоп-слов для уменьшения шума.max_features=10000
— выбор 10 000 наиболее важных признаков (слов).- В данном классе автоматически производится предобработка текста для последующего преобразования.
- Таким образом, отзывы были представлены как векторы признаков на основе частоты и важности слов в контексте.
- Применялась векторизация текста с использованием TfidfVectorizer, чтобы преобразовать текст в числовые признаки.
-
Извлечение признаков тональности с помощью VADER:
- Применялся VADER (SentimentIntensityAnalyzer) для извлечения дополнительных признаков, таких как доля положительных и отрицательных слов.
- Эти семантические признаки помогли дополнить векторное представление отзывов.
-
Формирование финального набора данных:
- Комбинированные признаки TF-IDF и семантические признаки VADER были объединены в единую матрицу.
- Далее, данные были разделены на тренировочную и тестовую выборки в соотношении 80/20 с использованием функции
train_test_split
.
В качестве основной модели была выбрана логистическая регрессия, которая обучалась на основе комбинации TF-IDF признаков и семантических признаков.
-
Модель:
- Для обучения была выбрана модель LogisticRegression с параметром
max_iter=1000
, чтобы модель могла полностью сойтись на данных. - После обучения на тренировочной выборке, модель была протестирована на тестовой выборке, чтобы оценить её производительность.
- Для обучения была выбрана модель LogisticRegression с параметром
-
Аналоги:
- Протестированы модели RandomForest и GradientBoosting, но результаты на них не дали ожидаемого результата и были хуже, чем у логистической регрессии. Вследствие этого было принято решение об использовании LogisticRegression.
- Можно было использовать трансформеры или нейронные сети для дальнейшего улучшения качества классификации.
-
Предсказание оценки от 1 до 10:
- Было несколько вариантов решения данной задачи: обучение еще одной модели или упрощенный подход. Ввиду отсутствия подходящих данных для обучения второй модели, было принято решение делать предсказание на основе уверенности модели в положительной тональности текста.
-
Точность (Accuracy):
- Модель достигла 87.53% точности на тестовой выборке.
-
ROC-AUC:
- Показатель ROC-AUC составил 0.9467, что указывает на высокую способность модели правильно различать положительные и отрицательные отзывы.
-
Отчет по метрикам классификации:
- Precision (точность):
- Для отрицательных отзывов: 0.87.
- Для положительных отзывов: 0.88.
- Recall (полнота):
- Для отрицательных отзывов: 0.88.
- Для положительных отзывов: 0.87.
- F1-score:
- Для отрицательных отзывов: 0.88.
- Для положительных отзывов: 0.87.
- Модель показала высокие результаты, демонстрируя сбалансированную точность и полноту для обеих классов (положительные и отрицательные отзывы).
- Precision (точность):
Веб-сервис был реализован на Django и предоставляет возможность ввода отзывов с дальнейшей их автоматической классификацией:
- Пользователь вводит текст отзыва через интерфейс.
- Обученная модель классифицирует отзыв как положительный или отрицательный на основе текста.
- На основе уверенности модели в выборе делается прогноз оценки от 1 до 10.
Проект был развернут в публичный доступ на платформе Render, что позволило пользователям вводить отзывы и получать их оценку тональности.
Модель логистической регрессии с использованием TF-IDF и семантических признаков VADER показала хорошие результаты в задаче классификации отзывов. Средняя точность составила 87.53%, а показатель ROC-AUC достиг 0.9467, что говорит о надежности модели.
Проект успешно внедрен и развернут как веб-сервис, предоставляющий пользователю возможность анализа отзывов. В будущем можно рассмотреть улучшение модели за счет использования более сложных методов, таких как нейронные сети или дополнительные источники данных.