A movie recommendation engine based Database Management System built as an open source movie recommender to promote freedom of software.Tsukuyomi is a dynamically designed Database with input features of Artificial Intelligence and Machine Learning which transforms it from a static database into a self-enhancing database where users can access movie ratings, submit new ratings and it would learn their preferences providing them with relevant recommendations.
The system is divided into a multilayered architecture comprimising of a web based front end designed using Bootstrap 4, Python + Flask as the HTTP server and router, and MySQL server for the database. The requests handled by front end Javascript are served by a Python server running Flask as the application framework. Python library of MySQL connector has been extensively utilised to function as a query manager for the relational database framework
The system provides movie recommendations using Collaborative Filtering technique and an onsite booking and management system for a theatre (franchise). The stakeholders takein into consideration are the cashier at the booking kiosk, who books tickets in exchange for payment, and the other being the manager who has the power of defining statistics, change prices, schedules movies, and adds new movies that are to be premiered.
All HTTP requests to Flask are made via encrypted POST messages. The system is designed to be secure, robust and flexible. The requirements mandated the use of a stored procedure and a trigger in MySQL. The schema follows 3NF normalization form.
1. Offline Connectivity
2. Search Optimization
3. Movie Recommendations
4. Ticket Bookings
5. Visual Neural Net of similar movies
6. Trailer Fetching from YouTube
7. Cluster Analysis of similar users
The recommender comprimises of a collection of over 10000 movies taken from the Open Movie Database implemented in GraphLab IDE and is accompanied by a search optimization function which allows to search similar movies to the users.The technique is based on a collaborative filtering algorithm which clusters the similar interest users into a single region and thereby provides relevant recommendations efficiently.
The recommender also provides the collaborative analysis of similar users through a precision and recall curve which dynamically changes according to the number of users