Це дипломна робота на тему "Система рекомендацій для стрімінгового сервісу", яка реалізує сучасні алгоритми машинного навчання для персоналізованих рекомендацій фільмів.
- 🤖 Колаборативна фільтрація (user-based, item-based)
- 📊 Контентна фільтрація на основі метаданих
- 🔄 Гібридний підхід для максимальної точності
- 🎯 Матрична факторизація (NMF)
- 📱 Сучасний веб-інтерфейс у стилі Netflix
- 🔐 Система авторизації з JWT токенами
- 📈 Система збору та аналізу взаємодій користувачів
git clone <your-repo-url>
cd streaming-recommenderpython scripts/quick_setup.pypython app/main.py- Головна сторінка: http://localhost:5000
- Адмін панель: http://localhost:5000/admin
- Python 3.8+
- MongoDB (локально або Atlas)
- TMDb API ключ (опціонально)
pip install -r requirements.txtСтворіть файл .env:
SECRET_KEY=your_secret_key
MONGO_URI=mongodb://localhost:27017/streaming_recommender
TMDB_API_KEY=your_tmdb_api_key
DEBUG=Truepython scripts/enhanced_data_importer.pystreaming-recommender/
├── app/
│ ├── main.py # Головний Flask додаток
│ ├── config.py # Конфігурація
│ ├── database.py # Підключення до MongoDB
│ ├── models/ # Моделі даних
│ ├── recommenders/ # Алгоритми рекомендацій
│ │ ├── collaborative.py
│ │ ├── content_based.py
│ │ └── hybrid.py
│ └── api/ # API маршрути
├── scripts/
│ ├── quick_setup.py # Швидке налаштування
│ └── enhanced_data_importer.py
├── data/ # Дані MovieLens
├── static/ # Статичні файли
└── templates/ # HTML шаблони
POST /api/auth/register- РеєстраціяPOST /api/auth/login- ВхідGET /api/auth/me- Поточний користувач
GET /api/content/- Список контентуGET /api/content/<id>- Деталі контенту
GET /api/recommendations/personal- Персональні рекомендаціїPOST /api/recommendations/interaction- Запис взаємодії
GET /api/health- Стан системиGET /api/stats- Статистика
- User-based: Рекомендації на основі схожих користувачів
- Item-based: Рекомендації на основі схожого контенту
- Matrix Factorization: NMF для зниження розмірності
- Аналіз метаданих (жанри, актори, режисери)
- TF-IDF векторизація описів
- Cosine similarity для знаходження схожості
- Адаптивні ваги залежно від активності користувача
- Комбінування різних алгоритмів
- Диверсифікація за жанрами
{
"username": "string",
"email": "string",
"preferences": {
"genres": ["Action", "Drama"],
"favorite_actors": ["Actor Name"],
"favorite_directors": ["Director Name"]
},
"demographics": {
"age": 25,
"location": "City"
}
}{
"title": "Movie Title",
"genres": ["Action", "Drama"],
"release_year": 2023,
"director": "Director Name",
"actors": ["Actor1", "Actor2"],
"description": "Movie description",
"poster_url": "https://...",
"average_rating": 8.5,
"tmdb_id": 123456
}{
"user_id": "ObjectId",
"content_id": "ObjectId",
"interaction_type": "rating|view|bookmark",
"value": 4.5,
"timestamp": "2024-01-01T00:00:00Z"
}python -m pytest tests/python scripts/demo_recommendations.pyСистема збирає наступні метрики:
- Precision@K та Recall@K
- Покриття каталогу
- Різноманітність рекомендацій
- Час відгуку системи
- JWT токени для авторизації
- Хешування паролів з bcrypt
- Валідація вхідних даних
- CORS налаштування
docker build -t streaming-recommender .
docker run -p 5000:5000 streaming-recommender- Змініть
SECRET_KEYтаJWT_SECRET_KEY - Встановіть
DEBUG=False - Налаштуйте зовнішню MongoDB
- Налаштуйте HTTPS
- Додайте моніторинг
Після імпорту даних доступні наступні користувачі:
- admin / admin123
- movie_critic / password123
- action_fan / password123
- comedy_lover / password123
- horror_enthusiast / password123
- Backend: Flask, PyMongo, JWT
- ML: scikit-learn, pandas, numpy
- Frontend: HTML5, CSS3, Bootstrap 5, JavaScript
- Database: MongoDB
- APIs: TMDb API, MovieLens dataset
Цей проект створено для освітніх цілей як дипломна робота.