(57)【要約】【課題】コーパス内のファセットのうち部分集合内での出現頻度が高い方から指定された数のファセットを提示する処理を、コーパスに対して部分集合が小さい場合でも高速に、かつ、ファセットの情報を記憶するメモリの容量を抑えつつ、行う。【解決手段】ファセットカウント装置１０において、ファセット分割部３４は、ファセットをコーパス内での出現頻度順にレンジに分割し、順位付きカウンティングリスト作成部３５は、各レンジのカウンティングリストを作成する。コーパスが部分集合に絞り込まれると、ファセットカウンティング制御部４１は、Ｎ番目のレンジのカウンティングリストを用いてファセットをカウントし、その後、（Ｎ＋１）番目のレンジにおけるファセットのコーパス内での最高の出現頻度がこれまでのカウント結果におけるファセットの最低の出現頻度以下であれば、ファセットのカウントを打ち切る。【選択図】図７
2014130498.tif 000002
【特許請求の範囲】
【請求項１】
第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、当該第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する装置であって、
前記複数のファセットを、前記第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、
前記複数のレンジの各レンジに対して、前記第１の文書集合内の複数の文書の各文書と、当該各レンジに含まれるファセットのうちの当該各文書を特徴付けるファセットとを関連付けたインデックスを生成する生成部と、
前記複数のレンジのうちの指示されたレンジについて、前記生成部により当該指示されたレンジに対して生成された前記インデックスの前記第２の文書集合内の文書に関する部分を参照することにより、前記第１の文書集合内での出現頻度が高いファセットを含む方から当該指示されたレンジまでのレンジに含まれるファセットのうち前記第２の文書集合内での出現頻度が高い方から前記指定された数のファセットを記録する記録部と、
前記複数のレンジのうちの前記第１の文書集合内での出現頻度が高いファセットを含む方からＮ番目（Ｎは自然数）のレンジについて、前記記録部により前記指定された数のファセットが記録された時点で、前記複数のレンジのうちの前記第１の文書集合内での出現頻度が高いファセットを含む方から（Ｎ＋１）番目のレンジに含まれるファセットの前記第１の文書集合内での出現頻度のうちの最高の出現頻度が、前記記録部により記録された前記指定された数のファセットの前記第２の文書集合内での出現頻度のうちの最低の出現頻度以下であれば、当該（Ｎ＋１）番目のレンジについて、前記記録部により前記指定された数のファセットが記録されないように制御する制御部と
を含む、装置。
【請求項２】
前記生成部が前記複数のレンジの各レンジに対して前記インデックスを生成する際に、当該各レンジに含まれるファセットの前記第１の文書集合内での出現頻度のうちの最高の出現頻度を当該インデックスに付加する付加部と、
前記（Ｎ＋１）番目のレンジに含まれるファセットの前記第１の文書集合内での出現頻度のうちの最高の出現頻度を前記制御部が用いる際に、当該最高の出現頻度として、当該（Ｎ＋１）番目のレンジに対して前記生成部により生成された前記インデックスに前記付加部により付加された最高の出現頻度を取得する取得部と
を更に含む、請求項１の装置。
【請求項３】
第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、当該第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照される、当該第１の文書集合のインデックスを生成する装置であって、
前記複数のファセットを、前記第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、
前記複数のレンジの各レンジに対して、前記第１の文書集合内の複数の文書の各文書と、当該各レンジに含まれるファセットのうちの当該各文書を特徴付けるファセットとを関連付けた前記インデックスを生成する生成部と
を含む、装置。
【請求項４】
前記複数のファセットを、前記第１の文書集合内での出現頻度が高い順にソートするソート部を更に含み、
前記分割部は、前記ソート部によるソート結果に基づいて、前記複数のファセットを前記複数のレンジに分割する、請求項３の装置。
【請求項５】
前記複数のレンジのうちの前記第１の文書集合内での出現頻度が最も高いファセットを含むレンジである最上位レンジに含まれるファセットの前記第１の文書集合内での出現頻度に対する、当該最上位レンジに含まれるファセットの前記第２の文書集合内での出現頻度の割合が、所定割合以上になる可能性がある場合に、当該最上位レンジに含まれるファセットの数を、当該最上位レンジ以外のレンジに含まれるファセット数よりも小さな数に決定する決定部を更に含む、請求項３又は請求項４の装置。
【請求項６】
コンピュータが、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、当該第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する方法であって、
前記コンピュータが、前記複数のファセットを、前記第１の文書集合内での出現頻度が高い方から複数のレンジに分割するステップと、
前記コンピュータが、前記複数のレンジの各レンジに対して、前記第１の文書集合内の複数の文書の各文書と、当該各レンジに含まれるファセットのうちの当該各文書を特徴付けるファセットとを関連付けたインデックスを生成するステップと、
前記複数のレンジのうちの前記第１の文書集合内での出現頻度が高いファセットを含む方からＮ番目（Ｎは自然数）のレンジについて、当該Ｎ番目のレンジに対して生成された前記インデックスの前記第２の文書集合内の文書に関する部分を参照することにより、前記第１の文書集合内での出現頻度が高いファセットを含む方から当該Ｎ番目のレンジまでのレンジに含まれるファセットのうち前記第２の文書集合内での出現頻度が高い方から前記指定された数のファセットを記録するステップと、
前記Ｎ番目のレンジについて、前記指定された数のファセットが記録された時点で、前記複数のレンジのうちの前記第１の文書集合内での出現頻度が高いファセットを含む方から（Ｎ＋１）番目のレンジに含まれるファセットの前記第１の文書集合内での出現頻度のうちの最高の出現頻度が、記録された前記指定された数のファセットの前記第２の文書集合内での出現頻度のうちの最低の出現頻度以下であれば、前記指定された数のファセットの記録を打ち切るステップと
を含む、方法。
【請求項７】
第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、当該第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照される、当該第１の文書集合のインデックスを生成する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記複数のファセットを、前記第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、
前記複数のレンジの各レンジに対して、前記第１の文書集合内の複数の文書の各文書と、当該各レンジに含まれるファセットのうちの当該各文書を特徴付けるファセットとを関連付けた前記インデックスを生成する生成部と
して機能させる、プログラム。
【請求項８】
第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、当該第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照されるデータ構造であって、
前記複数のファセットが、前記第１の文書集合内での出現頻度が高い方から複数のレンジに分割された状態で配置されたファセット部と、
前記複数のレンジの各レンジに対して設けられ、前記第１の文書集合内の複数の文書のリストであって、当該複数の文書の各文書に、当該各レンジに含まれるファセットのうちの当該各文書を特徴付けるファセットが関連付けられたリストを含むリスト部と
を含む、データ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファセットを提示する装置及び方法に関する。特に、本発明は、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する装置及び方法に関する。
【背景技術】
【０００２】
コーパス内に出現する複数のファセットのうち、コーパスの全体をなす文書データ（以下、単に「文書」という）をクエリで絞り込んで得られたコーパスの部分をなす文書集合（以下、「部分集合」という）内に出現するファセットを、そのファセットの部分集合内での出現頻度の情報と共にユーザに提示するファセットカウンティング（Facet Counting）と呼ばれる技術がある。
【０００３】
この技術において、ファセット（Facet）とは、コーパス内の文書を特徴付ける属性を意味しており、文書に対して事前に定義された分類ラベル、自動的に文書から抽出される特徴的な語句、文書に動的に付与されるタグ情報等に相当する。例えば、商品の分類や、特徴的な語句が品詞の分類木に基づいて解析されることからも分かる通り、このような属性は木構造を構成する。尚、商品の分類等をファセットとする場合にはその数は限られるが、分析ソフトウェア等で語句をファセットとする場合等にはその数は膨大となり得る。
【０００４】
また、ファセットカウンティングとしては、各カテゴリに対して出現頻度順に、指定された順位までのファセットを返すものが一般的である。例えば、得られたファセットは木構造の要素として返される。尚、部分集合が大きい場合は、部分集合内の文書からサンプリング等の手法で抽出された文書に対してファセットカウンティングを行うことも考えられるが、分析ソリューション等では、正確な出現頻度の提示が求められるため、部分集合全体を処理する必要がある。
【０００５】
ところで、従来、ファセットカウンティングは、コーパスに対するインデックスとして、文書ごとにその文書を特徴付けるファセットを管理する第１のインデックス、及び、コーパス内に出現するファセットを出現頻度順にソートしてファセットごとにそのファセットによって特徴付けられる文書を管理する第２のインデックスの何れか一方を用いて行われていた。このうち、第２のインデックスを用いたファセットカウンティングに関しては、以下の技術が知られている。
第一に、“Ｅａｒｌｙ−ｏｕｔ”と呼ばれる打ち切りを行うことにより、効率的にファセットカウンティングを行う技術である（非特許文献１、２参照）。
第二に、部分集合が小さい例外的な状況に備えて、第１のインデックスを用いたファセットカウンティングにスイッチする技術である（例えば、非特許文献１参照）。
【０００６】
また、文書のカテゴリへの分類又はカテゴリに分類された文書の取得に関する技術は、公報記載の技術としても知られている（例えば、特許文献１〜３参照）。
特許文献１は、入力部がカテゴリ情報を含む複数の文書データを入力し、文書解析部がその文書データに含まれるカテゴリ情報を認識し、その文書データに含まれる文章の各単語を切り出し、その文書データに含まれる単語をその頻度をそれぞれの文書データについて計算して単語頻度データを生成し、単語重要度算出部が単語頻度データをもとに、共通のカテゴリに属する文書データにおける各単語の重要度の値をそれぞれのカテゴリについて計算し、出力部が単語重要度算出部による計算結果をもとに、各カテゴリについて単語重要度の値が大きい単語をカテゴリごとに抽出する技術を開示する。
【０００７】
特許文献２は、複数の文書データに含まれる単語対が共起する文書データの数を示す第１の出現頻度と、指定カテゴリが対応付けられた複数の文書データのうち、単語対が共起する文書データの数を示す第２の出現頻度とを算出し、第２の出現頻度から第１の出現頻度を除算した値を共起度として算出し、単語をノードとし、共起度をエッジとしたネットワークデータをＮ×Ｎの対称行列である行列データとして生成し、生成した行列データの最大固有値を凝集度として算出し、算出した凝集度に対応する固有ベクトルから定められる複数の単語の集合であるクラスタを抽出し、単語毎のクラスタに対する帰属度を算出し、閾値を超える帰属度をもつ複数のノードを指定カテゴリの特徴を表す特徴語として抽出する技術を開示する。
【０００８】
特許文献３は、ユーザが入力した検索要求のカテゴリや検索条件にこの検索要求のあった日時情報を付加して、時系列で検索ログとして記憶しておき、この検索ログから頻度の高い検索語をカテゴリとして抽出し、端末装置の画面に表示されたカテゴリの中からユーザがカテゴリを選択し、この選択されたカテゴリを検索条件としてデータベースを検索する技術を開示する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−２４１６３６号公報
【特許文献２】特開２０１１−１６４７９１号公報
【特許文献３】特開２００５−９９９６４号公報
【非特許文献１】D.Takuma，I.Yoshida，“Top-N keyword calculation on dynamically selected documents”，IBM Research Report，RT-0760，2007
【非特許文献２】Alkis Simitsis，Akanksha Baid，Yannis Sismanis，Berthold Reinwald，“Multidimensional Content eXploration”，Proceedings of the VLDB Endowment，Volume 1，Issue 1，Pages 660-671，August 2008
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、従来、ファセットカウンティングは、第１のインデックス及び第２のインデックスの何れか一方を用いて行われていた。
このうち、第１のインデックスを用いたファセットカウンティングは、部分集合全体を走査し終えるまで、出現頻度が上位のファセットが確定しないため、ファセットの空間が巨大であれば、ファセットカウンティングを行っている間にファセットの情報を一時的に記憶するメモリの容量が大きくなってしまうという問題を有している。
また、第２のインデックスを用いたファセットカウンティングは、部分集合が大きければ、“Ｅａｒｌｙ−ｏｕｔ”が効果的であるので、高速に処理できるものの、部分集合が小さければ、多くのファセットを走査する必要があるので、高速に処理できないという問題を有している。
【００１１】
尚、非特許文献１、非特許文献２、及び、特許文献１〜３の技術は、これらの問題を解決するための手段を何ら提案するものではない。
【００１２】
本発明の目的は、第１の文書集合内のファセットのうち第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する処理を、第１の文書集合に対して第２の文書集合が小さい場合でも高速に、かつ、ファセットの情報を記憶するメモリの容量を抑えつつ、行うことにある。
【課題を解決するための手段】
【００１３】
かかる目的のもと、本発明は、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する装置であって、複数のファセットを、第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、複数のレンジの各レンジに対して、第１の文書集合内の複数の文書の各文書と、各レンジに含まれるファセットのうちの各文書を特徴付けるファセットとを関連付けたインデックスを生成する生成部と、複数のレンジのうちの指示されたレンジについて、生成部により指示されたレンジに対して生成されたインデックスの第２の文書集合内の文書に関する部分を参照することにより、第１の文書集合内での出現頻度が高いファセットを含む方から指示されたレンジまでのレンジに含まれるファセットのうち第２の文書集合内での出現頻度が高い方から指定された数のファセットを記録する記録部と、複数のレンジのうちの第１の文書集合内での出現頻度が高いファセットを含む方からＮ番目（Ｎは自然数）のレンジについて、記録部により指定された数のファセットが記録された時点で、複数のレンジのうちの第１の文書集合内での出現頻度が高いファセットを含む方から（Ｎ＋１）番目のレンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度が、記録部により記録された指定された数のファセットの第２の文書集合内での出現頻度のうちの最低の出現頻度以下であれば、（Ｎ＋１）番目のレンジについて、記録部により指定された数のファセットが記録されないように制御する制御部とを含む、装置を提供する。
【００１４】
ここで、この装置は、生成部が複数のレンジの各レンジに対してインデックスを生成する際に、各レンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度をインデックスに付加する付加部と、（Ｎ＋１）番目のレンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度を制御部が用いる際に、最高の出現頻度として、（Ｎ＋１）番目のレンジに対して生成部により生成されたインデックスに付加部により付加された最高の出現頻度を取得する取得部とを更に含む、ものであってよい。
【００１５】
また、本発明は、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照される、第１の文書集合のインデックスを生成する装置であって、複数のファセットを、第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、複数のレンジの各レンジに対して、第１の文書集合内の複数の文書の各文書と、各レンジに含まれるファセットのうちの各文書を特徴付けるファセットとを関連付けたインデックスを生成する生成部とを含む、装置も提供する。
【００１６】
ここで、この装置は、複数のファセットを、第１の文書集合内での出現頻度が高い順にソートするソート部を更に含み、分割部は、ソート部によるソート結果に基づいて、複数のファセットを複数のレンジに分割する、ものであってよい。
また、この装置は、複数のレンジのうちの第１の文書集合内での出現頻度が最も高いファセットを含むレンジである最上位レンジに含まれるファセットの第１の文書集合内での出現頻度に対する、最上位レンジに含まれるファセットの第２の文書集合内での出現頻度の割合が、所定割合以上になる可能性がある場合に、最上位レンジに含まれるファセットの数を、最上位レンジ以外のレンジに含まれるファセット数よりも小さな数に決定する決定部を更に含む、ものであってもよい。
【００１７】
更に、本発明は、コンピュータが、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する方法であって、コンピュータが、複数のファセットを、第１の文書集合内での出現頻度が高い方から複数のレンジに分割するステップと、コンピュータが、複数のレンジの各レンジに対して、第１の文書集合内の複数の文書の各文書と、各レンジに含まれるファセットのうちの各文書を特徴付けるファセットとを関連付けたインデックスを生成するステップと、複数のレンジのうちの第１の文書集合内での出現頻度が高いファセットを含む方からＮ番目（Ｎは自然数）のレンジについて、Ｎ番目のレンジに対して生成されたインデックスの第２の文書集合内の文書に関する部分を参照することにより、第１の文書集合内での出現頻度が高いファセットを含む方からＮ番目のレンジまでのレンジに含まれるファセットのうち第２の文書集合内での出現頻度が高い方から指定された数のファセットを記録するステップと、Ｎ番目のレンジについて、指定された数のファセットが記録された時点で、複数のレンジのうちの第１の文書集合内での出現頻度が高いファセットを含む方から（Ｎ＋１）番目のレンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度が、記録された指定された数のファセットの第２の文書集合内での出現頻度のうちの最低の出現頻度以下であれば、指定された数のファセットの記録を打ち切るステップとを含む、方法も提供する。
【００１８】
また、本発明は、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照される、第１の文書集合のインデックスを生成する装置として、コンピュータを機能させるプログラムであって、コンピュータを、複数のファセットを、第１の文書集合内での出現頻度が高い方から複数のレンジに分割する分割部と、複数のレンジの各レンジに対して、第１の文書集合内の複数の文書の各文書と、各レンジに含まれるファセットのうちの各文書を特徴付けるファセットとを関連付けたインデックスを生成する生成部として機能させる、プログラムも提供する。
【００１９】
更に、本発明は、第１の文書集合内に文書を特徴付ける情報として出現する複数のファセットのうち、第１の文書集合に含まれる第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する際に参照されるデータ構造であって、複数のファセットが、第１の文書集合内での出現頻度が高い方から複数のレンジに分割された状態で配置されたファセット部と、複数のレンジの各レンジに対して設けられ、第１の文書集合内の複数の文書のリストであって、複数の文書の各文書に、各レンジに含まれるファセットのうちの各文書を特徴付けるファセットが関連付けられたリストを含むリスト部とを含む、データ構造も提供する。
【発明の効果】
【００２０】
本発明によれば、第１の文書集合内のファセットのうち第２の文書集合内での出現頻度が高い方から指定された数のファセットを提示する処理を、第１の文書集合に対して第２の文書集合が小さい場合でも高速に、かつ、ファセットの情報を記憶するメモリの容量を抑えつつ、行うことができる。
【図面の簡単な説明】
【００２１】
【図１】カウンティングリストを用いたファセットカウンティングについて示した図である。
【図２】カウンティングリストを用いたファセットカウンティングにおける補足的ファセットカウンティングについて示した図である。
【図３】Ｆ２Ｄインデックスを用いたファセットカウンティングについて示した図である。
【図４】Ｆ２Ｄインデックスを用いたファセットカウンティングにおける“Ｅａｒｌｙ−ｏｕｔ”について示したグラフである。
【図５】本発明の実施の形態で用いられる順位付きカウンティングリストを示した図である。
【図６】順位付きカウンティングリストを用いたファセットカウンティングにおける“Ｅａｒｌｙ−ｏｕｔ”について示したグラフである。
【図７】本発明の実施の形態におけるファセットカウント装置の構成例を示したブロック図である。
【図８】本発明の実施の形態におけるファセットカウント装置の順位付きカウンティングリストを作成する際の動作例を示したフローチャートである。
【図９】本発明の実施の形態におけるファセットカウント装置のファセットカウンティングを実行する際の動作例を示したフローチャートである。
【図１０】本発明の実施の形態を適用可能なコンピュータのハードウェア構成例を示した図である。
【発明を実施するための形態】
【００２２】
まず、本実施の形態の前提となる要素技術について説明する。
第一に、文書からファセットへのインデックスであるカウンティングリストを用いたファセットカウンティングについて説明する。
図１（ａ）は、カウンティングリストを模式的に示した図である。
図示するように、カウンティングリストは、便宜的に設けられたＴＥＲＭを入り口として、コーパス内の文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎを連結したリスト構造を有する。また、カウンティングリストでは、文書ごとにその文書を特徴付けるファセットが管理される。例えば、文書Ｄ０に対してはファセットＦ１，Ｆ２，・・・が管理され、文書Ｄ１に対してはファセットＦ１，Ｆ３，・・・が管理されている。この意味で、カウンティングリストは、前述した第１のインデックスの一例である。
【００２３】
図１（ｂ）は、カウンティングリストを用いたファセットカウンティングの結果を示した図である。
ここでは、コーパスを絞り込んで得られた部分集合２３１が文書Ｄ１，Ｄ２，・・・，Ｄｈｉｔｓを含むものとしている。すると、文書Ｄ１に対してファセットＦ１，Ｆ３，・・・が求められ、文書Ｄ２に対してファセットＦ１，Ｆ２，・・・が求められ、文書Ｄｈｉｔｓに対してファセット・・・，Ｆｎが求められる。そして、最終的なファセットカウンティングの結果は、出現頻度が１番目のファセットはＦ１でその出現頻度は１０００であり、出現頻度が２番目のファセットはＦ３でその出現頻度は１００であり、出現頻度がＫ番目のファセットはＦｎでその出現頻度は１０であることを示すものとなっている。
【００２４】
ここで、カウンティングリストを用いたファセットカウンティングにおける拡張的な技術である補足的ファセットカウンティング（Complementary Facet Counting）について説明する。
図２は、補足的ファセットカウンティングを模式的に示した図である。
この補足的ファセットカウンティングでは、まず、ファセットカウンティング対象の部分集合について、コーパス全体に対する補集合を求める。ここでは、部分集合２３１が文書Ｄ１，Ｄ２，・・・，Ｄｈｉｔｓを含み、コーパス２１０に対する部分集合２３１の補集合２３２が文書Ｄ０，・・・を含むものとしている。
すると、補集合に属する各文書に属するファセット及びその出現頻度が求められる。ここでは、補集合２３２に属する例えば文書Ｄ０に対してファセットＦ１，Ｆ２，・・・が求められている。
そして、コーパス内でのファセットの出現頻度から補集合内でのファセットの出現頻度を減じた数を元の部分集合に対する最終的なファセットカウンティングの結果とする。ここでは、コーパス２１０に対するファセットカウンティングの結果が、出現頻度が１番目のファセットはＦ１でその出現頻度は１２００であり、出現頻度が２番目のファセットはＦ２でその出現頻度は１５０であり、出現頻度が３番目のファセットはＦ３でその出現頻度は１２０であり、出現頻度がＫ番目のファセットはＦｎでその出現頻度は１０であることを示すものとなっており、これから補集合２３２に対するファセットカウンティングの結果を減ずることにより、部分集合２３１に対するファセットカウンティングの結果が、出現頻度が１番目のファセットはＦ１でその出現頻度は１０００であり、出現頻度が２番目のファセットはＦ３でその出現頻度は１００であり、出現頻度がＫ番目のファセットはＦｎでその出現頻度は１０であることを示すものとなっている。
【００２５】
カウンティングリストを用いたファセットカウンティングでは、このように補足的ファセットカウンティングを採用することで、走査する文書数を最大でもコーパスに含まれる文書数の１／２に抑えることが可能となる。
また、カウンティングリストをスキップリストで実装しておくことで、より高速な走査が可能となる。
【００２６】
第二に、ファセットから文書へのインデックスであるＦ２Ｄインデックスを用いたファセットカウンティングについて説明する。
図３（ａ）は、Ｆ２Ｄインデックスを模式的に示した図である。
図示するように、Ｆ２Ｄインデックスでは、ファセットがコーパス内での出現頻度順にソートされ、ファセットごとにそのファセットによって特徴付けられる文書が管理される。例えば、ファセットＦ１，Ｆ２，Ｆ３，・・・，Ｆｎがコーパス内での出現頻度に従ってこの順に並べられ、ファセットＦ１に対しては文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎが管理され、ファセットＦ２に対しては文書Ｄ０，Ｄ２，・・・が管理され、ファセットＦ３に対しては文書Ｄ１，・・・が管理されている。この意味で、Ｆ２Ｄインデックスは、前述した第２のインデックスの一例である。
【００２７】
図３（ｂ）は、Ｆ２Ｄインデックスを用いたファセットカウンティングの結果を示した図である。
ここでは、コーパスを絞り込んで得られた部分集合２３１が文書Ｄ１，Ｄ２，・・・，Ｄｈｉｔｓを含むものとしている。すると、ファセットＦ１に対して文書Ｄ１，Ｄ２，・・・が求められ、ファセットＦ２に対して文書Ｄ２，・・・が求められ、ファセットＦ３に対して文書Ｄ１，・・・が求められ、ファセットＦｎに対して文書・・・，Ｄｈｉｔｓが求められる。そして、最終的なファセットカウンティングの結果は、出現頻度が１番目のファセットはＦ１でその出現頻度は１０００であり、出現頻度が２番目のファセットはＦ３でその出現頻度は１００であり、出現頻度がＫ番目のファセットはＦｎでその出現頻度は１０であることを示すものとなっている。
【００２８】
ところで、このようにＦ２Ｄインデックスを用いる場合は、“Ｅａｒｌｙ−ｏｕｔ”と呼ばれる打ち切りを行うことにより、効率的にファセットカウンティングを行うことが可能である。
Ｆ２Ｄインデックスを用いたファセットカウンティングでは、コーパス内での出現頻度が高いファセットから順に、そのファセットの部分集合での出現頻度が求められ、部分集合内での出現頻度が高い方から指定された数のファセットについて中間結果のキューに記録される。
そして、ｎ番目のファセットであるファセットＦｎの部分集合での出現頻度が中間結果のキューに記録された時点で、（ｎ＋１）番目のファセットであるファセットＦｎ＋１の部分集合での出現頻度を求める必要がなければ、“Ｅａｒｌｙ−ｏｕｔ”が行われる。具体的には、ファセットＦｎ＋１のコーパス内での出現頻度が、中間結果のキューにおける最低の出現頻度以下であれば、ファセットＦｎ＋１の部分集合内での出現頻度は必ず中間結果のキューにおける最低の出現頻度以下になるので、“Ｅａｒｌｙ−ｏｕｔ”が行われる。
【００２９】
図４は、この場合の“Ｅａｒｌｙ−ｏｕｔ”について示したグラフである。
このグラフにおいて、縦軸は、コーパス内での出現頻度の順に並べられたファセットを示す。上方のファセットほどコーパス内での出現頻度が高く、下方のファセットほどコーパス内での出現頻度が低くなっている。また、横軸は、各ファセットによって特徴付けられる文書の数、つまり、出現頻度を示す。実線の曲線は、コーパス内の文書のうち各ファセットによって特徴付けられる文書の数、つまり、各ファセットのコーパス内での出現頻度を表し、破線の曲線は、部分集合内の文書のうち各ファセットによって特徴付けられる文書の数、つまり、各ファセットの部分集合内での出現頻度を表す。
【００３０】
また、このグラフは、ファセットＦｎの部分集合での出現頻度が中間結果のキューに記録された時点で、ｉ番目のファセットであるファセットＦｉの部分集合での出現頻度Ｃｉが中間結果のキューにおける最低の出現頻度になっていることも示している。例えば、部分集合内での出現頻度が高い方からＫ番目までのファセットの提示が要求されているとすると、出現頻度Ｃｉは中間結果のキューにおける上位からＫ番目の出現頻度である。尚、破線の曲線上の出現頻度の一部は出現頻度Ｃｉ以下の範囲に存在しているが、これらの出現頻度は、部分集合内での出現頻度が高い方からＫ番目までには含まれないと既に判断されたものである。
【００３１】
この状態で、ファセットＦｎ＋１の部分集合での出現頻度を求めて中間結果のキューに記録する必要があるかどうかが判断される。図において、ファセットＦｎ＋１のコーパス内での出現頻度（Ｆｎ＋１に対応する実線の曲線上の点で示される文書数）は、出現頻度Ｃｉ以下であるので、ファセットＦｎ＋１の部分集合での出現頻度を求めて中間結果のキューに記録する必要はなく、“Ｅａｒｌｙ−ｏｕｔ”が可能であることが分かる。
【００３２】
ここで、図１に示したカウンティングリストを用いたファセットカウンティングと、図３に示したＦ２Ｄインデックスを用いたファセットカウンティングとを比較して説明する。
まず、カウンティングリストを用いたファセットカウンティングについて説明する。
カウンティングリストにおいて文書にファセットを関連付けたデータは、文書ごとに独立であるため、インクリメンタルな更新に対応できる。即ち、コーパスに新しい文書が追加された場合には、その新しい文書にファセットを関連付けたデータをカウンティングリストに追加すればよい。
カウンティングリストを用いたファセットカウンティングは、部分集合が小さい場合には、絞り込まれた文書に属するファセットのみにアクセスすることで行われるため、高速に処理が行われる。
一方で、カウンティングリストを用いたファセットカウンティングでは、部分集合全体を走査し終えるまで上位のファセットの出現頻度が確定しないため、ファセットの空間が巨大である場合に大きな一時記憶領域が必要となる。
【００３３】
次に、Ｆ２Ｄインデックスを用いたファセットカウンティングについて説明する。
Ｆ２Ｄインデックスを用いたファセットカウンティングでは、ファセットを走査中にファセットの順位の中間結果を保持しておくだけでよいため、メモリ効率がよい。
一方で、Ｆ２Ｄインデックスを用いたファセットカウンティングでは、事前にコーパス内での出現頻度順にファセットをソートしておく必要があるため、バッチ更新が必要となる。
また、Ｆ２Ｄインデックスを用いたファセットカウンティングでは、部分集合が大きい場合には“Ｅａｒｌｙ−ｏｕｔ”が効果的であるが、部分集合が小さい場合には多くのファセットを走査する必要がある。
【００３４】
そこで、本実施の形態では、カウンティングリストを用いたファセットカウンティング及びＦ２Ｄインデックスを用いたファセットカウンティングの双方の利点を取り入れるべく、出現頻度順にグループ化されたファセットの集合（以下、「レンジ」という）に対してカウンティングリストを作成し、これらのカウンティングリストを含む順位付きカウンティングリストを用いてファセットカウンティングを行うこととした。
【００３５】
図５は、このような順位付きカウンティングリストを模式的に示した図である。
この順位付きカウンティングリストでは、まず、コーパス内のファセットが出現頻度順にソートされる。図では、左側に示すように、コーパス内のファセットが、出現頻度順の高い順にソートされ、ファセットＦ１，Ｆ２，Ｆ３，・・・，Ｆｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・Ｆ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・の順に並べられている。
【００３６】
次に、ソートされたファセットはレンジに分割される。図では、ファセットＦ１，Ｆ２，Ｆ３，・・・，Ｆｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・Ｆ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・が、０番目のレンジであるレンジＲ０と、１番目のレンジであるレンジＲ１と、２番目のレンジであるレンジＲ２とに分割されている。そして、レンジＲ０はファセットＦ１，Ｆ２，Ｆ３，・・・を含み、レンジＲ１はファセットＦｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・を含み、レンジＲ２はファセットＦ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・を含むものとされている。
【００３７】
次いで、各レンジに対してカウンティングリストが作成される。図では、レンジＲ０に対してカウンティングリスト０が作成されている。カウンティングリスト０は、便宜的に設けられたＴＥＲＭ０を入り口として、コーパス内の文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎを連結したリスト構造を有し、例えば、文書Ｄ０に対してファセットＦ１，Ｆ２，・・・を管理し、文書Ｄ１に対してファセットＦ１，Ｆ３，・・・を管理するものである。また、レンジＲ１に対してカウンティングリスト１が作成されている。カウンティングリスト１は、便宜的に設けられたＴＥＲＭ１を入り口として、コーパス内の文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎを連結したリスト構造を有し、例えば、文書Ｄ０に対してファセットＦｎ＋１，Ｆｎ＋３，・・・を管理し、文書Ｄ１に対してファセットＦｎ＋１，Ｆｎ＋３，・・・を管理するものである。また、レンジＲ２に対してカウンティングリスト２が作成されている。カウンティングリスト２は、便宜的に設けられたＴＥＲＭ２を入り口として、コーパス内の文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎを連結したリスト構造を有し、例えば、文書Ｄ０に対してファセットＦ２ｎ＋３，Ｆ２ｎ＋４，・・・を管理し、文書Ｄ１に対してファセットＦ２ｎ＋１，Ｆ２ｎ＋２，・・・を管理するものである。
【００３８】
更に、各カウンティングリストにおいて、各ファセットを文字列で保持すると必要以上にメモリを消費するので、各ファセットはレンジ内で固有のＩＤを付与して保持するのが望ましい。例えば、図において、レンジＲ０内では記号Ｆｉにおけるｉを、レンジＲ１内では記号Ｆｎ＋ｉにおけるｉを、レンジＲ２内では記号Ｆ２ｎ＋ｉにおけるｉを、それぞれ、レンジ内の固有のＩＤと考えることができる（ｉ＝１，２，３，・・・ｎ）。このようにすれば、小さい長さの記号を使うことができるので、それによって保持される情報を、全体にＩＤを振る場合よりも効率良く圧縮することができる。
更にまた、各レンジには、そのレンジにおけるファセットの最高の出現頻度がスコアとして付加される。図では、レンジＲ０内の「ｍａｘ  ｉｎ  ｒａｎｇｅ：１００」、レンジＲ１内の「ｍａｘ  ｉｎ  ｒａｎｇｅ：５０」、及び、レンジＲ２内の「ｍａｘ  ｉｎ  ｒａｎｇｅ：１０」によって、このスコアを表している。
【００３９】
このような順位付きカウンティングリストを用いる場合は、上位のレンジから順にカウンティングリストを用いたファセットカウンティングが行われ、中間結果のキューが更新される。即ち、コーパス内での出現頻度が高いファセットを含むレンジから順に、そのレンジに含まれるファセットの部分集合での出現頻度が求められ、部分集合内での出現頻度が高い方から指定された数のファセットについて中間結果のキューに記録される。
そして、Ｎ番目のレンジであるレンジＮに対するカウンティングリストＮを走査することによりレンジＲＮに含まれるファセットの部分集合での出現頻度が中間結果のキューに記録された時点で、（Ｎ＋１）番目のレンジであるレンジＮ＋１に対するカウンティングリストＮ＋１を走査する必要がなければ、“Ｅａｒｌｙ−ｏｕｔ”が行われる。具体的には、レンジＲＮ＋１に含まれるファセットのコーパス内での最高の出現頻度が、中間結果のキューにおける最低の出現頻度以下であれば、レンジＲＮ＋１に含まれるファセットの部分集合内での出現頻度は必ず中間結果のキューにおける最低の出現頻度以下になるので、“Ｅａｒｌｙ−ｏｕｔ”が行われる。
【００４０】
図６は、この場合の“Ｅａｒｌｙ−ｏｕｔ”について示したグラフである。
このグラフにおいて、縦軸は、コーパス内での出現頻度の順に並べられたファセットを示す。上方のファセットほどコーパス内での出現頻度が高く、下方のファセットほどコーパス内での出現頻度が低くなっている。但し、ここでは、図４と違い、ファセットはレンジＲ０，Ｒ１，Ｒ２に分割されている。また、横軸は、各ファセットによって特徴付けられる文書の数、つまり、出現頻度を示す。実線の曲線は、コーパス内の文書のうち各ファセットによって特徴付けられる文書の数、つまり、各ファセットのコーパス内での出現頻度を表し、破線の曲線は、部分集合内の文書のうち各ファセットによって特徴付けられる文書の数、つまり、各ファセットの部分集合内での出現頻度を表す。
【００４１】
また、このグラフは、レンジＲ１に含まれるファセットの部分集合での出現頻度が中間結果のキューに記録された時点で、ｉ番目のファセットであるファセットＦｉの部分集合での出現頻度Ｃｉが中間結果のキューにおける最低の出現頻度になっていることも示している。例えば、部分集合内での出現頻度が高い方からＫ番目までのファセットの提示が要求されているとすると、出現頻度Ｃｉは中間結果のキューにおける上位からＫ番目の出現頻度である。尚、破線の曲線上の出現頻度の一部は出現頻度Ｃｉ以下の範囲に存在しているが、これらの出現頻度は、部分集合内での出現頻度が高い方からＫ番目までには含まれないと既に判断されたものである。
【００４２】
この状態で、レンジＲ２に含まれるファセットの部分集合での出現頻度を求めて中間結果のキューに記録する必要があるかどうかが判断される。図において、レンジＲ２に含まれるファセットのコーパス内での最高の出現頻度（Ｆ２ｎ＋１に対応する実線の曲線上の点で示される文書数）は、出現頻度Ｃｉ以下であるので、レンジＲ２に含まれるファセットの部分集合での出現頻度を求めて中間結果のキューに記録する必要はなく、“Ｅａｒｌｙ−ｏｕｔ”が可能であることが分かる。
【００４３】
尚、ここでは、レンジＲ２に含まれるファセットの部分集合での出現頻度を求めて中間結果のキューに記録する必要があるかどうかが判断される場合について説明したが、Ｎ番目（Ｎは自然数）のレンジであるレンジＲＮに含まれるファセットの部分集合での出現頻度を求めて中間結果のキューに記録する必要があるかどうかが判断される場合についても同様である。
【００４４】
ところで、上記の説明では、レンジに含まれるファセットの数、つまり、レンジ幅をどのように設定するか述べなかったが、レンジ幅は、全てのレンジについて等しくなるように設定してもよいし、レンジによって異なるように設定してもよい。
レンジによって異なるようにレンジ幅を設定する方法としては、例えば、上位のレンジについて、そのレンジに含まれるファセットのコーパス内での出現頻度に対する、そのレンジに含まれるファセットの部分集合内での出現頻度の割合が所定割合以上になることが、対象となるシステムの一般的な傾向から予想される場合に、上位のレンジの幅を小さく設定する、という方法がある。言い換えれば、上位のレンジについて、そのレンジに含まれるファセットのコーパス内での出現頻度に対する、そのレンジに含まれるファセットの部分集合内での出現頻度の割合が所定割合以上になる可能性がある場合に、上位のレンジの幅を、他のレンジの幅よりも小さくする、という方法である。この方法によれば、上位のレンジについては、レンジに含まれるファセットを少なくできるので、カウンティングリストの圧縮効率を向上することができる。また、上位のレンジについては、走査するファセットを少なくできるので、効果的に“Ｅａｒｌｙ−ｏｕｔ”を行うことができる。つまり、より効果的なファセットカウンティングが行われるようになる。
【００４５】
尚、この順位付きカウンティングリストを用いたファセットカウンティングでは、レンジ内において、文書にファセットを関連付けたデータは文書ごとに独立なので、１つの文書の追加により順位付きカウンティングリストはインクリメンタルに更新できる。
また、追加された文書のレンジへの分け方は、下位のレンジに含まれるファセットのコーパス内での最高の出現頻度が、上位のレンジに含まれるファセットのコーパス内での最高の出現頻度を追い抜くことがない限り、影響を与えない。つまり、それまでに作成した順位付きカウンティングリストを再利用できる。その場合、局所的に特定のレンジに含まれるファセットのコーパス内での最高の出現頻度が大きくなることによって“Ｅａｒｌｙ−ｏｕｔ”の効率が落ちる可能性があるが、その場合は定期的に順位付きカウンティングリストを再作成することで対応可能である。
【００４６】
次に、このような順位付きカウンティングリストを用いたファセットカウンティングを行うファセットカウント装置について説明する。
図７は、本実施の形態におけるファセットカウント装置１０の機能構成例を示したブロック図である。
図示するように、ファセットカウント装置１０は、コーパス記憶部２１と、文書検索部２２と、部分集合記憶部２３とを含む。また、ファセット抽出部３１と、ファセットソート部３２と、レンジ幅決定部３３と、ファセット分割部３４と、順位付きカウンティングリスト作成部３５と、順位付きカウンティングリスト記憶部３６とを含む。更に、ファセットカウンティング制御部４１と、ファセットカウンティング部４２と、中間結果キュー記憶部４３と、最低キュー内頻度取得部４４と、最高コーパス内頻度取得部４５とを含む。
【００４７】
コーパス記憶部２１は、コーパスの全体をなす文書を記憶する。図５の例で言えば、文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎを記憶する。本実施の形態では、第１の文書集合の一例として、コーパスを用いている。
文書検索部２２は、コーパス記憶部２１に記憶された文書をクエリにより検索し、これによってコーパスの部分をなす部分集合を取得する。図５において文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎから文書Ｄ１，Ｄ２，・・・，Ｄｈｉｔが検索されたとすると、文書検索部２２は文書Ｄ１，Ｄ２，・・・，Ｄｈｉｔを取得する。
部分集合記憶部２３は、文書検索部２２により取得された部分集合を記憶する。本実施の形態では、第２の文書集合の一例として、部分集合を用いている。
【００４８】
ファセット抽出部３１は、コーパス記憶部２１に記憶された文書に関連付けられたファセットを抽出する。図５の例で言えば、左側に示した複数のファセットを抽出する。
ファセットソート部３２は、ファセット抽出部３１により抽出されたファセットを、コーパス内での出現頻度順にソートする。図５の例で言えば、左側に示した複数のファセットを、ファセットＦ１，Ｆ２，Ｆ３，・・・，Ｆｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・，Ｆ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・の順に並ぶようにソートする。本実施の形態では、複数のファセットをソートするソート部の一例として、ファセットソート部３２を設けている。
【００４９】
レンジ幅決定部３３は、ファセットソート部３２によりソートされたファセットを複数のレンジに分割する際のレンジ幅を決定する。例えば、上述したように、コーパス内での出現頻度が高いファセットを含むレンジほど、その幅を小さく設定することが考えられる。本実施の形態では、最上位レンジに含まれるファセットの数を決定する決定部の一例として、レンジ幅決定部３３を設けている。
ファセット分割部３４は、ファセットソート部３２によりソートされたファセットを複数のレンジに分割する。図５の例で言えば、ファセットＦ１，Ｆ２，Ｆ３，・・・，Ｆｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・，Ｆ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・を、ファセットＦ１，Ｆ２，Ｆ３，・・・がレンジＲ０に含まれ、ファセットＦｎ＋１，Ｆｎ＋２，Ｆｎ＋３，・・・がレンジＲ１に含まれ、ファセットＦ２ｎ＋１，Ｆ２ｎ＋２，Ｆ２ｎ＋３，・・・がレンジＲ２に含まれるように、分割する。図５の例では言及しなかったが、その際、各レンジのレンジ幅としては、レンジ幅決定部３３により決定されたものを用いる。本実施の形態では、複数のファセットを複数のレンジに分割する分割部の一例として、ファセット分割部３４を設けている。
【００５０】
順位付きカウンティングリスト作成部３５は、ファセット分割部３４によりファセット部の一例としての複数のファセットが分割された各レンジに対してリスト部の一例としてのカウンティングリストを作成することにより、レンジごとのカウンティングリストを含む順位付きカウンティングリストを作成する。図５の例で言えば、レンジＲ０に対して、文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎが連結され、文書ごとにファセットが関連付けられたカウンティングリスト０と、レンジＲ１に対して、文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎが連結され、文書ごとにファセットが関連付けられたカウンティングリスト１と、レンジＲ２に対して、文書Ｄ０，Ｄ１，Ｄ２，・・・，Ｄｎが連結され、文書ごとにファセットが関連付けられたカウンティングリスト２とを含む順位付きカウンティングリストを作成する。その際、各レンジに対して、そのレンジに含まれるファセットのコーパス内での最高の出現頻度をスコアとして付加する。図５の例で言えば、レンジＲ０に対して最高の出現頻度「１００」を付加し、レンジＲ１に対して最高の出現頻度「５０」を付加し、レンジＲ２に対して最高の出現頻度「１０」を付加する。本実施の形態では、インデックスの一例として、レンジごとのカウンティングリストを用いており、インデックスを生成する生成部、各レンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度をインデックスに付加する付加部の一例として、順位付きカウンティングリスト作成部３５を設けている。
順位付きカウンティングリスト記憶部３６は、順位付きカウンティングリスト作成部３５により作成された順位付きカウンティングリストを記憶する。
【００５１】
ファセットカウンティング制御部４１は、順位付きカウンティングリストを用いたファセットカウンティングの動作を制御する。具体的には、指示したレンジについてファセットカウンティング部４２、最低キュー内頻度取得部４４、及び、最高コーパス内頻度取得部４５が実行されるように制御する。そして、最高コーパス内頻度取得部４５から得られる最高の出現頻度が、最低キュー内頻度取得部４４から得られる最低の出現頻度以下であれば、ファセットカウンティング部４２、最低キュー内頻度取得部４４、及び、最高コーパス内頻度取得部４５が実行されないように制御し、最高コーパス内頻度取得部４５から得られる最高の出現頻度が、最低キュー内頻度取得部４４から得られる最低の出現頻度以下でなければ、次のレンジについてファセットカウンティング部４２、最低キュー内頻度取得部４４、及び、最高コーパス内頻度取得部４５が実行されるように制御する。本実施の形態では、（Ｎ＋１）番目のレンジに含まれるファセットの第１の文書集合内での出現頻度のうちの最高の出現頻度が、記録された指定された数のファセットの第２の文書集合内での出現頻度のうちの最低の出現頻度以下であれば、（Ｎ＋１）番目のレンジについて、指定された数のファセットが記録されないように制御する制御部の一例として、ファセットカウンティング制御部４１を設けている。
【００５２】
ファセットカウンティング部４２は、ファセットカウンティング制御部４１により指示されたレンジについてファセットカウンティングを行い、これまでのファセットカウンティングの結果において部分集合内での出現頻度が高い方から指定された数のファセットを中間結果キューに登録する。本実施の形態では、指定された数のファセットを記録する記録部の一例として、ファセットカウンティング部４２を設けている。
中間結果キュー記憶部４３は、ファセットカウンティング部４２によるファセットカウンティングに応じて指定された数のファセットが登録される中間結果キューを記憶する。
最低キュー内頻度取得部４４は、ファセットカウンティング制御部４１により指示されたレンジについてのファセットカウンティング部４２によるファセットカウンティングに応じて指定された数のファセットが登録された時点での中間結果キューにおける最低の出現頻度を取得する。
最高コーパス内頻度取得部４５は、ファセットカウンティング制御部４１により指示されたレンジの次のレンジにスコアとして付加された最高の出現頻度を順位付きカウンティングリスト記憶部３６から取得する。本実施の形態では、最高の出現頻度を取得する取得部の一例として、最高コーパス内頻度取得部４５を設けている。
【００５３】
次に、本実施の形態におけるファセットカウント装置１０の動作について説明する。
まず、ファセットカウント装置１０は、ファセットカウンティングを実行するに先立ち、コーパス内の文書について、順位付きカウンティングリストを作成しておく。
図８は、このときのファセットカウント装置１０の動作例を示したフローチャートである。
図示するように、まず、ファセット抽出部３１が、コーパスの全体をなす文書を記憶するコーパス記憶部２１を参照することにより、これらの文書に関連付けられたファセットを抽出する（ステップ３０１）。
また、ファセットソート部３２が、ファセット抽出部３１により抽出されたファセットを、コーパス内での出現頻度が高い順にソートする（ステップ３０２）。
【００５４】
次に、レンジ幅決定部３３が、ファセットソート部３２によりソートされたファセットを複数のレンジ幅に分割する際のレンジ幅を決定する（ステップ３０３）。その際、例えば、上位のレンジほどレンジ幅が小さくなるように決定するとよいが、全てのレンジ幅が等しくなるように決定してもよい。
また、ファセット分割部３４は、ファセットソート部３２によりソートされたファセットを、コーパス内での出現頻度が高い方から、レンジ幅決定部３３により決定されたレンジ幅を有する複数のレンジに分割する（ステップ３０４）。
次いで、順位付きカウンティングリスト作成部３５は、各レンジに対してカウンティングリストを作成することにより、順位付きカウンティングリストを作成する（ステップ３０５）。そして、この順位付きカウンティングリストを順位付きカウンティングリスト記憶部３６に記憶する（ステップ３０６）。
【００５５】
その後、文書検索部２２が、コーパス記憶部２１に記憶された文書をクエリにより絞り込み、得られた部分集合を部分集合記憶部２３に記憶したとする。
この状態で、ユーザが、提示するファセットの数を指定してファセットカウンティングを指示すると、ファセットカウント装置１０は、部分集合記憶部２３に記憶された部分集合についてファセットカウンティングを実行する。
図９は、このときのファセットカウント装置１０の動作例を示したフローチャートである。
図示するように、まず、ファセットカウンティング制御部４１が、レンジをカウントするための変数ｉに０を代入する（ステップ４０１）。そして、変数ｉを１ずつ増加させながら、変数ｉの各値について、次の動作を行う。
【００５６】
即ち、ファセットカウンティング部４２が、変数ｉを指定したファセットカウンティング制御部４１の指示により、レンジＲｉについてファセットカウンティングを行う（ステップ４０２）。具体的には、順位付きカウンティングリスト記憶部３６に記憶された順位付きカウンティングリストに含まれるレンジＲｉに対するカウンティングリストのうち、部分集合記憶部２３に記憶された部分集合に含まれる文書に関する部分を参照し、この文書に対するファセットを取得してその出現頻度を数える。そして、レンジＲ０からレンジＲｉまでに含まれるファセットのうち、これまでのファセットカウンティングで求められた出現頻度が、高い方から数えて、ユーザが指定したファセットの数に収まっているファセットを特定し、そのファセット及びそのファセットの出現頻度を、中間結果キュー記憶部４３に記憶された中間結果キューに登録する（ステップ４０３）。
【００５７】
次に、ファセットカウンティング制御部４１は、変数ｉが、ファセットが分割されるレンジの最大の番号であるかどうかを判定する（ステップ４０４）。
変数iがレンジの最大の番号でないと判定されれば、最低キュー内頻度取得部４４が、変数ｉを指定したファセットカウンティング制御部４１の指示により、中間結果キュー記憶部４３に記憶された中間結果キューに登録されているファセットの出現頻度のうち、最低の出現頻度Ｆｍｉｎを更新し、取得する（ステップ４０５）。
また、最高コーパス内頻度取得部４５が、変数ｉを指定したファセットカウンティング制御部４１の指示により、レンジＲｉ＋１に対してスコアとして付加されたコーパス内での最高の出現頻度Ｆｍａｘ（ｉ＋１）を取得する（ステップ４０６）。
これにより、ファセットカウンティング制御部４１は、中間結果キューにおける最低の出現頻度Ｆｍｉｎ及びレンジＲｉ＋１におけるコーパス内での最大の出現頻度Ｆｍａｘ（ｉ＋１）を得て、出現頻度Ｆｍａｘ（ｉ＋１）が出現頻度Ｆｍｉｎ以下であるかどうかを判定する（ステップ４０７）。
【００５８】
その結果、出現頻度Ｆｍａｘ（ｉ＋１）が出現頻度Ｆｍｉｎ以下でないと判定されれば、ファセットカウンティング制御部４１は、変数ｉに１を加算して（ステップ４０８）、処理をステップ４０２へ進める。
一方、出現頻度Ｆｍａｘ（ｉ＋１）が出現頻度Ｆｍｉｎ以下であると判定されれば、処理を終了する。
また、ステップ４０４で変数iがレンジの最大の番号であると判定された場合も、処理を終了する。
【００５９】
以上述べたように、本実施の形態では、ファセットを出現頻度順にレンジに分割し、各レンジに対してカウンティングリストを作成し、このカウンティングリストを用いてファセットカウンティングを行うこととした。これにより、カウンティングリストのみを用いたファセットカウンティング及びＦ２Ｄインデックスのみを用いたファセットカウンティングの双方の利点を有し、更に効率のよいファセットカウンティングを実現することが可能となった。
【００６０】
例えば、コーパスに対して部分集合が大きい場合には、“Ｅａｒｌｙ−ｏｕｔ”を効果的に行うことができ、更に、補足的ファセットカウンティングを併用することにより、Ｉ／Ｏ及び計算量を大幅に削減することができる。
また、コーパスに対して部分集合が小さい場合には、各レンジに対するカウンティングリストをそのまま使用でき、その際、絞り込まれた文書に対するファセットのみにアクセスすればよいため、高速にファセットカウンティングを行うことができる。
【００６１】
このことは、本実施の形態におけるファセットカウンティングとＦ２Ｄインデックスのみを用いたファセットカウンティングとを比較した実験の結果によっても裏付けられている。
具体的には、各レンジに含まれるファセットの数を２００とし、コーパスに対する部分集合の割合ごとに、本実施の形態におけるファセットカウンティングが、Ｆ２Ｄインデックスのみを用いたファセットカウンティングに比較して、どの程度高速化されるかを調べた。すると、コーパスに対する部分集合の割合が３０〜６０％である場合においても５倍程度高速化されることが認められ、コーパスに対する部分集合の割合が７０％以上である場合においては１０倍以上高速化されることが認められた。
【００６２】
更に、本実施の形態では、一度に処理するファセットの数をカウンティングリストごとに限定できるため、ファセットの情報を記憶する一時記憶領域を節約することもできる。
【００６３】
尚、本実施の形態では、ファセットを出現頻度順にレンジに分割し、全てのレンジに対してカウンティングリストを作成するようにしたが、これには限らない。例えば、上位のレンジに対してのみ、カウンティングリストを作成するようにしてもよい。こうすれば、カウンティングリストが作成されたレンジをインクリメンタルに順次組み込んでファセットカウンティングを行うことが可能となり、また、カウンティングリストが作成されたレンジでファセットカウンティングが完了しない場合に、既存の手法へ切り替えることも可能となる。
【００６４】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。
図１０は、このようなコンピュータのハードウェア構成例を示した図である。図示するように、コンピュータは、演算手段であるＣＰＵ（Central Processing Unit）９０ａと、Ｍ／Ｂ（マザーボード）チップセット９０ｂを介してＣＰＵ９０ａに接続されたメインメモリ９０ｃと、同じくＭ／Ｂチップセット９０ｂを介してＣＰＵ９０ａに接続された表示機構９０ｄとを備える。また、Ｍ／Ｂチップセット９０ｂには、ブリッジ回路９０ｅを介して、ネットワークインターフェイス９０ｆと、磁気ディスク装置（ＨＤＤ）９０ｇと、音声機構９０ｈと、キーボード／マウス９０ｉと、フレキシブルディスクドライブ９０ｊとが接続されている。
【００６５】
尚、図１０において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ９０ａとＭ／Ｂチップセット９０ｂの間や、Ｍ／Ｂチップセット９０ｂとメインメモリ９０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ／Ｂチップセット９０ｂと表示機構９０ｄとの間は、ＡＧＰ（Accelerated Graphics Port）を介して接続されてもよいが、表示機構９０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ／Ｂチップセット９０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介して接続される。また、ブリッジ回路９０ｅと接続する場合、ネットワークインターフェイス９０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置９０ｇについては、例えば、シリアルＡＴＡ（AT Attachment）、パラレル転送のＡＴＡ、ＰＣＩ（Peripheral Components Interconnect）を用いることができる。更に、キーボード／マウス９０ｉ、及び、フレキシブルディスクドライブ９０ｊについては、ＵＳＢ（Universal Serial Bus）を用いることができる。
【００６６】
即ち、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００６７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００６８】
１０…ファセットカウント装置、２１…コーパス記憶部、２２…文書検索部、２３…部分集合記憶部、３１…ファセット抽出部、３２…ファセットソート部、３３…レンジ幅決定部、３４…ファセット分割部、３５…順位付きカウンティングリスト作成部、３６…順位付きカウンティングリスト記憶部、４１…ファセットカウンティング制御部、４２…ファセットカウンティング部、４３…中間結果キュー記憶部、４４…最低キュー内頻度取得部、４５…最高コーパス内頻度取得部
【図１】
2014130498.tif 000003
【図２】
2014130498.tif 000004
【図３】
2014130498.tif 000005
【図４】
2014130498.tif 000006
【図５】
2014130498.tif 000007
【図６】
2014130498.tif 000008
【図７】
2014130498.tif 000009
【図８】
2014130498.tif 000010
【図９】
2014130498.tif 000011
【図１０】
2014130498.tif 000012
【手続補正書】
【提出日】平成25年1月11日(2013.1.11)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
ところで、従来、ファセットカウンティングは、コーパスに対するインデックスとして
、文書ごとにその文書を特徴付けるファセットを管理する第１のインデックス、及び、コ
ーパス内に出現するファセットを出現頻度順にソートしてファセットごとにそのファセッ
トによって特徴付けられる文書を管理する第２のインデックスの何れか一方を用いて行わ
れていた。このうち、第２のインデックスを用いたファセットカウンティングに関しては
、以下の技術が知られている。
第一に、“Ｅａｒｌｙ−ｏｕｔ”と呼ばれる打ち切りを行うことにより、効率的にファ
セットカウンティングを行う技術である（特許文献４、非特許文献１参照）。
第二に、部分集合が小さい例外的な状況に備えて、第１のインデックスを用いたファセ
ットカウンティングにスイッチする技術である（例えば、特許文献４参照）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【特許文献１】特開２００７−２４１６３６号公報
【特許文献２】特開２０１１−１６４７９１号公報
【特許文献３】特開２００５−９９９６４号公報
【特許文献４】特開２００７−１５６７３９号公報
【非特許文献１】Alkis Simitsis，Akanksha Baid，Yannis Sismanis，Berthold Reinwald，“Multidimensional Content eXploration”，Proceedings of the VLDB Endowment，Volume 1，Issue 1，Pages 660-671，August 2008