-
マルコフ連鎖とは
マルコフ連鎖とは、確率過程の一種であるマルコフ過程のうち、とりうる状態が離散的(有限または可算)なもの(離散状態マルコフ過程)をいう。 また特に、時間が離散的なもの(時刻は添え字で表される)を指すことが多い(他に連続時間マルコフ過程というものもあり、これは時刻が連続である)。 マルコフ連鎖は、未来の挙動が現在の値だけで決定され、過去の挙動と無関係である(マルコフ性)。 各時刻において起こる状態変化(遷移または推移)に関して、マルコフ連鎖は遷移確率が過去の状態によらず、現在の状態のみによる系列である。 特に重要な確率過程として、様々な分野に応用される。 Wikipedia [マルコフ連鎖](http://tinyurl.com/yv87qa/) より
-
tiarra にて収集した TimeLine Log からゴミを取り除き plain な文字列とする.
$ find ~/path/to/tiarra/log/ -name '*.txt' | xargs -n 10 sed -e 's/^.*>//g' | sort | uniq > full.txt
-
Log を一行ずつ MeCab により parse していく
-
今回は 2 階マルコフ連鎖とする.
-
2 階マルコフ連鎖とは
2 つの単語のつながりを見て次に出現する単語を確定する方法 例) すもももももももものうち ID| Word1 | Word2 | after ------------------------- 1 | すもも | も | もも 2 | も | もも | も 3 | もも | も | もも 4 | も | もも | の 5 | もも | の | うち といった Chain テーブルができる. これにより Word1 と Word2 の 2 つのつながりをみて次に出現する単語がきまるため "すもも" からスタートした場合 ID 1 - 2 の繋がりと ID 1 - 3 のつながりの2パターンが生まれる事となります.
-
Parse して DB に格納する Script として Markov.rb を作成した.
./Markov.rb /path/to/full.log
-
Markov.rb では助動詞の連続性を排除しており,助動詞が続く場合は結合してひとつの助動詞とみなしている.
-
テーブルは Word と Chain と分けておき,単語と品詞によって一意としている.
-
また,出現回数を保持することにより確立を加味する事ができるようにしておく.
-
上記処理にてマルコフ連鎖用のデータの生成が完了した.
-
上記データを利用してマルコフ連鎖を生成するす Script として Markov2.rb を作成した.
-
初回抽出データは名詞とする 13. データ量が膨大なため負荷軽減のため抽出幅を毎回ランダムに設定している.
上記をもってマルコフ連鎖を生成する.