Skip to content

Microsoft Engage 2022 project 3 submission.A Movie Recommender application made using Flutter and Flutter and ML.

Notifications You must be signed in to change notification settings

Pavel401/DartFlix

Repository files navigation


Submission for Microsoft engage '2022

image001


demo

DartFlix - The Movie Recommender built using Flutter & Flask

Custom Flask API Flutter - Framework Flask - API Python -  Heroku -  Deploy Kaggle -  Dataset

  • 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.

Documents:

Take a look at the presentation Here
My Software write up during the Microsoft Engage Program

Demo Video:

Demo Video

Url: https://www.youtube.com/watch?v=deZILabHNzo

Features :

  • 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 .

Installation

Install DartFlix apk

 I have already compiled the apk and attached the download link.Just install it and you are good to go.

Download Apk - Click Here

Run Locally

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 

Output Screenshots

Recommendations Page Sentiment Analysis Page
tia5569436775523766645 tia8858542068622280607
Movie Overview Page Cast List Page
tia5569436775523766645 (1) tia6276718872008158942
More Movies of a Cast Top Movies
tia2767914410413613655 Screenshot_20220529-185934
Genre Wise Search Page Search Result Page
tia4793552705933106791 tia8104170913011518750
Swipable UI Confirmation Dialog
tia6145994717417066643 tia8111643190604640115
HomePage Collaborative Recommendations
tia993728855442297670 tia93710582430609766
Profile Page About & Contact Page
tia5300446429116516377 tia76456325585923122

Untitled (960 × 540px) (1)

Untitled (960 × 540px) (2)

Machine learning model used:

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).

Architecture :

Blank diagram (1)

Similarity Score :

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. 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 :

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: 1_e90_bvVf9Agxfk4DxWu7og 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.

Note :

Datasets of credits.csv and movies_metadata.csv download from here download these two datasets and put it in the recommendation api folder.

API Reference

Deployed Api : https://enage22.herokuapp.com/

API project can be found here https://github.com/Pavel401/Enage-Recommendation-API

Get MOVIE DETAILS

  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 Recommendations

  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.

About

Microsoft Engage 2022 project 3 submission.A Movie Recommender application made using Flutter and Flutter and ML.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published