Table of Contents
moviemash is a web application developed for Microsoft Engage 2022. As a part of the program, the mentees were assigned the task to choose a track from the three given tracks. moviemash comes under the third track, Algorithms.In this track we were asked to implement a recommendation engine in the app based on any algorithm of our choice.The main aim of the project is to develop a web application which recommends movies to user based on the movie he searched at that time with ease of use and simplicity.
- User authentication using Firebase
- Search a movie and get its details like title,genre,runtime,rating,poster
- Recommending movies based on the searched movie at that time
It is used for data processing for the recommendation engine
It is used in integrating the python code with frontend part.
These are used for styling the website(frontend).
It is used for storing the registered user's credentials(email).
(Back to top)
Agile is a development methodology adopted today in the software industry. Agile promotes teamwork, flexible procedures, and sle-organizing teams.
SCRUM is a subset of Agile, a framework for developing software. SCRUM takes advantage of different techniques to achieve goals in Agile. SCRUM promotes an iterative model where the planning is performed on a very short term. The basic time working unit is the sprint. SCRUM teams always reason in sprints and their planning is limited to sprints.
-
Sprint 1 (May 4-May 8): Sprint Planning and Research - Researching about what is recommendation engine, whar its types, how it works, what are the agorithms that streaming platfroms like Netflix,Spotify use for their recommendation engine.
-
Sprint 2( May 8- May 12):Design phase - Various libraries(if needed) for implementing recommendation agorithm. After finalizing the algorithm to be used for recommendation ,I searched for tutorials, designed a wireframe including the functionalities I want and designed the UI.Build a basic prototype of the web application.
-
Sprint 3 (May 12- May 24): Build phase - Started the development process by taking help from medium blogs, Youtube tutorials. Built a web application after the initial prototype using Python, Flask and HTML,CSS and JS for frontend, Firebase for storage of data. Encountered occasional bugs which I debugged timely. Made required changes in the UI and color scheme to make it more eye pleasing.
-
Sprint 4 (May 24-May 27): Testing Phase -Debugging and adding additional features. Decided to build the recommendation engine using content-based filtering by using similarity score and cosine similairty which recommends movie based on the movie that user searched at that time.Made required changes to integrate the frontend part. Added sign in authentication using Firebase. Also added sentiment analysis of the user reviews by scrapping them from IMDB site.
(Back to top)
How does the recommendation system behind the application works? What algorithms it uses for the recommendation part.
Content-based Filtering analyses the nature of each item and aims to find the insights of the data to identify the user preferences. Basically content recommenders rely on item features to make recommendations. Examples of this features include User generated tags on movies, Item color, Text description, User review of an item, Genre, Director, Description, Actors of a Movie etc. The general idea behind these recommender systems is that if a person likes a particular item, he or she will also like an item that is similar to it. In other words, these algorithms try to recommend items that are similar to those that a user liked in the past. This can be seen in applications like Netflix, Facebook Watch which recommend the next movie or video based on the Director, Hero etc. In this post I have used Content-based Filtering to find the recommendations of the movies. The recommendation system build with title, cast, director, keywords, genres features in the dataset.
How does it decide which item is most similar to the item user likes? Here come the similarity scores.
It is a numerical value ranges between zero to one which helps to determine how much two items are similar to each other on a scale of zero to one. This similarity score is obtained measuring the similarity between the text details of both of the items. So, similarity score is the measure of similarity between given text details of two items. This can be done by cosine-similarity.
Cosine similarity is a metric used to measure how similar the documents are irrespective of their size. Mathematically, it measures the cosine of the angle between two vectors projected in a multi-dimensional space. The cosine similarity is advantageous because even if the two similar documents are far apart by the Euclidean distance (due to the size of the document), chances are they may still be oriented closer together. The smaller the angle, higher the cosine similarity.
(Back to top)
To install and run the project on your local system, following are the requirements:
1.Get your API
key for further steps. Do so by following the steps mentioned below.
Create an account in https://www.themoviedb.org/.
Click on the API
link from the left hand sidebar in your account settings and fill all the details to apply for API key.
If you are asked for the website URL, just give "NA" if you don't have one. You will see the API key in your API
sidebar once your request is approved.
2.Install python in your system , if not installed already by selecting according to your system from https://www.python.org/downloads/ site.
To use this project, follow the steps below:
- Clone this repository. Initialise git on your terminal.
git init
git clone https://github.com/Aanya74282/moviemash-Engage2022.git
-
Install all the libraries mentioned in the [requirements.txt]file with the command
pip install -r requirements.txt
-
Get your API key from https://www.themoviedb.org/. (Refer the above section on how to get the API key)
-
Replace YOUR_API_KEY in both the places (line no. 15 and 35) of
static/recommend.js
file,in line no.8 ofapi.js
and hit save. -
Open your terminal/command prompt from your project directory and run the file
main.py
by executing the commandpython main.py
. -
Go to your browser and type
http://127.0.0.1:5000/
in the address bar. -
Yayy! Your site is deployed now.
Sign-Up feature to the web application by providing credentials (name, email and password).
Sign-In using your email and password registered to the web application which are saved in firebase.
The Home window appears where the users can search for the desired movies, scroll through their favourite movies sorted according to their genres.
After logging in, a search input appears where one can search the desired movie with the autocomplete feature and get all the information like title,genres,release etc about that movie..
Get the details of the searched movie like title, genre, runtime,rating,poster,etc which are fetched using an API by TMDB.
After searching the movie,get the details of the top cast of the searched movie and on clicking the know more button which appears on hovering over them , get information about them.
Get a list of 10 recommended movies based on the movies searched at that time.This recommendation is done by using the content based filtering on the movies data. Click on those movies to search about them and get their details
Get the sentiment analysis of the user reviews who have already wathced the movie which are scraped from IMDB site.
Get a list of movies which are displayed by calling API and display them in decraesing order of popularity.
Click on LOGOUT in navigation bar to log out and it will redirect to the sign-in, sign-up page.
(Back to top)
- Recommendation system medium blog
- How to build a recommendation engine in python? medium blog
- How to use flask to render HTML templates medium blog.
- How to use firebase for user authentication youtube tutorial
- How to use extract data from API youtube tutorial
- IMDB 5000 Movie Dataset
- The Movies Dataset
- List of movies in 2018
- List of movies in 2019
- List of movies in 2020
Email To: [email protected]
(Back to top)