オープンソースのデスクトップ検索エンジン

ローカル・ストレージの容量が大きくなるにつれ、デスクトップ・コンピューター上での整理や検索に対する要求はより複雑なものになってきました。imgSeek と Terrier という 2 つのデスクトップ検索エンジン・ツールは、テキスト・ファイルや画像ファイルを素早く検索したい場合に役立ちます。この 2 つのツールは、オペレーティング・システムでは限定されている機能、あるいはオペレーティング・システムにはない機能を使用して検索を行います。

Judith M. Myerson, Systems Engineer and Architect

Judith M. Myerson はシステム・アーキテクト兼システム・エンジニアです。ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、RFID テクノロジー、そしてプロジェクト管理を含む数多くの分野を得意としています。彼女は、『RFID in the Supply Chain』の著者であり、『Enterprise Systems Integration, Second Edition Handbook』の編集者でもあります。


developerWorks 貢献著者レベル

2011年 4月 19日

オープンソースのデスクトップ検索エンジンの利点

適切なコンテンツを見つけるためには単純にフロッピー・ディスク・ケースから適切なフロッピー・ディスクを取り出せばよい、という時代がありました。そうした日々は遠い昔のこととなっています。今や平均的なデスクトップ・コンピューターには、何百ギガバイト、場合によっては何テラバイトものデータが保存されています。そうした大量の情報は相互に関連しているため、単純にフォルダーやファイルを階層構造に配置するだけでは、必要なものを見つける上で十分ではありません。インテリジェントなツールにより、ファイルに索引を付け、適切なコンテキストでファイルを見つける必要があります。Google などは既に商用のデスクトップ検索エンジンを作成しています。しかしそれら以外にも、オープンソースのデスクトップ検索エンジンがあります。

この記事では imgSeek と Terrier という、オープンソースのデスクトップ検索エンジンについて説明します。この 2 つは画像ファイルを検索する場合や、画像に関するテキストや参照が含まれる XML 文書を検索する場合に便利なツールです。ラフ・スケッチを使用したり、画像をインポートしたりすることで、まったく異なる何百という画像の中から、似たような画像に対するクエリーを実行することができます (まるで干し草の山の中から 1 本か 2 本かの針を見つけ出すような作業です)。検索の結果として、異なるファイル名の非常によく似た画像が見つかります。画像の内容で検索できるだけではなく、ファイル名、説明、作成日などのメタデータ・キーワードによって画像を検索することもできます。

Terrier

Desktop Terrier を使用すると、画像への参照が含まれる文書のうち、検索フィールドで指定した 1 つまたは 2 つの単語が含まれる文書に検索の範囲を絞ることができます。検索の選択肢はいくつかあります。検索フィールドでは、文書に含まれていなければならない単語と含まれていてはならない単語を指定することや、重要な単語や関係の深い単語に重みを割り当てることができます。重要な単語を含む文書は検索結果の最初に表示されます。通常、私はそうした検索結果に満足しています。Terrier にはバッチ・モードと対話型モードがあります。

imgSeek

imgSeek のデスクトップ版は、無料でオープンソースの視覚的類似性プロジェクトを集めたものであり、ラフ・スケッチでクエリーを表現することも、ユーザーが提供する別の画像でクエリーを表現することもできます。imgSeek で使用しているアルゴリズムでは、クエリーの画像やデータベースの画像に対して多重解像度ウェーブレット分解を行います。コンテンツ・ベースの画像データベースを画像関連の Web サイトに統合することに関心のある方は、サーバー・サイド版を使用してください。

図 1 は、imgSeek のデスクトップ版を最初に起動したときに、「Options (オプション)」 > 「Viewing (表示)」の順に選択すると表示される内容を示しています。

図 1. imgSeek のデスクトップ版を「Options (オプション)」 > 「Viewing (表示)」の順に選択したときの表示
このスクリーンショットには、imgSeek の表示オプションが示されており、「Slideshow delay (スライドショーの間隔)」を設定するオプションや、サムネイル画像のスムージングのオプションなどがあります。

imgSeek 起動時に表示される内容は変更することができます。「by Image content (画像内容)」ページが表示されるようにしたい場合には、「Search (検索)」に続いて「by Image content (画像内容)」をクリックし、imgSeek を終了して再起動します。図 2 にその結果を示します。

図 2. imgSeek 起動時に表示されるページを「by Image content (画像内容)」に変更した状態
このスクリーンショットには、imgSeek で画像内容による検索を行う際のページが示されており、このページにサンプル画像をインポートしたりラフ・スケッチを描画したりすることができます。

画像内容で検索する

検索の方法として、画像内容による検索、キーワードによる検索、グループによる検索があります。画像内容で検索するためには、最初に画像をインポートするか、あるいはスケッチを描画し、それを使用して集合の中から画像を検索して表示する必要があります。まだ画像の集合がない場合には、「Add (追加)」タブを選択して集合を作成してから、その集合に画像を追加します。

集合を作成できたら、「Search (検索)」タブの「by Image content (画像内容)」タブに戻り、集合から 1 つの画像をインポートするか、あるいはスケッチを作成します。図 3 は、画像を描画する場合にパネルから色を選択できることを示しています。

図 3. 花のラフ・スケッチ
このスクリーンショットには、描画機能が示されており、赤い線で花の大まかな外形が描かれています。また、ブラシの太さを変えるためのスライダーと、色を選択するためのパネルがあります。

スケッチ用のブラシの太さは調整することができ、バーの左方向にスライドするとブラシが細くなり、右方向にスライドすると太くなります。ブラシの太さを太くしたり、細くしたりすると、それに伴いパネルから選択した色を示すボックスが大きくなったり、小さくなったりします。スケッチは後で確認できるように保存することも、ごみ箱に入れることもでき、またスケッチ履歴をリセットすることもできます。

次に「Results (結果)」ボックスにアクセスしてクエリー・ボタン (左端) をクリックすると、集合の中にある、似たような何枚かの画像が素早く検索されます。図 4 はクエリーによって取得された、図 3 のスケッチと似た形状と色の画像を示しています。パーセントで表示された重みは、どの程度似ているかを示しています。

図 4. 花の画像を検索した結果
このスクリーンショットには、スケッチにマッチした 3 つの画像が表示されており、どの程度似ているかがパーセントで表現されています。

今度は、太いブラシで描画された図 5 のスケッチを見てください。選択された色を示す「Color (色)」ボックスは図 3 の場合よりも大きくなっています。

図 5. 太いブラシで描画されたラフ・スケッチ
このスクリーンショットには、同じ花のスケッチが太い線で描かれています。

図 6 を見ると、結果は図 4 の場合と異なります。

図 6. 図 4 の場合とは異なる検索結果として表示された花の画像
このスクリーンショットには、検索結果の画像セットと類似性のパーセンテージが示されています。

図 4図 6 で、検索クエリーによって取得された最初の画像には、重みが最大のラベルが付けられています。図 6 の最初の画像に割り当てられた重みは、図 4 の最初の画像に割り当てられた重みよりも多少高くなっています。これは、集合から取得された画像とラフ・スケッチとの間の形状および色の類似性が、図 6 の場合の方が多少高いためです。

図 4 で 2 番目の画像が図 6 では最初の画像になっています。これは、この画像と (太いブラシで描画された) ラフ・スケッチとの類似性の程度が変化したためです。図 6 の花の写真は図 4 には表示されていません。この写真と図 5 のスケッチの形状とブラシの太さは少し似ています。図 3 のスケッチの筆の太さは細いため、この写真は図 4 に表示されている画像の集合には現れていません。

画像の集合を作成する

検索および閲覧の対象となる画像の集合を作成する必要があります。ファイルを追加するためには、「Add (追加)」タブを開きます。追加または無視したいファイルのパスを設定することができます。集合に名前を付けることも、システムによって自動的に集合を作成することもできます。特定のファイル、大きさ、拡張子のみにファイルを制限することもできます。

便利な機能として、ビープ音を有効にすることで、いつ imgSeek がファイルの追加やメタデータの抽出を終了したかを知ることができます。進行状況を非表示にすることや、拡張子を指定せずに画像ファイルを追加することもできます。準備ができたら「Add (追加)」をクリックして処理を開始します。

ファイルを追加する前にメタデータ項目 (作成者の名前など) を編集したい場合には、「Tools (ツール)」メニューを利用します。画像のメタデータを 1 つずつ編集することも、以前に作成したバッチに含まれる画像セットに変更を適用することもできます。バッチを編集するためには、「Tools (ツール)」メニューの下にある「Work batch editor (ワーク・バッチ・エディター)」を選択します。図 7 はワーク・バッチ・エディターを選択できるメニューを示しています。

図 7. 「Work batch editor (ワーク・バッチ・エディター)」
このスクリーンショットには、「Work batch editor (ワーク・バッチ・エディター)」を選択するメニューが示されています。

ワーク・バッチにデータを追加するためには、バッチに含めたい画像を右クリックし、その画像をバッチに追加します。画像の追加先となるワーク・バッチの場所としては、システム・ディレクトリー、キーワード・グループ、データベース・ディレクトリーがあります。また、重複した画像を見つけてリネームすることもできます。メタデータへの変更を保存するためには、「Database (データベース)」メニューで「Export metadata (メタデータをエクスポート)」を選択します (図 8)。

図 8. メタデータをエクスポートする
このスクリーンショットには、「Export metadata (メタデータをエクスポート)」を選択するメニューが示されています。

どんな画像を集合に追加したかを忘れてしまった場合には、「Maintenance (メンテナンス)」メニューから「Scan all directories for new images (全ディレクトリーで新規画像を検索)」を実行すると、検索時間を節約することができます。

キーワードで画像を検索する

画像の内容ではなく、キーワードで画像を検索することができます。まず、「Filed (フィールド)」列のスペースで右クリックすると、小さなメニューが表示されます。「New parameter (新規パラメーター)」をクリックすると、最初のパラメーターとして「Description (説明)」がデフォルトで挿入されるので、その画像に関する説明を「Value (値)」列に入力します。

次のステップとして、論理 AND 演算子または論理 OR 演算子と 2 番目のパラメーターを選択します。AND 演算子は、集合の中から画像を検索する場合に imgSeek が最初のパラメーターと 2 番目のパラメーターの両方を使わなければならないことを示します。OR 演算子は、集合の中から画像を検索する際に 2 つのパラメーターのどちらを使っても構わない場合、imgSeek が 2 つのパラメーターのいずれか 1 つを使用できることを示します。

2 番目のパラメーターを作成するためには、「Description (説明)」パラメーター (最初のパラメーター) の下のスペースで右クリックし、表示されるメニューから「New parameter (新規パラメーター)」をクリックします。ドロップダウン・ボックスの矢印をクリックすると、以下のパラメーターがすべて表示されます。

  • Description (説明)
  • Dimensions (大きさ)
  • Filesize (ファイル・サイズ)
  • Filename (ファイル名)
  • Format (フォーマット)
  • Modify Date (変更日)
  • Database Date (データベースの日付)
  • Mounted (マウント、Linux の場合のみ)

パラメーターを選択したら、そのパラメーターに関するキーワードを記述します。それぞれのパラメーターにどのような記述がされているのか確信がない場合には、「Tools (ツール)」メニューから「Edit image metadata (画像のメタデータを編集)」を選択して画像のメタデータを表示してみます。すると、キーワード・パラメーターのリストは画像ファイルに含まれるメタデータ全体の一部であることがわかるはずです。

類似性で画像を閲覧する

閲覧の方法として、ファイル、グループ、システム、類似性による方法があります。ファイルやグループで閲覧する方法は新しくはありません。どこにファイルを置いたかを覚えていれば、それらのファイルを含むディレクトリーにアクセスしてファイルを直接閲覧することができます。

ある画像を別の画像と類似性で比較するためには、まず「Add (追加)」タブで集合に画像を追加する必要があります。それを終えたら、「Similarity (類似性)」タブに戻り、画像を「Date (日付)」で閲覧するか「Filename (ファイル名)」で閲覧するかを指定します。

何百ものファイルを閲覧する場合には、似た日付やファイル名でファイルをグループ化し、どのグループを閲覧するかを選択した方が効率的かもしれません。似たファイルによってグループを生成するためには、「Group (グループ)」をクリックします。集合が小さすぎて閲覧できない場合には、その集合にさらに画像を追加してみます。「Group (グループ)」ボタンの隣にある「Export (エクスポート)」ボタンを使用すると、似たファイルによるグループを論理的なグループとしてエクスポートすることができます。


テキスト・デスクトップ検索エンジン: Terrier

画像の検索結果に満足できたら、次のステップでは Terrier を使用し、それらの画像を含む XML 文書を検索します。imgSeek とは異なり、コマンド・プロンプトから Terrier の GUI を起動する必要があります。適切なバージョンの Java がコンピューターにインストールされていることを確認します。

Terrier のメイン・ウィンドウには、「Search (検索)」と「Index (索引)」という 2 つのタブしか表示されません。初めて Terrier を実行すると「Index (索引)」タブにフォーカスがあり、ダイアログ・ボックス (図 9) が表示され、Terrier 独自の文書やユーザーが選択した文書への索引付けを Terrier に任せるかどうかを尋ねられます。

図 9. 初めて Terrier を実行したときに表示されるダイアログ・ボックス
このスクリーンショットには、Terrier 独自の文書に索引を付けるかどうかを「Yes」または「No」で選択するように促しています。

索引付けの対象となる XML 文書のフォルダーを選択します。Terrier を再起動すると、「Search (検索)」タブにフォーカスが移っています。「Index (索引)」タブに切り換え、文書に索引を付け直してから文書を検索します。

ファイルに索引を付ける

「Index (索引)」タブでフォルダーを選択すると、Terrier によってどの文書に索引付けするかを指定するウィンドウが表示されます。文書の指定を終えたら、「OK」をクリックして「Index (索引)」タブに戻り、索引作成プロセスを開始します。

Terrier はインクリメンタルな索引付けをサポートしていません。索引を作成するたびに、Terrier は古い索引を削除し、指定されたすべてのフォルダーにゼロから索引を付け直します。

索引付けの進行状況はウィンドウの下の方に表示されます。索引付けが完了すると、Terrier のフォーカスは「Search (検索)」タブに移ります。


Terry 問い合わせ言語

「Search (検索)」タブは非常に単純で、Terrier にクエリーを入力するための 1 つのフィールドしかありません。問い合わせ言語を使用して単語を個々に検索することも、フレーズで検索することもできます。imgSeek によって検索された画像を含む文書に対してクエリーを実行する例を以下に挙げます。

例 1: 単語1 単語2

このクエリーでは、指定した 1 つまたは 2 つの単語を含む文書が返されますが、必ず両方の単語が含まれているわけではありません。例えば、最初の単語が boat で 2 番目の単語が imgboat1.png だとします。検索結果として表示される 1 番目の文書には boat は含まれるけれども imgboat1.png は含まれず、2 番目の文書には imgboat1.png は含まれるけれども boat は含まれず、3 番目の文書には両方の単語が含まれるかもしれません。

これらの検索結果として表示される文書の順番は決まっていないため、誤ったラベルの画像を含む文書を特定するのに役立つかもしれません。

例 2: 単語1^2.3 単語2

最初の単語の重みが 2.3 倍に増加され、2 番目の単語の重みは 1 のままです。クエリーを入力する際に単語と重みの間にキャレット記号 (^) を入れるのを忘れないでください。検索結果として表示される文書には、最初の単語は必ず含まれていますが、2 番目の単語は含まれている場合も、含まれていない場合もあります。検索結果として、重み付けされた単語を含む文書が最初に表示されます。

最初の例の文書とは異なり、(今度は 2.3 という重みを割り当てられた) boat を含む文書は必ず結果の先頭に表示されます。これらの文書には、ボートの画像への参照が含まれている場合もあれば、含まれていない場合もあります。

さらに検索を絞るためには、3 番目の単語 (flower など) を検索フィールドに入力します。この 3 番目の単語に割り当てられる重みは、最初の単語に割り当てられる重みよりも高い場合も低い場合もあります。例えば、最初の単語の重みが 7.2 で 3 番目の単語の重みが 2.5、のように最初の単語の重みの方が高い場合、最初の単語を含む文書が検索結果の最初に表示される可能性が非常に高くなります。

例 3: +単語1 +単語2

両方の単語を含む文書を取得するためには、単語の接頭辞としてプラス記号を入力します。この 2 つの単語は文書の別々の場所にあっても構わず、フレーズの場合のように 2 つの単語が連続している必要はありません。例えば flowerimgflower1.png は別の場所にあり、flowerimgflower1.png と関連していないかもしれません。その画像には 1 つの文書で Flower というラベルが付けられ、同じ文書の別のバージョンでは Rose というラベルが付けられているかもしれません。

例 4: +単語1 -単語2

最初の単語を含むけれども 2 番目の単語を含まない文書を検索する場合には、この例を使用します。そのためには、最初の単語の接頭辞としてプラス記号を入力し、2 番目の単語の接頭辞としてマイナス記号を入力します。ある文書に最初の単語と 2 番目の単語の両方が含まれている場合、その文書が検索結果として取得されることはありません。

例えば +boat +imgboat1.png-canoe という 3 つの単語で検索する場合、boatimgboat1.png を含むけれども canoe を含まない文書が取得されます。

例 5: "単語1 単語2"

文書内の 1 つのフレーズの中に両方の単語が含まれるような文書を取得することができます。3 番目の例のように両方の単語が別の場所に存在することはありません。フレーズを指定するためには、"Flower picture" のように複数の単語を二重引用符で囲みます。

例 6: フレーズ1 -単語1 単語2^3.5

1 つのフレーズと重み 3.5 を持つ 2 番目の単語は含まれるけれども最初の単語は含まれない文書を検索するとしましょう。例えば、"Figure 7. This is the picture of a flower" を含むけれども boat を含まず、重み 3.5 の単語として stone を含む文書を検索することができます。


まとめ

厳しい締め切りに合わせ、何千ものファイルから情報を取得して表示しなければならないユーザーにとって、imgSeek と Terrier は便利です。この 2 つのツールは、オペレーティング・システムでは限定されている機能、あるいはオペレーティング・システムにはない機能を備えています。imgSeek は内容、キーワード、類似性で画像を検索することができます。Terrier は単語の 1 つに重みを付け、さまざまな文書の内容を検索することができます。

参考文献

学ぶために

  • Terrier のバッチ版と対話型版について学んでください。また Terry 問い合わせ言語の最新情報を調べてみてください。
  • imgSeek の詳細について調べてみてください。そして興味深い画像や写真のスクリーンショットを見ながら imgSeek について学んでください。
  • developerWorks の Technical events and webcasts で最新情報を入手してください。
  • Twitter で developerWorks をフォローしてください。
  • IBM オープンソース開発者にとって関心のある、世界中で今後開催される会議や業界展示会、ウェブキャスト、その他のイベントについて調べてみてください。
  • developerWorks の Open source ゾーンをご覧ください。オープンソース技術を使った開発や、IBM 製品でオープンソース技術を使用するためのハウ・ツー情報やツール、プロジェクトの更新情報など、豊富な情報が用意されています。
  • IBM とオープンソース技術、そして製品機能を調べ、学ぶために、無料の developerWorks On demand demos をご覧ください。

製品や技術を入手するために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=660402
ArticleTitle=オープンソースのデスクトップ検索エンジン
publish-date=04192011