Проект по анализу и классификации токсичных комментариев с применением методов машинного обучения, обработки естественного языка (NLP), а также визуализацией результата через веб-интерфейс и контейнеризацией с помощью Docker.
Разработка модели, способной автоматически определять токсичные высказывания в текстах. Также реализован веб-интерфейс и API для практического применения модели.
- Python 3
- Pandas, scikit-learn, NLTK — анализ и обработка данных
- FastAPI — REST API для предсказаний
- Модель: Logistic Regression
- HTML / CSS / JavaScript — пользовательский веб-интерфейс
- Docker — контейнеризация приложения
- Jupyter Notebook — для анализа и обучения
- Среда: venv (изолированная Python-среда)
| Файл | Описание |
|---|---|
toxic_comments.ipynb |
Основной ноутбук с анализом данных, подготовкой и обучением моделей |
train.ipynb |
Файл, через который тестила API |
app_api.py |
FastAPI-приложение для предсказания токсичности |
labeled.csv |
Используемый размеченный датасет с токсичными/нетоксичными комментариями |
index.html |
Главная страница сайта для ввода комментария |
style.css |
Стилизация веб-интерфейса |
script.js |
JS-логика отправки запроса к API |
Dockerfile |
Файл сборки Docker-образа |
requirements.txt |
Список Python-зависимостей |
-
Импорт и очистка данных
- Загрузка
labeled.csv
- Загрузка
-
Анализ данных
- Статистика по классам (токсичный / нетоксичный)
- Визуализация распределения
-
Преобразование текста
- Использование TF-IDF векторизации
-
Обучение моделей
- Logistic Regression, Pipeline
- Оценка по метрикам: Precision, Recall
-
Сохранение/экспорт модели
- Сохранение модели через
dill
- Сохранение модели через
-
Создание API
- Построен REST API с использованием FastAPI в
app_api.py
- Построен REST API с использованием FastAPI в
-
Тестирование
- Проверка модели и API на тестовых данных
-
Создание и стилизация веб-страницы
-
Контейнеризация проекта с Docker
Разработан простой веб-сайт с полем для ввода текста. Комментарий отправляется на сервер, и результат отображается без перезагрузки страницы.
- HTML + CSS для структуры и дизайна
- JavaScript для отправки запроса к API (AJAX)
Для развёртывания проекта достаточно Docker.
docker build -t toxic-service:latest .docker run -d --name toxic-service -p 500:5000 toxic-service:latest- Точность модели: 95%
- Модель находит 22% негативных комментариев из общего числа негативных комментариев
Пример запроса к API:
curl -X POST http://127.0.0.1:5000/predict_model -H "Content-Type: application/json" -d "{\"text\":\"Я красивая\"}"Токсичный контент — серьёзная проблема в интернете. Эта система способна автоматизировать модерацию и повысить безопасность в онлайн-пространствах.
Модель на самом деле не самая сильная, бывают моменты, когда она ошибается. В планах поработать над ней еще, улучшить, применить другие модели, а также я думала о том, чтобы развернуть свой сервер.❤