説明

構造化文書検索装置及び構造化文書検索方法

【課題】複数の文字列を入力するだけで当該文字列間の階層関係を考慮して構造化文書の検索を実行し、適切な検索結果を得ることを可能とする。
【解決手段】語彙階層関係グラフ格納部132は、検索対象データ格納部131に格納されている検索対象データ(構造化文書)毎に対して、構造化文書の各々に含まれる語彙間の階層関係を示す語彙階層関係グラフを格納する。クエリ作成部121は、語彙階層関係グラフ格納部132を参照して、検索者20からの検索条件に含まれる複数の文字列を語彙として含む語彙階層関係グラフによって示される当該複数の文字列間の階層関係に基づいて、語彙間の階層関係に適合する構造化文書を検索するための検索式を作成する。記憶部13は、クエリ作成部121によって作成された検索式に基づいて、当該検索式に合致する検索対象データを検索対象データ格納部131から検索する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構造化文書を検索する構造化文書検索装置及び構造化文書検索方法に関する。
【背景技術】
【0002】
一般に、論理構造を持つ文書は構造化文書と呼ばれる。構造化文書において、当該文書の論理構造は、当該文書中に記述されたタグによって示される場合がある。このタグを用いて論理構造が表現された構造化文書は、計算機で各種目的に合わせて解釈ないし加工して利用する処理に適している。構造化文書の代表として、XML(Extensible Markup Language)形式で記述されたXML文書が知られている。
【0003】
近年、非常に多くのアプリケーションでXMLが用いられるようになり、様々なデータがXML形式で記述されるようになってきている。これにより、XML形式で記述されたXML文書を検索する技術が、重要となっている。
【0004】
ここで、上記したXML文書の検索の条件指定では、
1.XPathやXQueryといった問合せ言語による条件指定
2.要素名、属性名とその値の組による条件指定
3.キーワード(文字列)による条件指定
4.自然言語による条件指定
のいずれかの方法が用いられている。
【0005】
上記の条件指定方法のうち、1及び2に関しては、利用者(ユーザ)が問合せ言語などの専門的知識を有し、または予め検索したいXML文書の構造を把握した上で、条件指定を行うため、利用者にとって所望のXML文書を検索できる可能性が高い。
【0006】
ところで、全ての構造化文書に対して、様々な構造条件を指定して検索することができる技術が開示されている(例えば、特許文献1を参照)。また、この技術によれば、構造化文書の論理構造及び文書型を意識した構造化文書の検索が可能となる。
【0007】
また、検索結果に対するユーザの意志を検索処理や検索結果の表示に適切に反映可能な技術が開示されている(例えば、特許文献2を参照)。
【0008】
更に、キーワードを利用したXML文書検索に関する技術が開示されている(例えば、非特許文献1を参照)。また、非特許文献1には、XPathまたはXQueryに関する技術についても開示されている。
【0009】
また、検索対象データ及びそのスキーマを解析することによる検索の高速化に関する技術もある。
【特許文献1】特開2000−250930号公報
【特許文献2】特開2005−316573号公報
【非特許文献1】絹谷 弘子、外3名、“キーワードを利用したXML文書検索”、情報処理学会 論文誌(トランザクション) 2004年6月 Vol.45 No.SIG07(TOD 22)、p.255−273
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上記した問合せ言語による条件指定及び要素名、属性名とその値の組による条件指定では、XPathまたはXQueryのような問合せ言語の専門的知識や、利用者が予め検索したいXML文書の構造を把握した上で条件指定を行う必要がある。よって、そのような知識を持たない利用者は用いることができないため、利便性にかける。
【0011】
一方、上記したキーワードによる条件指定または自然言語による条件指定では、必要としているデータを特定するための情報(例えば、XML文書の構造)を表すことができない。また、自然言語による条件指定に関しては、自然言語におけるあいまいさが残ってしまう。このため、利用者が必要としているデータ以外にも多量のデータが検索結果として返ってきてしまう。
【0012】
また、上記したように、検索の高速化などのために検索対象データやそのスキーマを解析する技術はあるが、この技術では、XML文書の階層関係を意識した検索処理を行うことについては考慮されていない。
【0013】
本発明の目的は、複数のキーワード(文字列)を入力するだけで当該キーワード間の階層関係を考慮して構造化文書の検索を実行し、適切な検索結果を得ることが可能な構造化文書検索装置及び構造化文書検索方法を提供することにある。
【課題を解決するための手段】
【0014】
本発明の1つの態様によれば、検索対象となる複数の構造化文書が格納されている検索対象データ格納手段に対して、ユーザによって指定される複数の文字列を含む検索条件に応じて検索を実行する構造化文書検索装置が提供される。この構造化文書検索装置は、前記検索対象データ格納手段に格納されている複数の構造化文書の各々に含まれる語彙間の階層関係を示す語彙階層関係グラフを、当該構造化文書毎に格納する語彙階層関係グラフ格納手段と、前記語彙階層関係グラフ格納手段を参照して、前記検索条件に含まれる複数の文字列から構造化文書を検索するための検索式を作成するクエリ作成手段と、前記作成された検索式に合致する検索対象データを前記検索対象データ格納手段から検索する検索手段とを具備する。
【発明の効果】
【0015】
本発明によれば、複数のキーワードを入力するだけで当該キーワード間の階層関係を考慮して構造化文書の検索を実行し、適切な検索結果を得ることが可能となる。
【発明を実施するための最良の形態】
【0016】
以下、図面を参照して、本発明の実施形態について説明する。図1は、本実施形態に係る構造化文書検索装置の構成を示すブロック図である。図1に示す構造化文書検索装置10は、データ解析部11、検索実行部12及び記憶部13を備える。
【0017】
データ解析部11は、管理者30からの語彙階層関係グラフ作成要求に従って、語彙階層関係グラフを作成する。語彙階層関係グラフは、検索対象となるデータ(以下、検索対象データと称する)に含まれる語彙間の階層関係を示す。なお、この語彙階層関係グラフの詳細については後述する。
【0018】
データ解析部11は、データ解析制御部111及び語彙階層関係グラフ作成部112を含む。データ解析制御部111は、記憶部13から検索対象データを取得し、当該検索対象データを解析する。語彙階層関係グラフ作成部112は、データ解析制御部111によって解析された結果に基づいて、語彙階層関係グラフを作成する。また、語彙階層関係グラフ作成部112は、作成された語彙階層関係グラフを記憶部13に登録する。
【0019】
検索実行部12は、検索者20からの検索要求に従って、検索処理を実行する。また、検索実行部12は、検索結果を検索者20に返す。検索実行部12は、クエリ作成部121及び検索制御部122を含む。
【0020】
クエリ作成部121は、検索者20によって指定される検索条件のリストを作成する。クエリ作成部121は、作成されたリストから検索対象データに対する検索式を作成する。または、クエリ作成部121は、語彙階層関係グラフ格納部132を参照して検索式を作成する。このとき、クエリ作成部121は、後述する変換データに基づいて、検索式を作成する。なお、検索者20によって指定される検索条件は、パス形式で示される。以下、パス形式で示される検索条件を検索条件パス式と称する。この検索条件パス式には、例えば検索者20によって指定される複数の文字列が含まれる。
【0021】
検索制御部122は、クエリ作成部121によって作成された検索式により、記憶部13に対して検索処理を実行するための制御を行う。また、検索制御部122は、記憶部13から受け取った検索結果を検索者20に通知する。
【0022】
記憶部13は、各種データを格納する。記憶部13は、検索対象データ格納部131、語彙階層関係グラフ格納部132及び変換データ格納部133を有する。記憶部13は、検索対象データ格納部131、語彙階層関係グラフ格納部132または変換データ格納部133に対して、適宜各種データの格納または取り出しを行う。
【0023】
検索対象データ格納部131には、構造化文書検索装置10による検索の対象となる検索対象データ(構造化文書)が格納されている。なお、検索対象データ格納部131は、構造化文書検索装置10とは別の、例えば外部の記憶装置に管理(格納)される構成であっても良い。語彙階層関係グラフ格納部132には、データ解析部11の語彙階層グラフ作成部112によって作成された語彙階層グラフが格納(登録)されている。変換データ格納部133には、前述した変換データが格納されている。この変換データは、上記した検索条件パス式から検索式を作成(変換)するためのデータである。
【0024】
次に、図2のフローチャートを参照して、語彙階層関係グラフが作成される際の処理手順について説明する。まず、管理者30は、例えばデータ解析部11に対して、語彙階層関係グラフを作成させるための語彙階層関係グラフ作成要求を出す(ステップS1)。このとき、例えば作成される語彙階層関係グラフに含まれる語彙を指定する等の条件が、管理者30によって与えられる構成であっても構わない。この場合、作成される語彙階層関係グラフが、例えば管理者30によって指定された語彙を必ず保持する構成でも良いし、または当該指定された語彙を優先的に保持する構成でも良い。
【0025】
データ解析部11のデータ解析制御部111は、管理者30からの語彙階層関係グラフ作成要求に応じて、記憶部13に対して解析の対象となるデータ(以下、解析対象データと称する)の取得要求を出力する(ステップS2)。
【0026】
記憶部13は、データ解析制御部111によって出力された取得要求に応じて、検索対象データ格納部131に格納されている解析対象データを検索する(ステップS3)。記憶部13は、検索された解析対象データをデータ解析制御部111に渡す。これにより、データ解析制御部111は、解析対象データを取得する。
【0027】
なお、データ解析制御部111は、検索対象データ格納部131に格納されている検索対象データの全てを解析対象データとして取得することを基本とするが、ステップS1において、管理者30によって条件が指定されている場合には、当該条件に合致する検索対象データのみを解析対象データとして取得する構成であっても良い。例えば前回の解析時からの差分、つまり、まだ解析を行っていないデータのみを解析対象とすることも可能である。
【0028】
データ解析制御部111は、取得された解析対象データの解析を行う(ステップS4)。語彙階層関係グラフ作成部112は、データ解析制御部111によって解析された結果を元に、語彙階層関係グラフを作成する(ステップS5)。語彙階層関係グラフ作成部112は、作成された語彙階層関係グラフを登録するために、語彙階層関係グラフ格納部132に登録する(ステップS6)。
【0029】
次に、図3のフローチャートを参照して、検索者20からの検索要求に応じた検索が実行される際の処理手順について説明する。まず、検索者20は、検索実行部12に対して、例えば検索条件パス式を指定して検索要求を出す(ステップS11)。
【0030】
検索実行部12のクエリ作成部121は、検索者20からの検索条件パス式に応じて、検索対象データ格納部131に対して検索を実行するための検索式を作成する(ステップS12)。すなわち、クエリ作成部121は、語彙階層関係グラフ格納部132を参照して、検索条件パス式に含まれる複数の文字列を語彙として含む語彙階層関係グラフによって示される当該複数の文字列間の階層関係に基づいて、検索式を作成する。あるいは、クエリ作成部121は、語彙階層関係グラフ格納部132の文字列間の階層関係及び変換データ格納部133に格納されている変換データに基づいて、検索式を作成する。
【0031】
検索実行部12の検索制御部122は、クエリ作成部121によって作成された検索式を指定して、記憶部13に対して検索要求する(ステップS13)。
【0032】
記憶部13は、検索制御部122からの検索要求に応じて、検索制御部122の制御の下、検索対象データ格納部131から当該検索要求に合致する検索対象データを検索する(ステップS14)。記憶部13は、検索結果を検索制御部122に渡す。これにより、検索制御部122は、検索式に基づく検索結果データを取得する。
【0033】
検索制御部122は、取得した検索結果データを、検索者20からの検索要求に対する検索結果として検索者20に対して返す(ステップS15)。これにより、検索者20は、検索要求に対する検索結果を取得する(ステップS16)。
【0034】
なお、検索実行部12において、記憶部13からの検索結果を評価し、その評価結果に基づいて、当該検索結果を加工することも可能である。例えば個々の検索結果に対して、指定された検索条件パス式とのマッチングをスコアリングし、その結果に応じてソートまたはクラスタリングなどの処理が実行される構成があっても構わない。
【0035】
図4は、検索対象データの一具体例を示す図である。図4に示す検索対象データは、例えばXML形式で記述された天気予報データ100である。図4に示す天気予報データ100は、例えばルート要素名として「天気予報」を有する。また、天気予報データ100は、例えば要素名として「場所」、「予報」、「天気」、「気温」、「最高」、「最低」及び「降水確率」を有する。
【0036】
また、天気予報データ100は、例えば要素名が「場所」である要素に指定されている属性の属性名として「都道府県」及び「地域」を有する。また、要素名が「降水確率」である要素に指定されている属性の属性名として「単位」を有する。
【0037】
さらに、天気予報データ100は、例えば属性名が「都道府県」である属性の値である属性値として「東京都」、「神奈川県」及び「埼玉県」を有する。また、例えば属性名が「地域」である属性の値である属性値として「東京地方」、「伊豆諸島北部」、「伊豆諸島南部」、「小笠原諸島」、「東部」、「西部」、「北部」及び「南部」を有する。また、例えば属性名が「単位」である属性の値である属性値として「%」を有する。
【0038】
ここで、上記した検索対象データに含まれる要素には、単純型と複合型が存在する。単純型は、属性を持たない要素であって、内容にテキスト(文字列)のみを持つ要素である。天気予報データ100では、例えば要素名が「天気」、「最高」及び「最低」である要素が単純型である。
【0039】
また、複合型には、単純型内容を持つ複合型と単純型内容を持たない複合型が存在する。単純型内容を持つ複合型は、属性を有する要素であって、内容にテキストのみを持つ要素である。天気予報データ100では、例えば要素名が「降水確率」である要素が挙げられる。一方、単純型内容を持たない複合型は、内容にテキスト以外のものを持つ複合型である。天気予報データ100では、例えば要素名が「場所」及び「気温」である要素等が挙げられる。
【0040】
次に、図5及び図7を参照して、前述した図2のステップS4及びS5の処理について、詳細に説明する。まず、図5のフローチャートを参照して、上記した解析対象データの階層構造を示す構造グラフを作成する処理手順について説明する。なお、この構造グラフは、語彙階層関係グラフを作成するために用いられる。
【0041】
データ解析部11は、構造グラフを初期化する(ステップS21)。この処理により、データ解析部11は、構造グラフを頂点及び辺を持たないグラフとする。
【0042】
次に、データ解析部11のデータ解析制御部111は、前述した図2のステップS3で検索された解析対象データのルート要素を対象要素として取得する(ステップS22)。なお、ルート要素は、例えば構造化文書(XMLデータ)の要素を全て包含する要素である。
【0043】
データ解析制御部111は、取得された対象要素の要素名を取得し(ステップS23)、対象要素に属性が指定されているか否かを判定する(ステップS24)。さらに、対象要素に属性が指定されていると判定されると(ステップS24のYES)、当該対象要素に指定されている属性の属性名及び属性値を取得する(ステップS25)。取得された属性値に対して形態素解析を実行し、その結果により、属性値に含まれる名詞を抽出する(ステップS26)。
【0044】
なお、ステップS24において、対象要素に属性が指定されていないと判定されると、上記したステップS25及びS26の処理は実行されない。
【0045】
次に、データ解析制御部111は、対象要素が前述した単純型または単純型内容を持つ複合型であるか否かを判定する(ステップS27)。対象要素が単純型または単純型内容を持つ複合型であると判定された場合(ステップS27のYES)、当該対象要素の内容を取得する(ステップS28)。取得された対象要素の内容に対して形態素解析を実行し、その結果により、対象要素の内容に含まれる名詞を抽出する(ステップS29)。
【0046】
なお、ステップS27において、対象要素が単純型または単純型内容を持つ複合型でないと判定された場合、上記したステップS28及びS29の処理は実行されない。
【0047】
次に、語彙階層関係グラフ作成部112は、取得された要素名、属性名またはステップS26またはS28で抽出された名詞(語彙)に対して、スコアリングを行う(ステップS30)。語彙階層関係グラフ作成部112は、例えば評価値を用いてスコアリング処理を実行する。
【0048】
ここで、評価値の例について具体的に説明する。語彙階層関係グラフ作成部112は、以下の例えば第1の評価値から第7の評価値のうち複数の評価値を用いてスコアリング処理を実行する。まず、要素名または属性名の場合の評価値の例について説明する。
【0049】
第1の評価値は、例えば解析対象データ内における例えば要素名または属性名の出現回数に応じて算出される。例えば出現回数が多いものに対しては、評価値は高くなる。第2の評価値は、出現位置に応じて算出される。この場合、出現位置(階層)が深いものほど、評価値は小さくなる。例えば階層の深さをdepthとすると、評価式1/depthまたは1/(log depth)+1によって第2の評価値は算出される。なお、階層の深さは、ルート要素を1とする。
【0050】
また、例えば管理者30によって条件として指定された語彙が要素名であれば、要素名が当該指定された語彙である要素以下の要素または属性の深さについては、要素名が当該指定された語彙である要素の深さは0として扱い、これに基づいて、上記した第2の評価値が求められる構成であっても良い。
【0051】
第3の評価値は、子ノード(子要素、属性)に応じて算出される。この場合、子ノード数が多いほど、評価値は大きくなる。例えば子ノード数をcountとすると、評価式count/全ノード数によって第3の評価値は算出される。なお、ノードとは、要素、要素の内容、属性名、属性値を総称したものである。第4の評価値は、要素名であるか属性名であるかに応じて算出される。この場合、例えば要素名または属性名によって、評価値を算出する際に用いる係数を変更する。第5の評価値は、要素名または属性名に関係するテキストの内容に応じて算出される。例えば管理者30によって条件として指定された語彙が要素の内容または属性値に含まれている場合には、要素の内容に当該指定された語彙を含む要素の要素名、または属性値に当該指定された語彙を含む属性の属性名に対する評価値は大きくなる。
【0052】
要素名または属性名(に含まれる語彙)の場合、例えば上記した第1から第5の評価値を含む複数の評価値の合計によって、スコアリングされる。
【0053】
次に、要素の内容または属性値の場合の評価値の例について説明する。第6の評価値は、形態素解析を行った結果、取得された名詞または固有名詞などの出現回数に応じて算出される。例えば出現回数が多いものに対しては、評価値は大きくなる。第7の評価値は、要素の内容または属性値に関係するノード名に応じて算出される。なお、ノード名は、ここでは要素名または属性名を示す。例えば管理者30によって条件として指定された語彙が要素名または属性名である場合、要素名が当該指定された要素の内容または属性名画当該指定された語彙の属性値の評価値は大きくなる。要素の内容または属性値の場合、例えば上記した第6または第7の評価値を含む複数の評価値の合計によって、スコアリングされる。
【0054】
次に、語彙階層関係グラフ作成部112は、取得された要素名、属性名またはステップS26またはS28で抽出された語彙をラベル(名称)として持ち、それぞれノードタイプを保持する頂点として構造グラフに追加する(ステップS31)。ノードタイプは、要素名、要素の内容、属性名または属性値を示す。
【0055】
語彙階層関係グラフ作成部112は、定義に従って、構造グラフに辺を追加する(ステップS32)。辺は、構造グラフ上の要素名、属性名またはステップS26またはS28で抽出された語彙相互間の階層関係を表す。ここで、上記した定義には、例えば矢印(辺)の向きにより「親要素名から子要素名」、「要素名からその属性名」、「属性名から属性値」、「要素名からのその要素の内容に含まれる文字列」、「親要素の属性名から子要素名」、「親要素の属性値に含まれる文字列から子要素名」等が含まれる。
【0056】
語彙階層関係グラフ作成部112は、解析対象データに基づいて、対象要素が子要素を持つか否かを判定する(ステップS33)。対象要素が子要素を持つと判定された場合(ステップS33のYES)、データ解析制御部111は、当該子要素を取得し(ステップS34)、そして、取得された子要素を対象要素として、上記したステップS23に戻って処理が繰り返される。
【0057】
一方、ステップS33において対象要素が子要素を持たないと判定された場合、語彙階層関係グラフ作成部112は、ステップS30においてスコアリングされた結果を元に語彙を抽出する(ステップS35)。このとき、語彙階層関係グラフ作成部112は、語彙(ここでは、取得された要素名、属性名、またはステップS26またはS28で抽出された語彙)のうち、スコア(評価値の合計)が所定の値以上の語彙を抽出する。なお、この所定の値は、予め設定されていても良いし、処理の度に例えば管理者30によって設定される構成でも良い。また、語彙階層関係グラフ作成部112は、例えば管理者30によって指定された語数の語彙を評価値の大きい順に抽出する構成でも良い。
【0058】
語彙階層関係グラフ112は、ステップS35において抽出された語彙でもなく、管理者30によって指定された語彙でもない語彙をラベルとして持つ頂点及びその頂点に隣接する辺を削除する(ステップS36)。ステップS36において削除処理を終えたグラフが、解析対象データの階層構造を示す構造グラフとなる。
【0059】
図6は、図5のフローチャートに示す処理によって作成された天気予報データ100の構造グラフ200の一例を示す図である。なお、この構造グラフ200は、例えば管理者30によって条件として、「天気」の語彙が指定されて作成されたものとする。
【0060】
図6に示すように、構造グラフ200には、要素名として「場所」、「予報」、「天気」、「気温」及び「降水確率」が示されている。構造グラフ200には、属性名として「都道府県」が示され、属性値に含まれる文字列として「東京都」、「神奈川県」及び「埼玉県」が示されている。また、構造化グラフ200には、要素名が「天気」である要素の内容に含まれる文字列として「晴れ」、「くもり」及び「雨」が示されている。なお、図6では、グラフの表記においてXML上でのノードタイプによって頂点の表記を変えている。また、構造グラフ200には、例えば要素名「場所」から要素名「予報」に向かって辺が示される。この辺は、前述したような定義に従って追加されたものである。
【0061】
なお、図4に示す天気予報データ100が有する要素名、属性名、属性値または要素の内容のうち、構造がグラフ200に示されていない語彙については、前述した図5のステップS36において削除されたものとする。削除された語彙は、例えばスコアリングされた結果、所定の値より評価値が小さく、かつ管理者30によって指定されていない語彙である。
【0062】
次に、図7のフローチャートを参照して、構造グラフを用いて語彙階層関係グラフを作成する処理手順について説明する。なお、ここで用いられる構造化グラフは、上記した構造化グラフ200であるものとして説明する。
【0063】
まず、語彙階層関係グラフ作成部112は、作成された構造グラフ200を参照して、当該構造グラフ200に示される頂点と同一のラベルを持つ頂点を語彙階層関係グラフに追加する(ステップS41)。このとき、構造グラフ200に同一のラベルを持つ頂点が複数存在する場合には、当該頂点が重複しないように頂点を追加する。
【0064】
語彙階層関係グラフ作成部112は、構造グラフ200を参照して、特定の距離以内にある任意の2頂点を取得する(ステップS42)。ここで、構造グラフ200上の1階層の距離を1とすると、特定の距離は2以上が好ましい。また、この特定の距離は、例えば管理者30によって事前に指定されても良いし、処理の度に例えば管理者30によって指定される構成であっても良い。
【0065】
語彙階層関係グラフ112は、取得された任意の2頂点に対応する語彙階層関係グラフ上の2頂点間に、辺を追加する(ステップS43)。ここで、追加される辺は、ラベルを持つ。辺のラベルは、取得された任意の2頂点の構造グラフ200上でのノードタイプの組を示す。
【0066】
なお、語彙階層関係グラフ格納部132を更新する場合には、語彙階層関係グラフ作成部112は、語彙階層関係グラフを初期化してから図7のフローチャートを実行する。
【0067】
図8は、図7に示す処理によって作成された語彙階層関係グラフの概略図である。図8に示す語彙階層関係グラフ300は、上記した特定の距離を2として作成された語彙階層関係グラフである。なお、図8は、便宜的に「東京都」をラベルとして持つ頂点(以下、単に「東京都」と称する)を中心とした部分のみを示す。「東京都」以外のラベルを持つ頂点間の辺は、点線で示されており、当該辺のラベルは省略されている。また、「東京都」以外の頂点については、例えば辺等の一部が省略されている。
【0068】
図6に示す構造グラフ200の「東京都」から距離が2以内に存在する頂点は、「場所」、「都道府県」、「予報」、「天気」、「気温」及び「降水確率」である。以下、この頂点を特定距離内頂点と称する。
【0069】
また、図8に示す語彙階層関係グラフ300では、「東京都」及び特定距離内頂点の各々が辺で結ばれ、辺の各々にはラベルが付されている。例えば「場所」及び「東京都」においては、「場所」から「東京都」に辺が結ばれており、当該辺のラベルは、「要素名、属性値」である。これは、「場所」のノードタイプが要素名であり、「東京都」のノードタイプが属性値であることを示す。なお、図8に示す語彙階層関係グラフ300では省略されているが、「東京都」以外の頂点についても同様に、特定距離内頂点と辺で結ばれており、その辺の各々にはラベルが付されている。
【0070】
次に、図9のフローチャートを参照して、図3のステップS12の処理について詳細に説明する。例えば検索者20は、複数の語彙を含む検索条件パス式(ここでは、例えば「天気/東京都」)を指定して、検索要求を出す(ステップS51)。以下、検索者20によって指定された検索条件パス式を指定パス式と称する。
【0071】
検索実行部12のクエリ作成部121は、検索者20からの指定パス式を展開する(ステップS52)。クエリ作成部121は、指定パス式に含まれる語彙(文字列)を並び替えることによって、当該指定パス式を複数の検索条件パス式に展開する。このとき、クエリ作成部121は、検索条件パス式に含まれる全ての語彙の順列(並び順)毎に展開する。具体的には、指定パス式が「天気/東京都」であれば、当該検索条件パス式は、「天気/東京都」及び「東京都/天気」に展開される。以下、クエリ作成部121によって展開された複数の検索条件パス式の各々を展開パス式と称する。
【0072】
なお、展開パス式の各々によって示される語彙の順列は、当該順列の語彙の順によって階層関係を示す。例えば展開パス式が「天気/東京都」である場合には、「天気」から「東京都」に階層関係を有する旨を示す。以下、この階層関係を展開パス式の階層関係と称する。
【0073】
また、上記したステップS52において、検索条件パス式に含まれる全ての語彙の順列毎に展開する場合について説明したが、例えば語彙階層関係グラフ格納部132を参照して、上記した展開パス式の階層関係を含む語彙階層関係グラフが存在する展開パス式のみが展開される構成でも良い。これにより、以下のステップにおいて処理される展開パス式の数が少なくなるため、処理量を減少させることが可能となる。
【0074】
また、指定パス式に含まれる語彙を形態素解析し、その結果により抽出された語彙により当該指定パス式を展開する構成でも良い。この場合、例えば指定パス式が「天気/くもり時々晴れ」である場合、「くもり時々晴れ」を形態素解析し、展開パス式を「天気/くもり/晴れ」「天気/くもり」「天気/晴れ」と展開することが可能となる。
【0075】
次に、クエリ作成部121は、展開パス式の各々に対して、スコアリングを行う(ステップS53)。例えば評価値を用いてスコアリング処理を実行する。また、クエリ作成部121は、必要に応じて語彙階層関係グラフ格納部132に格納されている語彙階層関係グラフを利用して、評価値を算出する。
【0076】
ここで、評価値の例について具体的に説明する。クエリ作成部121は、以下の例えば第8の評価値から第10の評価値を含む複数の評価値を用いてスコアリング処理を実行する。
【0077】
第8の評価値は、指定パス式と展開パス式の各々とを比較して、両者の語彙の順序の違いに応じて算出される。この場合、指定パス式の語彙の順序と比較して、順序が異なる語彙が多く含まれる展開パス式に対しては、評価値は小さくなる。例えばn=指定パス式と順序の異なる語彙の数、N=指定パス式または展開パス式に含まれる語彙の数とすると、例えば評価式N/(log a n)+Nによって第8の評価値は算出される。ただし、評価式N/(log a n)+Nにおいて、指定パス式と順序の異なる語彙がない場合、つまりn=0の場合には、評価値1が算出されるものとする。なお、評価式において、「a」は底とし、任意に設定可能である。以下の、評価値においても同様である。
【0078】
第9の評価値は、指定パス式と展開パス式の各々とを比較して、両者の語彙の種類の違いに応じて算出される。この場合、指定パス式に含まれる語彙の種類と異なる種類の語彙が多く含まれる展開パス式に対しては、評価値は小さくなる。ここで、例えば展開パス式に含まれる語彙が、上記した指定パス式に含まれる語彙そのものでなく、形態素解析して抽出された語彙である場合には、語彙の種類が異なるものとして扱われる。例えばn=指定パス式に含まれる語彙の種類と異なる種類の語彙の数、N=指定パス式または展開パス式に含まれる語彙の数とすると、例えば評価式N/(log a n)+Nによって第9の評価値は算出される。ただし、評価式N/(log a n)+Nにおいて指定パス式に含まれる語彙の種類と異なる種類の語彙がない場合、つまりn=0の場合には、評価値1が算出されるものとする。
【0079】
第10の評価値は、展開パス式内で隣接されている語彙間の関係に応じて算出される。この場合、展開パス式の階層関係の各々のうち、例えば親子関係として設定されていない階層関係の数が多い場合には、評価値は小さくなる。例えばN=親子関係として設定されていない階層関係の数とすると、例えば評価式1/(log a N)+1によって第10の評価値は算出される。ただし、評価式1/(log a N)+1において、設定されていない階層関係がない場合、つまりN=0の場合には、評価値1が算出されるものとする。なお、第10の評価値は、例えば語彙階層関係グラフ格納部132に格納されている語彙階層関係グラフの各々について上記した評価式で評価値を求め、当該語彙階層関係グラフの各々について求められた評価値を合計することによって求められる。
【0080】
展開パス式の各々は、例えば上記した第8から第10の評価値を含む複数の評価値の合計によってスコアリングされる。クエリ作成部121は、スコアリングされた結果を元に、スコア(評価値の合計)が上位の展開パス式を選択する(ステップS54)。以下、スコアが上位の展開パス式を選択パス式と称する。
【0081】
クエリ作成部121は、語彙階層関係グラフ格納部132を参照して、選択パス式の階層関係を例えば親子関係として含む語彙階層関係グラフを取得する(ステップS55)。なお、クエリ作成部121は、例えば選択パス式の階層関係の全てを親子関係として含む語彙階層関係グラフが語彙階層関係グラフ格納部132に存在しない場合には、当該選択パス式の階層関係の一部を親子関係として含む語彙階層関係グラフを取得する。例えば選択パス式がA/B/C(当該展開パス式の階層関係がAからB、BからC)である場合に、当該階層関係を完全に含む語彙階層関係グラフが語彙階層関係グラフ格納部132に存在しない場合を想定すると、クエリ作成部121は、例えばAからBの階層関係のみを親子関係として含む語彙階層関係グラフ、またはBからCの階層関係のみを親子関係として有する語彙階層関係グラフを取得する。
【0082】
クエリ作成部121は、取得された語彙階層関係グラフに基づいて、選択パス式に含まれる語彙の各々のノードタイプを判別する(ステップS56)。クエリ作成部121は、選択パス式の階層関係及び判別されたノードタイプに基づいて、当該選択パス式に含まれる語彙(文字列)間の階層関係を有する検索対象データを検索するための検索式、例えばXPath式を作成する。つまり、クエリ作成部121は、選択パス式をXPath式に変換する(ステップS57)。または、クエリ作成部121は、変換データ格納部133に格納されている変換データに基づいてXPath式に変換する。
【0083】
なお、ステップS55において、クエリ作成部121によって複数の語彙階層関係グラフが取得された場合は、取得された語彙階層関係グラフの各々についてステップS56及びS57の処理が実行される。これにより、複数のXPath式が作成(変換)された場合は、当該複数のXPath式を互いにOR(論理和)の関係として、検索対象データ格納部131に対して検索処理が実行される。
【0084】
ここで、図10は、変換データ格納部133に格納されている変換データのデータ構造の一例を示す図である。なお、この変換データは、事前に語彙階層関係グラフにおける各関係に対するXPath式への変換方法として定義されている。図10に示すように、変換データは、関係情報及び当該情報に対応付けられているXPath式情報を含む。
【0085】
関係情報は、語彙(文字列)間の階層関係を示す。図10に示す例では、例えば親子(要素名、要素名)の関係がある。これは、当該語彙のそれぞれのノードタイプが要素名であることを示す。また同様に、親子(要素名、要素の内容)は、親となる語彙のノードタイプが要素名であり、異なる語彙(子)のノードタイプが要素の内容(に含まれる文字列)であることを示す。また例えば兄弟(要素名、要素名、…)の関係は、語彙間の関係が同じ階層、同じノードタイプであることを示している。
【0086】
また、XPath式情報は、対応付けられている関係を示す情報によって示される語彙間の関係に適合する検索対象データ(構造化文書)を検索するために適当なXPath式を示す。例えば親子(要素名、要素の内容)の関係情報に対応付けられているXPath式情報は、XPath式「//element1[.//element2]」を示す。また同様に、例えば親子(要素名、要素の内容)の関係情報に対応付けられているXPath式情報は、XPath式「//element1[.//text()=”context”]」を示す。なお、上記したXPath式において、element1及びelement2は要素名を示し、contextは要素の内容を示す。また、これ以外にattriは属性名を示し、valueは属性値を示す。
【0087】
なお、図10に示す変換データに含まれる関係情報には、2つの語彙の階層関係が定義されているが、これらを複数組み合わせることにより、3つ以上の語彙の階層関係を定義することも可能である。また、これに対応するXPath式を定義することも可能である。これにより、3つ以上の語彙を含む展開パス式をXPath式に変換することも可能である。
【0088】
図9のステップS57に戻ると、クエリ作成部121は、ステップS56において判別されたノードタイプ及び選択パス式の階層関係から、適合する関係情報を特定する。クエリ作成部121は、特定された関係情報に対応付けられたXPath式情報に基づいて、XPath式に変換する。
【0089】
例えば上記したステップS54において選択パス式として「東京都/天気」が選択され、ステップS55において語彙階層関係グラフ300が取得された場合を説明する。語彙階層関係グラフ300において、「東京都」は属性値であり、「天気」は要素名である。また、「東京都」から「天気」に辺が結ばれていることから、「東京都」及び「天気」は親子の関係である。よって、クエリ作成部121は、例えば図10に示す変換データに基づいて、親子(属性値、要素名)を示す関係情報に対応するXPath式情報によって示されるXPath式を作成する。つまり、クエリ作成部121は、展開パス式「東京都/天気」をXPath式「//*[./@*=”東京都”and.//天気]」に変換する。このXPath式に基づいて、検索対象データ格納部131に対して検索処理が実行される。XPath式「//*[./@*=”東京都”and.//天気]」は、「東京都」及び「天気」が親子関係であり、かつ「東京都」のノードタイプが属性値であり、「天気」のノードタイプが要素名であるXMLデータ(構造化文書)を検索するための検索式である。なお、「東京都」及び「天気」は直接親子関係を有する必要はなく、例えば孫またはひ孫の関係であっても検索可能である。
【0090】
ここでは、変換データはXPath式情報を含み、選択パス式をXPath式に変換する例を示したが、例えばXQueryまたはSQL等の任意のデータソースに対する任意の問い合わせ言語へ変換する構成でも良い。
【0091】
図11は、図4の天気予報データ100に対し、上記したクエリ作成部121によって作成されたXPath式「//*[./@*=”東京都”and.//天気]」による検索結果400を示す。検索結果400は、属性値「東京都」及びその親子関係(ここでは、孫関係)である要素名「天気」を含むXMLデータとなる。
【0092】
ところで、例えば選択パス式の階層関係が複数存在する場合において、当該複数の階層関係のうち、語彙階層関係グラフ格納部132内の語彙階層関係グラフに設定されていない階層関係(未設定階層関係)が指定された場合を想定する。この場合、未設定階層関係に対する設定(設定レベル)を予め定義しておく構成であっても構わない。予めレベルを設定しておくことにより、所望の検索結果範囲を得ることができる。
【0093】
図12は、予め定義された設定レベルの一例を示す。図12の例では、未設定階層関係を構成する2つの語彙に設定するノードタイプと、未設定階層関係を構成する2つの語彙に設定する階層関係についてレベル1から3が定義されている。なお、レベルの段階は、例えば検索者20によって適宜設定される。
【0094】
例えばレベル1では、選択パス式に含まれる未設定階層関係については、無視することが定義されている。例えば選択パス式が、A/B/Cである場合を想定する。この場合、語彙階層関係グラフ格納部132に格納されている1つの語彙階層関係グラフにおいて、AからBの階層関係は存在するが、BからCの階層関係が存在しない場合、当該BからCの階層関係は無視し、AからBの階層関係のみからXPath式に変換することを示す。
【0095】
また、例えばレベル2では、タイプは「要素名」を示し、動作内容は「未設定階層関係を親子関係に設定」を示す。つまり、未設定階層関係を構成する2つの語彙のノードタイプをそれぞれ要素名に設定し、当該2つの語彙の階層関係を親子関係として、選択パス式がXPath式に変換される。
【0096】
また、例えばレベル3では、タイプは「すべて」を示し、動作内容は「未設定階層関係を親子関係または兄弟関係に設定」を示す。つまり、未設定階層関係を構成する2つの語彙の各々のノードタイプは、要素名、属性名、属性値または要素の内容のそれぞれに設定される。また、設定された全ての組み合わせ毎に、語彙間の階層関係に親子関係または兄弟関係が設定される。設定された全ての組み合わせ及び階層関係に基づいて、選択パス式がXPath式に変換される。
【0097】
上記したように本実施形態においては、検索対象データ格納部131に格納されている検索対象データを解析することによって、語彙階層関係グラフを作成することが可能となる。本実施形態においては、検索者20から指定された複数の語彙(文字列)を含むパス形式の検索条件を展開し、語彙階層関係グラフ格納部132に格納されている語彙階層関係グラフ及び変換データ格納部133に格納されている変換データに基づいて、当該検索条件に含まれる語彙間の階層関係に適合する構造化文書を検索するためのXPath式が作成される。この作成されたXPath式に基づいて検索対象データ格納部131に対して検索が実行される。これにより、検索者20は、検索対象となる構造化文書のデータ構造を意識することなく、例えばキーワード(文字列)を指定するような簡便さで、構造化文書の階層関係を考慮した検索を実行することが可能となる。
【0098】
また、本実施形態においては、構造化文書の階層構造を示す構造グラフ上で、例えば任意の2頂点の特定の距離に基づいて、語彙階層関係グラフが作成される。これにより、この語彙階層関係グラフを用いて検索処理が実行される際、検索対象となる構造化文書上で、検索者20によって指定された語彙が直接階層関係にない構造化文書であっても考慮して検索することが可能となる。
【0099】
また、本実施形態においては、予め定義されたレベルを設定しておくことで、未設定階層関係が選択パス式に指定された場合であっても、当該設定されたレベルに応じて、当該未設定階層関係を静的または動的に設定することが可能となる。
【0100】
なお、上記した本実施形態においては、検索者20によって検索実行部12に検索要求が出され、管理者30によってデータ解析部11に語彙階層関係グラフ作成要求が出される構成としているが、全ての要求を入力する要求制御部を設ける構成でも構わない。この場合、要求制御部は、入力された要求を解釈し、データ解析部11または検索実行部12に処理を自動で振り分けることが可能となる。
【0101】
また、本実施形態に係る構造化文書検索装置10は、上記したように検索装置として説明したが、検索対象データを検索対象データ格納部131に登録する機能を有する構成であっても良い。また、構造化文書検索装置10は、検索対象データを更新または削除する機能を含む管理装置として利用される構成であっても構わない。
【0102】
また、本実施形態において、検索結果に対して例えば検索者20によって入力された当該検索結果に対する評価を取得する構成であっても構わない。この場合、検索者20によって入力された評価に基づいて、例えば語彙階層関係グラフを自動的に修正する構成とすると良い。修正された語彙階層関係グラフに基づいて検索処理が実行されることにより、より検索者20の所望の構造化文書を検索することが可能となる。
【0103】
同様に、上記した予め定義されたレベルに対して例えば検索者20によって入力された評価を取得する構成であっても良い。この場合であっても、検索者20によって入力された評価に基づいて、例えばレベルに対応付けられているタイプまたは動作内容を自動的に変更することも可能である。
【0104】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【0105】
【図1】本発明の実施形態に係る構造化文書検索装置10の構成を示すブロック図。
【図2】語彙階層関係グラフが作成される際の処理手順を示すフローチャート。
【図3】検索者20からの検索要求に応じた検索が実行される際の処理手順を示すフローチャート。
【図4】検索対象データの具体例を示す図。
【図5】解析対象データの階層構造を示す構造グラフを作成する処理手順を示すフローチャート。
【図6】図4に示す天気予報データ100の階層構造を示す構造グラフ200の一例を示す図。
【図7】構造グラフを用いて語彙階層関係グラフを作成する処理手順を示すフローチャート。
【図8】語彙階層関係グラフ作成部112によって作成された語彙階層関係グラフ300の省略図。
【図9】検索式を作成する処理手順を示すフローチャート。
【図10】変換データ格納部133に格納されている変換データのデータ構造の一例を示す図。
【図11】クエリ作成部121によって作成されたXPath式による検索結果の一例を示す図。
【図12】予め定義された設定レベルを示す情報のデータ構造の一例を示す。
【符号の説明】
【0106】
10…構造化文書検索装置、11…データ解析部、12…検索実行部、13…記憶部、111…データ解析制御部、112…語彙階層関係グラフ作成部、121…クエリ作成部、122…検索制御部、131…検索対象データ格納部、132…語彙階層関係グラフ格納部、133…変換データ格納部。

【特許請求の範囲】
【請求項1】
検索対象となる複数の構造化文書が格納されている検索対象データ格納手段に対して、ユーザによって指定される複数の文字列を含む検索条件に応じて検索を実行する構造化文書検索装置において、
前記検索対象データ格納手段に格納されている複数の構造化文書の各々に含まれる語彙間の階層関係を示す語彙階層関係グラフを、当該構造化文書毎に格納する語彙階層関係グラフ格納手段と、
前記語彙階層関係グラフ格納手段を参照して、前記検索条件に含まれる複数の文字列から構造化文書を検索するための検索式を作成するクエリ作成手段と、
前記作成された検索式に合致する検索対象データを前記検索対象データ格納手段から検索する検索手段と
を具備することを特徴とする構造化文書検索装置。
【請求項2】
検索対象となる複数の構造化文書が格納されている検索対象データ格納手段に対して、ユーザによって指定される複数の文字列を含む検索条件に応じて検索を実行する構造化文書検索装置において、
前記検索対象データ格納手段に格納されている構造化文書を取得する文書取得手段と、
前記取得された構造化文書を解析した結果に基づいて、前記構造化文書に含まれる語彙を頂点として、当該構造化文書の階層構造を示す構造グラフを作成する構造グラフ作成手段と、
前記作成された構造グラフ上で、特定の距離以内に存在する任意の2頂点及び当該任意の2頂点間の階層関係を表す辺に基づいて、前記文書取得手段によって取得された構造化文書に含まれる語彙間の階層関係を示す語彙階層関係グラフを作成する語彙階層関係グラフ作成手段と、
前記作成された語彙階層関係グラフを格納する語彙階層関係グラフ格納手段と、
前記語彙階層関係グラフ格納手段を参照して、前記検索条件に含まれる複数の文字列から構造化文書を検索するための検索式を作成するクエリ作成手段と、
前記作成された検索式に合致する検索対象データを前記検索対象データ格納手段から検索する検索手段と
を具備することを特徴とする構造化文書検索装置。
【請求項3】
文字列間の階層関係を示す関係情報及び当該文字列間の階層関係を有する構造化文書を検索するための検索式を示す検索式情報が予め対応付けて格納されている変換データ格納手段を更に具備し、
前記クエリ作成手段は、
前記検索条件に含まれる文字列を並び替えることによって、当該検索条件を複数の検索条件に展開する展開手段と、
前記展開された複数の検索条件の各々に含まれる複数の文字列の並び順または前記語彙階層関係グラフ格納手段に格納されている語彙階層関係グラフによって示される語彙間の階層関係に基づいて、前記複数の検索条件の各々に対してスコアリングする評価手段と、
前記スコアリングされた結果、スコアが所定の値以上である検索条件に含まれる複数の文字列を語彙として含む語彙階層関係グラフを取得する取得手段と、
前記取得された語彙階層関係グラフによって示される前記複数の文字列間の階層関係を示す関係情報に対応付けて前記変換データ格納手段に格納されている検索式情報によって示される検索式を作成する検索式作成手段とを含む
ことを特徴とする請求項1または2のいずれか1項に記載の構造化文書検索装置。
【請求項4】
前記構造グラフ作成手段は、
前記取得された構造化文書を解析した結果に基づいて、前記文書取得手段によって取得された構造化文書に含まれる語彙を取得する語彙取得手段と、
前記取得された語彙に対して、構造化文書内での出現回数、出現箇所または当該構造化文書の階層構造に応じて、スコアリングする評価手段と、
前記スコアリングされた結果、スコアが所定の値以上である語彙を抽出する抽出手段とを含み、
前記取得された構造化文書の前記抽出された語彙から構造グラフを作成する
ことを特徴とする請求項2記載の構造化文書検索装置。
【請求項5】
複数の構造化文書の各々に含まれる語彙間の階層関係を示す語彙階層関係グラフを、当該構造化文書毎に格納する語彙階層関係グラフ格納手段を有し、検索対象となる前記複数の構造化文書が格納されている検索対象データ格納手段に対して、ユーザによって指定される複数の文字列を含む検索条件に応じて検索を実行する構造化文書検索方法において、
前記語彙階層関係グラフ格納手段を参照して、前記検索条件に含まれる複数の文字列から構造化文書を検索するための検索式を作成するステップと、
前記作成された検索式に合致する検索対象データを前記検索対象データ格納手段から検索するステップと
を具備することを特徴とする構造化文書検索方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate