Skip to content

A web service for evaluating comments (reviews) on films.

Notifications You must be signed in to change notification settings

serttyzar/FilmReview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект "FilmReview"

Цели проекта

  1. Обучить модель на Python для классификации отзывов и присвоения тональности (положительный или отрицательный).
  2. Разработать веб-сервис на Django для ввода отзывов с автоматической классификацией тональности.
  3. Развернуть сервис в публичном доступе для использования.

Шаг 1: Подготовка данных

Для классификации отзывов использовались текстовые данные с метками тональности: положительные (1) и отрицательные (0).

  1. Очистка и обработка данных:

    • Применялась векторизация текста с использованием TfidfVectorizer, чтобы преобразовать текст в числовые признаки.
      • stop_words='english' — удаление стоп-слов для уменьшения шума.
      • max_features=10000 — выбор 10 000 наиболее важных признаков (слов).
      • В данном классе автоматически производится предобработка текста для последующего преобразования.
    • Таким образом, отзывы были представлены как векторы признаков на основе частоты и важности слов в контексте.
  2. Извлечение признаков тональности с помощью VADER:

    • Применялся VADER (SentimentIntensityAnalyzer) для извлечения дополнительных признаков, таких как доля положительных и отрицательных слов.
    • Эти семантические признаки помогли дополнить векторное представление отзывов.
  3. Формирование финального набора данных:

    • Комбинированные признаки TF-IDF и семантические признаки VADER были объединены в единую матрицу.
    • Далее, данные были разделены на тренировочную и тестовую выборки в соотношении 80/20 с использованием функции train_test_split.

Шаг 2: Обучение модели

В качестве основной модели была выбрана логистическая регрессия, которая обучалась на основе комбинации TF-IDF признаков и семантических признаков.

  1. Модель:

    • Для обучения была выбрана модель LogisticRegression с параметром max_iter=1000, чтобы модель могла полностью сойтись на данных.
    • После обучения на тренировочной выборке, модель была протестирована на тестовой выборке, чтобы оценить её производительность.
  2. Аналоги:

    • Протестированы модели RandomForest и GradientBoosting, но результаты на них не дали ожидаемого результата и были хуже, чем у логистической регрессии. Вследствие этого было принято решение об использовании LogisticRegression.
    • Можно было использовать трансформеры или нейронные сети для дальнейшего улучшения качества классификации.
  3. Предсказание оценки от 1 до 10:

    • Было несколько вариантов решения данной задачи: обучение еще одной модели или упрощенный подход. Ввиду отсутствия подходящих данных для обучения второй модели, было принято решение делать предсказание на основе уверенности модели в положительной тональности текста.

Шаг 3: Оценка модели

  1. Точность (Accuracy):

    • Модель достигла 87.53% точности на тестовой выборке.
  2. ROC-AUC:

    • Показатель ROC-AUC составил 0.9467, что указывает на высокую способность модели правильно различать положительные и отрицательные отзывы.
  3. Отчет по метрикам классификации:

    • Precision (точность):
      • Для отрицательных отзывов: 0.87.
      • Для положительных отзывов: 0.88.
    • Recall (полнота):
      • Для отрицательных отзывов: 0.88.
      • Для положительных отзывов: 0.87.
    • F1-score:
      • Для отрицательных отзывов: 0.88.
      • Для положительных отзывов: 0.87.
    • Модель показала высокие результаты, демонстрируя сбалансированную точность и полноту для обеих классов (положительные и отрицательные отзывы).

Шаг 4: Разработка веб-сервиса

Веб-сервис был реализован на Django и предоставляет возможность ввода отзывов с дальнейшей их автоматической классификацией:

  • Пользователь вводит текст отзыва через интерфейс.
  • Обученная модель классифицирует отзыв как положительный или отрицательный на основе текста.
  • На основе уверенности модели в выборе делается прогноз оценки от 1 до 10.

Шаг 5: Развертывание

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

Заключение

Модель логистической регрессии с использованием TF-IDF и семантических признаков VADER показала хорошие результаты в задаче классификации отзывов. Средняя точность составила 87.53%, а показатель ROC-AUC достиг 0.9467, что говорит о надежности модели.

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

About

A web service for evaluating comments (reviews) on films.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published