すもももももももものうち

今年は「マルコフ連鎖」というものを使って文章を生成する上での基礎のような部分について語ろうと思います。一応去年の続きです。

1,マルコフ連鎖

Wikipediaによれば、”確率過程の一種であるマルコフ過程のうち、とりうる状態が離散的なもの”を指すらしいです。何を言っているのかさっぱり分かりません。ただしこれは数学的な定義で、今回使うのはこれを利用した「マルコフ連鎖モンテカルロ法」と呼ばれるものなのでこの定義は分からなくても問題ありません。

2,マルコフ連鎖モンテカルロ法

今日が晴れの場合明日は6分の1の確率で雨、3分の1の確率で曇り、2分の1の確率で晴れになるとします。今日が雨や曇りの場合もこのようにしていけば、現在の状態のみで未来の状態を確率的に求めることができます。これがマルコフ連鎖モンテカルロ法です。以後の「マルコフ連鎖」はこれのことを指します。

3,形態素解析

文字列を言語の最小単位の形態素に分解し、それぞれの品詞などを判別する手法のこと。例えば「すもももももももものうち」という日本語ネイティブの私たちでも初見では読めないような文章を形態素解析すると

すもも 名詞,一般・・・・すもも,スモモ,スモモ
も   助詞,係助詞・・・・も,モ,モ
もも  名詞,一般・・・・もも,モモ,モモ
も   助詞,係助詞・・・・も,モ,モ
もも  名詞,一般・・・・もも,モモ,モモ
の   助詞,連体化・・・・の,ノ,ノ
うち  名詞,非自立,副詞可能・・・・うち,ウチ,ウチ

このような結果が出てきました。文明の利器は良いですね。

具体的な文章生成の流れ

文字列を形態素解析し、マルコフ連鎖を利用して文章を生成する。「私は本を買う」「私は家具を買う」の2つの文章でやってみます。

まずは2つの文を形態素解析して、「私 は 本 を 貰う 。」「私 は 家具 を 買う 。」とパーツに分けます。

次にマルコフ連鎖を利用します。「私」の次に来る可能性があるのは「は」だけなので「私は」は確定です。「は」の次には「本」または「家具」が2分の1ずつの確率で選ばれます。ここでは本が選ばれたことにします。「本」の次は「を」が確定、「を」の次は「貰う」または「買う」の二択です。このようにしていくといくつかの文章が作れます。

基本的には、文章を分かち書き→確率で次の文字を決定という流れを繰り返していけば参照する文章の数がいくら増えたとしても文章を生成することは可能なわけです。

4,メリット

楽しい

5,デメリット

確率を利用して機械的に実行するのでめちゃくちゃな文章が生成されることがある。

例えば「私はパンを食べる」と「私はラーメンをすする」の2つで実行する場合、「私はパンをすする」などという文が出てくることもあるわけです。すするな。色々調べてみましたがこれを解決する方法は無さそうです。

終わりに

今回は私の理解が及ばず実際に作成するところまでたどり着かずに基本的な考え方を紹介するにとどまりましたが、来年にはきっと実物ができているはずです。来年まで待ち切れない方や来年もどうせできてないだろうという方は是非”校長先生の話エンドレス”と検索してみてください。去年打った布石を回収しきれないまま今年も布石を打つという悲しい事態になってしまいましたが、ここまで読んでいただきありがとうございました。

次へsinの近似値を求めよう!>
前へパソコンの構造について>