マルコフ連鎖ライブラリ markovify 

 

マルコフ連鎖ライブラリを使って文章を学習して自動生成します。

 環境はWinsows10、Anacondaです。 github.com

 

 

マルコフ連鎖とは

Wikipediaによると、

マルコフ連鎖(マルコフれんさ、英: Markov chain)とは、確率過程の一種であるマルコフ過程のうち、とりうる状態が離散的(有限または可算)なもの(離散状態マルコフ過程)をいう。

 

 マルコフ連鎖を用いて文生成を行う例を示します。

 

 

{明日は, 雨, です, 。}という状態の集合があったとする。

「明日は」という状態の次に「です」という状態がくる確率はP(です | 明日は)で表される。

P(明日は | 明日は)、P(雨 | 明日は)、P(です | 明日は)、P(。 | 明日は)の4つのうち、最も高い確率をもつのはP(雨 | 明日は)であるはずである。

確率的に「雨」へと状態が遷移すると、「明日は 雨」という文が生成される。

さらにその次の状態はP(明日は | 雨)、P(雨 | 雨)、P(です | 雨)、P(。 | 雨)の4つを比較して決定される。

確率が十分に正確であれば、「明日は 雨 です 。」という文の生成確率が最も高くなり、結果的にこの並びが一番選ばれやすくなる。

この文の生成確率はP(明日は)×P(雨 | 明日は)×P(です | 雨)×P(。 | です)で表される。

実際の文章では「雨」以外に晴、雪などがデータとしてあればそれらが候補となり、「明日」も今日、午後などたくさんの選択候補が存在し
それらを結び付けて新しい文章を自動生成します。

markobifyのインストール

AnacondaPromptを開いてmarkovifyをインストールします。 

pip install markovify

 

インストール時にErrorが発生する場合は以下の設定を行う必要があります。

コントロールパネル → 時計と地域 → 地域 → 管理 → システムロケールの変更 → utf-8を使用

 

markovifyの実行 

Jupyter Notebookを開いて実行します。ネット上にあったトランプ大統領の演説をコピーしてtrump.txtに張り付けました。

f:id:yo4-su:20201203130407p:plain


上の例ではtrump.txtファイルを直下に置く必要があります。Jupyter Notebook上でos.getcwdを実行すればフォルダの場所が確認できます。

import os

os.getcwd()