保存马尔可夫链的迭代结果 Python

Save iteration's result from Markov Chain Python

在自然语言生成(NLG)的背景下,我想根据马可夫链的原理,用Python的库"Markovify"生成300个句子。 我的包含文本的输入文件是 "SD".

首先,我能够使用以下代码打印所有迭代的 (=300) 结果(文本):

import markovify
text_model = markovify.NewlineText(SG.Text, state_size = 1)

  for i in range(300): # Generate 300 sentences 
            result = [] 
            result.append(text_model.make_sentence())
            print(result)

然后,我想在一个列表中获得所有这些迭代结果的列表,所以我尝试了:

def f(i,result):
    for i in range(300): # Generate 300 sentences 
        result = [] 
        result.append(text_model.make_sentence())
    return result

但我只得到一个包含上次迭代结果的列表。 我可以在我的代码中修改什么以获得包含所有迭代结果的列表?

result = []必须在for循环之前,否则你每次迭代都初始化它:

def f():
    result = [] 
    for i in range(300): # Generate 300 sentences 
        result.append(text_model.make_sentence())
    return result

sentences = f()
print(sentences)

编辑:您实际上不需要提供 resulti 作为参数。

更好的理解是:

def f():
    return [text_model.make_sentence() for _ in range(300)]