前回の記事でN階マルコフ連鎖を用いた文章の生成プログラムについて考えたので、どんな文章にもすぐに適応できるように一般化しておこうと思います。
目次
コード
import janome.tokenizer
import markovify
def markov_chain(text):
tokenizer = janome.tokenizer.Tokenizer()
tokens = tokenizer.tokenize(text=text)
text = ''
for i in [t.surface for t in list(tokens)]:
if i == '。':
text += '\n'
else:
text += i
text_model = markovify.NewlineText(text, state_size=2)
sentences = []
for i in range(20):
print('sentence No.' + str(i+1))
if text_model.make_sentence(tries=100) == None:
print('Failed to generate.')
else:
sentences.append(text_model.make_sentence(tries=100))
print(text_model.make_sentence(tries=100))
return sentences
実行
ターミナルに結果を出力するだけの場合は、関数を実行します。
text = 'text'
if __name__ == '__main__':
markov_chain(text=text)生成された文章をリストとして取り出す場合には、変数に代入します。
sentences = markov_chain(text=text)

