next up previous
Next: N-Gram Data Stractures Previous: 情報組織化論 3 (データベース利用論)

Inverted File Structure

DBMSと情報検索システムの両方に共通でよく用いられているデータ構造は、 転置ファイル (Inverted File) である。 転置ファイルは3つの基本ファイルから構成されている。 文書ファイル、 転置リスト(時にポスティングファイルとも呼ばれる)、 及び辞書ファイルである。 「転置ファイル (Inverted File)」という名前は、 文書を転換したものを蓄積するというその基本的な手法に由来するものである。 つまり、各単語に対して単語の出現した文書のリストを蓄積すると言う意味では、 文書の転換(転置)したもの(その単語に対する転置リスト)が 蓄積されるともいえる。 システム中における各文書は一意の番号で識別される。 転置リストに登録されているのは、その識別子である。 ある単語に対して転置リストを探索するには辞書ファイルを通じて行なう。 辞書ファイルはシステム中の全ての一意の単語(処理トークン)と その転置リストの場所へのポインターをソートしたリストである(図4.5参照)。 辞書ファイルは検索質問の最適化で用いられる転置リストの長さのような 別の情報をも蓄積できる。

適合率を増やし、転置リストの構造をより最適化するために、 資料からは他の情報も追加されることもある。 例えば、ゾーニングが使われていれば、 辞書ファイルはゾーン毎に区分されているかもしれない。 資料中の「Abstract」部分のための辞書ファイルと転置リストと、 「本文」部分のための辞書ファイルと転置リストが別になっていることもあるだろう。 特定のゾーンに検索を限った場合とは対照的に、 このことにより、ユーザが全資料を検索したい時には、 オーバーヘッドは増加するだろう。 また、別の一般的な最適化としては、 転置リストが1つか2つの項目しか含まない時に行なわれるものもある。 これらの項目は辞書ファイルの一部として蓄積されうる。 転置ファイルは単語が見つかった各文書の文書番号を含んでいる。 近接演算や連続した単語句(contiguous word phrase)や 用語の重みづけアルゴリズムを用いるためには、 単語の全ての出現はその位置と一緒に転置リストに蓄積される。 したがって、 もし ``bit'' という単語が文書#1中で10,12,18番に現れたら、 転置リストは次のようになるだろう。

bit - 1(10), 1(12), 1(18)
重みも転置リストに蓄積されうる。 特殊な文字を含む単語はしばしば最善の内部表現と内部操作を行なうために、 それ自身の辞書に蓄積される (例えば、範囲を要する日付や数字)。

検索が行なわれる際には、 検索質問中の用語に対して転置リストが探索され、 転置リスト間でそれにふさわしい論理操作が適用される。 検索結果は質問を満たす資料の最終的なヒットリストである。 ランクづけを行なうシステムに対しては、 ランク順にリストは再編成される。 文書番号は文書ファイルから文書をとってくるために用いられる。 図4.5に示す転置リストを使うと、 まず、検索質問 (bit AND computer) は ``bit'' と ``computer'' に対する転置リストを探索するために、 辞書ファイルを用いる。 これらの2つのリストは論理的にANDが取られ、 つまり、 (1,3) AND (1,3,4) の結果は (1,3) のヒットリストとなる。

転置リストへのポインターを持つ辞書を使う代わりに、 Bツリー (B-Tree) も使われる。 転置リストは葉 (leaf) か、より高いレベルで参照される。 図4.6に図4.5中の単語がどのようになるかを示す。 mのオーダーのBツリーは次のように定義される。

根ノード (root node) は2〜2mのキーを持つ。
他の全内部ノードはm〜2mのキーを持つ。
全てのキーは昇順に整列されている。
全ての葉ノードは同一のレベルにあるか、 もしくは、高々1レベルしか違わない。
CuttingとPedersenは大量の更新を行なうデータに対する 有効な転置ファイルの蓄積手法として、Bツリーを用いることについて述べている。 (Cutting-90)

情報システムの性質として、 資料は一旦作成されると滅多に変更されないというものがある。 ほとんどの商用システムはこの事実を利用して、 増大する文書ファイルと対応する転置リストがある上限のサイズになると それらを凍結して、新しい構造を構築し始めるのである。 文書ファイル、辞書ファイル、転置リストのこれらのデータベースの各々は、 保管され、ユーザの検索質問に提供されている。 このことは、最新の情報にのみ関心のある質問に対しては、 最新のデータベースを検索すればよいという利点を持つのである。 より古い資料は滅多に削除されたり、修正されたりしないので、 保管されたデータベースは永続的にバックアップされ、 したがって、運用オーバーヘッドを省くものとなる。 新しい転置データベースを始める際には、 頻出する単語が辞書ファイルと転置リストに追加されるまでは、 辞書ファイルと転置リストに新しい単語の追加という 顕著なオーバーヘッドが存在する。 保管されたデータベースの従来の知識は、 新しいデータベースを開始する際に、 存在している辞書ファイルと転置構造体を使うことで利用可能となる。 このようにして、新しい文書の初期追加時に起きるオーバーヘッドは だいぶ減らせる。2

転置リスト構造は、大規模データベースを検索する際に 最善の実行が行なえるという理由から利用されている。 このような最善性は検索質問の解決を行なう際の データフローの最小化に由来するものである。 質問に直接関連するデータのみが2次的な蓄積から返されるのである。 辞書ファイル中にある情報に基づいて、 検索質問の解決を最適化するのに利用される手法にも多くのものが存在する。

転置リストファイルの構造は 概念とそれらの関係を蓄積するのによく適応したものである。 個々の転置リストはある特定の概念の表現としても考えられる。 転置リストはその概念を含む全資料の用語索引である。 概念のより良い表現は、 資料中の場所や転置リスト中の資料の重みを蓄積することにより、 加えられる。 この情報から概念関係は検索アルゴリズムの一部として決定される(第7章参照)。 概念の探索は辞書ファイルと転置リスト中の一覧によって、 容易に行なえる。 自然言語処理アルゴリズムでは、 別の構造がより適切であるか、 もしくは必要な意味的・文法的情報を保持するために 転置リストに加えて、他の構造を加える必要があるかも知れない。



Masao Takaku 平成11年3月11日