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)) # 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 != "": print(f"Bot: {gen}")