Next up is a movie recommendation system that offers generalized recommendations to every user based on movie popularity, genre, and year. The model also gives personalized recommendations based on the user's choice of genre and cast. Finally, the system suggests similar movies have a higher probability of being liked based on the movie selected by the user.
The demo video for the app can be checked here: Next Up | Video
Next.Up_Movie.Recommendation.System.mp4
-
Sign-up and Sign-in functionality. ✔️
-
Forgot password (resetting password) functionality. ✔️
-
OTP validation. ✔️
The user receives a mail containing OTP for validation before resetting the password.
-
Restrictions and validations on the sign-up page, sign-in page, forgot password functionality, OTP validation page, and reset password page. ✔️
-
The User’s credentials are stored in the database. ✔️
-
Completely responsive front end. ✔️
-
A total of 4 types of recommendations:
- Recommended movies based on the user's chosen genres and casts. ✔️
- Most popular movies based on different genres. ✔️
- Most popular movies based on different years. ✔️
- Recommended movies similar to the user's selected movie. ✔️
-
Movie details and trailer linked for each movie. ✔️
-
Watch a movie option. ✔️
-
Option to like or dislike a movie. ✔️
-
Client-side session tracking. ✔️
-
Continuous deployment. ✔️
- Seamless landing page with
Sign-in
andSign-up
(Get Started) button.
Restrictions and validations on the sign-up page, sign-in page, forgot password functionality, OTP validation page, and reset password page
- All fields not filled
- Email account already registered (sign-up), Email account not registered (sign-in)
- Incorrect password, OTP incorrect
- Email address not entered, OTP not entered, new password not entered
- Page for choosing preferred genres and casts used for recommending movies
- This page shows recommended movies based on genres and casts chosen by the user.
- It also displays the most popular movies based on different genres and years.
- This page shows details and a trailer of the movie selected by the user.
- It also recommends similar movies to the user based on the selected movie.
- This page is to watch the movie selected.
Frontend
: HTML5, CSS3, JavaScript, BootStrap, jQueryBackend
: Python flaskDatabase
: PostgreSQL, SQLite3ML model
: Jupyter NotebookIDE
: PyCharmVersion Control
: GitDeployment
: Heroku
You can also see the list of dependencies in the requirements.txt file.
Python
: NumPy, Pandas, ast (Abstract Syntax Trees), pickle
ML
: ntlk (Natural Language Toolkit), sklearn (scikit-learn)
SQLite
: sqlite3, SQLAlchemy
For recommendations of similar movies, a content-based recommendation system. For recommendation, the system takes into account movie titles, genres, starring cast, keywords, overview, and the director. I have implemented the Cosine Algorithm after the vectorization of movies. It is achieved by using the Annoy (Approximate Nearest Neighbors) mechanism. Resource for Annoy: https://github.com/spotify/annoy
For Deployment, I have used Heroku
as a platform.
A deployed version can be checked here: Next Up
- Clone this repository in your local system.
- Open the terminal in a new folder and enter the command given below.
git clone https://github.com/kashishahuja2002/Minor-Project-Next-Up.git
-
Make sure that Python is installed and updated in your machine.
-
Install dependencies.
- Open the terminal in the cloned folder and enter the command given below.
pip3 install -r requirements.txt
- Run the project.
- While you are still inside the cloned folder, write the following command in the terminal to run the website locally.
python app.py
- If everything is done in order, the app will be running at "http://127.0.0.1:5000"
For continuous deployment, Heroku is used. Any changes pushed to the main branch will be automatically deployed.
-
Like/Dislike
: The option to like or dislike a movie adds the movie to the user's like/dislike list. As of now, I am just accumulating the data. This can be further extended by using the like/dislike list to recommend movies to the user. -
Watch Movie
: The watch movie option currently displays the same movie intro for all the movies. In the future, it can be customized according to the movie selected. -
Collaborative Filtering
: The model currently uses a content-based recommendation system. It can be converted into a hybrid system by adding a collaborative filtering mechanism.
A complete project report for the system with a use case diagram, web flow, ER diagram, wireframes, etc can be found here: Next Up | Project Report.
A short and crisp version of the documentation can be found here: Next Up | Documentation.
A presentation for the project can be found here: Next Up | Presentation.
Thank you, Microsoft Team for such a wonderful mentorship program ❤️