Code repository for Moviebot – an NLP-powered movie recommendation chatbot, written in Python, HTML/CSS and JavaScript & hosted on Vercel + AWS Lambda.
This is a group project for my IL181 Practical Data Science tutorial (group members are Dennis, Pedro, and Ahmed). Here's our write up on the project:
- Part 0: How to Build A Flexible Movie Recommender Chatbot In Python
- Part 1: Building a Content-based Recommender using a Cosine-Similarity Algorithm
- Part 2: Building and deploying an NLP model to AWS Lambda and Vercel
- Part 3: Model Analysis and Future Recommendations
To run this program locally, follow these steps:
- Download the repo with
git clone https://github.com/steven-tey/moviebot.git
- Create a virtual environment with
python3 -m venv venv
- Activate your virtual environment with
source venv/bin/activate
- Then, install all the required libraries with
pip install -r requirements.txt
- Next, export the Flask app route with
export FLASK_APP=index.py
- You will also need to export the Flask environment with
export FLASK_ENV=development
- Lastly, execute
flask run
and your program should be running athttp://127.0.0.1:5000/
To deploy this to vercel, all you gotta do is run vercel --prod
in your terminal and follow through with the default setup criteria, as shown below:
? Set up and deploy “~/Desktop/username/moviebot”? [Y/n] y
? Which scope do you want to deploy to? vercel-username
? Link to existing project? [y/N] n
? What’s your project’s name? moviebot
? In which directory is your code located? ./
> Upload [====================] 98% 0.0sNo framework detected. Default Project Settings:
- Build Command: `npm run vercel-build` or `npm run build`
- Output Directory: `public` if it exists, or `.`
- Development Command: None
? Want to override the settings? [y/N] n
If you run into the error zsh: command vercel not found
, you might need to run the following:
export PATH="/Users/steventey/.npm-global/bin/:$PATH"
The AWS Lambda function can be found in this model.py
file.
Feel free to contact me at [email protected] for more information about this project.