import numpy as np
def perplexity(string):
string = ''.join([i for i in string.lower() if i in char_indices])
p = [] # probs
sentences = []
next_chars = []
for i in range(0, len(string) - maxlen, step):
sentences.append(string[i : i + maxlen])
next_chars.append(string[i + maxlen])
count = len(sentences)
print(count)
x = np.zeros((len(sentences), maxlen, len(chars)))
for i, sentence in enumerate(sentences):
for t, char in enumerate(sentence):
x[i, t, char_indices[char]] = 1.0
preds = model.predict(x)
for i, (sentence, next_char) in enumerate(zip(sentences, next_chars)):
next_ind = char_indices[next_char]
p.append(preds[i, next_ind])
return np.power(2, -np.log2(p).sum() / count)