2011年3月21日月曜日

Graphvizで短歌を視覚化してみた

久しぶりの休みかつ三連休だけど、電車で出かけたりするのはどうも気が乗らない。自転車で行ける範囲じゃないと、なんとなく不安な気がして、結局遠くまでは出かけなかった。

時間があったので、かつてから試してみたかった短歌の視覚化を試してみた。

やったことは以下のこと。

1. 石川啄木の『悲しき玩具』を青空文庫から取得
2. 短歌を日本語形態素解析YahooAPIで解析して、Graphvizのフォーマットに変換
3. Graphvizでグラフ出力

詳細は以下。

1. 石川啄木の『悲しき玩具』を青空文庫から取得

青空文庫から、テキストファイル(ルビ入り)のファイルを取得した。
XHTMLファイルの中身も見たけども、簡単にルビを取り除くならテキストファイルの方が簡単そうだったのでこちらを選択した。ルビは正規表現にて削除して短歌だけを取り出せるようにした。

2. 短歌を日本語形態素解析YahooAPIで解析して、Graphvizのフォーマットに変換

手順1で取得した短歌をYahooAPIで構文解析した。
日本語形態素解析とは「日本語文を形態素に分割し、品詞、読みがなの付与、統計情報を取得できる機能」。
MeCabもインストールしてみたけど、MeCabの結果はテキストで帰ってくるようだった。YahooAPIでは、結果がXMLで取得でき、BeautifulSoupで簡単に処理できたので、YahooAPIを利用した。Pythonから直接Graphvizを利用する方法も調べたんだけど断念して、Graphvizのフォーマットに合わせたファイルを出力するようにした。

3. Graphvizでグラフ出力

Graphvizというグラフ視覚化ソフトで手順2までで生成したファイルをグラフ化した。
これはもう、ファイルを読み込ませて画像を出力させるだけ。

実際には『悲しき玩具』のすべての短歌をグラフ化してるんだけど、サンプルとして以下の2つのみをアップ。
思っていたより、大した結果を得られなかったので全部載せる必要もないかと。

ある日、ふと、やまひを忘れ、牛の啼く真似をしてみぬ、――妻子の留守に。

あの頃はよく嘘を言ひき。平気にてよく嘘を言ひき。汗が出づるかな。

以上の実装は、初のPythonでの実装。
Python使いやすい。
でも自分にはPyDevを使ってIDEで開発しないとダメだなってわかった。