(57)【特許請求の範囲】
【請求項１】
木構造で表現される複数の構造化文書を保持する構造化文書保持手段と、
前記構造化文書保持手段が保持する前記構造化文書に含まれる文字列と、当該文字列の前記複数の構造化文書における出現頻度である文字列頻度とを対応付けて保持する文字列頻度保持手段と、
前記文字列頻度保持手段に保持されている前記文字列のうち、前記文字列頻度が予め設定された閾値以上の頻出文字列に対し、当該頻出文字列と、前記構造化文書の木構造において当該頻出文字列が現れる位置を示す構造ＩＤとを索引キーとし、当該索引キーに対応付けて、当該索引キーにより特定されるべき文字列を識別するための索引情報を保持する索引情報保持手段と、
前記文字列頻度保持手段が保持する前記文字列うち、前記文字列頻度が予め定められた閾値以上である頻出文字列を抽出する頻出文字列抽出手段と、
前記頻出文字列抽出手段が抽出した前記頻出文字列の前記構造ＩＤを特定する構造ＩＤ特定手段と
を備え、
前記構造ＩＤ特定手段は、前記頻出文字列のうち、予め定められた条件に適合する複数の構造ＩＤに対し、当該複数の構造ＩＤを含むグループを識別するグループ識別情報を付与し、
前記索引情報保持手段は、前記構造ＩＤ特定手段により特定された前記構造ＩＤを前記索引キーとして保持し、前記グループに含まれる前記頻出文字列については、前記索引キーの前記構造ＩＤとして前記グループ識別情報を保持することを特徴とする構造化文書処理装置。
【請求項２】
前記文字列頻度保持手段が保持する前記文字列のうち、前記文字列頻度が予め定められた閾値以上である頻出文字列の構造ＩＤと、当該構造ＩＤに示される位置における文字列の出現頻度である構造ＩＤ頻度とを対応付けて保持する構造ＩＤ保持手段をさらに備え、
前記構造ＩＤ特定手段は、前記構造ＩＤ保持手段が保持する前記頻出文字列のうち対応付けられている前記構造ＩＤ頻度が予め定められた閾値以下となる複数の構造ＩＤに対し、前記グループ識別情報を付与することを特徴とする請求項１に記載の構造化文書処理装置。
【請求項３】
コンピュータが、
構造化文書保持手段が、木構造で表現される複数の構造化文書を保持する構造化文書保持ステップと、
文字列頻度保持手段が、前記構造化文書保持手段が保持する前記構造化文書に含まれる文字列と、当該文字列の前記複数の構造化文書における出現頻度である文字列頻度とを対応付けて保持する文字列頻度保持ステップと、
索引情報保持手段が、前記文字列頻度保持手段に保持されている前記文字列のうち、前記文字列頻度が予め設定された閾値以上の頻出文字列に対し、当該頻出文字列と、前記構造化文書の木構造において当該頻出文字列が現れる位置を示す構造ＩＤとを索引キーとし、当該索引キーに対応付けて、当該索引キーにより特定されるべき文字列を識別するための索引情報を登録する索引登録ステップと、
頻出文字列抽出手段が、前記文字列頻度保持手段が保持する前記文字列うち、前記文字列頻度が予め定められた閾値以上である頻出文字列を抽出する頻出文字列抽出ステップと、
構造ＩＤ特定手段が、前記頻出文字列抽出手段が抽出した前記頻出文字列の前記構造ＩＤを特定する構造ＩＤ特定ステップと、
を実行し、
前記構造ＩＤ特定手段は、前記頻出文字列のうち、予め定められた条件に適合する複数の構造ＩＤに対し、当該複数の構造ＩＤを含むグループを識別するグループ識別情報を付与し、
前記索引情報保持手段は、前記構造ＩＤ特定手段により特定された前記構造ＩＤを前記索引キーとして保持し、前記グループに含まれる前記頻出文字列については、前記索引キーの前記構造ＩＤとして前記グループ識別情報を保持することを特徴とする構造化文書処理方法。
【請求項４】
コンピュータに、
構造化文書保持手段が、木構造で表現される複数の構造化文書を保持する構造化文書保持ステップと、
文字列頻度保持手段が、前記構造化文書保持手段が保持する前記構造化文書に含まれる文字列と、当該文字列の前記複数の構造化文書における出現頻度である文字列頻度とを対応付けて保持する文字列頻度保持ステップと、
索引情報保持手段が、前記文字列頻度保持手段に保持されている前記文字列のうち、前記文字列頻度が予め設定された閾値以上の頻出文字列に対し、当該頻出文字列と、前記構造化文書の木構造において当該頻出文字列が現れる位置を示す構造ＩＤとを索引キーとし、当該索引キーに対応付けて、当該索引キーにより特定されるべき文字列を識別するための索引情報を登録する索引登録ステップと、
頻出文字列抽出手段が、前記文字列頻度保持手段が保持する前記文字列うち、前記文字列頻度が予め定められた閾値以上である頻出文字列を抽出する頻出文字列抽出ステップと、
構造ＩＤ特定手段が、前記頻出文字列抽出手段が抽出した前記頻出文字列の前記構造ＩＤを特定する構造ＩＤ特定ステップと、
を実行させ、
前記構造ＩＤ特定手段は、前記頻出文字列のうち、予め定められた条件に適合する複数の構造ＩＤに対し、当該複数の構造ＩＤを含むグループを識別するグループ識別情報を付与し、
前記検索情報保持手段は、前記構造ＩＤ特定手段により特定された前記構造ＩＤを前記索引キーとして保持し、前記グループに含まれる前記頻出文字列については、前記索引キーの前記構造ＩＤとして前記グループ識別情報を保持するための構造化文書処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化された文書を処理する構造化文書処理装置、構造化文書処理方法および構造化文書処理プログラムに関するものである。
【背景技術】
【０００２】
近年、コンピュータでの文書データの管理や処理を容易にするために、地の文書中に文書の構造を示す「タグ」が付加された文書（構造化文書）が広く用いられている。そして、この構造化文書を記述するための規約として、ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などの構造化文書規約の標準化が進められている。
【０００３】
このような構造化文書規約に基づいて記述された構造化文書では、タグにより区分されたテキストを検索の単位として、例えば、文書データ中の「見出し」というタグが付加されたテキストに特定のキーワードが含まれている文書データを検出するなど文書データの構造を利用した検索が可能になる（例えば、「特許文献１」参照）。
【０００４】
このため、このような構造化文書規約を利用すれば、複数の構造化文書を含むデータベースから、文書内の指定した構造にユーザ所望のキーワードを含む文書データを検索することができ、より目的に適切な文書の検索が可能になる。
【０００５】
また、大量文書データからのキーワードを含む文書データの検索において、転置ファイル方式が利用されている（例えば、「特許文献２」参照）。転置ファイル方式は、検索処理の高速化を図るものである。しかし欠点もあり、検索キーワードによっては全文書内での出現頻度が大量の場合があり、その際の検索処理コストは頻度に応じて高くなる。中でも、索引情報を外部記憶装置から読み出すコストが顕著に高く現れてしまう。
【０００６】
【特許文献１】特開２０００−２０７４０９号公報
【特許文献２】特開２００１−２６５７７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
構造を指定した検索処理を行う際に、キーワードが高頻度の場合には、転置ファイル方式を含む従来の方式においては索引情報の読込みのコストが高くなる。このため、実際の該当件数が少なくとも処理コストが高くなるという問題があった。
【０００８】
索引をさらに構造で細分化して管理することにより、構造を指定した検索処理の処理件数を押さえ処理コスト低減を行うことも考えられる。しかし、構造の複雑さだけ索引の管理コストが高くなること、索引の格納効率も低下すること、効果に対するリソースの消費が著しい事などが予想されるため現実的ではない。また、構造による細分化によって、構造を指定しない場合または複数の構造を指定した場合の性能劣化も予想される。
【０００９】
本発明は、上記に鑑みてなされたものであって、検索処理コストを抑えつつ、目的に適合した文書を検索することのできる構造化文書処理装置、構造化文書処理方法および構造化文書処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一側面は、構造化文書処理装置に係り、木構造で表現される複数の構造化文書を保持する構造化文書保持手段と、前記構造化文書保持手段が保持する前記構造化文書に含まれる文字列と、当該文字列の前記複数の構造化文書における出現頻度である文字列頻度とを対応付けて保持する文字列頻度保持手段と、前記文字列頻度保持手段に保持されている前記文字列のうち、前記文字列頻度が予め設定された閾値以上の頻出文字列に対し、当該頻出文字列と、前記構造化文書の木構造において当該頻出文字列が現れる位置を示す構造ＩＤとを索引キーとし、当該索引キーに対応付けて、当該索引キーにより特定されるべき文字列を識別するための索引情報を保持する索引情報保持手段と、前記文字列頻度保持手段が保持する前記文字列うち、前記文字列頻度が予め定められた閾値以上である頻出文字列を抽出する頻出文字列抽出手段と、前記頻出文字列抽出手段が抽出した前記頻出文字列の前記構造ＩＤを特定する構造ＩＤ特定手段とを備え、前記構造ＩＤ特定手段は、前記頻出文字列のうち、予め定められた条件に適合する複数の構造ＩＤに対し、当該複数の構造ＩＤを含むグループを識別するグループ識別情報を付与し、前記索引情報保持手段は、前記構造ＩＤ特定手段により特定された前記構造ＩＤを前記索引キーとして保持し、前記グループに含まれる前記頻出文字列については、前記索引キーの前記構造ＩＤとして前記グループ識別情報を保持することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、頻出文字列についても、検索処理コストを抑えつつ、適合した文書を検索することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明にかかる構造化文書処理装置、構造化文書処理方法および構造化文書処理プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１７】
図１は、実施の形態にかかる構造化文書処理装置１０の全体構成を示すブロック図である。構造化文書処理装置１０は、構造化文書取得部１０２と、文字列抽出部１０４と、文字列頻度算出部１０６と、頻出文字列抽出部１０８と、構造ＩＤ特定部１１０と、構造ＩＤ頻度算出部１１２と、索引登録部１１４と、構造化文書データベース（ＤＢ）１２０と、文字列頻度ＤＢ１２２と、構造ＩＤ頻度ＤＢ１２４と、索引ＤＢ１２６と、検索条件取得部１３０と、キーワード文字列抽出部１３２と、検索部１３４と、構造化文書抽出部１３６と、構造化文書出力部１３８とを備えている。
【００１８】
構造化文書取得部１０２は、外部から構造化文書を取得する。ここで、構造化文書について説明する。図２は、構造化文書を説明するための図である。ここでは、ＸＭＬを構造化文書規約として記述された構造化文書の例を示す。なお、構造化文書は、ＸＭＬを構造化文書規約とするものに限定されるものではなく、例えば、ＳＧＭＬなどの他の構造化文書であってもよい。
【００１９】
図２に示すように、ＸＭＬにおいては、地の文に「タグ」が付加されている。図２に示す例では、「＜ｄｏｃ＞」、「＜／ｄｏｃ＞」、「＜ｔｉｔｌｅ＞」および「＜ｐ＞」などがタグである。この「タグ」により、文書データが構造化されている。ＸＭＬにおいては、タグは、タグの内容を表す名称を「＜」と「＞」で囲むことによって表現される。
【００２０】
「＜」と「＞」に挟まれるタグは開始タグ、「＜／」と「＞」の間に挟まれるタグは終了タグである。テキストを開始タグと終了タグで挟むことにより、そのテキストが構造化される。開始タグと終了タグにより挟まれたテキストをテキスト要素と称する。
【００２１】
図２に示す例では、「＜ｔｉｔｌｅ＞」と「＜／ｔｉｔｌｅ＞」とで、「ＸＭＬデータベース」というテキストが囲まれている。これにより、このテキストに対して「タイトル」という構造が付与されている。
【００２２】
図３は、図２に示す構造化文書の構造を概念的に示す図である。このように、図２に示す構造化文書は木構造により表現される。タグによって区分された各テキスト要素が木構造のノードとして表されている。さらに、各タグもノードとして表されている。そして、各ノードには、各ノードを識別する要素ＩＤが付与されている。
【００２３】
例えば、タグ「ｄｏｃ」には、要素ＩＤ「１」が付与され、「ｔｉｔｌｅ」には、要素ＩＤ「２」が付与されている。また、テキスト要素「ＸＭＬデータベース」には、要素ＩＤ「３」が付与されている。このように、要素ＩＤは、構造化文書中の各要素を識別するためのＩＤである。
【００２４】
図４は、構造化文書における構造ＩＤを説明するための図である。各タグ要素および各テキスト要素は、木構造のいずれかの位置に配置されている。この配置位置を識別するのが構造ＩＤである。すなわち、構造ＩＤは「ｒｏｏｔ」からの経路を識別する情報である。
【００２５】
例えば、タグ「ｄｏｃ」には、構造ＩＤ「１」が付与され、「ｔｉｔｌｅ」には、構造ＩＤ「２」が付与される。また、「ｃｈａｐｔｅｒ」に含まれる３つの「ｐ（パラグラフ）」はいずれも、「ｒｏｏｔ」からの経路が等しい。そこで、これら３つの「ｐ」には同一の構造ＩＤ「５」が付与される。
【００２６】
また、図４に示す構造文書以外の構造文書においても図４に示す構造文書と同様に「ｒｏｏｔ」の枝として「ｄｏｃ」が存在し、さらに「ｄｏｃ」の枝として「ｔｉｔｌｅ」が存在するとする。この場合には、この「ｔｉｔｌｅ」に対しても、図４に示す構造文書内の「ｔｉｔｌｅ」と同一の構造ＩＤ、即ち構造ＩＤ「２」が付与される。このように、構造ＩＤは、構造化文書によらず、構造化文書内における構造的な位置が同一であれば同一の値となる。
【００２７】
図５は、構造化文書ＤＢ１２０のデータ構成を模式的に示す図である。このように、構造化文書ＤＢ１２０は、構造化文書と、構造化文書を識別する文書ＩＤとを対応付けて保持している。
【００２８】
図１の文字列抽出部１０４は、構造化文書ＤＢ１２０に登録されている構造化文書から予め設定されている条件にしたがい文字列を抽出する。そして、抽出した文字列の数を文字列頻度ＤＢ１２２に登録する。
【００２９】
図６は、文字列抽出部１０４が抽出する文字列を説明するための図である。図６は、１つのテキスト要素を示している。文字列は、このテキスト要素内に含まれる一部の文字列である。例えば、「データ」、「ベース」などが文字列として抽出される。予め設定されている条件とは、例えば、英数文字およびカタカナは３文字単位で抽出し、ひらがなは２文字単位で抽出するなどの条件である。
【００３０】
図７は、文字列抽出の処理を説明するための図である。このように、条件に従い所定の文字単位で文字列を抽出する際に、１文字ずつずらして抽出してもよい。これにより文字列の抽出漏れを防止することができる。なお、文字列抽出の方法は、本実施の形態に限定されるものではなく、例えば日本語形態素解析を利用した単語単位で文字列を抽出してもよい。
【００３１】
図１に示す文字列頻度算出部１０６は、文字列抽出部１０４が特定した各文字列の出現頻度、すなわち文字列頻度を算出する。ここで、文字列頻度とは、構造化文書ＤＢ１２０に登録されている構造化文書において、対象とする文字列が出現する回数である。例えば、構造化文書ＤＢ１２０に複数の構造化文書が登録されている場合には、複数の構造化文書すべてにおいて、対象とする文字列が出現する回数である。
【００３２】
例えば、図２に示す構造化文書には、「データ」という文字列が４個含まれている。この場合には、文字列頻度は４となる。文字列頻度算出部１０６はさらに、他の構造化文書に含まれる「データ」という文字列の文字列頻度を加算して、構造化文書ＤＢ１２０に登録されている構造化文書における「データ」という文字列の文字列頻度を算出する。
【００３３】
文字列頻度算出部１０６は、各文字列の文字列頻度を、文字列に対応付けて文字列頻度ＤＢ１２２に登録する。
【００３４】
図８は、文字列頻度ＤＢ１２２のデータ構成を模式的に示す図である。文字列抽出部１０４により抽出された文字列と、各文字列に対し文字列抽出部１０４が算出した文字列頻度とが対応付けて保持されている。
【００３５】
図１に示す頻出文字列抽出部１０８は、文字列頻度ＤＢ１２２に登録されている文字列頻度に基づいて、頻出文字列を抽出する。ここで、頻出文字列とは、文字列頻度が予め設定された閾値よりも大きい値となる文字列のことである。閾値は例えば、「１００００」と設定する。このように閾値は絶対値で設定する。
【００３６】
また、他の例としては、構造化文書ＤＢ１２０に登録されているすべての構造化文書に含まれる文字列の数を基準とした相対的な値を閾値として設定してもよい。例えば、すべての構造化文書に含まれる文字列の数を１とした場合の所定の文字列の数の割合「０．８」を相対的な閾値として設定してもよい。
【００３７】
構造ＩＤ特定部１１０は、構造化文書ＤＢ１２０に保持されている構造化文書に含まれる各頻出文字列の、構造化文書における配置位置、すなわち構造ＩＤを特定する。そして、構造ＩＤを頻出文字列に対応付けて構造ＩＤ頻度ＤＢ１２４に登録する。
【００３８】
構造ＩＤ頻度算出部１１２は、構造ＩＤ特定部１１０が特定した構造ＩＤの出現頻度、すなわち構造ＩＤ頻度を算出する。ここで、構造ＩＤ頻度とは、構造化文書ＤＢ１２０に登録されている構造文書において、所定の構造ＩＤに配置された所定の頻出文字列の数である。
【００３９】
例えば、図４に示す木構造において「データ」が頻出文字であるとすると、構造ＩＤ「５」における「データ」という頻出文字列の構造ＩＤ頻度は「３」である。また、構造ＩＤ「３」における構造ＩＤ頻度は「１」である。さらに、他の構造化文書における同一の構造ＩＤに対する構造ＩＤ頻度を加算し、構造ＩＤ頻度が算出される。
【００４０】
図９は、構造ＩＤ頻度ＤＢ１２４のデータ構成を模式的に示す図である。頻出文字列抽出部１０８により抽出された頻出文字列と、当該頻出文字列が出現する構造ＩＤとが対応付けられている。さらに構造ＩＤには、構造ＩＤ頻度が対応付けられている。
【００４１】
図１に示す索引登録部１１４は、文字列頻度ＤＢ１２２および構造ＩＤ頻度ＤＢ１２４に登録されている情報に基づいて、索引キーと索引情報を索引ＤＢ１２６に登録する。具体的には、文字列抽出部１０４が抽出した文字列を索引キーとして登録する。索引情報には、索引キーである文字列を含む構造化文書の文書ＩＤ、文字列を含むテキスト要素の要素ＩＤおよびオフセットが含まれる。ここで、オフセットとは、テキスト要素内における文字列の位置を示す情報である。オフセットは、要素内位置情報に相当する。なお、頻出文字列については、文字列と構造ＩＤを索引キーとして登録し、各索引キーに索引情報を対応付けて登録する。
【００４２】
このように、索引情報は文字列を特定するための情報なので、索引情報を利用することにより、各文字列を含むテキスト要素、テキスト要素における文字列の位置、文字列を含む構造化文書を特定することができる。さらに、頻出文字列については、文字列と構造ＩＤを検索キーとすることにより、頻出文字列における検索処理コストを抑えることができる。
【００４３】
図１０は、オフセットを説明するための図である。図１０に示すようにテキスト要素「データベース・・・」においては、先頭文字「デ」をオフセット位置「１」として、順にオフセット位置が定められている。したがって、例えば、文字列「データ」は、テキスト要素中先頭文字から始まる３文字なので、オフセット「１」となる。文字列「ータベ」の先頭文字「ー」は、先頭から２番目の文字なので、文字列「ータベ」のオフセットは「２」となる。
【００４４】
索引ＤＢ１２６は、索引テーブルを保持している。より具体的には、文書ＩＤごとのテーブルからなる文書単位索引テーブルと、構造化文書によらずすべての文字列を含む文字列単位索引テーブルとを保持している。
【００４５】
図１１は、索引ＤＢ１２６が保持する文書ＩＤごとの文書単位索引テーブル１２７のデータ構成を模式的に示す図である。文書単位索引テーブルは、索引キーとしての文字列と索引情報とを対応付けて保持している。さらに、索引情報には、文書ＩＤ、要素ＩＤおよびオフセットが含まれている。なお、文書単位索引テーブルにおいては、同一の索引キーのとしての文字列であっても、文書ＩＤが異なる場合には、それぞれの文字列が索引キーとして登録される。
【００４６】
図１２は、索引ＤＢ１２６が保持する文字列ごとの文字列単位索引テーブル１２８のデータ構成を模式的に示す図である。文字列単位索引テーブル１２８は、図１１を参照しつつ説明した文書単位索引テーブル１２７と同様に、索引キーとしての文字列と、索引情報とを対応付けて保持している。文書単位索引テーブル１２７は、文書単位のテーブルであるが、文字列単位索引テーブル１２８においては、同一の文字列が複数の構造化文書に存在する場合には、これらいずれの文字列の検索条件も、索引キーとしての所定の１つの文字列に対応付けられている。したがって、複数の構造化文書を検索対象とすることができ、特定の文字列を含む構造化文書やテキスト要素を容易に検出することができる。
【００４７】
文字列単位索引テーブル１２８においては、頻出文字列は、構造ＩＤ単位でさらに分割されており、文字列に加えて構造ＩＤが索引キーとして登録されている。そして、構造ＩＤに対応付けて各索引情報が登録されている。
【００４８】
さらに、索引登録部１１４は、頻出文字列の構造ＩＤのうち構造ＩＤ頻度ＤＢ１２４において構造ＩＤ頻度が予め設定された閾値よりも小さいものについては、複数の構造ＩＤを１つの構造ＩＤグループとする。そして、この構造ＩＤグループを識別するグループＩＤを構造ＩＤとして文字列単位索引テーブル１２８に登録する。これにより、構造ＩＤの種類が多い場合であっても、細分化による管理コストの増加を抑えることができる。
【００４９】
図１に示す検索条件取得部１３０は、入出力装置などを介して検索条件を取得する。ここで、検索条件には、検索キーワードと検索範囲が含まれている。
【００５０】
キーワード文字列抽出部１３２は、検索条件取得部１３０が取得した検索条件からキーワード文字列を抽出する。ここで、キーワード文字列とは、キーワードに含まれる文字列である。文字列を抽出する処理は、文字列抽出部１０４がテキスト要素から文字列を抽出する処理と同様である。
【００５１】
検索部１３４は、索引ＤＢ１２６において、キーワード文字列抽出部１３２により抽出されたキーワード文字列に一致する索引キーを検索する。構造化文書抽出部１３６は、索引ＤＢ１２６において検索部１３４が特定した索引キーに対応付けられている索引情報により特定される構造化文書を構造化文書ＤＢ１２０から抽出する。構造化文書出力部１３８は、構造化文書抽出部１３６により抽出された構造化文書を検索結果として出力する。
【００５２】
図１３は、構造化文書処理装置１０における索引登録処理を示すフローチャートである。まずユーザがマウスやキーボード、ディスプレイモニタなどの入出力装置を利用して構造化文書を入力する。構造化文書処理装置１０の構造化文書取得部１０２は、こうしてユーザから入力された構造化文書を取得する（ステップＳ１００）。
【００５３】
次に、構造化文書取得部１０２が取得した構造化文書は、構造化文書ＩＤと対応付けて構造化文書ＤＢ１２０に登録される（ステップＳ１０２）。次に、文字列抽出部１０４は、構造化文書ＤＢ１２０に登録されている各構造化文書から文字列を抽出する（ステップＳ１０４）。抽出された文字列は、索引キーとして、索引情報とともに文書単位索引テーブル１２７に登録される。次に、文字列頻度算出部１０６は、文字列抽出部１０４により抽出された各文字列の文字列頻度を算出する（ステップＳ１０６）。各文字列と文字列頻度とが対応付けられて文字列頻度ＤＢ１２２に登録される（ステップＳ１０８）。
【００５４】
次に、頻出文字列抽出部１０８は、文字列頻度ＤＢ１２２に登録されている文字列の文字列頻度に基づいて、頻出文字列を抽出する（ステップＳ１１０）。次に、構造ＩＤ特定部１１０は、頻出文字列抽出部１０８により抽出された頻出文字列の構造ＩＤを特定する（ステップＳ１１２）。次に、構造ＩＤ頻度算出部１１２は、構造ＩＤ特定部１１０により特定された構造ＩＤごとの頻出文字列の出現頻度、すなわち構造ＩＤ頻度を算出する（ステップＳ１１４）。各頻出文字列が属する構造の構造ＩＤと、構造ＩＤとが対応付けられて構造ＩＤ頻度ＤＢ１２４に登録される（ステップＳ１１６）。次に、索引登録部１１４は、文字列頻度ＤＢ１２２および構造ＩＤ頻度ＤＢ１２４に登録されている情報に基づいて、索引キーと索引情報とを対応付けて索引ＤＢ１２６に登録する（ステップＳ１１８）。具体的には、頻出文字列および構造ＩＤを索引キーとして、索引情報とともに文字列単位索引テーブル１２８に登録する。以上で、索引登録処理が完了する。
【００５５】
ここで、索引登録処理についてより具体的に説明する。例えば、図８に示すような文字列と文字列頻度とが登録されたとする。そして、頻出文字列判定の際に利用する閾値が「１００００」と設定されているとする。この場合には、頻出文字列として、「データ」が抽出される。さらに、構造化文書ＤＢ１２０に登録されているすべての構造化文書に含まれる頻出文字列「データ」の構造ＩＤごとの構造ＩＤ頻度が構造ＩＤ頻度ＤＢ１２４に登録される。
【００５６】
文字列単位索引テーブル１２８に索引キーとして構造ＩＤを含めるべき構造ＩＤ頻度の閾値が「５００」と設定されているとする。この場合には、図９に示す構造ＩＤ「６」および構造ＩＤ「１９」に対する構造ＩＤを同一の構造ＩＤグループとして統合し、構造ＩＤグループを識別するグループＩＤ「Ｇ１」を付与する。そして、図１２に示すように文字列単位索引テーブル１２８には、構造ＩＤ「６」および構造ＩＤ「１９」に対応付けられている頻出文字列「データ」に対する索引情報が、構造ＩＤグループを識別する「Ｇ１」と文字列「データ」とを含む索引キーに対応付けて登録される。
【００５７】
頻出文字列については、構造ＩＤごとに索引キーを割り当てることにより頻出文字列を分散させることができる。これにより、構造を指定した検索処理コストを軽減することができる。
【００５８】
さらに、同一の文字列（頻出文字列）を構造ＩＤごとに分割した場合には、索引キー数が著しく増加するなど、データ格納効率劣化やシステムリソース圧迫の原因になり得る問題が起こる可能性がある。そこで、上述のように、対応する索引情報が少ないものについては１つのグループにまとめることにより、上記のよう頻出文字列については検索処理コストを軽減しつつ索引キー数の増加を抑制することができる。
【００５９】
なお、他の例としては、構造ＩＤ頻度が閾値以下のものをグループ化するのにかえて、構造化文書の木構造におけるパスが類似するものをグループ化することとしてもよい。また、他の例としては、「ｒｏｏｔ」からの経路にかかわらず、同じタグ名を有する構造ＩＤを統合し、統合した構造ＩＤそれぞれの出現頻度の合計を構造ＩＤ頻度として記憶してもよい。このように、グループ化するための条件は実施の形態に限定されるものではない。
【００６０】
図１４は、構造化文書処理装置１０における検索処理を示すフローチャートである。まず、ユーザが入出力装置を利用して検索条件を入力する。構造化文書処理装置１０の検索条件取得部１３０は、こうしてユーザから入力された検索条件を取得する（ステップＳ２００）。次に、キーワード文字列抽出部１３２は、検索条件取得部１３０が取得した検索条件に含まれるキーワードからキーワード文字列を抽出する（ステップＳ２０２）。
【００６１】
次に、検索部１３４は、キーワード文字列抽出部１３２により抽出されたキーワード文字列と一致する文字列を索引ＤＢ１２６において検索する（ステップＳ２０４）。このとき、検索条件取得部１３０が取得した検索条件において検索範囲が指定されている場合には、指定された検索範囲内において検索する。また、検索条件に構造ＩＤの指定が含まれている場合には、この構造ＩＤとキーワード文字列とに一致する索引キーを検索する。
【００６２】
構造化文書抽出部１３６は、索引ＤＢ１２６において検索部１３４により検出された索引キーに対応付けられている索引情報に基づいて、構造化文書ＤＢ１２０から対応する構造化文書を抽出する（ステップＳ２０６）。なお、他の例としては、構造化文書のうち対応する部分のみを抽出してもよい。次に、構造化文書出力部１３８は、構造化文書抽出部１３６により抽出された構造化文書を検索結果として出力する（ステップＳ２０８）。以上で、検索処理が完了する。
【００６３】
図１５は、実施の形態にかかる構造化文書処理装置１０のハードウェア構成を示す図である。構造化文書処理装置１０は、ハードウェア構成として、構造化文書処理装置１０における索引登録処理および検索処理を実行する構造化文書処理プログラムなどが格納されているＲＯＭ５２と、ＲＯＭ５２内のプログラムに従って構造化文書処理装置１０の各部を制御するＣＰＵ５１と、構造化文書処理装置１０の制御に必要な種々のデータを記憶するＲＡＭ５３と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５７と、各部を接続するバス６２とを備えている。
【００６４】
先に述べた構造化文書処理装置１０における構造化文書処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（Ｒ）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【００６５】
この場合には、構造化文書処理プログラムは、構造化文書処理装置１０において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【００６６】
また、本実施の形態の構造化文書処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
【００６７】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００６８】
そうした第１の変更例としては、複数の構造ＩＤを１つのグループに統合する処理を行わなくてもよい。この場合には、構造化文書処理装置１０は、構造ＩＤ頻度算出部１１２は備えなくともよい。そして、構造ＩＤ頻度を算出し、構造ＩＤ頻度に基づいてグループに統合する処理を省略する。
【００６９】
また、第２の変更例としては、構造化文書処理装置１０は、図１１に示す文書単位索引テーブル１２７は保持しなくともよい。
【図面の簡単な説明】
【００７０】
【図１】実施の形態にかかる構造化文書処理装置１０の全体構成を示すブロック図である。
【図２】構造化文書を説明するための図である。
【図３】図２に示す構造化文書の構造を概念的に示す図である。
【図４】構造化文書における構造ＩＤを説明するための図である。
【図５】構造化文書ＤＢ１２０のデータ構成を模式的に示す図である。
【図６】文字列抽出部１０４が抽出する文字列を説明するための図である。
【図７】文字列抽出の処理を説明するための図である。
【図８】文字列頻度ＤＢ１２２のデータ構成を模式的に示す図である。
【図９】構造ＩＤ頻度ＤＢ１２４のデータ構成を模式的に示す図である。
【図１０】オフセットを説明するための図である。
【図１１】索引ＤＢ１２６が保持する文書ＩＤごとの文書単位索引テーブル１２７のデータ構成を模式的に示す図である。
【図１２】索引ＤＢ１２６が保持する文字列ごとの文字列単位索引テーブル１２８のデータ構成を模式的に示す図である。
【図１３】構造化文書処理装置１０における索引登録処理を示すフローチャートである。
【図１４】構造化文書処理装置１０における検索処理を示すフローチャートである。
【図１５】実施の形態にかかる構造化文書処理装置１０のハードウェア構成を示す図である。
【符号の説明】
【００７１】
１０  構造化文書処理装置
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５７  通信Ｉ／Ｆ
６２  バス
１０２  構造化文書取得部
１０４  文字列抽出部
１０６  文字列頻度算出部
１０８  頻出文字列抽出部
１１０  構造ＩＤ特定部
１１２  構造ＩＤ頻度算出部
１１４  索引登録部
１２０  構造化文書ＤＢ
１２２  文字列頻度ＤＢ
１２４  構造ＩＤ頻度ＤＢ
１２６  索引ＤＢ
１２７  文書単位索引テーブル
１２８  文字列単位索引テーブル
１３０  検索条件取得部
１３２  キーワード文字列抽出部
１３４  検索部
１３６  構造化文書抽出部
１３８  構造化文書出力部
【図１】
0004489034.tif 000002
【図２】
0004489034.tif 000003
【図３】
0004489034.tif 000004
【図４】
0004489034.tif 000005
【図５】
0004489034.tif 000006
【図６】
0004489034.tif 000007
【図７】
0004489034.tif 000008
【図８】
0004489034.tif 000009
【図９】
0004489034.tif 000010
【図１０】
0004489034.tif 000011
【図１１】
0004489034.tif 000012
【図１２】
0004489034.tif 000013
【図１３】
0004489034.tif 000014
【図１４】
0004489034.tif 000015
【図１５】
0004489034.tif 000016