マルコフ連鎖ライブラリを使って文章を学習して自動生成します。
環境はWinsows10、Anacondaです。 github.com
マルコフ連鎖とは
Wikipediaによると、
マルコフ連鎖を用いて文生成を行う例を示します。
{明日は, 雨, です, 。}という状態の集合があったとする。
「明日は」という状態の次に「です」という状態がくる確率はP(です | 明日は)で表される。
P(明日は | 明日は)、P(雨 | 明日は)、P(です | 明日は)、P(。 | 明日は)の4つのうち、最も高い確率をもつのはP(雨 | 明日は)であるはずである。
確率的に「雨」へと状態が遷移すると、「明日は 雨」という文が生成される。
さらにその次の状態はP(明日は | 雨)、P(雨 | 雨)、P(です | 雨)、P(。 | 雨)の4つを比較して決定される。
確率が十分に正確であれば、「明日は 雨 です 。」という文の生成確率が最も高くなり、結果的にこの並びが一番選ばれやすくなる。
この文の生成確率はP(明日は)×P(雨 | 明日は)×P(です | 雨)×P(。 | です)で表される。
実際の文章では「雨」以外に晴、雪などがデータとしてあればそれらが候補となり、「明日」も今日、午後などたくさんの選択候補が存在し
それらを結び付けて新しい文章を自動生成します。
markobifyのインストール
AnacondaPromptを開いてmarkovifyをインストールします。
インストール時にErrorが発生する場合は以下の設定を行う必要があります。
コントロールパネル → 時計と地域 → 地域 → 管理 → システムロケールの変更 → utf-8を使用
markovifyの実行
Jupyter Notebookを開いて実行します。ネット上にあったトランプ大統領の演説をコピーしてtrump.txtに張り付けました。
上の例ではtrump.txtファイルを直下に置く必要があります。Jupyter Notebook上でos.getcwdを実行すればフォルダの場所が確認できます。
os.getcwd()