WWW全文検索システム Vernoにおける 全文検索の設計と実装

2005 年度 修士論文
WWW 全文検索システム
Verno における
全文検索の設計と実装
提出日: 2006 年 2 月 5 日
指導: 上田和紀 教授
早稲田大学理工学部 情報・ネットワーク専攻
内藤 一兵衛
学籍番号:3604U107–9
目次
第 1 章 はじめに
1.1 研究の背景 . . . . . . . . . . . . . .
1.1.1 現在の検索システム . . . . .
1.1.2 全文検索システム Verno . . .
1.2 研究の目的 . . . . . . . . . . . . . .
1.2.1 HTML 要素のもつ情報 . . . .
1.2.2 既存の検索エンジンの問題点
1.2.3 研究の目的 . . . . . . . . . .
1.3 本論文の構成 . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
1
1
1
1
1
1
1
1
1
.
.
.
.
.
.
2
2
2
2
2
2
3
.
.
.
.
.
4
4
4
4
4
4
第 4 章 全文検索用索引の設計
4.1 SuffixArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
6
第 5 章 データ構築部分の実装
5.1 要素構造データベースの構成要素 . . . . . . . . . . . . . . . . . . . . . . . .
7
7
第 2 章 WWW 検索エンジンについて
2.1 収集方法 . . . . . . . . . . . . .
2.1.1 手動登録型 . . . . . . .
2.1.2 ロボット型 . . . . . . .
2.2 検索方法 . . . . . . . . . . . . .
2.2.1 ディレクトリ型 . . . . .
2.2.2 キーワード検索型 . . . .
.
.
.
.
.
.
第 3 章 全文検索システム Verno
3.1 Verno の特徴 . . . . . . . . . . .
3.2 実装済みのデータベース . . . . .
3.2.1 インデックスデータベース
3.2.2 タグデータベース . . . . .
3.3 Verno のハードウェア構成 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 6 章 要素構造データベースの検索部分の実装
6.1 サポートする検索言語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
第 7 章 要素構造データベースを利用した検索
7.1 Verno-elk での要素構造データベースの使用
9
9
第8章
8.1
8.2
8.3
8.4
8.5
8.6
まとめと今後の課題
まとめ . . . . . . . . . . . . . . .
要素名以外のデータベースの構築
効率の改善 . . . . . . . . . . . .
全国版 DB でのテスト . . . . . .
文書整形ツールの導入 . . . . . .
検索サービスの外部への公開 . .
.
.
.
.
.
.
.
.
.
.
.
.
参考文献
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
10
11
11
11
13
2
概要
混沌とした WWW で目的の情報を探し出す検索エンジンの重要性は、ウェブサイトの絶
え間ない増加に従ってますます大きくなってきており、今も新しい手法をとりいれた検索エ
ンジンが次々と生み出されている。
全文検索システム Verno もそのような検索エンジンの一つである。Verno は、収集したす
べてのデータが解放されていて、Scheme 言語を用いた検索言語サーバ Verno-elk 上で、ユー
ザが自由な検索プログラムを記述することができる点を大きな特長としている。
しかし、Verno では、HTML タグ以外の部分のテキストと、HTML の要素名については
データベースが構築され柔軟な検索がおこなえるものの、どこからどこまでのテキストがど
の HTML 要素に属するか、どの要素がどの要素を含んでいるか、といった、HTML タグが
本来示している情報を検索に利用する手段が欠けていた。
本研究は、HTML 文書が持つそういった意味構造を利用して Verno 上でより精度の高い
検索を可能にするために、全文検索を、指定した HTML 要素内に限定しておこなえること、
要素同士の包含関係を検索に利用することを目的としている。
そのために、まず Verno の収集ロボットが集めたタグのデータを解析し、文書中の HTML
要素の位置と、要素同士の包含関係からなる構造についてのデータベースを構築した。さら
に、構築したデータベースを簡単かつ直感的に検索するための追加の関数を Verno-elk 上に
実装した。
結果として、その関数を用いて通常の全文検索に比べて厳密な絞り込みが容易に行え、返っ
てくるサマリー(検索結果の要約文)も利用価値の高いものにすることができることを示す
ことができた。
第 1 章 はじめに
1.1
研究の背景
1.1.1
現在の検索システム
1.1.2
全文検索システム Verno
1.2
研究の目的
1.2.1
HTML 要素のもつ情報
1.2.2
既存の検索エンジンの問題点
1.2.3
研究の目的
1.3
本論文の構成
1
第 2 章 WWW 検索エンジンについて
2.1
2.1.1
収集方法
手動登録型
データベースへの登録作業を手動で行うタイプである。データは主にウェブサイト単位で、
人間が直接 WWW を巡回して登録するか、自動で収集されたデータを人間がチェックして
登録する。人間による確認が入るため、登録サイト・ページはある程度良質なものに選別さ
れ、的確なサマリー(要約)をつけたり、宣伝文句とまったく異なる内容のページを排除す
るなど、自動登録型に比べて一般に情報の質は高くなる。しかし、人間がチェックする必要
があるため情報量は自動登録型に比べて圧倒的に少なく、情報の更新にも時間がかかるなど、
WWW が巨大化するにつれてこの方式を維持するのは難しくなってきており、現在この方式
をとっている大手検索エンジンは Yahoo![9] くらいである。
2.1.2
ロボット型
ロボット、スパイダー、クローラーなどと呼ばれる WWW 巡回・情報収集プログラムを
使って自動的にページ情報を収集しデータベース化するタイプである。現在ではほとんどの
WWW 検索エンジンがこの方法をとっている。
Google [2], goo [1], Altavista [8], WiseNut [5] などがある。
2.2
2.2.1
検索方法
ディレクトリ型
ウェブサイト単位であるカテゴリーに分類し、利用者は探したいカテゴリーから対象のサ
イトを絞り込んでいく方式である。たとえば、Linux に関するサイトを探したいと思ったら
まず「コンピュータ」のカテゴリを見て、さらにその中にある「オペレーティングシステム」
のカテゴリーを見る。するとその中に「Linux」というカテゴリーがあって、そこに求める
ウェブサイトが列挙されている (さらに「Redhat」とか「Slackware」などの細かいカテゴリ
があるかもしれないが) という仕組みである。
2
分類方法には Yahoo! [9] のように人間がおこなうものと、goo [1] ようにロボットが自動
でおこなうものがある。また、Open Directory Project [7] では、誰でも参加できるボラン
ティア編集者によるカテゴリ分類を行っており、Google [2], Lycos [4], ODiN [6] などはその
情報をもとにディレクトリ型サービスを提供している。
2.2.2
キーワード検索型
検索したいキーワードを送信すると、そのキーワードに関連したページを返す形の検索エ
ンジンである。基本的には「ページ中にそのキーワードが多く含まれている」ページの情報
を優先して返す仕組みになっているが、利用者の利便のため、数多くリンクされているペー
ジほど優先度が高くなるなどの独自の工夫を加えて表示されることが多い。
キーワード検索は全く意味のわからない言葉を検索したり、ある意味でしか使われない特
殊な言葉などを検索するのに適しているほか、ディレクトリ型のように人間が分類しなくて
もある程度の検索精度は保てるという利点がある。
しかし、キーワードの「意味」については考慮しないため、検索結果に求めるものとはまっ
たく関係のないページが表示されることも多く、一般的で膨大な結果が出そうなキーワード
ではなくなるべく特殊な語を注意深く選んだり、結果の量を減らすために複数のキーワード
で絞込みを行うなどの必要がある。そのため、ユーザが求める情報をなるべく正確に得られ
るように各検索エンジンはそれぞれ工夫を凝らしている。
3
第 3 章 全文検索システム Verno
3.1
Verno の特徴
3.2
実装済みのデータベース
3.2.1
インデックスデータベース
インデックスデータベース [30] は Verno の開発とともに作成されたデータベースで、検索
エンジンにおいてもっとも基本的な、本文の文字列検索をおこなうためのものである。
Verno のインデックスデータベースの大きな特徴として、「全文検索」であることが挙げ
られる。
要素構造データベースでも、本文の検索についてはインデックスデータベースを利用して
いる。
3.2.2
タグデータベース
タグデータベース [32] は HTML の要素名の検索をおこなうデータベースで、これによっ
て「ある要素中に限って、ある文字列を検索する」という検索方法が可能になった。
しかし、[32] に示されているように、このような検索のためにはユーザがかなりの量の検
索プログラムを記述する必要があり、この点が 要素構造データベースの研究の出発点になっ
ている。
3.3
Verno のハードウェア構成
現在の Verno のハードウェア構成は表 3.1 のとおりである。OS は FreeBSD-3.x を採用し
ている。また、ハードディスクは基本的に Ultra2Wide SCSI を使用している。
4
表 3.1: Verno の機器構成
ホスト名
picadou
rollot
dauphin
halloumi
cabrales
chaource
filetta
tilsiter
morbier
CPU
PentiumII
PentiumIII
PentiumIII
Pentium4
PentiumIII
PentiumIII
PentiumIII
PentiumII
PentiumIII
HDD
450MHz x 2 169GB
1GHz x 2 160GB
600MHz
178GB
1.7GHz
171GB
600MHz
81GB
600MHz
160GB
600GHz
169GB
533MHz
15GB
800MHz
15GB
5
メモリ
512MB
1GB
512MB
1GB
512MB
512MB
512MB
392MB
392MB
用途
OS
WWW サーバ FreeBSD-3.4
収集ロボット FreeBSD-4.4
学内版 DB
FreeBSD-4.4
全国版 DB
FreeBSD-4.5
全国版 DB
FreeBSD-3.4
全国版 DB
FreeBSD-3.4
試験中
FreeBSD-3.4
テスト用
FreeBSD-4.4
テスト用
FreeBSD-4.4
(2002 年 2 月現在)
第 4 章 全文検索用索引の設計
4.1
SuffixArray
4.2
実験
6
第 5 章 データ構築部分の実装
5.1
要素構造データベースの構成要素
7
第 6 章 要素構造データベースの検索部分
の実装
6.1
サポートする検索言語
8
第 7 章 要素構造データベースを利用した
検索
7.1
Verno-elk での要素構造データベースの使用
9
第 8 章 まとめと今後の課題
8.1
まとめ
本研究では、要素構造データベースを設計、実装したことにより、ユーザーが検索に用い
ることのできる情報を増やし、検索の自由度を高め、結果としてより精度の高い検索と、検
索結果の幅広い活用が行えるようになったことを示すことができた。
しかし同時に、研究の過程でいろいろな問題点や今後解決すべき点などが明らかになって
きた。以下にそのような課題を述べる。
8.2
要素名以外のデータベースの構築
本研究では現在は要素名による検索しかできないが、各要素には要素名だけでなく属性に
よっても HTML 文書中での意味を決定することがあり、属性名や属性値を使った検索もで
きるようにすればさらに要素構造データベースの特徴を生かした検索が可能になるだろう。
たとえば A 要素の属性である href の値は「リンク先 URL」を表しているが、属性デー
タベースがあれば、特定の URL 文字列を含む A 要素を検索して、そのリンクテキストを表
示するなどの使い方が可能になる。
8.3
効率の改善
現在の実装では
(define result
(sdb:search "html"
(sdb:search "head"
(sdb:search "title" "研究室"))))
という検索をおこなったとき、「『研究室』という文字列を含む title 要素」という検索の
結果をすべてメモリに入れ、それを用いて「そのような title 要素を含む head 要素」という
検索をおこない、結果をすべてメモリに入れ…ということを繰り返しており、適用する条件
の数に比例してメモリを消費してしまう。
そこで、遅延評価を用いて、result から結果を読み出す際にはじめて
10
• 下のような条件の head 要素を含む html 要素をひとつずつ返せ
• 下のような条件の title 要素を含む head 要素をひとつずつ返せ
• 「研究室」を含む title 要素をひとつずつ返す
と、読み出し指令が伝播してゆくようにすれば、すべての要素を格納する必要はなくなる。
このようなメモリ効率の改善を図りたい。
8.4
全国版 DB でのテスト
本研究では全国版のデータを対象にしてタグデータベースを構築するまでには至らなかっ
たが、全国版という大規模なデータでの評価は必須であろう。大規模なデータを対象にする
ことにより、新たな問題点が出てくることは十分に考えられることである。
8.5
文書整形ツールの導入
第 5 章でも触れたように、HTML は人間が自ら記述していることも多いので、本来閉じ
られるべきタグが閉じられていない場合や、属性名や属性値が省略されていることも多い。
このことは本来 HTML が持つ、文書の意味構造を示すという重要な機能をそこねていると
いう一面も持つ。文書整形ツールとは対象とする HTML ファイルを解析した上でこれらの
問題を修正するためのツールである。現在、代表的な文書整形ツールである tidy[17] を利用
して最初から HTML ファイルを正規化する計画がある。実現すれば Perl を用いて行ってい
た複雑な文書の整形が必要なくなり、要素構造データベースの構築がプログラム面でも実行
速度面でも大幅に向上することが望める。ただし、このような処理をおこなうことは本来の
ページを改変することでもあり、慎重に検討する必要がある。
8.6
検索サービスの外部への公開
現在は、まだ細かいバグの修正や実行効率を上げるための修正を重ねている段階なので、
まだ要素構造データベースのサービスは一般公開されていない。しかし、ある程度は使える
ので近いうちに公開する予定である。その際には、直接に Elk でプログラムする検索スタイ
ルだけでなく、一般の人が馴染みやすい HTML フォームからの要素構造データベースの検
索方法なども考える必要があるだろう。
11
謝辞
今回の研究には様々な方々のご協力を頂きました。まず、指導教官の上田和紀教授のご指
導に対しまして、心より感謝の意を表したいと思います。Verno 班の金子宗太郎氏、菊地健
夫氏にはさまざまなご助言を頂きました。感謝致します。ともに研究を進めてきた永澤大介
氏、日野大介氏のさまざまなご協力にも感謝します。増田大樹氏にはマシンの設定などにつ
いて何度もお世話になりました。ありがとうございました。直接お会いすることはありませ
んでしたが、これまで Verno を作り上げてきた諸先輩方にも感謝致します。
12
参考文献
[1] goo : http://www.goo.ne.jp/
[2] Google : http://www.google.com/
[3] infoseek : http://www.infoseek.co.jp/
[4] Lycos : http://www.lycos.com/
[5] WiseNut : http://www.wisenut.com/
[6] ODiN : http://ingrid.odin.org/
[7] Open Directory Project : http://dmoz.org/
[8] AltaVista : http://www.altavista.com/
[9] Yahoo! : http://www.yahoo.com/
[10] Elk : http://www.informatik.uni-bremen.de/~net/elk/
[11] guile : http://www.gnu.org/software/guile/
[12] SCM : http://swissnet.ai.mit.edu/~jaffer/SCM.html
[13] W. Clinger and J. Rees (eds.), Revised4 Report on the Algorithmic Language Scheme,
ACM Lisp Pointers, Vol. 4, No. 3, pp. 1–55, 1991.
[14] R. Kelsey, W. Clinger, and J. Rees (eds.), Revised5 Report on the Algorithmic Language
Scheme. Higher-Order and Symbolic Computation, Vol. 11, No. 1, pp. 7–105, 1998.
[15] The FreeBSD project : http://www.freebsd.org/
[16] The World Wide Web Consortium : http://www.w3c.org/
[17] HTML TIDY : http://www.w3.org/People/Raggett/tidy/
[18] XML Path Language (XPath) 2.0 : http://www.w3.org/TR/xpath20/
[19] HTML 4.01 Specification : http://www.w3.org/TR/html4/
13
[20] XHTML
1.0
The
Extensible
http://www.w3.org/TR/xhtml1/
Hypertext
Markup
Language
:
[21] Verno : http://verno.ueda.info.waseda.ac.jp/
[22] 早稲田大学ホームページ : http://www.waseda.ac.jp/
[23] verno-elk : http://verno.ueda.info.waseda.ac.jp/network/scheme.html
[24] Iron33 : http://verno.ueda.info.waseda.ac.jp/iron33/
[25] w3grep : http://verno.ueda.info.waseda.ac.jp/w3grep/
[26] 沼尻務 : 日本語全文検索エンジン Verno におけるインデックスデータベースの実装と評
価,早稲田大学理工学部 1997 年度卒業論文,1998.
[27] 沼尻務,竹岡厚,渡辺高志,芦川将之,上田和紀 : 第 2 回インターネットテクノロジーワー
クショップ論文集,日本ソフトウェア科学会研究会資料シリーズ No.13, ISSN 1341-870X,
5-1,1999, pp.163-170.
[28] 芦川将之 : WWW 情報管理システム Bookshelf の設計と実装,早稲田大学大学院理工
学研究科情報科学専攻 2000 年度修士論文,2001.
[29] 渡辺高志 : 日本語全文検索エンジン Verno における WWW ロボット Iron33-c の設計と
実装, 早稲田大学理工学部情報学科 1997 年度卒業論文,1998.
[30] 渡辺高志,田川信一,沼尻務,竹岡厚,上田和紀 : WWW 全文検索システム Verno の
アーキテクチャ,情報処理学会第 58 回全国大会講演論文集,4T-07,1999.
[31] 渡辺高志 : 日本語全文検索エンジン Verno における検索言語の設計と実装,早稲田大学
大学院理工学研究科情報科学専攻 1999 年度修士論文,2000.
[32] 金子宗太郎 : WWW 検索システム Verno におけるタグデータベースの設計と実装, 早稲
田大学理工学部 2000 年度卒業論文, 2001.
[33] 山本毅雄,橋爪宏達,神門典子,清水美都子 : 全文検索 技術と応用,丸善,1998.
14