An intelligent system that harnesses the power of machine learning and natural language processing(NLP) to provide personalized movie recommendations tailored to individual preferences.
This project aims to develop a cutting-edge movie recommendation system that leverages advanced techniques in data cleaning, exploratory data analysis (EDA), machine learning, and natural language processing (NLP). The system is designed to suggest movies to users based on their unique preferences, behavior, and the similarities between movies.
The recommendation engine employs a content-based filtering approach, analyzing movie overviews, features, and user-item interactions to provide highly relevant and personalized recommendations. By combining machine learning algorithms with natural language processing techniques, the system can effectively understand and interpret user preferences, enabling it to suggest movies that align with their specific interests.
See the implementation details with IPython Notebook.
๐ก Content-Based Filtering Algorithm: MovieMentor employs a cutting-edge content-based filtering algorithm that analyzes movie overviews, features, and metadata to identify similarities between movies and your preferences.
๐๏ธ Cosine Similarity and Vectorization: The system implements advanced cosine similarity calculations and vectorization techniques to accurately measure the similarity between textual documents, such as movie overviews and user reviews.
๐ฅ Collaborative Filtering: In addition to content-based filtering, MovieMentor utilizes user-based and item-based collaborative filtering techniques to enhance recommendation accuracy by incorporating user-item interactions and preferences.
๐ฏ Personalized Recommendations: You'll receive tailored movie suggestions based on your unique preferences, behavior, and the similarities between movies, ensuring a highly personalized and relevant recommendation experience.
MovieMentor relies on a comprehensive movie dataset containing rich information about movie features, overviews, credits, and ratings. This dataset undergoes thorough preprocessing to extract relevant features, ensuring that the recommendation algorithms have access to high-quality data for training and evaluation.
To set up the Movie Recommendation System on your local machine, follow these step-by-step instructions:
Before proceeding, ensure that you have the following software installed:
- Python (version 3.10 or higher)
- Anaconda or venv (for creating a virtual environment)
- Git (for cloning the repository)
-
Clone the Repository
git clone https://github.com/NayakSubhransu/MovieMentor.git
-
Change the Working Directory
cd MovieMentor
-
Create and Activate a Virtual Environment
It's highly recommended to create a virtual environment to maintain a clean and isolated setup for the project dependencies.
-
For Anaconda:
conda create -n env_name python=3.10 conda activate env_name
-
For venv:
- Windows:
py -3 -m venv venv venv\Scripts\activate
- macOS/Linux:
python3 -m venv venv source venv/bin/activate
- Windows:
-
-
Install Required Packages
python -m pip install -r requirements.txt
This command will install all the necessary packages and dependencies specified in the
requirements.txt
file. -
Run the Web Application
streamlit run app.py
This command will start the Streamlit web application, and you should see a URL in your terminal. Copy and paste this URL into your web browser to access the Movie Recommendation System.
In addition to the web application, you can also run the Movie Recommendation System through the command-line interface (CLI). To do so, follow these steps:
-
Install Required Packages
-
See the Movie List
python MovieMentor_cli.py --movie list --page_number 2 # Default page number is 2
This command will display a list of movies from the dataset. You can specify the page number using the
--page_number
option (default is 2). -
Get Movie Recommendations
python MovieMentor_cli.py --movie "YourMovieTitle" --num_recommendations 5 # Default number of recommendations is 5
Replace
"YourMovieTitle"
with the title of a movie you're interested in, and the system will provide the top 5 movie recommendations based on your selection. You can adjust the number of recommendations using the--num_recommendations
option (default is 5).
The following packages and libraries are required to run the Movie Recommendation System:
- Jupyter Notebook
- Pandas
- pillow
- NLTK (Natural Language Toolkit)
- Scikit-learn
- Pickle
- Streamlit
- streamlit_lottie
- colorama
- requests
- rich
- pyfiglet
These dependencies are automatically installed when running the python -m pip install -r requirements.txt
command during the installation process.
The MovieMentor web application provides a user-friendly interface for discovering and exploring movie recommendations. Users can input their preferences, and the application will generate personalized recommendations based on their choices.
For quick and convenient recommendations, the MovieMentor CLI application allows users to input movie titles directly from the terminal and receive personalized recommendations instantly.
MovieMentor can be utilized by both new and existing users to receive personalized movie recommendations:
๐ฏ User Preferences: Input your movie preferences, such as genres, actors, directors, or specific movie titles you enjoy.
๐ Historical Data: MovieMentor leverages historical data, including user-item interactions and movie metadata, to identify patterns and similarities.
๐ฅ Recommendation Generation: Based on your preferences and the analyzed data, the system generates a list of recommended movies tailored to your unique interests and tastes.
๐ Exploration and Feedback: Explore the recommended movies, provide feedback, and refine your preferences for even more accurate recommendations in the future.
MovieMentor has several potential areas for future improvements and enhancements:
๐ง Deep Learning Models: Incorporate advanced deep learning models, such as neural networks or transformers, to further improve recommendation accuracy and handle more complex data patterns.
๐จ User Interface Enhancements: Develop a more intuitive and user-friendly interface to enhance the overall user experience, making it easier for users to input their preferences and explore recommendations.
๐ Additional Data Sources: Integrate additional data sources, such as user reviews, ratings, and social media data, to enhance the system's understanding of user preferences and movie characteristics.
๐ Hybrid Recommendation Approach: Explore a hybrid recommendation approach that combines content-based filtering, collaborative filtering, and other advanced techniques to leverage the strengths of multiple algorithms and provide more robust recommendations.
โฑ๏ธ Real-Time Updates: Implement mechanisms to continuously update the recommendation models with new data, ensuring that the system remains up-to-date and can adapt to changing user preferences and movie releases.
Contributions to MovieMentor are highly appreciated and welcome! If you encounter any issues, have suggestions for improvements, or would like to add new features, please follow these steps:
๐ด Fork the Repository: Start by forking the MovieMentor repository on GitHub.
๐ฑ Create a Branch: Create a new branch for your feature or bug fix by running git checkout -b feature/your-feature-name or git checkout -b fix/your-fix-name.
โจ Make Changes: Implement your changes, following best coding practices and ensuring that your code is well-documented and tested.
๐ Commit and Push: Commit your changes with descriptive commit messages and push them to your forked repository.
๐ Submit a Pull Request: Open a new Pull Request on the original repository, providing a detailed description of your changes.
The documentation also includes references to external resources, such as research papers, blog posts, and online tutorials, that provide further insights into the techniques and technologies used in the Movie Recommendation System.
The Movie Recommendation System project would not have been possible without the contributions and support of the following individuals and organizations:
- Open-Source Community: I extend my gratitude to the open-source community for providing invaluable resources, libraries, and tools that facilitated the development of this project.
- Research Community: I acknowledge the researchers and academics whose work in the fields of machine learning, natural language processing, and recommender systems laid the foundation for the techniques employed in this project.
- Data Providers: I thank the organizations and individuals who curated and made available the movie datasets used in training and evaluating the recommendation system.