DS111viktor/URFU_Software_Engineering_VK_Bots_front
0
URFUSoftwareEngineeringVKBots
Описание
VK Bot Classifier — это приложение для классификации пользователей социальной сети ВКонтакте на основе их данных и социального графа. Приложение использует машинное обучение для определения вероятности того, что аккаунт является ботом.
Возможности
- Анализ профиля пользователя ВКонтакте
- Построение социального графа (друзья и друзья друзей)
- Расчет статистических характеристик графа
- Предсказание вероятности того, что пользователь является ботом
- REST API для интеграции с другими сервисами
- Веб-интерфейс для удобного взаимодействия
Технологии
- Python 3.10
- FastAPI (REST API)
- Gradio (веб-интерфейс)
- NetworkX (анализ графов)
- Scikit-learn (машинное обучение)
- Pandas (обработка данных)
- VK API (получение данных пользователей)
Быстрый старт (облачная версия)
Перейдите по ссылке: https://huggingface.co/spaces/DS111viktor/URFUSoftwareEngineeringVKBots_front
Введите в поле:
- ID пользователя (id123456789)
- Короткое имя (durov)
- Ссылку (https://vk.com/id1)
Получите результат вида:
✅ Пользователь — бот (вероятность: 0.83)Локальная установка (опционально)
Требования
- Python 3.10
- Docker (опционально)
Установка
- Клонируйте репозиторий:
git clone <репозиторий>
cd <папка_проекта>- Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Linux/MacOS
venv\Scripts\activate # Windows- Установите зависимости:
pip install -r requirements.txt- Создайте файл .env и добавьте ваш токен VK API:
VK_API_TOKEN=ваш_токенЗапуск
Вариант 1: Локальный запуск
- Запустите FastAPI приложение:
uvicorn app.main:app --host 0.0.0.0 --port 7860- Запустите Gradio интерфейс (в другом терминале):
python gradio_app.pyВариант 2: Запуск через Docker
- Соберите Docker образ:
docker build -t vk-bot-classifier .- Запустите контейнер:
docker run -p 7860:7860 vk-bot-classifierИспользование
Веб-интерфейс
Откройте в браузере http://localhost:7860 и введите ID пользователя ВКонтакте в формате:
id123456789
username
https://vk.com/id123456789
https://vk.com/username
REST API
Эндпоинты
- POST /predict/ - основной эндпоинт для предсказания
{
"uid": "id123456789"
}- GET /health/ - проверка работоспособности сервиса
- GET / - информационное сообщение
Пример запроса
curl -X POST "http://localhost:7860/predict/" \
-H "Content-Type: application/json" \
-d '{"uid": "id1"}'Пример ответа
{
"uid": "id1",
"prediction": 1,
"probability": 0.95,
"message": "The user is a bot with probability 0.95"
}Тестирование
Для запуска тестов выполните:
pytestТесты включают:
- Unit-тесты для функций расчета возраста и преобразования данных
- Тесты для работы с графами
- Тесты API эндпоинтов
- Тесты работы с VK API
Структура проекта
.
├── app/ # Основной код приложения
│ ├── __init__.py
│ ├── features.py # Извлечение и преобразование признаков
│ ├── graph_utils.py # Работа с социальным графом
│ ├── main.py # FastAPI приложение
│ ├── model.py # Загрузка модели и предсказание
│ └── vk_api.py # Работа с VK API
├── model/ # Модели машинного обучения
│ ├── model.pkl
│ └── model.zip
├── tests/ # Тесты
│ ├── __init__.py
│ ├── locustfile.py # Нагрузочное тестирование
│ ├── test_features.py
│ ├── test_graph_utils.py
│ ├── test_main.py
│ ├── test_prediction.py
│ └── test_vk_api.py
├── .env # Переменные окружения
├── .gitattributes
├── .gitignore
├── Dockerfile # Конфигурация Docker
├── README.md # Документация
├── gradio_app.py # Веб-интерфейс
└── requirements.txt # Зависимости