(57)【要約】【課題】業務システムに毎回異なる構造化文書が入力される場合にも、高速な構文解析を行うことができるようにする。【解決手段】構造化文書の構文解析を行うＸＭＬパースプログラム１０３に、「構造化文書中の頻出文字列」の構文解析結果を保存する解析結果テーブル１１５を付加する。プログラム１０３に、単純型要素可能性判定部１１６、解析結果取り出し部１１７、解析結果登録部１１８を付加する。解析結果取り出し部１１７は、構文解析時、構造化文書中の頻出文字列の２回目以降の出現時には格納した要素オブジェクトを解析結果テーブル１１５から取り出して再利用させる。【選択図】図１
2008123037.tif 000002
【特許請求の範囲】
【請求項１】
構文解析手段を備える構文解析装置における構造化文書の構文解析方法において、
構文解析装置は、単純型要素可能性判定手段と、解析結果取り出し手段と、解析結果登録手段と、解析結果を格納しておく解析結果格納手段とを備え、
前記解析結果登録手段は、前記構文解析手段により解析された構造化文書の予め定めた一定の構造を持つ頻出文字列を抽出し、その頻出文字列と該頻出文字列の解析結果とを前記解析結果格納手段に格納し、前記単純型要素可能性判定手段は、前記構文解析装置に入力される構造化文書の中から頻出文字列の可能性のある文字列を認識して切り出し、前記解析結果取り出し手段は、認識された頻出文字列の可能性のある文字列をキーとして前記解析結果格納手段から対応する頻出文字列の解析結果を取り出し、前記解析結果を出力することを特徴とする構造化文書の構文解析方法。
【請求項２】
前記解析結果取り出し手段は、前記解析結果格納手段から対応する頻出文字列の解析結果を取り出すことができなかった場合、前記頻出文字列を前記構文解析手段に渡すことを特徴とする請求項１記載の構造化文書の構文解析方法。
【請求項３】
前記構造化文書がＸＭＬ文書であり、前記頻出文字列が単純型要素であることを特徴とする請求項１記載の構造化文書の構文解析方法。
【請求項４】
前記解析結果格納手段には、キーとして単純型要素を示す解析済文字列と、その要素の解析結果としての要素オブジェクトとを対として格納されることを特徴とする請求項３記載の構造化文書の構文解析方法。
【請求項５】
前記単純型要素可能性判定手段は、単純型要素の可能性のある文字列の認識、切り出しを、前記構造化文書の文字列から開始タグ、終了タグの末端の区切り文字の存在を確認して切り出すことにより行うことを特徴とする請求項３記載の構造化文書の構文解析方法。
【請求項６】
前記単純型要素可能性判定手段は、単純型要素の可能性のある文字列の認識、切り出しを行う際、単純型要素のコンテンツが一定の長さを超えたときには切り出しを行わないことを特徴とする請求項３記載の構造化文書の構文解析方法。
【請求項７】
前記解析結果格納手段には、キーとしての単純型要素を示す解析済文字列とその解析結果とが取り出された利用回数がさらに格納され、前記解析結果登録手段は、前記構文解析手段により解析された構造化文書の単純型要素とその解析結果とを前記解析結果格納手段に格納する際、前記解析結果格納手段が所定の大きさを超える場合に、既に格納されている最も利用回数の少ないものを削除することを特徴とする請求項３記載の構造化文書の構文解析方法。
【請求項８】
構文解析手段を備える構造化文書の構文解析装置において、
構文解析装置は、単純型要素可能性判定手段と、解析結果取り出し手段と、解析結果登録手段と、解析結果を格納しておく解析結果格納手段とを備え、
前記解析結果登録手段は、前記構文解析手段により解析された構造化文書の予め定めた一定の構造を持つ頻出文字列を抽出し、その頻出文字列と該頻出文字列の解析結果とを前記解析結果格納手段に格納し、前記単純型要素可能性判定手段は、前記構文解析装置に入力される構造化文書の中から頻出文字列の可能性のある文字列を認識して切り出し、前記解析結果取り出し手段は、認識された頻出文字列の可能性のある文字列をキーとして前記解析結果格納手段から対応する頻出文字列の解析結果を取り出し、前記解析結果を出力することを特徴とする構造化文書の構文解析装置。
【請求項９】
構造化文書の構文解析プログラムであって、
構文解析処理と、単純型要素可能性判定処理と、解析結果取り出し処理と、解析結果登録処理と、解析結果を格納しておく解析結果格納手段とを備え、
前記解析結果登録処理は、前記構文解析処理により解析された構造化文書の予め定めた構造を持つ頻出文字列を抽出するステップと、その頻出文字列と該頻出文字列の解析結果とを前記解析結果格納手段に格納するステップとを有し、
前記単純型要素可能性判定処理は、前記構文解析装置に入力される構造化文書の中から頻出文字列の可能性のある文字列を認識して切り出すステップを有し、
前記解析結果取り出し処理は、認識された頻出文字列の可能性のある文字列をキーとして前記解析結果格納手段から対応する頻出文字列の解析結果を取り出すステップと、前記解析結果を出力するステップとを有し、前記各ステップを計算機システムのプロセッサに実行させることを特徴とする構造化文書の構文解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書の構文解析方法及び装置に係り、特に、構造化文書の構文解析の処理を高速に行うことを可能にした構造化文書の構文解析方法及び装置に関する。
【背景技術】
【０００２】
構造化文書の構文解析を行う従来技術として、例えば、特許文献１等に記載された技術が知られている。この従来技術は、構造化文書の構文解析のために構造化文書全体の構文解析結果をキャッシュに保持しておき、アプリケーションからキャッシュに保持している構造化文書の構文解析を要求されたとき、構造化文書を構文解析することなく、キャッシュに保持している構文解析結果をアプリケーションに返すことにより、高速な構文解析を実現するというものである。
【特許文献１】特開２００４−６２７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前述した従来技術での構造化文書の構文解析の方法は、キャッシュに保持する単位が構造化文書単位であるため、キャッシュの内容を適用できるのは同一内容の構造化文書の場合に限られる。このため、前述の従来技術は、構文解析対象とする構造化文書の内容がキャッシュに保持した構文解析結果と少しでも異なると、キャッシュを利用した構文解析を行うことができない。
【０００４】
一般に、業務システムにおける構造化文書の処理は、毎回異なる構造化文書を構文解析することが多い。このような業務システムに従来技術を適用した場合、キャッシュの利用がほぼ不可能となり、高速な構文解析処理を実現できないという問題点を生じさせる。
【０００５】
本発明の目的は、前述した従来技術の問題点を解決し、毎回異なる構造化文書を構文解析する場合にも、高速な構文解析を行うことができるようにした構造化文書の構文解析方法及び装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明によれば前記目的は、構文解析手段を備える構文解析装置における構造化文書の構文解析方法において、構文解析装置は、単純型要素可能性判定手段と、解析結果取り出し手段と、解析結果登録手段と、解析結果を格納しておく解析結果格納手段とを備え、前記解析結果登録手段は、前記構文解析手段により解析された構造化文書の予め定めた一定の構造を持つ頻出文字列を抽出し、その頻出文字列と該頻出文字列の解析結果とを前記解析結果格納手段に格納し、前記単純型要素可能性判定手段は、前記構文解析装置に入力される構造化文書の中から頻出文字列の可能性のある文字列を認識して切り出し、前記解析結果取り出し手段は、認識された頻出文字列の可能性のある文字列をキーとして前記解析結果格納手段から対応する頻出文字列の解析結果を取り出し、前記解析結果を出力することにより達成される。
【発明の効果】
【０００７】
本発明によれば、頻出文字列の構文解析における要素字句解析処理、要素文字チェック処理、要素オブジェクト生成処理の実行回数を削減することができ、これにより、構造化文書の構文解析を高速に行うことが可能となる。
【発明を実施するための最良の形態】
【０００８】
まず、本発明の実施形態の概要を説明する。本発明の実施形態は、構造化文書の構文解析装置に対して「構造化文書中の頻出文字列」についての構文解析結果を解析結果格納手段であるテーブルに保存しておき、当該文字列の２回目以降の出現時に、テーブルに保存した構文解析結果を再利用することができるようにしたものである。
【０００９】
一般に、業務システムの入力とされる構造化文書は、同じ文字列が頻出することが多く、また、業務システムの入力とされる複数の異なる構造化文書の中に、共通の文字列が頻出することも多い。本発明の実施形態は、業務システムの入力とされる構造化文書のこのような性質に着目している。
【００１０】
前述の頻出文字列の具体的な内容は、構造化文書の種別（ＸＭＬ、ＨＴＭＬ、ＳＧＭＬ等）や構造化文書によって表されるデータの用途（伝票、電文、表など）によって異なるが、一定の構造を持つものである。例えば、構造化文書の一種であるＸＭＬ文書においては、タグ名とテキストとが固定の文字列であるような単純型要素や、属性名と属性値とが固定の文字列であるような属性などが、頻出文字列となり得る。なお、単純型要素とは、「W3C Recommendation XML Schema Part0,Part1,Part2」 で規定されている Simple Type（単純型）を要素に対して適用したものであり、ＸＭＬの技術分野では一般的な概念である。
【００１１】
以下、本発明による構造化文書の構文解析方法及び装置の実施形態を図面により詳細に説明する。なお、以下に説明する本発明の実施形態は、構造化文書としてＸＭＬ文書を例としたものである。
【００１２】
図１は本発明の一実施形態によるＸＭＬ文書の構文解析装置の構成と、その入出力データとを説明するブロック図である。図１において、１０１は計算機システム、１０２は主記憶装置、１０３はＸＭＬパースプログラム、１０４はプロセッサ、１０５は補助記憶装置、１０６はＸＭＬパースプログラム初期化部、１０７は開始タグ解析部、１０８はコンテンツ解析部、１０９は終了タグ解析部、１１０は要素字句解析部、１１１は要素文字チェック部、１１２は要素オブジェクト生成部、１１３はイベント通知部、１１４はアプリケーションプログラム、１１５は解析結果テーブル、１１６は単純型要素可能性判定部、１１７は解析結果取り出し部、１１８は解析結果登録部である。
【００１３】
本発明の実施形態によるＸＭＬ文書の構文解析装置は、計算機システム１０１内に構成される。計算機システム１０１は、よく知られているように、主記憶装置１０２と、計算機システム１０１全体の処理の制御、本発明のための設けられるプログラムを実行するＣＰＵであるプロセッサ１０４と、ハードディスク装置等による補助記憶装置１０５とを備えると共に、図示しないキーボード、マウス等の入力装置と、表示装置、プリンタ等の出力装置とを備えて構成される。
【００１４】
そして、主記憶装置１０２には、本発明による処理のために補助記憶装置１０５からロードされた構造化文書の構文解析を行うＸＭＬパースプログラム１０３と、解析結果テーブル１１５とが格納され、ＸＭＬパースプログラム１０３がプロセッサ１０４によって実行される。補助記憶装置１０５に格納されているＸＭＬ文書は、ＸＭＬパースプログラム１０３に入力され、ＸＭＬパースプログラム１０３により、そのＸＭＬ文書の構文解析が行われる。
【００１５】
ＸＭＬパースプログラム１０３は、ＸＭＬパースプログラム初期化部１０６、開始タグ解析部１０７、コンテンツ解析部１０８、終了タグ解析部１０９、要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２、イベント通知部１１３、アプリケーションプログラム１１４、単純型要素可能性判定部１１６、解析結果取り出し部１１７、解析結果登録部１１８により構成される。そして、前述の開始タグ解析部１０７とコンテンツ解析部１０８と終了タグ解析部１０９とが、構文解析部を構成している。
【００１６】
一般的なＸＭＬパースプログラムは、ＸＭＬ文書の基本単位の１つである「要素」を構文解析する場合、ＸＭＬパースプログラム初期化部１０６を起点として、開始タグ解析部１０７、コンテンツ解析部１０８、終了タグ解析部１０９を順番に呼び出す。
【００１７】
開始タグ解析部１０７、コンテンツ解析部１０８、終了タグ解析部１０９は、いずれも、要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２を呼び出す。要素字句解析部１１０は、要素の開始タグや終了タグの字句解析を行う。字句解析は、ＸＭＬ文書に含まれる文字列について、構造部分（マークアップと呼ばれる）を表す“＜“や”＞”等と、それ以外の部分とに分解する処理である。要素文字チェック部１１１は、要素に含まれる文字がＸＭＬ仕様で定義された文字に合致しているか否かをチェックする。要素オブジェクト生成部１１２は、開始タグ、コンテンツ、終了タグの構文解析結果を、アプリケーションプログラム１１４に渡すのに適した要素オブジェクトに変換する。要素オブジェクトは、イベント通知部１１３を通してアプリケーションプログラム１１４に渡される。これらの要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２での処理は、いずれも多くの時間を消費する処理である。
【００１８】
本発明の実施形態は、前述した一般的なＸＭＬパースプログラムの構成に単純型要素可能性判定部１１６、解析結果取り出し部１１７、解析結果登録部１１８を追加し、また、主記憶１０２上に解析結果テーブル１１５を追加して構成したものである。
【００１９】
図２はＸＭＬ文書における「要素」について説明する図である。要素は、図２（ａ）に示すように、開始タグ２０１で始まり、終了タグ２０２で終わる。開始タグと終了タグとの間にはコンテンツ２０３が含まれていてもよい。コンテンツは、コンテンツ２０３のようにテキストだけであってもよく、図２（ｂ）に示すコンテンツ２０４のように、その内部に要素を含んでいてもよい。以下の説明において、図２（ａ）に示すようなテキストだけのコンテンツを持つ要素を単純型要素２０５と呼び、それ以外の要素、例えば、図２（ｂ）に示すようなコンテンツに要素を含むような要素を複合型要素２０６と呼ぶこととする。
【００２０】
図３は業務システムの入力ＸＭＬ文書の例としてのＳＯＡＰメッセージを示す図である。図３に示すＳＯＡＰメッセージ３０１は、「W3C Recommendation SOAP Version 1.2 Part0:Primer」の「2.1 SOAP Messages」の「Example1」 を引用したものである。
【００２１】
このＳＯＡＰメッセージ３０１は、<env:Envelope>と</env:Envelope> とにより囲まれており、航空機の座席予約の１つのレコードを表している。また、このＳＯＡＰメッセージは、２つの部分に分かれている。１つ目は、<env:Header>と</env:Header> とにより囲まれたＳＯＡＰヘッダと呼ばれる部分である。ＳＯＡＰヘッダには、このＸＭＬ文書がＳＯＡＰメッセージであることや、座席予約のＩＤ、予約を行った時間、予約担当者の名前等が格納されている。２つ目は、<env:Body>と</env:Body> とにより囲まれたＳＯＡＰボディと呼ばれる部分である。ＳＯＡＰボディには、行きと帰りのそれぞれの航空機について、出発地、到着地、出発日、出発時間帯、座席位置等が格納されている。
【００２２】
ＳＯＡＰを用いた業務システムに限らず、Ｂ２Ｂ等でＸＭＬを用いる業務システムは、図３に示すようなメッセージを数百〜数万といった単位で受け付けて、ＸＭＬパースプログラムにこれらのメッセージを処理させている。
【００２３】
図３に示す例において、ＳＯＡＰヘッダの部分は、メッセージ毎に固有であるが、ＳＯＡＰボディを構成する単純型要素は、複数のメッセージに渡ってに共通する部分が多い。例えば、<p:departing>New York</p:departing> という単純型要素は、「出発地がニューヨーク」という情報を含む全てのＳＯＡＰボディに共通に含まれる。また、<p:seatPreference>aisle</p:seatPreference>という単純型要素は、「座席が通路側」という情報を含む全てのＳＯＡＰボディに共通に含まれる。
【００２４】
前述した例で説明したように、ＸＭＬ文書における単純型要素は、出発地、到着地というような「階層構造を持たないデータ」を表している。「階層構造を持たないデータ」は、ＸＭＬ文書を構成する最も基本的なデータであるので、同一の単純型要素が１つあるいは複数のＸＭＬ文書の中に繰り返し出現する確率は「階層構造を持つデータ」が繰り返し出現する確率と比べて高い。本発明の実施形態は、このように、単純型要素がＸＭＬ文書中に頻出するという特徴を利用して、その解析結果を解析結果テーブル１１５に保存しておき、頻出する単純型要素の解析に要する時間の短縮を図ることを可能としたものである。
【００２５】
図４は解析結果テーブルの詳細な構成例を示す図である。解析結果テーブル１１５は、解析済である単純型要素の字面を格納するＸＭＬパースプログラムによる解析済文字列カラム４０２と、単純型要素の解析結果として生成したオブジェクトを格納する要素オブジェクトカラム４０３と、同一の単純型要素の出現回数のカウント結果を格納する出現回数カラム４０４とにより構成される。解析結果テーブル１１５への登録及び検索は、ＸＭＬパースプログラムによる解析済文字列カラム４０２をキーとして行われ、要素オブジェクトカラム４０３と出現回数カラム４０４とが対応する値となる。
【００２６】
本発明の実施形態は、図１におけるＸＭＬパースプログラム１０３が、解析結果テーブル１１５の各カラムに値を登録、検索しながらＸＭＬ文書を構文解析する。
【００２７】
次に、本発明の実施形態によるＸＭＬ文書の構文解析装置での処理動作の概要を図１を参照して説明し、処理が高速に行われることを具体的に説明する。
【００２８】
まず、ＸＭＬパースプログラム初期化部１０６は、補助記憶装置１０５内のＸＭＬ文書を主記憶装置１０２に読み込む処理を行う。次に、単純型要素可能性判定部１１６が、読み込んだＸＭＬ文書の要素が解析結果テーブル１１５に登録済みの単純型要素の可能性があるか否かをチェックする処理を行う（このチェック処理の詳細については、図６、図７により後述する）。単純型要素可能性判定部１１６でのチェックは、以下に示す３つの状況のどれであるかを判定するチェックであり、全ての要素の読み込みが終了するまでそのチェックの処理が実行される。
【００２９】
（１）処理する要素が解析結果テーブルに登録される単純型要素の可能性がない。
【００３０】
（２）処理する要素が解析結果テーブルに登録される単純型要素の可能性があり、かつ、その要素がテーブルに登録されていない。
【００３１】
（３）処理する要素が解析結果テーブルに登録される単純型要素の可能性があり、かつ、その要素がテーブルに登録されている。
【００３２】
前述の（１）は、処理する要素が「解析結果テーブルに登録される単純型要素の可能性はない」であり、この場合、単純型要素可能性判定部１１６の処理で単純型要素の可能性はない（図６で後述するフローのステップ６０２の判定でＮＯと判定）と判定される。そして、開始タグ〜終了タグに渡って、要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２での処理を行う。その後、解析結果登録部１１８での処理（この処理については、図９に示すフローにより詳細を後述する）が実行されると、再び単純型要素の可能性判定処理（図９に示すフローのステップ９０１）が行われＮＯと判定され、図９に示すフローのステップ９０２〜９０５の処理をスキップして、アプリケーションプログラム１１４への要素オブジェクトのイベント通知部１１３の処理が実行される。この（１）の場合、一般的なＸＭＬパースプログラムと比較して高速な処理とはならない。
【００３３】
前述の（２）は、処理する要素が「解析結果テーブルに登録される単純型要素の可能性があり、かつ、その要素がまだ解析結果テーブルに登録されていない」であり、この場合、単純型要素可能性判定部１１６の処理で単純型要素の可能性がある（図６に示すフローのステップ６０２の判定でＹＥＳと判定）と判定される。そして、解析結果取り出し部１１７が、解析結果テーブル１１５から単純型要素をキーとした要素オブジェクトの取得処理を行う。この要素オブジェクトの取得処理で、解析結果の取得に失敗したら（図８に示すフローのステップ８０２の判定でＮＯと判定）、開始タグ〜終了タグに渡って、要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２を行う。
【００３４】
その後、解析結果登録部１１８での処理（この処理については、図９により詳細を後述する）が実行されると、再び単純型要素の可能性判定処理（図９に示すフローのステップ９０１）が実行されＹＥＳと判定される。このＹＥＳと判定された結果、次に、ここで処理する要素の解析結果から本当にその要素が単純型要素か否かを判定する。処理中の要素が単純型要素であれば（図９に示すフローのステップ９０２の判定でＹＥＳと判定）、解析結果テーブル１１５のサイズが一定のサイズを超えたか否かを判定する処理（図９に示すフローのステップ９０３）を行い、超えていれば出現回数が最も低いエントリの削除処理（図９に示すフローのステップ９０４）を行う。次に、解析結果テーブル１１５に対して、単純型要素をキーとした要素オブジェクトの登録処理（図９に示すフローのステップ９０５）を行う。同時に、解析結果テーブル１１５の出現回数カラム４０４の初期化を行う。処理中の要素が単純型要素でなければ（図９に示すフローのステップ９０２の判定でＮＯ）、解析結果テーブル１１５に登録する必要がないので、ステップ９０３〜９０５の処理をスキップする。その後、単純型要素であったかどうかに関わらず、アプリケーションプログラム１１４への要素オブジェクトのイベント通知処理であるイベント通知部１１３での処理が実行される。この（２）の場合も、一般的なＸＭＬパースプログラムと比較して高速な処理とはならない。
【００３５】
前述の（３）は、前述の（２）の処理の途中で、解析結果テーブル１１５から要素オブジェクトの取得に成功した場合（図８に示すフローのステップ８０２の判定でＹＥＳと判定）である。この場合、解析結果テーブル１１５の出現回数カラム４０４の更新処理（図８に示すフローのステップ８０３）を実行してから、取得した要素オブジェクトを用いて、アプリケーションプログラム１１４への要素オブジェクトのイベント通知処理であるイベント通知部１１３での処理が実行される。この（３）は、開始タグ〜終了タグに渡って行う要素字句解析部１１０、要素文字チェック部１１１、要素オブジェクト生成部１１２をスキップするため、一般的なＸＭＬパースプログラムと比較して高速な処理となる。
【００３６】
前述で説明したように、業務システムに入力されるＸＭＬ文書には、同じ単純型要素が繰り返し出現することが多いため、前述の（３）が実行される確率は（１）、（２）と比較して高い。従って、本発明の実施形態によるＸＭＬパースプログラムは、一般的なＸＭＬパースプログラムよりも高速に、ＸＭＬ文書の構文解析を行うことが可能となる。
【００３７】
なお、解析結果テーブル１１５の出現回数カラム４０４は、解析結果テーブルのメモリサイズを一定に抑えるために用いられる。すなわち、解析結果テーブル１１５が一定のサイズを超えたら、出現回数の最も低いエントリの削除処理（図９に示すフローのステップ９０４）の処理が行われる。これにより、構文解析処理の高速化とメモリサイズの抑止との両立が可能となる。
【００３８】
図５はＸＭＬパースプログラム初期化部１０６の処理動作を説明するフローチャートである。ここでのＸＭＬパースプログラム初期化部１０６の処理は、初期化の処理を開始すると、補助記憶装置１０５からＸＭＬ文書を読み込み、文字として主記憶装置１０２に格納する処理（ステップ５０１）である。
【００３９】
図６は単純型要素可能性判定部１１６の処理動作を説明するフローチャートであり、次に、これについて説明する。
【００４０】
（１）この処理が開始されると、単純型要素可能性判定部１１６は、主記憶装置１０２上から開始タグを始点とし一定の長さの文字列を読み込む（ステップ６０１）。
【００４１】
（２）ステップ６０１の処理で実際に読み込んだ文字列が単純型要素の可能性があるか否か判定する。なお、ここでの判定処理の詳細については図７により後述する（ステップ６０２）。
【００４２】
（３）ステップ６０２の判定で、読み込んだ文字列が単純型要素の可能性があった場合、処理を解析結果取り出し部１１７へ移行させ、また、読み込んだ文字列が単純型要素の可能性がなかった場合、処理を開始タグ解析部１０７へ移行させる。
【００４３】
図７は図６に示すフローのステップ６０２での読み込んだ文字列が単純型要素の可能性があるか否か判定する処理の動作を説明するフローチャートであり、次に、これについて説明する。
【００４４】
（１）この処理が開始されると、ステップ６０１の処理で実際に読み込んだ文字列をスキャンする（ステップ７０１）。
【００４５】
（２）ステップ７０１の処理でスキャンした結果、終了タグの終わりの区切り文字が存在たか否かを判定し、終了タグの区切り文字が存在しなかった場合、単純型要素の可能性はないと判定して、処理を開始タグ解析部１０７へ移行させる（ステップ７０２）。
【００４６】
（３）ステップ７０２の判定で、終了タグの区切り文字が存在した場合、単純型要素の可能性があると判定し、テーブルのキーとするため読み込んだ文字列の先頭からから終了タグの区切り文字までを切り出し、その後、処理を解析結果取り出し部１１７へ移行させる（ステップ７０３）。
【００４７】
前述におけるステップ６０１の処理で読み込む文字数を制限する理由は以下に説明する通りである。
【００４８】
文字列が長いということは、複合型要素であるか、単純型要素であるが含んでいるコンテンツが長いことを意味する。複合型要素であれば、そもそも解析結果テーブルに登録しないので「可能性なし」と判断する。また、コンテンツが長い単純型要素は非定型的な要素であり頻出文字列ではない可能性が高い。よって、この場合も「可能性なし」と判断する。
【００４９】
このため、前述したステップ６０１の処理において、読み込む文字列の長さを一定の長さに抑えることとし、単純型要素であっても、開始タグと終了タグとの間にあるコンテンツの文字列がある程度以上長い場合に、本発明の実施形態で単純型要素として扱わないようにしている。このことは、後述する解析結果登録部１１８での処理においても同様で、開始タグと終了タグとの間にあるコンテンツの文字列がある程度以上長い場合、解析結果テーブル１１５への格納を行わない。
【００５０】
一定の長さという閾値を決定する方法として、ＸＭＬ文書のパースを始めてから１００個の単純型要素の長さをすべて格納しておき、その単純型要素の長さの中央値を取る方法やユーザによる指定によって決定する方法を利用することができる。
【００５１】
単純型要素可能性判定部１１６の処理は、読み込み中の要素が単純型要素であるか否かを正確に判定する処理ではなく、解析結果テーブル１１５に登録された単純型要素である可能性の有無を判定するだけの処理である。従って、単純型要素である可能性があると判定された場合でも、結局は解析結果テーブル１１５に登録された単純型要素ではないこともあり得る。
【００５２】
しかし、単純型要素可能性判定部１１６の処理に拠らずに、通常用いられる要素の解析手段、すなわち、開始タグ、コンテンツ、終了タグの入れ子関係のチェック及び要素を構成する全ての文字に対するＸＭＬ構成文字チェックを行うことにより、単純型要素か否かを判定することも可能である。通常用いられる要素の解析手段は、単純型要素可能性判定部１１６の単純な処理と比較して処理コストが高いという問題がある。このため、単純型要素可能性判定部１１６の処理を用いて読み込み中の要素が単純型であるか否かの可能性を判定するほうが、前述の従来技術による判定よりも効果的である。
【００５３】
前述したように、頻出文字列に対する解析結果を解析結果テーブル１１５に格納して利用することにより、頻出文字列に関する要素の字句解析処理、要素文字チェック処理、要素オブジェクト生成処理をスキップすることができる。これらの処理は、多くの時間を消費する処理であるので、本発明の実施形態は、より高速な構文解析処理を実現することができる。
【００５４】
図８は解析結果取り出し部１１７の処理動作を説明するフローチャートであり、次に、これについて説明する。この処理は、単純型要素可能性判定部１１６の判定で、処理する要素が解析結果テーブルに登録される単純型要素の可能性があると判定された場合に開始される処理である。
【００５５】
（１）解析結果取り出し部１１７は、処理を開始すると、切り出された文字列をキーとして解析結果テーブル１１５を検索し、解析結果テーブル１１５から解析結果を読み出す（ステップ８０１）。
【００５６】
（２）そして、解析結果テーブル１１５から解析結果を読み出すことができたか否かを判定し、解析結果を読み出すことができなかった場合、処理を開始タグ解析部へ移して、切り出された文字列の構文解析を行わせる（ステップ８０２）。
【００５７】
（３）ステップ８０２の判定で、解析結果を読み出すことができた場合、解析結果テーブル１１５の該当する文字列の出現回数カラム４０４の値に１を加えて更新すると共に、イベント通知部１１３に要素オブジェクトカラム４０３の値を渡す（ステップ８０３）。
【００５８】
図９は解析結果登録部１１８の処理動作を説明するフローチャートであり、次に、これについて説明する。この処理は、開始タグ解析部１０７、コンテンツ解析部１０８、終了タグ解析部１０９での処理により、切り出された文字列の構文解析が行われたときに起動される処理である。
【００５９】
（１）解析結果登録部１１８は、処理を開始すると、まず、解析された文字列である要素が単純型要素の可能性があるか否かを判定し、要素が単純型要素の可能性がなかった場合、処理をイベント通知部１１３へ移行させる（ステップ９０１）。
【００６０】
（２）ステップ９０１の判定で、要素が単純型要素の可能性があった場合、その要素の解析結果からその要素が単純型要素であったか否かを判定し、要素が単純型要素でなかった場合、処理をイベント通知部１１３へ移行させる（ステップ９０２）。
【００６１】
（３）ステップ９０２の判定で、要素が単純型要素であった場合、該当する要素の解析結果を格納すると解析結果テーブル１１５のサイズが予め定めた一定のサイズを超えるか否かを判定する（ステップ９０３）。
【００６２】
（４）ステップ９０３の判定で、解析結果テーブル１１５のサイズが予め定めた一定のサイズを超える場合、解析結果テーブル１１５内の最も出現頻度の低いエントリを削除する（ステップ９０４）。
【００６３】
（５）ステップ９０４の処理の後、あるいは、ステップ９０３の判定で、解析結果テーブル１１５のサイズが予め定めた一定のサイズを超えなかった場合、解析結果テーブル１１５に受け取った解析結果を格納する。すなわち、キーとなる文字列のカラム４０２に単純型要素を表す解析済み文字列を、要素オブジェクトカラム４０３に単純型要素のオブジェクトを、出現回数カラム４０４に出現回数の初期値１を格納する。その後、処理をイベント通知部１１３へ移行させる（ステップ９０５）。
【００６４】
前述した本発明の実施形態での各処理は、プログラムにより構成し、本発明が備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明の一実施形態によるＸＭＬ文書の構文解析装置の構成と、その入出力データとを説明するブロック図である。
【図２】ＸＭＬ文書における「要素」について説明する図である。
【図３】業務システムの入力ＸＭＬ文書の例としてのＳＯＡＰメッセージを示す図である。
【図４】解析結果テーブルの詳細な構成例を示す図である。
【図５】ＸＭＬパースプログラム初期化部の処理動作を説明するフローチャートである。
【図６】単純型要素可能性判定部の処理動作を説明するフローチャートである。
【図７】図６に示すフローのステップ６０２での読み込んだ文字列が単純型要素の可能性があるか否か判定する処理の動作を説明するフローチャートである。
【図８】解析結果取り出し部の処理動作を説明するフローチャートである。
【図９】解析結果登録部の処理動作を説明するフローチャートである。
【符号の説明】
【００６６】
１０１  計算機システム
１０２  主記憶装置
１０３  ＸＭＬパースプログラム
１０４  プロセッサ
１０５  補助記憶装置
１０６  ＸＭＬパースプログラム初期化部
１０７  開始タグ解析部
１０８  コンテンツ解析部
１０９  終了タグ解析部
１１０  要素字句解析部
１１１  要素文字チェック部
１１２  要素オブジェクト生成部
１１３  イベント通知部
１１４  アプリケーションプログラム
１１５  解析結果テーブル
１１６  単純型要素可能性判定部
１１７  解析結果取り出し部
１１８  解析結果登録部
【図１】
2008123037.tif 000003
【図２】
2008123037.tif 000004
【図３】
2008123037.tif 000005
【図４】
2008123037.tif 000006
【図５】
2008123037.tif 000007
【図６】
2008123037.tif 000008
【図７】
2008123037.tif 000009
【図８】
2008123037.tif 000010
【図９】
2008123037.tif 000011