以下、図面を参照して、本発明の各実施形態について説明する。
[第1の実施形態]
まず、図1及び図2を参照して、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態に係る構造化データ検索装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10及び外部記憶装置20は、構造化データ検索装置30を構成する。
図2は、図1に示す構造化データ検索装置30の主として機能構成を示すブロック図である。
図2に示すように、構造化データ検索装置30は、検索ターム入力部31、検索項目抽出部32、ノード間距離処理部33、検索項目組み合わせ処理部34、検索候補表示処理部35及び検索実行部36を含む。本実施形態において、これらの各部31乃至36は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、構造化データ検索装置30は、データ格納部22を含む。本実施形態において、データ格納部22は、例えば外部記憶装置20に格納される。
データ格納部22には、構造化データ検索装置30による検索の対象となる構造化データが格納される。この構造化データの代表としては、XML(eXtensible Markup Language)形式で記述されたXMLデータがある。
データ格納部22には、例えばユーザによって指定される検索タームに対応付けて当該検索タームに関係する検索項目を含む検索項目関係情報が格納される。この検索項目は、例えばデータ格納部22に格納される構造化データのタグ名を含む。また、この検索項目関係情報には、検索ターム及び検索項目に対応付けてスコアが含まれる。なお、1つの検索タームに対応付けて複数の検索項目が検索項目関係情報に含まれていても構わない。
また、データ格納部22には、当該データ格納部22に格納されている構造化データの構造(階層構造)を示す構造情報が格納される。この構造情報には、複数の検索項目(ノード)が含まれる。
検索ターム入力部31は、ユーザによって指定された複数の検索タームを入力する。この検索タームは、例えば「佐藤」のような文字列を含む。以下、検索ターム入力部31は、2つの検索ターム(第1及び第2の検索ターム)を入力するものとして説明する。
検索項目抽出部32は、検索ターム入力部31によって入力された第1の検索タームに対応付けて検索項目関係情報に含まれる検索項目(第1の検索項目)を取得(抽出)する。また、検索項目抽出部32は、検索ターム入力部31によって入力された第2の検索タームに対応付けて検索項目関係情報に含まれる検索項目(第2の検索項目)を取得する。検索項目抽出部32は、データ格納部22を参照して取得処理を実行する。
なお、上記したように検索タームに対応付けて複数の検索項目が検索項目関係情報に含まれている場合には、当該検索項目に対応付けて検索項目関係情報に含まれるスコア順(スコアが高い順)に当該複数の検索項目が取得される。
ノード間距離処理部33は、データ格納部22に格納されている構造情報によって示される構造化データの構造における、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目のノード間の距離(ノード間距離)を示すノード間距離情報を取得(抽出)する。なお、各検索項目のノード間距離は、構造化データにおける関係の強弱を表しているため、当該ノード間距離が短いほど当該検索項目の組み合わせの関係が強いものとして扱うものとする。
また、上記したように検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目がそれぞれ複数存在する場合には、ノード間距離処理部33は、当該第1の検索項目及び第2の検索項目の組み合わせの全てについてノード間距離情報を取得する。具体的には、例えば第1の検索項目が「A」及び「B」であり、第2の検索項目が「C」及び「D」であるものとする。この場合、ノード間距離処理部33は、第1の検索項目「A」及び第2の検索項目「C」のノード間距離、第1の検索項目「A」及び第2の検索項目「D」のノード間距離、第1の検索項目「B」及び第2の検索項目「C」のノード間距離、第1の検索項目「B」及び第2の検索項目「D」のノード間距離の各々を示すノード間距離情報を取得する。
なお、ノード間距離を示すノード間距離情報の取得処理の詳細については、後述する。
検索項目組み合わせ処理部34は、ノード間距離処理部33によって取得されたノード間距離情報によって示されるノード間距離が短い順(候補順)に、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせを組み合わせ候補として特定(生成)する。このとき、検索項目組み合わせ処理部34は、複数の組み合わせ候補を特定しても構わない。なお、ノード間距離が同一の場合には、検索項目関係情報において第1の検索項目及び第2の検索項目に対応付けられているスコアに基づいて候補順が決定される。
検索候補表示処理部35は、検索項目組み合わせ処理部34によって特定された組み合わせ候補(第1の検索項目及び第2の検索項目の組み合わせ)を候補順にユーザに対して提示(表示)する。
また、検索候補表示処理部35は、ユーザに対して提示された組み合わせ候補のうち、ユーザによって指定された組み合わせ候補(を示す情報)を取得する。このとき、ユーザは、例えば画面に表示された複数の組み合わせ候補群から1つを当該画面上で指定(選択)することができる。
検索実行部36は、検索候補表示処理部35によって取得された組み合わせ候補(ユーザによって指定された組み合わせ候補)に基づいて、構造化データを検索するための検索式、例えばXQuery式を生成する。
検索実行部36は、生成された検索式に合致する構造化データを、データ格納部22から検索する。検索実行部36によって検索された構造化データは、例えば検索候補表示処理部36を介してユーザに対して提示される。
図3は、図2に示すデータ格納部22に格納される検索項目関係情報のデータ構造の一例を示す。
図3に示すように、検索項目関係情報には、検索ターム、検索項目及びスコアが対応付けて含まれる。図3に示す例では、1つの検索タームに対応付けて2つの検索項目が検索項目関係情報に含まれている。この2つの検索項目は、当該検索項目のスコア順に検索項目関係情報に含まれている。
検索タームは、ユーザによって指定される例えば文字列である。検索項目は、構造化データの構造及びタグ名を示す。また、スコアは、検索ターム及び検索項目の対応の強さを表す値である。
図3に示す例では、データ格納部22には、検索項目関係情報221及び222が格納されている。
検索項目関係情報221には、検索ターム「佐藤」に対応付けて検索項目としてPathである「/○○○/業種/設計人/会社」及びスコア「50」が含まれている。同様に、検索項目関係情報221には、検索ターム「佐藤」に対応付けて検索項目「/○○○/業種/設計人」及びスコア「40」が含まれている。これによれば、検索ターム「佐藤」に関係する検索項目は、「/○○○/業種/設計人/会社」及び「/○○○/業種/設計人」であり、当該検索項目のスコアはそれぞれ「50」及び「40」である旨が示されている。
また、検索項目関係情報222には、検索ターム「建設」に対応付けて検索項目「/○○○/業種」及びスコア「50」が含まれている。同様に、検索項目関係情報222には、検索ターム「建設」に対応付けて検索項目「○○○/業種/設計人/会社/部/課」及びスコア「30」が含まれている。これによれば、検索ターム「建設」に関係する検索項目は、「/○○○/業種」及び「○○○/業種/設計人/会社/部/課」であり、当該検索項目のスコアはそれぞれ「50」及び「30」である旨が示されている。
次に、図4のフローチャートを参照して、本実施形態に係る構造化データ検索装置30の処理手順について説明する。なお、データ格納部22に格納される検索項目関係情報は、上記した図3に示す検索項目関係情報221及び222であるものとする。
まず、検索ターム入力部31は、ユーザによって指定された複数の検索タームを入力する(ステップS1)。ここでは、ユーザによって指定された複数の検索タームは、2つであるものとする。また、この2つの検索タームは、それぞれ「佐藤」(第1の検索ターム)及び「建設」(第2の検索ターム)であるものとして説明する。
次に、検索項目抽出部32は、検索ターム入力部31によって入力された2つの検索ターム(「佐藤」及び「建設」)に対応付けて検索項目関係情報に含まれる検索項目をスコア順に取得する(ステップS2)。
ここでは、検索項目抽出部32は、検索ターム「佐藤」に対応付けて検索項目関係情報221に含まれる検索項目「/○○○/業種/設計人/会社」及び「/○○○/業種/設計人」(第1の検索項目)を取得する。また、検索項目抽出部32は、検索ターム「建設」に対応付けて検索項目関係情報222に含まれる検索項目「/○○○/業種」及び「/○○○/業種/設計人/会社/部/課」(第2の検索項目)を取得する。
検索項目組み合わせ処理部34は、検索項目抽出部32によって取得された第1の検索項目(「/○○○/業種/設計人/会社」及び「/○○○/業種/設計人」)及び第2の検索項目(「/○○○/業種」及び「/○○○/業種/設計人/会社/部/課」)をノード間距離処理部33に渡す。
ノード間距離処理部33は、検索項目組み合わせ処理部34から渡された第1の検索項目及び第2の検索項目を取得する。
ノード間距離処理部33は、データ格納部22に格納されている構造情報に基づいて、取得された第1の検索項目及び第2の検索項目のノード間距離を示すノード間距離情報を取得する。
なお、本実施形態においてノード間距離を用いるのは、近くにあるノードの方が遠くにあるノードよりも関連性(凝集性)が高いためである。具体的には、文書データにおいて、同一の段落内に存在する2つのデータは、異なる段落に存在する2つのデータよりも関連性は高いと考えられるためである。
以下、ノード間距離処理部33によるノード間距離情報の取得処理について具体的に説明する。
まず、ノード間距離処理部33は、取得された第1の検索項目及び第2の検索項目の全ての組み合わせをリストアップする。
ノード間距離は、検索項目の最後のタグ名に基づいて取得される。例えば第1の検索項目「/○○○/業種/設計人/会社」と第2の検索項目「/○○○/業種」とのノード間距離は、「会社」及び「業種」に基づいて取得される。つまり、ノード間距離処理部33は、第1の検索項目及び第2の検索項目の最後のタグについて全ての組み合わせをリストアップする。
これにより、ノード間距離処理部33は、第1の検索項目及び第2の検索項目の組み合わせとして、以下に示す第1〜第4の組み合わせをリストアップする。
第1の組み合わせは、第1の検索項目「/○○○/業種/設計人/会社」及び第2の検索項目「/○○○/業種」から、「会社」及び「業種」である。
第2の組み合わせは、第1の検索項目「/○○○/業種/設計人/会社」及び第2の検索項目「/○○○/業種/設計人/会社/部/課」から、「会社」及び「課」である。
第3の組み合わせは、第1の検索項目「/○○○/業種/設計人」及び第2の検索項目「/○○○/業種」から、「設計人」及び「業種」である。
第4の組み合わせは、第1の検索項目「/○○○/業種/設計人」及び第2の検索項目「/○○○/業種/設計人/会社/部/課」から、「設計人」及び「課」である。
ノード間距離処理部33は、上記した第1〜第4の組み合わせの各々についてノード間距離(ノード間距離情報)を取得する。
ここで、図5及び図6は、ノード間距離情報の取得に用いられる構造情報の一例を示す。図5は、データ格納部22に格納されている構造化データの構造(つまり、構造情報)の一例を示す。図6は、図5に示す構造化データの構造を表す図(構造図)の一例を示す。なお、データ格納部22に格納されている構造化データの構造は、図5及び図6に示す構造に統一されているものとする。
ノード間距離処理部33は、図5及び図6に示す構造情報に照らし合わせて第1〜第4の組み合わせについてノード間距離を取得する。
なお、ノード間距離の取得方法は、例えば予め設定された法則に従って取得される。ここでは、基本的な法則の一例について説明する。ノード間距離の取得における法則には、例えば第1〜第3の法則が含まれる。なお、以下に説明する第1〜第3の法則は一例であるため、当該第1〜第3の法則以外の法則に従ってノード間距離が取得されても構わない。
第1の法則は、構造化データの構造において、あるノードから親ノードへのノード間距離を1とするものである。図5及び図6に示す例では、例えば「設計人」から「業種」へのノード間距離は1である。
第2の法則は、構造化データの構造において、あるノードから子ノードへのノード間距離を1とするものである。図5及び図6に示す例では、例えば「設計人」から「会社」へのノード間距離は1である。
第3の法則は、構造化データの構造において、あるノードから兄弟ノードへのノード間距離を1とするものである。図5及び図6に示す例では、例えば「設計人」から「発注人」へのノード間距離は1である。
以上の第1〜第3の法則によって上記した第1〜第4の組み合わせ毎にノード間距離を取得すると、第1の組み合わせにおけるノード間距離として2、第2の組み合わせにおけるノード間距離として2、第3の組み合わせにおけるノード間距離として1、第4の組み合わせにおけるノード間距離として3が取得される。
これにより、ノード間距離処理部33は、第1の組み合わせにおけるノード間距離「2」を示すノード間距離情報、第2の組み合わせにおけるノード間距離「2」を示すノード間距離情報、第3の組み合わせにおけるノード間距離「1」を示すノード間距離情報及び第4の組み合わせにおけるノード間距離「3」を示すノード間距離情報を検索項目組み合わせ処理部34に渡す。
再び図4に戻ると、検索項目組み合わせ処理部34は、ノード間距離処理部33から渡されたノード間距離情報によって示されるノード間距離が短い第1の検索項目及び第2の検索項目の組み合わせを組み合わせ候補として特定する(ステップS4)。このとき、検索項目組み合わせ処理部34は、ノード間距離が短い順に予め定められた数の組み合わせを組み合わせ候補として特定する。また、検索項目組み合わせ処理部34は、ノード間距離が短い順を組み合わせ候補の候補順とする。
ここでは、検索項目組み合わせ処理部34は、ノード間距離処理部33によって取得されたノード間距離情報に基づいて、以下のように上記した第1〜第4の組み合わせを組み合わせ候補として特定するものとする。
検索項目組み合わせ処理部34は、ノード間距離が最も短い(ノード間距離「1」)組み合わせは上記した第3の組み合わせであるため、第1の検索項目「/○○○/業種/設計人」及び第2の検索項目「/○○○/業種」の組み合わせを候補順が1番(最上位)の組み合わせ候補として特定する。
ここで、ノード間距離が2番目に短い(ノード間距離「2」)組み合わせは第1の組み合わせ及び第2の組み合わせである。しかしながら、データ格納部22に格納されている検索項目関係情報において、第1の組み合わせの検索項目に対応付けられているスコアの方が第2の組み合わせの検索項目に対応付けられているスコアよりも高い。
このため、検索項目組み合わせ処理部34は、上記した第1の組み合わせに基づいて、第1の検索項目「/○○○/業種/設計人/会社」及び第2の検索項目「/○○○/業種」の組み合わせを候補順が2番目の組み合わせ候補として特定する。
また、検索項目組み合わせ処理部34は、上記した第2の組み合わせに基づいて、第1の検索項目「/○○○/業種/設計人/会社」及び第2の検索項目「/○○○/業種/設計人/会社/部/課」の組み合わせを候補順が3番目の組み合わせ候補として特定する。
更に、検索項目組み合わせ処理部34は、ノード間距離が最も長い(ノード間距離「3」)組み合わせは上記した第4の組み合わせであるため、第1の検索項目「/○○○/業種/設計人」及び第2の検索項目「/○○○/業種/設計人/会社/部/課」の組み合わせを候補順が4番目(最下位)の組み合わせ候補として特定する。
次に、検索候補表示処理部35は、検索項目組み合わせ処理部34によって特定された組み合わせ候補をユーザに対して提示する(ステップS5)。
ここでは、上記した第1〜第4の組み合わせが組み合わせ候補として候補順にユーザに対して提示されたものとする。この場合、組み合わせ候補が提示されたユーザは、第1〜第4の組み合わせ候補(第1〜第4の組み合わせ)のうち、当該ユーザにとって所望の検索結果を得ることができるような組み合わせ候補を指定(選択)することができる。
検索候補表示処理部35は、ユーザによって指定された組み合わせ候補(を示す情報)を取得する。検索候補表示処理部35は、取得された組み合わせ候補を検索実行部36に渡す。ここでは、ユーザによって指定された組み合わせ候補は、候補順が最上位である第3の組み合わせ候補であるものとする。
次に、検索実行部36は、ユーザによって指定された第3の組み合わせ候補(検索候補表示処理部35から渡された組み合わせ候補)から検索式を生成する(ステップS6)。この検索式は、データ格納部22に格納されている構造化データを検索するための構造化検索式であり、例えばXQuery式である。
検索実行部36は、生成された検索式に合致する構造化データをデータ格納部22から検索(キーバリュー検索)する(ステップS7)。
この場合、ユーザによって指定された第3の組み合わせ候補は、第1の検索項目「/○○○/業種/設計人」及び第2の検索項目「/○○○/業種」の組み合わせであるため、「設計人」タグの値として第1の検索タームである「佐藤」を含み、かつ、「業種」タグの値として第2の検索タームである「建設」を含む構造化データが検索結果としてデータ格納部22から検索される。
検索実行部36は、例えば検索候補表示処理部35を介して検索結果をユーザに対して提示する(ステップS8)。
ここで、検索結果が提示されたユーザは、当該検索結果が当該ユーザにとって所望の結果であるか否かを判断し、所望の結果でないと判断された場合には構造化データ検索装置30に対して再検索を指示することができる。
ユーザにより再検索が指示された場合(ステップS9のYES)、ステップS5に戻って処理が繰り返される。一方、ユーザにより再検索が指示されない、つまり、ユーザにとって所望の結果が得られたと当該ユーザによって判断された場合には、処理は終了される。
ここでは、上記したステップS4において第1〜第4の組み合わせが組み合わせ候補として特定された場合には、当該各組み合わせ候補(第1〜第4の組み合わせ)が候補順にユーザに対して提示され、当該ユーザによって指定された組み合わせ候補に基づいて検索式が生成されるものとして説明したが、当該ステップS4において特定された組み合わせ候補(第1〜第4の組み合わせ)のうち、最も候補順が高い組み合わせ候補(第3の組み合わせ)に基づいて検索式が自動的に生成される構成であっても構わない。
なお、最も候補順が高い組み合わせ候補に基づいて検索式が自動的に生成されるか、もしくは、上記したように組み合わせ候補をユーザに提示し、当該ユーザによって指定された組み合わせ候補に基づいて検索式が生成されるかについては、例えば構造化データ検索装置30における設定において変更可能である。
上記したように本実施形態においては、ユーザによって指定された複数の検索ターム(第1及び第2の検索ターム)の各々に対応付けて検索項目関係情報に含まれる検索項目(第1及び第2の検索項目)のノード間距離(情報)を取得し、当該ノード間距離に基づいて当該第1及び第2の検索タームにおける適切な検索項目の組み合わせを組み合わせ候補として特定し、当該組み合わせ候補に基づいて検索式を生成することが可能となる。これにより、検索項目を指定することなく複数の検索タームを入力して検索を行なう場合においても、より適切な検索式を用いて検索を実行することができるため、検索精度を向上させることが可能となる。
また、本実施形態においては、取得されたノード間距離に基づいて特定された組み合わせ候補をユーザに対して提示し、当該ユーザに所望の検索結果を得ることができるような組み合わせ候補を指定させることで、より適切な検索式を生成し、検索精度を向上させることができる。
なお、本実施形態においては、ユーザによって指定される検索タームが2つである場合について主に説明したが、当該検索ターム数がn(nは3以上の整数)である場合におけるノード間距離については、例えば平均ノード間距離を用いることが可能である。この平均ノード間距離は、具体的には、(各ノード間距離の和)*2/n(n−1)により取得される。したがって、検索ターム数がnの場合には、この平均ノード間距離を用いて検索項目の組み合わせ候補が特定され、当該組み合わせ候補に基づいて検索式が生成される。
[第2の実施形態]
次に、図7及び図8を参照して、本発明の第2の実施形態について説明する。なお、本実施形態に係る構造化データ検索装置の構成は、前述した第1の実施形態に係る構造化データ検索装置30と同様であるため、適宜、図2を用いて説明する。
本実施形態においては、検索項目組み合わせ処理部34によって特定された組み合わせ候補の情報(以下、組み合わせ関係情報と表記)をデータ格納部22に格納し、当該組み合わせ関係情報を次回の検索以降に利用する点が、前述した第1の実施形態とは異なる。以下、前述した第1の実施形態と異なる部分について主に述べる。
検索項目組み合わせ処理部34は、ノード間距離処理部33によって取得されたノード間距離情報によって示されるノード間距離が短い順(候補順)に、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせを組み合わせ候補として特定する。このとき、検索項目組み合わせ処理部34は、特定された組み合わせ候補を示す組み合わせ関係情報をデータ格納部22に格納する。この組み合わせ情報には、特定された組み合わせ候補の検索項目(第1の検索項目及び第2の検索項目の組み合わせ)及びスコアが含まれる。
上記したように組み合わせ関係情報がデータ格納部22に格納される際、当該組み合わせ関係情報に含まれるスコアには、当該組み合わせ関係情報に含まれる組み合わせ候補の検索項目のノード間距離に応じた値が設定される。
また、検索項目組み合わせ処理部34は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせが、データ格納部22に格納されている組み合わせ関係情報によって示される組み合わせ候補であるか否かを判定する。検索項目組み合わせ処理部34は、データ格納部22に格納されている組み合わせ関係情報によって示される組み合わせ候補であると判定された場合、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせを組み合わせ候補として特定する。
ここで、図7は、上記した本実施形態に係る構造化データ検索装置30のデータ格納部22に格納される組み合わせ関係情報のデータ構造の一例を示す。図7に示すように、組み合わせ関係情報には、検索項目A、検索項目B及びスコアが含まれる。
ここで、検索項目Aは、上記した検索項目組み合わせ処理部34によって特定された組み合わせ候補の検索項目のうち、一方の検索項目(例えば、第1の検索項目)を示す。また、検索項目Bは、検索項目組み合わせ処理部34によって特定された組み合わせ候補の検索項目のうち、検索項目Aによって示される検索項目とは異なる検索項目(例えば、第2の検索項目)を示す。
また、スコアは、検索項目A及び検索項目Bの各々によって示される検索項目の対応の強さを表す値である。つまり、スコアは、検索項目Aによって示される検索項目及び検索項目Bによって示される検索項目のノード間距離に相当する。
図7に示す例では、データ格納部22には、組み合わせ関係情報223〜226が格納されている。
組み合わせ関係情報223には、検索項目A「/○○○/業種/設計人」、検索項目B「/○○○/業種」及びスコア「50」が含まれている。
組み合わせ関係情報224には、検索項目A「/○○○/業種/設計人」、検索項目B「/○○○/業種/設計人/会社/部/課」及びスコア「20」が含まれている。
組み合わせ関係情報225には、検索項目A「/○○○/業種/設計人/会社」、検索項目B「/○○○/業種」及びスコア「30」が含まれている。
組み合わせ関係情報226には、検索項目A「/○○○/業種/設計人/会社」、検索項目B「/○○○/業種/設計人/会社/部/課」及びスコア「30」が含まれている。
次に、図8に示すフローチャートを参照して、本実施形態に係る構造化データ検索装置30の処理手順について説明する。なお、データ格納部22には、既に組み合わせ関係情報、例えば組み合わせ関係情報223〜226が格納されているものとする。
まず、前述した図4に示すステップS1及びステップS2の処理に相当するステップS11及びステップS12の処理が実行される。
次に、検索項目組み合わせ処理部34は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせが、データ格納部22に格納されている組み合わせ関係情報によって示される組み合わせ候補であるか否かを判定する(ステップS13)。この場合、第1の検索項目及び第2の検索項目の全ての組み合わせについて判定処理が実行される。
組み合わせ関係情報によって示される組み合わせ候補であると判定された場合(ステップS13のYES)、検索項目組み合わせ処理部34は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の組み合わせ(当該組み合わせ関係情報によって示される組み合わせ候補)を組み合わせ候補として特定する(ステップS14)。このとき、検索項目組み合わせ処理部34は、組み合わせ候補に対応付けて組み合わせ関係情報に含まれるスコアを取得する。
一方、組み合わせ関係情報によって示される組み合わせ候補でないと判定された場合(ステップS13のNO)、前述した図4に示すステップS3及びステップS4の処理に相当するステップS15及びステップS16の処理が実行される。
次に、検索項目組み合わせ処理部34は、ステップS16の処理において特定された組み合わせ候補を示す組み合わせ関係情報をデータ格納部22に格納する(ステップS17)。このとき、検索項目組み合わせ処理部34は、取得されたノード間距離情報によって示されるノード間距離を、当該ノード間距離に応じたスコアに変換する。例えばノード間距離が「1」である場合には、当該ノード間距離はスコア「50」に変換される。同様に、ノード間距離が「2」の場合はスコア「30」、ノード間距離が「3」の場合はスコア「20」に変換される。
検索項目組み合わせ処理部34は、変換されたスコアを含む組み合わせ関係情報をデータ格納部22に格納する。
上記したように第1の検索項目及び第2の検索項目の全ての組み合わせについてステップS13の判定処理が実行されるため、当該組み合わせ毎に、ステップS14の処理またはステップS15〜ステップS17の処理いずれかが実行される。
検索候補表示処理部35は、ステップS14において特定された組み合わせ候補及びステップS16において特定された組み合わせ候補をユーザに対して提示する(ステップS18)。このとき、検索候補表示処理部35は、検索項目組み合わせ処理部34によって取得されたスコア(つまり、ステップS14において特定された組み合わせ候補のスコア)または変換されたスコア(つまり、ステップS16において特定された組み合わせ候補のスコア)の順に組み合わせ候補を提示する。
以下、前述した図4に示すステップS6〜ステップS9の処理に相当するステップS19〜ステップS22の処理が実行される。なお、ステップS22においてユーザにより再検索が指示された場合にはステップS18に戻って処理が繰り返される。
上記したように本実施形態においては、検索項目組み合わせ処理部34によって組み合わせ候補が特定された場合に、当該組み合わせ候補を示す組み合わせ関係情報がデータ格納部22に格納される。これにより、本実施形態においては、次回検索が行われる際に、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目が組み合わせ関係情報によって示される組み合わせ候補である場合には、当該第1の検索項目及び第2の検索項目を組み合わせ候補として以降の処理が実行される。つまり、この場合には、ノード間距離処理部33によるノード間距離(ノード間距離情報)の取得処理を行う必要がない。
したがって、本実施形態においては、組み合わせ関係情報(組み合わせ候補の過去情報)に応じてノード間距離処理部33の動作を省略することが可能となるので、前述した第1の実施形態と比較して、構造化データ検索装置30の処理量を軽減することが可能となる。
[第3の実施形態]
次に、図9を参照して、本発明の第3の実施形態について説明する。図9は、本実施形態に係る構造化データ検索装置の主として機能構成を示すブロック図である。なお、前述した図2と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図2と異なる部分について主に述べる。
また、本実施形態に係る構造化データ検索装置のハードウェア構成は、前述した第1の実施形態と同様であるため、適宜、図1を用いて説明する。
図9に示すように、構造化データ検索装置100は、検索データ処理部101を含む。なお、検索データ処理部101以外の各部31〜36及びデータ格納部22については、前述した第2の実施形態と同様である。
本実施形態において、検索データ処理部101は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。
検索データ処理部101は、検索候補表示処理部35によって取得された組み合わせ候補(ユーザに対して提示された複数の組み合わせ候補群のうち、当該ユーザによって指定された組み合わせ候補)に基づいて、データ格納部22に格納されている組み合わせ関係情報を補正する。この組み合わせ関係情報は、前述した第2の実施形態における組み合わせ関係情報と同様であるため、その詳しい説明を省略する。
検索データ処理部101は、検索候補表示処理部35によって取得された組み合わせ候補を示す組み合わせ関係情報に含まれるスコア(の値)を補正する。次回の検索以降では、補正されたスコアを用いて処理が実行される。
次に、図10のフローチャートを参照して、本実施形態に係る構造化データ検索装置100の処理手順について説明する。なお、データ格納部22には、前述した図7に示す組み合わせ情報223〜226のような組み合わせ情報が格納されているものとする。
まず、前述した図8に示すステップS11〜ステップS18の処理に相当するステップS31〜ステップS38の処理が実行される。
ステップS38の処理が実行されると、検索候補表示処理部35は、ユーザに対して提示された組み合わせ候補群のうち、当該ユーザによって指定された組み合わせ候補を取得する。
次に、検索データ処理部101は、検索候補表示処理部35によって取得された組み合わせ候補に基づいて、データ格納部22に格納されている組み合わせ関係情報を補正する(ステップS39)。この組み合わせ関係情報は、前述した第2の実施形態と同様に、検索項目組み合わせ処理部34によって特定された組み合わせ候補を示す情報である。また、組み合わせ関係情報には、スコアが含まれる。
この場合、検索データ処理部101は、検索候補表示処理部35によって取得された組み合わせ候補を示す組み合わせ関係情報を取得する。検索データ処理部101は、取得された組み合わせ関係情報に含まれるスコアの値を補正する。
検索データ処理部101は、取得された組み合わせ関係情報に含まれるスコアの値を、データ格納部22に格納されている他の組み合わせ関係情報(に含まれるスコア)よりも高くする。
具体的には、ステップS36において、前述した図7に示す組み合わせ関係情報223によって示される組み合わせ候補(「/○○○/業種/設計人」及び「/○○○/業種」の組み合わせ候補)、組み合わせ関係情報224によって示される組み合わせ候補(「/○○○/業種/設計人」及び「/○○○/業種/設計人/会社/部/課」の組み合わせ候補)、組み合わせ関係情報225によって示される組み合わせ候補(「/○○○/業種/設計人/会社」及び「/○○○/業種」の組み合わせ候補)、組み合わせ関係情報226によって示される組み合わせ候補(「/○○○/業種/設計人/会社」及び「/○○○/業種/設計人/会社/部/課」の組み合わせ候補)を含む複数の組み合わせ候補がユーザに対して提示されたものとする。
ここで、ユーザによって組み合わせ関係情報225によって示される組み合わせ候補が指定された場合を想定する。この場合、組み合わせ関係情報225に含まれるスコアの値を、例えば30から60に補正する。つまり、他の組み合わせ関係情報223、224及び226に含まれるスコアの値よりも高くする。
これにより、次回の検索においては、組み合わせ関係情報225によって示される組み合わせ候補が他の組み合わせ関係情報によって示される組み合わせ候補より上位の候補順となる。
上記したように組み合わせ関係情報が補正されると、検索データ処理部101は、スコアの値が補正された組み合わせ関係情報をデータ格納部22に格納する。
次に、前述した図8に示すステップS19〜ステップS22の処理に相当するステップS40〜ステップS43の処理が実行される。
ステップS43においてユーザにより再検索が指示された場合、ステップS38に戻って処理が繰り返される。
なお、ユーザにより再検索が指示される場合とは検索結果がユーザにとって所望の結果でない場合である。したがって、ステップS43においてユーザにより再検索が指示された場合には、上記ステップS39において補正された組み合わせ関係情報に含まれるスコアの値を補正前の値に戻す処理が実行される構成であっても構わない。
上記したように本実施形態においては、ユーザによって指定された組み合わせ候補に基づいて、組み合わせ関係情報に含まれるスコアの値が自動的に補正される。これにより、本実施形態においては、前述したように例えば最も候補順が高い組み合わせ候補に基づいて検索式が自動的に生成されるように構造化データ検索装置100において設定されている場合であっても、上記した補正によりユーザによって指定された組み合わせ候補を示す組み合わせ関係情報に含まれるスコアの値が高くなるため、当該ユーザの意図する組み合わせ候補が優先的に用いられることになる。したがって、本実施形態においては、ユーザの意図を反映した組み合わせ候補に基づいて生成された検索式を用いて検索が実行されるため、検索精度を向上させることが可能となる。
[第4の実施形態]
次に、本発明の第4の実施形態について説明する。なお、本実施形態に係る構造化データ検索装置の構成は、前述した第1の実施形態に係る構造化データ検索装置30と同様であるため、適宜、図2を用いて説明する。
本実施形態においては、構造化データ検索装置30に含まれるノード間距離処理部33によって取得されるノード間距離(情報)において構造化データ(XMLデータ)の要素及び属性を考慮する点が、前述した第1の実施形態とは異なる。つまり、本実施形態においては、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目が構造化データの構造における要素に対応するかまたは属性に対応するかに基づいてノード間距離が取得される。
以下、本実施形態に係る構造化データ検索装置30に含まれるノード間距離処理部33におけるノード間距離の取得処理について説明する。
本実施形態において、構造化データの要素及び属性を考慮する場合、ノード間距離の取得における予め設定された法則には、前述した第1〜第3の法則に加えて、第4及び第5の法則が含まれる。なお、以下に説明する第4及び第5の法則は一例であるため、当該第4及び第5の法則以外の法則に従ってノード間距離が取得されても構わない。
第4の法則は、構造化データの構造において、ある要素から同一のタグ内に存在する属性へのノード間距離を0.5とするものである。つまり、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の一方が要素に対応するものであり、他方が当該要素と同一のタグ内の属性(当該要素に付加された属性)に対応するものである場合には、当該第1の検索項目及び第2の検索項目のノード間距離は0.5となる。
第5の法則は、構造化データの構造において、ある属性から同一のタグ内に存在する属性へのノード間距離を0.5とするものである。つまり、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目が同一のタグ内に存在する属性に対応するものである場合には、当該第1の検索項目及び第2の検索項目のノード間距離は0.5となる。
なお、同一のタグ内に存在する属性間におけるノード間距離であっても、例えば当該同一のタグ内に当該2つの属性以外の属性が存在する場合には、当該属性以外の属性の数毎に予め設定された値(例えば、0.1)が0.5(デフォルト値)に加算されるものとする。具体的には、同一のタグ内に、属性に対応する第1の検索項目及び第2の検索項目以外の属性が1つ存在する場合には、当該第1の検索項目及び第2の検索項目のノード間距離は0.6(=0.5+0.1)となる。つまり、同一のタグ内に第1の検索項目及び第2の検索項目以外の属性の数が多いほど、当該第1の検索項目及び第2の検索項目のノード間距離は長くなる。
ところで、上記第4及び第5の法則におけるノード間距離が同一であるのは、前述した第1〜第3の法則により親子のノード間距離と兄弟のノード間距離が同一であり、要素及び属性が親子、属性同士が兄弟の関係とみなすことができることに基づく。したがって、第3の法則におけるノード間距離が第1及び2の法則におけるノード間距離の例えば1.5倍である場合には、第5の法則によるノード間距離も第4の法則によるノード間距離の1.5倍となる。
なお、第1の検索項目及び第2の検索項目の両方が要素に対応するものである場合には、前述した第1の実施形態と同様にして、ノード間距離が取得される。
ここで、図11を参照して、本実施形態における構造化データの要素及び属性を考慮した場合のノード間距離について具体的に説明する。図11は、前述した図5に示す構造化データの構造における要素「会社」には属性1〜3が指定(付加)されており、要素「部」には属性4及び5が指定されている構造化データの構造を示す。
まず、例えば「業種」及び「属性1」のノード間距離について説明する。この場合、前述した第2の法則により「業種」及び「会社」のノード間距離が2、第4の法則により「会社」及び「属性1」のノード間距離が0.5であるため、「業種」及び「属性1」のノード間距離は2.5となる。
次に、例えば「属性1」及び「属性2」のノード間距離について説明する。この場合、「会社」タグには「属性1」及び「属性2」以外に「属性3」が存在するため、第5の法則により「属性1」及び「属性2」のノード間距離は0.6となる。
また、例えば「属性4」及び「属性5」のノード間距離について説明する。この場合、要素「部」のタグには「属性4」及び「属性5」以外の属性は存在しないため、第5の法則により「属性4」及び「属性5」のノード間距離は0.5となる。
本実施形態においては、上記したように構造化データの要素及び属性を考慮して第1の検索項目及び第2の検索項目のノード間距離が取得される。
なお、本実施形態は、前述した第2及び第3の実施形態にも適用可能であるが、この場合、上記したように取得されたノード間距離は、前述したように当該ノード間距離に応じたスコアに変換されて用いられることになる。
なお、上記したノード間距離の取得処理以外の処理については、前述した第1の実施形態と同様あるため、その詳しい説明を省略する。
上記したように本実施形態においては、第1の検索項目及び第2の検索項目が構造化データにおける要素及び属性に対応するものである旨を考慮してノード間距離を取得することができる。これにより、本実施形態においては、前述した第1の実施形態等と比較して、正確なノード間距離を取得することができるため、より検索精度を向上させることが可能となる。
[第5の実施形態]
次に、図12を参照して、本発明の第5の実施形態について説明する。図12は、本実施形態に係る構造化データ検索装置の主として機能構成を示すブロック図である。なお、前述した図2及び図9と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図2及び図9と異なる部分について主に述べる。
また、本実施形態に係る構造化データ検索装置のハードウェア構成は、前述した第1の実施形態と同様であるため、適宜、図1を用いて説明する。
前述した第1〜第4の実施形態においてはデータ格納部22に格納されている構造化データの構造(スキーマ)は統一されている場合を想定していたが、本実施形態においては、データ格納部22に格納されている構造化データにおいて異種のスキーマが存在する場合を想定している。つまり、本実施形態においては、データ格納部22に複数のスキーマ(構造)を示す構造情報が格納されている。なお、データ格納部22には、前述した第3の実施形態で説明した組み合わせ関係情報が格納される。
図12に示すように、構造化データ検索装置110は、スキーマ情報判定部111、スキーマ間情報処理部112、同類語処理部113、換算用情報処理部114及び検索項目組み合わせ処理部115を含む。本実施形態において、これら各部111〜115は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。
また、構造化データ検索装置110は、スキーマ間情報格納部23、同類語情報格納部24及び換算用情報格納部25を含む。本実施形態において、スキーマ間情報格納部23、同類語情報格納部24及び換算用情報格納部25は、例えば外部記憶装置20に格納される。
本実施形態におけるデータ格納部22に格納される検索項目関係情報には、検索ターム、当該検索タームに関係する検索項目に対応付けて当該検索項目を含むスキーマ(構造情報によって示される構造)のスキーマ名(構造名)が含まれる。また、データ格納部22に格納される組み合わせ関係情報には、組み合わせ候補の検索項目を含むスキーマのスキーマ名が含まれる。
スキーマ間情報格納部23には、スキーマ間距離情報が格納されている。スキーマ間距離情報は、2つの異なるスキーマ(構造情報によって示される構造)間の距離を示す。このスキーマ間距離情報には、2つの異なるスキーマのスキーマ名(構造名)及び当該スキーマ間の距離(スキーマ間距離)が対応付けて含まれている。また、スキーマ間距離情報には、2つの異なるスキーマ名の各々に対応付けて当該スキーマにおける最近接要素名が含まれている。つまり、スキーマ間距離情報には2つの最近接要素名が含まれる。
この最近接要素名の組み合わせは、スキーマ間距離情報に含まれる2つのスキーマのうちの一方のスキーマの要素名と他方のスキーマの要素名との組み合わせであって最も類似の度合い(後述する類似度)が高い要素名の組み合わせである。
同類語情報格納部24には、同類語情報が格納されている。同類語情報には、互いに類似する2つの単語及び当該2つの単語が類似する度合いを表す類似度が対応付けて含まれる。
換算用情報格納部25には、換算用情報が格納される。この換算用情報は、例えば類似度から換算ノード間距離を算出するために用いられる。換算用情報には、ノード間距離及び類似度が対応付けて含まれる。なお、換算用情報は、構造化データ検索装置110の初期状態においては換算用情報格納部25には格納されておらず、後述するように当該構造化データ検索装置110の処理によって格納される。
スキーマ情報判定部111は、検索項目抽出部32によって取得された情報(第1の検索項目及び第2の検索項目)が、同一のスキーマのみに含まれるか、または異種のスキーマに含まれるか否かを判定する。スキーマ情報判定部111は、データ格納部22に格納されている検索項目関係情報に基づいて判定処理を実行する。
スキーマ間情報処理部112は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目の各々が含まれるスキーマのスキーマ名を含むスキーマ間距離情報がスキーマ間情報格納部23内に存在するか否かを確認する。以下、第1の検索項目が含まれるスキーマを第1のスキーマと称する。また、第2の検索項目が含まれるスキーマを第2のスキーマと称する。
同類語処理部113は、第1のスキーマの要素名及び第2のスキーマの要素名の組み合わせにおいて最も類似度が高い要素名(最近接要素名)の組み合わせ及び当該最近接要素名間の類似度を、同類語情報格納部24から取得する。
換算用情報処理部114は、同一のスキーマ内の要素名に関する類似度(要素名間の類似度)を同類語情報格納部24から取得する。換算用情報処理部114は、この要素名間の距離(ノード間距離)を取得する。換算用情報処理部114は、このスキーマのスキーマ名、取得されたノード間距離及び類似度を対応付けて含む換算用情報を換算用情報格納部25に格納する。
なお、ノード間距離の取得方法は、前述した第1の実施形態におけるノード間距離処理部33と同様であるため、その詳しい説明を省略する。
換算用情報処理部114は、同類語処理部113によって取得された最近接要素名間の類似度に対応する換算ノード間距離を算出する。この換算ノード間距離の算出処理の詳細については後述する。
検索項目組み合わせ処理部115は、スキーマ間情報格納部23に格納されているスキーマ間距離情報または換算用情報処理部114によって算出された換算ノード間距離等に基づいて、検索項目抽出部32によって取得された第1及び第2の検索項目の総合距離を算出する。この総合距離の算出処理の詳細については後述する。
図13は、本実施形態におけるデータ格納部22に格納されている検索項目関係情報のデータ構造の一例を示す。
図13に示すように、検索項目関係情報には、検索ターム、スキーマ名、検索項目及びスコアが対応付けて含まれる。スキーマ名は、検索項目を含むスキーマの名称である。図13に示す例では、1つの検索タームに対応付けて2つの検索項目が検索項目関係情報に含まれている。この2つの検索項目は、当該検索項目のスコア順に検索項目関係情報に含まれている。
図13に示す例では、検索項目関係情報221には、検索ターム「佐藤」に対応付けてスキーマ名「Schema_A」、検索項目「/○○○/業種/設計人/会社」及びスコア「50」が含まれている。また、検索項目関係情報221には、検索ターム「佐藤」に対応付けてスキーマ名「Schema_A」、検索項目「/○○○/業種/設計人」及びスコア「40」が含まれている。これによれば、検索項目「/○○○/業種/設計人/会社」を含むスキーマのスキーマ名が「Schema_A」、検索項目「/○○○/業種/設計人」を含むスキーマのスキーマ名が「Schema_A」であることが示される。
同様に、検索項目関係情報222には、検索ターム「建設」に対応付けてスキーマ名「Schema_B」、検索項目「/○○○/業種」及びスコア「50」が含まれている。また、検索項目関係情報222には、検索ターム「建設」に対応付けてスキーマ名「Schema_A」、検索項目「○○○/業種/設計人/会社/部/課」及びスコア「30」が含まれている。
図14は、本実施形態におけるデータ格納部22に格納される組み合わせ関係情報のデータ構造の一例を示す。
図14に示すように、組み合わせ関係情報には、検索項目A及び検索項目Bのそれぞれに対応付けて当該検索項目を含むスキーマのスキーマ名が含まれている。
図14に示す例では、組み合わせ関係情報223には、スキーマ名「Schema_A」、検索項目A「/○○○/業種/設計人」、スキーマ名「Schema_B」、検索項目B「/○○○/業種」及びスコア「50」が含まれている。これによれば、検索項目A「/○○○/業種/設計人」を含むスキーマのスキーマ名が「Schema_A」であることが示される。また、検索項目B「/○○○/業種」を含むスキーマのスキーマ名が「Schema_B」であることが示される。
また、組み合わせ関係情報224には、スキーマ名「Schema_A」、検索項目A「/○○○/業種/設計人」、スキーマ名「Schema_A」、検索項目B「/○○○/業種/設計人/会社/部/課」及びスコア「20」が含まれている。
組み合わせ関係情報225には、スキーマ名「Schema_A」、検索項目A「/○○○/業種/設計人/会社」、スキーマ名「Schema_B」、検索項目B「/○○○/業種」及びスコア「30」が含まれている。
組み合わせ関係情報226には、スキーマ名「Schema_A」、検索項目A「/○○○/業種/設計人/会社」、スキーマ名「Schema_A」、検索項目B「/○○○/業種/設計人/会社/部/課」及びスコア「30」が含まれている。
図15は、図12に示すスキーマ間情報格納部23に格納されているスキーマ間距離情報のデータ構造の一例を示す。スキーマ間距離情報は、異なる2つのスキーマ(スキーマ1及びスキーマ2)間の距離を示す。図15に示すように、スキーマ間距離情報には、例えばスキーマ1のスキーマ名、スキーマ1の最近接要素名、スキーマ2のスキーマ名、スキーマ2の最近接要素名及び当該スキーマ1とスキーマ2との間の距離(スキーマ間距離)が対応付けて含まれる。
なお、スキーマ1の最近接要素名及びスキーマ2の最近接要素名は、スキーマ1の要素名及びスキーマ2の要素名の組み合わせのうち、最も類似度が高い要素名の組み合わせを示す。
図15に示す例では、スキーマ間距離情報には、スキーマ1のスキーマ名として「Schema_A」、スキーマ1の最近接要素名として「/○○/材料」、スキーマ2のスキーマ名として「Schema_B」、スキーマ2の最近接要素名として「/○○/素材」及びスキーマ間距離「4」が対応付けて含まれている。
同様に、スキーマ間距離情報には、スキーマ1のスキーマ名として「Schema_A」、スキーマ1の最近接要素名として「/○○/材料」、スキーマ2のスキーマ名として「Schema_C」、スキーマ2の最近接要素名として「/○○/物資」及びスキーマ間距離「7」が対応付けて含まれている。
図16は、図12に示す同類語情報格納部25に格納されている同類語情報のデータ構造の一例を示す。図16に示すように、同類語情報には、単語(要素名)1、単語2及び類似度が対応付けて含まれる。
図16に示す例では、同類語情報には、単語1「材料」、単語2「素材」及び類似度「50」が対応付けて含まれている。これによれば、単語1である「材料」及び単語2である「素材」が互いに類似する度合い(つまり、類似度)が「50」であることが示されている。
同様に、同類語情報には、単語1「材料」、単語2「物資」及び類似度「30」が対応付けて含まれている。これによれば、単語1である「材料」及び単語2である「物資」が互いに類似する度合いが「30」であることが示されている。
図17は、図12に示す換算用情報格納部23に格納される換算用情報のデータ構造の一例を示す。この換算用情報は、換算用情報処理部114によって換算用情報格納部25に格納される。
図17に示すように、換算用情報には、スキーマ名、ノード間距離及び類似度が対応付けて含まれている。
図17に示す例では、換算用情報には、スキーマ名「Schema_A」、ノード間距離「5」及び類似度「40」が対応付けて含まれている。
換算用情報には、スキーマ名「Schema_A」、ノード間距離「4」及び類似度「50」が対応付けて含まれている。
換算用情報には、スキーマ名「Schema_A」、ノード間距離「3」及び類似度「60」が対応付けて含まれている。
換算用情報には、スキーマ名「Schema_B」、ノード間距離「5」及び類似度「40」が対応付けて含まれている。
換算用情報には、スキーマ名「Schema_B」、ノード間距離「3」及び類似度「60」が対応付けて含まれている。
次に、図18のフローチャートを参照して、本実施形態に係る構造化データ検索装置110の処理手順について説明する。
まず、前述した図4に示すステップS1及びステップS2(図10に示すステップS31及びステップS32)の処理に相当するステップS51及びステップS52の処理が実行される。なお、ステップS52において第1の検索項目及び第2の検索項目が複数取得された場合には、前述した第1の実施形態等と同様に、その第1の検索項目及び第2の検索項目の組み合わせの全てについて以下に説明するステップS53〜ステップS57の処理が実行される。
次に、スキーマ情報判定部111は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目が同一のスキーマであるか、または異種のスキーマが混ざっているか否かを判定する。つまり、スキーマ情報判定部111は、第1の検索項目が含まれるスキーマ(第1のスキーマ)及び第2の検索項目が含まれるスキーマ(第2のスキーマ)が同一スキーマであるか否かを判定する(ステップS53)。スキーマ情報判定部111は、データ格納部22に格納されている検索項目関係情報に基づいて判定処理を実行する。
具体的には、スキーマ情報判定部111は、データ格納部22に格納されている検索項目関係情報において第1の検索項目に対応付けられているスキーマ名(第1のスキーマ名)及び第2の検索項目に対応付けられているスキーマ名(第2のスキーマ名)が同一である場合には、第1のスキーマ及び第2のスキーマが同一であると判定する。一方、スキーマ情報判定部111は、第1のスキーマ名及び第2のスキーマ名が同一でない場合には、第1のスキーマ及び第2のスキーマが同一でないと判定する。
なお、例えば第1(または第2)のスキーマが複数存在するような場合には、当該複数のスキーマのそれぞれについてステップS53以降の処理が実行される。
同一スキーマであると判定された場合(ステップS53のYES)、前述した図10に示すステップS33以降の処理が実行される。つまり、ステップS53において同一スキーマであると判定された場合には、前述した第3の実施形態と同様の処理が実行される。
一方、同一スキーマでないと判定された場合(ステップS53のNO)、スキーマ間情報処理部112は、第1のスキーマのスキーマ名(第1のスキーマ名)及び第2のスキーマのスキーマ名(第2のスキーマ名)を対応付けて含むスキーマ間距離情報がスキーマ間情報格納部23内に存在する(格納されている)か否かを判定する(ステップS54)。スキーマ間情報格納部23内にスキーマ間距離情報が存在すると判定された場合(ステップS54のYES)、後述するステップS57の処理が実行される。
一方、スキーマ間情報格納部23内にスキーマ間距離情報が存在しないと判定された場合(ステップS54のNO)、同類語処理部113は、対象スキーマ(第1のスキーマ及び第2のスキーマ)における、最近接要素名と当該間の類似度を取得する(ステップS55)。同類語処理部113は、第1のスキーマの要素名及び第2のスキーマの要素名の組み合わせであって最も類似度の高い要素名(最近接要素名)の組み合わせ及び当該最近接要素名間の類似度を、同類語情報格納部24から取得する。
例えば第1のスキーマに要素名「材料」が存在し、第2のスキーマに要素名「素材」及び「物資」が存在する場合を想定する。この場合、同類語情報格納部24に格納されている同類語情報が上記した図15に示す同類語情報であるものとすると、同類語処理部113は、最近接要素名として要素名「材料」及び「素材」(の組み合わせ)を取得し、類似度「50」を取得する。
次に、換算用情報処理部114は、同一スキーマ(例えばSchema_A)内の要素名に関する類似度(要素名間の類似度)及び当該要素名間の距離(ノード間距離)を取得する(ステップS56)。この類似度は、同類語情報格納部24から取得される。また、ノード間距離の取得方法は、前述した第1の実施形態におけるノード間距離処理部33と同様である。
換算用情報処理部114は、このスキーマのスキーマ名、取得された類似度及びノード間距離から換算用情報を生成する。換算用情報処理部114は、スキーマ名、ノード間距離及び類似度を含む換算用情報を換算用情報格納部25に格納する。ここでは、Schema_Aについて説明したが、他の全てのスキーマ(例えばSchema_B及びSchema_C)についても同様にして換算用情報が格納(生成)される。
ステップS56における換算用情報格納処理は、換算用情報格納部25に換算用情報が存在しない場合に実行される。換算用情報が存在しない場合とは、上記したように構造化データ検索装置110が初期状態である場合である。つまり、このステップS56における換算用情報格納処理は、当該構造化データ検索装置110の最初の処理においてのみ行われる。なお、例えばスキーマまたは同類語情報に変更があった場合には、このステップS56における換算用情報格納処理によって新たな換算用情報が格納される。
次に、換算用情報処理部114は、換算用情報格納部25に格納された換算用情報において例えば第1のスキーマ(例えばSchema_A)のスキーマ名に対応付けられている全てのノード間距離及び類似度を取得する。換算用情報処理部114は、取得されたノード間距離及び類似度に対する所定の計算(例えば最小二乗法)により、第1のスキーマにおけるノード間距離及び類似度の対応関係(を表すグラフ等)を算出する。換算用情報処理部114は、算出された第1のスキーマにおけるノード間距離及び類似度の対応関係に基づいて、同類語処理部113によって取得された最近接要素名間の類似度(例えば「50」)に対応するノード間距離(以下、第1のスキーマのノード間距離と表記)を算出する。換算用情報処理部114は、第2のスキーマに対しても同様の処理を実行して、第2のスキーマのノード間距離を算出する。
換算用情報処理部114は、算出された第1のスキーマのノード間距離及び第2のスキーマのノード間距離の平均(例えば「4」)を、同類語処理部113によって取得された最近接要素名間の類似度に対応する換算ノード間距離として算出する(ステップS57)このとき、同類語処理部113は、この算出された換算ノード間距離を一時的に保管しておく。
次に、検索項目組み合わせ処理部115は、検索項目抽出部32によって取得された第1の検索項目及び第2の検索項目における総合距離(情報)を算出する(ステップS58)。
総合距離の算出処理は、上記したステップS54においてスキーマ間情報格納部23内にスキーマ間距離情報が存在しないと判定された場合(ステップS54のNO)とスキーマ間情報格納部23内にスキーマ間距離情報が存在すると判定された場合(ステップS54のYES)とによって処理が異なる。
したがって、ステップS54のNOの場合(つまり、ステップS55及びステップS56の処理が実行された場合)の総合距離の算出処理(以下、第1の算出処理)とステップS54のYESの場合の総合距離の算出処理(以下、第2の算出処理)とに分けて説明する。
まず、第1の算出処理について説明する。第1の算出処理においては、総合距離はノード間距離と上記した換算用情報処理部114によって算出された換算ノード距離を加算することによって算出される。ここで、第1の算出処理におけるノード間距離とは、上記したステップS55において取得された第1のスキーマの最近接要素名及び第1の検索項目の(最後の)要素名(タグ名)の当該第1のスキーマにおけるノード間距離と、上記したステップS55において取得された第2のスキーマの最近接要素名及び第2の検索項目の(最後の)要素名(タグ名)の当該第2のスキーマにおけるノード間距離とをいう。
ここで、第1の検索項目の要素名が「設計人」、ステップS55において取得された第1のスキーマの最近接要素名が「材料」、ステップS55において取得された第2のスキーマの最近接要素名が「素材」、第2の検索項目の要素名が「業種」である場合を想定する。
この場合には、検索項目組み合わせ処理部115は、第1のスキーマにおける要素名「設計人」及び「材料」のノード間距離、ステップS57において同類語処理部113によって取得された換算ノード間距離及び第2のスキーマにおける要素名「素材」及び「業種」のノード間距離の各々を加算することによって総合距離を算出する。
次に、第2の算出処理について説明する。第2の算出処理においては、上記したようにステップS54のYESの場合であるから、第1のスキーマのスキーマ名及び第2のスキーマのスキーマ名を含むスキーマ間距離情報がスキーマ間情報格納部23内に存在する。
この場合、スキーマ間情報処理部112は、第1のスキーマのスキーマ名及び第2のスキーマのスキーマ名を含むスキーマ間距離情報に含まれる第1のスキーマの最近接要素名と、第2のスキーマの最近接要素名と、当該第1のスキーマ及び第2のスキーマのスキーマ間距離を、スキーマ間情報格納部23から取得する。
第2の算出処理においては、総合距離はノード間距離とスキーマ間情報処理部112によって取得されたスキーマ間距離を加算することによって算出される。つまり、第2の算出処理においては、スキーマ間情報格納部23(に格納されているスキーマ間距離情報)において第1のスキーマのスキーマ名(第1のスキーマ名)及び第2のスキーマのスキーマ名(第2のスキーマ名)に対応付けられているスキーマ間距離(情報)に基づいて総合距離が算出される。
第2の算出処理におけるノード間距離とは、スキーマ間情報処理部112によって取得された第1のスキーマの最近接要素名及び第1の検索項目の(最後の)要素名(タグ名)の当該第1のスキーマにおけるノード間距離と、スキーマ間情報処理部112によって取得された第2のスキーマの最近接要素名及び第2の検索項目の(最後の)要素名(タグ名)の当該第2のスキーマにおけるノード間距離とをいう。
ここで、第1の検索項目の要素名が「設計人」、スキーマ間情報処理部112によって取得された第1のスキーマの最近接要素名が「材料」、スキーマ間情報処理部112によって取得された第2のスキーマの最近接要素名が「素材」、第2の検索項目の要素名が「業種」である場合を想定する。
この場合には、検索項目組み合わせ処理部115は、第1のスキーマにおける要素名「設計人」及び「材料」のノード間距離、スキーマ間情報処理部112によって取得されたスキーマ間距離及び第2のスキーマにおける要素名「素材」及び「業種」のノード間距離の各々を加算することによって総合距離を算出する。
つまり、第2の算出処理におけるスキーマ間距離は、第1の算出処理における換算ノード間距離に相当する。
なお、上記したようにステップS52において第1の検索項目及び第2の検索項目が複数取得された場合には、その第1の検索項目及び第2の検索項目の組み合わせの全てについて総合距離が算出される。
次に、検索項目組み合わせ処理部115は、算出された総合距離及び前述した図10に示すステップS35において取得されたノード間距離が短い順に第1の検索項目及び第2の検索項目の組み合わせを組み合わせ候補として特定する(ステップS59)。このとき、検索項目組み合わせ処理部115は、算出された総合距離及び前述した図10に示すステップS35において取得されたノード間距離が短い順に予め定められた数の組み合わせを組み合わせ候補として特定する。なお、前述した図10に示すステップS34において組み合わせ候補が特定されている場合には、当該組み合わせ候補を用いる。
次に、前述した図10に示すステップS37〜ステップS43の処理に相当するステップS60〜ステップS66の処理が実行される。
なお、上記したステップS56において一時的に換算ノード間距離が保管されている場合には、当該換算ノード間距離は、例えばステップS66においてユーザにより再検索が指示されず処理が終了される前にスキーマ間情報格納部23に書き込まれる。この場合、この換算ノード間距離は、スキーマ間情報格納部23に格納されているスキーマ間距離情報において第1のスキーマのスキーマ名及び第2のスキーマのスキーマ名に対応付けられているスキーマ間距離情報として、当該スキーマ間情報格納部23に書き込まれる。
上記したように本実施形態においては、データ格納部22に格納されている構造化データのスキーマが統一されておらず複数(異種)のスキーマが存在する場合であっても、入力された複数の検索タームに関係する検索項目に関して、適切な検索項目の組み合わせ候補を生成することできる。したがって、本実施形態においては、異種のスキーマが存在する場合であっても、検索項目を指定することなく複数の検索タームを入力して検索を行う場合において検索精度を向上させることが可能となる。
なお、本実施形態においては、換算ノード間距離の取得処理等において同類語情報を用いたが、例えば構造(スキーマ)の類似度を用いる等の他の方法であっても構わない。
また、本実施形態においては、データ格納部22に格納されている複数の構造情報によって示される構造(つまり、複数のスキーマ)は変更されないものとして説明したが、例えば構造化データ検索装置110の運用中にスキーマが変更された場合には、新たに換算用情報が生成(格納)される。また、このスキーマの変更に応じてスキーマ間距離情報も変更される。
また、本願発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
10…コンピュータ、20…外部記憶装置、22…データ格納部、23…スキーマ間情報格納部(構造間情報格納手段)、24…同類語情報格納部、25…換算用情報格納部、30,100,110…構造化データ検索装置、31…検索ターム入力部、32…検索項目抽出部、33…ノード間距離処理部、34,115…検索項目組み合わせ処理部、35…検索候補表示処理部、36…検索実行部、101…検索データ処理部、111…スキーマ情報判定部、112…スキーマ間情報処理部、113…同類語処理部、114…換算用情報処理部。