(57)【特許請求の範囲】
【請求項１】
所定の文書クラスの構造制約を満たした文書構造を作成する文書構造作成装置において、
所定の手続きに従って作成された、目的とする文書構造を完全には満たしていない被補完文書構造を前記文書クラスに適合させるにあたり、補完が必要なことが予測される要素の構成要素タイプに対するユーザにより指定される補完指定を記憶する補完指定記憶手段と、
前記被補完文書構造を前記文書クラスの構造制約と前記補完指定とに基づいて解析し、前記被補完文書構造に不足している要素を補った文書構造を作成する補完手段と、
を有することを特徴とする文書構造作成装置。
【請求項２】
変換前文書クラスに定義された構成要素タイプと、前記文書クラスに定義された構成要素タイプとの対応関係を定義した対応規則を記憶する対応規則記憶手段と、
前記変換前文書クラスに適合した原文書の構造を解析し、得られた解析結果に前記対応規則に基づいた変換を行い、前記文書クラスに定義された構成要素タイプの要素で構成された前記被補完文書構造を作成する文書構造変換手段と、
をさらに有することを特徴とする請求項１記載の文書構造作成装置。
【請求項３】
前記補完指定には、前記文書クラスの構造に必要な要素を追加するものと、前記文書クラスの構造に要素を追加することを認めるものと、前記文書クラスの構造に必要な要素を差し込むものと、前記文書クラスの構造に要素を差し込むことを認めるもののいずれかであることを特徴とする請求項１記載の文書構造作成装置。
【請求項４】
所定の文書クラスの構造制約を満たした文書構造を作成する文書構造作成方法において、
所定の手続きに従って作成された、目的とする文書構造を完全には満たしていない被補完文書構造を前記文書クラスに適合させるにあたり、補完が必要なことが予測される要素の構成要素タイプに対するユーザにより指定される補完指定を補完指定記憶手段に格納し、
補完手段により、前記被補完文書構造を前記文書クラスの構造制約と前記補完指定とに基づいて解析し、前記被補完文書構造に不足している要素を補った文書構造を作成する、
ことを特徴とする文書構造作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文書構造を作成する文書構造作成装置及び文書構造作成方法に関し、特に所定の文書クラスの構造制約を満たした文書構造を作成する文書構造作成装置及び文書構造作成方法に関する。
【０００２】
【従来の技術】
構成要素として章、節、項などに代表される論理的な構造を持つ文書を構造化文書と呼ぶが、この文書の構造の統一を図ることで、文書の共有や変換が容易となることが知られている。ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）や、ＯＤＡ（Ｏｆｆｉｃｅ  Ｄｏｃｕｍｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などの国際規格の普及もあり、構造化文書は電子的な文書の主流となりつつある。
【０００３】
この構造化文書は通常、文書の構造及び構成要素を定義した文書クラスと呼ばれる分類に従って構造化されている。ＯＤＡでは共通論理構造が文書クラスに該当し、ＳＧＭＬではＤＴＤ（Ｄａｔａ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）が文書クラスの役割を担っている。
【０００４】
構造化文書において文書構造が文書クラスの制約に従っていることには、重要な意味がある。例えば、構造化文書をレイアウトするための規則は、文書構造やその構成要素が特定の文書クラスの制約を満たしていることを前提に決められることが多い。そのため、文書構造が文書クラスの制約から逸脱している場合には正しいレイアウトでの出力ができない。
【０００５】
また、報告書群からの抄録リスト作成のような、多くの構造化文書を処理するためのプログラムには、対象となる文書が特定の文書クラスに従って作成されていることを利用したものが多い。このようなプログラムを利用する際、所定の文書クラスに従わない文書の存在は、プログラム実行の障害となり得る。さらに、構造化文書を対象にしたデータベースでは文書クラスをスキーマとして利用することが多く、スキーマから逸脱したデータの存在はデータベースの信頼性を大きく損なうこととなる。
【０００６】
こういった観点から、文書を文書クラスに適合させ、構造化文書の利点を有効に活用したいという要求が生じている。文書の再利用のために、文書クラスＡに適合した構造化文書を別の文書クラスＢに適合した構造化文書に変換したい、また、特定の文書構造を持たないフラットなテキストで作成された文書を特定の文書クラスに適合した構造化文書に変換したい、といった要求も存在する。
【０００７】
また、文書を流通させる媒体として、紙は依然として多くの場面で使用されている。そのため、紙面上の文書画像を、特定の文書クラスに従った構造化文書に変換して構造化の恩恵を受けようとするニーズも多い。
【０００８】
ところが、文書の構造を特定の文書クラスに適合させる作業は、時にユーザにとって大きな負担となる。
新しい文書を作成する際に特定の文書クラスに従って文書を作成することは、さほど難しいことではない。だが、既存の文書を特定の文書クラスに変換することは、大きな問題を含んでいる。
【０００９】
変換の対象となる文書データや文書画像は、これまでの活動の蓄積の結果である。その量は膨大である場合が多く、変換を全て人手で行うのは困難である。しかも、変換によって新たな情報の生産を行うわけではないので、多くのコストはかけられない。
【００１０】
このような問題を解決し、任意の文書を自動的に構造化文書に変換する技術がいくつか存在している。文書の構造は全て木構造で表わせるものとして、以下に説明を行う。
【００１１】
まず、文書クラスＡに従った構造化文書を別の文書クラスＢに従った構造化文書に変換する方法は、Ｆｒｅｄ  Ｃｏｌｅ  ，  Ｈｅａｔｈｅｒ  Ｂｒｏｗｎ  著のＥｄｉｔｉｎｇ  Ｓｔｒｕｃｔｕｒｅｄ  Ｄｏｃｕｍｅｎｔｓ−Ｐｒｏｂｌｅｍ  ａｎｄ  ｓｏｌｕｔｉｏｎｓ  （Ｅｌｅｃｔｒｏｎｉｃ  Ｐｕｂｌｉｓｈｉｎｇ，ｖｏｌ．５，Ｎｏ．４，ｐｐ．２０９−２１６）に記載されている「ｆａｌｌ  ｂａｃｋ  ｃｌａｓｓ」の概念を応用するこ  とにより容易に考えられる。つまり、文書クラスＡで規定されたノードのタイプが、文書クラスＢで規定されたどのタイプのノードに変換されるかを規則として定義しておく。変換を実行する際には、予め定義されている規則に基づいて、文書クラスＡに従った文書構造に含まれる各ノードを、文書クラスＢに従った文書構造に含まれるノードに逐一変換する。
【００１２】
フラットなテキストで作成された文書を構造化文書に変換する方法は、特開昭６３−２８６９６３号公報に記載されている。すなわち、フラットなテキストの文字列の特徴から、章、節、項の見出しや本文の段落などの構造を決定し、それらを基に構造化文書を作成することが可能である。
【００１３】
文書画像を構造化文書に変換する場合には、特開平６−２１４９８３号公報に記載されている方法が利用できる。つまり、レイアウト上の特徴から、章、節、項の見出しや本文の段落、ヘッダ、フッタなどの構造を決定し、それをもとに構造化文書を作成することが可能である。
【００１４】
ところが、上記の技術ではいずれも、種々の文書クラスに従った構造化を行う場合に、所望の文書クラスの構造制約上必要なノードや部分木を補うことが困難であることが問題になる。
【００１５】
ｆａｌｌ  ｂａｃｋ  ｃｌａｓｓを応用した変換では、変換後の文書構造は、必ずしも文書クラスＢの制約に従っているとは言いきれない。変換後の文書構造に存在するノードは、変換前の文書構造に、対応するノードが存在したものだけである。つまり、変換前の文書構造に存在しないノードの変換は不可能であり、変換後の文書構造には、変換前の文書構造に対応するノードのなかったノードが不足している。ノードの不足は文書クラスの制約を満たさない原因になることが多く、この方法が実用に堪えないことは容易に予想できる。
【００１６】
特開昭６３−２８６９６３号公報の文書変換では、作成できるノードは、テキスト中に存在し、構造を決定できるような特徴ある文字列に対応するノードと、それらを連結するために必要な、予め決められた（すなわち、補完されるノードと補完位置が決まっており、処理プログラムにコーディング済みの）ノードとだけである。
【００１７】
また、特開平６−２１４９８３号公報の文書変換では、作成できるノードは、文書画像中に存在し、構造を決定できるような特徴あるレイアウトに対応するノードと、それらを連結するために必要な、予め決められた（すなわち、補完されるノードと補完位置が決まっており、処理プログラムにコーディング済みの）ノードとだけである。
【００１８】
つまり、上記のような文書変換では、フラットなテキストや文書画像を所望の文書クラスの構造制約を完全に満たした構造化文書に変換することは、実際には不可能である。
【００１９】
所望の文書クラスに合わせてノードや部分木を補うものとしては、特公平６−１２５４２号公報がある。特公平６−１２５４２号公報では、構造化文書の一部を他の部分にコピーする場合に、文書クラスの定義に照らし合わせた上で必要なノードが不足しているときには自動的に補う機能をもっている。
【００２０】
【発明が解決しようとする課題】
しかし、文書クラスの定義に照らし合わせて自動的に文書構造にノードや部分木を補うことには、次の点で大きな問題がある。
【００２１】
第１の点は、文書構造中のある領域における補完は、文書構造の他の領域が文書クラスに適合するかどうか、他の領域でどういう補完を行うべきか、という問題と相互に影響し合うことを考慮に入れていない点である。すなわち、文書構造の補完の仕方は文書構造上の特定の局所領域を見ただけで決められるものではなく、文書全体の構造から決定されるべきである。
【００２２】
第２の点は、任意の文書クラスに適合するような補完の仕方は、一般に複数（時には無限に）存在するにも拘わらず、ユーザにその選択権がないことである。つまり、補完の仕方を選択できないため、ユーザには質の悪い補完結果の出現を防ぐ術がないことになる。
【００２３】
上記の問題点を解決する方法としては、ユーザ自身が文書構造を編集し、所望の文書クラスの制約に適合させるという方法も当然考えられる。しかし、文書全体の構造を把握した上で、ノードを補う部分を決定することは、負荷の大きい作業である。首尾よく補完する箇所を見つけられたとしても、文書クラスの制約を満たすように適切な補完を行うことは大変な困難を伴う。また、長い文書、多くの文書に対してこの方法を適用するのは、事実上不可能である。
【００２４】
本発明はこのような点に鑑みてなされたものであり、文書構造にノードや部分木を補う場合に、常に所望の文書クラスに適合するような補完を行うことにより、ユーザの求める文書構造の作成を可能とする文書構造作成装置及び文書構造作成方法を提供することを目的とする。
【００２５】
【課題を解決するための手段】
本発明では上記課題を解決するために、所定の文書クラスの構造制約を満たした文書構造を作成する文書構造作成装置において、所定の手続きに従って作成された、目的とする文書構造を完全には満たしていない被補完文書構造を前記文書クラスに適合させるにあたり、補完が必要なことが予測される要素の構成要素タイプに対するユーザにより指定される補完指定を記憶する補完指定記憶手段と、前記被補完文書構造を前記文書クラスの構造制約と前記補完指定とに基づいて解析し、前記被補完文書構造に不足している要素を補った文書構造を作成する補完手段と、を有することを特徴とする文書構造作成装置が提供される。
【００２６】
この文書構造作成装置によれば、補完指定記憶手段は、所定の手続きに従って作成された文書構造を完全には満たしていない被補完文書構造を文書クラスに適合させるにあたり、補完が必要なことが予想される要素の構成要素タイプに対するユーザに指定される補完指定を記憶している。補完手段は、被補完文書構造を文書クラスの構造制約と補完指定とに基づいて解析し、被補完文書構造に不足している要素を補った文書構造を作成する。
【００２７】
この構成によれば、文書構造にノードや部分木を補う場合に常に所望の文書クラスに適合するような補完を行うことができ、ユーザの求める構造化文書の作成が可能となる。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。図１は本発明の文書構造作成装置の原理構成図である。
【００２９】
本発明の文書構造作成装置は、文書に対する補完の指定を記憶する補完指定記憶手段１と、被補完文書を補完して構造化文書を作成する補完手段２と、異なる文書クラス間の構成要素タイプの対応規則を記憶している対応規則記憶手段３と、特定の文書クラスの構造制約を満たした原文書を、対応規則に従って別の文書クラスにほぼ従った構造になるように変換する文書構造変換手段４とから構成される。
【００３０】
図において、原文書とは変換前の文書クラスの構造制約を満たした文書であり、フラットなテキストで構成された文書や文書画像も含む。また、被補完文書とは原文書を希望の文書クラスの構造制約に従うよう変換したものである。但し原文書の構成要素タイプと希望の文書クラスの構成要素タイプが必ず１対１で対応しているとは限らず、この被補完文書を希望する文書クラスに従った構造とするためには補完処理が必要である。被補完文書の文書構造を補完して希望の文書クラスに適合する文書構造としたものが構造化文書である。
【００３１】
ここで補完指定記憶手段１には、ユーザが行った補完の指定が記憶される。
補完手段２は、補完指定と希望文書クラスの定義とから補完のための状態遷移機械を作成する状態遷移機械作成手段２ａと、作成した状態遷移機械を被補完文書に適用して構造化文書を作成する状態遷移機械適用手段２ｂとから構成されている。
【００３２】
対応規則記憶手段３は、様々な文書クラスの定義及び各文書クラスの構成要素タイプの対応規則を記憶しており、要求があれば、必要な定義や対応規則を出力する。
【００３３】
文書構造変換手段４は、まず原文書を解析し、原文書の持つ構成要素及び文書構造を認識する。その後、希望する文書クラスに適合するよう対応規則に基づいて文書構造の変換を行う。
【００３４】
次に、本発明の第１の実施の形態の詳しい構成を説明する。図２は文書構造作成装置の第１の実施の形態の構成を示すブロック図である。なお、図１に示す構成と図２に示す構成との対応関係は、図２の説明を行った後に述べる。
【００３５】
本発明の文書構造作成装置２０は、ユーザから入出力ｉ／ｆ１０を介して構造化文書の作成に必要なデータを入力され、入力されたデータから構造化文書を作成し、作成した構造化文書を入出力ｉ／ｆ１０を介してユーザに出力する。
【００３６】
ここで必要になるデータとは、変換を希望する原文書データと、原文書データの現在の文書クラス名（入力文書クラス名）と、どの文書クラスに変換することを希望するのかを示す別の文書クラス名（出力文書クラス名）とである。また、詳しくは後述するが、補完指定も同時に行うことができる。
【００３７】
文書構造作成装置２０は、入力データを受け付ける入力データ受付部２１と、文書クラスの定義情報を管理している文書クラス管理部２２と、入力された原文書データを解析する文書構造解析部２３と、異なる文書クラス間の変換規則を管理している変換規則管理部２４と、文書構造の変換を行う文書構造変換部２５と、補完指定を管理している補完指定管理部２６と、補完処理を行う補完処理部２７と、構造化文書を文書データにして出力する文書データ生成部２８とから構成されている。
【００３８】
入力データ受付部２１は、入出力ｉ／ｆ１０を介してデータの入力を受け付けると、原文書データを文書構造解析部２３へ、入力文書クラス名を文書構造解析部２３、変換規則管理部２４、補完指定管理部２６へ、出力文書クラス名を変換規則管理部２４、補完指定管理部２６、補完処理部２７内のオートマトン作成部２７ａへ、それぞれ入力する。
【００３９】
文書クラス管理部２２は、この文書構造作成装置２０で扱える文書クラスの定義情報を全て記憶・管理しており、各部の要求に応じて定義情報の供給を行う。なお、この図における文書クラス管理部２２への文書クラス定義情報の要求、及び文書クラス管理部２２からの文書クラス定義情報の供給の流れは、破線で示してある。
【００４０】
文書構造解析部２３は、入力された入力文書クラス名を認識し、文書クラス管理部２２に該当する文書クラスの定義情報を要求する。定義情報の供給を受けた後、原文書データを定義情報と照合し、論理的な構造を調べ、原文書データの構成要素と入力文書クラスの構成要素タイプとの対応関係を文書構造変換部２５へ送る。
【００４１】
変換規則管理部２４は、この文書構造作成装置２０で扱える複数の文書クラスの各々に対し、該文書クラスを入力文書クラスとして文書クラスの変換を行う際、該文書クラスの構成要素タイプを、出力文書クラスとされた文書クラスの構成要素タイプにどのように変換するかを定めた変換規則を全て記憶、管理している。そして、入力文書クラス名と出力文書クラス名とが入力されると、２つの文書クラス名に対応する変換規則を文書構造変換部２５に供給する。
【００４２】
文書構造変換部２５は、文書構造解析部２３からは原文書データの構成要素と入力文書クラスの構成要素タイプとの対応関係を、変換規則管理部２４からは入力文書クラスから出力文書クラスへの変換規則を、それぞれ供給される。その後、供給された変換規則に基づいて原文書データの変換を行い、被補完文書データを作成する。被補完文書データは補完処理部２７へ送られる。
【００４３】
補完指定管理部２６は、この文書構造作成装置２０で扱える文書クラスの構成要素タイプに対し、入力文書クラス名と出力文書クラス名とに基づいて、どのような補完を行うかを指定する補完指定を記憶、管理している。そして、入力文書クラス名と出力文書クラス名とが入力されると、２つの文書クラス名に対応する補完指定を補完処理部２７に供給する。なお、ユーザはこの補完指定を必要に応じて作成、更新することができる。この場合ユーザは、入力データとして原文書データや入力文書クラス名、出力文書クラス名と併せて、補完指定も入力することになる。
【００４４】
補完処理部２７は、オートマトン作成部２７ａとオートマトン適用部２７ｂとから構成されており、オートマトンと呼ばれる状態遷移機械を利用して被補完文書の補完処理を行う。オートマトン作成部２７ａは、入力データ受付部２１から入力された出力文書クラス名に基づいて、文書クラス管理部２２に出力文書クラスの定義情報を要求し、この情報と補完指定管理部２６から供給された補完指定とを基に補完オートマトンを作成する。オートマトン適用部２７ｂは、オートマトン作成部２７ａで作成した補完オートマトンを利用して被補完文書を補完し、出力文書クラスに従った文書構造を作成する。
【００４５】
文書データ生成部２８は、補完処理部２７で作成された文書構造を構造化文書データに変換し、入出力ｉ／ｆ１０を介してユーザに出力する。
なお、図１に示した構成と図２に示した構成の対応関係をあげると、図１の補完指定記憶手段１が図２の補完指定管理部２６に、補完手段２が補完処理部２７に、対応規則記憶手段３が変換規則管理部２４に、文書構造変換手段４が文書構造変換部２５に、それぞれ相当している。また、状態遷移機械作成手段２ａはオートマトン作成部２７ａに、状態遷移機械適用手段２ｂはオートマトン適用部２７ｂに、各々対応している。
【００４６】
次に、この文書構造作成装置２０を用いて構造化文書の作成を行う手順を説明する。図３は構造化文書の作成手順を示すフローチャートである。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１］入力データ受付部２１は、入出力ｉ／ｆ１０を介して入力データを受け付ける。入力データとなるものは、構造化を希望する原文書データと、原文書データの現在の文書クラス名（入力文書クラス名）と、どの文書クラスへの構造化を希望するのかを示す別の文書クラス名（出力文書クラス名）とである。また、ユーザの希望があれば補完指定も受け付ける。
［Ｓ２］文書構造解析部２３において、原文書データを入力文書クラスの定義情報に基づいて解析し、文書構造を抽出する。文書解析にあたり必要となる定義情報は、入力データ受付部２１から入力された入力文書クラス名を基に文書クラス管理部２２に要求して得られたものである。
［Ｓ３］変換規則管理部２４は、入力文書クラス名及び出力文書クラス名より変換規則を決定し、文書構造変換部２５に供給する。文書構造変換部２５は、供給された変換規則に基づいて原文書の文書構造を変換し、被補完文書を作成する。この変換の手順に関してはこの後に詳しく説明する。
［Ｓ４］補完指定管理部２６は、補完指定を決定し、補完処理部２７に供給する。補完指定には、ユーザからの指定が入力データに含まれていればその補完指定を、含まれていなければ入力文書クラス名及び出力文書クラス名より選択される補完指定を、利用する。
［Ｓ５］補完処理部２７内のオートマトン作成部２７ａは、出力文書クラスの定義情報と供給された補完指定とを基に、補完オートマトンを作成する。この補完オートマトン作成の手順については後で詳しく説明する。
［Ｓ６］補完処理部２７内のオートマトン適用部２７ｂは、補完オートマトンを実際に動作させ、被補完文書に補完を行って希望する文書クラスに従った文書構造を作成する。作成した文書構造は文書データ生成部２８へ送る。この文書構造作成の手順については後で詳しく説明する。
［Ｓ７］文書データ生成部２８は送られた文書構造から構造化文書データを生成し、入出力ｉ／ｆを介してユーザに出力してこの処理を終了する。なお、構造化文書を正しく作成できなかった場合は、その旨ユーザに通知を行う。
【００４７】
次に、文書クラス及びその定義情報について詳しく説明する。文書クラス管理部２２では、１つの文書クラスをその文書クラスの名称と、その文書クラスの定義情報とのペアで記憶している。なお、文書クラス管理部２２には複数の文書クラスが記憶されるが、個々の文書クラスの名称は、この文書構造作成装置２０内で一意である。
【００４８】
文書クラスの定義情報は、文書構造を構成するノードのタイプ定義と、定義されたノードの接続関係を規定する構造制約とから構成される。特定の文書クラスの定義情報を満たした文書構造を、その文書クラスの文書構造、と呼ぶ。また、その文書クラスの文書構造を持つ文書データを、その文書クラスの文書データ、と呼ぶ。
【００４９】
文書構造を構成する要素（ノード）のタイプ定義は、次の２つの要素からなっている。すなわち、ノードのタイプを識別するための文字列であるタイプ名と、ノードの持つ内容の種類を示す内容型指定とである。ここでこの内容型指定は、「内容を持たない」か、「文字列型の内容を持つ」か、「幾何図形型の内容を持つ」かの３種類の内の１つである。なお、タイプ名が「Ａ」であるタイプのことを「Ａタイプ」と呼び、「Ａタイプのノード」のことを「Ａノード」と呼ぶ。
【００５０】
定義されたノードの接続関係を規定する構造制約は、次に示す構造制約子と、上記ノードのタイプ定義とから作られる木構造によって定義される。構造制約子にはＳＥＱ、ＲＥＰ、ＣＨＯの３種類があり、それぞれ次のような意味を持つ。
【００５１】
構造制約子ＳＥＱは、複数の下位構造をとり、その下位構造で規定された構造が、規定された順序で出現することを示す。
構造制約子ＲＥＰは、単一の下位構造をとり、その下位構造で規定された構造が、１回以上繰り返し出現することを示す。
【００５２】
構造制約子ＣＨＯは、複数の下位構造をとり、その下位構造で規定された構造の内のどれかが出現することを示す。
ここで、本発明の文書構造作成装置２０は文書クラス管理部２２において、「技術メモ」という名称のものと、「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」という名称のものとを含む複数の文書クラスを記憶しているとする。
【００５３】
図４は、「技術メモ」という名称を持つ文書クラスの定義情報のうち、ノードのタイプ定義を示したものである。文書クラス「技術メモ」のノードのタイプ定義１０１によると、この文書クラスは、内容を持たない「技術メモ」ノードと、内容を持たない「文頭」ノードと、文字列型の内容を持つ「表題」ノードと、文字列型の内容を持つ「著者」ノードと、文字列型の内容を持つ「メールアドレス」ノードと、内容を持たない「節」ノードと、文字列型の内容を持つ「見出し」ノードと、文字列型の内容を持つ「段落」ノードと、内容を持たない「図形部」ノードと、文字列型の内容を持つ「図見出し」ノードと、幾何図形型の内容を持つ「図形」ノードとを持っている。
【００５４】
また、図５は、「技術メモ」という名称を持つ文書クラスの定義情報のうち、定義されたノードの接続関係を規定する構造制約を示す。文書クラス「技術メモ」の構造制約１０２によると、この文書クラスは、「技術メモ」ノードの下に、１つの「文頭」ノードと、１つ以上繰り返し出現する「節」ノードとを持つ。また、「文頭」ノードは下位構造として、「表題」ノードと、「著者」ノードと、「メールアドレス」ノードとを各々１つずつ持つ。「節」ノードは、１つの「見出し」ノードと、１つ以上繰り返し出現する「段落」ノードと、１つ以上繰り返し出現する「図形部」ノード或は「図形」ノードを持つ。「図形部」ノードは、「図見出し」ノードと、「図形」ノードとを各々１つずつ持つ。
【００５５】
図６は、「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」という名称を持つ文書クラスの定義情報のうち、ノードのタイプ定義を示したものである。文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のノードのタイプ定義５０１によると、この文書クラスは、内容を持たない「Ｒｅｐｏｒｔ  」ノードと、内容を持たない「Ｈｅａｄｅｒ  」ノードと、文字列型の内容を持つ「Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ」ノードと、内容を持たない「Ａｕｔｈｏｒ  」ノードと、文字列型の内容を持つ「Ｎａｍｅ  」ノードと、文字列型の内容を持つ「Ａｄｄｒｅｓｓ」ノードと、内容を持たない「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードと、文字列型の内容を持つ「Ｄａｔｅ  」ノードと、内容を持たない「Ｓｅｃｔｉｏｎ」ノードと、文字列型の内容を持つ「Ｔｉｔｌｅ」ノードと、文字列型の内容を持つ「Ｐａｒａｇｒａｐｈ」ノードと、内容を持たない「Ａｒｔｗｏｒｋ」ノードと、文字列型の内容を持つ「Ｃａｐｔｉｏｎ」ノードと、幾何図形型の内容を持つ「Ｆｉｇｕｒｅ  」ノードとを持っている。
【００５６】
また、図７は、「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」という名称を持つ文書クラスの定義情報のうち、定義されたノードの接続関係を規定する構造制約を示す。文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の構造制約５０２によると、この文書クラスは、「Ｒｅｐｏｒｔ  」ノードの下に、１つの「Ｈｅａｄｅｒ  」ノードと、１つ以上繰り返し出現する「Ｓｅｃｔｉｏｎ」ノードとを持つ。また、「Ｈｅａｄｅｒ  」ノードは下位構造として、「Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ」ノードと、「Ａｕｔｈｏｒ  」ノードと、「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードとを各々１つずつ持つ。更に「Ａｕｔｈｏｒ  」ノードは、「Ｎａｍｅ  」ノードと、「Ａｄｄｒｅｓｓ」ノードを１つずつ持ち、「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードは１つ以上繰り返し出現する「Ｄａｔｅ  」ノードを持つ。また、「Ｓｅｃｔｉｏｎ」ノードは、１つの「Ｔｉｔｌｅ」ノードと、１つ以上繰り返し出現する「Ｐａｒａｇｒａｐｈ」ノード或は「Ａｒｔｗｏｒｋ」ノードを持つ。「Ａｒｔｗｏｒｋ」ノードは、「Ｃａｐｔｉｏｎ」ノードと、「Ｆｉｇｕｒｅ  」ノードとを各々１つずつ持つ。
【００５７】
ここで文書クラス「技術メモ」を以上のように定義、記憶している文書構造作成装置に、実際に文書クラス「技術メモ」の定義を満たした文書データを原文書として入力した場合、どのように解析されるのかを説明する。ここで解析処理を行うのは図２に示した文書構造作成装置２０内の文書構造解析部２３であり、入力文書クラス名として「技術メモ」という名称を入力してあるものとする。また、この解析処理は図３に示した構造化文書作成の手順を示すフローチャートのステップＳ２にあたる。
【００５８】
図８は、「技術メモ」の文書データを定義情報に基づいて解析し、文書構造を抽出した結果の例を示す。「技術メモ」の文書データの文書構造解析結果１１０において、ノードは楕円で表わしてあり、楕円の中の文字列はそのノードのタイプ名を表わす。また、ノードの内容はノードの直下に矩形で表わしてあり、文字列型の内容を持つノードには文字列が、幾何図形型の内容を持つノードには幾何図形が、そのノードの内容として付随している。
【００５９】
この例では、原文書の文書構造は「技術メモ」ノードをルートとする木構造である。「文頭１」ノードには「表題１」ノード「構造化文書の．．．  」と、「著者１」ノード「ＴａｒｏＦｕｊｉ」と、「メールアドレス１」ノード「ｆｕｊｉ＠ｘｘｘ．ｘｘｘ」とが含まれている。また、「節１」ノードには、「見出し１」ノード「はじめに」と、「段落１」ノード「このメモは．．．  」と、「段落２」ノード「確かに．．．  」と、「図見出し１」ノード「文書変換の．．．  」と「図形１」ノードを含む「図形部１」ノードとが含まれている。また、「節２」ノードには、「見出し２」ノード「自動補完とは．．．  」と、「段落３」ノード「この節では．．．  」と、「図形２」ノードと、「図形３」ノードとが含まれている。
【００６０】
次に図３のステップＳ３で述べた文書構造変換について詳しく説明するが、その前に、文書構造変換に利用する変換規則について説明を行う。変換規則管理部２４には、文書構造作成装置２０で認識可能な文書クラス全てに関する変換規則が、入力文書クラス名及び出力文書クラス名とセットで記憶されている。従って、ユーザから入出力１０、入力データ受付部２１を介して入力文書クラス名、出力文書クラス名の入力を受けた変換規則管理部２４は、該当する２つの文書クラス名から、セットになっている変換規則を呼び出し、文書構造変換部２５へ供給する。
【００６１】
変換規則自体は、入力文書クラスの定義に含まれるタイプ定義のタイプ名（入力タイプ名）と、出力文書クラスの定義に含まれるタイプ定義のタイプ名（出力タイプ名）とをペアにしたものの集合である。個々のペアは、入力タイプ名で指定されたタイプのノード（入力ノード）が、出力タイプ名で指定されたタイプのノード（出力ノード）に変換されることを示している。また、この時入力ノードに付随している内容は、そのまま出力ノードの内容となる。
【００６２】
この変換規則には以下に示す３つの制約がある。
第１に、同じ入力タイプ名を持つペアは、同一変換規則中に複数存在してはならない。つまり、１つの入力ノードを複数の出力ノードに変換するような変換規則は認められない。
【００６３】
第２に、ペアになっているタイプはその内容型指定が一致していなければならない。これは、文字列型の内容を持っている入力ノードは、文字列型の内容を持つと定義された出力ノードにしか変換できないためである。同様に、幾何図形型の入力ノードは幾何図形型の出力ノードにしか、内容を持たない入力ノードは内容を持たない出力ノードにしか変換できない。よって、内容型指定の一致していないペアを含む変換規則は、認められない。
【００６４】
第３に、入力文書クラス定義に含まれる全てのタイプに対するペアが、変換規則に含まれていなければならない。これはつまり、全ての入力ノードは何らかの形で出力ノードに変換されなければならないということである。
【００６５】
以上の制約に留意し、先にあげた文書クラス「技術メモ」を入力文書クラス、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」を出力文書クラス、として作成された変換規則を、具体的にあげてみる。
【００６６】
図９は、入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の変換規則を示す。この変換規則２００は，  入力文書クラス名「技術メモ」及び出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」とセットで変換規則管理部２４に記憶されており、両文書クラス名の入力に伴って文書構造変換部２５へ供給される。
【００６７】
この変換規則によれば、文書クラス「技術メモ」の文書データを文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換する場合、入力ノード「技術メモ」は出力ノード「Ｒｅｐｏｒｔ  」に変換することになる。以下同様に、入力ノード「文頭」は出力ノード「Ｈｅａｄｅｒ  」に、入力ノード「表題」は出力ノード「Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ」に、入力ノード「著者」は出力ノード「Ｎａｍｅ  」に、入力ノード「メールアドレス」は出力ノード「Ａｄｄｒｅｓｓ」に、入力ノード「節」は出力ノード「Ｓｅｃｔｉｏｎ」に、入力ノード「見出し」は出力ノード「Ｔｉｔｌｅ」に、入力ノード「段落」は出力ノード「Ｐａｒａｇｒａｐｈ」に、入力ノード「図形部」は出力ノード「Ａｒｔｗｏｒｋ」に、入力ノード「図見出し」は出力ノード「Ｃａｐｔｉｏｎ」に、入力ノード「図形」は出力ノード「Ｆｉｇｕｒｅ  」に、変換することになる。
【００６８】
以上のような変換規則を実際に利用して文書構造の変換を行う場合、どのような手順で処理を行うのかを次に説明する。
図１０は、文書構造変換の詳しい手順を示したフローチャートである。この処理は図３のステップＳ３にあたり、変換規則の供給を受けた文書構造変換部２５において実行される。以下、図中のステップ番号に沿って説明を行う。
【００６９】
なお、この文書構造変換処理では、入力される文書構造中のノードの１つを  ｃｕｒｒｅｎｔノード、変換によって作成された出力ノードの１つを親ノードとして処理を進める。処理を開始する時点においては、入力される文書構造のルートノードを  ｃｕｒｒｅｎｔノードとする。また、その場合、親ノードは未定としておく。
［Ｓ３１］  ｃｕｒｒｅｎｔノードのタイプ名を入力タイプ名として持つ変換規則ペアを変換規則２００から検索し、対応する出力タイプ名を得る。
［Ｓ３２］ステップＳ３１で得られた出力タイプ名に基づいて、出力ノードを作成する。ここで  ｃｕｒｒｅｎｔノードに内容が付随していた場合は、その内容をコピーして、生成した出力ノードの内容とする。
［Ｓ３３］  ｃｕｒｒｅｎｔノードがルートであるか否か判断する。ルートであるならばステップＳ３５へ、ルートでないならばステップＳ３４へ進む。
［Ｓ３４］  ｃｕｒｒｅｎｔノードがルートでないということは、この処理は既に少なくとも２つ以上の出力ノードを作成し、親ノードにあたるものを持っているということである。よって、この時点で親ノードとされている出力ノードに、ステップＳ３２で作成した出力ノードを末子として連結する。
［Ｓ３５］ステップＳ３２で作成した出力ノードを新しい親ノードとする。
［Ｓ３６］  ｃｕｒｒｅｎｔノードが子供を持つか否か判断する。子供を持つならばステップＳ３７へ進み、子供を持たないならばこの処理を終了する。
［Ｓ３７］  ｃｕｒｒｅｎｔノードの長子を新しい  ｃｕｒｒｅｎｔノードとする。
［Ｓ３８］ここまでの処理で新しい親ノードと新しい  ｃｕｒｒｅｎｔノードとが決定しているので、この２つを用いて、改めて文書構造変換処理を実行する。つまり、この時点で決定している親ノードと  ｃｕｒｒｅｎｔノードとに基づいて、このフローチャートのステップＳ３１から終了に至るまでの処理を行う。この処理が終了したならば、次のステップＳ３９へ進む。
［Ｓ３９］  ｃｕｒｒｅｎｔノードが弟を持つか否か判断する。弟を持つならばステップＳ４０へ進み、弟を持たないならばこの処理を終了する。
［Ｓ４０］  ｃｕｒｒｅｎｔノードの直後の弟を新しい  ｃｕｒｒｅｎｔノードとする。
【００７０】
ここで、図８に示した「技術メモ」の文書データを、図９に示した変換規則に２００基づいて、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換した例を示す。
【００７１】
図１１は、「技術メモ」の文書データを、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換した被補完文書の構造である。被補完文書構造２１０は、図８に示した「技術メモ」の文書データの文書構造解析結果１１０のノードの持つ内容を全て持っており、なおかつ文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」にほぼ従った構成となっている。
【００７２】
しかし、被補完文書構造２１０は、図７に示した構造制約５０２を完全には満たしていない。「Ｈｅａｄｅｒ  」ノードのみを見ても、「Ａｕｔｈｏｒ  」ノード、「Ｒｅｖｉｓｉｏｎ−Ｄａｔｅｓ」ノード、「Ｄａｔｅ  」ノードが不足しており、この文書構造２１０を文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データと呼ぶことはできない。
【００７３】
このような被補完文書構造を希望の文書クラスに従った文書構造にするために、本発明では補完処理を行う。ここで言う補完処理とは、被補完文書構造に不足しているノードや部分木を補う処理のことである。この補完処理に用いるための状態遷移機械として補完オートマトンを作成する手順について次に説明を行うが、その前に、補完オートマトン作成にあたり必要となる補完指定について、及び補完オートマトンについて、説明を行う。
【００７４】
補完指定管理部２６には、文書構造作成装置２０で認識可能な文書クラス全てに関する補完指定が、入力文書クラス名及び出力文書クラス名とセットで記憶されている。従って、ユーザから入出力１０、入力データ受付部２１を介して入力文書クラス名、出力文書クラス名の入力を受けた補完指定管理部２６は、該当する２つの文書クラス名から、セットになっている補完指定を呼び出し、補完オートマトン作成部２７ａへ供給する。また、この文書構造作成装置２０では、ユーザの希望に応じて補完指定を新たに作成・更新することができる。ユーザから新たな補完指定の入力を受けた補完指定管理部２６は、この補完指定を記憶し、オートマトン作成部２７ａに供給することになる。
【００７５】
補完指定自体は、出力文書クラスの定義に含まれるタイプ定義のタイプ名（補完タイプ名）と、補完の種類（補完アクション）をペアにしたものの集合である。個々のペアは、補完タイプ名で指定されたタイプのノード（補完ノード）が、補完アクションに示された方法で補完されることを示している。
【００７６】
ここで補完アクションには「追加」「追加可」「差し込み」「差し込み可」の４種類があり、それぞれ次のような意味を持つ。
補完アクション「追加」は、ペアになっている補完タイプ名を持つノードをルートとする部分木が被補完文書構造において不足しており、その部分木を出力文書クラスの構造制約に従って追加しなければならないことを示す。
【００７７】
補完アクション「追加可」は、ペアになっている補完タイプ名を持つノードをルートとする部分木が被補完文書構造において不足している場合があり、その部分木を出力文書クラスの構造制約に従って追加することを示す。
【００７８】
補完アクション「差し込み」は、ペアになっている補完タイプ名を持つノードが被補完文書構造の途中で抜けており、そのノードを出力文書クラスの構造制約に従って差し込まなければならないことを示す。
【００７９】
補完アクション「差し込み可」は、ペアになっている補完タイプ名を持つノードが被補完文書構造の途中で抜けている場合があり、そのノードを出力文書クラスの構造制約に従って差し込むことを示す。
【００８０】
補完指定には、同じ補完タイプ名を持つペアは同一補完指定中に複数存在してはならないという制約がある。つまり、１つの補完ノードに対して複数の補完アクションを行うような補完指定は認められない。
【００８１】
上記の制約に留意し、先にあげた文書クラス「技術メモ」を入力文書クラス、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」を出力文書クラスとして作成された補完指定を、具体的にあげてみる。
【００８２】
図１２は、入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の補完指定を示す。この補完指定３００は入力文書クラス名「技術メモ」及び出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」とセットで、補完指定管理部２６に記憶されており、両文書クラス名の入力に伴って補完処理部２７内のオートマトン作成部２７ａへ供給される。
【００８３】
この補完指定３００によれば、文書クラス「技術メモ」の文書データを文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換した後、構造化文書を作成するための補完オートマトンを作成する際に、次のような補完処理を行う必要がある。すなわち、補完ノード「Ａｕｔｈｏｒ  」に対しては補完アクション「差し込み」を、補完ノード「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」に対しては補完アクション「追加」を、補完ノード「Ａｒｔｗｏｒｋ」に対しては補完アクション「差し込み可」を、補完ノード「Ｃａｐｔｉｏｎ」に対しては補完アクション「追加可」を行わなければならない。
【００８４】
ここで補完オートマトンとは、有限個の内部状態を持ち、入力と入力時の状態とにより次の状態に遷移していく有限オートマトンの一種である。なおオートマトンとは、初期状態を持ち、内部状態とそれに加えられる入力列とにより次の内部状態が定まる機械の数学的モデルの総称である。本発明では補完処理部２７で行われる補完処理にあたって、出力文書クラスの構成要素タイプのうち下位構造を持つ全ての構成要素タイプに対して補完オートマトンを作成、適用して構造化文書を作成する。
【００８５】
ここで作成される補完オートマトンは、次のような特徴を持っている。すなわち、この補完オートマトンでは入力として被補完文書のノードを読み込み、そのノードのタイプ名に基づいて次に遷移する状態を決定する。また、ノードを読まずに遷移を決定するε遷移や、読み込むノードがなくなった場合に遷移を行うω遷移を利用することができる。
【００８６】
この補完オートマトンを構成する状態には、「初期状態」「通常状態」「追加状態」「開始状態」「終止状態」の５つが存在する。以下、この５つの状態について説明を行う。
【００８７】
「初期状態」とはオートマトンによる処理の開始点である。全ての補完オートマトンの処理は常にこの状態から始まる。
「通常状態」とは、出力文書クラスにおいて補完処理の必要のないノードに対応する状態である。以後、タイプ名「Ａ」を持つノードがこの状態であることを、「Ａ状態」と呼ぶ。
【００８８】
「追加状態」とは、出力文書クラスにおいて部分木の追加が必要なノードの補完処理に対応する状態である。以後、タイプ名「Ａ」を持つノードがこの状態であることを、「Ａ追加状態」と呼ぶ。
【００８９】
「開始状態」とは、出力文書クラスにおいて、中間ノードとして差し込みが必要なノードの補完処理の開始に対応する状態である。以後、タイプ名「Ａ」を持つノードがこの状態であることを、「Ａ開始状態」と呼ぶ。
【００９０】
「終止状態」とは、出力文書クラスにおいて、中間ノードとして差し込みが必要なノードの補完処理の終了に対応する状態である。以後、タイプ名「Ａ」を持つノードがこの状態であることを、「Ａ終止状態」と呼ぶ。
【００９１】
なお、ここで説明した補完オートマトンを構成する５つの状態には、補完指定においてノードのタイプ名とペアになっている補完アクションが付随している。状態の遷移に伴って補完アクションを実施することにより、ノードや部分木の補完処理が行われることになる。
【００９２】
ここで、先にあげた文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」を出力文書クラスとして作成される補完オートマトンを具体的にあげてみる。
図１３は、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のルートノードである「Ｒｅｐｏｒｔ  」ノードの、下位構造に対する補完オートマトンを示す。この補完オートマトン３１０ａは補完処理部２７内のオートマトン作成部２７ａにおいて作成される。また、補完オートマトン３１０ａは、この後に示すデータ構造３１０ｂに従って形成されている。
【００９３】
補完オートマトン３１０ａは、初期状態Ｉｎｉｔと、Ｈｅａｄｅｒ  状態と、Ｓｅｃｔｉｏｎ状態とから構成されている。初期状態ＩｎｉｔからＨｅａｄｅｒ  状態への遷移は「Ｈｅａｄｅｒ  」ノードを読み込むことによって行われ、Ｈｅａｄｅｒ  状態からＳｅｃｔｉｏｎ状態への遷移は「Ｓｅｃｔｉｏｎ」ノードを読み込むことによって行われる。また、Ｓｅｃｔｉｏｎ状態にある時に「Ｓｅｃｔｉｏｎ」ノードを読み込むことで、再度Ｓｅｃｔｉｏｎ状態へ遷移する。これは、「Ｓｅｃｔｉｏｎ」ノードには構造制約子「ＲＥＰ」が付随しており、１回以上繰り返し読み込まれる可能性があるためである。
【００９４】
また、Ｓｅｃｔｉｏｎ状態は終了状態でもある。これは図７に示したように、「Ｒｅｐｏｒｔ  」ノードの持つ下位構造が「Ｈｅａｄｅｒ  」ノード及び１つ以上繰り返し出現する「Ｓｅｃｔｉｏｎ」ノードのみであることによる。
【００９５】
なお、補完オートマトンを図示する場合、初期状態は「Ｉｎｉｔ」の楕円で、終了状態は２重の楕円で、その他の状態は通常の楕円で表わすこととする。また、ある状態から遷移を行うときに読み込む入力ノードのタイプ名を、ラベルと呼ぶ。図１３に示した補完オートマトン３１０ａについて例をあげると、「Ｈｅａｄｅｒ  」ノードは、補完オートマトン３１０ａの状態を初期状態ＩｎｉｔからＨｅａｄｅｒ  状態へ遷移させるラベルである。
【００９６】
次に、この補完オートマトンのデータ構造について説明する。図１４は、図１３に示した「Ｒｅｐｏｒｔ  」ノードの下位構造に対する補完オートマトン３１０ａのデータ構造を示す。
【００９７】
図に示すように、補完オートマトン３１０ａのデータ構造３１０ｂは、出力文書リストに含まれるノードのタイプ名と、補完オートマトンを構成する各状態のリストとのペアである。
【００９８】
ここで状態リストは，各状態のタイプ、対応するタイプ名、終了状態フラグ及び遷移リストから構成されている。各状態のタイプには、初期状態、通常状態、追加状態、開始状態、終止状態のいずれかが記載される。また、対応するタイプ名には、各状態に対応している出力タイプ名が１つ記載される。終了状態フラグには「Ｔ」もしくは「Ｎ」が記載され、このフラグが「Ｔ」であった場合、その状態は終了状態である。
【００９９】
遷移リストは、その状態からの遷移条件のリストである。各遷移条件は遷移する時に読み込むタイプ名を示すラベルと、εフラグと、遷移先の状態へのポインタとのセットで構成されており、１つの状態リストには必ず１つ以上の遷移条件が遷移リストとして含まれている。
【０１００】
この遷移条件の構成要素のうち、ラベルには、出力文書クラスに含まれるノードのタイプ名が記載されるか、ε遷移であることを示す「ε」が記載されるか、ω遷移であることを示す「ω」が記載されるか、のいずれかである。またεフラグには「Ｔ」もしくは「Ｎ」が記載されるが、このεフラグについては後で説明する。
【０１０１】
補完オートマトンのデータ構造の具体例であるデータ構造３１０ｂによると、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のルートノードである「Ｒｅｐｏｒｔ  」ノードの下位構造に対する補完オートマトンは、３つの状態から構成されている。すなわち、対応タイプ名の存在しない初期状態と、「Ｈｅａｄｅｒ  」ノードに対応する通常状態と、「Ｓｅｃｔｉｏｎ」ノードに対応する通常状態とである。このうち、「Ｓｅｃｔｉｏｎ」ノードに対応する通常状態は同時に終了状態でもある。
【０１０２】
初期状態には遷移条件が１つだけ存在し、「Ｈｅａｄｅｒ  」ノードを読み込んだ場合にＨｅａｄｅｒ  状態に遷移する。また、Ｈｅａｄｅｒ  状態には遷移条件が１つだけ存在し、「Ｓｅｃｔｉｏｎ」ノードを読み込んだ場合にＳｅｃｔｉｏｎ状態に遷移する。Ｓｅｃｔｉｏｎ状態には遷移条件が１つだけ存在し、別の「Ｓｅｃｔｉｏｎ」ノードを読み込んだ場合に再度Ｓｅｃｔｉｏｎ状態に遷移する。ここで、読み込む「Ｓｅｃｔｉｏｎ」ノードが存在しなければ、この補完オートマトンは終了する。
【０１０３】
ここで、補完オートマトン作成の手順について説明する。補完オートマトンを作成するということは、基礎オートマトン及び基礎オートマトンのデータ構造を作成した後、ε遷移の置き換えを行って、補完オートマトン及び補完オートマトンのデータ構造を完成させるということである。
【０１０４】
ここで、ε遷移について説明を行う。ε遷移とは、ノードを読み込まずに状態を遷移することを示す遷移条件である。補完処理を行うにあたっては、ノードを読み込まずに状態を遷移して補完アクションを実行する必要があり、ε遷移はこのために欠かすことのできない遷移条件である。だが一方、ε遷移の存在は、ε遷移とその他の遷移条件とが同時に存在した時や、ε遷移が複数存在した時に、遷移先が一意に決定できない原因ともなり得る。
【０１０５】
そのため、まずε遷移を含んだ基礎オートマトン及び基礎オートマトンのデータ構造を作成し、その後、作成した基礎オートマトン及び基礎オートマトンのデータ構造のε遷移を、別の遷移条件に置き換えて、補完オートマトン及び補完オートマトンを作成する。ε遷移を含まない補完オートマトンは基礎オートマトンと同一の形状を持つが、補完オートマトン３１０ａはこの具体的な例である。なお、基礎オートマトンのデータ構造の遷移リストにおいてε遷移は、ラベルにεを、εフラグに「Ｔ」を記載することで表わされる。
【０１０６】
図１５は、補完オートマトン作成の大まかな手順を示したフローチャートである。この処理は図３に示したフローチャートのステップＳ５にあたり、補完指定管理部２６から補完指定の供給を受けた補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ５１］出力文書クラスの定義情報から出力文書クラスを構成するノードのタイプ名のリストを作成する。ここで用いる定義情報は、入力データ受付部２１から入力された出力文書クラス名に基づいて文書クラス管理部２２に要求して得られたものである。
［Ｓ５２］得られたリストからタイプ名を１つ取り出す。取り出したタイプ名はリストから削除する。
［Ｓ５３］取り出したタイプ名のノードが、出力文書クラスの構造制約において下位構造を持っているか否か判断する。なお、ノードに内容が存在していても、これを下位構造とは考えない。下位構造を持っているならばステップＳ５４へ、持っていないならばステップＳ５７へ進む。
［Ｓ５４］取り出したタイプ名を持つノードの下位構造に対する基礎オートマトンを、補完指定に基づいて作成する。この処理の詳しい手順については、この後説明する。
［Ｓ５５］作成した基礎オートマトンに含まれるε遷移の置き換え処理を行い、補完オートマトンを作成する。この処理の詳しい手順については、後に説明する。
［Ｓ５６］作成した補完オートマトン中に、同一ラベルを持つ遷移条件を、複数持っている状態が存在するか否か判断する。存在しなければステップＳ５７へ、存在すればステップＳ５８へ進む。
［Ｓ５７］タイプ名を記載したリストが空であるか否か判断する。空でなければステップＳ５２へ進む。空であれば補完オートマトンの作成は終了したということなので、この処理を終了する。
［Ｓ５８］同一ラベルを持つ遷移条件を複数持っているということは、そのラベルを読み込んだとき、遷移先が一意に定まらないということである。このような状態が存在する場合、補完処理は不可能であるので、補完処理部２７に補完処理不能のメッセージを出して処理を終了する。
【０１０７】
次に、リストから取り出したタイプ名を持つノードの、下位構造に対する基礎オートマトンを、補完指定に基づいて作成する手順について説明する。
図１６は、ノードの下位構造に対する基礎オートマトン作成の手順を示したフローチャートである。この処理は図１５に示したフローチャートのステップＳ５４にあたり、補完指定管理部２６から補完指定の供給を受けた、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ６１］対象となっているノードの下位構造に構造制約子が付随しているか否か判断し、構造制約子ＲＥＰが付随していればステップＳ６２へ、構造制約子ＳＥＱが付随していればステップＳ６３へ、構造制約子ＣＨＯが付随していればステップＳ６４へ進む。また、構造制約子が付随していない場合にはステップＳ６５へ進む。
［Ｓ６２］構造制約子「ＲＥＰ」に対する基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６３］構造制約子「ＳＥＱ」に対する基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６４］構造制約子「ＣＨＯ」に対する基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６５］出力文書クラスの構造制約において、対象となっているノードの下位構造に、補完が指定されているタイプ名が存在するか否か判断する。補完が指定されているタイプ名が存在しなければ、ステップＳ６６へ進む。また、補完が指定されているタイプ名が存在した場合は、ペアになっている補完アクションを調べる。「追加」が指定されていればステップＳ６７へ、「追加可」が指定されていればステップＳ６８へ、「差し込み」が指定されていればステップＳ６９へ、「差し込み可」が指定されていればステップＳ７０へ進む。
［Ｓ６６］補完アクションのない基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６７］補完アクション「追加」を行う基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６８］補完アクション「追加可」を行う基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ６９］補完アクション「差し込み」を行う基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
［Ｓ７０］補完アクション「差し込み可」を行う基礎オートマトンを作成する。作成の手順についてはこの後説明するが、作成が終了したらこのフローチャートから出て図１５のステップＳ５５へ進む。
【０１０８】
次に、構造制約子「ＲＥＰ」に対する基礎オートマトンを作成する手順について説明する。図１７は、構造制約子「ＲＥＰ」に対する基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６２にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ８１］構造制約子「ＲＥＰ」の下位構造に対する基礎オートマトンの作成処理を行う。つまり、処理の対象となっているノードの下位に存在する構造制約子「ＲＥＰ」の下位構造に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ８２］ステップＳ８１で作成した基礎オートマトンの全ての終了状態の遷移リストに、ステップＳ８１で作成した基礎オートマトンの初期状態が持っている遷移リストを追加して処理を終了する。
【０１０９】
次に、構造制約子「ＳＥＱ」に対する基礎オートマトンを作成する手順について説明する。図１８は、構造制約子「ＳＥＱ」に対する基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６３にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ９１］構造制約子「ＳＥＱ」の付随している下位構造の長子にあたる構造に対する基礎オートマトン（ｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎ）の作成処理を行なう。つまり、処理の対象となっているノードの下位に存在する構造制約子「ＳＥＱ」の付随している構造のうち、長子にあたる構造に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ９２］構造制約子「ＳＥＱ」の付随している構造において、ここまでの処理で基礎オートマトンが作成されている構造に、更に弟にあたる構造が存在するか否か判断する。弟にあたる構造が存在すればステップＳ９３へ進み、存在しなければこの処理を終了する。
［Ｓ９３］ステップＳ９２で存在を確認した構造に対する基礎オートマトン（ｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎ）の作成処理を行う。つまり、処理の対象となっているノードの下位に存在する構造制約子「ＳＥＱ」の付随している構造のうち、ステップＳ９２で存在を確認した構造に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ９４］ｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎの全ての終了状態の遷移リストにｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎの初期状態が持つ遷移リストを追加する。
［Ｓ９５］ｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎの初期状態が終了状態であるか否か判断する。終了状態であればステップＳ９７へ、終了状態でなければステップＳ９６へ進む。
［Ｓ９６］今までｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎの終了状態であった状態の終了状態フラグを「Ｎ」にする。
［Ｓ９７］ｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎの状態リストにｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎの初期状態以外の状態リストを追加する。
【０１１０】
次に、構造制約子「ＣＨＯ」に対する基礎オートマトンを作成する手順について説明する。図１９は、構造制約子「ＣＨＯ」に対する基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６４にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１０１］構造制約子「ＣＨＯ」の付随している下位構造の長子にあたる構造に対する基礎オートマトン（ｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎ）の作成処理を行う。つまり、処理の対象となっているノードの下位に存在する構造制約子「ＣＨＯ」の付随している構造のうち、長子にあたる構造に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ１０２］構造制約子「ＣＨＯ」の付随している下位構造において、ここまでの処理で既に基礎オートマトンが作成されている構造に、更に弟にあたる構造が存在するか否か判断する。弟にあたる構造が存在すればステップＳ１０３へ進み、存在しなければこの処理を終了する。
［Ｓ１０３］ステップＳ１０２で存在を確認した構造に対する基礎オートマトン（ｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎ）の作成処理を行う。つまり、処理の対象となっているノードの下位に存在する構造制約子「ＣＨＯ」の付随している構造のうち、ステップＳ１０２で存在を確認した構造に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ１０４］ｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎの初期状態の遷移リストに、ｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏ  ｎ  の初期状態の持つ遷移リストを追加する。
［Ｓ１０５］ｔｅｍｐｏｒａｌ  ａｕｔｏｍａｔｏｎの初期状態以外の状態リストをｒｅｓｕｌｔ  ａｕｔｏｍａｔｏｎの状態リストに追加する。その後、再度ステップＳ１０２に進む。
【０１１１】
次に、特に補完アクションのないノードに対する基礎オートマトンを作成する手順について説明する。図２０は、補完アクションのない基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６６にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１１１］初期状態を作成し、状態リストに、作成した初期状態を追加する。
［Ｓ１１２］通常状態を作成し、状態リストに、作成した通常状態を追加する。この通常状態の「対応するタイプ名」には、現在基礎オートマトン作成の対象となっているノード或は構造制約子の下位構造において、子にあたるノードのタイプ名が記載されている。
［Ｓ１１３］ステップＳ１１１で作成した初期状態に、ステップＳ１１２で作成した通常状態への遷移条件を追加する。この遷移条件のラベルには、ステップＳ１１２で作成した通常状態の「対応するタイプ名」に記載されているタイプ名が記載される。また、この遷移条件のεフラグには「Ｎ」が記載され、遷移先を示すポインタは作成した通常状態へ接続される。
［Ｓ１１４］ステップＳ１１２で作成した通常状態の終了状態フラグを「Ｔ」にする。
【０１１２】
次に、補完アクション「追加」を行う基礎オートマトンを作成する手順について説明する。図２１は、補完アクション「追加」を行う基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６７にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１２１］初期状態を作成し、状態リストに、作成した初期状態を追加する。
［Ｓ１２２］追加状態を作成し、状態リストに、作成した追加状態を追加する。この追加状態の「対応するタイプ名」には、現在基礎オートマトン作成の対象となっているノードの下位構造に追加するよう指定されているノードのタイプ名が記載されている。
［Ｓ１２３］ステップＳ１２１で作成した初期状態に、ステップＳ１２２で作成した追加状態への遷移条件を追加する。この遷移条件のラベルにはεが記載され、εフラグには「Ｔ」が記載される。また、この遷移条件の遷移先を示すポインタは作成した追加状態へ接続される。
［Ｓ１２４］ステップＳ１２２で作成した追加状態の終了状態フラグを「Ｔ」にする。
【０１１３】
次に、補完アクション「追加可」を行う基礎オートマトンを作成する手順について説明する。図２２は、補完アクション「追加可」を行う基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６８にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１３１］初期状態を作成し、状態リストに、作成した初期状態を追加する。
［Ｓ１３２］通常状態を作成し、状態リストに、作成した通常状態を追加する。この通常状態の「対応するタイプ名」には、現在基礎オートマトン作成の対象となっているノードの下位構造に追加することが可能である、と指定されているノードのタイプ名が記載されている。
［Ｓ１３３］ステップＳ１３１で作成した初期状態に、ステップＳ１３２で作成した通常状態への遷移条件を追加する。この遷移条件のラベルには、ステップＳ１３２で作成した通常状態の「対応するタイプ名」に記載されたタイプ名が記載される。である。また、この遷移条件のεフラグには「Ｎ」が記載され、遷移先を示すポインタはステップＳ１３２で作成した通常状態へ接続される。
［Ｓ１３４］ステップＳ１３２で作成した通常状態の終了状態フラグを「Ｔ」にする。
［Ｓ１３５］追加状態を作成し、状態リストに、作成した追加状態を追加する。この追加状態の「対応するタイプ名」には、現在基礎オートマトン作成の対象となっているノードの下位に追加することが可能である、と指定されているノードのタイプ名が記載されている。
［Ｓ１３６］ステップＳ１３１で作成した初期状態に、ステップＳ１３５で作成した追加状態への遷移条件を追加する。この遷移条件のラベルにはεが記載される。また、この遷移条件のεフラグには「Ｔ」が記載され、遷移先を示すポインタはステップＳ１３５で作成した追加状態へ接続される。
［Ｓ１３７］ステップＳ１３５で作成した追加状態の終了状態フラグを「Ｔ」にする。
【０１１４】
次に、補完アクション「差し込み」を行う基礎オートマトンを作成する手順について説明する。図２３は、補完アクション「差し込み」を行う基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ６９にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１４１］差し込みを指定されているタイプ名のノードの下位構造に対する基礎オートマトンの作成処理を行う。つまり、処理の対象となっているノードの下位構造に差し込むよう指定されているタイプ名に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ１４２］開始状態を作成し、状態リストへ、作成した開始状態を追加する。この開始状態の「対応するタイプ名」には、差し込みを行うよう指定されているノードのタイプ名が記載されている。
［Ｓ１４３］初期状態の持つ遷移リストを、ステップＳ１４２で作成した開始状態の遷移リストにコピーする。
［Ｓ１４４］初期状態の持つ遷移リストをクリアする。
［Ｓ１４５］初期状態の持つ遷移リストに、ステップＳ１４２で作成した開始状態への遷移条件を追加する。この遷移条件のラベルにはεが記載される。また、この遷移条件のεフラグには「Ｔ」が記載され、遷移先を示すポインタはステップＳ１４２で作成した開始状態へ接続される。
［Ｓ１４６］終止状態を作成し、状態リストへ、作成した終止状態を追加する。この終止状態の「対応するタイプ名」には、差し込みを行うよう指定されているノードのタイプ名が記載されている。
［Ｓ１４７］全ての終了状態に、ステップＳ１４６で作成した終止状態への遷移条件を追加する。この遷移条件のラベルにはεが記載される。また、この遷移条件のεフラグには「Ｔ」が記載され、遷移先を示すポインタはステップＳ１４６で作成した終止状態へ接続される。
［Ｓ１４８］全ての終了状態の終了状態フラグを「Ｎ」にする。
［Ｓ１４９］ステップＳ１４６で作成した終止状態の終了状態フラグを「Ｔ」にする。
【０１１５】
次に、補完アクション「差し込み可」を行う基礎オートマトンを作成する手順について説明する。図２４は、補完アクション「差し込み可」を行う基礎オートマトン作成の手順を示したフローチャートである。この処理は図１６に示したステップＳ７０にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ１５１］差し込み可を指定されているタイプ名のノードの下位構造に対する基礎オートマトンの作成処理を行う。つまり、処理の対象となっているノードの下位構造に差し込むことが可能である、と指定されているタイプ名に対して、図１６に示したフローチャートのステップＳ６１から終了に至るまでの処理を行う。
［Ｓ１５２］開始状態を作成し、状態リストに、作成した開始状態を追加する。この開始状態の「対応するタイプ名」には、差し込み可と指定されているノードのタイプ名が記載されている。
［Ｓ１５３］初期状態の持つ遷移リストを、ステップＳ１５２で作成した開始状態の遷移リストにコピーする。
［Ｓ１５４］初期状態の持つ遷移リストをクリアする。
［Ｓ１５５］初期状態の持つ遷移リストに、ステップＳ１５２で作成した開始状態への遷移条件を追加する。この遷移条件のラベルにはεが記載される。また、この遷移条件のεフラグには「Ｔ」が記載され、遷移先を示すポインタはステップＳ１５２で作成した開始状態へ接続される。
［Ｓ１５６］終止状態を作成し、状態リストに、作成した終止状態を追加する。この終止状態の「対応するタイプ名」には、差し込み可、と指定されているノードのタイプ名が記載されている。
［Ｓ１５７］全ての終了状態に、ステップＳ１５６で作成した終止状態への遷移条件を追加する。この遷移条件のラベルにはεが記載される。また、この遷移条件のεフラグには「Ｔ」が記載され、遷移先を示すポインタはステップＳ１５６で作成した終止状態へ接続される。
［Ｓ１５８］全ての終了状態の終了状態フラグを「Ｎ」にする。
［Ｓ１５９］ステップＳ１５７で作成された終止状態の終了状態フラグを「Ｔ」にする。
［Ｓ１６０］通常状態を作成し、状態リストに、作成した通常状態を追加する。この通常状態の「対応するタイプ名」には、差し込み可、と指定されているノードのタイプ名が記載されている。
［Ｓ１６１］初期状態の持つ遷移リストに、ステップＳ１６０で作成した通常状態への遷移条件を追加する。この遷移条件のラベルにはステップＳ１６０で作成した通常状態の「対応するタイプ名」に記載されたタイプ名が記載される。また、この遷移条件のεフラグには「Ｎ」が記載され、遷移先を示すポインタはステップＳ１６０で作成した通常状態へ接続される。
［Ｓ１６２］ステップＳ１６０で作成した通常状態の終了状態フラグを「Ｔ」にする。
【０１１６】
本発明では以上のような手順で基礎オートマトンを作成する。
ここで、図１１に示した被補完文書構造２１０を補完する補完オートマトンの原形となる基礎オートマトンを作成してみる。この被補完文書構造２１０は元々、図８に示すように文書クラス「技術メモ」に従った文書構造１１０であったが、図９に示した変換規則２００に基づいて文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に従うよう変換を行った結果、図７に示す文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の構造制約５０２にほぼ従った文書構造となったものである。なお、基礎オートマトンを作成するにあたって必要となる補完規則には、図１２に示した補完規則３００を利用する。
【０１１７】
図２５は、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ｒｅｐｏｒｔ  」ノードの下位構造に対する基礎オートマトンを示す。この基礎オートマトン３２０は、「Ａｕｔｈｏｒ  」ノードの差し込みと、「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードの追加とを行う。なお、この基礎オートマトン３２０は図２に示す補完処理部２７内のオートマトン作成部２７ａにおいて作成される。
【０１１８】
基礎オートマトン３２０は、初期状態Ｉｎｉｔと、Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ状態と、Ａｕｔｈｏｒ  開始状態と、Ｎａｍｅ  状態と、Ａｄｄｒｅｓｓ状態と、Ａｕｔｈｏｒ  終止状態と、Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ追加状態とから構成されている。
【０１１９】
ここで、初期状態ＩｎｉｔからＲｅｐｏｒｔ  −Ｔｉｔｌｅ状態への遷移は「Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ」ノードを読み込むことによって行われ、Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ状態からＡｕｔｈｏｒ  開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１２０】
また、Ａｕｔｈｏｒ  開始状態からＮａｍｅ  状態への遷移は「Ｎａｍｅ  」ノードを読み込むことによって行われ、Ｎａｍｅ  状態からＡｄｄｒｅｓｓ状態への遷移は「Ａｄｄｒｅｓｓ」ノードを読み込むことによって行われる。
【０１２１】
更に、Ａｄｄｒｅｓｓ状態からＡｕｔｈｏｒ  終止状態への遷移と、Ａｕｔｈｏｒ  終止状態からＲｅｖｉｓｉｏｎ  −Ｄａｔｅｓ追加状態への遷移とは、ε遷移、すなわち何も読み込まれずに行われる。
【０１２２】
Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ追加状態はまた、終了状態でもある。これは図７に示したように、「Ｒｅｐｏｒｔ  」ノードの持つ下位構造が、「Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ」ノードと、「Ａｕｔｈｏｒ  」ノードと、「Ｎａｍｅ  」ノードと、「Ａｄｄｒｅｓｓ」ノードと、「Ａｕｔｈｏｒ  」ノードと、「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードとから構成されていることによる。
【０１２３】
また、図２６は、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ａｒｔｗｏｒｋ」ノードの下位構造に対する基礎オートマトンを示す。この基礎オートマトン３３０は、「Ｃａｐｔｉｏｎ」ノードの「追加可」の補完を行う。なお、この基礎オートマトン３３０は図２に示す補完処理部２７内のオートマトン作成部２７ａにおいて作成される。
【０１２４】
基礎オートマトン３３０は、初期状態Ｉｎｉｔと、Ｃａｐｔｉｏｎ状態と、Ｃａｐｔｉｏｎ追加状態と、Ｆｉｇｕｒｅ  状態とから構成されている。
ここで、初期状態ＩｎｉｔからＣａｐｔｉｏｎ状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むことによって行われ、Ｃａｐｔｉｏｎ状態からＦｉｇｕｒｅ  状態への遷移は「Ｆｉｇｕｒｅ  」ノードを読み込むことによって行われる。また、初期状態ＩｎｉｔからＣａｐｔｉｏｎ追加状態への遷移はε遷移、すなわち何も読み込まず行われ、Ｃａｐｔｉｏｎ追加状態からＦｉｇｕｒｅ  状態への遷移は「Ｆｉｇｕｒｅ  」ノードを読み込むことによって行われる。
【０１２５】
Ｆｉｇｕｒｅ  状態はまた、終了状態でもある。これは図７に示したように、「Ａｒｔｗｏｒｋ」ノードの持つ下位構造が「Ｃａｐｔｉｏｎ」ノード及び「Ｆｉｇｕｒｅ  」ノードのみであることによる。
【０１２６】
更に、図２７は、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ｓｅｃｔｉｏｎ」ノードの下位構造に対する基礎オートマトンを示す。この基礎オートマトン３４０は、「Ａｒｔｗｏｒｋ」ノードの「差し込み可」、及び「Ｃａｐｔｉｏｎ」ノードの「追加可」の補完を行う。ここで、「Ａｒｔｗｏｒｋ」ノードは図２６にて基礎オートマトン３３０に示したように「Ｃａｐｔｉｏｎ」ノードの「追加可」の補完を含んでいる。なお、この基礎オートマトン３４０は図２に示す補完処理部２７内のオートマトン作成部２７ａにおいて作成される。
【０１２７】
基礎オートマトン３４０は、初期状態Ｉｎｉｔと、Ｔｉｔｌｅ状態と、Ａｒｔｗｏｒｋ状態と、Ｐａｒａｇｒａｐｈ状態と、Ａｒｔｗｏｒｋ開始状態と、Ｃａｐｔｉｏｎ状態と、Ｃａｐｔｉｏｎ追加状態と、Ｆｉｇｕｒｅ  状態と、Ａｒｔｗｏｒｋ終止状態とから構成されている。
【０１２８】
ここで、初期状態ＩｎｉｔからＴｉｔｌｅ状態への遷移は「Ｔｉｔｌｅ」ノードを読み込むことで行われる。
Ｔｉｔｌｅ状態からの、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで行われる。また、Ｔｉｔｌｅ状態からＡｒｔｗｏｒｋ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１２９】
Ａｒｔｗｏｒｋ状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで行われる。また、Ａｒｔｗｏｒｋ状態からＡｒｔｗｏｒｋ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１３０】
Ｐａｒａｇｒａｐｈ状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで行われる。また、Ａｒｔｗｏｒｋ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１３１】
Ａｒｔｗｏｒｋ開始状態からの、Ｃａｐｔｉｏｎ状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むことで行われ、Ｃａｐｔｉｏｎ追加状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１３２】
Ｃａｐｔｉｏｎ状態からＦｉｇｕｒｅ  状態への遷移は「Ｆｉｇｕｒｅ  」ノードを読み込むことで行われる。Ｃａｐｔｉｏｎ追加状態からＦｉｇｕｒｅ  状態への遷移もまた、「Ｆｉｇｕｒｅ  」ノードを読み込むことで行われる。Ｆｉｇｕｒｅ  状態からＡｒｔｗｏｒｋ終止状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１３３】
Ａｒｔｗｏｒｋ終止状態からの、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで行われる。また、Ａｒｔｗｏｒｋ終止状態からＡｒｔｗｏｒｋ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１３４】
Ｐａｒａｇｒａｐｈ状態、Ａｒｔｗｏｒｋ状態はまた、終了状態でもある。これは図７に示したように、「Ｓｅｃｔｉｏｎ」ノードの持つ下位構造が「Ｔｉｔｌｅ」ノード及び、１つ以上繰り返し出現する「Ｐａｒａｇｒａｐｈ」ノードもしくは「Ａｒｔｗｏｒｋ」ノードのみから構成されていることによる。つまり、「Ｐａｒａｇｒａｐｈ」ノードもしくは「Ａｒｔｗｏｒｋ」ノードの出現が、「Ｓｅｃｔｉｏｎ」ノードの構造制約を満たすことになる。
【０１３５】
Ａｒｔｗｏｒｋ終止状態もまた、終了状態でもある。これは、Ａｒｔｗｏｒｋ状態が終了状態であることから、「Ａｒｔｗｏｒｋ」ノードの差し込みもまた、「Ｓｅｃｔｉｏｎ」ノードの構造制約を満たすことになるためである。
【０１３６】
次に、作成した基礎オートマトンに含まれるε遷移の置き換え処理の手順について説明する。
これまでに説明した手順で作成した基礎オートマトンにはε遷移、すなわち何も読み込まずに遷移する場合が数多く含まれている。このままでは、ε遷移と他の遷移との、あるいはε遷移同士の競合が起こり、効率的な補完ができない。そこで、読み込まれたノードのタイプ名に基づいて、ε遷移を行うべきか、それ以外の遷移を行うべきか、もしくは複数のε遷移の中でもどの遷移を行うべきかを決定できるよう、ε遷移に次に示すような置き換え処理を施し、補完オートマトンを作成する。
【０１３７】
図２８は、ε遷移の置き換え処理の手順を示したフローチャートである。この処理は図１５に示したフローチャートのステップＳ５５にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて基礎オートマトン作成に続いて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ２０１］作成した基礎オートマトンのデータ構造から、ε遷移を持つ（ラベルがεであり、εフラグが「Ｔ」である遷移リストを持つ）状態を選び出し、εリストを作成する。
［Ｓ２０２］作成した基礎オートマトンのデータ構造から、ε遷移を持たない状態を選び出し、ｎｏｎ−εリストを作成する。
［Ｓ２０３］εリストが空であるか否か判断する。空でなければステップＳ２０４へ、空であればステップＳ２０８へ進む。
［Ｓ２０４］ｎｏｎ−εリストが空であるか否か判断する。空でなければステップＳ２０５へ、空であればステップＳ２０８へ進む。
［Ｓ２０５］ｎｏｎ−εリストによるεリストの要素が持つε遷移の置き換え処理を行う。この処理の手順についてはこの後で説明する。
［Ｓ２０６］εリストの要素から、ε遷移が無くなった（遷移条件の全てのラベルに、ε以外の記載がされている）状態を選び出し、新たな  ｎｏｎ−  εリストとする。
［Ｓ２０７］εリストの要素から、まだε遷移を持つ状態を選び出し、新たなεリストとする。ステップＳ２０３へ進み、新たなεリストと、新たな  ｎｏｎ−  εリストとについて、ε遷移の置き換え処理を行う。
［Ｓ２０８］作成した補完オートマトンに、ω遷移を持つ終了状態が存在するか否か判断する。存在すればステップＳ２０９へ進み、存在しなければε遷移の置き換えは正常に終了しているので、このフローチャートを出て図１５のステップＳ５６へ進む。
［Ｓ２０９］ω遷移を持つ終了状態が存在するとき、もしくはεリストが空でないのに  ｎｏｎ−  εリストが空であるとき、ε遷移の置き換えは失敗である。補完処理不能のメッセージを出力し、図１５のステップＳ５６へ進む。
【０１３８】
次に、ｎｏｎ−εリストによるεリストの要素が持つε遷移の置き換え処理の手順を説明する。図２９は、ｎｏｎ−εリストによるεリストの要素が持つε遷移の置き換えの手順を示すフローチャートである。この処理は図２８に示したフローチャートのステップＳ２０５にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ２１１］εリストの最初の要素を  ｃｕｒｒｅｎｔ状態とする
［Ｓ２１２］  ｃｕｒｒｅｎｔ状態の遷移リストが空であるか否か判断する。空であればステップＳ２１４へ、空でなければステップＳ２１３へ、進む。
［Ｓ２１３］ｎｏｎ−εリストによる、  ｃｕｒｒｅｎｔ状態が持つε遷移の置き換え処理を行う。この処理の手順についてはこの後で説明する。
［Ｓ２１４］  ｃｕｒｒｅｎｔ状態がεリストの最後尾であるか否か判断する。最後尾であればこの処理は終了である。最後尾でなければステップＳ２１５へ進む。
［Ｓ２１５］εリストの  ｃｕｒｒｅｎｔ状態の次の状態を、新たな  ｃｕｒｒｅｎｔ状態としてステップＳ２１２へ進む。
【０１３９】
次に、ｎｏｎ−εリストによる  ｃｕｒｒｅｎｔ状態が持つε遷移の置き換え処理の手順を説明する。図３０は、ｎｏｎ−εリストによる  ｃｕｒｒｅｎｔ状態が持つε遷移の置き換えの手順を示すフローチャートである。この処理は図２９に示したフローチャートのステップＳ２１３にあたり、補完処理部２７内のオートマトン作成部２７ａにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ２２１］  ｃｕｒｒｅｎｔ状態の遷移リストの先頭の遷移条件を、  ｃｕｒｒｅｎｔ遷移とする。
［Ｓ２２２］  ｃｕｒｒｅｎｔ遷移がε遷移であるか否か判断する。ε遷移であればステップＳ２２３へ進み、ε遷移でなければステップＳ２２８へ進む。
［Ｓ２２３］  ｃｕｒｒｅｎｔ遷移の遷移先である状態が、ｎｏｎ−εリストの要素であるか否か判断する。ｎｏｎ−εリストの要素であればステップＳ２２４へ、ｎｏｎ−εリストの要素でなければステップＳ２２８へ進む。
［Ｓ２２４］  ｃｕｒｒｅｎｔ遷移の遷移先の状態が持つ遷移リストをコピーして、  ｃｕｒｒｅｎｔ状態の遷移リストに追加する。その際、εフラグを「Ｔ」に変更し、遷移先を示すポインタは  ｃｕｒｒｅｎｔ遷移の遷移先へ接続する。
［Ｓ２２５］  ｃｕｒｒｅｎｔ遷移の遷移先の状態が終了状態である（終了状態フラグが「Ｔ」である）か否か判断する。終了状態であればステップＳ２２６へ、終了状態でなければステップＳ２２７へ進む。
［Ｓ２２６］  ｃｕｒｒｅｎｔ状態の遷移リストにω遷移を追加する。このω遷移は、ラベルにω、εフラグに「Ｔ」を持ち、遷移先を示すポインタが  ｃｕｒｒｅｎｔ遷移の遷移先に接続されている遷移条件である。
［Ｓ２２７］  ｃｕｒｒｅｎｔ遷移を  ｃｕｒｒｅｎｔ状態の遷移リストから削除する。
［Ｓ２２８］遷移リスト内に次の遷移条件が存在するか否か判断する。次の遷移が存在しなければ、この処理は終了する。また、次の遷移が存在すればステップＳ２２９へ進む。
［Ｓ２２９］ステップＳ２２８で存在が確認された遷移条件をｃｕｒｒｅｎｔ  遷移とし、ステップＳ２２２へ進む。
【０１４０】
以上のような手順で、ε遷移が置き換えられる。つまりε遷移は、そのε遷移から到達可能な状態の持つ遷移条件に置き換えられ、タイプ名のラベルを得る。置き換えられた遷移条件は、元々ε遷移であったことが判別できるようεフラグを「Ｔ」にしてある。また、そのε遷移から到達可能な状態が終了状態であった場合、読み込むノードが存在しなくても遷移を行えるよう、ω遷移も遷移リストに加えられる。
【０１４１】
ここで、基礎オートマトンにε遷移の置き換え処理を施した例をあげる。
図３１は、図２５にて示した基礎オートマトン３２０にε遷移の置き換え処理を施して作成した補完オートマトン４２０を示す。
【０１４２】
補完オートマトン４２０は、初期状態Ｉｎｉｔと、Ｒｅｐｏｒｔ  −Ｔｉｔｌｅ状態と、Ａｕｔｈｏｒ  開始状態と、Ｎａｍｅ  状態と、Ａｄｄｒｅｓｓ状態と、Ａｕｔｈｏｒ  終止状態と、Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ追加状態とから構成されている。
【０１４３】
ここで、基礎オートマトンではε遷移であったＲｅｐｏｒｔ  −Ｔｉｔｌｅ状態からＡｕｔｈｏｒ  開始状態への遷移は、「Ｎａｍｅ  」ノードを読み込むことによって行われる。また、Ａｄｄｒｅｓｓ状態からＡｕｔｈｏｒ  終止状態への遷移と、Ａｕｔｈｏｒ  終止状態からＲｅｖｉｓｉｏｎ  −Ｄａｔｅｓ追加状態への遷移とは、ω遷移によって行われる。このω遷移の存在によって、読み込むノードが存在しなくてもＲｅｖｉｓｉｏｎ  −Ｄａｔｅｓ開始状態への遷移が可能となり、「Ｒｅｖｉｓｉｏｎ  −Ｄａｔｅｓ」ノードの追加が行える。
【０１４４】
なお、ε遷移の置き換え処理を行った際、元々ε遷移であった遷移条件のεフラグを「Ｔ」にすることで、置き換え処理の対象であったか否かを判断できるようにした。元々ε遷移であった遷移条件による遷移を、この図ではラベルに下線を引くことで表わしている。また、これ以降の補完オートマトンを示す図においても同様に、ラベルの下線でε遷移からの置き換え処理を表わす。
【０１４５】
図３２は、図２６にて示した基礎オートマトン３３０にε遷移の置き換え処理を施して作成した補完オートマトン４３０を示す。
補完オートマトン４３０は、初期状態Ｉｎｉｔと、Ｃａｐｔｉｏｎ状態と、Ｃａｐｔｉｏｎ追加状態と、Ｆｉｇｕｒｅ  状態とから構成されている。
【０１４６】
ここで、基礎オートマトンではε遷移であった初期状態ＩｎｉｔからＣａｐｔｉｏｎ追加状態への遷移は、「Ｆｉｇｕｒｅ  」ノードを読み込むことによって行われる。
図３３は、図２７にて示した基礎オートマトン３４０にε遷移の置き換え処理を施して作成した補完オートマトン４４０を示す。
【０１４７】
補完オートマトン４４０は、初期状態Ｉｎｉｔと、Ｔｉｔｌｅ状態と、Ａｒｔｗｏｒｋ状態と、Ｐａｒａｇｒａｐｈ状態と、Ａｒｔｗｏｒｋ開始状態と、Ｃａｐｔｉｏｎ状態と、Ｃａｐｔｉｏｎ追加状態と、Ｆｉｇｕｒｅ  状態と、Ａｒｔｗｏｒｋ終止状態とから構成されている。
【０１４８】
ここで、基礎オートマトンではε遷移であった、Ｔｉｔｌｅ状態からＡｒｔｗｏｒｋ開始状態への遷移は、「Ｃａｐｔｉｏｎ」ノードを読み込むか、又は「Ｆｉｇｕｒｅ  」ノードを読み込むか、どちらかの場合に行われる。また、Ａｒｔｗｏｒｋ状態からＡｒｔｗｏｒｋ開始状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むか、又は「Ｆｉｇｕｒｅ  」ノードを読み込むか、どちらかの場合に行われる。
【０１４９】
Ｐａｒａｇｒａｐｈ状態からＡｒｔｗｏｒｋ開始状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むか、又は「Ｆｉｇｕｒｅ  」ノードを読み込むか、どちらかの場合に行われる。Ａｒｔｗｏｒｋ開始状態からＣａｐｔｉｏｎ追加状態への遷移は「Ｆｉｇｕｒｅ  」ノードを読み込むことで行われる。
【０１５０】
Ｆｉｇｕｒｅ  状態からＡｒｔｗｏｒｋ終止状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むか、「Ｆｉｇｕｒｅ  」ノードを読み込むか、「Ａｒｔｗｏｒｋ」ノードを読み込むか、「Ｐａｒａｇｒａｐｈ」ノードを読み込むか、何れかによって行われる。また、Ｆｉｇｕｒｅ  状態からＡｒｔｗｏｒｋ終止状態への遷移は、ω遷移、すなわち、読み込むノードが存在しない時にも行われる。このω遷移の存在によって、Ｆｉｇｕｒｅ  状態において読み込むノードが無くてもＡｒｔｗｏｒｋ終止状態への遷移が可能となり、この補完オートマトンの終了状態へ到達できる。
【０１５１】
更に、Ａｒｔｗｏｒｋ終止状態からＡｒｔｗｏｒｋ開始状態への遷移は「Ｃａｐｔｉｏｎ」ノードを読み込むか、又は「Ｆｉｇｕｒｅ  」ノードを読み込むか、どちらかの場合に行われる。
【０１５２】
次に、作成した補完オートマトンを利用して，被補完文書の文書構造に補完処理を施す手順について説明する。図３４は、補完処理の大まかな手順を示したフローチャートである。この処理は図３に示したフローチャートのステップＳ６にあたり、図２に示した補完処理部２７内のオートマトン適用部２７ｂにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ２３１］被補完文書の文書構造においてルートノードの子として存在しているノードの列を、入力ノード列とする。また、作成する文書構造において対応するルートノードに子として追加していくノードの列を、出力ノード列とする。
［Ｓ２３２］作成した補完オートマトンのうち、ルートノードの下位構造に対する補完オートマトンの状態リストにある初期状態を  ｃｕｒｒｅｎｔ状態とする。
［Ｓ２３３］入力ノード列が空であるか否か判断する。空でなければステップＳ２３４へ、空であればステップＳ２４０へ進む。
［Ｓ２３４］入力ノード列の先頭のノードを  ｃｕｒｒｅｎｔノードとする。
［Ｓ２３５］  ｃｕｒｒｅｎｔ状態にある時に、  ｃｕｒｒｅｎｔノードを読み込むことで状態が遷移するか否か判断する。遷移するならばステップＳ２３６へ、遷移しないならばステップＳ２４３へ、進む。ここで  ｃｕｒｒｅｎｔノードを読み込んで遷移するか否かを判断するには  ｃｕｒｒｅｎｔ状態の遷移リストを調べれば良い。この場合、入力ノード列が空でないことは既に確認されており、ω遷移が行われることはない。よって、  ｃｕｒｒｅｎｔ状態の遷移リストにｃｕｒｒｅｎｔ  ノードの持つタイプ名がラベルとして記載された遷移情報があれば、  ｃｕｒｒｅｎｔ状態はその遷移情報に基づいて遷移することが判る。
［Ｓ２３６］ステップＳ２３５において存在を確認した、  ｃｕｒｒｅｎｔノードを読み込んで遷移する遷移先の状態を新たな  ｃｕｒｒｅｎｔ状態として、ステップＳ２３７へ進む。
［Ｓ２３７］ここまでの処理で得られた  ｃｕｒｒｅｎｔ状態について  ｃｕｒｒｅｎｔ状態固有の処理を行う。この処理の手順については、この後で説明する。
［Ｓ２３８］ステップＳ２３７に至るまでの手順において、新しい  ｃｕｒｒｅｎｔ状態へ遷移するために使用した遷移条件のεフラグが「Ｔ」であるか否か判断する。「Ｔ」でなく「Ｎ」であればステップＳ２３９へ、「Ｔ」であればステップＳ２３３へ、進む。
［Ｓ２３９］遷移条件のεフラグが「Ｎ」であったということは、  ｃｕｒｒｅｎｔノードの持つタイプ名を、この後の処理において、遷移条件のラベルとして使用する必要がないということである。よって、入力ノード列から  ｃｕｒｒｅｎｔノードを削除する。
［Ｓ２４０］  ｃｕｒｒｅｎｔ状態が終了状態であるか否か判断する。終了状態であればこの補完処理は正常に終了したということなので、このフローチャートを出て、図３のステップＳ７へ進む。終了状態でなければステップＳ２４１へ進む。
［Ｓ２４１］  ｃｕｒｒｅｎｔ状態の遷移リストに、ω遷移が存在するか否か判断する。ω遷移が存在すればステップＳ２４２へ進む。ω遷移が存在しなければ、ステップＳ２４３へ進む。
［Ｓ２４２］ステップＳ２４１で存在を確認した、ω遷移に基づいて遷移した時の遷移先の状態を、新たな  ｃｕｒｒｅｎｔ状態として、ステップＳ２３７へ進む。
［Ｓ２４３］まだ終了状態に至っていないにも拘わらず状態遷移ができなくなってしまったので、補完処理不能のメッセージを出力して、処理を終了する。
【０１５３】
ここで、  ｃｕｒｒｅｎｔ状態固有の処理の手順について説明する。図３５は、  ｃｕｒｒｅｎｔ状態固有の処理の手順を示したフローチャートである。この処理は図３４に示したフローチャートのステップＳ２３７にあたり、図２に示した補完処理部２７内のオートマトン適用部２７ｂにおいて実行される。以下、図中のステップ番号に沿って説明を行う。
［Ｓ２５１］  ｃｕｒｒｅｎｔ状態がどんな状態であるか判断する。すなわち、通常状態であるか、追加状態であるか、開始状態であるか、終止状態であるかを  ｃｕｒｒｅｎｔ状態の状態タイプを調べて判断する。  ｃｕｒｒｅｎｔ状態が、通常状態であればステップＳ２５２へ、追加状態であればステップＳ２５３へ、開始状態であればステップＳ２５４へ、終止状態であればステップＳ２５５へ進む。
［Ｓ２５２］  ｃｕｒｒｅｎｔノードのコピーを作成し、現在の出力ノード列の最後尾に追加する。
「Ｓ２５３］追加される部分木を作成し、その部分木のルートノードを出力ノード列の最後尾に追加する。ここで作成する部分木は、補完指定において補完アクション「追加」とペアで記憶されていたタイプ名を持つノードをルートとする、出力文書クラスの構造制約を満たした部分木である。
［Ｓ２５４］現在の出力ノード列をノード列スタック（ノード列を一時的に記憶しておく領域であって、ＬＩＦＯ、すなわち最後に記憶させたデータが最初に取り出される性質を持つ）に  ｐｕｓｈ  （スタックにデータを入れること）し、空のノード列を作成して、出力ノード列とする。
［Ｓ２５５］差し込むノードを作成して、出力ノード列を、作成されたノードの子ノード列とする。ここで作成するノードは、終止状態に対応するタイプ名を持つノードである。
［Ｓ２５６］ノード列スタックからノード列を１つ  ｐｏｐ（スタックからデータを取り出すこと）し、出力ノード列とする。
［Ｓ２５７］ステップＳ２５５において作成したノードを出力ノード列の最後尾に追加する。
【０１５４】
以上のような手順で補完処理を行うことで、被補完文書の文書構造を希望の文書クラスに従った文書構造とすることができる。図３６は、図１１にて示した被補完文書構造２１０に、図３１にて示した補完オートマトン４２０、図３２にて示した補完オートマトン４３０、図３３にて示した補完オートマトン４４０を適用して作成した文書構造を示す。
【０１５５】
文書構造５０９は、図８に示した「技術メモ」の文書データの文書構造解析結果１１０のノードの持つ内容を全て持っており、なおかつ文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に完全に従った構成となっている。なお、この図において点線で示した部分は被補完文書構造２１０に含まれていた部分であり、実線で示した部分が補完処理によって補う部分である。原文書に含まれていないデータを新たに作成することは本発明の目的ではないので、補完したノードが内容を持つものであった場合には空欄を設けてある。
【０１５６】
次に、完成させた構造化文書がどのような文書構造を持つか示す。図３７は、図８に示した文書クラス「技術メモ」の文書データの文書構造解析結果１１０を、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に適合するように変換した適合文書構造である。
【０１５７】
適合構造化文書５１０は、図６にて示した文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のノードのタイプ定義５０１と、図７にて示したノードの接続関係を規定する構造制約５０２とを完全に満たす。
【０１５８】
以上に示したような文書構造作成装置を用いることにより、文書全体の構造から補完の仕方が決定でき、適切な構造化文書を得ることができる。すなわち、補完処理にあたる補完オートマトンは、被補完文書のノードの接続関係を全て把握しており、個々の関係を確認した上で補完処理を行うので、文書構造の一部の補完が他の部分に悪影響を及ぼすことはない。また、大規模な文書や複雑な構造を持つ文書等への、人手で行うことの困難な補完処理も可能である。
【０１５９】
更に、この文書構造作成装置ではユーザが補完指定を行うこともできるので、質の悪い補完結果が出現した場合に補完指定をやり直すことができる。補完の仕方は一般に複数存在するので、ユーザは補完の仕方を選択し、質の良い構造化文書を得ることができる。
【０１６０】
次に、本発明の第２の実施の形態の詳しい構成を説明する。図３８は文書構造作成装置の第２の実施の形態の構成を示すブロック図である。なお、この第２の実施の形態の構成は、図２に示す第１の実施の形態の構成と基本的には同じである。
【０１６１】
本発明の文書構造作成装置３０は、ユーザから入出力ｉ／ｆ１０を介して構造化文書の作成に必要なデータを入力され、入力されたデータから構造化文書を作成し、作成した構造化文書を入出力ｉ／ｆ１０を介してユーザに出力する。
【０１６２】
ここで必要になるデータは、第１の実施の形態の文書構造作成装置で必要になったデータ同様、原文書データと、入力文書クラス名と、出力文書クラス名とである。また、補完指定も行うことができる。
【０１６３】
文書構造作成装置３０は、入力データを受け付ける入力データ受付部３１と、文書クラスの定義情報を管理している文書クラス管理部３２と、入力された原文書データを解析する文書構造解析部３３と、異なる文書クラス間の変換規則を管理している変換規則管理部３４と、文書構造の変換を行う文書構造変換部３５と、補完指定を管理している補完指定管理部３６と、補完処理を行う補完処理部３７と、補完処理の施された文書構造を構造化文書データに変換して出力する文書データ生成部３８と、補完指定の検査を行う補完指定検査部３９とから構成されている。
【０１６４】
入力データ受付部３１は、入出力ｉ／ｆ１０を介してデータの入力を受け付けると、原文書データを文書構造解析部３３へ、入力文書クラス名を文書構造解析部３３、変換規則管理部３４、補完指定管理部３５へ、出力文書クラス名を変換規則管理部３４、補完指定管理部３６、補完処理部３７内のオートマトン作成部３７ａ、補完指定検査部３９へ、それぞれ入力する。
【０１６５】
文書クラス管理部３２は、この文書構造作成装置３０で扱える文書クラスの定義情報を全て記憶・管理しており、各部の要求に応じて定義情報の供給を行う。なお、この図における文書クラス管理部３２への文書クラス定義情報の要求、及び文書クラス管理部３２からの文書クラス定義情報の供給の流れは、破線で示してある。
【０１６６】
文書構造解析部３３は、入力された入力文書クラス名を認識し、文書クラス管理部３２に該当する文書クラスの定義情報を要求する。定義情報の供給を受けた後、原文書データを定義情報と照合し、論理的な構造を調べ、原文書データの構成要素と入力文書クラスの構成要素タイプとの対応関係を文書構造変換部３５へ送る。
【０１６７】
変換規則管理部３４は、この文書構造作成装置３０で扱える複数の文書クラスの各々に対し、該文書クラスを入力文書クラスとして文書クラスの変換を行う際、該文書クラスの構成要素タイプを、出力文書クラスとされた文書クラスの構成要素タイプにどのように変換するかを定めた変換規則を全て記憶、管理している。そして、入力文書クラス名と出力文書クラス名とが入力されると、２つの文書クラス名に対応する変換規則を文書構造変換部３５に供給する。
【０１６８】
文書構造変換部３５は、文書構造解析部３３からは原文書データの構成要素と入力文書クラスの構成要素タイプとの対応関係を、変換規則管理部３４からは入力文書クラスから出力文書クラスへの変換規則を、それぞれ供給される。その後、供給された変換規則に基づいて原文書データの変換を行い、被補完文書データを作成する。被補完文書データは補完処理部３７へ送られる。
【０１６９】
補完指定管理部３６は、この文書構造作成装置３０で扱える文書クラスの構成要素に対し、入力文書クラス名と出力文書クラス名とに基づいて、どのような補完を行うかを指定する補完指定を記憶、管理している。そして、入力文書クラス名と出力文書クラス名とが入力されると、２つの文書クラス名に対応する補完指定を補完処理部３７に供給する。なお、ユーザはこの補完指定を必要に応じて作成、更新することができる。この場合ユーザは、入力データとして原文書データや入力文書クラス名、出力文書クラス名と併せて、補完指定も入力することになる。
【０１７０】
補完指定検査部３９は、補完指定管理部３６にて管理されている補完指定が、出力文書クラスの定義情報と照らし合わせて矛盾していないかどうか、検査を行う。すなわち、入力データ受付部３１から入力された出力文書クラス名に基づいて文書クラス管理部３２に出力文書クラスの定義情報を要求し、この情報と補完指定との整合性を取る。また、後述する補完処理部３７内のオートマトン作成部３７ａから補完オートマトンを読み出し、この補完オートマトンと出力文書クラスの定義情報との間に矛盾が生じていないかどうか判断する。ここでなされた補完指定及び補完オートマトンが正常であるか否かの判断の結果は、補完処理部３７に通知される。また、補完指定もしくは補完オートマトンと出力文書クラスの定義情報との間に矛盾が生じている場合には、補完処理が正常に行えないことを入出力ｉ／ｆ１０を介してユーザに通知する。
【０１７１】
補完処理部３７は、オートマトン作成部３７ａとオートマトン適用部３７ｂとから構成されており、オートマトンと呼ばれる状態遷移機械を利用して被補完文書の補完処理を行う。オートマトン作成部３７ａは、入力データ受付部３１から入力された出力文書クラス名に基づいて、文書クラス管理部３３に出力文書クラスの定義情報を要求し、この情報と補完指定管理部３６から供給された補完指定とを基に補完オートマトンを作成する。オートマトン適用部３７ｂは、補完指定検査部３９から補完指定及び補完オートマトンが正常であるとの通知を受けると、オートマトン作成部３７ａで作成した補完オートマトンを利用して被補完文書を補完し、出力文書クラスに従った文書構造を作成する。また、補完指定もしくは補完オートマトンが正常でないとの通知を受けた場合には、補完処理を行わずに構造化文書の作成を中止する。
【０１７２】
文書データ生成部３８は、補完処理部３７で作成された構造化文書を文書データにし、入出力ｉ／ｆ１０を介してユーザに出力する。
次に、この文書構造作成装置３０を用いて構造化文書の作成を行う手順を説明する。図３９は構造化文書の作成手順を示すフローチャートである。以下、図中のステップ番号に沿って説明を行う。
［Ｓ３０１］入力データ受付部３１は、入出力ｉ／ｆ１０を介して入力データを受け付ける。入力データとなるものは原文書データと、入力文書クラス名と、出力文書クラス名とである。また、ユーザの希望があれば補完指定も受け付ける。［Ｓ３０２］文書構造解析部３３において、原文書データを入力文書クラスの定義情報に基づいて解析し、文書構造を抽出する。文書解析にあたり必要となる定義情報は、入力データ受付部３１から入力された入力文書クラス名を基に文書クラス管理部３２に要求して得られたものである。
［Ｓ３０３］変換規則管理部３４は、入力文書クラス名及び出力文書クラス名より変換規則を決定し、文書構造変換部３５に供給する。文書構造変換部３５は、供給された変換規則に基づいて原文書の文書構造を変換し、被補完文書を作成する。ここで行われる変換処理は、第１の実施の形態で行った変換処理と同一のものである。
［Ｓ３０４］補完指定管理部３６は、補完指定を決定し、補完指定検査部３９と補完処理部３７とに供給する。補完指定には、ユーザからの指定が入力データに含まれていればその補完指定を、含まれていなければ入力文書クラス名及び出力文書クラス名より選択される補完指定を、利用する。
［Ｓ３０５］補完指定の供給を受けた補完指定検査部３９は、入力された出力文書クラス名に基づいて出力文書クラスの定義情報を文書クラス管理部３２に要求し、得られた定義情報から補完指定が正常であるか否か検査を行う。つまり、補完の指定されているノードのタイプが全て、出力文書クラスの定義情報中に含まれているか否かを判断する。
［Ｓ３０６］ステップＳ５における検査の結果は、補完指定検査部３９から補完処理部３７内のオートマトン作成部３７ａへ通知される。ここで補完指定が正常であると判断されれば、処理はステップＳ３０７へ進む。また、補完指定が正常でないと判断されれば、処理はステップＳ３１２へ進む。
［Ｓ３０７］補完処理部３７内のオートマトン作成部３７ａは、出力文書クラスの定義情報と供給された補完指定とを基に、補完オートマトンを作成する。ここで行われれる補完オートマトン作成処理は、第一の実施の形態で行った補完オートマトン作成処理と同一のものである。
［Ｓ３０８］補完指定検査部３９は、ステップＳ３０７においてオートマトン作成部３７ａの作成した補完オートマトンを読み出し、正常であるか否か検査を行う。つまり、補完するノードや部分木及びその位置が一意に決まらないような指定がされていないか否かを判断する。
［Ｓ３０９］ステップＳ３０８における検査の結果は、補完指定検査部３９から補完処理部３７内のオートマトン適用部３７ｂへ通知される。ここで補完オートマトンが正常であると判断されれば、処理はステップＳ３１０へ進む。また、補完オートマトンが正常でないと判断されれば、処理はステップＳ３１２へ進む。
［Ｓ３１０］補完処理部３９内のオートマトン適用部３７ｂは、補完オートマトンを実際に動作させ、被補完文書に補完を行って構造化文書を作成する。作成した構造化文書は文書データ生成部３８へ送る。ここで行われる構造化文書作成処理は、第一の実施の形態で行った構造化文書作成処理と同一のものである。
［Ｓ３１１］文書データ生成部３８は送られた構造化文書から文書データを生成し、入出力ｉ／ｆを介してユーザに出力する。
［Ｓ３１２］補完指定もしくは補完オートマトンが正常でない場合、構造化文書を正しく作成することは不可能である。入出力ｉ／ｆ１０を介してユーザに補完指定が正しくないことを通知して、この処理を終了する。
【０１７３】
ここで、補完指定管理部３６が誤った補完指定を決定した場合にどのようなことが起こるのか説明する。
図４０は、入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に対する誤った補完指定である。この補完指定６００は入力文書クラス名「技術メモ」及び出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」とセットで、補完指定管理部３６に記憶されており、両文書クラス名の入力に伴って補完処理部３７内のオートマトン作成部３７ａへ供給される。
【０１７４】
この補完指定６００によれば、文書クラス「技術メモ」の文書データを文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換した後、構造化文書を作成するための補完オートマトンを作成する際に、次のような補完処理を行う必要がある。すなわち、補完ノード「Ｓｅｃｔｉｏｎ」に対しては補完アクション「差し込み」を、補完ノード「Ｔｉｔｌｅ」に対しては補完アクション「追加可」を行わなければならない。
【０１７５】
ここで、図４０に示した補完指定６００に基づいて補完オートマトンを作成する。図４１は、図４０に示した補完指定６００に基づいて作成した、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のルートノードである「Ｒｅｐｏｒｔ  」ノードの下位構造に対する基礎オートマトンである。この基礎オートマトン６１０は、「Ｓｅｃｔｉｏｎ」ノードの差し込みと、「Ｔｉｔｌｅ」ノードの追加可とを行う。なお、この基礎オートマトン６１０は図３８に示す補完処理部３７内のオートマトン作成部３７ａにおいて作成される。  基礎オートマトン６１０は、初期状態Ｉｎｉｔと、Ｈｅａｄｅｒ  状態と、Ｓｅｃｔｉｏｎ開始状態と、Ｔｉｔｌｅ状態と、、Ｔｉｔｌｅ追加状態と、Ｐａｒａｇｒａｐｈ状態と、Ａｒｔｗｏｒｋ状態と、Ｓｅｃｔｉｏｎ終止状態とから構成されている。
【０１７６】
ここで、初期状態ＩｎｉｔからＨｅａｄｅｒ  状態への遷移は「Ｈｅａｄｅｒ  」ノードを読み込むことで行われ、Ｈｅａｄｅｒ  状態からＳｅｃｔｉｏｎ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。また、Ｓｅｃｔｉｏｎ開始状態からの、Ｔｉｔｌｅ状態への遷移は「Ｔｉｔｌｅ」ノードを読み込むことで行われ、Ｔｉｔｌｅ追加状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１７７】
Ｔｉｔｌｅ状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで、行われる。また、Ｔｉｔｌｅ追加状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで、行われる。
【０１７８】
Ｐａｒａｇｒａｐｈ状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで、行われ、Ｓｅｃｔｉｏｎ終止状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１７９】
また、Ａｒｔｗｏｒｋ状態からの、Ｐａｒａｇｒａｐｈ状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードを読み込むことで、Ａｒｔｗｏｒｋ状態への遷移は「Ａｒｔｗｏｒｋ」ノードを読み込むことで行われ、Ｓｅｃｔｉｏｎ終止状態への遷移はε遷移、すなわち何も読み込まずに行われる。
【０１８０】
さらに、Ｓｅｃｔｉｏｎ終止状態からＳｅｃｔｉｏｎ開始状態への遷移はε遷移、すなわち何も読み込まずに行われる。
Ｓｅｃｔｉｏｎ終止状態はまた、終了状態でもある。これは図７に示したように、「Ｒｅｐｏｒｔ  」ノードの持つ下位構造が「Ｈｅａｄｅｒ  」ノード及び、１つ以上繰り返し出現する「Ｓｅｃｔｉｏｎ」ノードのみであることによる。つまり、「Ｓｅｃｔｉｏｎ」ノードの出現が、「Ｒｅｐｏｒｔ  」ノードの構造制約を満たすことになる。
【０１８１】
次に、基礎オートマトンにε遷移の置き換え処理を施して、補完オートマトンを作成する。図４２は、図４１に示した基礎オートマトンにε遷移の置き換え処理を施して作成した補完オートマトンである。この補完オートマトン７１０は、「Ｓｅｃｔｉｏｎ」ノードの差し込みと、「Ｔｉｔｌｅ」ノードの追加可とを行う。なお、この補完オートマトン７１０は図３８に示す補完処理部３７内のオートマトン作成部３７ａにおいて作成される。
【０１８２】
補完オートマトン７１０は、初期状態Ｉｎｉｔと、Ｈｅａｄｅｒ  状態と、Ｓｅｃｔｉｏｎ開始状態と、Ｔｉｔｌｅ状態と、Ｔｉｔｌｅ追加状態と、Ｐａｒａｇｒａｐｈ状態と、Ａｒｔｗｏｒｋ状態と、Ｓｅｃｔｉｏｎ終止状態とから構成されている。
【０１８３】
ここで、基礎オートマトンではε遷移であったＨｅａｄｅｒ  状態からＳｅｃｔｉｏｎ開始状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードか、「Ａｒｔｗｏｒｋ」ノードか、「Ｔｉｔｌｅ」ノードか、何れかを読み込むことで、行われる。また、Ｓｅｃｔｉｏｎ開始状態からＴｉｔｌｅ追加状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードか、「Ａｒｔｗｏｒｋ」ノードか、何れかを読み込むことで、行われる。
【０１８４】
Ｐａｒａｇｒａｐｈ状態からＳｅｃｔｉｏｎ終止状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードか、「Ａｒｔｗｏｒｋ」ノードか、「Ｔｉｔｌｅ」ノードか、何れかを読み込むことで行われる。また、この遷移はω遷移、すなわち読み込むノードが存在しない時にも行われる。このω遷移の存在によって、Ｐａｒａｇｒａｐｈ状態において読み込むノードが無くてもＳｅｃｔｉｏｎ終止状態への遷移が可能となり、この補完オートマトンの終了状態へ到達できる。
【０１８５】
Ａｒｔｗｏｒｋ状態からＳｅｃｔｉｏｎ終止状態への遷移は、「Ｐａｒａｇｒａｐｈ」ノードか、「Ａｒｔｗｏｒｋ」ノードか、「Ｔｉｔｌｅ」ノードか、何れかを読み込むことで行われる。また、この遷移はω遷移、すなわち読み込むノードが存在しない時にも行われる。このω遷移の存在によって、Ａｒｔｗｏｒｋ状態において読み込むノードが無くてもＳｅｃｔｉｏｎ終止状態への遷移が可能となり、この補完オートマトンの終了状態へ到達できる。
【０１８６】
更に、Ｓｅｃｔｉｏｎ終止状態からＳｅｃｔｉｏｎ開始状態への遷移は「Ｐａｒａｇｒａｐｈ」ノードか、「Ａｒｔｗｏｒｋ」ノードか、「Ｔｉｔｌｅ」ノードか、何れかを読み込むことで行われる。
【０１８７】
だが、この補完オートマトン７１０では、Ａｒｔｗｏｒｋ状態とＰａｒａｇｒａｐｈ状態とが、同じラベルによる別の状態への遷移を持つ。すなわち、Ａｒｔｗｏｒｋ状態にある時「Ｐａｒａｇｒａｐｈ」ノードを読み込むと、遷移先としてＰａｒａｇｒａｐｈ状態とＳｅｃｔｉｏｎ終止状態とが存在してしまう。また、やはりＡｒｔｗｏｒｋ状態にある時に「Ａｒｔｗｏｒｋ」ノードを読み込むと、遷移先としてＡｒｔｗｏｒｋ状態とＳｅｃｔｉｏｎ終止状態とが存在してしまう。Ｐａｒａｇｒａｐｈ状態に関しても、同様の現象が起きている。
【０１８８】
よって、補完オートマトン７１０は実用に適さず、ユーザには補完指定検査部３９によってその旨通知が行われて、構造化文書の作成は中止される。
このように、第２の実施の形態では補完検査部を設けて、補完指定及び補完オートマトンが出力文書クラスの定義情報と適合しているかどうか調べられる。これによって、時間のかかる補完処理に入る前に、補完指定及び補完オートマトンが正常な補完処理を行えるかどうか判断でき、誤った補完指定を実行してしまうことを防ぐことができる。
【０１８９】
【発明の効果】
以上説明したように本発明では、所定の文書クラスへの構造化を希望する原文書の構造を、希望する文書クラスの構造制約にほぼ従った構造に変換した後に、不足している構成要素を原文書の定義情報と希望する文書クラスの定義情報とに基づいて自動的に補完することが可能である。また、ユーザの希望に基づいて補完の仕方を決定することができるので、ユーザの希望に沿った構造化文書を作成することができる。
【図面の簡単な説明】
【図１】本発明の文書構造作成装置の原理構成図である。
【図２】文書構造作成装置の第１の実施の形態の構成を示すブロック図である。
【図３】構造化文書の作成手順を示すフローチャートである。
【図４】「技術メモ」という名称を持つ文書クラスの定義情報のうち、ノードのタイプ定義を示したものである。
【図５】「技術メモ」という名称を持つ文書クラスの定義情報のうち、定義されたノードの接続関係を規定する構造制約である。
【図６】「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」という名称を持つ文書クラスの定義情報のうち、ノードのタイプ定義を示したものである。
【図７】「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」という名称を持つ文書クラスの定義情報のうち、定義されたノードの接続関係を規定する構造制約である。
【図８】「技術メモ」の文書データを定義情報に基づいて解析し、文書構造を抽出した結果の例である。
【図９】入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の変換規則を示す。
【図１０】文書構造変換の詳しい手順を示したフローチャートである。
【図１１】「技術メモ」の文書データを、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の文書データに変換した被補完文書の構造である。
【図１２】入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の補完指定である。
【図１３】出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」のルートノードである「Ｒｅｐｏｒｔ  」ノードの、下位構造に対する補完オートマトンである。
【図１４】図１３に示した、「Ｒｅｐｏｒｔ  」ノードの下位構造に対する補完オートマトンの持つデータ構造である。
【図１５】補完オートマトン作成の大まかな手順を示したフローチャートである。
【図１６】ノードの下位構造に対する基礎オートマトン作成の手順を示したフローチャートである。
【図１７】構造制約子「ＲＥＰ」に対する基礎オートマトン作成の手順を示したフローチャートである。
【図１８】構造制約子「ＳＥＱ」に対する基礎オートマトン作成の手順を示したフローチャートである。
【図１９】構造制約子「ＣＨＯ」に対する基礎オートマトン作成の手順を示したフローチャートである。
【図２０】補完アクションのない基礎オートマトン作成の手順を示したフローチャートである。
【図２１】補完アクション「追加」を行う基礎オートマトン作成の手順を示したフローチャートである。
【図２２】補完アクション「追加可」を行う基礎オートマトン作成の手順を示したフローチャートである。
【図２３】補完アクション「差し込み」を行う基礎オートマトン作成の手順を示したフローチャートである。
【図２４】補完アクション「差し込み可」を行う基礎オートマトン作成の手順を示したフローチャートである。
【図２５】出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ｒｅｐｏｒｔ  」ノードの下位構造に対する基礎オートマトンである。
【図２６】出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ａｒｔｗｏｒｋ」ノードの下位構造に対する基礎オートマトンである。
【図２７】出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」の「Ｓｅｃｔｉｏｎ」ノードの下位構造に対する基礎オートマトンを示す。
【図２８】ε遷移の置き換え処理の手順を示したフローチャートである。
【図２９】ｎｏｎ−εリストによるεリストの要素が持つε遷移の置き換えの手順を示すフローチャートである。
【図３０】ｎｏｎ−εリストによる  ｃｕｒｒｅｎｔ状態が持つε遷移の置き換えの手順を示すフローチャートである。
【図３１】図２５にて示した基礎オートマトンにε遷移の置き換え処理を施して作成した補完オートマトンである。
【図３２】図２６にて示した基礎オートマトンにε遷移の置き換え処理を施して作成した補完オートマトンである。
【図３３】図２７にて示した基礎オートマトンにε遷移の置き換え処理を施して作成した補完オートマトンである。
【図３４】補完処理の大まかな手順を示したフローチャートである。
【図３５】ｃｕｒｒｅｎｔ状態固有の処理の手順を示したフローチャートである。
【図３６】図１１にて示した被補完文書構造に、図３１、図３２、図３３にて示した補完オートマトンを適用して作成した文書構造である。
【図３７】図８に示した文書クラス「技術メモ」の文書データの文書構造解析結果を文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に適合するよう変換した適合文書構造である。
【図３８】文書構造作成装置の第２の実施の形態の構成を示すブロック図である。
【図３９】第２の実施の形態の文書構造作成装置を用いて構造化文書を作成する手順を示すフローチャートである。
【図４０】入力文書クラス名「技術メモ」、出力文書クラス名「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に対する誤った補完指定である。
【図４１】図４０にて示した補完指定に基づいて作成した、文書クラス「Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  」に対する基礎オートマトンである。
【図４２】図４１に示した基礎オートマトンにε遷移の置き換え処理を施して作成した補完オートマトンである。
【符号の説明】
１  補完指定記憶手段
２  補完手段
３  対応規則記憶手段
４  文書構造変換手段
【図１】
0003605941.tif 000002
【図２】
0003605941.tif 000003
【図３】
0003605941.tif 000004
【図４】
0003605941.tif 000005
【図５】
0003605941.tif 000006
【図６】
0003605941.tif 000007
【図７】
0003605941.tif 000008
【図８】
0003605941.tif 000009
【図９】
0003605941.tif 000010
【図１０】
0003605941.tif 000011
【図１１】
0003605941.tif 000012
【図１２】
0003605941.tif 000013
【図１３】
0003605941.tif 000014
【図１４】
0003605941.tif 000015
【図１５】
0003605941.tif 000016
【図１６】
0003605941.tif 000017
【図１７】
0003605941.tif 000018
【図１８】
0003605941.tif 000019
【図１９】
0003605941.tif 000020
【図２０】
0003605941.tif 000021
【図２１】
0003605941.tif 000022
【図２２】
0003605941.tif 000023
【図２３】
0003605941.tif 000024
【図２４】
0003605941.tif 000025
【図２５】
0003605941.tif 000026
【図２６】
0003605941.tif 000027
【図２７】
0003605941.tif 000028
【図２８】
0003605941.tif 000029
【図２９】
0003605941.tif 000030
【図３０】
0003605941.tif 000031
【図３１】
0003605941.tif 000032
【図３２】
0003605941.tif 000033
【図３３】
0003605941.tif 000034
【図３４】
0003605941.tif 000035
【図３５】
0003605941.tif 000036
【図３６】
0003605941.tif 000037
【図３７】
0003605941.tif 000038
【図３８】
0003605941.tif 000039
【図３９】
0003605941.tif 000040
【図４０】
0003605941.tif 000041
【図４１】
0003605941.tif 000042
【図４２】
0003605941.tif 000043