Source Code For Chatbot
Source Code For Chatbot
. Main Program:
Question DiagonosisTkinter.
import os
import webbrowser
import numpy as np
import pandas as pd
class HyperlinkManager:
self.text = text
self.reset()
def reset(self):
self.links = {}
self.links[tag] = action
self.text.config(cursor="hand2")
self.text.config(cursor="")
if tag[:6] == "hyper-":
self.links[tag]()
return
training_dataset = pd.read_csv('Training.csv')
test_dataset = pd.read_csv('Testing.csv')
Y = training_dataset.iloc[:, -1].values
dimensionality_reduction = training_dataset.groupby(training_dataset['progno
sis']).max()
labelencoder = LabelEncoder()
y = labelencoder.fit_transform(Y)
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
cols = training_dataset.columns
cols = cols[:-1]
importances = classifier.feature_importances_
indices = np.argsort(importances)[::-1]
features = cols
# Implementing the Visual Tree
def print_disease(node):
#print(node)
node = node[0]
#print(len(node))
val = node.nonzero()
#print(val)
disease = labelencoder.inverse_transform(val[0])
return disease
global val,ans
global tree_,feature_name,symptoms_present
if tree_.feature[node] != _tree.TREE_UNDEFINED:
name = feature_name[node]
threshold = tree_.threshold[node]
# ans = input()
ans = ans.lower()
if ans == 'yes':
val = 1
else:
val = 0
else:
symptoms_present.append(name)
else:
strData=""
present_disease = print_disease(tree_.value[node])
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
red_cols = dimensionality_reduction.columns
symptoms_given = red_cols[dimensionality_reduction.loc[present_d
isease].values[0].nonzero()]
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
# print("symptoms given " + str(list(symptoms_given)) )
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
confidence_level = (1.0*len(symptoms_present))/len(symptoms_giv
en)
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n')
# print()
QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
hyperlink = HyperlinkManager(QuestionDigonosis.objRef.txtDigonos
is)
def click1():
webbrowser.open_new(str(row['link'].values[0]))
#QuestionDigonosis.objRef.txtDigonosis.insert(END,str(strData)+'\n
')
yield strData
global tree_,feature_name,symptoms_present
tree_ = tree.tree_
#print(tree_)
feature_name = [
for i in tree_.feature
symptoms_present = []
# recurse(0, 1)
def execute_bot():
diseases = dimensionality_reduction.index
diseases = pd.DataFrame(diseases)
doctors = pd.DataFrame()
doctors['name'] = np.nan
doctors['link'] = np.nan
doctors['disease'] = np.nan
doctors['disease'] = diseases['prognosis']
doctors['name'] = doc_dataset['Name']
doctors['link'] = doc_dataset['Description']
record['name']
record['link']
#execute_bot()
class QuestionDigonosis(Frame):
objIter=None
objRef=None
def __init__(self,master=None):
master.title("Question")
# root.iconbitmap("")
master.state("z")
# master.minsize(700,350)
QuestionDigonosis.objRef=self
super().__init__(master=master)
self["bg"]="light blue"
self.createWidget()
self.iterObj=None
def createWidget(self):
self.lblQuestion=Label(self,text="Question",width=12,bg="bisque")
self.lblQuestion.grid(row=0,column=0,rowspan=
4)
self.lblDigonosis.grid(row=4, column=0,sticky="n",pady=5)
# self.varQuestion=StringVar()
self.txtQuestion.grid(row=0, column=1,rowspan=4,columnspan=20)
self.varDiagonosis=StringVar()
self.txtDigonosis.grid(row=4, column=1,columnspan=20,rowspan=20,pad
y=5)
self.btnNo=Button(self,text="No",width=12,bg="bisque", command=self.b
tnNo_Click)
self.btnNo.grid(row=25,column=0)
self.btnYes = Button(self, text="Yes",width=12,bg="bisque", command=s
elf.btnYes_Click)
self.btnYes.grid(row=25, column=1,columnspan=20,sticky="e")
self.btnClear.grid(row=27, column=0)
self.btnStart.grid(row=27, column=1,columnspan=20,sticky="e")
def btnNo_Click(self):
global val,ans
global val,ans
ans='no'
str1=QuestionDigonosis.objIter.__next__()
self.txtQuestion.delete(0.0,END)
self.txtQuestion.insert(END,str1+"\n")
def btnYes_Click(self):
global val,ans
ans='yes'
self.txtDigonosis.delete(0.0,END)
str1=QuestionDigonosis.objIter.__next__()
# self.txtDigonosis.insert(END,str1+"\n")
def btnClear_Click(self):
self.txtDigonosis.delete(0.0,END)
self.txtQuestion.delete(0.0,END)
def btnStart_Click(self):
execute_bot()
self.txtDigonosis.delete(0.0,END)
self.txtQuestion.delete(0.0,END)
QuestionDigonosis.objIter=recurse(0, 1)
str1=QuestionDigonosis.objIter.__next__()
self.txtQuestion.insert(END,str1+"\n")
class MainForm(Frame):
main_Root = None
for e in parent.pack_slaves():
e.destroy()
MainForm.main_Root = master
super().__init__(master=master)
master.geometry("300x250")
master.title("Account Login")
self.createWidget()
def createWidget(self):
self.btnLogin.pack()
self.btnRegister.pack()
self.lblTeam.pack()
self.lblTeam1.pack()
self.lblTeam2.pack()
self.lblTeam3.pack()
self.lblTeam4.pack()
def lblLogin_Click(self):
self.destroyPackWidget(MainForm.main_Root)
frmLogin=Login(MainForm.main_Root)
frmLogin.pack()
def btnRegister_Click(self):
self.destroyPackWidget(MainForm.main_Root)
frmSignUp = SignUp(MainForm.main_Root)
frmSignUp.pack()
class Login(Frame):
main_Root=None
def destroyPackWidget(self,parent):
for e in parent.pack_slaves():
e.destroy()
Login.main_Root=master
super().__init__(master=master)
master.title("Login")
master.geometry("300x250")
self.createWidget()
def createWidget(self):
self.lblMsg.pack()
self.username.pack()
self.username_verify = StringVar()
self.username_login_entry = Entry(self, textvariable=self.username_verif
y)
self.username_login_entry.pack()
self.password.pack()
self.password_verify = StringVar()
self.password_login_entry.pack()
self.btnLogin.pack()
def btnLogin_Click(self):
username1 = self.username_login_entry.get()
password1 = self.password_login_entry.get()
# messagebox.showinfo("Failure", self.username1+":"+password1)
list_of_files = os.listdir()
if username1 in list_of_files:
verify = file1.read().splitlines()
if password1 in verify:
messagebox.showinfo("Sucess","Login Sucessful")
self.destroyPackWidget(Login.main_Root)
frmQuestion = QuestionDigonosis(Login.main_Root)
frmQuestion.pack()
else:
else:
class SignUp(Frame):
m a i n _ R o o t = N o n
e
print("SignUp Class")
def destroyPackWidget(self,parent):
for e in parent.pack_slaves():
e.destroy()
SignUp.main_Root=master
master.title("Register")
super().__init__(master=master)
master.title("Register")
master.geometry("300x250")
self.createWidget()
def createWidget(self):
self.lblMsg.pack()
self.username_lable = Label(self, text="Username * ")
self.username_lable.pack()
self.username = StringVar()
self.username_entry.pack()
self.password_lable.pack()
self.password = StringVar()
self.password_entry.pack()
self.btnRegister.pack()
def register_user(self):
file.write(self.username_entry.get() + "\n")
file.write(self.password_entry.get())
file.close()
self.destroyPackWidget(SignUp.main_Root)
self.lblSucess.pack()
def btnSucess_Click(self):
self.destroyPackWidget(SignUp.main_Root)
frmQuestion = QuestionDigonosis(SignUp.main_Root)
frmQuestion.pack()
root = Tk()
frmMainForm=MainForm(root)
frmMainForm.pack()
root.mainloop()
2. Subprogram
Healthcare_chatbotconsole.py
import numpy as np
import pandas as pd
training_dataset = pd.read_csv('Training.csv')
test_dataset = pd.read_csv('Testing.csv')
X = training_dataset.iloc[:, 0:132].values
#print(X)
y = training_dataset.iloc[:, -1].values
#print(y)
dimensionality_reduction = training_dataset.groupby(training_dataset['progno
sis']).max()
#print(dimensionality_reduction)
labelencoder = LabelEncoder()
y = labelencoder.fit_transform(y)
#print(y)
classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)
cols = training_dataset.columns
cols = cols[:-1]
indices = np.argsort(importances)[::-1]
features = cols
def execute_bot():
def print_disease(node):
#print(node)
node = node[0]
#print(len(node))
val = node.nonzero()
#print(val)
disease = labelencoder.inverse_transform(val[0])
return disease
tree_ = tree.tree_
#print(tree_)
feature_name = [
for i in tree_.feature
]
symptoms_present = []
if tree_.feature[node] != _tree.TREE_UNDEFINED:
name = feature_name[node]
threshold = tree_.threshold[node]
ans = input()
ans = ans.lower()
if ans == 'yes':
val = 1
else:
val = 0
recurse(tree_.children_left[node], depth + 1)
else:
symptoms_present.append(name)
recurse(tree_.children_right[node], depth + 1)
else:
present_disease = print_disease(tree_.value[node])
red_cols = dimensionality_reduction.columns
symptoms_given = red_cols[dimensionality_reduction.loc[present_d
isease].values[0].nonzero()]
print()
print()
confidence_level = (1.0*len(symptoms_present))/len(symptoms_giv
en)
print()
print()
print()
#print(present_disease[0])
recurse(0, 1)
tree_to_code(classifier,cols)
diseases = pd.DataFrame(diseases)
doctors = pd.DataFrame()
doctors['name'] = np.nan
doctors['link'] = np.nan
doctors['disease'] = np.nan
doctors['disease'] = diseases['prognosis']
doctors['name'] = doc_dataset['Name']
doctors['link'] = doc_dataset['Description']
record['name']
record['link']
execute_bot()