| import random
|
| import json
|
| import torch
|
| import pyttsx3
|
|
|
| from model import NeuralNet
|
| from nltk_utils import bag_of_words, tokenize
|
|
|
| device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
|
|
| with open('intents.json', 'r') as json_data:
|
| intents = json.load(json_data)
|
|
|
| FILE = "data.pth"
|
| data = torch.load(FILE)
|
|
|
| input_size = data["input_size"]
|
| hidden_size = data["hidden_size"]
|
| output_size = data["output_size"]
|
| all_words = data['all_words']
|
| tags = data['tags']
|
| model_state = data["model_state"]
|
|
|
| model = NeuralNet(input_size, hidden_size, output_size).to(device)
|
| model.load_state_dict(model_state)
|
| model.eval()
|
|
|
| bot_name = "Surya"
|
| print("Let's chat! Note : It Can Be Make A Some Mistakes Because It Is in still under devolopment(type 'quit' to exit)")
|
|
|
|
|
| engine = pyttsx3.init()
|
| engine.say("Hello Sir Iam Surya What can i help you today ?")
|
|
|
| while True:
|
|
|
|
|
| sentence = input("You: ")
|
| if sentence == "quit":
|
| break
|
|
|
| sentence = tokenize(sentence)
|
| X = bag_of_words(sentence, all_words)
|
| X = X.reshape(1, X.shape[0])
|
| X = torch.from_numpy(X).to(device)
|
|
|
| output = model(X)
|
| _, predicted = torch.max(output, dim=1)
|
|
|
| tag = tags[predicted.item()]
|
|
|
| probs = torch.softmax(output, dim=1)
|
| prob = probs[0][predicted.item()]
|
| if prob.item() > 0.75:
|
| for intent in intents['intents']:
|
| if tag == intent["tag"]:
|
| response = random.choice(intent['responses'])
|
| print(f"{bot_name}: {response}")
|
|
|
|
|
| engine.say(response)
|
| engine.runAndWait()
|
| else:
|
| print(f"{bot_name}: I do not understand...")
|
|
|
|
|
| engine.say("I do not understand.")
|
| engine.runAndWait()
|
|
|