22 lines
699 B
Python
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]
|