python

Pythonによる自然言語処理として今回はマルコフ連鎖を使って簡単に文章を生成してみます。
ワードサラダではどこかで使える文章ではないですが、順に自動作成の文章の質を上げていきましょう。

Contents

マルコフ連鎖とは

マルコフ連鎖とは、確率過程の一種であるマルコフ過程のうち、とりうる状態が離散的(有限または可算)なもの(離散状態マルコフ過程)をいう。また特に、時間が離散的なもの(時刻は添え字で表される)を指すことが多い(他に連続時間マルコフ過程というものもあり、これは時刻が連続である)。マルコフ連鎖は、未来の挙動が現在の値だけで決定され、過去の挙動と無関係である(マルコフ性)。各時刻において起こる状態変化(遷移または推移)に関して、マルコフ連鎖は遷移確率が過去の状態によらず、現在の状態のみによる系列である。特に重要な確率過程として、様々な分野に応用される。

マルコフ連鎖でどう文章を生成するのか

元となる文章を形態素解析でバラバラにします。
単語A~Fがあって
ABCADBCFと並んでいた場合
Aの次にはBまたはDが来る
Bの次にはCが来る
とある単語の次に来る単語が予測できる(頻度が高いほど確率が高い)

Aの次にC
AC
Cの次にA
ACA
ACABCF
というように与えた文章を元に生成する。
ある意味並び替えているようなものなので、与えた文章が短いとほぼ同じになってしまう。

単語の並びをペアとして保持していけば自力で行えるが、今回はライブラリでさくっと行う。

用意するもの

Python実行環境

Pythonで行うので当然必要です!

あわせて読みたい
python
AIのためにゼロからPython入門-環境構築編【Linux】
AIをやるためにゼロからPythonを学習していくための手順などのまとめです。 Python未経験でもAIに興味あるという人も最近は多いようですね。 AIを学習するために これからはAIの時代....! 目的 個人的に自然...

MeCabをPythonから使えるようにする

  • mecab
  • mecab-python3

形態素解析を行うのに使います。

あわせて読みたい
python
AIのためにゼロからPython入門-自然言語処理-形態素解析( MeCab)編
Pythonで自然言語処理を行うためにまずは形態素解析からやってみます。 今回は日本語の形態素解析を行うライブラリであるMeCabの導入と実際に形態素解析をします。 形態素解析とは 文章をバラバラに 文章を形態素という最小単位に...

markovify

Pythonマルコフ連鎖生成ライブラリです。
jsvine/markovify

pipで入れちゃう。

$ sudo pip install markovify

元となる文章

好きな文章を用意しましょう!
ある程度の長さがあったほうがいい。

自分で作成するのでもどっかからコピってくるのでも、スクレイピングでひっぱてくるのでも。

実際に文書を生成する

この記事を書いた人

鳥井 慎太郎
鳥井 慎太郎
Web事業家/ブロガー
毎日楽しい。 個人開発(Webサービス、ゲームアプリ)