JP2008305124A - Xml文書の適合度の算出方法、情報処理装置およびプログラム - Google Patents
Xml文書の適合度の算出方法、情報処理装置およびプログラム Download PDFInfo
- Publication number
- JP2008305124A JP2008305124A JP2007151199A JP2007151199A JP2008305124A JP 2008305124 A JP2008305124 A JP 2008305124A JP 2007151199 A JP2007151199 A JP 2007151199A JP 2007151199 A JP2007151199 A JP 2007151199A JP 2008305124 A JP2008305124 A JP 2008305124A
- Authority
- JP
- Japan
- Prior art keywords
- information
- word
- path
- node
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】蓄積されたXML文書に対して、検索パスと検索単語を入力して適合度の算出を行う場合に、処理を高速化することを目的とする。
【解決手段】本発明の情報処理装置において、処理部は、検索単語に対応する単語出現ノード情報として、この検索単語を含むXML文書の識別情報、ノードの識別情報、および、パスの識別情報、を記憶部から取り出し、そのパスの識別情報と検索パスを比較することで、必要な単語出現ノード情報を抽出する、つまり、不要な単語出現ノード情報を削除することができる。これにより、検索単語に関する統計情報を算出するときに、その算出に使用する単語出現ノード情報の数を減少させ、部分文書に関する当該検索単語の適合度の算出に要する処理を高速化することができる。
【選択図】図1
【解決手段】本発明の情報処理装置において、処理部は、検索単語に対応する単語出現ノード情報として、この検索単語を含むXML文書の識別情報、ノードの識別情報、および、パスの識別情報、を記憶部から取り出し、そのパスの識別情報と検索パスを比較することで、必要な単語出現ノード情報を抽出する、つまり、不要な単語出現ノード情報を削除することができる。これにより、検索単語に関する統計情報を算出するときに、その算出に使用する単語出現ノード情報の数を減少させ、部分文書に関する当該検索単語の適合度の算出に要する処理を高速化することができる。
【選択図】図1
Description
本発明は、蓄積した複数のXML(eXtensible Markup Language)文書に関して、検索パスと検索単語を有する検索クエリ(問合せ)に対する適合度の算出を行う技術に関する。
近年、コンピュータ装置で文書を作成する場合、マークアップ言語の1つであるXMLを使用することが多い。XMLにより作成された文書であるXML文書(以下、単に「文書」ともいう。)は、多く利点を有するからである。
たとえば、XML文書は、文書の構造を表現および管理するためのタグの内容を使用者が定義できるため使いやすく、また、階層構造となっているのでデータ整理に適している。さらに、XML文書は、データがバイナリデータでなくテキストデータであるので使用者がデータの内容を容易に確認でき、また、世界標準として認定されているので他の多くのアプリケーションと互換性がある。
たとえば、XML文書は、文書の構造を表現および管理するためのタグの内容を使用者が定義できるため使いやすく、また、階層構造となっているのでデータ整理に適している。さらに、XML文書は、データがバイナリデータでなくテキストデータであるので使用者がデータの内容を容易に確認でき、また、世界標準として認定されているので他の多くのアプリケーションと互換性がある。
そして、XML文書の増加にともなって、蓄積された複数のXML文書に対する検索の精度や速度の向上の必要性も高くなってきている。なお、以下、検索クエリに対する文書の適合性によって行われる順位付けのことをランキングという。また、検索時は、文書中の検索単語の出現に関する何らかの統計情報(統計量)を利用してスコアを算出し、そのスコアの大小関係によってランキングが行われる。
蓄積された文書に対するランキングの手法としては、文書の記述内容を統計的に分析する手法が多く用いられている(たとえば非特許文献1参照)。
なお、スコアの算出に利用される統計情報として、一般に、「文書の集合全体に関する統計情報(全文書の長さの平均(以下、「平均長さ」という。)など)」、「文書(ごと)に関する統計情報(各文書の長さなど)」、「検索単語に関する統計情報(各文書における検索単語の出現頻度など)」が用いられる。
なお、スコアの算出に利用される統計情報として、一般に、「文書の集合全体に関する統計情報(全文書の長さの平均(以下、「平均長さ」という。)など)」、「文書(ごと)に関する統計情報(各文書の長さなど)」、「検索単語に関する統計情報(各文書における検索単語の出現頻度など)」が用いられる。
また、XML文書に対して効率的な検索を実現しようとする場合、構造化データであるXML文書からその検索に必要な記述内容を高速に取り出すことが可能でなければならない。そこで、一般的には、XML文書の構造と記述内容を記録したインデックス(構造インデックス)をあらかじめ構築しておく。そして、構造インデックスの構築には様々な方法が存在するが、多くの場合、XML文書の持つ全てのパス(データの所在を示す文字列。たとえば「/book/chapter/section」など)とそのパスに対応する記述内容を関連付けるパスインデックスが構築される(たとえば特許文献1参照)。
そして、XML文書はその構造に意味を持っているため、XML文書に対するランキングは、XML文書の構造を利用して行うことが望ましい。そうすることで、精度の高い検索結果が期待できるからである。つまり、XML文書のランキングでは、従来のランキング時に行っていたように文書単位でスコアを算出するのではなく、部分文書(XML文書の一部)単位でスコアを算出することが好ましい。
すなわち、XML文書のランキングに関するスコアの算出に利用される統計情報として、「文書の集合全体に関する統計情報」ではなく「部分文書の集合全体に関する統計情報」、また、「文書(ごと)の統計情報」ではなく「部分文書(ごと)の統計情報」を使用することが望ましい。また、「検索単語に関する統計情報」に関しても、たとえば、その出現位置を文書単位ではなくもっと詳細に識別するなどしたほうがよい。
岸田和明、外2名、「検索実験の方法と実際:NTCIRワークショップでの試み」、Pre-meeting Lecture at the NTCIR-3 Workshop、2002年10月8日、p.9-10 特開2006−228155号公報
岸田和明、外2名、「検索実験の方法と実際:NTCIRワークショップでの試み」、Pre-meeting Lecture at the NTCIR-3 Workshop、2002年10月8日、p.9-10
しかしながら、前記した「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」は、検索クエリの内容に依存して変化する。これは、検索クエリにおける検索パスの内容によって、該当する部分文書の範囲が変わるためである。
したがって、前記した非特許文献1や特許文献1を含む従来技術では、検索(ランキング)の都度、それらの統計情報を算出しなければならず、蓄積されたXML文書が大量になると算出コストが膨大になり、その結果、処理が遅くなってしまうという問題があった(詳細は「発明を実施するための最良の形態」の冒頭に記載)。
したがって、前記した非特許文献1や特許文献1を含む従来技術では、検索(ランキング)の都度、それらの統計情報を算出しなければならず、蓄積されたXML文書が大量になると算出コストが膨大になり、その結果、処理が遅くなってしまうという問題があった(詳細は「発明を実施するための最良の形態」の冒頭に記載)。
そこで、本発明は、前記問題点に鑑みてなされたものであり、蓄積されたXML文書に対して、検索パスと検索単語を指定して適合度の算出を行う場合に、処理を高速化することを目的とする。
前記課題を解決するために、本発明にかかる情報処理装置は、記憶部と処理部を有する。
記憶部は、XML文書群、前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、前記XML文書を構成するノードごとに、当該ノードを含むXML文書の識別情報、当該XML文書における当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、および、当該パスの配下の部分文書に関する統計情報、が関連付けられたノード情報、前記XML文書群に用いられる単語ごとに、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および、前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、を記憶する。
処理部は、検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、前記単語情報から、当該検索単語に対応する単語出現ノード情報として、XML文書の識別情報、ノードの識別情報、および、パスの識別情報、を取り出し、前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、XML文書の識別情報、当該XML文書における当該ノードの識別情報、および、部分文書に関する統計情報、を取り出し、前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する。
記憶部は、XML文書群、前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、前記XML文書を構成するノードごとに、当該ノードを含むXML文書の識別情報、当該XML文書における当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、および、当該パスの配下の部分文書に関する統計情報、が関連付けられたノード情報、前記XML文書群に用いられる単語ごとに、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および、前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、を記憶する。
処理部は、検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、前記単語情報から、当該検索単語に対応する単語出現ノード情報として、XML文書の識別情報、ノードの識別情報、および、パスの識別情報、を取り出し、前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、XML文書の識別情報、当該XML文書における当該ノードの識別情報、および、部分文書に関する統計情報、を取り出し、前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する。
かかる発明によれば、検索単語に対応する単語出現ノード情報として、この検索単語を含むXML文書の識別情報、ノードの識別情報、および、パスの識別情報、を取り出し、そのパスの識別情報と検索パスを比較することで、必要な単語出現ノード情報を抽出する、つまり、不要な単語出現ノード情報を削除することができる。これにより、検索単語に関する統計情報を算出するときに、その算出に使用する単語出現ノード情報の数を減少させ、部分文書に関する当該検索単語の適合度の算出に要する処理を高速化することができる。
また、本発明にかかる情報処理装置は、処理部が、前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードの識別情報に対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する。
かかる発明によれば、記憶部のXML文書群に新たなXML文書が追加された場合でも、その追加されたXML文書に関する単語出現ノード情報を単語情報に追加することで、単語情報を適宜更新することができる。
さらに、本発明にかかる情報処理装置は、処理部が、前記ノードの識別情報として、開始ラベル値および終了ラベル値を用い、前記開始ラベル値は当該ノードの親ノードの開始ラベル値より大きく、かつ、前記終了ラベル値は当該ノードの親ノードの終了ラベル値より小さくなるように付与して使用し、前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出するときに、当該単語出現ノード情報が当該部分文書の位置情報の示す範囲に含まれるか否かを、それらの情報における前記開始ラベル値および終了ラベル値の大小関係によって判断する。
かかる発明によれば、ノードの識別情報として、開始ラベル値および終了ラベル値を前記のように用いることで、単語出現ノード情報が部分文書の位置情報の示す範囲に含まれるか否かを容易に判断することができる。
さらに、本発明にかかる情報処理装置は、記憶部と処理部を有する。
記憶部は、XML文書群、前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、前記XML文書群に含まれるテキストデータごとに、当該テキストデータの識別情報が関連付けられたテキスト情報、前記XML文書を構成するノードごとに、当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、当該パスの識別情報に対応する部分文書に関する統計情報、および、当該部分文書に含まれる1以上の前記テキストデータの識別情報、が関連付けられたノード情報、前記XML文書群に用いられる単語ごとに、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、を記憶する。
処理部は、検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、前記単語情報から、当該検索単語に対応する単語出現ノード情報として、テキストデータの識別情報、および、パスの識別情報、を取り出し、前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、ノードの識別情報、1以上のテキストデータの識別情報、および、部分文書に関する統計情報、を取り出し、前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する。
記憶部は、XML文書群、前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、前記XML文書群に含まれるテキストデータごとに、当該テキストデータの識別情報が関連付けられたテキスト情報、前記XML文書を構成するノードごとに、当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、当該パスの識別情報に対応する部分文書に関する統計情報、および、当該部分文書に含まれる1以上の前記テキストデータの識別情報、が関連付けられたノード情報、前記XML文書群に用いられる単語ごとに、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、を記憶する。
処理部は、検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、前記単語情報から、当該検索単語に対応する単語出現ノード情報として、テキストデータの識別情報、および、パスの識別情報、を取り出し、前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、ノードの識別情報、1以上のテキストデータの識別情報、および、部分文書に関する統計情報、を取り出し、前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する。
かかる発明によれば、検索単語に対応する単語出現ノード情報として、この検索単語を含むテキストデータの識別情報、および、パスの識別情報、を取り出し、そのパスの識別情報と検索パスを比較することで、必要な単語出現ノード情報を抽出する、つまり、不要な単語出現ノード情報を削除することができる。これにより、検索単語に関する統計情報を算出するときに、その算出に使用する単語出現ノード情報の数を減少させ、部分文書に関する当該検索単語の適合度の算出に要する処理を高速化することができる。
また、本発明にかかる情報処理装置は、処理部が、前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する。
かかる発明によれば、記憶部のXML文書群に新たなXML文書が追加された場合でも、その追加されたXML文書に関する単語出現ノード情報を単語情報に追加することで、単語情報を適宜更新することができる。
本発明にかかるプログラムは、XML文書の適合度の算出方法をコンピュータに実行させることを特徴とするプログラムである。
かかる発明によれば、XML文書の適合度の算出方法をコンピュータに実行させることができる。
本発明によれば、蓄積されたXML文書に対して、検索パスと検索単語を指定して適合度の算出を行う場合に、処理を高速化することができる。
以下、本発明にかかる情報処理装置、XML文書の適合度の算出方法およびそのプログラムを実施するための最良の形態(以下、実施形態という。)について、適宜図面を参照しながら説明する。なお、言及する参照図以外の図も適宜参照するものとする。
その前に、理解を容易にするため、図21〜図24を参照しながら、比較例(従来技術)および用語について説明する。
その前に、理解を容易にするため、図21〜図24を参照しながら、比較例(従来技術)および用語について説明する。
図21は、比較例の統計情報を用いたランキング例を示したものであり、(a)が文書例、(b)が適合度(ランキング)の計算例1、(c)が適合度の計算例2の説明図である。
図21(a)に示すように、ここでは、3つの文書(文書01〜03)に対して、単語「特許」で検索を行う場合について説明する。なお、ここでの文書は、XML文書であってもなくても、いずれでもよい。また、3つの文書における検索単語の出現回数と文書のテキスト長は、図示した通りである。
図21(a)に示すように、ここでは、3つの文書(文書01〜03)に対して、単語「特許」で検索を行う場合について説明する。なお、ここでの文書は、XML文書であってもなくても、いずれでもよい。また、3つの文書における検索単語の出現回数と文書のテキスト長は、図示した通りである。
図21(b)は、検索単語の出現回数でランキングを行った結果を示している。また、図21(c)は、検索単語の出現頻度(出現回数/テキスト長)でランキングを行った結果を示している。
そして、この比較例では、一般に、前記したような統計情報(検索単語の出現回数や出現頻度)と単語の出現位置(出現文書の識別子)を記録したインデックス(テキストインデックス)を構築しておく。そして、検索時には、構築してあるテキストインデックスを用いることで、検索単語の出現位置を特定し、高速なスコア(適合度)算出を行うことができる。
なお、検索文字列に複数の単語が含まれている場合は、各単語に関してスコア算出を行い、所定の計算式によりそれらのスコアを統合するなどすればよい。
そして、この比較例では、一般に、前記したような統計情報(検索単語の出現回数や出現頻度)と単語の出現位置(出現文書の識別子)を記録したインデックス(テキストインデックス)を構築しておく。そして、検索時には、構築してあるテキストインデックスを用いることで、検索単語の出現位置を特定し、高速なスコア(適合度)算出を行うことができる。
なお、検索文字列に複数の単語が含まれている場合は、各単語に関してスコア算出を行い、所定の計算式によりそれらのスコアを統合するなどすればよい。
次に、図22を参照しながら、構造化データであるXML文書の構造について説明する。図22において、(a)はXML文書のソースコードの例の簡略図、(b)はXML文書の構造(木構造)を示した図である。
図22(a)に例示しているように、XML文書001のソースコードにおいて、XML文書の構成要素を識別するために使われるマーク(「<book>」など)をタグという。
図22(a)に例示しているように、XML文書001のソースコードにおいて、XML文書の構成要素を識別するために使われるマーク(「<book>」など)をタグという。
また、XML文書は、図22(b)に示すように、ディレクトリ構造のような木構造を有しており、各要素(ノード)はパス(「/book/chapter」など。以下、同様に記載)で表現される。なお、各ノードには、ノード「n1」の子ノードには「n11」〜「n13」、ノード「n12」の子ノードには「n121」〜「n124」、・・・、と、階層的に符号を付してある(他図も同様)。
このように、XML文書は、記述内容とは別に、タグによってそれぞれの記述内容の意味(属性)が付与されているため、単語とともにパスを指定して検索することで、大きな1つのXML文書から必要とする部分を取り出すことができる。そして、前記したように、1つのXML文書から取り出される文書の一部を部分文書という。
図22の例では、XML文書001は本のデータを表しており、この本のタイトルの記述内容だけを取り出したい場合、検索パスを「/book/title」と指定することで、タイトルの記述内容だけを取り出すことができる。
図22の例では、XML文書001は本のデータを表しており、この本のタイトルの記述内容だけを取り出したい場合、検索パスを「/book/title」と指定することで、タイトルの記述内容だけを取り出すことができる。
また、図22(b)に示すように、XML文書001は、「/book」の配下に本の記述内容が章(chapter)別に格納されている。XML文書001の中から特に単語「地球」について詳しく書かれている部分文書を取り出したい場合に、たとえば、章ごとに調査したいときは、「/book/chapter」の配下の「text」に対して単語「地球」で検索を行えばよい。また、章よりもさらに詳しい節(section)ごとに調査したいときは、「/book/chapter/section」の配下の「text」に対して単語「地球」で検索を行えばよい。いずれの場合も、スコアの高い部分文書がランキング上位の部分文書になる。
続いて、図23を参照しながら、検索パス(パス指定)の違いによる部分文書の違いについて説明する。図23の(a)と(b)は、図22(b)の構造の例について、それぞれのパスによる部分文書の範囲を示した図である。
図23(a)に示すように、検索パス(パス指定)を「/book/chapter」とすれば、それぞれの「chapter」(n12,n13など)以下のノードが部分文書となる。一方、図23(b)に示すように、検索パス(パス指定)を「/book/chapter/section」とすれば、それぞれの「section」(n124など)以下のノードが部分文書となる。このように、パスの内容によって、部分文書の範囲は異なる。
図23(a)に示すように、検索パス(パス指定)を「/book/chapter」とすれば、それぞれの「chapter」(n12,n13など)以下のノードが部分文書となる。一方、図23(b)に示すように、検索パス(パス指定)を「/book/chapter/section」とすれば、それぞれの「section」(n124など)以下のノードが部分文書となる。このように、パスの内容によって、部分文書の範囲は異なる。
次に、図24を参照しながら、検索パス(パス指定)の違いによる部分文書の違いの別の例について説明する。図24の(a)と(b)は、図22(b)の例について、それぞれのパスによる部分文書の範囲を示した図である。
図24(a)に示すように、検索パス(パス指定)を「/book/title」とすれば、破線で図示した1箇所だけが該当する部分文書となる。一方、図24(b)に示すように、検索パス(パス指定)を「任意のtitle」とすれば、破線で図示した3箇所(以上)が該当する部分文書となる。
図24(a)に示すように、検索パス(パス指定)を「/book/title」とすれば、破線で図示した1箇所だけが該当する部分文書となる。一方、図24(b)に示すように、検索パス(パス指定)を「任意のtitle」とすれば、破線で図示した3箇所(以上)が該当する部分文書となる。
このように、検索クエリにおける検索パスによって、該当する部分文書が変化するので、検索パスが変化するたびに、「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」も変化することになる。そのため、比較例においては、検索の都度、それらの統計情報を算出しなくてはならなかった。そして、特に、蓄積されたXML文書の数が増加すればするほど、それらの統計情報の算出コストが大きくなってしまっていた。
続いて、図1〜図20を参照しながら、本発明の各実施形態の情報処理装置、XML文書の適合度の算出方法およびそのプログラムについて説明する。
まず、本実施形態のランキング手法で用いるスコア計算式(算出式)であるBM25(非特許文献1の「3.3.1 Okapi」参照)について説明する。このBM25を用いた場合、文書kにおける単語iのスコアSqkiの計算式は、次の式(1)により与えられる。
まず、本実施形態のランキング手法で用いるスコア計算式(算出式)であるBM25(非特許文献1の「3.3.1 Okapi」参照)について説明する。このBM25を用いた場合、文書kにおける単語iのスコアSqkiの計算式は、次の式(1)により与えられる。
L:(部分)文書の集合全体の平均長さ(部分文書の集合全体に関する統計情報)
N:(部分)文書の総数(部分文書の集合全体に関する統計情報)
lk:(部分)文書kの長さ(部分文書に関する統計情報)
tfki:(部分)文書k中の単語iの出現回数((検索)単語に関する統計情報)
ni:該当する単語iを含む(部分)文書数((検索)単語に関する統計情報)
lq:検索文字列qの長さ
tfqi:検索文字列q中の検索単語iの出現回数
(第1実施形態)
図1は、本発明の第1実施形態における情報処理装置の構成図である。図1に示すように、第1実施形態の情報処理装置1は、コンピュータ装置であり、入力部2、出力部3、メモリ4、記憶部5および処理部6を備えている。
図1は、本発明の第1実施形態における情報処理装置の構成図である。図1に示すように、第1実施形態の情報処理装置1は、コンピュータ装置であり、入力部2、出力部3、メモリ4、記憶部5および処理部6を備えている。
入力部2は、データ入力を行うものであり、たとえば、キーボード、マウス、通信インターフェースなどである。情報処理装置1の使用者(以下、単に「使用者」という。)は、入力部2を使って、XML文書や検索クエリ(検索パスと検索文字列(検索単語))を入力することができる。なお、本実施形態では、使用者がXML文書の構造や記述内容をある程度把握しており、このように、検索クエリとして、文字列だけではなく、パスも指定するものとする。
出力部3は、データを出力するものであり、たとえば、ディスプレイやスピーカである。出力部3は、XML文書の検索によるランキング結果などを出力する。
メモリ4は、処理部6の作業領域であり、たとえば、RAM(Random Access Memory)である。
メモリ4は、処理部6の作業領域であり、たとえば、RAM(Random Access Memory)である。
記憶部5は、データを記憶するものであり、たとえば、ハードディスクである。記憶部5は、たとえば、1件のデータを複数の項目(フィールド)の集合として表現して、データの集合を表(テーブル)で表す、いわゆるリレーショナルデータベースである。記憶部5は、入力部2から入力されたXML文書を格納するXML文書群51、パステーブルPT(Path Table。パス情報。詳細は図4(b)で後記)、ノードテーブルNT(Node Table。ノード情報。詳細は図4(a)で後記)および転置表IT(Inverted Table。単語情報。詳細は図5で後記)を記憶している。
また、記憶部5は、図示を省略しているが、後記するXML文書の適合度の算出方法を記述したプログラムを記憶している。
また、記憶部5は、図示を省略しているが、後記するXML文書の適合度の算出方法を記述したプログラムを記憶している。
処理部6は、各種演算処理を行うものであり、たとえば、CPU(Central Processing Unit)である。処理部6は、その機能として、データ格納部61、パスインデックス部62、範囲ラベル部63、テキストインデックス部64およびランキング部65を備えている。なお、以下において、処理部6がこれらの機能以外の機能を果たす場合は、動作主体を処理部6として記載する。
データ格納部61は、入力部2から入力されたXML文書をXML文書群51に格納する。
パスインデックス部62は、入力部2から入力されたXML文書の情報に基づき、パステーブルPT(図4(b)参照)において、各パスに関する統計情報(部分文書の集合全体に関する統計情報(平均長さ(L)、部分文書数(N)))を更新する。
パスインデックス部62は、入力部2から入力されたXML文書の情報に基づき、パステーブルPT(図4(b)参照)において、各パスに関する統計情報(部分文書の集合全体に関する統計情報(平均長さ(L)、部分文書数(N)))を更新する。
範囲ラベル部63は、各ノードに範囲ラベル(開始ラベル(値)「pre」と終了ラベル(値)「post」の2値のID(IDentification)。ノードの識別情報)を付与し、ノードテーブルNT(図4(a)参照)に記録する。各ノードに対して、子ノードの範囲ラベルが親ノードの範囲ラベルの「pre」と「post」の間の値になるようにラベル付けすることで、各ノード間の上下(親子)関係がわかる(特許文献1参照)。
ここで、図2および図3を参照しながら、範囲ラベルについて説明する。図2は、XML文書のソースコードの例を示した図であり、(a)が図22と同様のXML文書001に関する図であり、(b)がその他の例としてのXML文書002に関する図である。図2の(a)と(b)に示すように、いずれのXML文書も本(book)に関するデータである。
図3は、(a)がXML文書001に対して範囲ラベルを付与した状態を示す図であり、(b)がXML文書002に対して範囲ラベルを付与した状態を示す図である。
図3(a)に示すように、XML文書001において、ノードn1(book)は範囲ラベルが(1,99)(開始ラベル「pre」が「1」で、終了ラベル「post」が「99」。以下同様)で、範囲ラベルが(2,5)のノードn11の親であることがわかる。また、ノードn11は範囲ラベルが(2,5)で、範囲ラベルが(6,47)のノードn12とは上下(親子)関係にないことがわかる。図3(b)に示したXML文書002についても、同様に、各ノードに対して範囲ラベルが付与されている。
図3(a)に示すように、XML文書001において、ノードn1(book)は範囲ラベルが(1,99)(開始ラベル「pre」が「1」で、終了ラベル「post」が「99」。以下同様)で、範囲ラベルが(2,5)のノードn11の親であることがわかる。また、ノードn11は範囲ラベルが(2,5)で、範囲ラベルが(6,47)のノードn12とは上下(親子)関係にないことがわかる。図3(b)に示したXML文書002についても、同様に、各ノードに対して範囲ラベルが付与されている。
図1に戻って、テキストインデックス部64は、入力部2から入力されたXML文書に出現する全ての単語の出現位置(文書ID(XML文書の識別情報)、パスID(パスの識別情報)および範囲ラベル)を、転置表ITに記録する。
ランキング部65は、検索時に、パステーブルPT、ノードテーブルNTおよび転置表ITから統計情報などを取り出し、各部分文書ごとのスコアを算出する。
ランキング部65は、検索時に、パステーブルPT、ノードテーブルNTおよび転置表ITから統計情報などを取り出し、各部分文書ごとのスコアを算出する。
次に、図4を参照しながら、ノードテーブルとパステーブルについて説明する。図4は、(a)がノードテーブル、(b)がパステーブルを例示した図である。
図4(a)において、(a1)はXML文書001に関するノードテーブル001NTであり、(a2)はXML文書002に関するノードテーブル002NTである。いずれのノードテーブルNTも、左から順に、XML文書の識別子を表す文書ID(docid)、範囲ラベル(「pre」と「post」)、各ノードに与えられているタグ(tag)、パスの識別子を表すパスID(pathid)、そのノードがパス指定されたときの部分文書の長さを表すlk(lk)、および、そのノードのテキストデータであるテキスト(text)のカラムから構成されている。
図4(a)において、(a1)はXML文書001に関するノードテーブル001NTであり、(a2)はXML文書002に関するノードテーブル002NTである。いずれのノードテーブルNTも、左から順に、XML文書の識別子を表す文書ID(docid)、範囲ラベル(「pre」と「post」)、各ノードに与えられているタグ(tag)、パスの識別子を表すパスID(pathid)、そのノードがパス指定されたときの部分文書の長さを表すlk(lk)、および、そのノードのテキストデータであるテキスト(text)のカラムから構成されている。
図4(b)に示すように、パステーブルPTは、左から順に、パスID(pathid)、パス(pathexp)、L(部分文書の集合全体の平均長さ)、N(部分文書の総数)のカラムから構成されている。
続いて、図5を参照しながら、転置表について説明する。図5は、転置表の例を示した図である。
図5に示すように、転置表ITは、単語(term)と出現位置(position)のカラムから構成されている。出現位置の()内は、左から順に、文書ID(docid)、パスID(pathid)、開始ラベル(pre)、終了ラベル(post)を意味しており、それらの組み合わせの1つ1つを単語出現ノード(情報)という。たとえば、転置表ITにおいて、単語「宇宙」に対応する出現位置が(001,03,3,4)であれば、文書ID(docid)が「001」であるXML文書001における開始ラベル(pre)が「3」で終了ラベル(post)が「4」のノード、つまり、図3(a)におけるノードn111に単語「宇宙」が存在していることがわかる。また、そのノードにおけるパスIDが「03」であることもわかる。
図5に示すように、転置表ITは、単語(term)と出現位置(position)のカラムから構成されている。出現位置の()内は、左から順に、文書ID(docid)、パスID(pathid)、開始ラベル(pre)、終了ラベル(post)を意味しており、それらの組み合わせの1つ1つを単語出現ノード(情報)という。たとえば、転置表ITにおいて、単語「宇宙」に対応する出現位置が(001,03,3,4)であれば、文書ID(docid)が「001」であるXML文書001における開始ラベル(pre)が「3」で終了ラベル(post)が「4」のノード、つまり、図3(a)におけるノードn111に単語「宇宙」が存在していることがわかる。また、そのノードにおけるパスIDが「03」であることもわかる。
この転置表ITにおける単語のそれぞれの出現位置にパスIDが含まれていることで、検索単語に関する各単語出現ノード(情報)が、検索パスによって特定される前記XML文書群における検索領域内のものか否かがわかり、不要な単語出現ノード(情報)を予め削除することができる。これにより、検索単語に関する統計情報を算出するときに、その算出に使用する単語出現ノード(情報)の数を減少させ、XML文書の適合度の算出に要する処理を高速化することができる(詳細は図8で後記)。
次に、図6を参照しながら、構造インデックス(パステーブルPTおよびノードテーブルNT)の構築処理について説明する。図6は、構造インデックスの構築処理を示すフローチャートである。
まず、使用者が、入力部2を介して、新たに蓄積したいXML文書を情報処理装置1に投入する。そうすると、処理部6のデータ格納部61が記憶部5のXML文書群51にそのXML文書を格納し、また、そのとき、パスインデックス部62と範囲ラベル部63が以下の処理により、構造インデックスを構築する。
まず、使用者が、入力部2を介して、新たに蓄積したいXML文書を情報処理装置1に投入する。そうすると、処理部6のデータ格納部61が記憶部5のXML文書群51にそのXML文書を格納し、また、そのとき、パスインデックス部62と範囲ラベル部63が以下の処理により、構造インデックスを構築する。
投入されたXML文書に関して、パスインデックス部62は、1つのパスを取り出す(ステップS601)。パスインデックス部62は、パステーブルPTを参照し、そのパスがすでにパステーブルPTに含まれている(存在している)か否かを判断する(ステップS602)。
パスがパステーブルPTに含まれていない場合(ステップS602でNo)、パスインデックス部62は、新しいパスIDを発行し、新たにそのパスをパステーブルPTに加え(ステップS603)、さらに、そのパスに関するLとNの値(部分文書の集合全体に関する統計情報)を計算する、すなわち、そのパスの配下の連結テキスト長をLの値とし、Nの値を「1」として、それぞれ、パステーブルPTの該当箇所に格納する(ステップS604)。
パスがすでにパステーブルPTに含まれている場合(ステップS602でYes)、パスインデックス部62は、そのパスに関するLとNの値(部分文書の集合全体に関する統計情報)を計算する、すなわち、そのパスの配下の連結テキスト長の平均をLの値とし、Nの値をインクリメント(1つ増加)して、それぞれ、パステーブルPTの該当箇所に格納する(ステップS604)。
その後、パスインデックス部62は、そのXML文書に関する全てのパス分の処理を終了したか否かを判断し(ステップS605)、終了していなければ(No)ステップS601に戻って処理を繰り返し、終了していれば(Yes)ステップS606に進む。
このようにして、ステップS601〜S605の処理により、検索に必要な3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)のうち、「部分文書の集合全体に関する統計情報」(パステーブルPTの「L」と「N」)をXML文書の投入直後(検索クエリの入力前)に算出および格納することができる。そして、これにより、検索(適合度の算出)時に「部分文書の集合全体に関する統計情報」を算出する必要がなくなり、検索処理を高速化することができるようになる。
続いて、投入されたXML文書に関し、範囲ラベル部63は、1つのノードを取り出す(ステップS606)。
その後、範囲ラベル部63は、パステーブルPTを参照し、そのノードに対応するパスIDを取り出し(ステップS607)、前記した規則性にしたがって範囲ラベルを付与し(ステップS608)、ノードテーブルNTに各値(カラムの情報)を格納する(ステップS609)。
その後、範囲ラベル部63は、パステーブルPTを参照し、そのノードに対応するパスIDを取り出し(ステップS607)、前記した規則性にしたがって範囲ラベルを付与し(ステップS608)、ノードテーブルNTに各値(カラムの情報)を格納する(ステップS609)。
つまり、ステップS609において、範囲ラベル部63は、文書ID(docid)、範囲ラベル(「pre」と「post」)、タグ(tag)およびパスID(pathid)だけでなく、そのノード配下の部分文書の長さを表すlkと、そのノードのテキストデータであるテキスト(text)に関する情報もノードテーブルNTに格納する。
その後、範囲ラベル部63は、そのXML文書に関する全てのノード分の処理を終了したか否かを判断し(ステップS610)、終了していなければ(No)ステップS606に戻って処理を繰り返し、終了していれば(Yes)ステップS611に進む。
このようにして、ステップS606〜S610の処理により、検索に必要な3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)のうち、「部分文書(ごと)に関する統計情報」(ノードテーブルNTの「lk」)をXML文書の投入直後(検索クエリの入力前)に算出および格納することができる。そして、これにより、検索(適合度の算出)時に「部分文書(ごと)に関する統計情報」を算出する必要がなくなり、検索処理を高速化することができる。
処理部6は、投入した全てのXML文書分の処理を終了したか否かを判断し(ステップS611)、終了していなければ(No)ステップS601に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
このようにして、図6のフローチャートの処理によれば、投入した全てのXML文書に関して、その投入直後に、「部分文書の集合全体に関する統計情報」および「部分文書(ごと)に関する統計情報」を算出および格納することができる。
このようにして、図6のフローチャートの処理によれば、投入した全てのXML文書に関して、その投入直後に、「部分文書の集合全体に関する統計情報」および「部分文書(ごと)に関する統計情報」を算出および格納することができる。
なお、図6のフローチャートでは、説明を簡単にするため、パスインデックス部62による処理と範囲ラベル部63による処理を分離したが、それらの処理を並列的に行うようにしてもよい。
続いて、図7を参照しながら、テキストインデックス(転置表IT)の構築処理について説明する。図7は、テキストインデックスの構築処理を示すフローチャートである。
図6に示したフローチャートの処理によって、投入されたXML文書に関して、パステーブルPTとノードテーブルNTが更新された後、処理部6のテキストインデックス部64は、ノードテーブルNTから1レコード(1ノード分のデータ)を取り出す(ステップS701)。
図6に示したフローチャートの処理によって、投入されたXML文書に関して、パステーブルPTとノードテーブルNTが更新された後、処理部6のテキストインデックス部64は、ノードテーブルNTから1レコード(1ノード分のデータ)を取り出す(ステップS701)。
続いて、テキストインデックス部64は、取り出したレコードにおける記述内容(図4(a)のノードテーブルNTの「text」のカラムのデータ)に関して、形態素解析(計算機を用いた自然言語処理の基礎技術の1つ)の手法を用いて単語に分ける(ステップS702)。
その後、テキストインデックス部64は、分けられたうちの1つの単語が転置表ITに含まれているか否かを判断する(ステップS703)。
その単語が転置表ITに含まれていなかった場合(ステップS703でNo)、テキストインデックス部64は、その単語を新たに転置表ITに登録し(ステップS704)、ステップS705に進む。その単語が転置表ITに含まれていた場合(ステップS703でYes)、テキストインデックス部64は、そのままステップS705に進む。
その単語が転置表ITに含まれていなかった場合(ステップS703でNo)、テキストインデックス部64は、その単語を新たに転置表ITに登録し(ステップS704)、ステップS705に進む。その単語が転置表ITに含まれていた場合(ステップS703でYes)、テキストインデックス部64は、そのままステップS705に進む。
ステップS705において、テキストインデックス部64は、その単語の出現位置である文書ID(docid)、パスID(pathid)および範囲ラベル(「pre」「post」)を転置表ITに格納する。たとえば、単語「宇宙」がXML文書001のノードn111に存在していれば(図3(a)参照)、XML文書001の文書ID「001」、ノードn111の開始ラベル(pre)「3」および終了ラベル(post)「4」、そのノードn111のパスID「03」(ノードテーブルNT参照により)を表す(001,03,3,4)を、転置表ITの「宇宙」に対応する「position」のカラムに格納する。
その後、テキストインデックス部64は、そのレコードに関する全ての単語分の処理を終了したか否かを判断し(ステップS706)、終了していなければ(No)ステップS703に戻って処理を繰り返し、終了していれば(Yes)ステップS707に進む。
また、テキストインデックス部64は、そのXML文書に関する全てのレコード分の処理を終了したか否かを判断し(ステップS707)、終了していなければ(No)ステップS701に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
また、テキストインデックス部64は、そのXML文書に関する全てのレコード分の処理を終了したか否かを判断し(ステップS707)、終了していなければ(No)ステップS701に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
このようにして、図7に示したフローチャートの処理により、検索に必要な3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)のうち、「検索単語に関する統計情報」(転置表ITの「position」)をXML文書の投入直後(検索クエリの入力前)に算出および格納することができる。そして、これにより、検索(適合度の算出)時に「検索単語に関する統計情報」を算出する必要がなくなり、検索処理を高速化することができる。
次に、図8を参照しながら、ランキング処理について説明する。図8は、ランキング処理を示すフローチャートである。
記憶部5のXML文書群51に蓄積された複数のXML文書に関して、検索によるランキングを行う場合、まず、使用者が入力部2を用いて検索クエリ(検索パスと検索文字列)を入力する。
記憶部5のXML文書群51に蓄積された複数のXML文書に関して、検索によるランキングを行う場合、まず、使用者が入力部2を用いて検索クエリ(検索パスと検索文字列)を入力する。
そうすると、処理部6のランキング部65は、検索クエリから検索パス、検索単語(検索文字列から抽出)、lq(検索文字列qの長さ)、および、tfqi(検索文字列q中の検索単語iの出現回数)を取り出す(算出する)(ステップS801)。
続いて、ランキング部65は、パステーブルPTを参照し、検索クエリ中のパスに対応するレコードにおける「L」、「N」およびパスID(pathid)の値を取り出す(ステップS802)。
続いて、ランキング部65は、パステーブルPTを参照し、検索クエリ中のパスに対応するレコードにおける「L」、「N」およびパスID(pathid)の値を取り出す(ステップS802)。
ランキング部65は、転置表ITから、検索単語の出現位置(文書ID(docid)、パスID(pathid)、範囲ラベル(「pre」と「post」))の値を取り出す(ステップS803)。取り出された出現位置は検索単語を含むテキストノードを示し、前記したようにその1つ1つを単語出現ノード(情報)といい、その集合を単語出現ノード群という。
ランキング部65は、検索パスと、ステップS803で取り出した単語出現ノード群のパス(パスIDからパスに戻したもの)から、検索範囲の単語出現ノードだけを絞り込む(抽出する)(ステップS804)。
ランキング部65は、ノードテーブルNTを参照し、ステップS802で取り出したパスID(pathid)に対応するレコードにおける部分文書の位置(文書ID(docid)と範囲ラベル(「pre」と「post」))および「lk」の値を取り出す(ステップS805)。なお、取り出した部分文書の集まりを部分文書群と呼ぶ。また、ステップS805では、パスIDに加えて、単語出現ノード群に含まれる文書IDも用いることで、部分文書を絞り込むことも可能である。
続いて、ランキング部65は、ステップS804で検索範囲に絞った単語出現ノード群と、ステップS805で取り出した部分文書群から、tfki(部分文書k中の単語iの出現回数)とni(該当する単語iを含む部分文書数)を算出する(ステップS8051)。ここで、ステップS804〜S8051の具体例について、図9を参照しながら説明する。
図9は、ステップS804〜S8051の具体例、すなわち、部分文書の選別と単語に関する統計情報の算出の例を示した図である。検索パスは「/book/chapter」であるものとする。そして、ステップS803で取り出した出現位置の集合が単語出現ノード群WD01として示されている。
この単語出現ノード群WD01に対してステップS804の絞り込みを行うことで、単語出現ノード群WD02とすることができる。たとえば、単語出現ノード群WD01における単語出現ノード(001,09,14,15)は、パスIDが「09」でそのパスは「/book/chapter/text/text()」(図4(b)のパステーブルPT参照)なので、検索パスの検索範囲に含まれているので、残される。
一方、単語出現ノード群WD01における単語出現ノード(001,16,77,78)は、パスIDが「16」でそのパスは「/book/column/text()」(図4(b)のパステーブルPTには不図示)なので、検索パスの検索範囲に含まれていないので、削除される。
その後、ステップS805で取り出された部分文書群PD01と、単語出現ノード群WD02とをマージ(統合)して、部分文書群PD02とし、単語に関する統計情報であるtfkiとniを算出する。ここでは、たとえば、部分文書群PD01に含まれる単語出現ノードが、単語出現ノード群WD02にあるか探す。つまり、単語出現ノード群WD02において、文書IDが「001」で、範囲ラベルが「6」〜「47」の間に含まれている単語出現ノードを探せばよい。ここでは、単語出現ノードとして、(001,09,14,15)と(001,14,23,24)が該当する。
以下、同様にして、部分文書群PD02に示すように、部分文書が3つに絞られ(文書IDが「003」の部分文書(範囲ラベルが「6」〜「27」)は単語出現ノード群WD02中の単語出現ノードを1つも含まないため、削除されている)、単語に関する統計情報であるtfki(部分文書k中の単語iの出現回数)は上から「2」、「1」および「1」であり、ni(該当する単語iを含む部分文書数)は「3」であると算出することができる。
このようにして、単語出現ノード群WD01を予め絞り込んで単語出現ノード群WD02とし、その単語出現ノード群WD02と部分文書群PD01をマージすることで、単語出現ノード群WD01と部分文書群PD01をマージする場合に比べて、処理を高速化することができる。
図8に戻って、ランキング部65は、各統計情報と前記した式(1)を用いて、該当する部分文書のスコア(適合度)を算出する(ステップS806)。
そして、ランキング部65は、ステップS806で算出したスコアの高い順に部分文書をソートすることで、ランキングを行う(ステップS807)。
そして、ランキング部65は、ステップS806で算出したスコアの高い順に部分文書をソートすることで、ランキングを行う(ステップS807)。
このように、情報処理装置1は、予め算出および格納してある3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)を用いて検索(適合度の算出、ランキング)を行うことにより、検索を高速に処理することができる。また、前記したように、単語出現ノード群を予め必要なものだけに絞り込んでおくことで、さらに、処理を高速化することができる。
(検索例)
次に、図2〜図5の具体例に対して、図8のフローチャートによる検索(ランキング)を行った場合の例について説明する。ここでは、検索クエリのうち、検索パスが「/book/chapter/text/text()」であり、検索文字列が「地球」であるものとする。
まず、lq(検索文字列qの長さ)は「2」であり、tfqi(検索文字列q中の単語i(地球)の出現回数)は「1」であると算出できる(図8のステップS801。以下、「図8の」を省略)。
次に、図2〜図5の具体例に対して、図8のフローチャートによる検索(ランキング)を行った場合の例について説明する。ここでは、検索クエリのうち、検索パスが「/book/chapter/text/text()」であり、検索文字列が「地球」であるものとする。
まず、lq(検索文字列qの長さ)は「2」であり、tfqi(検索文字列q中の単語i(地球)の出現回数)は「1」であると算出できる(図8のステップS801。以下、「図8の」を省略)。
また、パステーブルPT(図4参照)におけるパスが「/book/chapter/text/text()」のレコード(「pathid」が「09」のレコード)から、「L」は「2379」であり、「N」は「13」であることがわかる(ステップS802)。
さらに、転置表IT(図5参照)における「term」が「地球」のレコードから、単語「地球」の出現する全ての位置が、(001,09,14,15)および(001,12,19,20)であるとわかる(ステップS804)。
さらに、転置表IT(図5参照)における「term」が「地球」のレコードから、単語「地球」の出現する全ての位置が、(001,09,14,15)および(001,12,19,20)であるとわかる(ステップS804)。
また、検索パス「/book/chapter/text/text()」と、(001,09,14,15)および(001,12,19,20)のそれぞれのパス「/book/chapter/text/text()」および「/book/column」から、検索範囲の単語出現ノードを絞り込む、つまり、(001,09,14,15)を抽出する(ステップS804)。
さらに、ノードテーブル001NT(図4(a1))を参照し、ステップS802で取り出したパスID「09」に対応するレコードにおける部分文書の位置(文書ID「001」と範囲ラベル(「14」と「15」))および「lk」(部分文書kの長さ)の値「319」を取り出す(ステップS805)。
また、ステップS804で検索範囲に絞った単語出現ノード(001,09,14,15)と、ステップS805で取り出した部分文書から、tfki(部分文書k中の単語iの出現回数)「1」とni(該当する単語iを含む部分文書数)「1」を算出する(ステップS8051)。
なお、ステップS802において、検索クエリのパスの内容によっては、「L」と「N」の値が複数存在する場合もありえる。その場合の「L」と「N」の値の扱いについて、図10を参照しながら説明する。図10は、「L」と「N」の値が複数存在する場合における「L」と「N」の値の算出の説明図であり、(a)が図4(b)と同様のパステーブルPTなど、(b)が「L」と「N」の値の算出式、をそれぞれ表している。
たとえば、検索クエリのパスが「任意の位置にあるtitle(//title)」である場合、図10(a)に示すように、複数のパスが該当する(パスID(pathid)が「02」と「06」のパス)。この場合、たとえば、図10(b)の算出式に示すように、「N」の値は複数の「N(N1,N2,・・・)」の値を足したもの、「L」の値は複数の「L(L1,L2,・・・)」のそれぞれに関して、対応する「N」の値による加重平均をとったもの、として計算すればよい。具体的な算出例は、図10(a)の下半分に示した通りである。
このようにして、「L」と「N」の値が複数存在する場合でも、支障なく適合度の算出やランキングを行うことができる。
このようにして、「L」と「N」の値が複数存在する場合でも、支障なく適合度の算出やランキングを行うことができる。
(第2実施形態)
次に、図11A〜図20を参照しながら、本発明の第2実施形態について説明する。図11Aは、第2実施形態の情報処理装置の構成図である。なお、図1の情報処理装置1と同様の構成については同じ符号を付し、説明を適宜省略する。図11Aの情報処理装置1aは、図1の情報処理装置1と比べて、記憶部5aと処理部6aの構成が異なっている。
次に、図11A〜図20を参照しながら、本発明の第2実施形態について説明する。図11Aは、第2実施形態の情報処理装置の構成図である。なお、図1の情報処理装置1と同様の構成については同じ符号を付し、説明を適宜省略する。図11Aの情報処理装置1aは、図1の情報処理装置1と比べて、記憶部5aと処理部6aの構成が異なっている。
図11Aに示すように、情報処理装置1aの処理部6aは、図1の範囲ラベル部63の代わりにタグインデックス部66を備えている。タグインデックス部66は、ノードテーブルNTaにおいてノードIDを使用して各ノードに関する情報を管理する。
また、記憶部5aにおいて、ノードテーブルNTaと転置表ITaは、図1の情報処理装置1において相当するそれぞれの構成と比べて、構成要素が一部変更されている(詳細は図12と図14で後記)。さらに、記憶部5aは、図1の記憶部5と比べて、新たにテキストテーブルTT(テキスト情報)を有している(詳細は図13で後記)。
また、記憶部5aにおいて、ノードテーブルNTaと転置表ITaは、図1の情報処理装置1において相当するそれぞれの構成と比べて、構成要素が一部変更されている(詳細は図12と図14で後記)。さらに、記憶部5aは、図1の記憶部5と比べて、新たにテキストテーブルTT(テキスト情報)を有している(詳細は図13で後記)。
ここで、図11Bを参照しながら、XML文書にノードIDを付与した状態について説明する。図11Bは、(a)が図2(a)のXML文書001に対してノードIDを付与した状態を示す図であり、(b)が図2(b)のXML文書002に対してノードIDを付与した状態を示す図である。
図11B(a)に示すように、XML文書001において、ノードn1(book)はノードIDが「001」で、ノードIDが「002」のノードn11の親である。同様に、全てのノードに識別子として異なるノードIDを付与する。図11B(b)についても同様である。
図11B(a)に示すように、XML文書001において、ノードn1(book)はノードIDが「001」で、ノードIDが「002」のノードn11の親である。同様に、全てのノードに識別子として異なるノードIDを付与する。図11B(b)についても同様である。
次に、図12を参照しながら、ノードテーブルNTaについて説明する。図12(a)は、(a1)がXML文書001に関するノードテーブル001NTaであり、(a2)がXML文書002に関するノードテーブル002NTaを示す図である。いずれのノードテーブルNTaも、左から順に、ノードID(nodeid)、直近の親ノードのノードIDを表す親ノードID(parent)、各ノードに与えられているタグ(tag)、パスの識別子を表すパスID(pathid)、そのノードがパス指定されたときの部分文書の長さを表すlk、および、そのノードがパス指定されたときの部分文書に含まれるテキストデータの識別子であるテキストID(textid)(テキストの識別情報)のカラムから構成されている。
図12(b)のパステーブルPTは、図4(b)のものと同様である。
図12(b)のパステーブルPTは、図4(b)のものと同様である。
続いて、図13を参照しながら、テキストテーブルについて説明する。図13は、(a)が図12(a)と同様のノードテーブルNTaであり、(b)がテキストテーブルTTの構成図である。
図13(b)に示すように、テキストテーブルTTには、各テキストノードのテキストデータ(text)がテキストID(textid)と関連付けられて格納されている。
図13(b)に示すように、テキストテーブルTTには、各テキストノードのテキストデータ(text)がテキストID(textid)と関連付けられて格納されている。
次に、図14を参照しながら、転置表ITaについて説明する。図14は、転置表ITaの構成図である。
図14に示すように、転置表ITaは、term(単語)とposition(テキストID(textid)、パスID(pathid))のカラムから構成されている。テキストID(textid)は、図13(b)のテキストテーブルTTにおけるテキストID(textid)と対応している。パスID(pathid)は、図13(a)におけるパスID(pathid)と対応している。この転置表ITaを用いることで、検索パスによって指定される部分文書に含まれる単語出現ノードを高速で検索、抽出することができる(詳細は図19のステップS1904などで後記)。
図14に示すように、転置表ITaは、term(単語)とposition(テキストID(textid)、パスID(pathid))のカラムから構成されている。テキストID(textid)は、図13(b)のテキストテーブルTTにおけるテキストID(textid)と対応している。パスID(pathid)は、図13(a)におけるパスID(pathid)と対応している。この転置表ITaを用いることで、検索パスによって指定される部分文書に含まれる単語出現ノードを高速で検索、抽出することができる(詳細は図19のステップS1904などで後記)。
続いて、図15を参照しながら、構造インデックス(パステーブルPTおよびノードテーブルNTa)の構築処理について説明する。図15は、構造インデックスの構築処理の概要を示すフローチャートである。
まず、使用者が、入力部2を介して、新たに蓄積したいXML文書を情報処理装置1に投入する。そうすると、処理部6のデータ格納部61が記憶部5のXML文書群51にそのXML文書を格納する。それとき、投入された全てのXML文書に関して(ステップS1503でYesが選択されるまで)、パスインデックス部62がパスインデックスの構築(パステーブルPTの更新)を行い(ステップS1501。詳細は図16)、タグインデックス部66がタグインデックスの構築(ノードテーブルNTaとテキストテーブルTTの更新)を行うことにより(ステップS1502。詳細は図17)、構造インデックスを構築する。
まず、使用者が、入力部2を介して、新たに蓄積したいXML文書を情報処理装置1に投入する。そうすると、処理部6のデータ格納部61が記憶部5のXML文書群51にそのXML文書を格納する。それとき、投入された全てのXML文書に関して(ステップS1503でYesが選択されるまで)、パスインデックス部62がパスインデックスの構築(パステーブルPTの更新)を行い(ステップS1501。詳細は図16)、タグインデックス部66がタグインデックスの構築(ノードテーブルNTaとテキストテーブルTTの更新)を行うことにより(ステップS1502。詳細は図17)、構造インデックスを構築する。
図16は、パスインデックス部62によるパスインデックスの構築処理のフローチャートであるが、ステップS1601〜S1605の処理は、図6のステップS601〜S605の処理と同様であるので、説明を省略する。
図17は、タグインデックス(ノードテーブルNTaとテキストテーブルTT)の構築処理のフローチャートであり、図16のフローチャートの処理の後に行われる。
まず、投入されたXML文書から、タグインデックス部66は、1つのノードを取り出す(ステップS1701)。
次に、タグインデックス部66は、パステーブルPTを参照し、そのノードに対応するパスIDを取り出す(ステップS1702)。
タグインデックス部66は、そのノードがテキストノード(テキストデータを有するノード)である場合は、テキストデータをテキストテーブルTTに格納し(ステップS1703)、テキストテーブルTTから該当するテキストID(textid)の値を取り出す(ステップS1704)。そのノードがテキストノードでない場合、タグインデックス部66はステップS1703とステップS1704の処理を行わずにスルーする。
まず、投入されたXML文書から、タグインデックス部66は、1つのノードを取り出す(ステップS1701)。
次に、タグインデックス部66は、パステーブルPTを参照し、そのノードに対応するパスIDを取り出す(ステップS1702)。
タグインデックス部66は、そのノードがテキストノード(テキストデータを有するノード)である場合は、テキストデータをテキストテーブルTTに格納し(ステップS1703)、テキストテーブルTTから該当するテキストID(textid)の値を取り出す(ステップS1704)。そのノードがテキストノードでない場合、タグインデックス部66はステップS1703とステップS1704の処理を行わずにスルーする。
続いて、タグインデックス部66は、そのノードがルートノード(最上位のノード)か否かを判断し(ステップS1705)、ルートノードの場合(Yes)、ノードテーブルNTaのそのノードの「parent」に「0」を格納し(ステップS1710)、ステップS1711に進む。
そのノードがルートノードでない場合(ステップS1705でNo)、タグインデックス部66は、ノードテーブルNTaのそのノードの「parent」に直近の親ノードのノードIDを格納する(親ノードのノードIDをparent値とする)(ステップS1706)。
そのノードがルートノードでない場合(ステップS1705でNo)、タグインデックス部66は、ノードテーブルNTaのそのノードの「parent」に直近の親ノードのノードIDを格納する(親ノードのノードIDをparent値とする)(ステップS1706)。
ステップS1706の後、タグインデックス部66は、ルートノードに移動するまで(レコードのparent値が0になるまで。すなわち、ステップS1709でYesになるまで)、parent値をたどって1つ上の親ノードのノードテーブルNTaの行(レコード)に移動し(ステップS1707)、そのレコードのテキストID(textid)に、ステップS1704で取り出したテキストIDの値を加える(ステップS1708)。
つまり、ステップS1707〜S1709の処理により、ノードテーブルNTaにおいて、それぞれのノードにその配下のテキストデータのテキストID(textid)が全て集まることになる。たとえば、図12(a1)において、ルートノード(ノードID(nodeid)が「001」のノード)には、XML文書001のすべてのテキストデータのテキストID(textid)が集まる。
なお、ステップS1701で取り出したノードがテキストノードでない場合、タグインデックス部66は、ステップS1706〜S1709の処理を行わずにスルーする。
なお、ステップS1701で取り出したノードがテキストノードでない場合、タグインデックス部66は、ステップS1706〜S1709の処理を行わずにスルーする。
次に、タグインデックス部66は、ノードテーブルNTaの末尾に、そのノード自身のレコードを加える(ステップS1711)。このとき、タグインデックス部66は、ノードテーブルNTに、「lk」を含む各値(カラムの情報)を格納する。
タグインデックス部66は、全てのノード分の処理を終了したか否かを判断し(ステップS1712)、終了していなければ(No)ステップS1701に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
タグインデックス部66は、全てのノード分の処理を終了したか否かを判断し(ステップS1712)、終了していなければ(No)ステップS1701に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
このようにして、図17のフローチャートの処理により、図6のステップS606〜S610の場合と同様、ノードテーブルNTaを更新するときに、「部分文書(ごと)に関する統計情報」(ノードテーブルNTaの「lk」)を算出および格納することができる。そして、これにより、検索(適合度の算出)時に「部分文書(ごと)に関する統計情報」を算出する必要がなくなり、検索処理を高速化することができる。
続いて、図18を参照しながら、テキストインデックス(転置表ITa)の構築処理について説明する。図18は、テキストインデックスの構築処理を示すフローチャートである。
図15〜図17に示したフローチャートの処理によって、投入されたXML文書に関して、パステーブルPTとノードテーブルNTaが更新された後、テキストインデックス部64は、ノードテーブルNTaから1レコードを取り出す(ステップS1801)。
図15〜図17に示したフローチャートの処理によって、投入されたXML文書に関して、パステーブルPTとノードテーブルNTaが更新された後、テキストインデックス部64は、ノードテーブルNTaから1レコードを取り出す(ステップS1801)。
続いて、テキストインデックス部64は、取り出したレコードにおける記述内容(図13(a)のノードテーブルNTaの「textid」に対応する図13(b)のテキストテーブルTTにおける「text」のカラムのデータ)に関して、形態素解析の手法を用いて単語に分ける(ステップS1802)。
その後、テキストインデックス部64は、分けられたうちの1つの単語が転置表ITaに含まれているか否かを判断する(ステップS1803)。
その単語が転置表ITaに含まれていなかった場合(ステップS1803でNo)、テキストインデックス部64は、その単語を新たに転置表ITaに登録する(ステップS1804)。
その単語が転置表ITaに含まれていなかった場合(ステップS1803でNo)、テキストインデックス部64は、その単語を新たに転置表ITaに登録する(ステップS1804)。
ステップS1803でYesの場合、およびステップS1804に続き、ステップS1805において、テキストインデックス部64は、その単語の「textid」および「pathid」を転置表ITaに格納する。たとえば、単語「宇宙」がXML文書001のノードn111に存在していれば(図11B(a)参照)、ノードn111のテキストデータに該当する「textid」である「01」(図13(b)参照)、および、ノードn111に対応する「pathid」である「03」を、転置表ITa(図14参照)の「宇宙」に対応する「position」のカラムに格納する。
その後、テキストインデックス部64は、そのレコードに関する全ての単語分の処理を終了したか否かを判断し(ステップS1806)、終了していなければ(No)ステップS1803に戻って処理を繰り返し、終了していれば(Yes)ステップS1807に進む。
また、テキストインデックス部64は、そのXML文書に関する全てのレコード分の処理を終了したか否かを判断し(ステップS1807)、終了していなければ(No)ステップS1801に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
また、テキストインデックス部64は、そのXML文書に関する全てのレコード分の処理を終了したか否かを判断し(ステップS1807)、終了していなければ(No)ステップS1801に戻って処理を繰り返し、終了していれば(Yes)処理を終了する。
このようにして、図18に示したフローチャートの処理により、検索に必要な3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)のうち、「検索単語に関する統計情報」(転置表ITaの情報)をXML文書の投入直後(検索クエリの入力前)に算出および格納することができるので、検索(適合度の算出)時に「検索単語に関する統計情報」を算出する必要がなくなり、検索処理を高速化することができる。
次に、図19を参照しながら、ランキング処理について説明する。図19は、ランキング処理を示すフローチャートである。
記憶部5aのXML文書群51に蓄積された複数のXML文書に関して、検索によるランキングを行う場合、まず、使用者が入力部2を用いて検索クエリ(検索パスと検索文字列)を入力する。
記憶部5aのXML文書群51に蓄積された複数のXML文書に関して、検索によるランキングを行う場合、まず、使用者が入力部2を用いて検索クエリ(検索パスと検索文字列)を入力する。
そうすると、処理部6のランキング部65は、検索クエリから検索パス、検索単語(検索文字列から抽出)、lq(検索文字列qの長さ)、および、tfqi(検索文字列q中の検索単語iの出現回数)を取り出す(算出する)(ステップS1901)。
続いて、ランキング部65は、パステーブルPTを参照し、検索クエリ中のパスに対応するレコードにおける「L」、「N」およびパスID(pathid)の値を取り出す(ステップS1902)。
続いて、ランキング部65は、パステーブルPTを参照し、検索クエリ中のパスに対応するレコードにおける「L」、「N」およびパスID(pathid)の値を取り出す(ステップS1902)。
ランキング部65は、転置表ITaから、検索単語の出現位置(テキストID(textid)、パスID(pathid))の値を取り出す(ステップS1903)。取り出された出現位置は検索単語を含むテキストノードを示し、前記したようにその1つ1つを単語出現ノード(情報)といい、その集合を単語出現ノード群という。
ランキング部65は、検索パスと、ステップS1903で取り出した単語出現ノード群のパス(パスIDからパスに戻したもの)から、検索範囲の単語出現ノードだけを絞り込む(抽出する)(ステップS1904)。
ランキング部65は、ノードテーブルNTaを参照し、ステップS1902で取り出したパスID(pathid)に対応するレコードにおける部分文書の位置(ノードID(nodeid)、テキストID(textid))および「lk」の値を取り出す(ステップS1905)。なお、取り出した部分文書の集まりを部分文書群と呼ぶ。
続いて、ランキング部65は、検索単語の出現する部分文書を絞りtfki(部分文書k中の単語iの出現回数)とni(該当する単語iを含む部分文書数)を算出する(ステップS19051)。つまり、ステップS1904で検索範囲に絞った単語出現ノード群と、ステップS1905で取り出した部分文書群から、tfkiとniを算出する。ここで、ステップS1904〜S19051の具体例について、図20を参照しながら説明する。
図20は、ステップS1904〜S19051の具体例、すなわち、部分文書の選別と単語に関する統計情報の算出の例を示した図である。検索パスは「/book/chapter」であるものとする。そして、ステップS1903で取り出した出現位置の集合が単語出現ノード群WD11として示されている。
この単語出現ノード群WD11に対してステップS1904の絞り込みを行うことで、単語出現ノード群WD12とすることができる。たとえば、単語出現ノード群WD11における単語出現ノード(03,09)は、パスIDが「09」でそのパスは「/book/chapter/text/text()」(図12(b)のパステーブルPT参照)なので、検索パスの検索範囲に含まれているので、残される。
一方、単語出現ノード群WD11における単語出現ノード(19,16)は、パスIDが「16」でそのパスは「/book/column/text()」なので、検索パスの検索範囲に含まれていないので、削除される。
その後、ステップS1905で取り出された部分文書群PD11と、単語出現ノード群WD12とをマージ(統合)して、部分文書群PD12とし、単語に関する統計情報であるtfkiとniを算出する。たとえば、部分文書群PD11に含まれる単語出現ノードが、単語出現ノード群WD12にあるか探す。つまり、部分文書群PD11において、ノードIDが「004」の部分文書はテキストID「02,03,04,05,06,07」を有しているので、単語出現ノード群WD12の中でそのテキストIDを持つ単語出現ノードを探せばよい。ここでは、単語出現ノードとして、(03,09)と(05,14)が該当する。
以下、同様にして、部分文書群PD12に示すように、部分文書が3つに絞られ(ノードIDが「234」の部分文書は単語出現ノード群WD12中の単語出現ノードを1つも含まないため、削除されている)、単語に関する統計情報であるtfki(部分文書k中の単語iの出現回数)は上から「2」、「1」および「1」であり、ni(該当する単語iを含む部分文書数)は「3」であると算出することができる。
このようにして、単語出現ノード群WD11を予め絞り込んで単語出現ノード群WD12とし、その単語出現ノード群WD12と部分文書群PD11をマージすることで、単語出現ノード群WD11と部分文書群PD11をマージする場合に比べて、処理を高速化することができる。
図19に戻って、ランキング部65は、各統計情報と前記した式(1)を用いて、該当する部分文書のスコアを算出する(ステップS1906)。
そして、ランキング部65は、ステップS1906で算出したスコアの高い順に部分文書をソートすることで、ランキングを行う(ステップS1907)。
なお、ステップS1906とステップS1907の処理は、図8のステップS806とステップS807の処理と同様であるので、詳細な説明を省略する。
そして、ランキング部65は、ステップS1906で算出したスコアの高い順に部分文書をソートすることで、ランキングを行う(ステップS1907)。
なお、ステップS1906とステップS1907の処理は、図8のステップS806とステップS807の処理と同様であるので、詳細な説明を省略する。
このように、情報処理装置1aは、予め算出および格納してある3つの統計情報(「部分文書の集合全体に関する統計情報」、「部分文書(ごと)に関する統計情報」および「検索単語に関する統計情報」)を用いて検索(適合度の算出、ランキング)を行うことにより、検索を高速に処理することができる。また、前記したように、単語出現ノード群を予め必要なものだけに絞り込んでおくことで、さらに、処理を高速化することができる。
なお、各実施形態のXML文書の適合度の算出方法は、前記した各フローチャートを実行するプログラムを作成することで、コンピュータ(装置)において実現することができる。さらに、それらのプログラムは、ハードディスク、フラッシュメモリ、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)などの記録媒体に保存することが可能である。
以上で実施形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。
たとえば、本実施形態では、文字列から単語を抽出する手法として、形態素解析を用いたが、N-gramなどの別の手法を用いてもよい。
その他、具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
たとえば、本実施形態では、文字列から単語を抽出する手法として、形態素解析を用いたが、N-gramなどの別の手法を用いてもよい。
その他、具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
1,1a 情報処理装置
2 入力部
3 出力部
4 メモリ
5,5a 記憶部
6,6a 処理部
51 XML文書群
61 データ格納部
62 パスインデックス部
63 範囲ラベル部
64 テキストインデックス部
65 ランキング部
66 タグインデックス部
IT,ITa 転置表
NT,NTa ノードテーブル
PT,PTa パステーブル
TT テキストテーブル
2 入力部
3 出力部
4 メモリ
5,5a 記憶部
6,6a 処理部
51 XML文書群
61 データ格納部
62 パスインデックス部
63 範囲ラベル部
64 テキストインデックス部
65 ランキング部
66 タグインデックス部
IT,ITa 転置表
NT,NTa ノードテーブル
PT,PTa パステーブル
TT テキストテーブル
Claims (10)
- XML(eXtensible Markup Language)文書群と、
前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報と、
前記XML文書を構成するノードごとに、当該ノードを含むXML文書の識別情報、当該XML文書における当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、および、当該パスの配下の部分文書に関する統計情報、が関連付けられたノード情報と、
前記XML文書群に用いられる単語ごとに、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報と、
前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式と、
を記憶する記憶部と、処理部と、を備える情報処理装置によるXML文書の適合度の算出方法であって、
前記処理部は、
検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付けるステップと、
前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出すステップと、
前記単語情報から、当該検索単語に対応する単語出現ノード情報として、XML文書の識別情報、ノードの識別情報、および、パスの識別情報、を取り出すステップと、
前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出するステップと、
前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、XML文書の識別情報、当該XML文書における当該ノードの識別情報、および、部分文書に関する統計情報、を取り出すステップと、
前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出するステップと、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出するステップと、
を実行することを特徴とするXML文書の適合度の算出方法。 - 前記処理部は、
前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードの識別情報に対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する
ことを特徴とする請求項1に記載のXML文書の適合度の算出方法。 - 前記処理部は、
前記ノードの識別情報として、開始ラベル値および終了ラベル値を用い、前記開始ラベル値は当該ノードの親ノードの開始ラベル値より大きく、かつ、前記終了ラベル値は当該ノードの親ノードの終了ラベル値より小さくなるように付与して使用し、
前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出するステップにおいて、
当該単語出現ノード情報が当該部分文書の位置情報の示す範囲に含まれるか否かを、それらの情報における前記開始ラベル値および終了ラベル値の大小関係によって判断する
ことを特徴とする請求項1または請求項2に記載のXML文書の適合度の算出方法。 - XML(eXtensible Markup Language)文書群と、
前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報と、
前記XML文書群に含まれるテキストデータごとに、当該テキストデータの識別情報が関連付けられたテキスト情報と、
前記XML文書を構成するノードごとに、当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、当該パスの識別情報に対応する部分文書に関する統計情報、および、当該部分文書に含まれる1以上の前記テキストデータの識別情報、が関連付けられたノード情報と、
前記XML文書群に用いられる単語ごとに、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報と、
前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式と、
を記憶する記憶部と、処理部と、を備える情報処理装置によるXML文書の適合度の算出方法であって、
前記処理部は、
検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付けるステップと、
前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出すステップと、
前記単語情報から、当該検索単語に対応する単語出現ノード情報として、テキストデータの識別情報、および、パスの識別情報、を取り出すステップと、
前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出するステップと、
前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、ノードの識別情報、1以上のテキストデータの識別情報、および、部分文書に関する統計情報、を取り出すステップと、
前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出するステップと、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出するステップと、
を実行することを特徴とするXML文書の適合度の算出方法。 - 前記処理部は、
前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する
ことを特徴とする請求項4に記載のXML文書の適合度の算出方法。 - XML(eXtensible Markup Language)文書群、
前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、
前記XML文書を構成するノードごとに、当該ノードを含むXML文書の識別情報、当該XML文書における当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、および、当該パスの配下の部分文書に関する統計情報、が関連付けられたノード情報、
前記XML文書群に用いられる単語ごとに、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および、
前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、
を記憶する記憶部と、
検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、
前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、
前記単語情報から、当該検索単語に対応する単語出現ノード情報として、XML文書の識別情報、ノードの識別情報、および、パスの識別情報、を取り出し、
前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、
前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、XML文書の識別情報、当該XML文書における当該ノードの識別情報、および、部分文書に関する統計情報、を取り出し、
前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する処理部と、
を備えることを特徴とする情報処理装置。 - 前記処理部は、
前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むXML文書の識別情報、当該XML文書における当該単語を含むノードの識別情報、および、当該ノードの識別情報に対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する
ことを特徴とする請求項6に記載の情報処理装置。 - XML(eXtensible Markup Language)文書群、
前記XML文書群に含まれるパスごとに、当該パスの識別情報と、当該パスの配下の文書である部分文書の集合全体に関する統計情報とが関連付けられたパス情報、
前記XML文書群に含まれるテキストデータごとに、当該テキストデータの識別情報が関連付けられたテキスト情報、
前記XML文書を構成するノードごとに、当該ノードの識別情報、当該ノードに対応する前記パスの識別情報、当該パスの識別情報に対応する部分文書に関する統計情報、および、当該部分文書に含まれる1以上の前記テキストデータの識別情報、が関連付けられたノード情報、
前記XML文書群に用いられる単語ごとに、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、が単語出現ノード情報として関連付けられた単語情報、および
前記部分文書に関して、当該部分文書の集合全体に関する統計情報、当該部分文書に関する統計情報、および、検索単語に関する統計情報、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する算出式、
を記憶する記憶部と、
検索単語、および、当該検索単語の前記XML文書群における検索領域を示す検索パス、の入力を受け付け、
前記パス情報から、前記検索パスに対応する、パスの識別情報、および、部分文書の集合全体に関する統計情報、を取り出し、
前記単語情報から、当該検索単語に対応する単語出現ノード情報として、テキストデータの識別情報、および、パスの識別情報、を取り出し、
前記取り出した単語出現ノード情報におけるパスの識別情報、および、前記入力された検索パスを比較して、前記入力された検索パスに対応する検索領域に含まれる単語出現ノード情報を抽出し、
前記ノード情報から、前記取り出したパスの識別情報に示されるパスの配下の部分文書の位置情報として、ノードの識別情報、1以上のテキストデータの識別情報、および、部分文書に関する統計情報、を取り出し、
前記抽出した単語出現ノード情報、および、前記取り出した部分文書の位置情報から、前記検索単語に関する統計情報を算出し、
前記取り出した部分文書の集合全体に関する統計情報、前記取り出した部分文書に関する統計情報、前記算出した検索単語に関する統計情報、および、前記算出式、に基づいて、前記部分文書に関する当該検索単語の適合度を算出する処理部と、
を備えることを特徴とする情報処理装置。 - 前記処理部は、
前記記憶部のXML文書群に新たなXML文書が追加された場合、当該追加されたXML文書に用いられる単語ごとの、当該単語を含むテキストデータの識別情報、および、当該テキストデータに対応する前記パスの識別情報、を単語出現ノード情報として前記単語情報に追加することで、前記単語情報を更新する
ことを特徴とする請求項8に記載の情報処理装置。 - 請求項1から請求項5までのいずれか1項に記載のXML文書の適合度の算出方法をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007151199A JP2008305124A (ja) | 2007-06-07 | 2007-06-07 | Xml文書の適合度の算出方法、情報処理装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007151199A JP2008305124A (ja) | 2007-06-07 | 2007-06-07 | Xml文書の適合度の算出方法、情報処理装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008305124A true JP2008305124A (ja) | 2008-12-18 |
Family
ID=40233809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007151199A Pending JP2008305124A (ja) | 2007-06-07 | 2007-06-07 | Xml文書の適合度の算出方法、情報処理装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008305124A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9524354B2 (en) | 2012-09-18 | 2016-12-20 | International Business Machines Corporation | Device, method, and program for processing data with tree structure |
-
2007
- 2007-06-07 JP JP2007151199A patent/JP2008305124A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9524354B2 (en) | 2012-09-18 | 2016-12-20 | International Business Machines Corporation | Device, method, and program for processing data with tree structure |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4839195B2 (ja) | Xml文書の適合度の算出方法およびそのプログラムと、情報処理装置 | |
JP2013531289A (ja) | 検索におけるモデル情報群の使用 | |
CN111522901A (zh) | 文本中地址信息的处理方法及装置 | |
JP4832952B2 (ja) | データベース解析システム及びデータベース解析方法及びプログラム | |
CN101763424B (zh) | 根据文件内容确定特征词并用于检索的方法 | |
JP4381423B2 (ja) | 文書収集装置、文書収集方法、プログラムおよび記録媒体 | |
JP2018045548A (ja) | Fmea作成支援システムおよび方法 | |
US9990444B2 (en) | Apparatus and method for supporting visualization of connection relationship | |
JP2009301140A (ja) | テキストセグメンテーション装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体 | |
JP2014102625A (ja) | 情報検索システム、プログラム、および方法 | |
JP2008065468A (ja) | テキスト多重分類装置、テキストを多重分類する方法、プログラムおよび記憶媒体 | |
JP2001325276A (ja) | 情報処理システム、情報処理方法、コンピュータプログラム、記憶媒体及びプログラム伝送装置 | |
JP5894273B2 (ja) | 文書関連付け方法および文書検索方法、文書関連付け装置および文書検索装置、並びにそのためのプログラム | |
JP2008305124A (ja) | Xml文書の適合度の算出方法、情報処理装置およびプログラム | |
JP5180894B2 (ja) | 属性表現獲得方法及び装置及びプログラム | |
JP2009129176A (ja) | 構造化文書検索装置、方法およびプログラム | |
WO2007105530A1 (ja) | 関連用語取得装置、関連用語取得方法、技術動向情報作成装置、技術動向情報作成方法、及びプログラム | |
JP4877930B2 (ja) | 文書処理装置及び文書処理方法 | |
JP6753190B2 (ja) | 文書検索装置及びプログラム | |
JP2005321849A (ja) | データ分析支援プログラム、データ分析支援方法、およびデータ分析支援装置 | |
JP2009140113A (ja) | 辞書編集装置、および辞書編集方法、並びにコンピュータ・プログラム | |
JP2007026116A (ja) | 概念検索システム及び概念検索方法 | |
EP1072986A2 (en) | System and method for extracting data from semi-structured text | |
JP5971069B2 (ja) | 情報処理装置、タイトル抽出方法及びプログラム | |
JP5289468B2 (ja) | 回答検索装置、方法、及びプログラム |