DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
Upcoming SlideShare
Loading in...5
×
 

DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5

on

  • 2,007 views

DSIRNLP#3 LT Fig4.5: 辞書挟み込み型転置インデクスの発表資料

DSIRNLP#3 LT Fig4.5: 辞書挟み込み型転置インデクスの発表資料

Statistics

Views

Total Views
2,007
Views on SlideShare
1,890
Embed Views
117

Actions

Likes
2
Downloads
10
Comments
0

2 Embeds 117

https://twitter.com 116
https://de.twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5 DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5 Presentation Transcript

  • DSIRNLP#3 LTFig4.5: 辞書挟み込み型転置インデクス を用いた検索エンジン 2012-09-30 Yoshihiko Suhara @sleepy_yoshi 1
  • 背景• 昨年のGWの出来事 – ブッチャー本 [1] 読んでたら辞書挟み込み型インデクスについて記述 があり,実装したくなった – 偶然にも明日からGW – とりあえずやっつけで実装 – ちゃんと仕上げようとするとそのまま忘れ去るので,区切りをつける 意味でとりあえず公開…するの忘れて一年が経った ブッチャー本 2
  • 辞書挟み込み型転置インデクス って何よ? 3
  • 通常の転置インデクス• 辞書と呼ばれるデータ構造を利用して文書IDや出 現位置が記載された転置リストを取得する – 辞書にはトライ木やハッシュなどを利用 通常の転置インデクス 辞書 転置リスト 4
  • 辞書挟み込み型転置インデクス• 辞書を明示的に持たず,転置リストの先頭に 付与した状態で連結したもの語彙 転置リスト 語彙 転置リスト 語彙 転置リスト … 辞書を転置リストの間に挟み込んでいる 5
  • 通常の転置インデクスとの比較 通常の転置インデクス 辞書 転置リスト辞書挟み込み型転置インデクス … 辞書を挟み込んでいる 6
  • Fig4.5: 辞書挟み込み型転置インデクス• 辞書をインデクスに挟み込んだ形式の転置イン デクス[1][2] – 文献[1]の図4.5で説明されていたからFig4.5と命名 ブッチャー本 Fig4.5 (p.115) さて,どのように検索するのか? 7
  • 検索処理 • 二段階の処理 (1) メモリ上のインデクスを二分探索 (2) ディスク上のインデクスを線形探索 In-memory index apple book cookie ・・・ ・・・ 1025 1997 3005 ・・・ apple Pos Pos Pos ・・・ asus Pos Pos ・・・ book Pos Pos ・・・On-disk index 8
  • 検索処理の例: asus (1) 二分探索 In-memory index apple book cookie ・・・ ・・・ 1025 1997 3005 ・・・ apple Pos Pos Pos ・・・ asus Pos Pos ・・・ book Pos Pos ・・・On-disk index (2) 線形探索 発見! 9
  • 補足: 検索範囲 In-memory index apple book cookie ・・・ ・・・ 1025 1997 3005 ・・・ apple Pos Pos Pos ・・・ asus Pos Pos ・・・ book Pos Pos ・・・On-disk index In-memory indexのアイテム間だけ探索する 10
  • 実装してみた 11
  • Fig4.5の実装• インデクス構築処理 – 一度通常の転置インデクスを構築してからOn-diskインデクスとIn- memoryインデクスを構築 – 転置インデクスはやる気のない実装 • 辞書はstd::map • 転置リストはstd::vector• インデクス検索処理 – 構築したOn-diskインデクスはmmapで読み込む – On-diskインデクスにはDocID: Pos, Pos; DocID: Pos, Posではなくて 全てフラットなPosition情報だけを利用 • 位置情報を取得した後に文書IDをルックアップすることでDocIDを取得 • WSDM ’09のGoogle講演を参考 [3] 12
  • 使い方 13
  • インデクス構築Usage: ./index_writer <input filename> <output index path> [block size]# 例$ ./index_write sample.dat hoge 1024Index construction done. sample.dat http://www.hoge.com/ 飛ばねえ 豚 は ただ の 豚 だ http://www.bar.com/ 豚肉 は おいしい http://www.piyo.com/ 豚 は 豚 で も ただ の 豚 ・・・• 入力フォーマット – 各行が<DocName>¥t<Text> • Textはトークン毎にスペース区切り • 改行を含めることができない 14
  • 検索Usage: ./index_searcher <index basename> <query># 例$ ./index_searcher hoge 豚5 position found === http://www.hoge.com/ http://www.piyo.com/• クエリはインデクスに格納されているトークンで ある必要がある – 上記例の場合「豚」と「豚肉」をまったく別のトークンと して扱っている• AND検索,フレーズ検索には現在未対応 15
  • 使い方補足 16
  • block sizeて何よ?Usage: ./index_writer <input filename> <output index path> [block size]# 例$ ./index_write sample.dat hoge 1024 apple book cookie ・・・ ・・・ 1025 1997 3005 ・・・ apple PF Pos Pos ・・・ amazon PF Pos ・・・ book PF Pos ・・・ block size = この幅の上限 17
  • 生成されるインデクス In-memory index (*.inmem) apple book cookie ・・・ ・・・ 1025 1997 3005 ・・・ apple PF Pos Pos ・・・ amazon PF Pos ・・・ book PF Pos ・・・On-disk index (*.index)DocID-Position table (*.docpos) DocID-DocName table (*.docname) DocID Start position DocID Doc Name 1 1 1 http://hoge.com/index.html 2 120 2 http://hoge.com/link.html 3 180 3 http://fuga.ne.jp/index.html … … … … N 17280 N http://piyo.co.jp/inde.html 18
  • まとめ 19
  • TODO (できるといいな…)• やっつけ実装なので,思いつくだけでもたくさん – ベンチマーク – インデックスの圧縮 • 差分値を取る • Variable-byte符号 – AND検索,フレーズ検索の実装 – Bi-gramインデクスの実装 – スニペット表示部分の実装 – ベンチマーク – 全体的なコード書き直し – など 20
  • 明日のために• Dictionary Interleaving 形式のインデクスは辞 書を明示的に持たないため,複数インデクス をマージしやすい – Merge-based index construction に適した形式 • 山田さんの記事[4]を参考• 複数インデクスを入力して,マージ結果を出 力するような使い方ができる検索エンジンが できるんじゃないかな 21
  • References• [1] Stefan Buttcher, Charles L. A. Clarke and Gordon V. Cormack, “Information Retrieval”, The MIT Press, 2010.• [2] Stefan Buttcher, “Multi-User File System Search”, Ph.D thesis, University of Waterloo, Canada, 2007. – 著者のひとりButtcher氏の博士論文.Interleaving Dictionaryの初出? – 4.4.2 Interleaving Posting Lists and Dictionary Entries• [3] Jeffrey Dean, “Challenges in Building Large-Scale Information Retrieval Systems”, WSDM ‘09 Tutorial, 2009. – フラットな形式のインデクスについてはid:llameradaさんの翻訳記事が参 考になる • http://d.hatena.ne.jp/llamerada/20090317/1237302640• [4] 山田浩之. 検索エンジンはいかにして動くのか? – 第10回 動的な索引構築 • http://gihyo.jp/dev/serial/01/search-engine/0010 22
  • THANK YOU! 23