Gundula-7.3/textgen.py

22 lines
699 B
Python

import random
def train(text, max_len=5):
model = dict()
for i in range(1, max_len+1):
model[i] = dict()
for k in range(len(text) - i - 1):
if not text[k:k+i] in model[i]:
model[i][text[k:k+i]] = dict()
if text[k+i] in model[i][text[k:k+i]]:
model[i][text[k:k+i]][text[k+i]] += 1
else:
model[i][text[k:k+i]][text[k+i]] = 1
return model
def query(model, previous):
for l in range(len(previous), 0, -1):
if previous[-l:] not in model[l]:
continue
freqs = model[l][previous[-l:]]
return random.choices(list(freqs.keys()), list(freqs.values()))[0]