Pythonリハビリのために文章自動生成プログラムを作ってみた
最近、PHPばかり触っていて、Pythonのことを忘れかけていたので、Pythonで何か作ることにした。
特に深い理由も無いが、ジェネレータ的な何かが作りたいと思って、文章の自動生成プログラムを作ることにした。
文章自動生成プログラムとは
元データを与えて、マルコフ連鎖を使うことで、元データとは異なるが、だいたい意味の通じる文章を生成するプログラム。
マルコフ連鎖とは、確率過程の一種であるマルコフ過程のうち、とりうる状態が離散的(有限または可算)なもの(離散状態マルコフ過程)をいう。また特に、時間が離散的なもの(時刻は添え字で表される)を指すことが多い(他に連続時間マルコフ過程というものもあり、これは時刻が連続である)。マルコフ連鎖は、未来の挙動が現在の値だけで決定され、過去の挙動と無関係である(マルコフ性)。各時刻において起こる状態変化(遷移または推移)に関して、マルコフ連鎖は遷移確率が過去の状態によらず、現在の状態のみによる系列である。特に重要な確率過程として、様々な分野に応用される。
マルコフ連鎖 - Wikipedia
つまり、現在が決まれば未来が決まり、過去は関係無いということ。
どのように利用するかと言うと、「マルコフ連鎖による文章の自動生成 - delirious thoughts」がわかりやすいかもしれない。
とりあえず、Pythonリハビリのために、マルコフ連鎖を使って、ごにょごにょして、文章自動生成プログラムを作りましたという話。
実際のプログラムはこちら > o-tomox/TextGenerator · GitHub
使い方
まずは、マルコフ連鎖のための事前準備を行う。
from PrepareChain import PrepareChain text = u"適当な長い文章。長い文章。" chain = PrepareChain(text) triplet_freqs = chain.make_triplet_freqs() chain.save(triplet_freqs, True)
これで、事前準備完了。
事前準備さえできていれば、あとは文章が作り放題となる。
下記のように実行するだけ。
from GenerateText import GenerateText generator = GenerateText() print generator.generate()