Transcript 仕組み

ACE KG発表
検索
~仕組みから学ぼう~
発表者 u_ma, suzuk
検索を学ぶことで何ができるのか
あのエロ画像、
どこに保存した
んだっけ??
皆さんこんな事を思ったこと、
ありませんか?
次のような皆様は、お聞きください
ケースその1
 GoogleなどのWeb検索サービスで
 自分のWebページを検索の上位にヒットするようにしたい
Web検索の仕組みを
聞いてください
Webページ 上位にヒット
ケースその2
 大量のデータやファイルを扱うソフトウェア
 目的のデータをすばやく見つけるにはどうするの?
ローカル検索の仕組み
をお聞きください
もっと柔軟な検索の仕組み
をおききください
大量 データ ファイル ソフトウェア
ケースその3
画像ファイルなどのメディアデータも扱える検
索システムが欲しい・作りたい
もっと柔軟な検索の仕組み
をお聞きください
メディアデータ 検索システム
発表の流れ
 検索って何?
 人生です
 Web検索の仕組み
 アルゴリズム
 ローカル検索の仕組み
 ファイル検索
 もっと柔軟な検索の仕組み
 メタデータの説明
 メタデータを使った検索
 デモ
 GoogleDesktopプラグイン
 まとめ
人はなぜ検索をするのか
・ 結婚相談所では
→結婚相手を見つけるため
・ 図書館では
→不足した知識を補うため
・ Ctrl+Fでは
→膨大な数のデータから目的のデータの場所を
見つけるため
→結局、検索って
問題解決をするためなんです
問題解決
→三輪真樹子著「情報検索のスキル」では
検索とは人生だ!!!
約 11,400件中 1-50件のイケメンがあなたをお待ちしております(0.42秒)
WEB検索の大まかな仕組み
 検索システムの種類
 ディレクトリ型・・・“サーファー”や、“エディター”と呼ばれる人
達が審査、ランク付けする。載せて欲しい人は登録が必要。
この型のみを使っているエンジンほぼない。
 ロボット型・・・“クローラー”“スパイダー”と呼ばれるWEB徘
徊プログラムが、ページを自動的に登録(インデックス)。
Yahoo!JAPAN・・・ディレクトリ型が主。ページ検索はロボッ
トで行っている。
google・・・ロボット検索。Googlebotと言えば有名なロボッ
ト。
ここでちょっと、歴史
 世界初の検索ツールは「archie」(McGill大学のAlan Ematage発明)
 1994年1月、初期ディレクトリ検索エンジン「Galaxy」誕生、同4月、WEBク
ローラーが作られる
 1994年4月、Yahoo!誕生
 以後Lycos , infoseek , Exite , AltaVista・・・etcが誕生
 日本のインターネット普及初期からいた検索エンジン
 ロボット型
 千里眼 (サービス終了)
 ODiN (サービス終了)
 OCN Navi (TITAN) (サービス終了)
 ディレクトリ型
 NTT DIRECTORY (サービス終了)
 Yahoo!
 Yahho (サービス終了)
 JOY
歴史
Yahoo!の台頭~
 1996年サービス開始
 簡素な画面構成、質の高いディレクトリで人気
↓
wwwの爆発的普及
 1997年頃から、infoseekやgooのロボット検索が人気に。Yahooもロ
ボット検索にgooを使用
 これらのサイトは、オークションサービス等、検索以外のサービスを次々搭
載・・・ポータルサイト化
 1998年、google登場
 独創的な検索技術に力を入れた
 2000年、Yahoo!のロボット検索に採用、現在ではWEB検索のTOPへ・・・登
録サイト数は80億を越す!!
 現在、Yahoo!やgoogleに匹敵すると言われているロボット“Teoma”を
率いるAsk Jeevesが日本上陸、Ask.jpとしてサービス開始
・・・CM知ってますよね?
アルゴリズムと検索(1)
ロボットはページの中身を独自のアルゴリズム
を使ってindex、評価する
<>新技術</>
<h1>(見出し)に“技
術”の文字・・・評価
<>当社“技術”
html
ソース
の最新“技術”を “技術”の文字使いす
使用した“技術
ぎ・・・ワードスパムと
的”に全く新しい してペナルティ
新“技術”。<>/
スパイダー
スパイダー
アルゴリズムと検索(2)
 前述の方法だけだと、人間の思うようには検索できな
い・・・検索エンジン各社は独自のアルゴリズムを生み出している
googleの使うアルゴリズムは100以上!!
 例:
htmlソースを見る、<meta>タグに書いてある情報で
判断する、そのページに張られている重要なページの
リンク数で判断する
 リンクで判断・・・PageRank(googleが行っている検索ア
ル
ゴリズムのこと)
PageRank って何?
 「多くの良質なページからリンクされているページは同じ
く良質である」
 google独自のアルゴリズム
 評価対象のページの被リンク数をみる
 クローラーによって付けられるPageRank値によって重要度を
ランク付け。最高で10まである。
 (ちなみに)新規ページもグーグルツールバーをつけているとクロー
ラーにインデックスされたときの“推定”PageRank値を付けられる。
 元の考え方はノーベル生物学賞を誰が取るかを予測する手法として使っていたらしい
 リンクを張っているページの評価も考慮
 Yahoo!など評価の高いページからのリンクは点数が高い
 リンクをばんばん他のページに張っているようなページのリンクは点数
が低い
PageRank の仕組み

あるページのPageaRank値
をリンクの数で割ったポイント
が、リンク先のPageRank値に
加算される

やたらとリンクを貼りあうリンク集のサ
イトや、個人が趣味で作ったサイトな
どは順位が低くなる
(Page et al. (1998) Figure 2 'Simplified Page Calculation' より引用)
HITS algorithm
 HITS(Hyperlink-Induced Topic Search )とは?
 PageRankとの違いはhubと、authorityの概念があること
 hub(情報連絡網)
 あるトピックについて、関連するページへ多くリンクを発しているページ
 authority
 上記のような数多くのハブページからリンクされているページ
ローカル環境では?
 素早く目的の情報をみつけたい
 Web同様、検索するのが一番早い
 どのような仕組みで検索しているのか?
情報量
キャー
キャー
キャー
ローカルファイル検索の仕組み
 ファイル検索
 find
 locate
本屋さんで本を検索する
 順番に見て探していく
 線形検索
 本の数が多いと探すのも
一苦労
 本の数nに比例
 平均時間は n/2
findとは
 UNIXにおけるファイル検索コマンド
例
% find somewhere –name some -print
result
…..
…
find の仕組み
 ファイルを1つ1つ見ていく
 本屋さんでの本探しの時と同じ
 入力された検索対象以下を再帰的に検索
find の実装
 与えられた検索対象のディレクトリ以下を再帰
的に探索
 すべての階層を探索し終わると終了
 再帰関数になっている
 ファイルの情報を1つ1つ取り上げて調べる
 一度に複数のファイルの情報を格納しない
 デバイスへのアクセスが減るため高速化になる
find の実装2
 ディレクトリを再帰的に探索する部分が処理上の最も
重要な部分である
 inode番号とデバイス番号の配列を持つ
 元の階層に戻る時に使用
 1度来た道であれば、これ以上進まない
 32個ずつ配列を確保するが足りないときにreallocする
 リスト型の構造体の中に関数ポインタを持ち引数に
よって、使う関数を変える
 名前や時間による検索など様々な検索方法をサポート
 検索対象のファイル名はファイル名を検索するための関数
だけが持ち、find全体では知らない
図書館で本を検索する

図書館で本を検索する
 本は管理番号と対応する場所に置かれている
 547.483@HT1@62-2ed
 本のタイトルと管理番号(本の所蔵場所)との
「対応表」から検索できる
情報のインデックス化
findもいいけれど
findの問題点
 検索対象が多いと膨大な時間がかかる
 同じ場所を検索するときも最初からやり直しで無駄
が多い
locateとは
UNIXにおけるファイル検索コマンド
 findに比べて高速
例
% locate ls
/bin/ls
locateの仕組み
なぜ高速に検索できるのか?
 ファイル名のデータベースを作っておき、それを対
象に検索を行っている
ファイルを一つ一つ探すよりも効率的
データベースはソートされているので検索しやすい
locate実装の実際
FreeBSDの場合
 データベース作成
データベースファイル /var/db/locate.database
ファイルの探索にはfindが使われる
findの結果得られたファイルリストを圧縮してデータ
ベースに格納
 検索
データベースを元の形に戻して全文検索
locateの問題点
データベースの更新が行われるまでは、ファイ
ル情報を変更しても検索結果に反映されない
 データベースの更新は定期的(週一回など)に行わ
れる
名前だけで管理する限界
 数が増えてくると覚えておくのが大変
 研究会にいる「あいつ」
 おととい食べた「あれ」
あれだよ、あれ。名前
が出てこない・・・。どう
やって検索しよう。
もっと柔軟な検索の仕組み
後から見てもすぐにわかる
ように、
この書類自身の説明
を書いておくか。
内容:
恥ずかしいポエム集
注意書き:
1.他人に見られない
ように
2.青春のおもひで
メタデータ
 データを説明する
ためのデータ
メタデータを検索で利用するには?
 付加されたメタデータに対して検索
 画像の撮影日時(携帯、デジカメ撮影の画像)
 新たにメタデータを抽出して、それを検索
 Googleイメージ検索
 画像に隣接するテキストを収集する手法など
 hotという単語で炎を検索
 画像を「分析」して色情報から特徴を抽出
メタデータの利用例
 セマンティックWeb
セマンティックWeb
従来のWebの繋がり
 人が意味解釈を行うWeb
 リンクの関係は一様
herf
Doc B
Doc A
Doc E
herf
herf
herf
Doc D
Doc C
herf
セマンティック・ウェブの繋がり
1998年 機会が意味解釈を出来るWebへ
 リンク自体に意味が含まれている
type
Masaka
http://www...
Home page
Person
writes
subject
Doc D
Music
related
メタデータの利用
メタデータとは
 「データについてのデータ」
カテゴリー名など
RDF
ウェブ上のリソースに関する情報を明瞭かつ論
理的に表現するデータモデル。
 リソースを「ウェブ上で識別できるもの」
主語(誰の)
文
+
述語(何が)
+
目的語(どんな値)
RDF
マシンに理解しやすいデータモデル
何が
どんな値か
ID
誰の
氏名
ホームページ
sato
http://www.ht.sfc.keio.ac.jp
/~sato
LM245
MK705
MS102
住所
URI参照型
 プロパティーをURIで参照することで、曖昧さなくリソー
スの性質を記述できる。
Internet
Dc: tile
題名
title
作者
件
名
日付
実際にメタデータを使って検索したい!
 デスクトップ検索
 Mac OS X Tiger
 Google Desktop
Tigerとは
Mac OS X v10.4 "Tiger"
 Apple社のOSである“Mac OS X”シリーズの最新
バージョン
 デスクトップ検索機能“Spotlight”が最大の売り
Spotlight概要
 全く新しい検索機能(とAppleは言っている)
 高速
検索結果が瞬時に表示される
 幅広い検索対象
多種多様なフォーマットに対応
 簡単なインターフェース
特殊な言語を覚える必要がない
 高い拡張性
プラグインにより機能を追加できる
エンジンはアプリケーションからも利用可能
技術解説その1
 Spotlightの基本構成
 5層からなる
技術解説その2
システムとの密接な連携
 ファイルシステムとカーネルに統合されている
ファイルの変更等が直接Spotlightエンジンに伝えら
れる
プラグイン
 実際のファイル解析を行うのはプラグイン
プラグインの追加により様々なフォーマットのファイル
に対応できる
技術解説その3
Spotlightストア
 2つのインデックス(メタデータとコンテンツ)から抽
出されたデータを保持する
 メタデータストア
ファイルに関するデータ
 コンテンツストア
従来のインデックスと同じ?
技術解説その4
クエリ
 ユーザからの普通の入力(自然言語クエリ)を正確
なクエリに変換
例えば「今日」と入力すると具体的な日付になる
ライブアップデート
 検索結果を常に最新の状態に保つ
検索結果に関わるファイル情報が変更されると、それ
がすぐにアプリケーションに反映される
メタデータの例
$ mdls metadata.jpg
kMDItemAttributeChangeDate = 2004-10-20 01:00:15 -0700
kMDItemBitsPerSample
= 24
kMDItemColorSpace
= "RGB "
kMDItemContentType
= "public.jpeg"
kMDItemContentTypeTree
= ("public.jpeg",
"public.image",
"public.data",
"public.item",
"public.content")
kMDItemDisplayName
= "metadata.jpg"
kMDItemFSContentChangeDate = 2004-10-19 00:13:04 -0700
kMDItemFSCreationDate
= 2004-10-19 00:13:04 -0700
・・・
クエリの例
$ mdfind "kMDItemAcquisitionModel ==
'Canon PowerShot S45'"
/Users/erika/Documents/vacation1.jpg
/Users/erika/Documents/vacation2.jpg
/Users/erika/Documents/vacation3.jpg
今回のデモで取り上げるのは?
GoogleDesktop
 Web検索エンジンで有名なGoogleにより提供され
ているデスクトップ検索サービス
通常のGoogle検索と同じ感覚でコンピュータ内のファ
イルを検索できる
2005年5月26日 日本語正式版が公開
特徴
GoogleWeb検索の流れを汲む簡潔でわかり
やすいインターフェース
ブラウザから利用する
プラグインにより検索機能を拡張できる
APIが公開されている
 自作アプリケーションからGDSの機能を利用
 プラグインの作成が可能
仕組み
プログラムはサーバとしてローカルマシン内で
動いている
 4664番ポート
コンピュータに保存されているファイルに関す
るメタデータのインデックスを作成して検索して
いる
 インデックスはインストール時に生成される。更新
は定期的に行われるのではなく、常に更新を続け
ている
プラグイン
GDSの検索機能を拡張する
 GDSはデフォルトでは限られた種類のファイルしか
中身を見ることができない
それ以外のフォーマットのファイルは解析できないので、
十分な検索結果が得られない
 プラグインを追加することにより、自分で作った独自
ファイルフォーマットをGDSが読めるようにすること
等ができる
プラグインはGDS APIにより作成可能
デモ
 GDS APIを利用したアプリケーション
まとめ
 Web検索の結果は、多くのアルゴリズムに基
づいて算出されている
 情報のインデックス化は検索の効率化に有用
である
 コンテンツにメタ情報を付加する事は、柔軟な
検索を可能にする