(57)【要約】【課題】階層構造化された文書セットの中から、適切な要素を短時間で検索すること。【解決手段】取得部２０１は、ＸＭＬ文書を取得する。生成部２０２は、位置情報を含むノードリストを生成する。入力部２０３は、検索条件の入力を受け付ける。算出部２０４は、検索条件の合致度を示すスコアを算出する。特定部２０５は、位置情報を参照して、ノードが属する親ノードを特定する。加算部２０６は、ノードのスコアに基づく加算値を、特定部２０５によって特定された親ノードのスコアに加算する。選択部２０７は、加算部２０６による加算後のスコアに基づいて、ノードリストに示されたノードの中から、検索結果として出力するノードを選択する。出力部２０８は、選択部２０７によって選択されたノードを出力する。【選択図】図２
2009129013.tif 000002
【特許請求の範囲】
【請求項１】
階層構造化された文書セットを取得する取得工程と、
前記取得工程によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成工程と、
任意の検索条件の入力を受け付ける入力工程と、
前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出工程と、
前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定工程と、
前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定工程によって特定された親ノードのスコアに加算する加算工程と、
前記加算工程による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択工程と、
前記選択工程によって選択されたノードを出力する出力工程と、
を含んだことを特徴とする文書検索方法。
【請求項２】
前記生成工程は、
前記ノードリストに示されたノードごとに、当該ノードのインデックスと当該ノードが属する親ノードのインデックスとの差分値を、前記位置情報として前記ノードリストに含めることを特徴とする請求項１に記載の文書検索方法。
【請求項３】
前記加算工程は、
前記ノードリストに示された下位のノードから順に、前記ノードのスコアに基づく加算値を、前記親ノードのスコアに加算することを特徴とする請求項１または２に記載の文書検索方法。
【請求項４】
前記算出工程は、ＴＦ−ＩＤＦ法を用いて、前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出することを特徴とする請求項１〜３のいずれか一つに記載の文書検索方法。
【請求項５】
前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアを、前記親ノードのスコアに加算することを特徴とする請求項１〜４のいずれか一つに記載の文書検索方法。
【請求項６】
前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの位置情報とに基づく加算値を、前記親ノードのスコアに加算することを特徴とする請求項１〜４のいずれか一つに記載の文書検索方法。
【請求項７】
前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの大きさとに基づく加算値を、前記親ノードのスコアに加算することを特徴とする請求項１〜４のいずれか一つに記載の文書検索方法。
【請求項８】
前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの位置情報と当該ノードの大きさとに基づく加算値を、前記親ノードのスコアに加算することを特徴とする請求項１〜４のいずれか一つに記載の文書検索方法。
【請求項９】
階層構造化された文書セットを取得する取得手段と、
前記取得手段によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成手段と、
任意の検索条件の入力を受け付ける入力手段と、
前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出手段と、
前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定手段と、
前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定手段によって特定された親ノードのスコアに加算する加算手段と、
前記加算手段による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択手段と、
前記選択手段によって選択されたノードを出力する出力手段と、
を備えたことを特徴とする文書検索装置。
【請求項１０】
階層構造化された文書セットを取得する取得工程と、
前記取得工程によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成工程と、
任意の検索条件の入力を受け付ける入力工程と、
前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出工程と、
前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定工程と、
前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定工程によって特定された親ノードのスコアに加算する加算工程と、
前記加算工程による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択工程と、
前記選択工程によって選択されたノードを出力する出力工程と、
をコンピュータに実行させることを特徴とする文書検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、階層構造化された文書セットから、任意の検索条件に合致するノードを検索する文書検索方法、文書検索装置および文書検索プログラムに関する。
【背景技術】
【０００２】
従来より、一連の文書を、章や節などの適切な単位の部分文書に分割し、階層構造化することによって、出版の多様性、情報検索の的確性、分割／結合の容易性など、多くのメリットを得ることができるものとされている。たとえば、階層構造化された文書の代表的なものとしては、ＸＭＬ文書が挙げられる。ＸＭＬ文書は、タグによって文書要素や文書テキストがマークアップされているため、部分文書の検索を容易におこなうことができるものとされている（たとえば、下記特許文献１参照。）。
【０００３】
【特許文献１】特開平０８−０４４７６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の従来技術にあっては、検索条件に合致する最小単位の要素が断片的に複数検索されてしまうといった問題が生じていた。たとえば、検索条件に合致する複数の要素が、上位の要素によって包括されている場合、ユーザにとっては、この上位の要素が検索結果として検索されるほうが好ましい。
【０００５】
この発明は、上述した従来技術による問題点を解消するため、階層構造化された文書セットの中から、適切な要素を短時間で検索することができる文書検索方法、文書検索装置および文書検索プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、この発明にかかる文書検索方法は、階層構造化された文書セットを取得する取得工程と、前記取得工程によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成工程と、任意の検索条件の入力を受け付ける入力工程と、前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出工程と、前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定工程と、前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定工程によって特定された親ノードのスコアに加算する加算工程と、前記加算工程による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択工程と、前記選択工程によって選択されたノードを出力する出力工程と、を含んだことを特徴とする。
【０００７】
この発明によれば、検索条件の合致度が高いノードの親ノード、または検索条件に合致するノードを多く含む親ノードを、検索条件の合致度が高いノードとして扱うことができる。
【０００８】
また、上記に記載の発明において、前記生成工程は、前記ノードリストに示されたノードごとに、当該ノードのインデックスと当該ノードが属する親ノードのインデックスとの差分値を、前記位置情報として前記ノードリストに含めることを特徴とする。
【０００９】
この発明によれば、少ない情報量で、親ノードの位置を表現できる。
【００１０】
また、上記に記載の発明において、前記加算工程は、前記ノードリストに示された下位のノードから順に、前記ノードのスコアに基づく加算値を、前記親ノードのスコアに加算することを特徴とする。
【００１１】
この発明によれば、それぞれのノードについての加算処理を１回で済ませることができる。
【００１２】
また、上記に記載の発明において、前記算出工程は、ＴＦ−ＩＤＦ法を用いて、前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出することを特徴とする。
【００１３】
この発明によれば、ＴＦ−ＩＤＦ法を用いてスコアを算出することにより、単に検索条件に含まれるキーワードが多く出現するノードではなく、そのキーワードをノードの特徴的なものとするノードを、検索条件の合致度が高いノードとして扱うことができる。
【００１４】
また、上記に記載の発明において、前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアを、前記親ノードのスコアに加算することを特徴とする。
【００１５】
この発明によれば、検索条件の合致度に応じたスコアを親ノードに加算することができる。
【００１６】
また、上記に記載の発明において、前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの位置情報とに基づく加算値を、前記親ノードのスコアに加算することを特徴とする。
【００１７】
この発明によれば、検索条件の合致度および親ノードとの距離を考慮したスコアを親ノードに加算することができる。
【００１８】
また、上記に記載の発明において、前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの大きさとに基づく加算値を、前記親ノードのスコアに加算することを特徴とする。
【００１９】
この発明によれば、検索条件の合致度およびノードの大きさを考慮したスコアを親ノードに加算することができる。
【００２０】
また、上記に記載の発明において、前記加算工程は、前記ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの位置情報と当該ノードの大きさとに基づく加算値を、前記親ノードのスコアに加算することを特徴とする。
【００２１】
この発明によれば、検索条件の合致度、親ノードとの距離、およびノードの大きさを考慮したスコアを親ノードに加算することができる。
【００２２】
また、この発明にかかる文書検索装置は、階層構造化された文書セットを取得する取得手段と、前記取得手段によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成手段と、任意の検索条件の入力を受け付ける入力手段と、前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出手段と、前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定手段と、前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定手段によって特定された親ノードのスコアに加算する加算手段と、前記加算手段による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択手段と、前記選択手段によって選択されたノードを出力する出力手段と、を備えたことを特徴とする。
【００２３】
この発明によれば、検索条件の合致度が高いノードの親ノード、または検索条件に合致するノードを多く含む親ノードを、検索条件の合致度が高いノードとして扱うことができる。
【００２４】
また、この発明にかかる文書検索プログラムは、階層構造化された文書セットを取得する取得工程と、前記取得工程によって取得された文書セットから、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する生成工程と、任意の検索条件の入力を受け付ける入力工程と、前記ノードリストに示されたノードごとに、前記検索条件の合致度を示すスコアを算出する算出工程と、前記ノードリストに示されたノードごとに、前記位置情報を参照して、前記ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する特定工程と、前記ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、前記特定工程によって特定された親ノードのスコアに加算する加算工程と、前記加算工程による加算後のスコアに基づいて、前記ノードリストに示されたノードの中から、検索結果として出力するノードを選択する選択工程と、前記選択工程によって選択されたノードを出力する出力工程と、をコンピュータに実行させることを特徴とする。
【００２５】
この発明によれば、検索条件の合致度が高いノードの親ノード、または検索条件に合致するノードを多く含む親ノードを、検索条件の合致度が高いノードとしてコンピュータに扱わせることができる。
【発明の効果】
【００２６】
本発明にかかる文書検索方法、文書検索装置および文書検索プログラムによれば、階層構造化された文書セットの中から、適切な要素を短時間で検索することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２７】
以下に添付図面を参照して、この発明にかかる文書検索方法、文書検索装置および文書検索プログラムの好適な実施の形態を、階層構造化された文書セットの一例としてＸＭＬ文書を用いて詳細に説明する。
【００２８】
（文書検索装置１００のハードウェア構成）
まず、この実施の形態にかかる文書検索装置のハードウェア構成について説明する。図１は、この実施の形態にかかる文書検索装置のハードウェア構成の一例を示すブロック図である。
【００２９】
図１において、文書検索装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）１０４と、ＨＤ（Ｈａｒｄ  Ｄｉｓｃ）１０５と、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｃ  Ｄｒｉｖｅ）１０６と、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｃ）１０７と、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  ＲｅＷｒｉｔａｂｌｅ）ドライブ１０８と、ＣＤ−ＲＷ１０９と、ディスプレイ１１０と、キーボード１１１と、マウス１１２と、ネットワークＩ／Ｆ（インタフェース）１１３と、通信ケーブル１１４と、バス１２０とを備えて構成されている。
【００３０】
ＣＰＵ１０１は、文書検索装置１００全体を制御する。ＲＯＭ１０２は、各種制御プログラムなどを格納する。ＲＡＭ１０３は、可変的なデータを書き換え自在に記憶し、ＣＰＵ１０１のワークエリアとして機能する。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御にしたがって書き込まれたデータを記憶する。
【００３１】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、着脱自在であり、ＦＤＤ１０６の制御にしたがって書き込まれたデータを記憶する。ＣＤ−ＲＷドライブ１０８は、ＣＰＵ１０１の制御にしたがってＣＤ−ＲＷ（または、ＣＤ−Ｒ、ＣＤ−ＲＯＭ）１０９に対するデータのリード／ライトを制御する。ＣＤ−ＲＷ１０９は、着脱自在であり、ＣＤ−ＲＷドライブ１０８の制御にしたがって書き込まれたデータを記憶する。
【００３２】
ディスプレイ１１０は、カーソル、メニュー、ウィンドウ、あるいは文字や画像などの各種データを表示する。キーボード１１１は、文字、数値、各種指示などの入力のための複数のキーを備える。マウス１１２は、各種指示の選択や実行、処理対象の選択、マウスポインタの移動などを行う。ネットワークＩ／Ｆ１１３は、通信ケーブル１１４を介してＬＡＮ、ＷＡＮ、インターネットなどのネットワークに接続され、当該ネットワークとＣＰＵ１０１とのインタフェースとして機能する。バス１２０は上記各部を接続する。
【００３３】
（文書検索装置１００の機能的構成）
つぎに、この実施の形態にかかる文書検索装置１００の機能的構成について説明する。図２は、この実施の形態にかかる文書検索装置１００の機能的構成を示すブロック図である。
【００３４】
図２に示すように、文書検索装置１００は、取得部２０１と、生成部２０２と、入力部２０３と、算出部２０４と、特定部２０５と、加算部２０６と、選択部２０７と、出力部２０８と、を備えて構成されている。
【００３５】
取得部２０１は、ＸＭＬ文書を取得する。たとえば取得部２０１は、ユーザによって指定されたＸＭＬ文書ファイルを読み取ることによってＸＭＬ文書を取得する。この場合、ＸＭＬ文書ファイルは、文書検索装置１００内部に記憶されているものに限らず、たとえば、文書検索装置１００と接続された他の装置に記憶されているものであってもよい。また、取得部２０１は、複数のＸＭＬ文書を取得してもよい。この場合、たとえば、所定の格納場所から、複数のＸＭＬ文書を取得してもよい。また、ユーザによって指定された格納場所から、複数のＸＭＬ文書を取得してもよい。取得部２０１は、具体的には、たとえば図１に示したネットワークＩ／Ｆ１１３によってその機能を実現する。
【００３６】
生成部２０２は、取得部２０１によって取得されたＸＭＬ文書から、当該文書セットに含まれたノードごとに当該ノードが属する親ノードの位置を示す位置情報を含む、ノードリストを生成する。ここでいうノードリストとは、木構造にモデル化されたＸＭＬ文書に基づいてＸＭＬ文書内に存在する全ての要素ノードをリスト化したものである。ノードリストでは、要素ノードごとに、インデックス、パスなどの情報を含む。要素ノードにテキストノードが属している場合は、そのテキストノードの、インデックス、テキストなどの情報が関連付けられる。
【００３７】
生成部２０２は、ノードリストに示されたノードごとに、当該ノードのインデックスと当該ノードが属する親ノードとの相対位置を示す位置情報をノードリストに含めてもよい。たとえば、生成部２０２は、ノードリストに示されたノードごとに、当該ノードのインデックスと当該ノードが属する親ノードのインデックスとの差分値を、位置情報としてノードリストに含めてもよい。具体的に説明すると、インデックス「１００６」が付与されたノードの親ノードのインデックスが「１００２」である場合、生成部２０２は、インデックス「１００６」が付与されたノードの位置情報を「４」とする。生成部２０２は、生成したノードリストを、メモリ上に一時的に記憶させる。
【００３８】
生成部２０２は、ＸＭＬ文書に存在する全てのノードに関するノードリストを生成するだけでなく、所定の範囲内のノードに関するノードリストや、ユーザによって指定された範囲内のノードに関するノードリストを生成するようにしてもよい。また、生成部２０２は、ノードリストに示されたノードごとに、当該ノードのインデックスと当該ノードが属する親ノードの絶対位置を示す位置情報（たとえば、親ノードのインデックス）をノードリストに含めてもよい。なお、ノードリストの具体的な生成手順については、図４を用いて後述する。生成部２０２は、具体的には、たとえば図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７に記憶されたプログラムをＣＰＵ１０１が実行することによってその機能を実現する。
【００３９】
入力部２０３は、任意の検索条件の入力を受け付ける。ここで、検索条件とは、任意の自然文（検索クエリ文）、任意のデータなどである。たとえば、検索条件は「Ｊ社  Ｉ太郎」や「（Ｊ社  Ｉ太郎）」のように入力され、前者は、「Ｊ社」および「Ｉ太郎」の両方を含む、を意味し、後者は、「Ｊ社」または「Ｉ太郎」のいずれかを含む、を意味する。ここで、検索条件は、ユーザが文書検索装置１００に直接入力したものに限らず、たとえば、文書検索装置１００と接続された他の装置から送信されたものであってもよい。入力部２０３は、具体的には、たとえば図１に示したキーボード１１１、マウス１１２、ネットワークＩ／Ｆ１１３によってその機能を実現する。
【００４０】
算出部２０４は、ノードリストに示されているノードごとに、入力部２０３によって入力された検索条件の合致度を示すスコアを算出する。たとえば、スコア（ＴＦ−ＩＤＦ）は、以下算出式（１）により求めることができる。
【００４１】
ＴＦＩＤＦ＝ＴＦ×ｌｏｇ（Ｎ／ＤＦ）・・・（１）
【００４２】
上記算出式（１）において、ＴＦは、テキストノード内における検索文字列の出現数を示す。また、Ｎは、全テキストノード数を示す。そして、ＤＦは、検索文字列を含むテキストノード数を示す。
【００４３】
なお、本実施の形態においては、ＴＦ−ＩＤＦ法を用いてスコアを算出しているが、これに限らず、他の方法を用いて、スコアを算出するようにしてもよい。算出部２０４は、具体的には、たとえば図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７に記憶されたプログラムをＣＰＵ１０１が実行することによってその機能を実現する。
【００４４】
特定部２０５は、ノードリストに示されたノードごとに、位置情報を参照して、ノードリストに示されているノードの中から、当該ノードが属する親ノードを特定する。たとえば、ノードのインデックスと親ノードのインデックスとの差分値が位置情報とされた場合、ノードのインデックスと位置情報とから、親ノードのインデックスを特定する。たとえば、インデックス「１００６」が付与されたノードの位置情報が「４」である場合、特定部２０５は、インデックス「１００２」が付与されたノードを、インデックス「１００６」が付与されたノードの親ノードとして特定する。特定部２０５は、具体的には、たとえば図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７に記憶されたプログラムをＣＰＵ１０１が実行することによってその機能を実現する。
【００４５】
加算部２０６は、ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、特定部２０５によって特定された親ノードのスコアに加算する。加算部２０６は、ノードリストに示された下位のノードから順に、すなわち、インデックス値の逆順に、ノードのスコアに基づく加算値を、親ノードのスコアに加算する。特に、加算部２０６は、ノードリストの最後尾（ＸＭＬ構造の最右端）から、順に親ノードに向かってスコアまたは加算値を加算することが好ましい。この処理はワンパスで走査が可能であり、メモリ領域に収まるサイズならば、非常に高速に処理できる。
【００４６】
たとえば、パス「Ａ／Ｂ／Ｄ」によって特定されるノードのスコアが「５」であり、このノードが属する親ノード「Ａ／Ｂ」のスコアが「５」であった場合、加算部２０６による加算処理によって、ノード「Ａ／Ｂ」のスコアは「１０」となる。
【００４７】
なお、加算部２０６は、ノードリストに示されたノードごとに、当該ノードのスコアと当該ノードの位置情報とを用いて加算値を算出し、算出した加算値を特定部２０５によって特定された親ノードのスコアに加算してもよい。たとえば、加算値（ＡＤＤ）は、以下算出式（２）により求めるようにしてもよい。
【００４８】
ＡＤＤ＝ＳＣＯＲＥ／ｌｏｇ（ＯＦＦＳＥＴ＋１．１）・・・（２）
【００４９】
上記算出式（２）において、ＳＣＯＲＥは、ノードのスコアを示す。また、ＯＦＦＳＥＴは、位置情報を示す。上記算出式（２）によって算出された値を加算値とすることにより、親ノードとの距離が離れたノードほど、親ノードとの関連度が低いノードとして扱い、スコアを減じることができる。
【００５０】
なお、加算部２０６は、上記以外の算出式を用いて加算値を算出してもよい。たとえば、加算部２０６は、ノードのスコアとノードの大きさとを用いて加算値を算出し、算出した加算値を特定部２０５によって特定された親ノードのスコアに加算してもよい。また、加算部２０６は、ノードのスコアとノードの大きさとノードの位置情報とを用いて加算値を算出し、算出した加算値を特定部２０５によって特定された親ノードのスコアに加算してもよい。
【００５１】
加算部２０６は、具体的には、たとえば図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７に記憶されたプログラムをＣＰＵ１０１が実行することによってその機能を実現する。
【００５２】
選択部２０７は、加算部２０６による加算後のスコアに基づいて、ノードリストに示されたノードの中から、検索結果として出力するノードを選択する。たとえば、選択部２０７は、加算部２０６による加算後のスコアに基づいて、ノードリストに示されたノードを検索条件の合致度順にソートする。そして、選択部２０７は、スコアの高いノードから順に、ソート後のノードリストの中から、合致度の高いノードを所定数選択する。
【００５３】
なお、選択部２０７によって選択されるノードの数は、あらかじめ設定されていてもよく、ユーザによって指定されたものであってもよい。選択部２０７は、具体的には、たとえば図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７に記憶されたプログラムをＣＰＵ１０１が実行することによってその機能を実現する。
【００５４】
出力部２０８は、選択部２０７によって選択されたノードを出力する。たとえば、出力部２０８は、選択部２０７によって選択されたノードを、検索条件の合致度が高い順に表示する。なお、出力部２０８は、選択部２０７によって選択されたノードを表示するだけでなく、たとえば、ファイルに出力したり、文書検索装置１００と接続された他の装置へ送信してもよい。たとえば、検索条件が他の装置から送信された場合、検索条件の送信元の装置へ送信してもよい。出力部２０８は、具体的には、たとえば図１に示したディスプレイ１１０、ネットワークＩ／Ｆ１１３によってその機能を実現する。
【００５５】
（ＸＭＬ文書の一例）
つぎに、この発明の実施の形態にかかる文書検索装置１００に用いられるＸＭＬ文書の一例について説明する。図３は、この発明の実施の形態にかかる文書検索装置１００に用いられるＸＭＬ文書の一例を示す説明図である。
【００５６】
図３は、木構造にモデル化されたＸＭＬ文書「ｃ：￥ｄｏｃｕｍｅｎｔｓ￥０１２３．ｘｍｌ」を示したものである。図３において、「１００１」〜「１０１３」は要素ノードを示し、各数字はそのインデックスを示す。また、「Ａ」〜「Ｅ」はテキストノードを示し、各英字はそのインデックスを示す。
【００５７】
図３において、たとえば、インデックス「１００４」が付与された要素ノードには、インデックス「Ａ」が付与されたテキストノードが属している。また、インデックス「Ａ」が付与されたテキストノードは、テキスト「ＸＭＬ，ｓｃｈｅｍｅ」を持つ。たとえば、このテキストノードをタグを用いて示した場合、「＜ａｒｔｉｃｌｅ＞＜ｂｏｄｙ＞＜ｓｅｃ＞＜ｐ１＞ＸＭＬ，ｓｃｈｅｍｅ＜／ｐ１＞＜／ｓｅｃ＞＜／ｂｏｄｙ＞＜／ａｒｔｉｃｌｅ＞」と示すことができる。
【００５８】
（ノードリストの生成手順）
つぎに、生成部２０２によるノードリストの生成手順について説明する。図４は、生成部２０２によるノードリストの生成手順の一例を示すフローチャートである。
【００５９】
まず、木構造にモデル化されたＸＭＬ文書の中から、ルートの要素ノードを選択する（ステップＳ４０１）。たとえば、図３に示したＸＭＬ文書の場合、インデックス「１００１」が付与された要素ノードが選択される。
【００６０】
つぎに、ステップＳ４０１で選択された要素ノードをノードリストに追加する（ステップＳ４０２）。ここで、ノードリストに追加される情報は、要素ノードのインデックスやパスなどである。たとえば、図３に示したＸＭＬ文書におけるインデックス「１００１」が付与された要素ノードの場合は、インデックス「１００１」やパス「／ａｒｔｉｃｌｅ」などがノードリストに追加される。
【００６１】
つぎに、位置情報をノードリストに追加する（ステップＳ４０３）。たとえば、位置情報は、選択されたノードのインデックスから親ノードのインデックスを減算することによって求めることができる。たとえば、図３に示したＸＭＬ文書におけるインデックス「１００１」が付与された要素ノードの場合は、親ノードが存在しないことから、位置情報として「０」が求められる。また、図３に示したＸＭＬ文書におけるインデックス「１００６」が付与された要素ノードの場合は、親ノードのインデックスが「１００２」であることから、位置情報として「４」が求められる。
【００６２】
つぎに、選択された要素ノードにテキストノードが属しているか否かを判断する（ステップＳ４０４）。たとえば、図３に示したＸＭＬ文書におけるインデックス「１００１」が付与された要素ノードの場合は、テキストノードが属していないと判断され、インデックス「１００４」が付与された要素ノードの場合は、テキストノードが属していると判断される。
【００６３】
ステップＳ４０４において、テキストノードが属していると判断した場合（ステップＳ４０４：Ｙｅｓ）は、選択された要素ノードと、この要素ノードに属しているテキストノードとの関連付けをおこなって（ステップＳ４０５）、ステップＳ４０６へ進む。
【００６４】
ここで、要素ノードに関連付けられる情報は、テキストノードのインデックスやテキストなどである。たとえば、図３に示したＸＭＬ文書におけるインデックス「１００４」が付与された要素ノードには、テキストノードのインデックス「Ａ」やテキスト「ＸＭＬ，ｓｃｈｅｍｅ」などが関連付けられる。ステップＳ４０４において、テキストノードが属していないと判断した場合（ステップＳ４０４：Ｎｏ）は、ステップＳ４０５を飛ばして、ステップＳ４０６へ進む。
【００６５】
つぎに、ＸＭＬ文書に含まれる全ての要素ノードが選択されたか否かを判断する（ステップＳ４０６）。ステップＳ４０６において、全ての要素ノードが選択されたと判断した場合（ステップＳ４０６：Ｙｅｓ）は、一連の処理を終了する。一方、ステップＳ４０６において、全ての要素ノードが選択されていないと判断した場合（ステップＳ４０６：Ｎｏ）は、ＸＭＬ文書の中から、次の要素ノードを選択する（ステップＳ４０７）。このとき、より上位ノードを優先する。たとえば、図３に示したＸＭＬ文書において、要素ノードが選択される順番は、インデックス値の順番とおりとなる。
【００６６】
そして、ステップＳ４０２に戻り、ステップＳ４０６で全てのノードが選択されたと判断されるまで、ステップＳ４０２〜ステップＳ４０７を繰り返しおこなう。これにより、ＸＭＬ文書に含まれる全ての要素ノードを、上位のノードから順に、ノードリストに追加することができる。また、ＸＭＬ文書に含まれる全てのテキストノードを、それぞれ、ノードリストに示された要素ノードのいずれかと関連付けることができる。また、ＸＭＬ文書に含まれる全ての要素ノードについての親ノードの位置情報を、ノードリストに追加することができる。
【００６７】
（ノードリストの一例）
つぎに、ノードリストの一例について説明する。図５は、ノードリストの一例を示す説明図である。
【００６８】
図５に示すノードリスト５００は、図４を用いて上述した手順によって、図３に示したＸＭＬ文書から生成されたノードリストであり、列「ｉｎｄｅｘ１」,「ｐａｔｈ」，「ｉｎｄｅｘ２」，「ｔｅｘｔ」，「ｐａｒｅｎｔ」によって構成されている。
【００６９】
このうち、列「ｉｎｄｅｘ１」には、要素ノードのインデックスが設定される。また、列「ｐａｔｈ」には、要素ノードのパスが設定される。そして、列「ｉｎｄｅｘ２」には、要素ノードと関連付けられているテキストノードのインデックスが設定される。さらに、列「ｔｅｘｔ」には、要素ノードと関連付けられているテキストノードのテキストが設定される。また、列「ｐａｒｅｎｔ」には、要素ノードが属する親ノードの位置情報が設定される。
【００７０】
たとえば、図５に示すノードリスト５００から、インデックス「１００４」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｓｅｃ／ｐ１」によって示される要素ノードには、インデックス「Ａ」が付与され、かつテキスト「ＸＭＬ，ｓｃｈｅｍｅ」を含むテキストノードが関連付けられていると判断することができる。また、インデックス「１００６」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｆｏｏｔｅｒ」によって示される要素ノードについての親ノードの位置情報は、「４」であると判断することができる。
【００７１】
このように、ノードリスト５００は、要素ノードのインデックス順でソートされているため、元のＸＭＬ構造を再構成でき、親ノードの情報に容易にアクセスすることが可能である。また、ノードリスト５００を参照することにより、各ノードの持つ情報を、親子関係や祖先子孫関係、兄弟関係などを考慮しながら高速に処理を行うことができる。
【００７２】
（文書検索装置１００による文書検索処理の手順）
つぎに、この発明の実施の形態にかかる文書検索装置１００による文書検索処理の手順について説明する。図６は、この発明の実施の形態にかかる文書検索装置１００による文書検索処理の手順の一例を示すフローチャートである。
【００７３】
まず、取得部２０１によって、ＸＭＬ文書を取得して（ステップＳ６０１）、生成部２０２によって、ステップＳ６０１で取得されたＸＭＬ文書からノードリスト（ノード数Ｎ）を生成する（ステップＳ６０２）。ノードリストの具体的な生成手順については図４を用いて上述したとおりである。
【００７４】
つぎに、入力部２０３によって、検索条件の入力を受け付けて（ステップＳ６０３）、算出部２０４によって、ステップＳ６０２で生成されたノードリストに示されている全てのノードに対し、ステップＳ６０３で入力された検索条件に基づいた、検索条件の合致度を示すスコアを算出する（ステップＳ６０４）。
【００７５】
続いて、特定部２０５によって、ステップＳ６０２で生成されたノードリストに示されている上位からｉ番目（ｉ＝Ｎ．．．１）のノードを選択して（ステップＳ６０５）、ステップＳ６０５で選択されたノードについて、親ノードを特定する（ステップＳ６０６）。
【００７６】
そして、加算部２０６によって、ステップＳ６０５で選択されたノードのスコアを、ステップＳ６０６で特定された親ノードのスコアに加算して（ステップＳ６０７）、ステップＳ６０８へ進む。
【００７７】
続いて、ステップＳ６０２で生成されたノードリストに示されているノードが全て選択されたか否かを判断する（ステップＳ６０８）。ステップＳ６０８において、ノードが全て選択されていないと判断した場合（ステップＳ６０８：Ｎｏ）は、ステップＳ６０８においてノードが全て選択されたと判断されるまで、ステップＳ６０５〜ステップＳ６０８を繰り返しおこなう。
【００７８】
一方、ステップＳ６０８において、ノードが全て選択されたと判断した場合（ステップＳ６０８：Ｙｅｓ）は、選択部２０７によって、ステップＳ６０７による加算後のスコアに基づいて、ノードリストに示されたノードを検索条件の合致度順にソートして（ステップＳ６０９）、ソートされたノードの中から、合致度の高いノードを所定のノード数選択する（ステップＳ６１０）。
【００７９】
そして、出力部２０８によって、ステップＳ６１０で選択されたノードを出力して（ステップＳ６１１）、一連の処理を終了する。
【００８０】
（算出部２０４によって算出されたスコアの一例）
つぎに、算出部２０４によって算出されたスコアの一例について説明する。図７は、算出部２０４によって算出されたスコアの一例を示す説明図である。
【００８１】
図７は、図５に示したノードリスト５００と、算出部２０４によって算出された各要素ノードのスコアを示すスコアリスト７００との関連付けを示したものである。図７に示すスコアリスト７００において、列「ｓｃｏｒｅ１」には、算出部２０４によって算出されたスコアが設定されている。このときの、算出処理に用いられた検索文字列は「ＸＭＬ，ｔａｇ，ｓｃｈｅｍｅ」である。
【００８２】
たとえば、ノードリスト５００およびスコアリスト７００から、インデックス「１００４」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｓｅｃ／ｐ１」によって示される要素ノードには、算出部２０４によって算出されたスコア「３８」が関連付けられていると判断することができる。ここで、このスコア「３８」は以下のＴＦ−ＩＤＦ算出式（３）によって算出されたものである。
【００８３】
３８（ＴＦＩＤＦ：スコア）＝１（ＴＦ：テキストノード内における検索文字列「ＸＭＬ」の出現数）×２０（ＩＤＦ：ｌｏｇ（全テキストノード数／検索文字列「ＸＭＬ」を含むテキストノード数））＋１（ＴＦ：テキストノード内における検索文字列「ｓｃｈｅｍｅ」の出現数）×１８（ＩＤＦ：ｌｏｇ（全テキストノード数／検索文字列「ｓｃｈｅｍｅ」を含むテキストノード数））・・・（３）
【００８４】
また、ノードリスト５００、スコアリスト７００から、インデックス「１００５」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｓｅｃ／ｐ２」によって示される要素ノードには、算出部２０４によって算出されたスコア「８０」が関連付けられていると判断することができる。ここで、このスコア「８０」は以下のＴＦ−ＩＤＦ算出式（４）によって算出されたものである。
【００８５】
８０（ＴＦＩＤＦ：スコア）＝２（ＴＦ：テキストノード内における検索文字列「ｔａｇ」の出現数）×４０（ＩＤＦ：ｌｏｇ（全テキストノード数／検索文字列「ｔａｇ」を含むテキストノード数））・・・（４）
【００８６】
（加算部２０６によって加算されたスコアの一例）
つぎに、加算部２０６によって加算されたスコアの一例について説明する。図８は、加算部２０６によって加算されたスコアの一例を示す説明図である。
【００８７】
図８は、図５に示したノードリスト５００と、図７に示したスコアリスト７００と、加算部２０６による加算後のスコアを示すスコアリスト８００と、の関連付けを示したものである。図８に示すスコアリスト８００において、列「ｓｃｏｒｅ２」には、加算部２０６によって加算されたスコアが設定されている。
【００８８】
たとえば、スコアリスト８００から、インデックス「１０１１」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｓｅｃ／ｔｉｔｌｅ／ｎａｍｅ」によって示される要素ノードには、加算部２０６によって加算されたスコア「６６」が関連付けられていると判断することができる。ここで、このスコア「６６」は、この要素ノードに属する、インデックス「１０１２」が付与された要素ノードのスコア「２２」と、インデックス「１０１３」が付与された要素ノードのスコア「４４」とが加算されたものである。
【００８９】
（加算部２０６によって加算されたスコアの他の一例）
つぎに、加算部２０６によって加算されたスコアの他の一例について説明する。図９は、加算部２０６によって加算されたスコアの他の一例を示す説明図である。
【００９０】
図９は、図５に示したノードリスト５００と、図７に示したスコアリスト７００と、加算部２０６による加算後のスコアを示すスコアリスト９００と、の関連付けを示したものである。図９に示すスコアリスト９００において、列「ｓｃｏｒｅ２」には、加算部２０６によって加算されたスコアが設定されている。
【００９１】
たとえば、スコアリスト９００から、インデックス「１０１１」が付与されたパス「／ａｒｔｉｃｌｅ／ｂｏｄｙ／ｓｅｃ／ｔｉｔｌｅ／ｎａｍｅ」によって示される要素ノードには、加算部２０４によって加算されたスコア「４４」が関連付けられていると判断することができる。ここで、このスコア「４４」は、この要素ノードに属する、インデックス「１０１２」が付与された要素ノードのスコア「２２」から図２を用いて説明した算出式（２）により算出された加算値「２０」と、インデックス「１０１３」が付与された要素ノードのスコア「４４」から上記算出式（２）により差出された加算値「２４」とが加算されたものである。
【００９２】
（出力部２０８によって出力された検索結果の一例）
つぎに、出力部２０８によって出力された検索結果の一例について説明する。図１０は、出力部２０８によって出力された検索結果の一例を示す説明図である。
【００９３】
図１０は、図３に示したＸＭＬ文書に対して、図６を用いて上述した手順による文書検索処理がおこなわれた結果、出力部２０８によって出力された検索結果を示すものである。図１０に示すように、文書検索処理をおこなうにあたり、検索対象文書「ｃ：￥ｄｏｃｕｍｅｎｔｓ￥０１２３．ｘｍｌ」、検索条件「ＸＭＬ,ｔａｇ,ｓｃｈｅｍｅ」、検索数「３（件）」がユーザによって指定されている。
【００９４】
そして、「検索」ボタンが押下されたことにより、検索対象文書「ｃ：￥ｄｏｃｕｍｅｎｔｓ￥０１２３．ｘｍｌ」に対する文書検索処理がおこなわれ、その結果として、検索対象文書「ｃ：￥ｄｏｃｕｍｅｎｔｓ￥０１２３．ｘｍｌ」の中から選択された、検索条件の合致度が高い上位３件のノードが検索結果として出力されている。
【００９５】
以上説明したように、本実施の形態にかかる文書検索装置１００によれば、ノードリストに示されたノードごとに、当該ノードのスコアに基づく加算値を、親ノードのスコアに加算し、加算後のスコアに基づいて、ノードリストに示されたノードの中から、検索結果として出力するノードを選択する構成とした。このため、階層構造化された文書セットの中から、適切な要素を検索することができる。
【００９６】
また、本実施の形態にかかる文書検索装置１００によれば、ノードリストに示された下位のノードから順に、ノードのスコアに基づく加算値を、親ノードのスコアに加算する構成とした。特に、位置情報を参照して、親ノードを特定する構成とした。このため、階層構造化された文書セットの中から、適切な要素を短時間で検索することができる。
【００９７】
なお、この発明にかかる文書検索方法、文書検索装置および文書検索プログラムは、階層構造化された文書セットであれば、ＸＭＬ文書以外の文書に対する文書検索にも適用することができる。また、ファイル化された文書に限らず、たとえば、データベース化された文書に対する文書検索にも適用することができる。さらに、単独のファイルにファイル化された文書や単独のデータベースにデータベース化された文書に限らず、複数のファイルにファイル化された文書や、複数のデータベースにデータベース化された文書に対する文書検索にも適用することができる。
【００９８】
なお、本実施の形態で説明した文書検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記憶媒体に記録され、コンピュータによって記憶媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【００９９】
以上のように、本発明にかかる文書検索方法、文書検索装置および文書検索プログラムは、階層構造化された文書セットから、任意の検索条件に合致するノードを検索するパーソナル・コンピュータ、ドキュメントサーバ、文書検索ソフトウェアなどへの利用に適している。
【図面の簡単な説明】
【０１００】
【図１】この実施の形態にかかる文書検索装置のハードウェア構成の一例を示すブロック図である。
【図２】この実施の形態にかかる文書検索装置の機能的構成を示すブロック図である。
【図３】この発明の実施の形態にかかる文書検索装置に用いられるＸＭＬ文書の一例を示す説明図である。
【図４】生成部によるノードリストの生成手順の一例を示すフローチャートである。
【図５】ノードリストの一例を示す説明図である。
【図６】この発明の実施の形態にかかる文書検索装置による文書検索処理の手順の一例を示すフローチャートである。
【図７】算出部によって算出されたスコアの一例を示す説明図である。
【図８】加算部によって加算されたスコアの一例を示す説明図である。
【図９】加算部によって加算されたスコアの他の一例を示す説明図である。
【図１０】出力部によって出力された検索結果の一例を示す説明図である。
【符号の説明】
【０１０１】
１００  文書検索装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＨＤＤ
１０５  ＨＤ
１０６  ＦＤＤ
１０７  ＦＤ
１０８  ＣＤ−ＲＷドライブ
１０９  ＣＤ−ＲＷ
１１０  ディスプレイ
１１１  キーボード
１１２  マウス
１１３  ネットワークＩ／Ｆ
１１４  通信ケーブル
１２０  バス
２０１  取得部
２０２  生成部
２０３  入力部
２０４  算出部
２０５  特定部
２０６  加算部
２０７  選択部
２０８  出力部
５００  ノードリスト
７００  スコアリスト
８００  スコアリスト
９００  スコアリスト
【図１】
2009129013.tif 000003
【図２】
2009129013.tif 000004
【図３】
2009129013.tif 000005
【図４】
2009129013.tif 000006
【図５】
2009129013.tif 000007
【図６】
2009129013.tif 000008
【図７】
2009129013.tif 000009
【図８】
2009129013.tif 000010
【図９】
2009129013.tif 000011
【図１０】
2009129013.tif 000012