AI-powered movie recommendation platform that leverages Transformer-based emotion recognition to deliver personalized movie suggestions aligned with the user's emotional state.
Cinemoods is an intelligent recommendation platform that combines Natural Language Processing, Transformer-based emotion classification, and personalized recommendation techniques to suggest movies based on emotional context.
Unlike traditional recommendation systems that primarily rely on ratings, collaborative filtering, or viewing history, Cinemoods focuses on emotional alignment between the user's current mood and movie narratives.
The platform processes movie descriptions, identifies dominant emotional signatures using a Hugging Face Transformer model, and recommends movies that emotionally resonate with the user.
Traditional movie recommendation systems often fail to understand emotional intent.
Examples:
- Users feeling stressed may want comforting content.
- Users feeling adventurous may prefer exciting narratives.
- Users experiencing sadness may seek uplifting stories.
Current recommendation engines primarily rely on:
- Collaborative filtering
- Genre matching
- Popularity rankings
- User history
These systems do not explicitly incorporate emotional context.
Cinemoods addresses this gap by introducing emotion-aware recommendations powered by Transformer-based NLP.
- Transformer-based emotion classification
- Hugging Face model integration
- Context-aware text analysis
- Multi-emotion support
Supported emotions:
- Joy
- Sadness
- Anger
- Fear
- Surprise
- Disgust
- Neutral
- Emotion-based filtering
- Rating-based ranking
- Genre-aware recommendations
- Fallback recommendation strategy
- Text normalization
- Stopword removal
- Tokenization
- Overview preprocessing
- Streamlit application
- Cinematic UI
- Search functionality
- Recommendation visualization
- Analytics dashboard
flowchart LR
A[Raw Movie Dataset] --> B[Preprocessing Pipeline]
B --> C[Cleaned Movie Descriptions]
C --> D[Emotion Classification Model]
D --> E[Emotion-Enriched Dataset]
E --> F[Recommendation Engine]
F --> G[Streamlit Application]
G --> H[User Input]
H --> I[Emotion Detection]
I --> J[Movie Recommendations]
J --> K[Visualization Dashboard]
sequenceDiagram
participant User
participant Streamlit
participant EmotionModel
participant Recommender
participant Dataset
User->>Streamlit: Enter Mood / Text
Streamlit->>EmotionModel: Predict Emotion
EmotionModel-->>Streamlit: Emotion Label
Streamlit->>Recommender: Request Recommendations
Recommender->>Dataset: Filter Movies
Dataset-->>Recommender: Matching Movies
Recommender-->>Streamlit: Top Recommendations
Streamlit-->>User: Display Results
| Category | Technology |
|---|---|
| Frontend | Streamlit |
| Backend | Python |
| NLP | NLTK |
| Deep Learning | PyTorch |
| Transformer Models | Hugging Face Transformers |
| Data Processing | Pandas |
| Visualization | Matplotlib |
| Model Hub | Hugging Face Hub |
| Recommendation Engine | Custom Logic |
Cinemoods
│
├── app.py
│
├── assets
│ ├── hero_banner.png
│ └── default_poster.png
│
├── data
│ ├── raw_movies.csv
│ ├── processed_movies.csv
│ └── processed_movies_with_emotions.csv
│
├── models
│
├── notebooks
│
├── src
│ ├── __init__.py
│ ├── preprocessing.py
│ ├── emotion_model.py
│ ├── recommender.py
│ └── visualization.py
│
├── requirements.txt
└── README.md
flowchart TD
A[Raw Movie Overview]
A --> B[Lowercasing]
B --> C[Special Character Removal]
C --> D[Tokenization]
D --> E[Stopword Removal]
E --> F[Clean Overview]
F --> G[Transformer Model]
G --> H[Emotion Classification]
H --> I[Dominant Emotion]
j-hartmann/emotion-english-distilroberta-base
Framework:
Hugging Face Transformers
PyTorch
Classification Categories:
anger
disgust
fear
joy
neutral
sadness
surprise
Filter movies by:
Dominant Emotion
Apply:
Genre Matching
Sort by:
IMDb Rating
Fallback Strategy
If no emotional match exists:
Top Rated Movies
are returned.
Responsibilities:
- Dataset loading
- Missing value handling
- NLP preprocessing
- Data cleaning
- Dataset generation
Responsibilities:
- Transformer initialization
- Emotion prediction
- Dataset emotion enrichment
- Batch processing
Responsibilities:
- Recommendation logic
- Genre filtering
- Rating prioritization
- Fallback recommendations
Responsibilities:
- Analytics generation
- Distribution plots
- Emotion visualizations
- Dashboard charts
Responsibilities:
- Streamlit UI
- User interaction
- Search functionality
- Recommendation display
- Dashboard rendering
git clone https://github.com/auditee/Cinemoods.git
cd Cinemoodspython -m venv venvvenv\Scripts\activatesource venv/bin/activatepip install -r requirements.txtPreprocess Dataset
python src/preprocessing.pyGenerate Emotion Labels
python src/emotion_model.pystreamlit run app.pyInsert screenshot here
Insert screenshot here
Insert screenshot here
- Transformer-based emotion inference
- Automated recommendation generation
- Explainable recommendation workflow
- Modular architecture
- Easily extensible codebase
- Production-ready project structure
- Live posters
- Movie trailers
- Dynamic ratings
- ChromaDB
- FAISS
Semantic recommendation search.
Emotion-aware Retrieval-Augmented Generation.
- Watchlists
- User profiles
- Mood history
Real-time speech emotion detection.
Conversational movie recommendation agent.
Cinemoods – Emotion-Based Movie Recommendation Engine
Developed an AI-powered movie recommendation platform leveraging Hugging Face Transformers, PyTorch, and NLP techniques to analyze emotional context and generate personalized movie suggestions. Implemented an end-to-end recommendation pipeline including text preprocessing, Transformer-based emotion classification, rating-aware filtering, and an interactive Streamlit dashboard. Designed a modular architecture supporting emotion analytics, visualization, and scalable recommendation workflows.
Auditee Chowdhury
B.Tech Computer Science & Engineering
Artificial Intelligence | NLP | Machine Learning | Generative AI
GitHub: https://github.com/auditee