def train_model(poems, order=2):
简单的基于马尔可夫链的模型
model = {}
for poem in poems:
words = word_tokenize(poem)
for i in range(len(words) order):
key = tuple(words[i:i+order])
value = words[i+order]
if key not in model:
model[key] = []
model[key].append(value)
return model
def generate_poem(model, start, length=50):
poem = list(start)
for _ in range(length):
key = tuple(poem[2:])
if key not in model:
break
next_word = random.choice(model[key])
poem.append(next_word)
return ' '.join(poem)