basicchatbot-kel / chatbot_kel.py
ierhon's picture
Upload 5 files
d80c106
raw
history blame
No virus
1.26 kB
import numpy as np
from keras.saving import load_model
from keras.preprocessing.text import Tokenizer
from keras_self_attention import SeqSelfAttention
from model_settings_kel import *
import json
from tokenizer import *
with open(dataset_file, "r") as f:
dset = json.load(f)
with open(responses_file, "r") as f:
lines = [x.rstrip("\n") for x in f.readlines()]
fit_on_texts(list(dset.keys()))
model = load_model("chatbot_kel.keras", custom_objects={"SeqSelfAttention": SeqSelfAttention})
def find_line_number(array):
return sorted(zip(list(array), [x for x in range(len(array))]), key=lambda x:x[0], reverse=True)[0][1] # yeah, one big line, find the biggest value and return the number of the line
def generate(text, verbose=1):
tokens = list(tokenize(text.lower())) # text into tokens (almost words)
tokens = (tokens+[0,]*inp_len)[:inp_len] # cutting off the sentence after inp_len words
prediction = model.predict(np.array([tokens,]), verbose=verbose)[0]
line = find_line_number(prediction)
return lines[line]
if __name__ == "__main__": # if this code is not being imported, open the chat
while True:
inp = input("User: ")
gen = generate(inp)
if gen != "<null>": print(f"Bot: {gen}")