JP2013246522A - Structured document retrieval device and program - Google Patents
Structured document retrieval device and program Download PDFInfo
- Publication number
- JP2013246522A JP2013246522A JP2012117985A JP2012117985A JP2013246522A JP 2013246522 A JP2013246522 A JP 2013246522A JP 2012117985 A JP2012117985 A JP 2012117985A JP 2012117985 A JP2012117985 A JP 2012117985A JP 2013246522 A JP2013246522 A JP 2013246522A
- Authority
- JP
- Japan
- Prior art keywords
- dag
- path
- dom
- cpu
- search
- 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
Description
本発明は、構造化言語で記述された文書(以下、「構造化文書」という。)および任意の形式でアノテーションデータが付与された構造化文書を、タグの構造及び/又は文字列データに基づいて検索する構造化文書検索装置及びその機能をコンピュータを通じて実現するプログラムに関する。 According to the present invention, a document described in a structured language (hereinafter referred to as “structured document”) and a structured document to which annotation data is assigned in an arbitrary format are based on the tag structure and / or character string data. In particular, the present invention relates to a structured document search apparatus for searching and a program for realizing the function thereof through a computer.
XML(Extensible Markup Language)は、テキストに対して構造情報の記述を可能とするデータフォーマットであり、タグと呼ばれる「<」、「>」で囲まれた文字列により、テキスト内への構造情報の記述を可能にする。XMLは、タグを入れ子状に記述することにより階層状の木構造を表現でき、タグの追加・削除により階層状の木構造を変更することができる。このため、XMLは、財務情報の記録、特許明細書の記録、電子商取引におけるデータ交換、ソフトウェアのファイル形式のフォーマットとして広く使用されている。以下、XMLを用いて記述した文書をXML文書という。XML文書では、構造とテキストの双方を検索条件に用いる検索が可能である。XML文書の検索クエリ方式には、W3C勧告のXPath等がある。 XML (Extensible Markup Language) is a data format that makes it possible to describe structural information for text. By using character strings enclosed in "<" and ">" called tags, Enable description. XML can express a hierarchical tree structure by nesting tags, and can change the hierarchical tree structure by adding / deleting tags. For this reason, XML is widely used as a format for recording financial information, recording patent specifications, exchanging data in electronic commerce, and a software file format. Hereinafter, a document described using XML is referred to as an XML document. An XML document can be searched using both the structure and text as search conditions. The search query method of the XML document includes the XPath of W3C recommendation.
一方、一般的なテキストデータに対し、アノテーションを付与するための技術の一つに、UIMA(Unstructured Information Management Architecture)がある。UIMAは、構造化されていない文書等のデータを管理するために用いられる技術であり、文書へのアノテーションタグの付与を可能とするプラットフォームを提供する。UIMAは、XMLとは異なり、木構造条件を満たす形式でタグを付ける必要がない。このため、UIMAは、計算機により得られた文法構造の解析結果、文書中の技術的に重要な部分などへのマーキングのように、必ずしも構造間に木構造関係を満たす必要がない文書構造情報の保存に利用されている。 On the other hand, UIMA (Unstructured Information Management Architecture) is one of techniques for giving annotations to general text data. UIMA is a technique used to manage data such as unstructured documents, and provides a platform that allows annotation tags to be attached to documents. Unlike XML, UIMA does not need to be tagged in a format that satisfies the tree structure condition. For this reason, UIMA does not need to satisfy the tree structure relationship between the structures, such as the analysis of the grammatical structure obtained by the computer and the marking on technically important parts in the document. Used for storage.
ところで、構造間に木構造関係を満たす保証のない文書構造情報は、今後ますます増加すると予想される。このため、木構造関係に縛られることなく、構造条件とテキスト条件による検索を可能とする技術が求められている。 By the way, it is expected that document structure information that does not guarantee a tree structure relationship between structures will increase in the future. For this reason, there is a need for a technique that enables a search based on a structural condition and a text condition without being bound by a tree structure relationship.
しかし、計算機による自動抽出により得られる結果(例えば文法構造の解析結果、テキストの意味情報(例えば重要技術・効果など)に基づく文書構造の解析結果)や人手によるマーキングの結果は、その構造情報が木構造条件を満たすとは限らない。このため、木構造条件を満たさない構造情報を含む文書に対しては、既存のXML検索手法を利用することができなかった。 However, results obtained by automatic extraction by a computer (for example, grammatical structure analysis results, document structure analysis results based on text semantic information (for example, important technologies / effects)) and manual marking results include the structure information. It does not necessarily satisfy the tree structure condition. For this reason, the existing XML search method cannot be used for a document including structural information that does not satisfy the tree structure condition.
以上の理由により、構造上の制約がないタグ情報の検索には、UIMAにより用意される検索機能が用いられている(特許文献1)。しかし、この検索方式では、タグの包含関係による階層的構造が考えられていない。従って、UIMAの用意する検索機能では、検索クエリとして指定されたテキストが、各タグに含まれるか否かを検証するブーリアン検索しか実行されていない。 For the above reasons, a search function prepared by UIMA is used for searching tag information without any structural restrictions (Patent Document 1). However, this search method does not consider a hierarchical structure based on the inclusion relationship of tags. Therefore, in the search function prepared by UIMA, only a Boolean search for verifying whether or not the text specified as the search query is included in each tag is executed.
結局、XML文書について用意された既存の検索機能やUIMAにより用意された既存の検索機能では、アノテーション付きのXML文書について、XMLによる構造条件とアノテーションによる構造条件の双方を考慮した検索を実行することができなかった。 Eventually, with the existing search function prepared for XML documents and the existing search function prepared by UIMA, for an annotated XML document, a search is performed in consideration of both the structural condition by XML and the structural condition by annotation. I could not.
本発明は、前述した問題点を考慮し、タグの構造が木構造条件を満たす構造化文書と、当該文書に対応付けられた任意のアノテーションの構造情報とで形成される構造が木構造条件を満たさない場合でも、構造条件とテキストの双方を考慮した検索を可能にする。 In the present invention, in consideration of the above-described problems, a structure formed by a structured document whose tag structure satisfies the tree structure condition and structure information of an arbitrary annotation associated with the document satisfies the tree structure condition. Even if it is not satisfied, it is possible to search in consideration of both structural conditions and text.
本明細書は、上記課題を解決する発明を複数含んでいる。その一例である発明は、プログラムを実行するプロセッサと、プログラムを格納する第1の記憶領域と、木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、構造化文書のタグの包含関係とアノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、構造化文書のテキストを割り当ててテキスト共有DOM木を生成する文書構造リスト構築部と、検索クエリとして与えられたロケーションパスに合致する要素を、テキスト共有DOM木から検索する検索処理部とを有する。 This specification includes a plurality of inventions that solve the above-described problems. The invention as an example includes a processor that executes a program, a first storage area that stores the program, a structured document that satisfies the tree structure condition, and a second storage area that stores annotation data attached to the document In addition, the text of the structured document is assigned to the structure in which the root element of the DOM (Document Object Model) tree obtained individually from the inclusion relation of the tags of the structured document and the annotation data is included. A document structure list construction unit that generates a shared DOM tree, and a search processing unit that searches the text shared DOM tree for an element that matches a location path given as a search query.
本発明によれば、任意の形式で付与されたアノテーションを含む構造情報とテキストの双方による検索を実現することができる。前述した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。 According to the present invention, it is possible to realize a search based on both structure information including an annotation given in an arbitrary format and text. Problems, configurations, and effects other than those described above will become apparent from the following description of embodiments.
以下、添付図面に基づいて、本発明の実施例を説明する。なお、本発明は、後述する実施例に限定されるものではなく、その技術思想の範囲において、種々の変形が可能である。 Embodiments of the present invention will be described below with reference to the accompanying drawings. In addition, this invention is not limited to the Example mentioned later, A various deformation | transformation is possible in the range of the technical thought.
[第1の実施例]
[概要]
本実施例では、XML文書の集合とアノテーションデータの集合を前処理して検索用データを予め作成し、この検索用データと検索クエリとの照合により、検索クエリに合致する要素を探索結果として出力する構造化文書検索装置について説明する。本実施例では、検索用データとして、XMLタグとアノテーションタグの構造情報を統合したテキスト共有DOM木を使用する。
[First embodiment]
[Overview]
In this embodiment, a set of XML documents and a set of annotation data are pre-processed to create search data in advance, and an element that matches the search query is output as a search result by matching the search data with the search query. A structured document search apparatus will be described. In this embodiment, a text sharing DOM tree in which structural information of XML tags and annotation tags is integrated is used as search data.
[装置構成]
図1−1は、構造化文書検索装置400の構成例を示す。構造化文書検索装置400は、CPU(Central Processing Unit)401、主記憶装置(メモリ)402、補助記憶装置403A、ユーザインタフェース部406を有する計算機として構成される。この構造化文書検索装置400は、LAN(Local Area Network)等のネットワーク405を介して外部のネットワーク装置に接続されている。
[Device configuration]
FIG. 1-1 shows a configuration example of the structured
CPU401は、主記憶装置402に格納されたプログラムを実行する中央演算装置である。図1−2に、主記憶装置402に格納されるプログラムを通じて実現される機能部とデータの一例を示す。なお、図1−2には、実施例1で使用するプログラムを通じて実現される機能部だけでなく、他の実施例で使用するプログラムにより実現される機能部や、各実施例で使用するデータについても表している。例えば、CPU401は、プログラムの実行により、XML文書からDOM木を構築するDOM木構築部409、アノテーションデータからDOM木を構築するDOM木構築部410、文書構造リスト構築部411、テキスト共有DOM木構築部415、テキストデータ・テキスト要素リスト構築部417、テキスト割当部418、親子関係解析・登録部419、ロケーションパス検索部420、DOM DAG構築部422、転置インデクス構築部424、深さ割当部427、パスDAG ID取得部428、パスDAG要素生成・登録部429、パスDAG ID登録部439、検索インデクス登録部440、XML要素検索部443、アノテーション要素検索部444、拡張ウェーブレット木構築部451、検索インデクス構築部454、簡易ビットベクトル・ウェーブレット木構築部455として機能する。
The
主記憶装置402は、RAM(Random Access Memory)等の記憶装置である。主記憶装置402は、前述したプログラム及びプログラムの実行に用いるパスDAG423等を記憶する。また、主記憶装置402は、必要があれば、XML文書集合407、アノテーションデータ集合408、文書構造リスト412も一時的に記憶する。
The
補助記憶装置403Aは、XML文書、アノテーションデータ、前述したプログラム等を格納するHDD等の記憶装置又は記憶媒体である。
The
リムーバブルメディア404は、XML文書やアノテーションデータ等を記録したCD−ROM、DVD等の記録媒体である。補助記憶装置403A及びリムーバブルメディア404に記録された各データは、構造化文書検索装置400の起動時に、必要に応じ、主記憶装置402に読み出される。
The
ユーザインタフェース部406は、ユーザインタフェースを提供する入出力装置(例えば、キーボード、マウス、ディスプレイ)である。
The
CPU401は、主記憶装置402、補助記憶装置403A、リムーバブルメディア404、又は、ネットワーク405を介して接続された外部記憶装置403Bから、必要に応じ、XML文書と当該文書に付されたアノテーションデータを取得する。ここで、外部記憶装置403Bは、HDD等の記憶装置又は記憶媒体である。また、ネットワーク405は、ローカルエリアネットワークでも、インターネットでもよい。また、ネットワーク405は有線ネットワークでも無線ネットワークでもよい。CPU401は、これらの記憶装置から取得したXML文書とアノテーションデータに基づいて、検索インデクス430を作成する。作成された検索インデクス430は、主記憶装置402に記憶される。
The
前述の説明においては、XML文書とアノテーションデータは、主記憶装置402、補助記憶装置403A、リムーバブルメディア404、ネットワーク405上の外部記憶装置403Bにいずれかに格納される例を示したが、CPU401が読み書き可能な記憶装置上に格納されていればよい。例えばXML文書は補助記憶装置403Aに格納し、アノテーションデータは主記憶装置402に格納しても良い。
In the above description, an example in which the XML document and the annotation data are stored in any of the
CPU401は、前述した各機能部に対応するプログラムを実行し、所定の機能を実現する機能部として動作する。例えばCPU401は、文書構造構築プログラムに従って動作することにより、テキスト共有DOM木構築部415として機能する。他のプログラムについても同様である。例えばCPU401は、ロケーションパス検索プログラムに従って動作することにより、ロケーションパス検索部420として機能する。また、CPU401は、検索インデクス構築プログラムに従って動作することにより、検索インデクス構築部454として機能する。
The
ロケーションパス検索部420、DOM DAG構築部422及び検索インデクス構築部454の各機能を実現するプログラム、テーブル等の情報は、補助記憶装置403A、リムーバブルメディア404、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、又は、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
Information such as programs and tables for realizing the functions of the location
[アノテーションデータ]
続いて、アノテーションデータについて説明する。アノテーションは、XML文書内のテキスト領域に対して、タグを付与することで与えられる。アノテーションにより付与されるタグをアノテーションタグと呼ぶ。アノテーションタグは、互いに包含関係による構造が、木構造となるグループに事前に分けられていることを想定する。アノテーションタグのグループをアノテーショングループと呼び、各アノテーショングループには整数によるIDが割り振られる。異なるアノテーショングループに属するアノテーションタグ同士は、木構造条件を満たす必要はない。
[Annotation data]
Next, annotation data will be described. An annotation is given by adding a tag to a text area in an XML document. A tag given by annotation is called an annotation tag. It is assumed that the annotation tag has a structure based on an inclusive relationship divided in advance into a group having a tree structure. An annotation tag group is called an annotation group, and an integer ID is assigned to each annotation group. Annotation tags belonging to different annotation groups do not need to satisfy the tree structure condition.
図2は、XML文書に付与されたアノテーションとアノテーショングループの例を示す。「アノテーショングループ1」においては、文書中のテキスト「耐久性を向上」に「効果」というアノテーションタグが付与されており、テキスト「ナイフに関する」に「内容」というアノテーションタグが付与されている。これらのタグは、お互い重なることなく木構造条件を満たしている。また、「アノテーショングループ2」においては、文書中のテキスト「医療用」に「対象」というアノテーションタグが付与されており、テキスト「医療用ナイフ」に「道具」というアノテーションタグが付与されている。これらのアノテーションタグ同士は、入れ子の関係になっているので木構造条件を満たす。
FIG. 2 shows an example of annotations and annotation groups given to the XML document. In “
一方、「アノテーショングループ1」に属するアノテーションタグである「内容」と、「アノテーショングループ2」に属するアノテーションタグである「道具」とは、タグ同士が入れ子の関係になっておらず、木構造条件を満たしていない。しかし、「内容」と「道具」は異なるアノテーショングループに属するタグ同士であるため、アノテーションデータとして問題ないものである。
On the other hand, “content” that is an annotation tag belonging to “
アノテーションタグは、「タグ名、アノテーショングループID、テキスト領域の開始位置、テキスト領域の終了位置」で与えられる4つの情報の組により構成される。アノテーションデータは、各アノテーションタグについて4つの情報の組が記述されたデータの集合である。アノテーションデータの一例には、各行に、各アノテーションタグのデータであるタグ名、アノテーショングループID、テキスト領域の開始位置、テキスト領域の終了位置をタブ区切りで記述したテキストデータを考えることができる。 An annotation tag is composed of a set of four pieces of information given by “tag name, annotation group ID, start position of text area, end position of text area”. The annotation data is a set of data in which a set of four information is described for each annotation tag. As an example of annotation data, text data in which a tag name, an annotation group ID, a text region start position, and a text region end position, which are data of each annotation tag, are tab-separated can be considered in each line.
[XML要素、アノテーション要素、テキスト要素]
XML要素は、各XMLタグの開始タグ、終了タグにより表された要素であり、タグ名、テキスト領域における開始タグ、終了タグの位置を持つ。アノテーション要素は、タグ名、アノテーショングループID、各アノテーションタグの開始タグ、終了タグの位置を持つ要素である。テキスト要素は、テキスト領域を表す要素であり、テキスト領域の開始位置、終了位置、テキスト領域に含まれるテキストから構成される。
[XML elements, annotation elements, text elements]
The XML element is an element represented by a start tag and an end tag of each XML tag, and has a tag name and a position of the start tag and end tag in the text area. An annotation element is an element having a tag name, an annotation group ID, a start tag of each annotation tag, and a position of an end tag. The text element is an element that represents a text area, and includes a start position and an end position of the text area, and text included in the text area.
[DOM木の要素]
DOM木を構成する要素は、タグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置、深さを持つ。通常のXMLタグによる要素の場合、アノテーショングループIDを“0”とする。テキスト要素の場合、アノテーショングループIDを“−1”とし、タグ名の部分にテキストを保持する。
[DOM tree elements]
Elements constituting the DOM tree have a tag name, an annotation group ID, a text area start position, a text area end position, and a depth. In the case of an element using a normal XML tag, the annotation group ID is set to “0”. In the case of a text element, the annotation group ID is set to “−1”, and the text is held in the tag name portion.
[前処理の概要]
ここでは、構造化文書検索装置400が検索前に実行する前処理の概要について説明する。前処理は、文書構造リスト構築部411として機能するCPU401が実行する。CPU401は、前処理として、テキスト共有DOM木416を作成する。
[Overview of preprocessing]
Here, an overview of preprocessing executed by the structured
まず、CPU401は、XML文書集合407とアノテーションデータ集合408の中から、未処理のXML文書と対応するアノテーションデータを取得する。次に、CPU401は、DOM木構築プログラムを実行し、XML文書からDOM木を構築するDOM木構築部409と、アノテーションデータからDOM木を構築するDOM木構築部410として動作する。DOM木構築部409及び410として機能するCPU401は、XML文書のDOM木とアノテーションデータの各アノテーショングループに属する要素のDOM木を作成する。
First, the
次に、CPU401は、テキスト共有DOM木構築プログラムを実行し、テキスト共有DOM木構築部415として機能する。ここで、CPU401は、同じテキストに対して形成された2つのDOM木のルート要素を共通化した構造にテキストを割り当て、テキスト共有DOM木416を作成する。各XML文書とアノテーションデータに対して構築されたテキスト共有DOM木416は、検索に用いるデータ構造として、文書構造リスト構築部411に保持される。
Next, the
[テキスト共有DOM木]
続いて、テキスト共有DOM木416を説明する。テキスト共有DOM木416は、XMLタグに基づいて構築されたDOM木と、各アノテーショングループに属するタグに基づいて構成された1つ又は複数のDOM木から構築されるデータ構造であり、各DOM木のルート要素を共通化したデータ構造を有している。ここで、XMLタグに基づくDOM木は、DOM木構築部409として機能するCPU401が構築する。また、アノテーションタグに基づくDOM木は、DOM木構築部410として機能するCPU401が構築する。以下の説明において、単にDOM木というときは、XMLタグに基づいて構築されたDOM木又はアノテーションタグに基づいて構築されたDOM木をいう。
[Text sharing DOM tree]
Next, the text sharing
XML文書を構成するテキストは、XMLタグ及びアノテーションタグで区切られており、区切られたテキスト領域ごとにテキスト要素が構成される。各DOM木において、テキスト要素は、包含される要素のうち、ルート要素から最も深い位置の要素に割り当てられる。各テキスト領域は、単一のDOM木でなく、複数のDOM木に割り当てられる可能性がある。 The text composing the XML document is delimited by an XML tag and an annotation tag, and a text element is formed for each delimited text area. In each DOM tree, the text element is assigned to the element deepest from the root element among the included elements. Each text region may be assigned to multiple DOM trees instead of a single DOM tree.
図3は、XMLタグ<p>、<mtd>、<fx>、<val>、<attr>と、同一のアノテーションIDに属するタグ[A]と[T]でタグ付けした下記の文章から作成したテキスト共有DOM木の例を示している。
(タグ付け前の文章)
「本発明では、粉末コークスを用いることで、粗鋼を生産し、2倍の効率化を達成した。」
(タグ付け後の文章)
「<p>本発明では、[A]<mtd>粉末コークスを用いる</mtd>ことで、<fx>[T]<obj>粗鋼</obj>を生産[/T][/A]し、<val>2倍</val>の<atr>効率化</attr>を達成</fx>した。</p>」
図3に示すように、テキスト共有DOM木のルート要素には、XMLタグの<p>とアノテーションタグの[A]にエッジが接続されている。すなわち、テキスト共有DOM木は、XMLタグによるDOM木と、同一のアノテーショングループに属するアノテーションタグによるDOM木のルート要素を共通化した構造を有している。また、テキストは、XMLタグ、アノテーションタグに関わらず分割され、XMLタグ、アノテーションタグの場合に分け、テキスト領域の包含関係に基づいて、包含関係がある最も深い位置の要素に割り当てられる。例えば図3の例の場合、テキスト「粗鋼」は、XMLタグ<obj>とアノテーションタグ[T]の両方に割り当てられている。
Figure 3 is created from the following sentences tagged with XML tags <p>, <mtd>, <fx>, <val>, <attr> and tags [A] and [T] belonging to the same annotation ID An example of a text sharing DOM tree is shown.
(Sentence before tagging)
“In the present invention, by using powdered coke, crude steel was produced and the efficiency was doubled.”
(Text after tagging)
“<P> In the present invention, [A] <mtd></mtd> using powder coke is used to produce <fx> [T] <obj> crude steel </ obj> [/ T] [/ A]. <Val> 2 times </ val><atr> Efficient </ attr></fx> was achieved. </ P>
As shown in FIG. 3, an edge is connected to <p> of the XML tag and [A] of the annotation tag in the root element of the text sharing DOM tree. In other words, the text sharing DOM tree has a structure in which the root element of the DOM tree by the XML tag and the DOM tree by the annotation tag belonging to the same annotation group are shared. The text is divided regardless of the XML tag and the annotation tag, and is divided into the case of the XML tag and the annotation tag, and is assigned to the element at the deepest position having the inclusion relation based on the inclusion relation of the text region. For example, in the example of FIG. 3, the text “crude steel” is assigned to both the XML tag <obj> and the annotation tag [T].
[前処理の詳細処理]
図4に、前処理に関連して実行されるデータの流れを示す。前処理の開始は、ユーザインタフェース406を通じ、CPU401に与えられる(ステップS301)。また、CPU401は、XML文書集合407とアノテーションデータ集合408を補助記憶装置403Aから入力する(ステップS302)。なお、入力されたXML文書集合407とアノテーションデータ集合408は、作業領域としての主記憶装置402に格納される。
[Detailed preprocessing]
FIG. 4 shows the flow of data executed in connection with the preprocessing. The start of preprocessing is given to the
この段階で、CPU401は、テキスト共有DOM木構築部415としての分析処理を実行し、文書構造リスト412を構築する(ステップS303)。
At this stage, the
CPU401(テキスト共有DOM木構築部415)は、XML文書集合407の要素としてのXML文書と、XML文書に対応したアノテーションデータ集合408の要素としてのアノテーションデータ408とに基づいてテキスト共有DOM木416を生成する。CPU401(テキスト共有DOM木構築部415)が実行する前処理の詳細については後述する。前処理が終了すると、CPU401は、生成されたテキスト共有DOM木416を文書構造リスト412として、補助記憶装置403Aに出力する(ステップS304)。
The CPU 401 (text sharing DOM tree construction unit 415) generates the text sharing
[アノテーションデータ用のDOM木構築部410]
図5は、アノテーションデータからDOM木を構築するDOM木構築部410として機能するCPU401の処理動作例を示すフローチャートである。
[DOM
FIG. 5 is a flowchart illustrating a processing operation example of the
CPU401(DOM木構築部410)は、入力されたアノテーションデータのファイルを読み込み、「タグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置」の4組データの集合ASを用意する(ステップS401)。CPU401は、集合ASのうち最大のアノテーショングループIDを“g”にセットする(ステップS402)。次に、CPU401は、変数iに“1”をセットする(ステップS403)。次に、CPU401は、変数iが“g”以下か判定し、変数iが“g”より大きくなるまで、後述するステップS405〜S413を繰り返す(ステップS404)。
The CPU 401 (DOM tree construction unit 410) reads the input annotation data file, and prepares a set AS of four sets of data “tag name, annotation group ID, text region start position, text region end position” (step). S401). The
ステップS404で肯定結果が得られた場合、CPU401は、集合ASよりアノテーショングループIDが変数iとなる要素のリストをALに設定する(ステップS405)。次に、CPU401は、リストALの要素をテキスト領域開始位置の昇順にソートし、テキスト領域開始位置が同じものについては、テキスト領域の終了位置の降順にソートする(ステップS406)。
If an affirmative result is obtained in step S404, the
続いて、CPU401は、ルート要素のみからなるDOM木ATを用意し、ルート要素をvとする(ステップS407)。ここで、CPU401は、変数jに1をセットする(ステップS408)。次に、CPU401は、変数jがリストALの長さ(要素数)を越えるまで、後述するステップS410〜S412を繰り返し(ステップS409)、繰り返し終了後、変数iに“1”を加算してステップS404に戻る(ステップS413)。
Subsequently, the
先のステップS409で肯定結果が得られた場合、CPU401は、リストALのj番目の要素のテキスト領域(テキスト領域開始位置とテキスト領域終了位置で与えられる領域)が、ルート要素vにあるテキスト領域(テキスト領域開始位置とテキスト領域終了位置で与えられる領域)に含まれるまで、ルート要素vの親要素をvにセットする処理を繰り返す(ステップS410)。
When a positive result is obtained in the previous step S409, the
この後、CPU401は、リストALのj番目の要素のタグ名、アノテーショングループID、テキスト領域開始位置、テキスト領域終了位置を有するDOM木の要素を作成し、ルート要素vの子要素としてDOM木ATに加える(ステップS411)。この後、CPU401は、変数jに“1”を加算し、ステップS409に戻る(ステップS412)。
Thereafter, the
CPU401は、各アノテーショングループについて、テキスト領域の開始位置と終了位置に基づいて要素を事前にソートし、その後、前述した方法を適用することにより、アノテーションデータのDOM木を構築する。また、DOM木は順序木となっているが、前述した方法で要素を加えることにより、兄弟要素同士は、テキスト領域の開始位置で昇順にソートされた状態となる。
For each annotation group, the
[XML文書用のDOM木構築部409]
前述したように、CPU401は、XML文書からDOM木を構築するDOM木構築部409としても機能する。DOM木構築部409としてのCPU401は、入力されたXML文書に付与されたタグの包含関係を分析し、DOM木を構築する。XML文書のDOM木は、非特許文献1に記載の方法により構築することができる。構築されたDOM木は、各タグに対応するテキスト領域の開始位置、終了位置の情報は含まない。
[DOM
As described above, the
本実施例では、CPU401が、XML文書について構築されたDOM木に割り当てられたテキスト要素について、テキスト領域における開始位置及び終了位置を計算する。次に、CPU401は、計算された位置情報を各要素に付与しながらテキスト要素を削除し、テキスト要素が保持する文字列をつなげたテキストを作成する。
In the present embodiment, the
ここでは、“t”を空のテキストとする。CPU401は、構築されたDOM木をルート要素から走査しながら、テキスト要素に対応するテキストの長さを記録し、前順に開始位置、後順に終了位置を記録する。各テキスト要素を走査した後、CPU401は、テキスト要素を削除し、テキスト“t”に対し、削除されたテキスト要素が保持する文字列を加える。最後に、CPU401は、構築されたDOM木とテキストtを出力し、一連の処理を終了する。
Here, “t” is an empty text. The
[文書構造リスト構築部411]
図6は、文書構造リスト構築部411として機能するCPU401により実行される処理の一例を示すフローチャートである。
[Document Structure List Building Unit 411]
FIG. 6 is a flowchart illustrating an example of processing executed by the
まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力とする(ステップS501)。次に、CPU401は、文書構造リスト412を空のリストに初期化する(ステップS502)。その後、CPU401は、変数iに“1”をセットする(ステップS503)。次に、CPU401は、テキストデータリストを空に初期化する(ステップS504)。
First, the
この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全てのペアを処理したか否かを判定する(ステップS505)。この判定処理で肯定結果が得られるまで、CPU401は、後述するステップS506〜S510の処理を繰り返し実行する。
Thereafter, the
ステップS505で否定結果が得られた場合、CPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS506)。次に、CPU401は、XML文書用のDOM木構築部409とアノテーションデータ用のDOM木構築部410として機能し、それぞれ対応するDOM木を作成する(ステップS507)。
If a negative result is obtained in step S505, the
この後、CPU401は、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木を入力すると、後述するテキスト共有DOM木構築部415として機能してテキスト共有DOM木416を作成し、作成されたテキスト共有DOM木416を構成する要素のリストNを得る(ステップS508)。次に、CPU401は、リストNを、文書構造リスト(テキスト共有DOM木リスト)412に追加する(ステップS509)。
Thereafter, when the
次に、CPU401は、読み込んだXML文書及びアノテーションデータを処理済としてステップS505に戻る(ステップS510)。
Next, the
[テキスト共有DOM木構築部415]
テキスト共有DOM木構築部415として機能するCPU401は、XML要素によるDOM木と、XML文書内のテキスト及び各アノテーショングループの要素からなるDOM木を入力する。ここで、CPU401は、各DOM木のルート要素以外の要素のリストNを用意する。
[Text sharing DOM tree construction unit 415]
The
CPU401は、リストNとXML文書内のテキストを、テキストデータ・テキスト要素リスト構築部417に入力し、テキストデータリスト414とテキスト要素リスト413を更新する。
The
この後、CPU401は、テキスト要素リスト413と、XML要素と、各アノテーショングループの要素からなるDOM木を入力する。テキスト割当部418として機能するCPU401は、テキスト要素を子要素として各要素に割り当てる。CPU401は、テキスト要素リスト413の各要素をリストNに加える。また、CPU401は、各DOM木のルート要素を1つに共通化し、共通化したルート要素をリストNの先頭に加える。最後に、CPU401は、リストNを出力し、テキスト共有DOM木の作成処理を終了する。
Thereafter, the
[テキストデータ・テキスト要素リスト構築部417]
テキストデータ・テキスト要素リスト構築部417として機能するCPU401は、リストNとテキストtとを入力する。CPU401は、リストN内の各要素のテキスト領域の開始位置、終了位置を取り出し、昇順にソートした数値からなるリストをSとする。CPU401は、リストS内で数値が重複している部分を除去する。リストSの先頭の値が0でない場合、CPU401は、先頭に0を追加する。また、リストSの最後尾の値がテキストtと同じ場合、CPU401は、最後尾の値を削除する。CPU401は、テキストtとリストSをテキストデータとして、テキストデータリスト414の最後尾に追加する。
[Text Data / Text Element List Building Unit 417]
The
CPU401は、テキスト要素リスト413を空に初期化する。リストSの各値は、テキスト領域の開始位置、終了位置を与えている。従って、CPU401は、リストSの先頭の要素から順番に、テキスト領域の開始位置を現在見ている要素の値、終了位置を次の要素の値、タグ名を#として、DOM DAG421の要素を作成し、テキスト要素リスト413の最後尾に順次追加する。なお、リストSの最後の要素の場合、次の要素が存在しない。このため、CPU401は、テキストtの長さをテキスト領域の終了位置にセットする。
The
[テキスト割当部418]
テキスト要素リスト413の各要素は、互いのテキスト領域が重ならないため包含関係を有していない。このため、テキスト割当部418として機能するCPU401は、テキスト要素リスト413の各要素とルート要素とに基づいて、テキスト要素同士が兄弟となるDOM木を作成することができる。作成されるDOM木をTtとする。CPU401は、DOM木Ttに対して、各アノテーショングループのDOM木から、後述する親子関係解析・登録部419としての機能を通じ、アノテーショングループ外の親を登録する。
[Text allocation unit 418]
Each element of the text element list 413 does not have an inclusion relationship because the text areas do not overlap each other. For this reason, the
[要素間の包含関係]
本実施例では、XML要素又はアノテーション要素とテキスト要素間の包含関係は、以下のルールに従うものとする。XML要素又はアノテーション要素のテキスト領域がテキスト要素のテキスト領域を包含する、又は同じである場合、XML要素又はアノテーション要素は、テキスト要素を包含するとする。これ以外の場合は、包含関係はないものとする。
[Inclusive relation between elements]
In the present embodiment, the inclusion relationship between the XML element or annotation element and the text element is assumed to follow the following rules. If the text area of the XML element or annotation element includes or is the same as the text area of the text element, the XML element or annotation element shall include the text element. In other cases, there is no inclusion relationship.
[親子関係解析・登録部419]
図7は、親子関係解析・登録部419として機能するCPU401により実行される処理の一例を示すフローチャートである。
[Parent-child relationship analysis / registration unit 419]
FIG. 7 is a flowchart illustrating an example of processing executed by the
まず、CPU401は、DOM木TとDOM木Uを入力とする(ステップS601)
次に、CPU401は、DOM木Uの要素の集合をVとし(ステップS602)、Vが空であるかを判定する(ステップS603)。Vが空になるまで、後述のステップS604〜S608を繰り返す。
First, the
Next, the
要素vをVから取り出し、Vから削除する(ステップS604)。CPU401は、DOM木Tの要素の中で、vを包含する要素のうち、ルートからの深さが最も深いものを要素uとする(ステップS605)。uがDOM木Tのルート要素であるかを判定し(ステップS606)、ルート要素でないならば、CPU401は、uをvのアノテーショングループ外の親要素として登録し、ステップS603に戻る(ステップS607)。
The element v is extracted from V and deleted from V (step S604). Among the elements of the DOM tree T, the
[検索動作の概要]
続いて、構造化文書検索装置400において実行される検索処理の概要を説明する。検索処理は、後述するロケーションパス検索部420として機能するCPU401により実行される。ロケーションパス検索部420として機能するCPU401は、各XML文書とアノテーションデータとから構築されたテキスト共有DOM木をロケーションパスに沿って辿り、検索クエリに合致した要素を検索結果として取得する。
[Overview of search operation]
Next, an outline of search processing executed in the structured
図3では、テキスト共有DOM木について、ロケーションパス「/p/fx/obj」とロケーションパス「/A/T」とが共通する要素を検索する場合について表している。図3の例の場合、ロケーションパス「/p/fx/obj」は、ルート要素の下のタグ<p>の下のタグ<fx>の下のタグ<obj>の下に割り当てられた要素を表しており、ロケーションパス「/A/T」は、ルート要素の下のタグ[A]の下のタグ[T]の下に割り当てられた要素を表している。図3では、これら2つのロケーションパスを点線の矢印により表している。この結果、共通する要素は、テキスト要素である「粗鋼」となる。 FIG. 3 shows a case where an element having a common location path “/ p / fx / obj” and location path “/ A / T” is searched for the text sharing DOM tree. In the case of the example in FIG. 3, the location path “/ p / fx / obj” indicates that the element assigned under the tag <obj> under the tag <fx> under the tag <p> under the root element. The location path “/ A / T” represents an element allocated under the tag [T] under the tag [A] under the root element. In FIG. 3, these two location paths are represented by dotted arrows. As a result, the common element is “crude steel” which is a text element.
[検索動作の詳細]
図8に、構造化文書検索装置400において検索処理が実行される際のデータの流れを示す。なお、CPU401は、検索に使用する文書構造リスト412(本実施例の場合、テキスト共有DOM木416)を、補助記憶装置403Aから主記憶装置402に事前に読み出しているものとする(ステップS401)。
[Details of search operation]
FIG. 8 shows the flow of data when search processing is executed in structured
この状態で、ユーザがユーザインタフェース406を通じ、検索クエリとしてのロケーションパスを構造化文書検索装置400(具体的には、CPU401)に投入する(ステップS402)。 In this state, the user inputs a location path as a search query to the structured document search device 400 (specifically, the CPU 401) through the user interface 406 (step S402).
すると、ロケーションパス検索部420として機能するCPU402は、文書構造リスト412にあるテキスト共有DOM木416にアクセスし、検索クエリとして指定されたロケーションパスに合致した要素の箇所を計算する(ステップS403)。この後、CPU401は、検索クエリに合致した要素の集合をユーザインタフェース406に出力する(ステップS405)。
Then, the
[ロケーションパス検索部420]
最後に、ロケーションパス検索部420として機能するCPU401の動作を説明する。文書構造リスト412を構成する各要素のリストの先頭は、テキスト共有DOM木のルート要素となっている。従って、CPU401は、各テキスト共有DOM木のルート要素からテキスト共有DOM木をロケーションパスに沿って辿ることにより、検索クエリに合致するテキスト共有DOM木の要素を得る。
[Location path search unit 420]
Finally, the operation of the
[実施例の効果]
本実施例に係る構造化文書検索装置400は、前処理として、XMLタグに基づいて構築されたDOM木と、アノテーショングループに属するタグに基づいて構築されたDOM木の間でルート要素を共通化したテキスト共有DOM木416を生成する。テキスト共有DOM木416には、共通するルート要素を起点として各DOM木の構造が含まれている。従って、任意の形式でアノテーションがXML文書に付与されている場合にも、XMLによる階層構造とアノテーションによる階層構造の双方を考慮した検索を可能とすることができる。
[Effect of Example]
The structured
[第2の実施例]
本実施例においては、XML要素とアノテーション要素、又は、異なるアノテーショングループに属するアノテーション要素同士といった異なる種類の要素間における包含関係を定義する。このために、本実施例では、第1の実施例におけるテキスト共有DOM木の構造を拡張したDOM DAG(Directed Acyclic Graph:非循環有向グラフ)を使用する。なお、本実施例に係る構造化文書検索装置400の基本構成は、実施例1と同様である。すなわち、図1−1及び図1−2に示す構成を基本構成とする。ただし、本実施例では、テキスト共有DOM木構築部415に代えて、DOM DAG構築部422を使用する。
[Second Embodiment]
In this embodiment, an inclusion relationship between different types of elements such as XML elements and annotation elements or annotation elements belonging to different annotation groups is defined. For this purpose, in this embodiment, a DOM DAG (Directed Acyclic Graph) obtained by extending the structure of the text sharing DOM tree in the first embodiment is used. The basic configuration of the structured
[前処理の概要]
前述したように、本実施例においては、XML要素とアノテーション要素間、及び、異なるアノテーショングループ間に属する要素間におけるテキスト領域の包含関係についても親子関係として考慮したDOM DAGを使用した構造検索について説明する。DOM DAGの導入により、異なる種類の要素間の包含関係を考慮した検索を実行可能な構造化文書検索装置が実現される。
[Overview of preprocessing]
As described above, in this embodiment, the structure search using the DOM DAG in which the inclusion relation of the text area between the XML element and the annotation element and between the elements belonging to different annotation groups is also considered as the parent-child relation is described. To do. With the introduction of DOM DAG, a structured document search apparatus capable of executing a search in consideration of the inclusion relationship between different types of elements is realized.
[DOM DAG]
ここでは、本実施例で使用するDOM DAGについて説明する。DOM DAGは、テキスト共有DOM木において、XMLタグや異なるアノテーショングループに属するタグなど、異なる種類の要素間の包含関係も記述したデータ構造である。すなわち、ルート要素で共通化された各DOM木の間において、包含関係による親子関係が記述されたデータ構造である。
[DOM DAG]
Here, the DOM DAG used in the present embodiment will be described. The DOM DAG is a data structure in which inclusion relationships between different types of elements such as XML tags and tags belonging to different annotation groups are described in a text sharing DOM tree. That is, it is a data structure in which a parent-child relationship based on an inclusion relationship is described between DOM trees shared by root elements.
DOM DAGでは、例えばDOM木T2の要素を包含するDOM木T1の要素のうち、DOM木T1のルート要素から最も深い位置にある要素との間に親子関係があるものとして扱い、DOM木T1とDOM木T2の間にリンクを張る。これにより、DOM木T1の要素からDOM木T2の要素への包含関係を表現する。 In the DOM DAG, for example, among the elements of the DOM tree T1 including the elements of the DOM tree T2, it is treated as having a parent-child relationship with the element at the deepest position from the root element of the DOM tree T1, and the DOM tree T1 and A link is established between the DOM trees T2. Thereby, the inclusion relationship from the element of the DOM tree T1 to the element of the DOM tree T2 is expressed.
図9に、図3に示したテキスト共有DOM木416に基づいて構築されたDOM DAGの例を示す。図9の場合、XMLタグであるタグ<fx>からアノテーションタグであるタグ[T]へのリンク、アノテーションタグであるタグ[T]からXMLタグであるタグ<obj>へのリンクのように、異なる種類のタグ間でも親子関係が考えられている。
FIG. 9 shows an example of a DOM DAG constructed based on the text sharing
[DOM DAG内の要素の包含関係]
DOM木又はDOM DAG内の要素の包含関係は、次のルールに従うものとする。
(1)ルート要素は、ルート要素以外のどの要素も包含する。
(2)XML要素とアノテーション要素のテキスト領域開始位置と終了位置が同じ場合、XML要素がアノテーション要素を包含する。
(3)アノテーション要素同士のテキスト領域開始位置と終了位置が同じ場合、アノテーショングループIDが小さい要素がアノテーショングループIDが大きい要素を包含する。
(4)テキスト要素とテキスト要素以外の他の要素について、テキスト領域開始位置と終了位置が同じ場合、後者が前者を包含する。
(5)(1)〜(4)によって包含関係が決定しない場合、要素にあるテキスト領域の包含関係から要素の包含関係を決定する。ただし、テキスト要素のテキスト領域が他の要素のテキスト領域を包含する場合、要素の包含関係はないものとする。
(6)(1)〜(5)によって包含関係が決定しない場合、互いに包含関係がないものとする。
[Inclusive relation of elements in DOM DAG]
The inclusion relationship of the elements in the DOM tree or DOM DAG shall follow the following rules.
(1) The root element includes any element other than the root element.
(2) When the text region start position and end position of the XML element and annotation element are the same, the XML element includes the annotation element.
(3) When the text region start position and end position of annotation elements are the same, an element with a small annotation group ID includes an element with a large annotation group ID.
(4) When the text region start position and end position are the same for the text element and other elements other than the text element, the latter includes the former.
(5) When the inclusion relation is not determined by (1) to (4), the inclusion relation of the element is determined from the inclusion relation of the text region in the element. However, when the text area of the text element includes the text area of another element, it is assumed that there is no element inclusion relationship.
(6) When the inclusion relationship is not determined by (1) to (5), it is assumed that there is no mutual inclusion relationship.
[DOM DAG構築部422]
DOM DAG構築部422として機能するCPU401は、XML要素から構築したDOM木、XML文書内のテキスト、各アノテーショングループの要素から構築したDOM木を入力とする。
[DOM DAG construction unit 422]
The
親子関係解析・登録部419として機能するCPU401は、XML要素を含むアノテーショングループの全てのDOM木の組に対し、アノテーショングループ外の親を割り当てる。ここで、CPU401は、各DOM木について、ルート要素以外の要素のリストNを用意する。CPU401は、リストNとXML文書内のテキストを、テキストデータ・テキスト要素リスト構築部417に入力し、テキストデータリスト414とテキスト要素リスト413を更新する。
The
テキスト割当部418として機能するCPU401は、テキスト要素リスト413と、XML要素と、各アノテーショングループの要素からなるDOM木を入力すると、テキスト要素を子要素としてDOM木の各要素に割り当てる。CPU401は、テキスト要素リスト413の各要素をリストNに加えると共に、深さの情報を各要素に割り当てる。CPU401は、DOM木の各要素が持つアノテーショングループ外の親要素リストの要素に対し、親子関係のリンクを張る。また、CPU401は、各DOM木のルート要素を1つに共通化し、共通化したルート要素をリストNの先頭に加える。この後、CPU401は、リストNを出力し、DOM DAGの作成処理を終了する。
When the
[実施例の効果]
本実施例に係る構造化文書検索装置400は、前処理として、実施例1で説明したテキスト共有DOM木416を構成する異なるDOM木の要素間についても包含関係を規定したDOM DAGを作成する。従って、本実施例に係る構造化文書検索装置400を用いれば、実施例1の効果に加え、異なる種類の要素間における包含関係(親子関係)も考慮した検索を可能とすることができる。
[Effect of Example]
The structured
[第3の実施例]
前述したように、DOM DAGを用いれば、異種タグ間の構造関係を利用した検索が可能となる。しかし、ロケーションパスの検索時、構築した全てのDOM DAGをルート要素から辿るのでは非効率的である。
[Third embodiment]
As described above, if DOM DAG is used, a search using the structural relationship between different types of tags becomes possible. However, it is inefficient to trace all constructed DOM DAGs from the root element when searching for a location path.
そこで、本実施例では、複数のDOM DAGの構造を集約したデータ構造であるパスDAGを定義する。さらに、パスDAG内の要素をエントリとして、DOM DAG内の要素を値とした転置インデクスによる検索を可能とすることにより、ロケーションパスを検索クエリとした効率的な探索を可能にする。 Therefore, in this embodiment, a path DAG that is a data structure in which the structures of a plurality of DOM DAGs are aggregated is defined. Furthermore, by making an element in the path DAG an entry and performing a search using a transposed index with the element in the DOM DAG as a value, an efficient search using the location path as a search query is enabled.
本実施例の場合も、構造化文書検索装置400の基本構成は、実施例1と同様である。すなわち、図1−1及び図1−2に示す構成を基本構成とする。ただし、本実施例の場合、DOM DAG構築部422とロケーションパス検索部420の機能が拡張されている。
Also in this embodiment, the basic configuration of the structured
[前処理の概要]
本実施例の場合、転置インデクス構築部424が前処理を実行する。転置インデクス構築部424として機能するCPU401は、パスDAG423をルート要素のみからなるデータ構造に初期化すると共に、各XML文書と対応したアノテーションデータに基づいてDOM DAGを構築する。
[Overview of preprocessing]
In this embodiment, the transposed
パスDAG ID取得部428として機能するCPU401は、DOM DAGを構成する各要素のタグ名と親要素に基づいて、パスDAG内に既に登録されている構造か否かを判定する。判定対象である構造がパスDAG内に既に登録されている場合、CPU401は、当該構造に対し、対応するパスDAG内の要素のIDであるパスDAG IDを与える。これに対し、判定対象とする構造が登録されていない場合、CPU401は、パスDAG要素生成・登録部429として機能し、パスDAG423に対して新しく要素を生成すると共に、生成された要素に対してパスDAG IDを得える。パスDAG IDの取得後、CPU401は、転置インデクス425の取得したパスDAG IDに対応したエントリに各要素を追加する。
The
図10は、2つのDOM DAGの登録後に生成される、パスDAGと転置インデクス425の例を示す。図10に示すように、パスDAG423は、XML文書1から構築されたDOM DAGとXML文書2から構築されたDOM DAGについて、親ノードの集合が同じである要素を共通化させるように構築される。図中、白抜きで示す要素は、XML要素、黒の塗りつぶしで示す要素は、アノテーション要素を示す。
FIG. 10 shows an example of a path DAG and a transposed
ただし、要素cのように、2つの文書間で親の集合の関係が異なる要素の場合には、パスDAG423上では、異なる要素として登録される。図10では、「c:1」と「c:2」として区別して登録されている。
However, in the case of an element such as element c in which the parent set relationship is different between the two documents, it is registered as a different element on the
また、要素dは、親要素がどちらも要素cだけであり、親の集合が共通しているように見える。しかし、パスDAG上における要素cは、前述したように異なる要素として登録されている。このため、要素dも、パスDAG上異なる要素として登録される。DOM DAGの各要素には、文書の順番、文書内でのタグの出現順を組にした番号が振られている。各要素の番号は、転置インデクス425内で対応するパスDAG要素のパスDAG IDのエントリに記録される。
In addition, the element d has only the element c as the parent element, and it seems that the set of parents is common. However, the element c on the path DAG is registered as a different element as described above. For this reason, the element d is also registered as a different element on the path DAG. Each element of the DOM DAG is assigned a number that is a combination of the document order and the tag appearance order in the document. The number of each element is recorded in the path DAG ID entry of the corresponding path DAG element in the transposed
なお、図10には、パスDAG423に対応する転置インデクス425の構造もIDとタグ番号の関係として記載されている。この転置インデクスの生成方法については、次項において説明する。
In FIG. 10, the structure of the transposed
[転置インデクス構築部424]
図11は、転置インデクス構築部424として機能するCPU401の処理動作を示すフローチャートである。
[Transposition index construction unit 424]
FIG. 11 is a flowchart showing the processing operation of the
まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力する(ステップS1001)。次に、CPU401は、DOM DAGリストを空のリストに初期化する(ステップS1002)。続いて、CPU401は、転置インデクス425を空のテーブルに初期化する(ステップS1003)。また、CPU401は、変数iを“1”にセットする(ステップS1004)。次に、CPU401は、テキストデータリストを空に初期化する(ステップS1005)。
First, the
この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全てのペアを処理したか否かを判定する(ステップS1006)。この判定処理において肯定結果が得られるまで、CPU401は、後述するステップS1007〜S1013の処理を繰り返す。
Thereafter, the
DOM DAG構築部422として機能するCPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS1007)。ここで、CPU401は、XML文書用のDOM木構築部409及びアノテーションデータ用のDOM木構築部410として機能し、XML文書とアノテーションデータのそれぞれからDOM木を作成する(ステップS1008)。
The
次に、CPU401は、後述するDOM DAG構築部422として機能し、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木からDOM DAG421を作成し、DOM DAG421を構成する要素のリストNを得る(ステップS1009)。
Next, the
続いて、CPU401は、リストNを後述するDOM DAG要素リストソート部426に入力し、ソートする(ステップS1010)。さらに、CPU401は、リストNと変数iを転置インデクス登録部440に入力し、転置インデクス425に各要素を登録する(ステップS1011)。この後、CPU401は、リストNをDOM DAGリストに追加する(ステップS1012)。また、CPU401は、読み込んだXML文書、アノテーションデータを処理済とし、ステップS1006に戻る(ステップS1013)。
Subsequently, the
[DOM DAG要素リストソート部426]
ここでは、ステップS1010の処理を実行するDOM DAG要素リストソート部426の処理動作を説明する。勿論、DOM DAG要素リストソート部426としての機能は、CPU401によるプログラムの実行を通じて実現する。DOM DAG要素リストソート部426として機能するCPU401は、DOM DAG要素のリストNを入力とする。次に、CPU401は、リストN内の要素を、テキスト領域開始位置と包含関係に基づいて文書内の出現順に並び替える。事前に、XML要素を、各アノテーショングループ毎に対応するDOM木について前順で並び換え、並び替えた要素同士をマージソートの要領でマージすると、リストN内の要素を効率的にソートすることができる。要素の並びは、次のルールに従うものとする。
(1)ルート要素は他のどの要素より前に来る。
(2)テキスト領域開始位置が前の要素の前に来る又はテキスト領域開始位置が同じ場合、包含する要素が前に来る。
[DOM DAG element list sort unit 426]
Here, the processing operation of the DOM DAG element list sorting unit 426 that executes the processing of step S1010 will be described. Of course, the function as the DOM DAG element list sorting unit 426 is realized through execution of a program by the
(1) The root element comes before any other element.
(2) When the text region start position comes before the previous element or when the text region start position is the same, the containing element comes before.
[深さ割当部427]
ここでは、深さ割当部427として機能するCPU401の機能を説明する。図12は、深さ割当部427の処理例を示すフローチャートである。
[Depth allocation unit 427]
Here, the function of the
まず、CPU401は、DOM DAG421の要素からなるリストNを入力とする(ステップS1101)。次に、CPU401は、XML文書の中で最も深い位置にある要素の深さをDとし、長さDの配列をEとする(ステップS1102)。次に、CPU401は、変数iを1とし、変数dを0とする(ステップS1103)。この後、CPU401は、変数iがNの長さ以下か否かを判定する(ステップS1104)。変数iがNの長さより大きいと判定されるまで、CPU401は、後述するステップS1105〜S1113を繰り返す。
First, the
ステップS1104で肯定結果が得られた場合、CPU401は、リストNのi番目の要素をvとする(ステップS1105)。次に、CPU401は、vがXML要素またはテキスト要素かを判定する(ステップS1106)。ここで、vがXML要素またはテキスト要素であった場合、CPU401は、DOM DAG421のルート要素からの深さをdにセットする(ステップS1107)。さらに、CPU401は、Eのd番目の要素にvのテキスト領域終了位置をセットし、ステップS1104へ戻る(ステップS1108)。
If a positive result is obtained in step S1104, the
一方、ステップS1106の判定処理において、vがXML要素でもテキスト要素でもないと判定された場合、CPU401は、vがアノテーションタグの開始要素か否か判定する(ステップS1109)。ここで、vがアノテーションタグの開始要素であると判定された場合、CPU401は、vのテキスト領域開始位置を変数eにセットする(ステップS1110)。これに対し、ステップS1109の判定処理において、vがアノテーションタグの開始要素でないと判定された場合、CPU401は、vのテキスト領域の終了位置を変数eにセットする(ステップS1111)。
On the other hand, if it is determined in step S1106 that v is neither an XML element nor a text element, the
vがテキスト領域開始位置とテキスト領域終了位置のいずれであった場合でも、CPU401は、変数dが1になるか、Eのd−1番目の要素が変数eより大きくなるまで、変数dから1を引く(ステップS1112)。この後、CPU401は、vの深さをdとする一方、変数iに1を加算し、ステップS1104に戻る(ステップS1113)。
Regardless of whether the v is the text region start position or the text region end position, the
[パスDAG ID取得部428]
ここでは、DOM DAGからパスDAGを取得するパスDAG ID取得部428の処理機能を説明する。図13は、パスDAG ID取得部428として機能するCPU401の処理例を示すフローチャートである。
[Pass DAG ID acquisition unit 428]
Here, the processing function of the path DAG
まず、CPU401は、DOM DAG421の要素のリストNを入力とする(ステップS1201)。次に、CPU401は、変数iを1にセットする(ステップS1202)。この後、CPU401は、変数iがNの長さ以下か否かを判定し、変数iがNの長さより大きいと判定されるまで、後述するステップS1204〜S1213を繰り返す(ステップS1203)。
First, the
変数iがリストNの長さ以下であった場合、CPU401は、リストNのi番目の要素をvとする(ステップS1204)。次に、CPU401は、要素vがアノテーションの終了タグ要素か否かを判定する(ステップS1205)。この判定結果として肯定結果が得られた場合、CPU401は変数iに1を加算し、ステップS1203に戻る(ステップS1206)。これに対し、ステップS1205の判定処理で否定結果が得られた場合、CPU401は、DOM DAG421における要素vの親要素の集合をVとする(ステップS1207)。さらに、CPU401は、集合Vの各要素に相当するパスDAG423の要素の集合をPとする(ステップS1208)。さらに、CPU401は、集合Pに属するパスDAG423の要素のうち共通する子要素の中で、要素vと同じタグ名を持つパスDAG423の要素の集合をIとする(ステップS1209)。
When the variable i is equal to or shorter than the length of the list N, the
ここで、CPU401は、集合Iの中で親要素の集合が集合Pと同一となる要素が存在するか否かを判定する(ステップS1210)。この判定処理において肯定結果が得られた場合、CPU401は、その要素が持つパスDAG IDを要素vに登録し、ステップS1203に戻る(ステップS1211)。これに対し、ステップS1210の判定処理において否定結果が得られた場合、CPU401は、後述するパスDAG要素生成・登録部429に要素vと集合Pを入力する(ステップS1212)。その後、CPU401は、変数iに1を加算し、ステップS1203に戻る(ステップS1213)。
Here, the
[パスDAG要素生成・登録部429]
ここでは、ステップS1212で使用されるパスDAG要素生成・登録部429としてのCPU401の処理機能を説明する。図14は、パスDAG要素生成・登録部429として機能するCPU401の処理例を示すフローチャートである。
[Path DAG element generation / registration unit 429]
Here, the processing function of the
CPU401は、DOM DAG421の要素vとパスDAG423の要素Pを入力とする(ステップS1301)。ここで、CPU401は、要素vが保持する深さをdとする(ステップS1302)。
The
次に、CPU401は、要素vがアノテーション要素か否か判定する(ステップS1303)。要素vがアノテーション要素であった場合、CPU401は、(2,d,AI)をパスDAG IDとして要素vに与え、AIに1を加算する(ステップS1304)。その後、CPU401は、要素vが保持するパスDAG IDを持つパスDAG要素を作成し、集合Pの各要素の子要素とする(ステップS1305)。
Next, the
これに対し、ステップS1303で否定結果が得られた場合(すなわち、要素vがXML要素であった場合)、CPU401は、要素vのタグ名が“#”か否か判定する(ステップS1306)。
On the other hand, when a negative result is obtained in step S1303 (that is, when the element v is an XML element), the
要素vのタグ名が#の場合、CPU401は、(1,d,XI[d])をパスDAG IDとして要素vに与える(ステップS1307)。これに対し、要素vのタグ名が#でない場合、CPU401は、(0,d,XI[d])をパスDAG IDとして要素vに与える(ステップS1308)。いずれかのパスDAG IDが要素vに与えられた後、CPU401は、XI[d]に1を加算する(ステップS1309)。
When the tag name of the element v is #, the
[転置インデクス登録部442]
次に、転置インデクス登録部442の処理動作を説明する。図15は、転置インデクス登録部442として機能するCPU401の処理を示すフローチャートである。
[Transposition index registration unit 442]
Next, the processing operation of the transposed index registration unit 442 will be described. FIG. 15 is a flowchart showing processing of the
まず、CPU401は、DOM DAG要素のリストNと文書番号nを入力とする(ステップS1401)。次に、CPU401は、変数iに1をセットする(ステップS1402)。続いて、CPU401は、変数iがリストNの長さ以下か否かを判定する(ステップS1403)。CPU401は、変数iがリストNの長さを越えると判定されるまで、後述するステップS1404〜S1409を繰り返す。
First, the
変数iがリストNの長さを越えない場合、CPU401は、要素vがルート要素か否か判定する(ステップS1404)。要素vがルート要素である場合、CPU401は、変数iに1を加算してステップS1403に戻る(ステップS1409)。これに対し、要素vがルート要素でなかった場合、CPU401は、後述するパスDAG ID取得部428に対して変数vを入力し、変数vが保持するパスDAG IDjを取得する(ステップS1405)。
When the variable i does not exceed the length of the list N, the
この後、CPU401は、転置インデクス425において、変数jに対応したエントリが存在しないか否か判定する(ステップS1406)。対応するエントリが存在しない場合、CPU401は、変数jに対応したエントリを作成する(ステップS1408)。この後、CPU401は、変数j対応したエントリに対し、(n、i)のタプル(tuple)を追加する(ステップS1407)。その後、CPU401は、変数iに1を加算し、ステップS1403へ戻る(ステップS1409)。
Thereafter, the
[検索動作の概要]
本実施例による検索動作は以下のように進行する。本実施例の場合、ロケーションパスによる検索は、ロケーションパス検索部420としてのCPU401が、転置インデクス425に基づいて実行する。ロケーションパス検索部420としてのCPU401は、ロケーションパスに沿ってパスDAGを辿り、ロケーションパスの構造に合致したパスDAG要素のパスDAG IDを取得する。
[Overview of search operation]
The search operation according to the present embodiment proceeds as follows. In the case of the present embodiment, the search based on the location path is executed by the
CPU401は、取得したパスDAG IDに基づいて転置インデクス425を検索し、ロケーションパスに合致するDOM DAG要素のタグ番号をDOM DAGリストから得る。次に、CPU401は、このタグ番号で特定されるDOM DAG要素を検索結果として取得する。
The
以上の処理動作を具体例により説明する。ここでは、図10を参照する。図10は、パスDAG423と転置インデクス425を使用し、ロケーションパス「/a/b/#」に合致する要素の検索が実行される要素を表している。この場合、CPU401は、パスDAG(左下に示す構造図)上でロケーションパスを辿り、(1,3,1)をパスDAG IDとして得る。次に、CPU401は、転置インデクス425(右下に示すテーブル)から(1,3,1)に対応するエントリを検索する。図10の例では、破線矢印で示すように、DOM DAG要素のタグ番号である(1,5)と(2,4)が得られる。次に、CPU401は、このタグ番号に対応する要素を、文書1のDOM DAGと文書2のDOM DAGから取得する。
The above processing operation will be described using a specific example. Here, FIG. 10 is referred. FIG. 10 shows an element for which a search for an element that matches the location path “/ a / b / #” is executed using the
[ロケーションパス検索部420]
ここでは、ロケーションパス検索部420として機能するCPU401の処理を説明する。CPU401は、ロケーションパスに沿ってパスDAG423を辿り、到達した要素に対応するパスDAG IDを変数iとする。次に、CPU401は、転置インデクス425の中からパスDAG IDiに対応するエントリEを取得する。エントリE内の各要素は、DOM DAGリストにあるDOM DAGの要素のリストの場所と、DOM DAGリスト内の要素の場所の組になっている。ロケーションパス検索部420は、これら対応するDOM DAGの要素を転置インデクス425から全て取得し、出力する。
[Location path search unit 420]
Here, processing of the
[実施例の効果]
本実施例に係る構造化文書検索装置400では、複数のDOM DAGの構造を集約したパスDAGを定義することにより、前述した実施例に比して検索効率を高めることができる。
[Effect of Example]
In the structured
[第4の実施例]
ここでは、DOM DAG421の計算機上での保持形態について考える。C言語等では、構造情報をポインタとして表現する。このため、DOM DAG421の構造が複雑である場合、多数のポインタが要素間に張られることになり、元のXML文書とアノテーションデータよりも多くのメモリが必要となる。そこで、本実施例では、パスDAGと数列データにより、DOM DAGの構造を表現する手法を説明する。
[Fourth embodiment]
Here, a holding form on the computer of the DOM DAG421 will be considered. In the C language or the like, the structure information is expressed as a pointer. For this reason, when the structure of the
なお、本実施例に係る構造化文書検索装置400は、XML文書の開始タグとアノテーションデータに出現する開始要素と終了要素について出現順に割り当てられた要素番号に基づいて、検索クエリに合致するタグの開始場所と終了場所に該当する要素を検索する。
Note that the structured
[前処理の概要]
本実施例に係る前処理は、検索インデクス構築部424として機能するCPU401が実行する。前述の実施例で説明したように、検索インデクス430は、パスDAGと数列データにより、DOM DAG421の構造を記述する。このため、各XML文書と対応するアノテーションデータについてのDOM DAG421を、主記憶装置402に保持する必要はない。
[Overview of preprocessing]
The pre-processing according to the present embodiment is executed by the
まず、CPU401は、各XML文書と対応するアノテーションデータについてDOM DAG421を構築する。次に、CPU401は、パスDAG ID取得部428として機能し、構築したDOM DAG421の各要素のパスDAG IDを取得する。この後、CPU401は、取得されたパスDAG IDを順番に数列データに登録する。
First, the
図16は、図10に示すDOM DAGを数列データとして記録する様子を示している。左上段に示すように、DOM DAG421の各要素には、出現順に通し番号が振られている。図16の場合、文書1のDOM DAGの各要素には、その出現順に“1”から“7”の通し番号が付されており、文書2のDOM DAGの各要素には、その出現順に“8”から“15”の通し番号が付されている。また、右上段に示すように、2つのDOM DAG421を集約したパスDAG423の各要素には、パスDAG IDが各階層の出現順に数列データが記録されている。
FIG. 16 shows how the DOM DAG shown in FIG. 10 is recorded as sequence data. As shown in the upper left column, each element of the
[検索インデクス430]
図17は、検索インデクス430の概要を示す。検索インデクス430は、複数のDOM DAGの構造を集約したパスDAG423と、パスDAG423の各要素に振られたIDをDOM DAGの各要素に割り当て、要素の出現順に登録した数列データ群と、ビット列のデータ群と、テキストデータリスト414とから構成される。
[Search index 430]
FIG. 17 shows an overview of the
数列データ群は、アノテーション要素判別ビット列431、テキスト要素判別ビット列432、XML要素の深さ数列433、深さ別ID列リスト434、アノテーション終了タグ判別ビット列435、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438とから構成される。テキストデータリスト414は、各XML文書内の全文字列を出現順につなげたテキストと、XMLタグとアノテーションタグにより切り分けられたテキスト分割位置のリストとから構成される。
The sequence data group includes an annotation element determination bit string 431, a text element determination bit string 432, an XML element
[検索インデクス構築部454]
図18は、検索インデクス構築部454として機能するCPU401の処理例を示すフローチャートである。
[Search index construction unit 454]
FIG. 18 is a flowchart illustrating a processing example of the
まず、CPU401は、XML文書集合407とアノテーションデータ集合408を入力とする(ステップS1701)。次に、CPU401は、アノテーション要素判別ビット列431、テキスト要素判別ビット列432、XML要素の深さ数列433、アノテーション終了タグ判別ビット列435、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438を空の数列に初期化する(ステップS1702)。
First, the
次に、CPU401は、XML文書集合407に含まれるXML文書の中で最も深い位置にある要素の深さをDとする時、深さ別ID列リスト434に空の数列をD本セットする(ステップS1703)。
Next, when the depth of an element at the deepest position in the XML document included in the XML document set 407 is D, the
この後、CPU401は、パスDAG423をルート要素のみを持つグラフに初期化し、ルート要素にパスDAG IDとして(0,0,1)を与える(ステップS1704)。また、CPU401は、数字XD、長さDの数列XIの各要素、数字AIを0に初期化する(ステップS1704)。
Thereafter, the
さらに、CPU401は、テキストデータリストを空に初期化する(ステップS1705)。
Further, the
この後、CPU401は、XML文書集合407とアノテーションデータ集合408に含まれる、XML文書とアノテーションデータの全ペアを処理したか否かを判定する(ステップS1706)。この判定処理で肯定結果が得られるまで、CPU401は、後述するステップS1707〜S1713の処理を繰り返し実行する。
Thereafter, the
ステップS1706で否定の結果が得られた場合、CPU401は、未処理のXML文書とアノテーションデータのペアを読み込む(ステップS1707)。XML文書から、XML文書からのDOM木構築部409により、アノテーションデータから、アノテーションデータからのDOM木構築部410により、DOM木を作成する(ステップS1708)。
If a negative result is obtained in step S1706, the
次に、CPU401は、XML文書から得られたDOM木と各アノテーショングループに属するタグから得られたDOM木を入力すると、後述するDOM DAG構築部422としての機能を通じてDOM DAG421を作成し、要素のリストNを得る(ステップS1709)。
Next, when a DOM tree obtained from an XML document and a DOM tree obtained from a tag belonging to each annotation group are input, the
この後、CPU401は、リストNをDOM DAG要素リストソート部426に入力し、ソートする(ステップS1710)。さらに、CPU401は、リストNを後述するアノテーション終了タグ挿入部441に入力する(ステップS1711)。次に、CPU401は、リストNを後述する検索インデクス登録部440に入力する(ステップS1712)。そして、CPU401は、読み込んだXML文書とアノテーションデータを処理済とし、ステップS1706に戻る(ステップS1713)。
Thereafter, the
[アノテーション終了タグ要素]
アノテーション終了タグ要素とは、アノテーションの終了タグを示す要素であり、対応するアノテーション要素、深さ、パスDAG IDを保持する。アノテーション終了タグ要素は、DOM DAG421の要素をソートしたリスト内におけるアノテーションタグの終了位置を示すために用いる。
[Annotation end tag element]
An annotation end tag element is an element indicating an annotation end tag, and holds a corresponding annotation element, depth, and path DAG ID. The annotation end tag element is used to indicate the end position of the annotation tag in the list in which the elements of the
[アノテーション終了タグ挿入部441]
アノテーション終了タグ挿入部441として機能するCPU401は、DOM DAG421の要素のリストNを入力とする。ここで、CPU401は、空のアノテーション要素のリストLを用意する。
[Annotation end tag insertion unit 441]
The
CPU401は、リストNの要素を先頭から順番に走査する。リストNの要素がアノテーション要素の場合、アノテーションタグの終了要素を作成し、該当するアノテーション要素を記録した後、リストLの最後尾に追加する。CPU401は、リストNを走査した後、リストL内の要素をマージソートの要領でリストNに挿入し、リストLをリストNにマージする。ソート時の順序は次のルールに従うものとする。
The
DOM木の要素のソート時は次のルールに従い、降順にソートする。
(1)ルート要素は他のどの要素より前に来る。
(2)リストN内の要素とアノテーション終了タグ要素の比較において、前者のテキスト領域開始位置が後者のテキスト領域終了位置と同じ場合、後者に保持するアノテーション要素が前者に含まれるならば、前者が前に来る。そうでない場合、後者が前にくる。
(3)リストN内の要素とアノテーション終了タグ要素の比較において、前者のテキスト領域終了位置が後者のテキスト領域終了位置と同じ場合、後者に対応したアノテーション要素が前者を含むならば、前者が前に来る。そうでない場合、後者が前にくる。
When sorting the elements of the DOM tree, the elements are sorted in descending order according to the following rules.
(1) The root element comes before any other element.
(2) In the comparison between the element in the list N and the annotation end tag element, when the former text area start position is the same as the latter text area end position, if the former includes an annotation element held in the latter, Come forward. If not, the latter comes first.
(3) In the comparison between the element in the list N and the annotation end tag element, when the former text area end position is the same as the latter text area end position, if the annotation element corresponding to the latter includes the former, the former is I come to. If not, the latter comes first.
[検索インデクス登録部440]
図19は、検索インデクス登録部440として機能するCPU401の処理例を示すフローチャートである。
[Search index registration unit 440]
FIG. 19 is a flowchart illustrating a processing example of the
CPU401は、DOM DAG421の要素からなるリストNを入力とする(ステップS1801)。次に、CPU401は、変数iに1をセットする(ステップS1802)。その後、CPU401は、変数iがリストNの長さ以下か判定する(ステップS1803)。CPU401は、変数iがリストNの長さを越えるまで、後述するステップS1804〜S1811を繰り返す。
The
変数iがリストNの長さ以下の場合、CPU401は、リストNのi番目の要素をvとする(ステップS1804)。ここで、CPU401は、要素vがアノテーションタグの終了要素か否か判定する(ステップS1805)。肯定結果が得られた場合、CPU401は、要素vに対応した開始要素のパスDAG IDjを取得し、IDjの1番目の要素に3をセットする(ステップS1806)。一方、ステップS1805で否定結果が得られた場合、CPU401は、後述するパスDAG ID取得部428に要素vを入力し、要素vが保持するパスDAG IDjを取得する(ステップS1807、S1808)。
When the variable i is equal to or shorter than the length of the list N, the
以上の処理の後、CPU401は、IDjをパスDAG IDとしてDNに登録する(ステップS1809)。さらに、CPU401は、IDjをパスDAG ID登録部439に入力する(ステップS1810)。この後、CPU401は、変数iに1を加算し、ステップS1803に戻る(ステップS1811)。
After the above processing, the
[パスDAG ID登録部439]
前述のステップS1810で使用されるパスDAG ID登録部439の処理内容を説明する。図20は、パスDAG ID登録部439として機能するCPU401の処理内容を示すフローチャートである。
[Pass DAG ID registration unit 439]
The processing contents of the path DAG
まず、CPU401は、パスDAG IDiを入力とする(ステップS1901)。次に、CPU401は、IDiのj番目の要素をi[j]とする(ステップS1902)。
ここで、CPU401は、i[1]が0または1であるか判定する(ステップS1903)。i[1]が0または1の時、CPU401は、アノテーション要素判別ビット列431の最後尾に0を追加し(ステップS1904)、XML要素の深さ数列433の最後尾にi[2]を加え(ステップS1905)、テキスト要素判別ビット列432の最後尾にi[1]を加える(ステップS1906)。
First, the
Here, the
さらに、CPU401は、i[2]が0か否かを判定する(ステップS1907)。i[2]が0であれば、CPU401は、この時点で登録処理を終了する。これに対し、i[2]が0以外の場合、CPU401は、深さ別ID列リスト434にあるi[2]番目の数列の最後尾にi[3]を加え、登録処理を終了する(ステップS1908)。
Furthermore, the
一方、ステップS1903で否定結果の場合、すなわちi[1]が2また3の時、CPU401は、アノテーション要素判別ビット列431の最後尾に1を追加する(ステップS1910)。さらに、CPU401は、アノテーション要素の深さ数列438の最後尾にi[2]を加える(ステップS1911)。
On the other hand, in the case of a negative result in step S1903, that is, when i [1] is 2 or 3, the
この後、CPU401は、i[1]が2であるか否かを判定する(ステップS1912)。i[1]が2の場合、CPU401は、アノテーション終了タグ判別ビット列435の最後尾に0を加えると共に、アノテーション開始タグID列436の最後尾にi[3]を加え、登録処理を終了する(ステップS1913、S1914)。
Thereafter, the
これに対し、ステップS1912で否定結果が得られた場合、すなわちi[1]が3の場合、CPU401は、アノテーション終了タグ判別ビット列435の最後尾に1を加えると共に、アノテーション終了タグID列437の最後尾にi[3]を加え、登録処理を終了する(ステップS1915、S1916)。
On the other hand, if a negative result is obtained in
[検索動作の概要]
ここで、本実施例に係る検索動作を説明する。本実施例における検索動作は、ロケーションパス検索部420として機能するCPU401により実行される。CPU401は、検索クエリで与えられたロケーションパスに沿ってパスDAGを辿り、ロケーションパスの構造に合致したパスDAG要素のパスDAG IDを取得する。
[Overview of search operation]
Here, the search operation according to the present embodiment will be described. The search operation in this embodiment is executed by the
CPU401は、取得したパスDAG IDから、検索結果となる要素がXML要素かアノテーション要素か判定する。検索結果となる要素がXML要素の場合、CPU401は、XML要素検索部443として機能し、検索クエリに合致した数列データにおける要素の箇所を計算する。一方、検索結果となる要素がアノテーション要素の場合、CPU401は、アノテーション要素検索部444として機能し、検索クエリに合致した数列データにおける要素の箇所を計算する。
The
ここで、XML要素検索部443とアノテーション要素検索部444は、数列に対して次のrankと、selectと、nearestと呼ばれる演算を実行する。
(1)rank(c,p):数列において、p番目の位置の要素にあるcの数
(2)select(c,n):数列において、n回目に出現するcの位置
(3)nearest(p,d):数列において、p番目より後ろの要素でd以下の値を持つ、pに最も近い要素の位置
Here, the XML
(1) rank (c, p): number of c in the element at the p-th position in the number sequence (2) select (c, n): position of c appearing n times in the number sequence (3) nearest ( p, d): position of the element closest to p having a value less than or equal to d in the element after the pth in the sequence
ここでは、図16を参照して、一連の処理動作を説明する。図16は、パスDAG423と数列データを使用して、ロケーションパス「/e/c/d」に合致する要素を検索する例を示す。
Here, a series of processing operations will be described with reference to FIG. FIG. 16 shows an example of searching for an element matching the location path “/ e / c / d” using the
まず、CPU401は、ロケーションパスに沿ってパスDAGを辿ることで、パスDAG IDである(0,3,3)を得る。図16では、該当するパスDAG IDを破線で囲んで示している。ここで、パスDAG IDの1番目の要素が“0”の時はXML要素を示し、2番目の要素である“3”は深さを示している。
First, the
従って、CPU401は、深さ別ID列リスト434の3番目の数列(深さが“3”の位置の数列)において、パスDAG IDの3番目の要素である“3”を含む位置を探す。図16の場合、“3”は、深さ“3”の数列内の4番目にある。この要素も、図16では、破線で囲んで示している。
Therefore, the
次に、CPU401は、XML要素の深さ数列433について、select(3,4)を計算し、“3”が4回目に出現する位置である“14”を得る。次に、CPU401は、アノテーション要素判別ビット列431に対して、select(0,14)を計算する。アノテーション要素判別ビット列431では、XML要素の位置には0が登録されているためである。従って、この演算は、アノテーション要素判別ビット列431で、14回目に出現するXML要素の位置を求めることを意味する。ここでは、演算結果として“15”を得る。
Next, the
図16の左上段に示すように、“15”に対応するDOM DAGの要素は、XML文書2のDOM DAGの“d”である。なお、“15”は、要素における開始タグの位置を示している。要素の終了タグの位置についても同様の方法で取得できる。
As shown in the upper left part of FIG. 16, the element of the DOM DAG corresponding to “15” is “d” of the DOM DAG of the
[ロケーションパス検索部420]
図21は、ロケーションパス検索部420として機能するCPU401の処理を示すフローチャートである。
[Location path search unit 420]
FIG. 21 is a flowchart showing processing of the
CPU401は、ロケーションパスに沿ってパスDAG423を辿り、到達した要素に対応するパスDAG IDをiとする(ステップ2001)。次に、CPU401は、IDiの1番目の要素をs、2番目の要素をdとする(ステップS2002)。また、CPU401は、変数jに1をセットする(ステップS2003)。さらに、CPU401は、Lを、検索対象のタグの開始位置と終了位置のペアを保持するための空のリストとする(ステップS2004)。
The
ここで、CPU401は、要素sが0または1か判定する(ステップS2005)。要素sが0または1であれば、CPU401は、XML要素検索部443に対してiとjを入力し、得られたタグの開始位置、終了位置のタプルtを得る(ステップS2006)。
Here, the
次に、CPU401は、タプルtが(−1,−1)であるか否か判定する(ステップS2007)。タプルtが(−1,−1)でない場合、CPU401は、タプルtをリストLの最後尾に加え、jを1増やす(ステップS2008、S2009)。タプルtが(−1、−1)となるまでステップS2006〜S2009を繰り返す(ステップS2007)。なお、CPU401は、タプルtが(−1、−1)となるまで、CPU401は、ステップS2006〜S2009を繰り返す。そして、タプルtが(−1,−1)となると、CPU401は、リストLを出力し、検索処理を終了する(ステップS2014)。
Next, the
これに対し、ステップS2005で否定結果が得られた場合(この場合は、要素sが0と1のどちらでもない場合)、CPU401は、アノテーション要素検索部444に対してiとjを入力し、得られたタグの開始位置と終了位置のタプルをtとする(ステップS2010)。
On the other hand, if a negative result is obtained in step S2005 (in this case, the element s is neither 0 nor 1), the
ここで、CPU401は、タプルtが(−1,−1)であるか否か判定する(ステップS2011)。この場合も、タプルtが(−1,−1)でない場合、CPU401は、タプルtをリストLの最後尾に加え、変数jに1を加算する(ステップS2012、S2013)。そして、タプルtが(−1、−1)となるまで、CPU401は、ステップS2010〜S2013を繰り返す。そして、タプルtが(−1,−1)となると、CPU401は、リストLを出力し、検索処理を終了する(ステップS2014)。
Here, the
[XML要素検索部443]
図22は、XML要素検索部443として機能するCPU401の処理を示すフローチャートである。
[XML element search unit 443]
FIG. 22 is a flowchart illustrating processing of the
まず、CPU401は、入力されたパスDAG IDをi、検索番号をnとする(ステップS2101)。次に、CPU201は、パスDAG IDiの2番目の要素をd、3番目の要素をjとする(ステップS2102)。さらに、CPU401は、深さ別ID列リスト434のd番目の数列にjが含まれる数をmとする(ステップS2103)。
First, the
ここで、CPU401は、mがnより小さいか判定する(ステップS2104)。mがnより少ない場合、CPU401は、2つの要素からなるタプル(−1,−1)を出力して探索処理を終了する(ステップS2105)。
Here, the
これに対し、mがn以上であった場合、CPU401は、深さ別ID列リスト434のd番目の数列に対して、select(j,n)を計算し、結果をnにセットする(ステップS2106)。
On the other hand, if m is greater than or equal to n, the
次に、CPU401は、XML要素の深さ数列433に対して、select(d,n)を計算し、その結果をnにセットする(ステップS2107)。
Next, the
さらに、CPU401は、アノテーション要素判別ビット列431に対して、select(0,n)を計算し、変数sにセットする(ステップS2108)。
Further, the
次に、CPU401は、XML要素の深さ数列433に対して、nearest(n,d)を計算し、結果を変数pにセットする(ステップS2109)。
Next, the
その後、CPU401は、アノテーション要素判別ビット列431に対して、select(0,p)を計算し、結果をpにセットする(ステップS2110)。
Thereafter, the
次に、CPU401は、アノテーション要素判別ビット列431に対して、rank(1,n)を計算し、結果を変数rにセットする(ステップS2111)。
Next, the
さらに、CPU401は、アノテーション要素の深さ数列438に対して、nearest(r,d)を計算し、結果をrにセットする(ステップS2112)。
Further, the
また、CPU401は、アノテーション要素判別ビット列431に対して、select(1,q)を計算し、変数qにセットする(ステップS2113)。
Further, the
また、CPU401は、変数eにpとqで小さい方をセットする(ステップS2114)。
Further, the
そして、CPU401は、sとeのペアのタプル(s,e)を出力する(ステップS2115)。
Then, the
[アノテーション要素検索部444]
図23は、アノテーション要素検索部444として機能するCPU401の処理を示すフローチャートである。
[Annotation element search unit 444]
FIG. 23 is a flowchart showing the processing of the
まず、CPU401は、入力されたパスDAG IDをi、検索番号をnとする(ステップS2201)。次に、CPU401は、iの3番目の要素をjとする(ステップS2202)。また、CPU401は、アノテーション開始タグID列436にjが含まれる数をmとする(ステップS2203)。
First, the
ここで、CPU401は、mがnより小さいか否か判定する(ステップS2204)。mがnより小さい場合、CPU401は、2つの要素からなるタプル(−1,−1)を出力して検索処理を終了する(ステップS2205)。
Here, the
一方、mがn以上であった場合、CPU401は、アノテーション開始タグID列436に対して、select(j,n)を計算し、結果をmにセットする(ステップS2206)。
On the other hand, if m is greater than or equal to n, the
次に、CPU401は、アノテーション終了タグ判別ビット列435に対して、select(0,m)を計算し、結果をmにセットする(ステップS2207)。
Next, the
さらに、CPU401は、アノテーション要素判別ビット列431に対して、select(1,m)を計算し、変数sにセットする(ステップS2208)。
Further, the
また、CPU401は、アノテーション終了タグID列437に対して、select(j,n)を計算し、結果をmにセットする(ステップS2209)。
Further, the
その後、CPU401は、アノテーション終了タグ判別ビット列435に対して、select(1,m)を計算し、結果をmにセットする(ステップS2210)。
Thereafter, the
また、CPU401は、アノテーション要素判別ビット列431に対して、select(1,m)を計算し、変数eにセットする(ステップS2211)。
Further, the
さらに、CPU401は、sとeのペアのタプル(s,e)を出力する(ステップS2212)。
Further, the
[実施例の効果]
本実施例に係る構造化文書検索装置400では、パスDAGと数列データによりDOM DAGの構造を記述する手法を採用する。この場合、構造化文書検索装置400は、各XML文書と対応するアノテーションデータから作成されたDOM DAGを保持する必要がなく、前述した実施例に比してメモリ容量の消費量を大幅に低減することができる。
[Effect of Example]
In the structured
[第5の実施例]
定数オーダの計算量により、ビット列に対してrankやselectを計算することができるデータ構造として、簡潔ビットベクトルが知られている。また、数列データをデータ圧縮した状態で保持し、圧縮した状態のままrankやselectを効率良く計算することができるデータ構造として、ウェーブレット木が知られている。
[Fifth embodiment]
A concise bit vector is known as a data structure that can calculate rank and select for a bit string depending on the calculation amount of a constant order. In addition, a wavelet tree is known as a data structure that can hold numeric sequence data in a compressed state and efficiently calculate rank and select in the compressed state.
ウェーブレット木は、簡潔ビットベクトルを発展させたデータ構造であり、どちらも事前に計算のための辞書データが必要となる。辞書データの構築法、データ構造を用いたrankやselectの計算方法は、非特許文献2に記載された手法等を用いれば良い。
A wavelet tree is a data structure developed from a concise bit vector, and both require dictionary data for calculation in advance. As a method for constructing dictionary data and a method for calculating rank and select using the data structure, the method described in
本実施例では、検索インデクス構築部454としての処理機能の実行後、簡易ビットベクトル・ウェーブレット木構築部455が、前述した公知の方法により、アノテーション終了タグ判別ビット列435、テキスト要素判別ビット列432、アノテーション要素判別ビット列431に対して簡潔ビットベクトルを生成すると共に、XML要素の深さ数列433、深さ別ID列リスト434、アノテーション開始タグID列436、アノテーション終了タグID列437、アノテーション要素の深さ数列438に対してウェーブレット木を生成する。
In this embodiment, after the processing function as the search
[実施例の効果]
本実施例に係る構造化文書検索装置400は、用意した簡潔ビットベクトル、ウェーブレット木を用いることにより、XML要素検索部443とアノテーション要素検索部444におけるrank演算及びselect演算を効率化することができる。
[Effect of Example]
The structured
[第6の実施例]
実運用面では、同じXML文書に対して、異なるアノテーションデータを追加し又は削除できることが望まれる。本実施例では、与えられたXML文書に対して既にインデクスが構築された状態において、インデクスの構成を大きく変更することなく、アノテーション要素群を追加する手法について説明する。
[Sixth embodiment]
In actual operation, it is desired that different annotation data can be added to or deleted from the same XML document. In the present embodiment, a method of adding an annotation element group without greatly changing the index configuration in a state where an index has already been constructed for a given XML document will be described.
アノテーション要素が追加されると、各要素の親の集合が変更される。このため、これまでパスDAG上で同一と考えられていた要素を別の要素として扱わなければならない。また、アノテーションを追加すると、テキスト領域が分割されるため、パスDAG IDの変更だけでなく、テキスト領域を表す要素の数も増える問題がある。また、アノテーションを追加すると、パスDAGの構造を変更するだけでなく、数列データにある数字cの一部を、これまで数列になかった数字とcからなる数列に置換する必要が発生する。 When an annotation element is added, the parent set of each element is changed. For this reason, an element that has been considered to be identical on the path DAG so far must be treated as another element. In addition, when an annotation is added, the text area is divided, so that not only the path DAG ID is changed, but also the number of elements representing the text area increases. Further, when an annotation is added, not only the structure of the path DAG is changed, but also a part of the number c in the number sequence data needs to be replaced with a number sequence consisting of a number and c that were not in the number sequence so far.
以下では、ウェーブレット木446に登録されている数列にある数字cの一部が、これまで数列になかった数字からなる数列Nに変更となった場合に、既存のウェーブレット木446にデータ構造を追加することで、変更時におけるrank、select、lookupを可能とする拡張ウェーブレット木445について説明する。
In the following, when a part of the number c in the number sequence registered in the
[拡張ウェーブレット木445]
図24は、拡張ウェーブレット木445の概要を示す図である。拡張ウェーブレット木445は、元の数列から構成されたウェーブレット木446、変更となった数字xが元の数列に登録されたどの数字になるかを示す数字変更表447、数列全体において、どの部分の数字が追加されたかを示す追加フラグ448、元の数列の各数字に対して、どの位置に追加されたかを示す数字別追加フラグ449、元の数列を構成する数字において、変更に関連した数字に対応した変更ウェーブレット450から構成される。
[Extended wavelet tree 445]
FIG. 24 is a diagram showing an outline of the
[拡張ウェーブレット木構築部451]
図25は、拡張ウェーブレット木構築部445として機能するCPU401の処理を示すフローチャートである。CPU401は、ウェーブレット木446に登録されている数列のp番目にある数字cが数列Nに変更された場合、以下の手順により、ウェーブレット木446を拡張する。
[Extended wavelet tree construction unit 451]
FIG. 25 is a flowchart showing processing of the
まず、CPU401は、ウェーブレット木446に登録されている数列と同じ長さで全ての値が0で初期化された数列Bを用意する(ステップS2401)。次に、CPU401は、リストNの長さを|N|とし、数列Bのp番目以降に|N|−1個の“1”を追加する(ステップS2402)。
First, the
この後、CPU401は、数列Bの簡潔ビットベクトルを作成し、これを追加フラグ448とする(ステップS2403)。次に、CPU401は、追加フラグ448のrank(p,c)を計算し、計算結果をqとする(ステップS2404)。
Thereafter, the
ここで、CPU401は、ウェーブレット木446に登録されている数字cの個数をmとする(ステップS2405)。さらに、CPU401は、全ての値が0で初期化された長さmの数列Vを用意し、q番目以降に|N|−1個の“1”を追加する(ステップS2406)。
Here, the
この後、CPU401は、数列Vの簡潔ビットベクトルを作成し、これを数字cに対応した数字別追加フラグ449とする(ステップS2407)。さらに、CPU401は、数列Nを保持するウェーブレット木を作成し、これを数字cに対応した変更ウェーブレット450とする(ステップS2408)。その後、CPU401は、変更された数列を構成する各数字が、元の数列を構成していたどの数字に対応するかを記述した数字変更表447を作成する(ステップS2409)。
Thereafter, the
[拡張ウェーブレット木におけるrank計算部452]
図26は、拡張ウェーブレット木445についてrank計算を実行するrank計算部452として機能するCPU401の処理を示すフローチャートである。
[Rank calculation unit 452 in the extended wavelet tree]
FIG. 26 is a flowchart showing processing of the
まず、CPU401は、追加フラグ448に対してrank(0,p)を計算し、qとする(ステップS2501)。次に、CPU401は、数字変更表447から、cの元の数列における数字を取得し、これをdとする(ステップS2502)。次に、CPU401は、元のウェーブレット木446に対して、rank(c,q)を計算し、計算結果をrとする(ステップS2503)。
First, the
ここで、CPU401は、cとdが同じか否か判定する(ステップS2504)。cとdが同じでない場合、CPU401はrを出力し、演算処理を終了する(ステップS2508)。
Here, the
これに対し、cとdが同じ場合、CPU401は、追加フラグ448に対して、select(0,q)を計算し、計算結果をsとする(ステップS2505)。次に、CPU401は、dに対応した数字別追加フラグ449に対して、select(0,r)を計算し、計算結果をtとする(ステップS2506)。また、CPU401は、dに対応した数字別追加フラグ449に対して、rank(c,t+p−s)を計算し、計算結果を出力し、演算処理を終了する(ステップS2507)。
On the other hand, when c and d are the same, the
[拡張ウェーブレット木におけるselect計算部453]
図27は、拡張ウェーブレット木445についてselect計算を実行するselect計算部453として機能するCPU401の処理を示すフローチャートである。
[Select Calculation Unit 453 in Extended Wavelet Tree]
FIG. 27 is a flowchart illustrating the processing of the
まず、CPU401は、数字変更表447から、cの元の数列における数字を取得し、これをdとする(ステップS2601)。
First, the
ここで、CPU401は、cとdが異なるか否か判定する(ステップS2602)。cがdと異なる場合(肯定結果)、CPU401は、dに該当する追加ウェーブレット木に対して、select(c,n)を計算し、計算結果をsとする(ステップS2603)。さらに、CPU401は、dに対応した数字別追加フラグ449に対して、rank(0,s)を計算し、計算結果をnとする(ステップS2604)。
Here, the
このステップS2604の後、又はステップS2602で否定結果を得た後、CPU401は、dに対応した数字別追加フラグ449に対して、select(0,n)を計算し、計算結果をtとする(ステップS2606)。
After this step S2604 or after obtaining a negative result in step S2602, the
次に、CPU401は、元のウェーブレット木446に対して、select(d,n)を計算し、計算結果をmとする(ステップS2607)。また、CPU401は、追加フラグ448に対して、select(0,m)を計算し、計算結果をuとする(ステップS2608)。
Next, the
ここで、CPU401は、cとdが同じか否か判定する(ステップS2609)。cとdが同じ場合、CPU401は、uを出力して計算処理を終了する(ステップS2610)。一方、cとdが異なる場合、CPU401は、s−t+uを計算結果として出力し、計算処理を終了する(ステップS2611)。
Here, the
[実施例の効果]
本実施例に係る構造化文書検索装置400によれば、同じXML文書に対して、異なるアノテーションデータを追加し又は削除することが可能になる。
[Effect of Example]
According to the structured
[他の実施例]
本発明は、上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば上述した実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備える場合に限定されるものではない。
[Other examples]
The present invention is not limited to the above-described embodiments, and includes various modifications. For example, the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to the case where all the configurations described are provided.
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能である。また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成を追加し、削除し、又は置換することもできる。 In addition, a part of the configuration of a certain embodiment can be replaced with the configuration of another embodiment. It is also possible to add the configuration of another embodiment to the configuration of one embodiment. Further, with respect to a part of the configuration of each embodiment, another configuration can be added, deleted, or replaced.
また、上述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上述した各構成、機能等は、CPUがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。 Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Further, each of the above-described configurations, functions, and the like may be realized by software by the CPU interpreting and executing a program that realizes each function.
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。 Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 Further, the control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.
400 構造化文書検索装置
401 CPU(中央演算装置)
402 主記憶装置
403A 補助記憶装置
403B 外部記憶装置
404 リムーバブルメディア
405 ネットワーク
406 インターフェース部
407 XML文書集合
408 アノテーションデータ集合
409 DOM木構築部(XML文書用)
410 DOM木構築部(アノテーションデータ用)
411 文書構造リスト構築部
412 文書構造リスト
413 テキスト要素リスト
414 テキストデータリスト
415 テキスト共有DOM木構築部
416 テキスト共有DOM木
417 テキストデータ・テキスト要素リスト構築部
418 テキスト割当部
419 親子関係解析・登録部
420 ロケーションパス検索部
421 DOM DAG
422 DOM DAG構築部
423 パスDAG
424 転置インデクス構築部
425 転置インデクス
426 DOM DAG要素リストソート部
427 深さ割当部
428 パスDAG ID取得部
429 パスDAG要素生成・登録部
430 検索インデクス
431 アノテーション要素判別ビット列
432 テキスト要素判別ビット列
433 XML要素の深さ数列
434 深さ別ID列リスト
435 アノテーション終了タグ判別ビット列
436 アノテーション開始タグID列
437 アノテーション終了タグID列
438 アノテーション要素の深さ数列
439 パスDAG ID登録部
440 検索インデクス登録部
441 アノテーション終了タグ挿入部
442 転置インデクス登録部
443 XML要素検索部
444 アノテーション要素検索部
445 拡張ウェーブレット木
446 元の数列から構成されたウェーブレット木
447 数字変更表
448 追加フラグ
449 数字別追加フラグ
450 変更ウェーブレット木
451 拡張ウェーブレット木構築部
452 拡張ウェーブレット木におけるrank計算部
453 拡張ウェーブレット木におけるselect計算部
454 検索インデクス構築部
455 簡易ビットベクトル・ウェーブレット木構築部
400 Structured
402
410 DOM tree construction department (for annotation data)
411 Document structure
422 DOM
424 Transposition
Claims (12)
プログラムを格納する第1の記憶領域と、
木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、
前記構造化文書のタグの包含関係と前記アノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、構造化文書のテキストを割り当ててテキスト共有DOM木を生成する文書構造リスト構築部と、
検索クエリを入力する入力装置と、
前記検索クエリとして与えられたロケーションパスに合致する要素を、前記テキスト共有DOM木から検索するロケーションパス検索部と
を有する構造化文書検索装置。 A processor for executing the program;
A first storage area for storing a program;
A second storage area for storing a structured document satisfying the tree structure condition and annotation data attached to the document;
By assigning the text of the structured document to the structure in which the root element of the DOM (Document Object Model) tree obtained individually from the inclusion relation of the tags of the structured document and the inclusion relation of the tags of the annotation data is assigned, the text A document structure list construction unit for generating a shared DOM tree;
An input device for entering a search query;
A structured document search apparatus comprising: a location path search unit that searches the text sharing DOM tree for an element that matches a location path given as the search query.
プログラムを格納する第1の記憶領域と、
木構造条件を満たす構造化文書及び当該文書に付されたアノテーションデータを記憶する第2の記憶領域と、
前記構造化文書のタグの包含関係と前記アノテーションデータのタグの包含関係から個別に得られるDOM(Document Object Model)木のルート要素を共通化した構造に対し、異なるDOM木のタグ間における包含関係を組み入れ、さらに当該組み入れ後の構造に対して構造化文書のテキストを割り当ててDOM DAG(Directed Acyclic Graph)を生成する文書構造リスト構築部と、
検索クエリを入力する入力装置と、
前記検索クエリとして与えられたロケーションパスに合致する要素を、前記DOM DAGから検索するロケーションパス検索部と
を有する構造化文書検索装置。 A processor for executing the program;
A first storage area for storing a program;
A second storage area for storing a structured document satisfying the tree structure condition and annotation data attached to the document;
Inclusion relationship between tags of different DOM trees with respect to a structure in which a root element of a DOM (Document Object Model) tree obtained individually from the inclusion relationship of tags of the structured document and the inclusion relationship of tags of the annotation data is shared A document structure list construction unit that generates a DOM DAG (Directed Acyclic Graph) by assigning the text of the structured document to the structure after incorporation,
An input device for entering a search query;
A structured document search apparatus comprising: a location path search unit that searches the DOM DAG for an element that matches a location path given as the search query.
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGの要素のIDであるパスDAG IDと、対応関係にある1つ又は複数の前記DOM DAGの要素の位置情報とで構成される転置インデクスを構築する転置インデクス構築部とを有し、
前記ロケーションパス検索部は、前記パスDAGと前記転置インデクスとに基づいて、検索クエリであるロケーションパスに合致する要素が出現する箇所を計算する
ことを特徴とする構造化文書検索装置。 The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A transposition index construction unit that constructs a transposition index composed of a path DAG ID that is an ID of the element of the path DAG and position information of one or more elements of the DOM DAG that are in a correspondence relationship;
The said location path search part calculates the location where the element which corresponds to the location path which is a search query appears based on the said path | pass DAG and the said transposition index. The structured document search apparatus characterized by the above-mentioned.
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する検索インデクス構築部とを有し、
前記ロケーションパス検索部は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記ビット列と前記数列データの走査により計算する
ことを特徴とする構造化文書検索装置。 The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A search index construction unit that constructs a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
The location path search unit calculates a path DAG ID corresponding to a location path that is a search query from the path DAG, and a location where an element specified by the path DAG ID obtained by the calculation appears is the bit string and the A structured document search apparatus characterized by performing calculation by scanning numerical sequence data.
複数の前記DOM DAGの構造を集約したパスDAGを生成するパスDAG要素生成・登録部と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する検索インデクス構築部と、
前記検索インデクスが保持する前記ビット列及び前記数列データに基づいて、簡潔ビットベクトル及びウェーブレット木を生成する簡潔ビットベクトル・ウェーブレット木生成部とを有し、
前記ロケーションパス検索部は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記簡潔ビットベクトル又は前記ウェーブレット木に対するrank演算及びselect演算により計算する
ことを特徴とする構造化文書検索装置。 The structured document search device according to claim 2,
A path DAG element generation / registration unit that generates a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A search index construction unit that constructs a search index that holds the path DAG, a bit string, and numeric data that stores a type of location path corresponding to each element of the DOM DAG;
A concise bit vector / wavelet tree generation unit for generating a concise bit vector and a wavelet tree based on the bit string and the sequence data held by the search index;
The location path search unit calculates a path DAG ID corresponding to a location path which is a search query from the path DAG, and a location where an element specified by the path DAG ID obtained by the calculation appears is the concise bit vector. Alternatively, the structured document search apparatus, wherein the calculation is performed by a rank operation and a select operation on the wavelet tree.
アノテーションデータの追加により、前記ウェーブレット木に登録されている数列の一部の数字が他の数列へ置き換えられた場合に、前記ウェーブレット木を、当該ウェーブレット木に対する変更情報を含む拡張ウェーブレット木に変換する拡張ウェーブレット木構築部を有し、
前記ロケーションパス検索部は、前記rank演算及びselect演算に前記拡張ウェーブレット木を使用する
ことを特徴とする構造化文書検索装置。 The structured document search apparatus according to claim 5,
When a part of a number sequence registered in the wavelet tree is replaced with another number sequence by adding annotation data, the wavelet tree is converted into an extended wavelet tree including change information for the wavelet tree. Has an extended wavelet tree construction department,
The location path search unit uses the extended wavelet tree for the rank operation and the select operation.
検索クエリとして与えられたロケーションパスに合致する要素を、前記テキスト共有DOM木から検索する第2の処理と
をコンピュータに実行させるプログラム。 For a structure in which the root element of a DOM (Document Object Model) tree obtained individually from the inclusion relation of tags of structured documents that satisfy the tree structure condition and the inclusion relation of tags of annotation data attached to the document is shared, A first process of assigning text of a structured document and generating a text sharing DOM tree;
A program that causes a computer to execute a second process of searching an element that matches a location path given as a search query from the text sharing DOM tree.
検索クエリとして与えられたロケーションパスに合致する要素を、前記DOM DAGから検索する第2の処理と
をコンピュータに実行させるプログラム。 For a structure in which the root element of a DOM (Document Object Model) tree obtained individually from the inclusion relation of tags of structured documents that satisfy the tree structure condition and the inclusion relation of tags of annotation data attached to the document is shared, A first process of incorporating a containment relationship between tags of different DOM trees, and assigning a text of a structured document to the structure after the incorporation, and generating a DOM DAG (Directed Acyclic Graph);
A program that causes a computer to execute a second process of searching the DOM DAG for an element that matches a location path given as a search query.
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGの要素のIDであるパスDAG IDと、対応関係にある1つ又は複数の前記DOM DAGの要素の位置情報とで構成される転置インデクスを構築する第4の処理とを更に有し、
前記第2の処理は、前記パスDAGと前記転置インデクスとに基づいて、検索クエリであるロケーションパスに合致する要素が出現する箇所を計算する
ことを特徴とするプログラム。 The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fourth process for constructing a transposed index composed of a path DAG ID that is an ID of the element of the path DAG and position information of one or more elements of the DOM DAG that are in a corresponding relationship; ,
The program according to the second aspect is characterized in that, based on the path DAG and the transposed index, a portion where an element that matches a location path that is a search query appears is calculated.
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する第5の処理とを更に有し、
前記第2の処理は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記ビット列と前記数列データの走査により計算する
ことを特徴とするプログラム。 The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fifth process for constructing a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
In the second process, a path DAG ID corresponding to a location path that is a search query is calculated from the path DAG, and a place where an element specified by the path DAG ID obtained by the calculation appears is the bit string and the A program characterized by being calculated by scanning numerical data.
複数の前記DOM DAGの構造を集約したパスDAGを生成する第3の処理と、
前記パスDAGと、ビット列と、前記DOM DAGの各要素に対応するロケーションパスの種類を記憶する数列データとを保持する検索インデクスを構築する第5の処理と、
前記検索インデクスが保持する前記ビット列及び前記数列データに基づいて、簡潔ビットベクトル及びウェーブレット木を生成する第6の処理とを更に有し、
前記第2の処理は、検索クエリであるロケーションパスに対応するパスDAG IDを前記パスDAGから計算し、計算により求められた前記パスDAG IDで特定される要素が出現する箇所を前記簡潔ビットベクトル又は前記ウェーブレット木に対するrank演算及びselect演算により計算する
ことを特徴とするプログラム。 The program according to claim 8 is a process executed by a computer.
A third process for generating a path DAG in which the structures of the plurality of DOM DAGs are aggregated;
A fifth process for constructing a search index that holds the path DAG, a bit string, and numerical sequence data that stores a type of location path corresponding to each element of the DOM DAG;
A sixth process for generating a concise bit vector and a wavelet tree based on the bit string and the number sequence data held by the search index;
In the second process, a path DAG ID corresponding to a location path that is a search query is calculated from the path DAG, and a place where an element specified by the path DAG ID obtained by the calculation appears is the concise bit vector. Alternatively, the program is calculated by a rank operation and a select operation on the wavelet tree.
アノテーションデータの追加により、前記ウェーブレット木に登録されている数列の一部の数字が他の数列へ置き換えられた場合に、前記ウェーブレット木を、当該ウェーブレット木に対する変更情報を含む拡張ウェーブレット木に変換する第7の処理を有し、
前記第2の処理は、前記rank演算及びselect演算に前記拡張ウェーブレット木を使用する
ことを特徴とするプログラム。 The program according to claim 11 is a process to be executed by a computer.
When a part of a number sequence registered in the wavelet tree is replaced with another number sequence by adding annotation data, the wavelet tree is converted into an extended wavelet tree including change information for the wavelet tree. Having a seventh process,
In the program, the second process uses the extended wavelet tree for the rank operation and the select operation.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012117985A JP2013246522A (en) | 2012-05-23 | 2012-05-23 | Structured document retrieval device and program |
CN2013100571978A CN103425719A (en) | 2012-05-23 | 2013-02-22 | Structured document retrieval device and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012117985A JP2013246522A (en) | 2012-05-23 | 2012-05-23 | Structured document retrieval device and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013246522A true JP2013246522A (en) | 2013-12-09 |
Family
ID=49650472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012117985A Pending JP2013246522A (en) | 2012-05-23 | 2012-05-23 | Structured document retrieval device and program |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013246522A (en) |
CN (1) | CN103425719A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018151988A (en) * | 2017-03-14 | 2018-09-27 | Phcホールディングス株式会社 | Electronic diagnostic chart device and program |
JP2020115303A (en) * | 2019-01-18 | 2020-07-30 | ハーディス株式会社 | Natural language parsing system, parsing method and program |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6434162B2 (en) * | 2015-10-28 | 2018-12-05 | 株式会社東芝 | Data management system, data management method and program |
CN107256217B (en) * | 2017-04-19 | 2020-10-02 | 江苏师范大学 | Quick query method of XML data |
CN107862728B (en) * | 2017-09-05 | 2021-04-06 | 平安普惠企业管理有限公司 | Picture label adding method and device and computer readable storage medium |
CN110471888A (en) * | 2018-05-09 | 2019-11-19 | 株式会社日立制作所 | A kind of method, apparatus of automatic data collection, medium, equipment and system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100336061C (en) * | 2003-08-08 | 2007-09-05 | 富士通株式会社 | Multimedia object searching device and methoed |
JP2006127235A (en) * | 2004-10-29 | 2006-05-18 | Toshiba Corp | Structured document management system, structured document management method and program |
CN101290625A (en) * | 2008-06-11 | 2008-10-22 | 华东师范大学 | XML document storage and search method |
US8296722B2 (en) * | 2008-10-06 | 2012-10-23 | International Business Machines Corporation | Crawling of object model using transformation graph |
-
2012
- 2012-05-23 JP JP2012117985A patent/JP2013246522A/en active Pending
-
2013
- 2013-02-22 CN CN2013100571978A patent/CN103425719A/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018151988A (en) * | 2017-03-14 | 2018-09-27 | Phcホールディングス株式会社 | Electronic diagnostic chart device and program |
JP7100960B2 (en) | 2017-03-14 | 2022-07-14 | Phcホールディングス株式会社 | Electronic medical record device and program |
JP2020115303A (en) * | 2019-01-18 | 2020-07-30 | ハーディス株式会社 | Natural language parsing system, parsing method and program |
JP7095874B2 (en) | 2019-01-18 | 2022-07-05 | ハーディス株式会社 | Natural language analysis system, analysis method and program |
Also Published As
Publication number | Publication date |
---|---|
CN103425719A (en) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382927A1 (en) | System and method for hierarchically organizing documents based on document portions | |
CN103299292B (en) | For the treatment of method and the equipment thereof of natural language and mathematical formulae | |
JP2013246522A (en) | Structured document retrieval device and program | |
JP6173848B2 (en) | Document classification device | |
CN106489142A (en) | The visualization of publication scope and analysis | |
JP2006091994A (en) | Device, method and program for processing document information | |
Nargesian et al. | Data lake organization | |
Rantala et al. | How to create easily a data analytic semantic portal on top of a SPARQL endpoint: introducing the configurable Sampo-UI framework | |
Staar et al. | Corpus processing service: a knowledge graph platform to perform deep data exploration on corpora | |
Rayson et al. | Towards interactive multidimensional visualisations for corpus linguistics | |
Papadakos et al. | On exploiting static and dynamically mined metadata for exploratory web searching | |
Sunuwar et al. | Comparative analysis of relational and graph databases for data provenance: Performance, queries, and security considerations | |
Peña et al. | Linked open data visualization revisited: a survey | |
Maria Brunetti et al. | User-centered design and evaluation of overview components for semantic data exploration | |
Wei et al. | Management of scientific documents and visualization of citation relationships using weighted key scientific terms | |
Whitehead et al. | A tool for visualizing and exploring relationships among cancer-related patents | |
Cribbin | Augmenting citation chain aggregation with article maps | |
Peng et al. | PZXG: A genealogy data service platform for kinship management and application | |
Wu et al. | Plexus: an interactive visualization tool for analyzing public emotions from Twitter data | |
Brunetti | Design and evaluation of overview components for effective semantic data exploration | |
Xiao et al. | CKM: a shared visual analytical tool for large-scale analysis of audio-video interviews | |
Ferré | Reconciling expressivity and usability in information access | |
Holstrom et al. | Studying Subject Ontogeny at Scale in a Polyhierarchical Indexing Language | |
Tang et al. | Efficient web-based data imputation with graph model | |
Lettieri et al. | Nets of legal information connecting and displaying heterogeneous legal sources |