import numpy as np import pickle import embedding from tqdm import tqdm import random import train top_p = 1 class Neuron: def __init__(self, name, inp): self.name = name self.inp = embedding.getvec(name) with open("net.pckl", "rb") as f: net = pickle.load(f) def top_closest_vectors(input_vector, top_p=1): distances = [(np.linalg.norm((neuron.inp - input_vector)), ind) for ind, neuron in enumerate(net)] closest_indices = sorted(distances, reverse=False, key=lambda x:x[0])[:top_p] return closest_indices def generate(text): vec = embedding.getvec(text.replace("\n", "")) return net[random.choice(top_closest_vectors(vec))[1]].name