サムネがコーヒーの記事は書きかけです。

N階マルコフ連鎖を用いた文章生成のテンプレート

前回の記事で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)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です