保存马尔可夫链的迭代结果 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)
编辑:您实际上不需要提供 result
和 i
作为参数。
更好的理解是:
def f():
return [text_model.make_sentence() for _ in range(300)]
在自然语言生成(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)
编辑:您实际上不需要提供 result
和 i
作为参数。
更好的理解是:
def f():
return [text_model.make_sentence() for _ in range(300)]