タグ

algorithmとsearchに関するsnailramperのブックマーク (8)

  • きまぐれ日記: Autolink: 前方最長一致ではなく最長キーワード優先一致を実現する

    Hatena のキーワード置換アルゴリズムがTRIE ベースの手法に変更になったようです。以前に AC法でやる方法の記事を書いたのですが、それと似たことをやってるのでしょうか。 AC法のやり方は単純で、前方から最長一致でキーワードを見つけていきます。これまでは長いキーワードから順番に見つけていく方法(最長キーワード優先一致)だったそうですが、前方から見つけていく方法だと短いキーワードが優先される場合があります。 http://d.hatena.ne.jp/ita/20060119/p1 http://d.hatena.ne.jp/hatenadiary/20060119/1137667217 文:あいうえおかきくけこさしすせそ KW1 いう KW2 うえおかき KW3 かきく KW4 きくけこさし という文でKW1-KW4のキーワードがマッチする場合、新しくなった方法では「いう」と「かき

  • ブートストラップによるパターン抽出 - 武蔵野日記

    午後は情報検索に関するトーク。shima さんたちのチームの話が気になったのでメモ。 Ni Lao, Hideki Shima, Teruko Mitamura and Eric Nyberg. Query Expansion and Machine Translation for Robust Cross-Lingual Information Retrieval. NTCIR-7. 2008. この論文、言語横断検索のためにいろいろなことをやっているのだが、自分が気になったのはクエリ展開(query expansion)の部分。クエリ展開とはたとえば「カーネギーメロン大学」と「CMU」が同義語であった場合、「カーネギーメロン大学」と入れて「CMU」のページも検索してくれると嬉しいよね、という話で、それを自動的に展開してあげましょう、という内容なのだが、この同義語・言い換えをどう見つける

    ブートストラップによるパターン抽出 - 武蔵野日記
  • Wavelet Tree - naoyaのはてなダイアリー

    圧縮全文索引の実装などでしばしば利用される Rank/Select 辞書と呼ばれるデータ構造があります。詳しくは参考文献を参照していただくとして、今回は一般の文字列に対して効率的に Rank/Select を可能とするデータ構造である Wavelet Tree (ウェーブレット木) のライブラリを作りました。 http://github.com/naoya/perl-algorithm-wavelettree/tree/master my $wt = Algorithm::WaveletTree->new("abccbbabca"); is $wt->rank(6, 'a'), 2; is $wt->rank(6, 'b'), 3; is $wt->rank(9, 'b'), 4; is $wt->select(0, 'a'), 0; is $wt->select(1, 'a'), 6;

    Wavelet Tree - naoyaのはてなダイアリー
  • 講義資料 配列解析アルゴリズム特論I 情報生命科学基礎/演習 他 -渋谷哲朗

    平成20年度 東京大学大学院 情報理工学系研究科・コンピュータ科学専攻 配列解析アルゴリズム特論I 4/10 4/17 4/24 5/1 5/8 5/15 5/22 5/29 (The problem to be reported - in English) 6/5 6/12 6/19 7/3 7/10 7/17 東京大学 理学部・情報科学科 情報科学特別講義3 (情報科学とバイオインフォマティクス) 6/10 7/15 7/22 東京大学大学院 新領域創成科学研究科・情報生命科学専攻 情報生命科学基礎/演習 5/27 6/17 京都大学大学院 薬学研究科・医薬創成情報科学専攻 情報科学概論 6/3 中央大学大学院 理工学系研究科・物理学専攻 物理学特別講義第二 TBA 創価大学工学部 生命情報工学科 TBA TBA 戻る Copyright (c) 2004- Tetsuo

  • 1日で作る全文検索エンジン - Building a full-text search engine in "ONE" day - - とあるはてな社員の日記

    最近、「Introduction to Information Retrieval」というStanfordの大学院向け教科書のドラフトを読んでいます。id:naoyaあたりが勉強会で読んでいる教科書です。この教科書には、効率のいい全文検索システムを作るにはどうすればいいか、という(まさに)教科書的手法が網羅的に書いてあり、そのあたりに興味がある人には、非常に興味深く読めるお勧めのです。 ただ、面白い面白いと言っているだけでは、エンジニアとしては価値半減ですので、GW中にrubyで一日かけて実装してみました。 さすがに実装は、一日で作ったものですから、非常に素朴です。マルチバイト文字はbi-gramで、シングルバイトはスペースなどの区切り記号で認識しています。インデックスは、rubyの処理系のHashやArrayで保持しており、外部にMarshallで書き出す、というものです。検索エンジン

  • 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 #2後半、#3前半 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 2章後半と3章前半の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_02_2.ppt http://bloghackers.net/~naoya/iir/ppt/iir_03_1.ppt 今回は 2 章の後半 postings list のマージの効率的な実装方法 フレーズインデックスと positional インデックスによるフレーズ検索の実現方法 3 章前半 辞書検索のためのデータ構造 ワイルドカードクエリの実現方法 という内容です。次回はスペルミス補正 (もしかして機能) についてになります。次回の輪読会は少し間が空いて 4/12 予定ですので復習資料のアップロードも 4 月になるかと思います。 過去の章のアーカイブは同 URL のデ

    Introduction to Information Retrieval #2後半、#3前半 の復習資料 - naoyaのはてなダイアリー
  • 検索における適合率 (Precision) と再現率 (Recall)

    検索における適合率 (Precision) と再現率 (Recall) 2008-01-17-1 [IIR] 「Introduction to Information Retrieval」[1] の輪講の第一回[2008-01-12-1]でちらっと話しましたが、第一章の 1.1 に Precision と Recall の説明があります(第八章でも出てきます)。 若干混乱しやすくややこしい話なので、ここで改めて解説します。 § Precision (適合率) とは、 全検索結果に対しての、 検索要求 (information need) を満たす検索結果の割合です。 例えば、 「MacBook Air の重量を知りたい」という検索要求を満たすために検索キー「MacBook Air 重さ」でウェブ検索した結果100件のうち、検索要求を満たす(重さが分かる)のが85件だとすると、 Precis

    検索における適合率 (Precision) と再現率 (Recall)
  • 1