PageRankとHITSによる個人サイト調査

GooglePageRankというアルゴリズムを使っていることは広く知られています。
過去の論文そのものが利用されているかどうかは不明ですし、利用されていたとして、それがどの程度有用に活用されているのかは知りません。

論文

PageRankの論文はスタンフォード大学時代にGoogle創業者たちが公開したものが知られています。当然私も読みました。非常に簡単に言えば、「よいページからリンクされていればそれはよいページ」というものです。
しかし、本当に役に立つのかどうか分からない代物でしたから、当時(2002年だったか?)に大学院にいた私は、そのPageRankアルゴリズムを実際に適用してみることをしたのです。

計算自体は非常に簡単で、行列計算(というか、固有値計算)をさせるだけです。適当なロボットにページを集めさせて、隣接行列(リンク関係の有無を二次元にマッピングさせる)を作成し、その固有ベクトルを計算させるというものとなります。固有ベクトルがどうのと言うと何となく難しげですが、そんなものはGNU octaveにでも解かせればよいのでほっときます。

PageRankをあげるために

結果として、「何となくそれっぽい」結果が出たと記憶します。「何となくそれっぽい」というのは重要なことです。100ページくらいならば、全部自分で見て回って、良質なページをピックアップできますが、何億のページから、その中で良質っぽいページをピックアップするのは人力では不可能です。そのあたりを全自動でやってくれるならば、非常にすばらしいことなのです。

なお、計算については、数百から数千ページくらいならば、GNU octaveでも十分に現実的な時間内で計算可能です。5年前の当時で大丈夫だったのですから、現在ならばもう少しよくなっていることでしょう。(当時はたぶん、Duron 800MHzで計算していました。)

何億ページとかになりますと、大規模疎行列計算の手法などが必要なのでしょうが、私はその分野については全くの素人ですので、専門書をあたるか、専用ソフト(あるのか?)を購入するしかありません。

HITS

さて、このPageRank論文からは一つの重要な論文が引用されています。(これじゃなかったかもしれないけれど、いずれにしてもこれ系の論文。)これはAuthoritative Sources in a Hyperlinked EnvironmentというKleinberg氏の論文ですが、HITSアルゴリズムとしても知られています。PageRankはこれを改良したものといえます。

私は、この手法も当時実験的に流用してみました。こちらの方も比較的面白い結果が出たと記憶しています。

2002年に、この手法を用いて、「テキストサイト」「個人ニュースサイト」のランキングを作成しました。

ページ間の関連性

多数のブログの間の関連性を調査する論文などがありますが、今にして思えばその先駆け(先行研究などもあったのかもしれませんが、知りません)のようなことをやったことを記憶しています。

私の手元にも、当時作成した技術者界の日記地図があるのですが、(同一内容だけど)読みやすくしてくれたものを他人のサイトの参照で果たさせてもらいます。日記地図(Navigation Log - なびろぐ - 2003/04/20より)で言及されているものが私が作った「日記界の地図」です。当時は技術者の日記ページを6000ほど収集して、それに対してHITSなどを適用したと記憶します。

具体的なアルゴリズムは覚えていませんが、ソースコードはまだ存在するかもしれません。

具体的なページの内容は、リンクも含めて「全く」解析しないというものであったはず。この手法は面白いと考えていましたが、誰でも思いつくことでしょう。(別に、私はこれで論文を書いたわけではありません。)

最近の動向

ここ三年ほどは、そのあたりの論文は全く読んでおりません。しかし、日々進歩しているのではないかと思います。「ブログの地図」という話は、各所で出ているかもしれませんので、少しサーベイしてみたいと思いました。

自分で再び作ってみるかもしれません。