(57)【要約】【課題】ユーザが文書と当該文書に関係する表との関係性を容易に検証することができる情報処理装置、制御方法、及びプログラムを提供する。【解決手段】文書から表と文章を抽出し、表は有向グラフ化し、文章は形態素解析及び構文解析を行い、前記有向グラフ化した表と前記解析文章をページ単位で管理する。前記有向グラフ化した表から行列名及び数値ないし文字列の組み合わせを抽出して前記解析文章に含まれる文章を検索する。さらに、前記解析文章の解析結果の一部を前記有向グラフ化に含まれるかどうか検索する。相互の検索結果を検証し、出力装置に表示する際に不整合があった部分を強調して表示する。【選択図】図１５
2020201965.tif 000002
【特許請求の範囲】
【請求項１】
文書の分析処理を行う情報処理装置であって、
分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出手段と、
前記抽出手段で得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換手段と、
前記抽出手段で抽出した文章を解析する解析手段と、
前記解析手段によって前記文章を解析することによって得られた表における入力情報、及び前記変換手段によって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
文書の分析処理を行う情報処理装置の制御方法であって、
前記情報処理装置は、
分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出ステップと、
前記抽出ステップで得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換ステップと、
前記抽出ステップで抽出した文章を解析する解析ステップと、
前記解析ステップによって前記文章を解析することによって得られた表における入力情報、及び前記変換ステップによって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定ステップと、
を実行することを特徴とする情報処理装置の制御方法。
【請求項３】
文書の分析処理を行う情報処理装置で読み取り実行可能なプログラムであって、
前記情報処理装置を、
分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出手段と、
前記抽出手段で得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換手段と、
前記抽出手段で抽出した文章を解析する解析手段と、
前記解析手段によって前記文章を解析することによって得られた表における入力情報、及び前記変換手段によって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定手段と、
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書の分析処理において文書から情報を抽出するための分析技術及び異なる書式で記述された情報の比較技術に関するものであり、特に電子化された文書データから表データに関する説明文章を抽出し、文章と表間の整合性を検証する技術及びその管理技術に関する。
【背景技術】
【０００２】
様々な組織で日々膨大な量の文書が作成されており、これらの文書の内容が正しいかどうかの検証作業について、多くの人的コストをかけて実施しているのが現状である。
【０００３】
例えば、実験データや統計処理されたデータを表として記載し、その説明文を記述する場合、文章中に記述された数値や表の項目名等に食い違いがないかどうか、あるいは文書中のどこに説明文が記述されているのか、あるいは記述の見落としがないか等、目視で検査を行っている現状がある。
【０００４】
特に申請文書のような文書に関しては、高度で且つ精密な検証作業が求められており、このような検証作業を効率的に実施したり、人的コストを削減したりすることは重要な課題である。
【０００５】
一方で、ウェブにある大量の文書から必要な知識を獲得しようとする技術もある。例えば、非特許文献１では、ウェブ上にあるHTML形式の表を解析して知識を獲得し、ユーザが自然文で質問できる質問応答システムに応用しようとする研究報告について記載されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】P. Pasupat, P. Liang: “Compositional Semantic Parsing on Semi-Structured Tables”, Association for Computational Linguistics, 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、この研究報告では簡単な表を用いて説明しているが、実際には、例えば、大きな表が複数に分割されたり、あるいは形式の指定がないため作成者によって自由な形式で記述されたり等、表として記載する項目が複雑であればあるほど、その解析が困難になる。
【０００８】
このように、表と文書中の整合性を検証し管理することは重要な課題であり、複雑な表構造を解析して関連する文章群を特定して、利用者がより効率的に文書の検証作業を実施できるようにする必要がある。
【０００９】
本発明は、上記の課題を解決するためになされたものであり、ユーザが文書と当該文書に関係する表との関係性を容易に検証することが可能な情報処理装置、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための第１の発明は、文書の分析処理を行う情報処理装置であって、分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出手段と、前記抽出手段で得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換手段と、前記抽出手段で抽出した文章を解析する解析手段と、前記解析手段によって前記文章を解析することによって得られた表における入力情報、及び前記変換手段によって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定手段と、を備えたことを特徴とする情報処理装置であり。
【００１１】
上記目的を達成するための第２の発明は、文書の分析処理を行う情報処理装置の制御方法であって、前記情報処理装置は、分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出ステップと、前記抽出ステップで得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換ステップと、前記抽出ステップで抽出した文章を解析する解析ステップと、前記解析ステップによって前記文章を解析することによって得られた表における入力情報、及び前記変換ステップによって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定ステップと、を実行することを特徴とする情報処理装置の制御方法である。
【００１２】
上記目的を達成するための第３の発明は、文書の分析処理を行う情報処理装置で読み取り実行可能なプログラムであって、前記情報処理装置を、分析対象となる文書から表と当該表に関する記載がされた文章を抽出する抽出手段と、前記抽出手段で得られた表の項目及び当該項目に対する入力情報を用いて当該表を有向グラフへ変換する変換手段と、前記抽出手段で抽出した文章を解析する解析手段と、前記解析手段によって前記文章を解析することによって得られた表における入力情報、及び前記変換手段によって変換られた有効グラフにおける当該項目に対する入力情報に基づいて、前記表の項目に対応する文章の記載範囲を特定する特定手段と、して機能させることを特徴とするプログラムである。
【発明の効果】
【００１３】
本発明によれば、ユーザが文書と当該文書に関係する表との関係性を容易に検証することができる、といった効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態における文書分析装置の構成例を示す図である。
【図２】本発明の実施形態における文書分析装置のハードウェア構成を示す図である。
【図３】本発明の実施形態における文書分析処理のフローチャートである。
【図４】本発明の実施形態における表・文章抽出処理のフローチャートである。
【図５】本発明の実施形態における段落解析処理のフローチャートである。
【図６】本発明の実施形態における表解析処理のフローチャートである。
【図７】本発明の実施形態における行解析処理のフローチャートである。
【図８】本発明の実施形態におけるセル解析処理のフローチャートである。
【図９】本発明の実施形態における文の例である。
【図１０】本発明の実施形態における形態素解析の実施例である。
【図１１】本発明の実施形態における構文解析の実施例である。
【図１２】本発明の実施形態における数量表現抽出の実施例である。
【図１３】本発明の実施形態における数値情報抽出処理のフローチャートである。
【図１４】本発明の実施形態における名詞句の探索登録処理のフローチャートである。
【図１５】本発明の実施形態におけるページ管理の実施例である。
【図１６】本発明の実施形態における表の一例である。
【図１７】本発明の実施形態における表の解析結果の実施例である。
【図１８】本発明の実施形態における表のグラフ化の実施例である。
【図１９】本発明の実施形態におけるグラフ化処理のフローチャートである。
【図２０】本発明の実施形態における表検証処理のフローチャートである。
【図２１】本発明の実施形態における文検証処理のフローチャートである。
【図２２】本発明の実施形態における分析結果の表示例（解析結果）である。
【図２３】本発明の実施形態における分析結果の表示例（セル選択）である。
【図２４】本発明の実施形態における分析結果の表示例（文章選択）である。
【図２５】本発明の実施形態における分析結果の表示例（不整合）である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施の形態の一例について説明する。
【００１６】
図１は、本発明の実施形態における文書分析装置（情報処理装置）の構成を示す図である。
【００１７】
文書分析装置１００は、解析部１０１と、解析データ１０２と、照合部１０３と、照合データ１０４と、表示部１０５と、を備える。なお、解析データ１０２及び照合データ１０４は後述する外部メモリ２１１等の記憶装置に記憶されている。
【００１８】
文書分析装置１００は、テキスト文書１０６が解析部１０１に入力されて解析がなされると表データ及び文章データが抽出され解析データ１０２に記憶される。
【００１９】
そして、照合部１０３は、解析部１０１における解析結果を受けて、解析データ１０２から表データ及び文章データを取り出して照合処理を実施し、照合データ１０４に照合結果を記録する。
【００２０】
表示部１０５は、照合データ１０４から照合結果を取り出し、解析データ１０２に記録された解析結果と合わせて利用者に照合結果を表示する。これら一連の文書分析手法については、詳しく後述する。
【００２１】
次に、図１の文書分析装置１００のハードウェア構成について、図２を用いて説明する。
【００２２】
図中、ＣＰＵ２０１は、システムバス２０４に接続される後述の各デバイスやコントローラを統括的に制御する。
【００２３】
また、ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）や、文書分析装置１００に後述する各種の処理を実行させるために必要な各種プログラムやデータ等が記憶されている。ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２４】
ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０２にロードして、プログラムを実行することで後述する各種処理を実現するものである。
【００２５】
また、入力コントローラ（入力Ｃ）２０５は、入力装置２０９からの入力を制御する。入力装置２０９は、例えばメカニカルキーボードやソフトウェアキーボード、タッチパネル等で構成される。
【００２６】
ビデオコントローラ（ＶＣ）２０６は、表示装置２１０への表示を制御する。表示装置２１０は、例えば液晶ディスプレイ等で構成される。
【００２７】
メモリコントローラ（ＭＣ）２０７は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）やソリッドステートディスク（ＳＳＤ）或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ２１１へのアクセスを制御する。
【００２８】
通信Ｉ／Ｆコントローラ（通信Ｉ／ＦＣ）２０８は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いたインターネット通信等が可能である。
【００２９】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０２内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、表示装置２１０上での表示を可能としている。
【００３０】
以上が、文書分析装置１００のハードウェア構成の説明であるが、後述する各種の処理を実行可能であれば、必ずしも図２に記載のハードウェア構成を有していなくとも構わないことは言うまでもない。
【００３１】
次に、文書分析装置１００における文書分析処理について、図３から図２１を用いて、詳しく説明する。
【００３２】
図３は、文書分析処理のフローチャートを示す図である。文書分析処理では、何らかの論理的構造を持つ文書ファイルを分析対象としており、例えばＯｐｅｎＸＭＬで記述された文書である。
【００３３】
まず、ステップＳ３０１では、ページ番号を初期化する。ページ番号は後述するページ情報の管理属性のひとつとして利用する。
【００３４】
続くステップＳ３０２で表・文章抽出処理を行う。処理の詳細な流れについては、図４のフローチャートに示す。
【００３５】
図４に表・文章抽出処理のフローチャートを示す。表・文章抽出処理では、文書ファイルから表部分と文章部分を取り出す処理となる。
【００３６】
ステップＳ４０１において、分析対象の文書から本文を構成する要素を保持している本文要素を指定する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｂｏｄｙ＞」タグを指定する。
【００３７】
本文要素は複数の子要素から構成されているので、ステップＳ４０２からステップＳ４０９において、本文要素に含まれるすべての子要素を検査して表と文章を取り出す。
【００３８】
ステップＳ４０３において、当該子要素が段落属性を持つかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｐ＞」タグであるかを検査する。
【００３９】
段落属性を持つ場合（ステップＳ４０３において「はい」のとき）、ステップＳ４０４に進み、段落解析を実施する。段落解析については図５に示すフローチャートを用いて後述する。
【００４０】
段落属性を持たない場合（ステップＳ４０３において「いいえ」のとき）、ステップＳ４０５に進む。
【００４１】
ステップＳ４０５において、当該子要素が表属性を持つかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｔｂｌ＞」タグであるかを検査する。
【００４２】
表属性を持つ場合（ステップＳ４０５において「はい」のとき）、ステップＳ４０６に進み、表解析を実施する。表解析については図６に示すフローチャートを用いて後述する。
【００４３】
表属性を持たない場合（ステップＳ４０５において「いいえ」のとき）、ステップＳ４０９に進み、次の子要素について抽出処理を実施する。すべての子要素を検査すると、表・文章抽出処理を終了する。
【００４４】
次に、前述した段落解析について説明する。図５は段落解析処理のフローチャートである。段落属性を持つ子要素についても、本文要素と同様に、複数の子要素から構成されているので、ステップＳ５０１からステップＳ５０９において、それぞれの子要素を検査して必要な情報を得ている。
【００４５】
ステップＳ５０２において、当該子要素がページ区切り属性を持つかを検査する。ページ区切り属性を持つ場合（ステップＳ５０２において「はい」のとき）、ステップＳ５０３に進み、図３における前記ステップＳ３０１で初期化したページ番号をひとつ加算する演算を実施する。
【００４６】
ページ区切り属性を持たない場合（ステップＳ５０２において「いいえ」のとき）、ステップＳ５０４に進む。
【００４７】
ステップＳ５０４では、当該子要素が文章属性を持つかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｔ＞」タグであるかを検査する。
【００４８】
文章属性を持つ場合（ステップＳ５０４において「はい」のとき）、ステップＳ５０５に進み、当該子要素が持つ文章に対して形態素解析を実施し、続くステップＳ５０６で構文解析を実施する。
【００４９】
形態素解析と構文解析の実施例について、図９〜図１１を用いて説明する。
【００５０】
図９の文９０１「項目Ａではパターン２の場合２３件（６７．６％）になったが、項目Ｂ−２では１０件に留まった。」に対する形態素解析処理の実施例を図１０に示す。
【００５１】
なお、本発明においては一般的な形態素解析処理で用いられる品詞に加えて、「数」＋「助数詞」の形態素の組み合わせに対して、「数量表現」という名称の品詞を割り当てている。
【００５２】
次に、図１１に文９０１に対する構文解析処理の実施例を示す。構文解析は文を文節単位に切り分けたとき、どの文節がどの文節に係るかを示している。
【００５３】
図５に戻って、ステップＳ５０７における数値情報抽出処理について説明する。数値情報抽出処理とは、文から数量表現を含むフレーズを抽出する処理であり、数量表現に関連する名詞句と合わせて抽出する処理である。図１３に数値情報抽出処理のフローチャートを示す。
【００５４】
図１３のステップＳ１３０１において、キューを初期化する。続くステップＳ１３０２で、数量表現を含む文節を前記キューに追加する。即ち、図１０の形態素解析結果を参照して図１１から数量表現を含む文節を前記キューに追加する。図１０及び図１１の実施例では、文節１１０４及び文節１１０７が該当する。
【００５５】
続くステップＳ１３０３からステップＳ１３１２にかけて、前記キューにあるデータを処理する。
【００５６】
ステップＳ１３０４で前記キューから文節データを取り出し、続くステップＳ１３０５で、ステップＳ１３０４で取り出した文節に係る文節があるかを調べる。
【００５７】
係る文節がある場合（ステップＳ１３０５で「はい」の場合）、ステップＳ１３０６に進み、名詞句の探索登録処理を実施する（詳細は、図１４で説明）。係る文節がない場合（ステップＳ１３０５で「いいえ」の場合）、ステップＳ１３０８に進む。
【００５８】
図１４に名詞句の探索登録処理のフローチャートを示す。名詞句の探索登録処理では、図１３のステップＳ１３０５で判定した当該文節を、葉の方に向かって探索しながら（図１１において矢印を逆に辿る）各文節に含まれる名詞句を登録する。
【００５９】
まず、ステップＳ１４０１において登録モードを通常モードに初期化する。登録モードは名詞句を登録する際の属性を示すものである。登録モードについては後述する。
【００６０】
続くステップＳ１４０２において、探索中の文節が連用節かどうか調べる。連用節である場合（ステップＳ１４０２で「はい」の場合）、ステップＳ１４０３に進み、登録モードを参照モードに変更する。連用節ではない場合（ステップＳ１４０２で「いいえ」の場合）、ステップＳ１４０３をスキップする。
【００６１】
続いてステップＳ１４０４に進み、当該文節内に名詞句があるかどうかを検査する。名詞句がある場合（ステップＳ１４０４で「はい」の場合）、ステップＳ１４０５に進み、検出した名詞句を登録する。名詞句がない場合（ステップＳ１４０４で「いいえ」の場合）、ステップＳ１４０５をスキップする。
【００６２】
続いてステップＳ１４０６に進み、当該文節が末端であるか、即ち係り元が存在するかしないか、を検査する。係り元がない場合（ステップＳ１４０６で「はい」の場合）、名詞句の探索登録処理を終了する。係り元がある場合（ステップＳ１４０６で「いいえ」の場合）、ステップＳ１４０７に進み、当該文節に係る文節へ遷移し、ステップＳ１４０２に戻って探索的に登録処理を継続する。
【００６３】
図１３に戻って、ステップＳ１３０７に進み、前記名詞句の探索登録処理で何らかの名詞句が登録できたかどうかを確認する。名詞句が登録できた場合（ステップＳ１３０７で「はい」の場合）、キューに文節データが存在すればステップＳ１３０４に戻り、次の文節データの処理に移る。キューに文節データがない場合は数値情報抽出処理を終了する。
【００６４】
また、ステップＳ１３０７において「いいえ」の場合、即ちステップＳ１３０６の名詞句の探索登録で何も名詞句が登録されなかった場合、ステップＳ１３０８に進む。
【００６５】
ステップＳ１３０８では兄弟節があるかどうかを検査する。兄弟節とは当該文節が係る先の文節に係る別の文節のことである。
【００６６】
例えば図１１において、文節１１０４は係り先が文節１１０５であるので、その兄弟節は文節１１０３と文節１１０１となる。
【００６７】
ステップＳ１３０５で当該文節に直接係る文節がない場合（ステップＳ１３０５で「いいえ」の場合）や当該文節に直接係る文節があるものの有効な名詞句が存在しなかった場合（ステップＳ１３０７で「いいえ」の場合）、兄弟節を名詞句の探索対象とする。
【００６８】
兄弟節がない場合（ステップＳ１３０８で「いいえ」の場合）、キューに文節データが存在すればステップＳ１３０４に戻り、次の文節データの処理に移る。
【００６９】
兄弟節がある場合（ステップＳ１３０８で「はい」の場合）、ステップＳ１３０９に進み、ステップＳ１３０６と同様に名詞句の探索処理を実施する。
【００７０】
図１１を例に名詞句の探索処理を説明する。まず、数量表現を含む文節をキューに登録する。文節１１０４と文節１１０７が該当する。
【００７１】
文節１１０４をキューから取り出し、係り元があるかどうかを判定するが、文節１１０４は末端ノードなので、兄弟節を探索対象とする。
【００７２】
文節１１０４の兄弟節は、文節１１０３と文節１１０１となり、これらから名詞句を抽出すると、それぞれ「場合」「パターン２」「項目Ａ」となる。これらの名詞句は通常モードとして登録される。
【００７３】
次に、文節１１０７をキューから取り出し、係り元を検査するが、これも末端のノードであるため、兄弟節が探索対象となる。
【００７４】
文節１１０７の兄弟節は、文節１１０６、文節１１０５である。文節１１０６からは名詞句「項目Ｂ−２」が抽出される。一方、文節１１０５は逆接の接続詞を持つため連用節と判定され、ここから抽出される名詞句「場合」「パターン２」「項目Ａ」は参照モードとして登録される。
【００７５】
以上の抽出例を図１２に示す。文節１１０４は数量表現を２種類持つため、それぞれに抽出した名詞句を登録している。登録された名詞句は組み合わせを持ち、第１項が通常モードで登録されたもの、第２項が参照モードで登録されたものとなる。
【００７６】
例えば図１２において、数量表現１２０１に対して、通常モードによる登録が１２０２、参照モードによる登録が１２０３である。
【００７７】
なお、１２０３は空であるので、参照モードでの登録がなかったことを示している。これら２種類の組み合わせによる表データとのマッチング処理については後述する。
【００７８】
図５に戻って、ステップＳ５０８において、文章登録処理を実施する。文章登録処理は、前記段落解析で抽出した文章と、前記数値表現抽出で抽出した数値表現をページ情報と関連させて管理する処理である。
【００７９】
文９０１がページ番号２０に記述されていた例として、図１５に文章登録の一例を示す。ノード１５０２がひとつのページを表し、これにラベル付き有向グラフとして表現している。
【００８０】
ラベル「page」はページ番号を示し、要素１５０１にページ番号「２０」を持つ。同様にラベル「paragraph」は段落リストを示す。
【００８１】
段落ノードからのラベル「sentences」は文章リストを示し、要素１５０３は文９０１を表し、要素１５０５は文９０１の次の文章を示すラベル「next」でリンクされている。
【００８２】
文９０１からラベル「ＩＤ」でリンクされた要素１５１０は文ＩＤを表す。文ＩＤは任意に割り振られたＩＤ番号であり、一意に文を識別するために用いる。文ＩＤの一例としては、固定長の昇順の数字で表現されるものである。
【００８３】
前記数値表現抽出で抽出した数値表現は属性ラベル「ｎｕｍｉｎｆｏ」として要素１５０４に登録される。
【００８４】
文章登録されたデータは、論理的には図１５に示すような構造を持つことが望まれるため、実際のデータ形式はＸＭＬでもＪＳＯＮでも、構造化された形式であれば構わない。
【００８５】
図５に戻って、ステップＳ５０８で文章登録処理が完了すると、ステップＳ５０９に進み、すべての子要素が処理されていなければステップＳ５０２に進んで同様に処理を続ける。
【００８６】
すべての子要素の処理が終了すれば、ステップＳ５１０に進む。ステップＳ５１０では段落属性管理を実施する。段落属性管理は範囲特定処理等の管理に用いられるものであるので、後述する。
【００８７】
図４に戻って、ステップＳ４０６における表解析について説明する。図６に表解析のフローチャートを示す。
【００８８】
ステップＳ６０１において、行番号の初期化を行う。続くステップＳ６０２からステップＳ６０６において、すべての行に含まれる子要素の解析処理を実施する。
【００８９】
ステップＳ６０３に進み、取得した子要素が行を表す要素かどうかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｔｒ＞」タグであるかを検査する。
【００９０】
行要素でない場合（ステップＳ６０３で「いいえ」の場合）ステップＳ６０５に進む。行要素である場合（ステップＳ６０３で「はい」の場合）、ステップＳ６０４に進み、行解析処理を実施する。
【００９１】
図７に行解析処理のフローチャートを示す。行解析処理は、行要素に含まれるセル要素の解析処理を実施する。
【００９２】
まず、ステップＳ７０１において列番号を初期化する。続くステップＳ７０２からステップＳ７０６において、行に含まれるすべての子要素の解析処理を実施する。
【００９３】
ステップＳ７０３に進み、抽出した子要素がセル要素かどうかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｔｃ＞」タグであるかを検査する。
【００９４】
セル要素でない場合（ステップＳ７０３で「いいえ」の場合）、ステップＳ７０５に進む。セル要素である場合（ステップＳ７０３で「はい」の場合）、ステップＳ７０４に進み、セル解析処理を実施する。
【００９５】
図８にセル解析処理のフローチャートを示す。セル解析処理は、セル要素に含まれる子要素の解析処理を実施する。
【００９６】
まず、ステップＳ８０１において文字列を初期化する。この文字列は表のセルに含まれる文字列を登録するためのものである。
【００９７】
続くステップＳ８０２からステップＳ８１３にかけて、すべての子要素について解析処理を実施する。
【００９８】
ステップＳ８０３に進み、抽出した子要素が文章要素であるかどうかを検査する。具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｔ＞」タグであるかを検査する。
【００９９】
文章要素でない場合（ステップＳ８０３で「いいえ」の場合）、ステップＳ８０７に進む。文章要素である場合（ステップＳ８０３で「はい」の場合）、ステップＳ８０４に進む。
【０１００】
ステップＳ８０４では、当該セルにおいて字下げがなされているかどうかを検査する。字下げの判定基準としては、字下げタグを持つ或いは字下げ要素を持つ（具体的には、例えばＯｐｅｎＸＭＬの場合、「＜ｗ：ｉｎｄ＞」タグを持つ）或いは文字列の先頭にタブ文字や空白文字等が挿入されている等で判断する。
【０１０１】
字下げされている場合（ステップＳ８０４で「はい」の場合）、ステップＳ８０５に進み、字下げ属性を当該セル情報に設定する。字下げされていない場合（ステップＳ８０４で「いいえ」の場合）、ステップＳ８０５をスキップしてステップＳ８０６に進む。
【０１０２】
ステップＳ８０６ではステップＳ８０１で初期化した文字列の登録先に当該セルが持つ文字列を追加する。文字列は追加されるため、文字列の登録先に何らかのデータが存在するのであれば、新しい文字列を既存文字列に追記する方式となる。
【０１０３】
続いてステップＳ８０７に進み、属性情報を持つ子要素かどうかを検査する。属性情報からは当該セルの連結情報を得る。連結情報とは、複数のセルを行方向や列方向に連結して大きなセルにする情報のことを示す。
【０１０４】
ステップＳ８０７において当該セルが属性情報を持たない場合（ステップＳ８０７で「いいえ」の場合）、ステップＳ８１３に進み、次の子要素の処理に移る。当該セルが属性情報を持つ場合（ステップＳ８０７で「はい」の場合）、ステップＳ８０８に進み、行連結の属性情報かどうかを検査する。
【０１０５】
行連結の開始属性である場合（ステップＳ８０８で「はい」の場合）、ステップＳ８１０に進み、行連結の開始属性を当該セルに登録する。行連結の開始属性でない場合（ステップＳ８０８で「いいえ」の場合）、行連結中である継続セルであるため、当該セルに継続セル属性を登録する。
【０１０６】
続いてステップＳ８１１に進み、列方向の連結属性であるかどうかを検査する。列連結属性である場合（ステップＳ８１１で「はい」の場合）、ステップＳ８１２に進み、当該セルに列連結数を登録する。列連結属性でない場合（ステップＳ８１１で「いいえ」の場合）、ステップＳ８１２をスキップする。
【０１０７】
続いて、ステップＳ８１３に進み、すべての子要素の処理が終わっていなければ、ステップＳ８０３に戻って同様にセル解析処理を継続する。
【０１０８】
すべての子要素の処理が終了していれば、ステップＳ８１４に進み、ステップＳ８０６で追記した文字列全体を当該セルの文字列として登録する。
【０１０９】
続くステップＳ８１５では、図６で算出している行番号と図７で算出している列番号を当該セルに登録し、セル解析処理を終了する。
【０１１０】
図７に戻って、ステップＳ７０５において、次の行列番号登録のための列番号を算出する。このときステップＳ７０４で列連結属性によって列連結数が当該セルに登録されている場合は、その数値を加算し、そうでない場合は１を加算することによって列番号を算出する。
【０１１１】
ステップＳ７０６に進み、すべての列の処理を完了していれば、行解析処理を終了する。未処理の列データがある場合はステップＳ７０３に進み、同様の解析処理を継続する。
【０１１２】
図６に戻って、ステップＳ６０５に進み、次の行列番号登録のための行番号を算出する。続いてステップＳ６０６に進み、すべての行処理を完了していればステップＳ６０７に進み、そうでなければステップＳ６０３に戻って同様に解析処理を継続する。
【０１１３】
ステップＳ６０７において、行連結の処理を実施する。行連結の処理は、前述した図８のステップＳ８０９及びステップＳ８１０で登録した行連結の属性を用いて算出する。算出した行連結数を当該セルの行連結数に登録する。
【０１１４】
続くステップＳ６０８において、解析を完了した表に対して表ＩＤ登録処理を実施する。表ＩＤとは任意に割り振られたＩＤ番号であり、一意に表を識別するために用いる。表ＩＤの一例としては、固定長の昇順の数字で表現されるものである。ステップＳ６０８の表ＩＤ登録処理を実施して表解析処理を終了する。
【０１１５】
図６における表解析処理の一例を、図１６及び図１７に示す。図１６は表の一例であり、この表に対して図６の表解析処理を実施して得られる解析データを図１７に示す。
【０１１６】
図１７の各要素は、「表記」「列番号」「行番号」「列連結数」「行連結数」の組み合わせであり、前記組み合わせをリスト構造に格納することで表全体を表現することができる。
【０１１７】
例えば、図１６においてセル１６０１は、図１７の組み合わせ１７０１になる。組み合わせ１７０１は、表記が「パターン２」、列番号が「３」、行番号「０」、列連結数「２」、行連結数「１」を意味する。
【０１１８】
図４に戻って、ステップＳ４０７において、図６の表解析で得られた表解析結果を有向グラフに変換する。この有効グラフへの変換に関する処理について、図１９にグラフ化処理のフローチャートとして示す。
【０１１９】
まず、ステップＳ１９０１において、図１７に示す組み合わせ構造から行抽出を行う。即ち、前記組み合わせの「行番号」が同じものを取り出す処理になる。
【０１２０】
表データの１行目はヘッダ行に含まれるとしているので、続くステップＳ１９０２において、抽出した行データをヘッダ行として登録する。
【０１２１】
ヘッダ行は図１６の例のように複数行にまたがることもある。このような場合ヘッダ行がどこまでかを判断するために、列連結数がすべて１であるかどうかを調べればよい。
【０１２２】
例えば図１６において、１行目に含まれるセル１６０１は、その下段にあるセル１６０２及びセル１６０６をまとめている。
【０１２３】
このときセル１６０１の列連結数は２であるので、ヘッダ行として次行に継続していると判定できる。
【０１２４】
続く２行目のすべてのセルについては列連結数が１となるため、この行でヘッダ行が終了していると判定できる。
【０１２５】
従って、続くステップＳ１９０３において、１行を表す前記組み合わせのすべての「列連結数」が１であるかどうかを調べる。
【０１２６】
すべての列連結数が１である場合（ステップＳ１９０３で「はい」の場合）、ステップＳ１９０４に進む。すべての列連結数が１でない場合（ステップＳ１９０３で「いいえ」の場合）、ステップＳ１９０１に戻り、次の行データを読み込み、同様にヘッダ行として登録する処理を実施する。
【０１２７】
ステップＳ１９０４からステップＳ１９１０にかけて残りの表データに対する処理を実施する。ステップＳ１９０４においてすべての行データを処理したかを確認する。
【０１２８】
行データがあればステップＳ１９０５に進み、ステップＳ１９０１と同様に行データの抽出処理を実施する。
【０１２９】
続くステップＳ１９０６において、抽出した前記行データが前記ヘッダデータと一致するかを調べる。
【０１３０】
簡易検査であれば、前記行データの列連結数がすべて１であるかを検査すればよい。より詳細な検査であれば、ヘッダに含まれる文字列に対して予め登録した型に一致するかどうかを検査すればよい。
【０１３１】
一例をあげると、図１６においてセル１６０２の文字列は「割合」であるので、予め「割合」に対して、０から１までの自然数或いは百分率表記である、といった型の登録をしておく。具体的には正規表現等で登録することができる。
【０１３２】
ステップＳ１９０６で「はい」の場合、即ち前記ヘッダデータに前記行データが一致すれば、ステップＳ１９０７に進み、行データ登録を実施する。
【０１３３】
行データ登録処理は、抽出した行データを有向グラフとして表現するものであり、任意のノードと前記組み合わせの「表記」を表すノードを矢印で接続し、その矢印のラベルとして前記ヘッダデータを登録するものである。
【０１３４】
図１６の表を有向グラフ化した実施例を図１８に示す。図１８におけるノード１８０６はひとつのデータ行を示し、矢印１８０７は次のデータ行への遷移を示す。
【０１３５】
例えば、図１６のセル１６０４は図１８のノード１８０３として登録される。このときノード１８０３はノード１８０６から矢印１８０１及び矢印１８０２を経由している。
【０１３６】
矢印１８０１のラベルは「パターン２」であり、矢印１８０２のラベルは「割合」である。従ってノード１８０３の持つデータ「６７．６」は「パターン２」の「割合」であり、ノード１８０６が示すデータ行のデータのひとつであることがわかる。
【０１３７】
また、ノード１８０３はノード１８０５を持ち、そのラベルとして「ｃｏｌ」としている。「ｃｏｌ」は定型的な属性値であり、「列番号」を意味する。
【０１３８】
同様にノード１８０８はノード１８０６からの遷移であり、そのラベルとして「ｒｏｗ」としている。「ｒｏｗ」も定型的な属性値であり、「行番号」を意味する。
【０１３９】
従って、ノード１８０３のデータ「６７．６」は元の表において、行番号２、列番号４に位置するデータであることがわかる。
【０１４０】
なお、図１８の実施例では２段に渡るヘッダデータを連続した矢印の形式で表現（中間ノードを使用）しているが、例えば矢印のラベルとして「パターン２：割合」というようにひとつの矢印として表現しても構わない。
【０１４１】
図１９に戻って、ステップＳ１９０６で「いいえ」の場合、即ち前記ヘッダデータと前記行データが一致しない場合、ステップＳ１９０８に進む。
【０１４２】
ステップＳ１９０８の区切り行登録とは、例えば、表中の複数のセルを連結させて注釈枠を挿入したり、末尾に備考欄を設けたりしているような表に対する処理である。
【０１４３】
図１６の例ではセル１６０５が該当する。図１８において行番号６を示すノード１８１０からノード１８０９へ矢印１８１１で接続するが、このとき矢印１８１１のラベルはヘッダデータ以外を示す「＊」を割り当てる。さらにノード１８０９の属性ノードとして「ｃｏｌｓｐａｎ」を作成し、列連結数を格納する。
【０１４４】
図１９に戻って、ステップＳ１９０７及びステップＳ１９０８の登録処理後、ステップＳ１９０９に進み、ｎａｍｅ設定処理を行う。
【０１４５】
ｎａｍｅ設定処理とは、前記行データにおける行の代表表記を設定するものであり、行を示すノードから定型的な属性値として「ｎａｍｅ」のラベルで遷移するノードである。
【０１４６】
図１８における一例として、ノード１８０４及びノード１８１２が該当する。ｎａｍｅ設定の内容は基本的に行の最左にあるもの、即ち列番号０のものを設定する。
【０１４７】
ただし、図１９のステップＳ１９０８における区切り行登録した場合は、「ＮＵＬＬ」を設定する。
【０１４８】
続くステップＳ１９１０ですべての行の処理が終了していれば、グラフ化処理を終了し、そうでない場合はステップＳ１９０４に戻ってグラフ化処理を継続する。
【０１４９】
図４に戻って、ステップＳ４０８に進み、表登録処理を行う。表登録処理は、前記有向グラフ化された表構造と、前述したページ情報と関連させて管理する処理であり、図５のステップＳ５０８で実施した文章登録と同等の処理である。
【０１５０】
このとき、直前に文章登録した本文要素を表題として登録しておく。図１５に表登録の一例を示す。
【０１５１】
ノード１５０６はページ番号「２１」であり、ラベル「ｔａｂｌｅｓ」は当該ページが持つ表リストを示す。なお、ページ番号「２１」は一例であり、具体的には図５におけるステップＳ５０３で取得した数値が登録される。
【０１５２】
ノード１５０７以下は図１８と同等の状態である。表登録処理は前述した文章登録と同等の処理であるため、実際のデータ形式はＸＭＬやＪＳＯＮ等の構造化された形式であれば構わない。
【０１５３】
図４に戻って、ステップＳ４０９に進み、本文要素のすべての子要素について解析処理が済んでいれば表・文章抽出処理を終了する。
【０１５４】
まだ解析処理が済んでいない子要素があればステップＳ４０２に戻り、表・文章抽出処理を継続する。
【０１５５】
図３に戻って、ステップＳ３０３において範囲特定処理を行う。範囲特定処理とは、任意の表について記述している文章の範囲を特定する処理である。
【０１５６】
具体的には、例えば、文章中に「・・・について表２−２に示す。」や「・・・である（参照：表２−２）」といった表記を範囲特定ルールとして予め用意しておく。
【０１５７】
範囲特定ルールは形態素の共起や係り受け関係等を用いて表現できるので、図５のステップＳ５０５で得られた形態素解析結果及びステップＳ５０６で得られた構文解析結果を参照することで、前述したような表記を抽出することができる。
【０１５８】
範囲特定処理では、範囲特定ルールに一致した文章を持つ段落全体を当該表について記述している文章の範囲とし、範囲特定ルールに一致した文章を持たない段落全体は、当該段落の前段落の状態が継続するものとして処理する。これらの段落状態の管理には図５のステップＳ５１０の段落属性管理を用いている。
【０１５９】
ステップＳ５１０の段落属性管理では、前記範囲特定ルールに一致した文章があれば、段落属性として抽出した表番号を段落属性として登録しておく。一例として、図１５における要素１５１１に示す。
【０１６０】
続くステップＳ３０４において、表連結処理を実施する。表連結処理は紙面の都合で大きな表が複数に分割されている状態のものを、論理的に再接続する処理である。
【０１６１】
表連結処理では、図４のステップＳ４０８において、表登録する際に表題として登録したものを使う。
【０１６２】
具体的には、表題内に記述されている表番号が同じものを再接続可能とする。補助的な再接続検証として、表題名称が同じ或いは含む場合も再接続対象としてもよい。
【０１６３】
一例を上げると、「表１：事例」と「表１：事例（続き）」の場合は、表番号が一致し且つ表題を含む場合であるので、再接続対象となる。
【０１６４】
なお、再接続検証の絶対条件として、表構造が同じもの即ちヘッダ情報が同じものでなければならない。
【０１６５】
また、前述した表番号は表題内から正規表現等を用いることで容易に抽出することができるため、ステップＳ３０４の表連結処理中に随時抽出・接続判定することも可能であるし、或いは図４のステップＳ４０８の表登録の際に表題の登録と共に予め表番号を抽出・登録しておいてもよい。
【０１６６】
論理的に再接続可能と判断した表については、ページ管理されている表同士でリンクを張る。
【０１６７】
図１５の例で例えると、ノード１５０７からラベル名「continue」として別ページノード１５０８に登録されている表ノード１５０９にリンクが張られることになる。
【０１６８】
図３に戻って、続くステップＳ３０５において、表検証処理を実施する。表検証処理とは図４のステップＳ４０８で登録した有向グラフ化した表について、前述した範囲特定処理で特定した当該段落に含まれる文章から、各セルについて記述している文章を検索する処理である。
【０１６９】
図２０に表検証処理のフローチャートを示す。ステップＳ２００１において、前述したページ管理されている表からすべての表の一覧を得る。
【０１７０】
続くステップＳ２００２において、当該表に関連付けられた範囲特定している段落の一覧を得る。段落の一覧は、前述した段落属性管理で登録した要素から取り出すことができる。
【０１７１】
続くステップＳ２００３において、前記段落一覧から段落をひとつ取り出し、続くステップＳ２００４以降で当該段落に含まれるすべての文章について、当該表に関する記述があるか確認する。
【０１７２】
ステップＳ２００５において、当該文章に対して、前述した表に関する記述があるかを調べる。
【０１７３】
検索するパターンは、前述した表の各行のｎａｍｅ属性に登録された文字列と、行ノードから出る有向グラフのラベル名と、有向グラフ先の数値ないし文字列の組み合わせとなる。
【０１７４】
このとき、当該表が持つすべての行に対して一致する箇所を検査する必要があるので、例えば、当該ｎａｍｅ属性に登録された文字列をフィルタ文字列として扱い、フィルタされた文章集合に対してのみ、残りのラベル名と数値等の組み合わせを検査するような処理にしてもよい。また、表検証における検索処理は多重ループになっているので、例えば、表のｎａｍｅ属性を索引化する等して処理効率を上げてもよい。
【０１７５】
ステップＳ２００５において「はい」の場合、即ち当該文章に、表に一致する記述があった場合、ステップＳ２００６に進み、当該文章に対象となる表ＩＤ及び行番号を関連付ける。具体的には、図１５における要素１５１２のように、当該文章のｔｂｌｌｉｎｋ属性として関連付けられる。
【０１７６】
続いてステップＳ２００７に進み、正解候補として文章を追加する。正解候補については後述するユーザに対する結果表示で使用する。
【０１７７】
ステップＳ２００５において「いいえ」の場合、即ち当該文章には表に一致する記述がなかった場合は、ステップＳ２００８に進む。ステップＳ２００８では前述した３つの組み合わせすべてにおいて一致する項目がなかったかを確認する。
【０１７８】
全く一致しなかった場合（ステップＳ２００８で「はい」の場合）、ステップＳ２０１０に進む。一部一致していた場合（ステップＳ２００８で「いいえ」の場合）、ステップＳ２００９に進み、誤り候補として文章を追加する。誤り候補については後述するユーザに対する結果表示で使用する。
【０１７９】
ステップＳ２００４以降で当該段落に含まれるすべての文章について処理が終了すると（ステップＳ２０１０）、ステップＳ２０１１に進み、範囲特定の段落すべての処理が終了すればステップＳ２０１２に進み、すべての表の処理が終了すれば、表検証処理を終了する。
【０１８０】
なお、ステップＳ２００５における当該文章に、表に一致する記述の特定手法については、前述したように３つの組み合わせによるものもあるが、例えば、図１６のような表形式の場合、数値と割合は同じ事象を示しているものであるから、一方の数値が一致しているのにも関わらず一方の数値が一致しない記述は誤り候補としなければならない。
【０１８１】
従って、ステップＳ２００５で検出する特定の手法については、当該表形式に合わせて柔軟に対応できるようなものであることは言うまでもない。
【０１８２】
図３に戻って、続くステップＳ３０６において、文検証処理を実施する。文検証処理は、前述した表検証とは逆に、文章から表に対して検証する処理である。即ち、図５のステップＳ５０７で抽出した数値情報を含む表があるかどうかを検証する処理となる。
【０１８３】
図２１に文検証処理のフローチャートを示す。ステップＳ２１０１以降において、すべての文章を対象に処理を実施する。続いてステップＳ２１０２に進み、当該文章に数値情報が付与されているかを調べる。
【０１８４】
数値情報が付与されていない場合（ステップＳ２１０２で「いいえ」の場合）、ステップＳ２１１０に進み、次の文章の処理にかかる。数値情報が付与されている場合（ステップＳ２１０２で「はい」の場合）、ステップＳ２１０３に進む。ステップＳ２１０３以降において、すべての数値情報を対象に処理を実施する。
【０１８５】
ステップＳ２１０４において、当該文章が段落属性を持つかを調べる。段落属性の有無の判定は、当該文章を含む段落に関連付けられた段落属性に依存する。
【０１８６】
段落属性を持つ場合（ステップＳ２１０４で「はい」の場合）、ステップＳ２１０５に進む。ステップＳ２１０５では、段落属性に登録された当該表を対象に検索し、当該数値情報の数値が含まれているかどうかを調べる。
【０１８７】
数値が存在する場合（ステップＳ２１０５において「はい」の場合）、ステップＳ２１０６に進み、項目名が一致するかを調べる。
【０１８８】
項目名の一致は、第一として当該数値情報の通常モードを対象に検査する。通常モードだけで一致しない場合のみ参照モードで登録した項目に広げて検査する。以上のいずれかで項目名が一致した場合（ステップＳ２１０６で「はい」の場合）、ステップＳ２１０７に進み、正解候補として当該文章を追加する。
【０１８９】
ステップＳ２１０５において「いいえ」の場合、即ち当該表に数値がない場合、ステップＳ２１０８に進み、誤り候補として文章を追加する。
【０１９０】
ステップＳ２１０６において「いいえ」の場合、即ち当該表に数値が存在するのに項目名が一致しない場合もステップＳ２１０８に進み、誤り候補として文章を追加する。
【０１９１】
続いてステップＳ２１０９に進み、すべての数値情報の処理が終了していなければステップＳ２１０４に戻り、処理を継続する。
【０１９２】
すべての数値情報の処理が終了すれば、ステップＳ２１１０に進む。ステップＳ２１１０において、すべての文章の処理が終了していなければ、ステップＳ２１０２に戻り、処理を継続する。すべての文章の処理が終了すれば、文検証処理を終了する。
【０１９３】
ステップＳ２１０４において「いいえ」の場合、即ち当該文章が段落属性を持たない場合、ステップＳ２１１１に進む。
【０１９４】
ここでは管理しているすべての表を対象として数値情報の検出を試みる。ステップＳ２１１２に進んで、項目名が一致するかどうかを調べる。
【０１９５】
項目名の一致は、第一として当該数値情報の通常モードを対象に検査する。通常モードだけで一致しない場合のみ参照モードで登録した項目に広げて検査する。
【０１９６】
以上のいずれかで項目名が一致した場合（ステップＳ２１１２で「はい」の場合）、ステップＳ２１１３に進み、数値が一致するかを検査する。
【０１９７】
数値が一致する場合（ステップＳ２１１３で「はい」の場合）、ステップＳ２１１４に進み、正解候補として文章を追加する。このとき付属情報として当該表ＩＤも合わせて追加登録する。
【０１９８】
数値が一致しない場合（ステップＳ２１１３で「いいえ」の場合）、ステップＳ２１１５に進み、誤り候補として文章を追加する。このとき付属情報として当該表ＩＤも合わせて追加登録する。
【０１９９】
続いてステップＳ２１１６に進み、次の表があればステップＳ２１１２に戻って処理を継続する。すべての表の検査が終了すれば、ステップＳ２１０９に進む。ステップＳ２１１２で「いいえ」の場合、即ち項目名の一致がなかった場合は、属性情報を持たないことから誤検出の可能性があるので誤り候補に追加することなく、ステップＳ２１１６に進み、次の処理に移る。
【０２００】
なお、ステップＳ２１１１からステップＳ２１１６にかけての非段落属性処理については、全体の処理速度向上のために、当該数値情報についてすべて誤り候補に追加するように変更することもできる。このような変更をオプション的に実施することで処理速度の低下を回避しつつ、数値情報がある文章にも関わらずどの表にも関連付けられていない項目を誤りとして検出することも可能となる。
【０２０１】
図３に戻って、ステップＳ３０５の文検証を終了し、文書解析処理を終了する。
【０２０２】
次に、図３で得られた分析結果の表示について、図２２から図２５を用いて説明する。
【０２０３】
以下、表示例の説明にはブラウザを用いたウェブアプリケーションとして表示されているものとして説明する。
【０２０４】
図２２は、分析結果の一例である。表２２０１は解析対象となった表であり、前述したように、図６に示した表解析処理において、図１７に示すリスト構造や図１８に示す有向グラフ構造を得ていることから、これらの抽象化された構造を走査することでＨＴＭＬ形式の表データを生成することは容易である。
【０２０５】
ページ表示２２０２は、文書内の文章をページ単位で表示できるものであり、前述した図１５における有向グラフ構造から当該ページの段落情報を取得することで容易に表示することができる。
【０２０６】
解析結果２２０３は、図２０の表検証処理及び図２１の文検証処理で得られた正解候補を表示するものである。
【０２０７】
次に図２３及び図２４を用いて、分析結果における表と文章の対応関係の表示例について説明する。
【０２０８】
図２３は表２３０１において入力装置でセル２３０２を選択している状態を示している。このとき、ページ表示２３０３内において、当該セルの説明を記述している文章２３０４の背景色を反転させている状態を示している。
【０２０９】
また、図２４はページ表示２４０４内の文章２４０５を入力装置で選択している状態を示しており、このとき、表２４０１において、当該文章が説明しているセル２４０２及びセル２４０３の背景色を反転させている状態を示している。
【０２１０】
背景色の反転にはＪａｖａｓｃｒｉｐｔ言語を用いて実施することが可能であり、具体的には、入力装置で選択しているブラウザ上の当該要素の要素ＩＤと、それに対応して反転処理させる要素ＩＤの組み合わせがわかっていればよい。
【０２１１】
この要素ＩＤの組み合わせは、選択される要素ＩＤは前述した文章ＩＤであり、反転処理させる要素ＩＤは表ＩＤと行番号と列番号の組で一意に示すことができる。
【０２１２】
これらの関連付けに関しては、前述した図２０におけるステップＳ２００６の表ＩＤ関連付け処理の情報を用いており、図１５に示した文章ＩＤとそれに関連付けられたｔｂｌｌｉｎｋ属性から得ることができる。
【０２１３】
なお、選択される要素と反転処理させる要素は逆の組み合わせも可能であるので、表の任意のセルを入力装置で選択することで、関連付けされた文章の反転処理を実施することも同様の仕組みで可能である。
【０２１４】
このように、利用者は入力装置を用いることで、任意の表及び文章を選択することで関連付けられた表及び文章を容易に認識できるようになる。
【０２１５】
図２５に表と文章間に不整合があった場合の表示例を示す。文章に「項目Ｂはパターン１で３２件（７０．７％）に達した。」という記述があった場合、表２５０１におけるセル２５０２の数値５３と一致しない。
【０２１６】
このとき、セル２５０２の表示を通常と異なる形式、例えば、赤字で大きく強調表示する、等の表示を行う。
【０２１７】
解析結果２５０４は、図２２の解析結果２２０３と同様に、誤り候補を表示するものである。
【０２１８】
なお、前記不一致の判定については、図２０におけるステップＳ２００５において一致する組み合わせがないため、ステップＳ２００８に進み、数値以外の組み合わせが一致している（「項目Ｂ」及び「パターン１」）ため、ステップＳ２００９に進んで誤り候補追加されることで判定されている。
【０２１９】
図２２の解析結果２２０３及び図２５の解析結果２５０４は、共に正解候補及び誤り候補の一方だけの表示例を示しているが、正解候補と誤り候補が同時に表示される可能性もあることは言うまでもない。
【０２２０】
以上、本発明によれば、ユーザが文書と当該文書に関係する表との関係性を容易に検証することができる。
【０２２１】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能であり、具体的には、複数の機器から構成するシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２２２】
なお、上述した各種データの構成及び表示の構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な内容で構成されることは言うまでもない。
【０２２３】
また、本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システム或いは装置に読み出すことによって、そのシステム或いは装置が、本発明の効果を享受することが可能となる。
【０２２４】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム或いは装置が、本発明の効果を享受することが可能となる。
【０２２５】
なお、上述した各実施形態及びその変形例を組み合わせた構成もすべて本発明に含まれるものである。
【符号の説明】
【０２２６】
１００  文書分析装置
１０１  解析部
１０２  解析データ
１０３  照合部
１０４  照合データ
１０５  表示部
１０６  文書
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ＲＯＭ
２０４  システムバス
２０５  入力コントローラ
２０６  ビデオコントローラ
２０７  メモリコントローラ
２０８  通信Ｉ／Ｆ（インターフェース）コントローラ
２０９  入力装置
２１０  表示装置
２１１  外部メモリ
【図１】
2020201965.tif 000003
【図２】
2020201965.tif 000004
【図３】
2020201965.tif 000005
【図４】
2020201965.tif 000006
【図５】
2020201965.tif 000007
【図６】
2020201965.tif 000008
【図７】
2020201965.tif 000009
【図８】
2020201965.tif 000010
【図９】
2020201965.tif 000011
【図１０】
2020201965.tif 000012
【図１１】
2020201965.tif 000013
【図１２】
2020201965.tif 000014
【図１３】
2020201965.tif 000015
【図１４】
2020201965.tif 000016
【図１５】
2020201965.tif 000017
【図１６】
2020201965.tif 000018
【図１７】
2020201965.tif 000019
【図１８】
2020201965.tif 000020
【図１９】
2020201965.tif 000021
【図２０】
2020201965.tif 000022
【図２１】
2020201965.tif 000023
【図２２】
2020201965.tif 000024
【図２３】
2020201965.tif 000025
【図２４】
2020201965.tif 000026
【図２５】
2020201965.tif 000027