Developing Chatbots project
If you want your business to prosper, you'll have to stay on top of the latest trends. The creation of a chatbot is a lengthy procedure. However, if well planned, it can be a piece of cake. The emergence of chatbots is one of the most significant recent developments in the area of customer care. On that topic, chatbots are one of the most well-known marketing tools in use today, aiding in the development of effective communication between businesses and their customers. So, read on to learn about data science projects for final year students as well as data science projects for beginners.
When it comes to chatbot creation, the most important thing to remember is to break the process down into simple steps and follow them one by one. Chatbots are quite handy if you want to improve your customer's experience by answering their questions, reducing human workload, performing remote troubleshooting, and so on. Rather than adopting a bot development framework or another platform, why not build a basic, intelligent chatbot from the ground up using deep learning? Though bots have a wide range of applications, one of the most well-known is live chat platforms, where users ask queries and a chatbot responds appropriately. There are different types of recommendation systems of the data science projects ideas.
So, in order to make your life easier, we've provided step-by-step chatbot programming guidelines. The days of waiting (not so patiently) on hold for answers to your most pressing questions are quickly fading away. In this lesson, you'll learn how to use Keras to create an end-to-end domain-specific intelligent chatbot solution.
Overview:
A chatbot is a piece of software that can communicate and conduct tasks in the same way that a human can. Because we're going to build a deep learning model, we'll need data to train it. Chatbots are marketing and automation solutions that are supposed to assist people by interacting with them and performing human-like interactions. Chatbots are widely utilised in customer service, social media marketing, and client instant messaging.
However, because this is a rudimentary chatbot, we will neither collect nor download any significant datasets. To communicate, these bots may employ Natural Language Processing (NLP) or audio analysis techniques, making them sound more natural. Based on how they're developed, there are two primary sorts of chatbot models: retrieval-based and generation-based models. These intentions may differ from one
chatbot solution to the next depending on the domain in which you are implementing a chatbot solution. AI-Chatbots are widely recommended by entrepreneurs and organizations. Let's take this data science project step by step.
Import and load the data file
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
import json
import pickle
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.optimizers import SGD
import random
words=[]
classes = []
documents = []
ignore_words = ['?', '!']
data_file = open('intents.json').read()
intents = json.loads(data_file)
Preprocess data
for intent in intents['intents']:
for pattern in intent['patterns']:
#tokenize each word
w = nltk.word_tokenize(pattern)
words.extend(w)
#add documents in the corpus
documents.append((w, intent['tag']))
if intent['tag'] not in classes:
classes.append(intent['tag'])
Create training and testing data
training = []
output_empty = [0] * len(classes)
for doc in documents:
bag = []
Build the model
model = Sequential()
model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(train_y[0]), activation='softmax'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
hist = model.fit(np.array(train_x), np.array(train_y), epochs=200, batch_size=5, verbose=1)
model.save('chatbot_model.h5', hist)
print("model created"
output_row = list(output_empty)
output_row[classes.index(doc[1])] = 1
training.append([bag, output_row])
random.shuffle(training)
training = np.array(training)
train_x = list(training[:,0])
train_y = list(training[:,1])
print("Training data created")
Predict the response (Graphical User Interface)
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
import pickle
import numpy as np
from keras.models import load_model
model = load_model('chatbot_model.h5')
import json
import random
intents = json.loads(open('intents.json').read())
words = pickle.load(open('words.pkl','rb'))
def clean_up_sentence(sentence):
sentence_words = nltk.word_tokenize(sentence)
return sentence_words
def bow(sentence, words, show_details=True):
sentence_words = clean_up_sentence(sentence)
bag = [0]*len(words)
for s in sentence_words:
for i,w in enumerate(words):
if w == s:
bag[i] = 1
if show_details:
print ("found in bag: %s" % w)
return(np.array(bag))
def predict_class(sentence, model):
p = bow(sentence, words,show_details=False)
res = model.predict(np.array([p]))[0]
ERROR_THRESHOLD = 0.25
results.sort(key=lambda x: x[1], reverse=True)
return_list = []
for r in results:
return_list.append({"intent": classes[r[0]], "probability": str(r[1])})
return return_list
.def getResponse(ints, intents_json):
tag = ints[0]['intent']
list_of_intents = intents_json['intents']
for i in list_of_intents:
if(i['tag']== tag):
result = random.choice(i['responses'])
break
return result
def chatbot_response(text):
ints = predict_class(text, model)
res = getResponse(ints, intents)
return res
#Creating GUI with tkinter
import tkinter
from tkinter import *
def send():
msg = EntryBox.get("1.0",'end-1c').strip()
EntryBox.delete("0.0",END)
if msg != '':
ChatLog.config(state=NORMAL)
ChatLog.insert(END, "You: " + msg + '\n\n')
ChatLog.config(foreground="#442265", font=("Verdana", 12 ))
res = chatbot_response(msg)
ChatLog.insert(END, "Bot: " + res + '\n\n')
ChatLog.config(state=DISABLED)
ChatLog.yview(END)
base = Tk()
base.title("Hello")
base.geometry("400x500")
base.resizable(width=FALSE, height=FALSE)
#Create Chat window
ChatLog.config(state=DISABLED)
#Bind scrollbar to Chat window
scrollbar = Scrollbar(base, command=ChatLog.yview, cursor="heart")
ChatLog['yscrollcommand'] = scrollbar.set
#Create Button to send message
SendButton = Button(base, font=("Verdana",12,'bold'), text="Send", width="12", height=5,
bd=0, bg="#32de97", activebackground="#3c9d9b",fg='#ffffff',
command= send )
#Create the box to enter message
EntryBox = Text(base, bd=0, bg="white",width="29", height="5", font="Arial")
#EntryBox.bind("", send)
#Place all components on the screen
scrollbar.place(x=376,y=6, height=386)
ChatLog.place(x=6,y=6, height=386, width=370)
EntryBox.place(x=128, y=401, height=90, width=265)
SendButton.place(x=6, y=401, height=90)
base.mainloop()
If you want to learn more about how to do data science projects step by step, visit our website Learnbay: data science course in Chennai.
Comments
Post a Comment