題名:Java Diary-101章

五 郎の 入り口に戻る
日付:2011/12/16
目 次に戻る


Gorotte Part2

前回までのあらすじ:男は例によって「自分が何を作っているのか」わからないまま開発を進めていた。「当面の目標:Evernoteの データをブラウズできるようにする」が達成され、改めて「そもそも何を作るのか」という問題に直面するのであった。

というわけで問題はどのようにして溜め込んだevernoteのメモから新しい文章を作り上げるかだ。いい加減なアイディアだけはいく つか存在していた。例えば

センテンスをごしょっとくしゃくしゃにする。するとそれによりくっついた離れていた単語が、新しい文章を探してくる。
逆にセンテンスを広げると単語がばらばらになる。そこから新しいものが生まれる。

単語をお互いつないでおく。その上でぐるんぐるんと振る。あまり振ると単語が飛び出し、他のものにかわったり、何かを持ってきたり す る。

書いたときは得意だったのだが、いざ自分が作る立場になると

「君は何を寝言を並べているんだい?」

といいたくもなる。なんだそれは。これらを書いていたのが4月の末。5月の20日頃には、こんな文字がならんでいる。

自分が興味深いとおもったものを箱に入れておく。それをひっくり返したり、かきまぜたりする。そこからまた新しいつなぎを生む。

単語を勝手に配置する。するとそれに合うように文章が出てくる。もちろん文章はもともとその配置に合わせて書かれたものではないか らデタラメだが、それでもいいのだ。

ここから何がわかるかと言えば、「何を作るか」について行き詰まっている、ということだ。3週間もたっているのに全然具体化されていな い。なんだか投げやりになっている気もする。

しかしいつまでも迷っている訳にはいかない。元の計画からいけば、5月末までにはとりあえず何か動いていなければならないのだ。そこで 「文章を組み合わせて新しく文章を作る」というところに活路を見出す。それまでに

「Evernoteに保存した文章を画面上に表示し、かつ単語を選択する」

というのはできていた。選択した単語のところで、同じ単語を使っている別の文章につなぐ、というのはどうだろう。それでもって一定長さ のところでまた別の文章につなぐ、と。こうするとなんだか複数の「面白い」と思った文章をまぜこぜにした文章ができたりしないだろうか、 でもって面白くないだろうか。

調べてみれば、人工無能的文章生成の分野でこうした「マルコフ連鎖」(この言葉が何を意味しているかは気にしなくていいです)を利用し たアルゴリズムが種々検討されているらしい。論文はたいして存在していないが、実用的な

「このソースで動きます」

という解説文書は沢山でてくる。

それを観ながら実装、となるわけだが例によって簡単にはいかない。6月の始め、つまり私が某学会に参加している最中、この機能が動き出 した。あれこれ試験してみる。表示されている文章の任意の単語を選択すると、そこから同じ単語をもった別の文章につながる、という仕組み だ。これをこそこそやっていくと、いろいろな文が融合した文章ができあがり、それは使っている人間に新しい気づきを与えるのであった。

と頭の中でうたい文句を考えたところで、現実はなんともならない。勢いこんで作ったのは良いが、全然面白くない。少しいじってあれこれ トライするが、あきらめた。どうもこの方法はうまく動かないようだ。

とあきらめた時点で6月も半ばになっている。さてどうしよう。ここに至っては、新しいアルゴリズムに頼ろう。某研究会にでたときLDA なるアルゴリズムがある事を知った。なんだかわからないが、複数のトピックが含まれる文章を、きちんと識別してグルーピングしてくれるア ルゴリズムだ。これを使うことはできないだろうか?文章を選択して何か操作をすると、それと同じグループに所属する文章を表示してくれる とか。そう思うとさっそく実装を始める。正直に書くが、理屈はさっぱりわからない。しかし幸運にもJavaで実装した例が存在している。 それを使ってあれこれやる。

しかしわからないなりに、自分の頭で考えなくてはならない、とは後で気がついたことだ。文章のグループを作るアルゴリズムはかなり間 違っていた。というか自分で変なことをしなくてもちゃんと計算結果に含まれていたのだが、そんなことにも気がつかなかった。しかしとにも かくにもLDAは動き出す。ある文章を横にすい、っとやると同じグループに属する文章を表示する。あるいは、巨大なグループができてしま うことがあるので、あまりに巨大なグループはそれをつぶすように「工夫」するとか。

これでなんとか先に進める目処が出てくる。次々と表示されるEvernoteのメモを観ているだけでも結構楽しいし、考えるネタになる のだ。基本はこのやり方になるだろう。問題はLDAである。動きがおかしいときがあるのは我慢するにしても、それを論文に書くのはもっと つらい。自分でちゃんと理解したと言えないだけに

「査読結果:LDAの使い方が全く間違っている。よって没」

と書かれる恐怖におののき続ける。

そもそも私は何のためにこれを作っているかと言えば「とにかくEvernoteのメモを読み返し、並べてみることで新しい発想を得る事 ができるはずだ」と考えているからだ。論文でもそこを強調したいのであれば、別にLDAにこだわる必要は無い。背伸びするとろくなことは ない。そう考えるとまたもや方針を変更し、TF/IDFという古典的だが有効性が実証された方法を実装し始める。バグがあったりあれこれ 問題はあったが、しばらくの後ようやくプログラムが動き出す。結構快適に「類似文書」やら「ちょっと類似文書」が表示される。

多分ここまでできたところで、7月にはいっていたと思う。これから実際に使い、かつ論文を書きだす。なかなか画面上の文字が進まない。 今まで何度かWISS向けの論文は書いたが、今回が一番難産だったかもしれない。そもそも俺は何が言いたいのだ、と何度も自分に問いかけ る。実装とか概要は簡単にかけるのだが、一番最初の「はじめに」つまるところ「本論文の目的」に苦労する。作っておいて目的に悩むという のは変な話だが事実だからしょうがない。インターネットをあさり、論文の書き方なる文章を今更のごとく見つけ出す。何度も批判的な目で見 て改訂しろとある。あれこれ直す。

こうした論文の締め切りは延長されるのがお約束だとなんとなく思い込んでいた。しかし去年は延長されなかったし、今年もおそらくそうだ ろう。早めに論文を投稿してしまう。私は某所にこう書いた。

WISS2011への論文投稿完了。あとは寝て待つしか無い。今回最終的に何件になるのだろう。ちなみに昨年は締め切り延長ありま せん でしたので、延長をあてにしないようにしましょう。

こうなると後は野となれ山となれ。受付番号は12だった。今年はどこまで伸びて行く事だろう。

前の章 | 次の章


注釈