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 | |