2009-08-15
■ 送る
18で帰るらしいので,木津駅まで送る. 楽しかった.
■ tomocha - 2-gramデータベースで,マルコフ生成
とりあえずマルコフ生成*1をしようということで,やっているのだが, 粗造りながらも,なんとか骨組みはできた. 2ちゃんねるから300件ほどスレッドを取ってきて *2, それらを形態素で分かち書きして,2-gramデータベース*3を作った.そして,それをもとに文章生成してみた.
しかし,実際に文章を生成してくれると, 意味のない文章でも楽しいものだなあ.
たとえば,"山"から文章を生成してみたら以下のものができた.
getNext(<20) 山ほどのは、「けいおんです。「けいおんです。「けいお getRandom 山ほどセレブもの見られるとやる気満々。男っぷりを贈呈し違法複製ししたくて今から消えまくり
getNextは共起確率が最も高いものを単純につなげただけ. getRandomは2-gram*4データベースにおいて,1度でも共起しているの中からランダムにつなげていったもの.
何度か遊んでみて分かるのは,単純に 案外ランダムで選択してみても文章ができちゃうということ. ただし,上で挙げたのは,割とうまくいった例.
秘密もチェックしなかったときほどおという恋愛に忠実さ
などという,意味不明な文章の中でも,より意味不明な文章を生成することもままある.
あとは,単純に頻度が高いものを選択していくやり方だと, 上記のような
「 → けいおん → です → 。 → 「
といった,無限ループが発生すること. 句読点などの記号は除外することや,頻度で重み付けしたランダム生成を試してみるのもよいかもしれない.
ちょっとはPythonにも慣れてきて, NAIST入ってからやっとこさNLPっぽいことやって(やっとか!), (内容はともかく)目で分かる結果が出て, 今日は大満足である.