All Projects → kaushikjadhav01 → Movie-Recommendation-Chatbot

kaushikjadhav01 / Movie-Recommendation-Chatbot

Licence: other
Movie Recommendation Chatbot provides information about a movie like plot, genre, revenue, budget, imdb rating, imdb links, etc. The model was trained with Kaggle’s movies metadata dataset. To give a recommendation of similar movies, Cosine Similarity and TFID vectorizer were used. Slack API was used to provide a Front End for the chatbot. IBM W…

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Movie-Recommendation-Chatbot

Movie Recommendation Engine
Movie Recommender based on the MovieLens Dataset (ml-100k) using item-item collaborative filtering.
Stars: ✭ 21 (-36.36%)
Mutual labels:  recommendation-engine, movie-recommendation
intro-to-ml
A basic introduction to machine learning (one day training).
Stars: ✭ 15 (-54.55%)
Mutual labels:  scikit-learn
Node Red Node Watson
A collection of nodes for the IBM Watson services
Stars: ✭ 74 (+124.24%)
Mutual labels:  watson
watson-discovery-food-reviews
Combine Watson Knowledge Studio and Watson Discovery to discover customer sentiment from product reviews
Stars: ✭ 36 (+9.09%)
Mutual labels:  watson
Node Sdk
☄️ Node.js library to access IBM Watson services.
Stars: ✭ 1,471 (+4357.58%)
Mutual labels:  watson
RecommendationEngine
Source code and dataset for paper "CBMR: An optimized MapReduce for item‐based collaborative filtering recommendation algorithm with empirical analysis"
Stars: ✭ 43 (+30.3%)
Mutual labels:  recommendation-engine
Watbot
An Android ChatBot powered by IBM Watson Services (Assistant V1, Text-to-Speech, and Speech-to-Text with Speaker Recognition) on IBM Cloud.
Stars: ✭ 64 (+93.94%)
Mutual labels:  watson
MachineLearning
Machine learning for beginner(Data Science enthusiast)
Stars: ✭ 104 (+215.15%)
Mutual labels:  recommendation-engine
go-ml-benchmarks
⏱ Benchmarks of machine learning inference for Go
Stars: ✭ 27 (-18.18%)
Mutual labels:  scikit-learn
lending-club
Applying machine learning to predict loan charge-offs on LendingClub.com
Stars: ✭ 39 (+18.18%)
Mutual labels:  scikit-learn
kenchi
A scikit-learn compatible library for anomaly detection
Stars: ✭ 36 (+9.09%)
Mutual labels:  scikit-learn
Watsonwebserver
Watson is the fastest, easiest way to build scalable RESTful web servers and services in C#.
Stars: ✭ 125 (+278.79%)
Mutual labels:  watson
pipeline
PipelineAI Kubeflow Distribution
Stars: ✭ 4,154 (+12487.88%)
Mutual labels:  scikit-learn
Simpleaudioindexer
Searching for the occurrence seconds of words/phrases or arbitrary regex patterns within audio files
Stars: ✭ 100 (+203.03%)
Mutual labels:  watson
imbalanced-ensemble
Class-imbalanced / Long-tailed ensemble learning in Python. Modular, flexible, and extensible. | 模块化、灵活、易扩展的类别不平衡/长尾机器学习库
Stars: ✭ 199 (+503.03%)
Mutual labels:  scikit-learn
Nlc Icd10 Classifier
A simple web app that shows how Watson's Natural Language Classifier (NLC) can classify ICD-10 code. The app is written in Python using the Flask framework and leverages the Watson Developer Cloud Python SDK
Stars: ✭ 66 (+100%)
Mutual labels:  watson
Chatbot Watson Android
An Android ChatBot powered by Watson Services - Assistant, Speech-to-Text and Text-to-Speech on IBM Cloud.
Stars: ✭ 169 (+412.12%)
Mutual labels:  watson
notebooks
A docker-based starter kit for machine learning via jupyter notebooks. Designed for those who just want a runtime environment and get on with machine learning. Docker tags:
Stars: ✭ 29 (-12.12%)
Mutual labels:  scikit-learn
pygrams
Extracts key terminology (n-grams) from any large collection of documents (>1000) and forecasts emergence
Stars: ✭ 52 (+57.58%)
Mutual labels:  scikit-learn
100DaysOfMLCode
I am taking up the #100DaysOfMLCode Challenge 😎
Stars: ✭ 12 (-63.64%)
Mutual labels:  scikit-learn

Movie-Recommendation-Chatbot

The chatbot uses a recommendation engine to suggest similar movies with their IMDB links and posters. In addition, it also provides information about the following properties of the movie input by the user:

  • movie genre
  • movie plot
  • revenue
  • budget
  • IMDB rating
  • IMDB site link

To give a recommendation of similar movies, Cosine Similarity and TFID vectorizer were used. Slack API was used to provide a Front End for the chatbot. IBM Watson was used to link the Python code for Natural Language Processing with the front end hosted on Slack API. Libraries like nltk, sklearn, pandas and nlp were used to perform Natural Language Processing and cater to user queries and responses. Since the chatbot is hosted on Slack, multiple users can communicate with it at the same time.

Screenshots

Find more screenshots, please visit the screenshots folder Or click here

Technical Concepts

Natural Language Processing is a subfield of linguistics, computer science, information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data. Challenges in natural language processing frequently involve speech recognition, natural language understanding, and natural language generation.
More information can be found here

Pilot is the stage of development where the chatbot is deployed to a small group of users for testing. Pilots are especially critical for chatbots, because unlike a web application, the range of possible user input is unlimited.
More information can be found here

Proof of Concept (POC) is the stage of development where the chatbot functions properly so long as the input is artificially constrained. A POC demonstrates the potential. POCs are especially useful for emerging technologies that are not fully understood by stakeholders, like chatbots.
More information can be found here

Intent is the user’s intention. For example, if a user types “show me yesterday’s financial news”, the user’s intent is to retrieve a list of financial headlines. Intents are given a name, often a verb and a noun, such as “showNews”.
More information can be found here

Entities modify an intent. For example, if a user types “show me yesterday’s financial news”, the entities are “yesterday” and “financial”. Entities are given a name, such as “dateTime” and “newsType”. Entities are sometimes referred to as slots.
More information can be found here

Conversational UI are User interfaces based on human speech, either written or spoken. Conversational UIs don’t use buttons, links or other graphical elements. Many chatbots, including Tangowork, mix conversational UI with graphical UI.
More information can be found here

Technologies Used

How to Install and Configure?

This file will walk you through the steps to setup your bot. Download the entire folder and the follow the steps below.
Step 1: Create Slack Bot user Please follows the instructions in the link below to create a Slack App.

https://github.com/kaushikjadhav01/Movie-Recommendation-Chatbot/blob/master/slack/Create_slack_app.ipynb

Step 2: Create a IBM Watson account and Upload the bot.json workspace Please follows the instructions in the link below to create a Slack App.

https://github.com/kaushikjadhav01/Movie-Recommendation-Chatbot/blob/master/nlp/IBM_Watson_Conversation_setup.ipynb

Step 3: Install required packages Install the required packages listed in the requirements.txt file. To install the required packages, please use the code below. I might have missed some packages to include in the requirements.txt file. When you initiate the bot, it might fail that a particular module does not exist. Please install it and then initiate bot again, which will fix the issue.

pip3 install -r requirements.txt

Step 4: Update the config files with the Slack and Watson API details Please make sure that you modified the API details both for Slack and Watson in the config.py file

Step 5: Download data from source and perform Data Preparation The data for this example is downloaded from the location below,

https://www.kaggle.com/rounakbanik/movie-recommender-systems/data

Name of the dataset - movies_metadata.csv

Since the dataset size is greater than 25MB, I provided only a snippet here in the data folder. However, the exercise is built on the entire dataset obtained from the source. Please download the data from Kaggle and use it for your practice.

"metadata_prep.csv" will be created after you run the data preparation code which will be later used in nlp models to train the movie recommendation system. The data preparation code is provided below.

https://github.com/kaushikjadhav01/Movie-Recommendation-Chatbot/blob/master/data/Data_Preparation.ipynb

I have uploaded the sample of the data here (metadata_prep_sample.csv).

Step 6: Create "onetime.txt" file Navigate to the folder where the main.py file resides and execute the code below.

python3 nlp/nlp_solutions/onetime_run_file.py This will create the "onetime.txt" file automatically. If you need to rename this file, update the name in "config.py" file.

Step 7: Initiate Bot Navigate to the folder where the main python script exists and run the code below.

python main.py

Authors

Kaushik Jadhav

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].