定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻

Slides:



Advertisements
Similar presentations
組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
Advertisements

A Simple Constant Time Enumeration Algorithm for Free Trees 中野 眞一 宇野 毅明 群馬大学 情報学研究所 2003 年 9 月 19 日 アルゴリズム研究会.
電子書籍の検索機能の改善 木下研究室 201002713 鴫原 善寿. 背景 スマートフォンなどの携帯端末の普及と ともに電子書籍に注目が浴びた。中でも amazon の kindle など電子書籍の専用端末も 現れた。 電子書籍はデータなので本棚もいらず、 持ち運びも容易になるなど様々な恩恵を もたらした。
到着時刻と燃料消費量を同時に最適化する船速・航路計画
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
4.3 マージソート.
LZ符号化 森田 岳史.
情報処理 第12回.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
LZ圧縮回路の設計とハード・ソフト 最適分割の検討 電子情報デザイン学科 高性能計算研究室 4回生 中山 和也 2009/2/27.
極小集合被覆を列挙する 実用的高速アルゴリズム
離散システム特論 整列(sorting)アルゴリズム 2.
ヒープソートの演習 第13回.
アルゴリズムイントロダクション第2章 主にソートに関して
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
第12回 ソート(3): シェルソート、クイックソート
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
全体ミーティング (4/25) 村田雅之.
On the Enumeration of Colored Trees
ファーストイヤー・セミナーⅡ 第8回 データの入力.
4-3:高度なソートアルゴリズム① (分割統治法にもとづくソート)
KeyGraphを活用した 食品安全リスクの 早期警告支援
全文検索のためのデータ構造と 構成の効率について
情報知能学科「アルゴリズムとデータ構造」
第10回 ソート(1):単純なソートアルゴリズム
時空間データからのオブジェクトベース知識発見
リンク構造を考慮したベクトル空間法によるWebグラフ分割手法に関する研究
動的ハフマン符号化の例 入力:ABCDEからなる文字列 出力:動的に作ったハフマン木.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
疑似頻出アイテム集合の 多項式遅延列挙アルゴリズム
最短路問題のための LMS(Levelwise Mesh Sparsification)
第11回 整列 ~ シェルソート,クイックソート ~
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
IIR輪講復習 #1 Boolean retrieval
k 個のミスマッチを許した点集合マッチング・アルゴリズム
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
グラフアルゴリズムの可視化 数理科学コース 福永研究室 高橋 優子 2018/12/29.
情報工学概論 (アルゴリズムとデータ構造)
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
環境リスクマネジメントに関する 検索システム
WWW上の効率的な ハブ探索法の提案と実装
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
Internet広域分散協調サーチロボット の研究開発
トーリックイデアルの グレブナ基底を求める アルゴリズム – F4およびF5 –
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
アルゴリズムとデータ構造1 2006年7月11日
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
短い部分文字列の ミスマッチトレランスを 高速計算するアルゴリズム
構造的類似性を持つ半構造化文書における頻度分析
設計情報の再利用を目的とした UML図の自動推薦ツール
バブルソート,バケツソート,クイックソート
情報工学概論 (アルゴリズムとデータ構造)
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
ヒープソート.
Webページタイプによるクラスタ リングを用いた検索支援システム
参考:大きい要素の処理.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻 k単語近接検索について 定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻

内容 k 単語の近接検索(proximity search)の 時間アルゴリズム 平面走査アルゴリズムの検索速度の実験 平面走査による方法 分割統治による方法 平面走査アルゴリズムの検索速度の実験 htmlファイル 185MB

背景 電子化された文書の普及 WWW, メール 新聞, 辞書, 書籍 ゲノムデータベース 大量の文書からの検索 文書のランキングが必要

文書のランキング 検索結果が多い場合に重みをつける キーワードの重要度 参照回数 近接検索 (proximity search) tf*idf法 参照回数 近接検索 (proximity search)

Proximity Search キーワードが近くに現れている場所を探す 狭い範囲に全てのキーワードが含まれているならそこは有益な情報を含むと考える

問題の定義(Proximity Search) 問題1 (naive proximity search) 入力: k 種類の単語のテキスト T[1..N] での出現位置(合計 n 個) 出力: 全ての単語の出現位置を含む   テキスト中の区間 [l,r] (区間は、幅 r-l の小さい順にならべる) 区間内の単語の出現順は任意

既存研究 Manber, Baeza-Yates 91 Gonnet, Baeza-Yates, Snider 92 メモリ Gonnet, Baeza-Yates, Snider 92 距離 d 以内の2単語を 時間 Aref, Barbara, Johnson, Mehrotra 95 距離 d 以内の k 単語の列挙を 時間

既存の方法の問題点 3単語以上の場合に良いアルゴリズムがない 2単語用のアルゴリズムを繰り返す 本研究 単語間の距離 d を決めておく必要がある 距離 d 以内の単語の組は      個 答えの数が多くなる 本研究 3単語以上で効率のよいアルゴリズムを提案 「極小」なもののみ求める

本研究の方法 k 単語を含む極小な区間の列挙を 時間 区間の最大値 d の制限はない メモリ 2つのアルゴリズム 平面走査アルゴリズムの拡張 分割統治法

極小性 定義1 k 単語を含む区間が極小    別の区間を含まない A B C 極小 A B C 極小ではない A B C 極小

naive proximity searchの問題点 検索結果に冗長なものが入る 極小ではない区間を含む 極小: 他の区間を含まない区間 区間の数が 個ある 問題2 (proximity search) naive proximity searchにおいて、極小な区間 のみを幅の狭い順に求める 極小な区間は n 個未満

アルゴリズム(平面走査) 各単語の出現位置のリストをソート 各リストの先頭のものを取り出しソートし 区間 [l,r] を求める 区間の左端の単語を取り除き、同じ単語をリストから取り出す。空なら 6 へ。 区間と単語の順序を更新し、3へ。 ヒープの中の区間をソートして出力

例 A B C A B A C B A C 現在の区間は極小ではない 次のAは現在の区間に含まれる 次のAは現在の区間に含まれる 左端の単語を捨て、同じ単語を入れる

計算量 定理1: k 種類、合計 n 個の単語の出現位置が与えられたとき、問題2 (proximity search)は 時間でできる。 証明: 出現位置のソート: 出現位置のリストのマージ: 極小な区間のソート:

分割統治による方法 単語の位置をソートする必要がない 定理2: 最も少ない単語の頻度が l のとき、m 個の 極小な区間は 時間。 ある単語の頻度が小さいときに有効 定理2: 最も少ない単語の頻度が l のとき、m 個の 極小な区間は 時間。

アルゴリズム(分割統治) n 個の単語の位置の中間値 v を求める。 単語の位置を v より小さいもの(L)と大きいもの (R)に分ける。k 個の単語に対し L 中で最右のものと R 中で最左のものを求める。 L, R 両方にまたがる区間を平面走査で求める。 L (R) が k 個の単語を全て含んでいればその中の区間を再帰的に求める。

例 中間値 A B C A B C L R R L A B C

実際的な高速化 出現位置は整数 radix sortを使う 区間の幅の最大値 d を設定する 区間の数の上限を設定する ヒープの根に幅が最大のものを入れ、 それより大きいものはヒープに入れない 区間の数の上限がない場合 区間を配列に入れておき最後にradix sort

検索速度の実験 データ マシン htmlファイル51,783個 テキストサイズ: 185Mバイト (1つは平均3.5KB) suffix arrayサイズ: 639Mバイト (91-95年の毎日新聞全記事 485Mバイト) マシン Sun Ultra60 UltraSPARC-II 360MHz, メモリ2GB, ディスク18GB

実装方法 平面走査アルゴリズム 位置のソートは基数 のradixソート 区間の幅の最大値は1000 区間の数は無制限

1キーワードの検索時間 個数に比例した時間 (radix sort) キーワード http www jp h t p e n 個数 283719 214524 319914 3747125 7304053 2610014 6939739 4371063 検索時間(秒) 0.698 0.505 0.778 2.333 4.721 1.820 4.410 2.752 個数に比例した時間 (radix sort)

極小な区間の検索時間 検索時間の約半分は極小な区間を求める時間 時間はキーワードの総数にほぼ比例 キーワード http www jp h t p e t h n キーワード数 818157 13661192 22361980 区間数 377405 3180532 4400220 検索時間(秒) 2.414 16.351 26.811 ソート以外 0.443 7.487 12.595 検索時間の約半分は極小な区間を求める時間 時間はキーワードの総数にほぼ比例

まとめ k 単語近接検索を 時間で行うアルゴリズムの提案 実際にはほぼ 時間 htmlファイルでの検索速度の実験 実際にはほぼ 時間 htmlファイルでの検索速度の実験 通常の検索では速度は問題ない

課題 分割統治アルゴリズムの実装、平面走査との比較 高次元への拡張(分割統治アルゴリズム) 計算量の下限を求める セブンイレブン、ローソン、ファミリーマートが近くにあるところを見つける 計算量の下限を求める