タグ

ブックマーク / naoya-2.hatenadiary.org (5)

  • PDL で PageRank - naoyaのはてなダイアリー

    id:smly さんが PageRank や HITS を Python で実装 されているのに触発されて、自分も PageRank を Perl で実装してみました。 PageRank の計算の中心になるのは Power Method (べき乗法) です。べき乗法では行列とベクトルの積を計算しますので、手軽に使える行列演算ライブラリがあると楽でしょう。 色々調べてみたところ、PDL (The Perl Data Language) が良く使われているようでしたので、これを選択しました。PDL では各種行列演算が簡単に行える他、文字列評価をオーバーライドして行列の文字列出力を良い具合で定義してくれていたりと、なかなかに便利です。PDL は行列計算以外にも色々な科学技術計算やグラフ描写などの操作をサポートしているようです。 さて、PDL を使った PageRank 計算のコードは以下のように

    PDL で PageRank - naoyaのはてなダイアリー
  • HITS, 主成分分析, SVD - naoyaのはてなダイアリー

    ウェブグラフのリンク解析によるページの評価と言えば PageRank が著名ですが、もうひとつ Jon Kleinberg による HITS (Hyperlink-induced topic search)も有名です。最初の論文 Authoritative Sources in a Hyperlinked Environment は 1999年です。IIR の 21章で、この PageRank と HITS についての解説がありました。 HITS HITS はウェブページの評価に二つの軸を用います。一つが authority スコア、もう一つが hub スコアです。 例えば「Perl の情報が欲しい」という検索要求に対しては CPAN や 開発者である Larry Wall のホームページなどが重要度の高いページかと思います。これらのページは「Perl に関して信頼できる情報源」ということ

    HITS, 主成分分析, SVD - naoyaのはてなダイアリー
  • MapReduce - naoyaのはてなダイアリー

    "MapReduce" は Google のバックエンドで利用されている並列計算システムです。検索エンジンのインデックス作成をはじめとする、大規模な入力データに対するバッチ処理を想定して作られたシステムです。 MapReduce の面白いところは、map() と reduce() という二つの関数の組み合わせを定義するだけで、大規模データに対する様々な計算問題を解決することができる点です。 MapReduce の計算モデル map() にはその計算問題のデータとしての key-value ペアが次々に渡ってきます。map() では key-value 値のペアを異なる複数の key-value ペアに変換します。reduce() には、map() で作った key-value ペアを同一の key で束ねたものが順番に渡ってきます。その key-values ペアを任意の形式に変換すること

    MapReduce - naoyaのはてなダイアリー
  • Introduction to Information Retrieval #4 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval の4章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_04.ppt 4章はインデックス構築に関するアルゴリズムなどがテーマです。 前半では単一マシン上で二次記憶装置を使ったインデックス構築手法として、入力を適当なサイズのブロックに分けて最後にマージする Blocked sort-based indexing (BSBI) と、BSBI を改良して入力をストリームで扱うようにした Single-pass in-memory indexing (SPIMI) が紹介されています。 次に、例えばウェブ検索のような、単一のマシンでは扱いきれない巨大なインデックスを扱う戦略として、並列計算クラスタで分散インデックスを構築する Google の Ma

    Introduction to Information Retrieval #4 の復習資料 - naoyaのはてなダイアリー
  • Perl で 8ビット CPU を作る - naoyaのはてなダイアリー

    CPU を作る、と言ってもハードではなくソフト、仮想機械です。 2001 年から UNIX USER で連載されていた西田亙さんの「gccプログラミング工房」。いまさらながら、バックナンバーを取り寄せて初回から順番に読んでいます。とてもためになる連載です。 この連載中で第10回から数回に分けて開発されていた octopus という 8 ビット CPU の仮想機械があります。オリジナルは C 言語で書かれていたのですが、その設計を見て、これは他の言語でも作れるのではないか、と思い Perl に移植してみたところなんとか動作させることができました。以下の URL にコードを公開します。(西田さんに確認を取ったところ、オリジナルのソースは Public Domain とのことでした。オリジナルは http://www.skyfree.org/jpn/unixuser/ からダウンロード可能です。

    Perl で 8ビット CPU を作る - naoyaのはてなダイアリー
    toruto
    toruto 2008/01/04
    峠を越えたらやってみよ.
  • 1