適当な文章を生成する
(2025.04.08)
(2025.04.08)
Pythonでマルコフ連鎖を利用して文章を作る。
マルコフ連鎖を使った文章生成を手軽に試したい。
であれば自分で実装してみよう。
Python
マルコフ連鎖を利用した文章生成を行う
あらかじめ元の文章を単語ごとに区切っておいて、「直前の語」からそれに続く単語を選び出す。
例えば、「僕はカレーが好きだ。」を分解すると「僕/は/カレー/が/好き/だ/。」となり、「カレー」の後には「が」、「好き」の後には「だ」が必ず続くというような状態になる。
ここでもう一文「この/カレー/は/とても/辛い/。」のような文章が与えられた場合、「カレー」の後に続く語は「が」か「は」のどちらかになる。選択肢が複数ある場合、選ばれるものは確率により決定される(2個ならそれぞれ50%)。
そのためこの2文の場合だと「僕/は/とても/辛い/。」「この/カレー/は/カレー/は/カレー/が/好き/だ/。」のような、めちゃくちゃな文章が生成される可能性がある。
「直前の状態」のみが次の決定に影響する、というのがマルコフ連鎖の本質だ。
上記の生成の手順をほぼそのままコードで実装。
Pythonにはマルコフ連鎖のライブラリがすでに存在するのだが、なんかややこしそうだし好きになれない 自分の手で実装することでより理解が深められると考えたため、自作を決意した。
文章の分解に使用するのはjanomeという形態素解析用のライブラリ。これはおとなしくインストールして使った。
元となる文章はPC内のファイルから読み込むようにした。
⓪プログラム内の変数「di」を、生成元となるテキストファイルの格納先フォルダを指定するように書き換える
①プログラムを起動して、ファイルの名前※を入力すれば生成が開始される。
※「di」からの相対パス
以下のリンクからダウンロードできます。実行には、Pythonの実行環境が必要です。
「Mchain」/「mchain2」
※ 使い方説明などもリンク先にあり
実行の際はライブラリを実行環境にインストールする必要があります。
tag:Python,マルコフ連鎖