| 個人サイト |
| Preferred Infrastructure |
そろそろこの日記がプライベートなものなのかパブリックなものなのかの位置づけを考えなくてはいけなくなって来ましたが…。
先日、株式会社はてなの皆さんと共同で開発合宿を行いました。その時の様子はnaoyaさんの日記に詳しいので、そちらに譲ることにします。naoyaさんがオフィスをスキップしながらデータのダンプをされていたのが印象的でした。
PFIには色々な自然言語関連の技術が溜まっているのですが、それをWikipediaのような限定的なデータではなく、はてなブックマークやその他を通して日本語のWebデータ全体に適用させることが出来たのはとてもエキサイティングな経験でした。各技術を実装した時に、Web全体に使えたらこういうことが出来るのになぁと妄想してたことのうちいくつかが実現しそうで、そのうちの一つが今回の関連エントリー機能です。
まず最初に今回の機能の(僕の個人的な)思想を述べます。
・Webの検索を単語でしか出来ないのはおかしい。
・かといってPowersetのような自然言語で入力するのは、精度の意味でも、ユーザの手間の意味でも大変そう。
・今見ているページがそのページを見ている人が見たいものを明確に表しているのだから、これを使わない手は無いではないか。
・じゃぁ今見ているページに似ているページをWeb全体から検索できるようにするべきだよね。
大体こんな感じです。なので、ニュース速報だとか、各ユーザに対する静的なリコメンドだとかが念頭にあるわけではありません。
アイデアもライブラリも既に有ったので、はてなさんと提携することになったとなれば、後は実行するだけでした。一般的にはページとページとの関連は、文書中に現れる単語を用いるのだと思いますが、残念ながら、これを実行するのは簡単ではありません。ページには良く広告だとか目次だとかが付属するのですが、これを機械的に正確に取り除くのは難しいですし、そもそも量が多すぎます。そこで、最初はどのユーザがどのページにブックマークを付けているかという情報を用いて、ページとページの関連を計ることにしました。イメージは「このページを見ている人はこんなページも見ています」というものです。ところが、これが精度が悪い。何故なのかを考えたのですが、僕が思うに、この考え方は直近のブックマークに絞って用いるべきものだったのだのでしょう。人の趣味や嗜好というのはかなり多様で、過去に各人が行ったブックマーク全てに対して、この考え方を用いると、出てくる結果もかなり雑多なものになってしまう。なので、趣味や嗜好が限定的な直近のブックマークに絞れば良い結果が得られるでしょう。最近diggというサイトがリコメンドを出しましたが、彼らの考え方はこれに近いようです。
その後、色々試行錯誤して、結局ページとタグの関係を用いるのが一番精度が良いというのに行きつきました。今、関連エントリを見ている方は恐らく新しいエントリの関連エントリを見ていることかと思いますが、今回のはタグが沢山付けば付くほど精度が上がります。少し古めの専門性の高い記事を見るのが良いでしょう。例えばnaoyaさんのHadoopに関する記事などです。5件しか表示されないのが残念ですが、こういう記事に対してはかなり精度は良いです。タグが少ない新しいエントリに対しては精度が不十分であることは自覚しています。アドホックな対応はしているのですが、根本的にモデル化から見直すのが良いかもしれません。
ところで、僕が最初に掲げた思想を実現するものを、はてなの方が試しに作ってくださいました。これはあくまで実験でこちらから表に出す予定は無いのですが、もうすぐWeb APIも公開されるようですし、皆さんの手に届くのも時間の問題かと思います。以下の画像はkzk君の日記に僕の野望を乗っけたスクリーンショットです。右下の関連エントリに注目。Google Perftoolsに関する記事に対して、それを補佐するかのような記事が出ています。これが全てのWebページに対して現れるとしたら…凄いと思いませんか?Wikipediaでリンクをたどっていたらいつの間にか日が暮れていたという経験を持っている方は多いかと思いますが、それが日本語のWeb全体に拡張されたようなイメージです。
http://www.stlouisbusinesslist.com/business/5021837.htm?info=viagra buy viagra