
In this tutorial, I will show you how to build your very own chatbot using Python. There are broadly two variants of chatbots, Rule-based and Self-learning.
A rule-based bot uses some rules on which it is trained, while a self-learning bot uses some machine-learning-based approach to chat.
In this tutorial, I will show you how to create a simple and quick chatbot in python using a rule-based approach.
Lets Import the libraries
from nltk.chat.util import Chat, reflections
Create the chatbots list of recognizable patterns and it’s a response to those patterns. To do this we will create a variable called pairs.
#Pairs is a list of patterns and responses. pairs = [ [ r"(.*)my name is (.*)", ["Hello %2, How are you today ?",] ], [ r"(.*)help(.*) ", ["I can help you ",] ], [ r"(.*) your name ?", ["My name is thecleverprogrammer, but you can just call me robot and I'm a chatbot .",] ], [ r"how are you (.*) ?", ["I'm doing very well", "i am great !"] ], [ r"sorry (.*)", ["Its alright","Its OK, never mind that",] ], [ r"i'm (.*) (good|well|okay|ok)", ["Nice to hear that","Alright, great !",] ], [ r"(hi|hey|hello|hola|holla)(.*)", ["Hello", "Hey there",] ], [ r"what (.*) want ?", ["Make me an offer I can't refuse",] ], [ r"(.*)created(.*)", ["Aman Kharwal created me using Python's NLTK library ","top secret ;)",] ], [ r"(.*) (location|city) ?", ['New Delhi, India',] ], [ r"(.*)raining in (.*)", ["No rain in the past 4 days here in %2","In %2 there is a 50% chance of rain",] ], [ r"how (.*) health (.*)", ["Health is very important, but I am a computer, so I don't need to worry about my health ",] ], [ r"(.*)(sports|game|sport)(.*)", ["I'm a very big fan of Cricket",] ], [ r"who (.*) (Cricketer|Batsman)?", ["Virat Kohli"] ], [ r"quit", ["Bye for now. See you soon :) ","It was nice talking to you. See you soon :)"] ], [ r"(.*)", ['That is nice to hear'] ], ]
Okay, so as we finished the patterns and responses, let’s take a look at something called reflections. Reflections is a dictionary file that contains a set of input values and corresponding output values.
For example, if the string input was “I am a programmer”, then the output would be “you are a programmer”.
print(reflections)
#Output {'i am': 'you are', 'i was': 'you were', 'i': 'you', "i'm": 'you are', "i'd": 'you would', "i've": 'you have', "i'll": 'you will', 'my': 'your', 'you are': 'I am', 'you were': 'I was', "you've": 'I have', "you'll": 'I will', 'your': 'my', 'yours': 'mine', 'you': 'me', 'me': 'you'}
We can also create our own reflections dictionary in the same format as reflections above. Below is an example of how to do this:
my_dummy_reflections= { "go" : "gone", "hello" : "hey there" }
Now let’s print a default message, and finish our chatbot:
#default message at the start of chat print("Hi, I'm thecleverprogrammer and I like to chat\nPlease type lowercase English language to start a conversation. Type quit to leave ") #Create Chat Bot chat = Chat(pairs, reflections)
Now, let’s start a conversation
#Start conversation chat.converse()
