-
DartFlix
is a Content-Based-Movie-Recommender which gives recommendations based on KNN. -
A Content-Based Recommender works by the data that we take from the user, either explicitly (rating) or implicitly (clicking on a link). By the data we create a user profile, which is then used to suggest to the user, as the user provides more input or take more actions on the recommendation, the engine becomes more accurate.
-
Content Based Recommender System recommends movies similar to the movie user likes and analyses the sentiments on the reviews given by the user for that movie.
-
The details of the movies(title, genre, runtime, rating, poster, etc) are fetched using an API created in this project using Flask and Machine learning, https://enage22.herokuapp.com/ and https://www.themoviedb.org/documentation/api, and using the IMDB id of the movie in the API, I did web scraping to get the reviews given by the user in the IMDB site using
beautifulsoup4
and performed sentiment analysis on those reviews.It uses recommendations fetched from api made by me https://enage22.herokuapp.com/. -
There is a Movie search feature which will show all the recommended movies from the movies name.
-
DartFlix
uses users movie taste to show recommended movies in the homepage. -
It also stores the users previously watched movies.
-
There is a Movie review tab which shows all reviews and performed sentiment analysis on those reviews.
Take a look at the presentation Here
My Software write up during the Microsoft Engage Program
Url: https://www.youtube.com/watch?v=deZILabHNzo
-
When the user opens the app for the first time ,it shows a Introduction screen which gives a basic idea about the app.
-
Now the Genres selection and language selection page will open to the user.Based on this parameters user's homescreen will be setup.
-
In the homescreen
DartFlix
shows all the previously watched movies, so that user can start watching from where user stopped watching.It's basically stores user's watching history in local db. -
In the homescreen
DartFlix
shows all the recommended movies based on users previous watching history. -
It provides search movie feature which fetche movies from the database and displays inside the app.
-
It will provide the movie title, movie poster, overviews, rating, genre, release date, runtime, status.
-
It also provides top cast name and their other movies.
-
DartFlix
also provides user reviews in terms of comments and sentiments that is very important for deciding any particular searched movie is good or bad. -
Now the main feature that is recommending the movie similar to that of the searched movie comes below of reviews.
-
If we click any of the recommended movie poster it takes us to the page of that clicked movie .
Install DartFlix apk
I have already compiled the apk and attached the download link.Just install it and you are good to go.
Flutter SDK
Make sure you have Flutter installed.
Clone the project
git clone https://github.com/Pavel401/DartFlix
Go to the project directory
Open the project folder
Install dependencies
open `pubspec.yaml` and install the dependencies
Connect your android phone or AVD
Make sure your device is connected
Debug the app
flutter run
Recommendations Page | Sentiment Analysis Page |
---|---|
Movie Overview Page | Cast List Page |
---|---|
More Movies of a Cast | Top Movies |
---|---|
Genre Wise Search Page | Search Result Page |
---|---|
Swipable UI | Confirmation Dialog |
---|---|
HomePage | Collaborative Recommendations |
---|---|
Profile Page | About & Contact Page |
---|---|
I have incorporated machine learning models like a bag of words, tf - idf vectorization, similarity analysis, and review analysis based on multinomial naïve bays algorithm. Which is a Bayesian learning approach popular in Natural Language Processing (NLP).
How does it decide which item is most similar to the item user likes? Here come the similarity scores.
It is a numerical value rangesthat 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.
- And once again we can see that all details for that clicked movie comes as that of previous searched movie .
- It provides a cool suggest movie feature with nice swipable card.
Naive Bayes is a fairly simple group of probabilistic algorithms that, for sentiment analysis classification, assigns a probability that a given word or phrase should be considered positive or negative. Essentially, this is how Bayes’ theorem works. The probability of A, if B is true, is equal to the probability of B, if A is true, times the probability of A being true, divided by the probability of B being true: But that’s a lot of math! Basically, Naive Bayes calculates words against each other. So, with machine learning models trained for word polarity, we can calculate the likelihood that a word, phrase, or text is positive or negative.
When techniques like lemmatization, stopword removal, and TF-IDF are implemented, Naive Bayes becomes more and more predictively accurate.
Datasets of credits.csv and movies_metadata.csv download from here download these two datasets and put it in the recommendation api folder.
Deployed Api : https://enage22.herokuapp.com/
API project can be found here https://github.com/Pavel401/Enage-Recommendation-API
GET /getmovie/moviename
(ex - https://enage22.herokuapp.com/getmovie/Avatar)
Parameter | Type | Description |
---|---|---|
moviename |
string |
Required. Movie name (ex-Avatar) |
Takes movie name and returns movie details as json.
GET /send/moviename
(ex- https://enage22.herokuapp.com/send/Avatar)
Parameter | Type | Description |
---|---|---|
moviename |
string |
Required. Moviename (ex-Avatar) |
Takes movie name and returns movie Recommendations based on cosine values.