(57)【要約】【課題】第１の木構造を構成するノードと第２の木構造を構成するノードとの間の対応付けがより効率的にできる構造化文書処理システムを提供すること。【解決手段】グループ抽出部１２１は変換前及び変換後の木構造からそれぞれグループを抽出する。ノード間距離計算部１１２及びグループ間距離計算部１２２はそれぞれ変換前木構造のノードと変換後木構造のノードとの間の距離及び変換前木構造のグループと変換後木構造のグループとの間の距離を求める。マッピング生成部１３は、まず、グループ間距離に基づいて変換前木構造のグループと変換後木構造のグループとの間のマッピングを行い、次に、マッピングされたグループ・ペア内で、ノード間距離に基づいて変換前木構造のノードと変換後木構造のノードとの間のマッピングを行う。マッピング情報管理部１４は生成されたノード間マッピングは表示画面に表示する。【選択図】    図１
2004348341.tif 000002
【特許請求の範囲】
【請求項１】
第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理手段と、
前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出手段と、
前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理手段と、
前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理手段と、
前記第１の対応処理手段により対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理手段とを備えたことを特徴とする構造化文書処理システム。
【請求項２】
前記第２の対応処理手段により行われた前記対応付けの結果を示す情報を表示画面に表示させる表示手段を更に備えたことを特徴とする請求項１に記載の構造化文書処理システム。
【請求項３】
前記表示画面に表示された前記対応付けの結果を示す情報を修正するための修正情報を入力するための手段と、
入力された前記修正情報に基づいて前記ノード間類似度及び前記グループ間類似度を更新する手段を更に備え、
前記第１及び第２の対応処理手段はそれぞれ更新された前記グループ間類似度又は前記ノード間類似度に基づいて前記対応付けをあらためて行い、前記表示手段は前記第２の対応処理手段によりあらためて行われた前記対応付けの結果を示す情報を前記表示画面に表示させることを特徴とする請求項２に記載の構造化文書処理システム。
【請求項４】
前記表示手段は、前記第１の木構造を構成するノード及びノード間のリンクを示す画像並びに前記第２の木構造を構成するノード及びノード間のリンクを示す画像を表示するとともに、前記第２の対応処理手段により対応付けられたノード対についてそれらが対応付けられている旨を示す画像を表示することを特徴とする請求項３に記載の構造化文書処理システム。
【請求項５】
前記修正は、新たに前記第２の木構造に属するノードに対する前記第１の木構造に属するノードの対応付けを追加する第１の修正、前記第２の対応処理手段により対応付けられた特定のノード対のうちの一方のノードを該ノードの属する前記木構造に属する他のノードに変更する第２の修正、又は前記第２の対応処理手段により対応付けられた特定のノード対について対応付けの解除を行う第３の修正を含み、
前記第１の修正に関する修正情報の入力は、対応付けの追加を行うべき前記ノード対に係る各ノードを特定可能な情報及び追加すべき旨の前記表示画面での入力により行われ、
前記第２の修正に関する修正情報の入力は、対応付けの解除を行うべき前記ノード対のうち変更する前のノード及び変更した後のノードを特定可能な情報及び変更すべき旨の前記表示画面での入力により行われ、
前記第３の修正に関する修正情報の入力は、対応付けの解除を行うべき前記ノード対を特定可能な情報及び解除すべき旨の前記表示画面での入力により行われることを特徴とする請求項４に記載の構造化文書処理システム。
【請求項６】
前記第１又は第２の修正に関する修正情報が入力された場合には、前記第１の修正に係るノード対又は前記第２の修正に係る変更後のノード対について、該ノード対のノード間類似度を、該ノード対に係るノード同士を無条件に対応付けるべき旨を示す値に設定するとともに、該ノード対に係る各ノードの属するグループからなるグループ対について、該グループ対のグループ間類似度を、該グループ同士を無条件に対応付けるべき旨を示す値に設定し、
前記第１の対応処理手段は、前記グループ間類似度が前記旨を示す値に設定されているグループ対については、それらグループの対応付けを無条件に行い、前記第２の対応処理手段は、前記ノード間類似度が前記旨を示す値に設定されているノード対については、それらノードの対応付けを無条件に行うことを特徴とする請求項５に記載の構造化文書処理システム。
【請求項７】
前記第２又は第３の修正に関する修正情報が入力された場合には、前記第２の修正に係る変更前のノード対又は前記第３の修正に係るノード対のノード間類似度を再度求めるとともに、該ノード対に係る各ノードの属するグループからなるグループ対のグループ間類似度については、該グループ対に係る他のノード対のために該グループ対の前記グループ間類似度が、該グループ同士を無条件に対応付けるべき旨を示す値に設定されているときは、その値を維持し、そうでないときは、該グループ対の該ノード間類似度を再度求めることを特徴とする請求項６に記載の構造化文書処理システム。
【請求項８】
前記第２の対応処理手段により行われた前記対応付けの結果に基づいて、前記第１の木構造を前記第２の木構造へ変換するための変換ルールを示す情報を生成する生成手段を更に備えたことを特徴とする請求項１または３に記載の構造化文書処理装置。
【請求項９】
前記第１の類似度処理手段は、一方のノードの持つ名前を表す文字列及び他方のノードの持つ名前を表す文字列に基づいて当該ノード対の前記ノード間類似度を求めるものであり、
前記第２の類似度処理手段は、一方のグループを構成するノードと他方のグループを構成するノードとから形成されるノード対の前記ノード間類似度の総和に基づいて当該グループ対の前記グループ間類似度を求めるものであることを特徴とする請求項１に記載の構造化文書処理装置。
【請求項１０】
前記第１の対応処理手段は、前記グループ間類似度をより大きくするグループ同士を対応付けるものであり、
前記第２の対応処理手段は、前記ノード間類似度をより大きくするノード同士を対応付けるものであることを特徴とする請求項１に記載の構造化文書処理装置。
【請求項１１】
前記抽出手段は、前記木構造を構成するノードから、指定された条件を満たすノードを検出し、検出されたノード及びそのノードの全ての子孫ノードから他のグループに属するノードを除外したものを一つのグループとして抽出することを特徴とする請求項１に記載の構造化文書処理装置。
【請求項１２】
第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理ステップと、
前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出ステップと、
前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理ステップと、
前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理ステップと、
前記第１の対応処理ステップにより対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理ステップとを有することを特徴とする構造化文書処理方法。
【請求項１３】
構造化文書処理装置としてコンピュータを機能させるためのプログラムであって、
第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理機能と、
前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出機能と、
前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理機能と、
前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理機能と、
前記第１の対応処理機能により対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理機能とをコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、構造化文書の持つ木構造にかかわる処理を行うための構造化文書処理システム、構造化文書処理方法及びプログラムに関する。
【０００２】
【従来の技術】
ＸＭＬ文書やＳＧＭＬ文書に代表される構造化文書は、ＤＴＤなどのスキーマ言語を用いて独自の構造化文書のフォーマットが定義できる。そのため構造化文書でデータを表現した場合、同じ内容を示しているＸＭＬ文書にも関わらずフォーマットが異なってくる（例えば、同じ「住所録」のデータを表していても、タグの名前が異る場合があるなど）。
【０００３】
こうしたフォーマットの違いがあると、データの相互運用性が低くなる。フォーマットの違いを吸収するためには構造化文書間でフォーマット変換が行われる。その際、どのように変換を行うかを記述したものが変換ルールである。変換ルールを直接人手で記述するのは煩雑であるため、記述を支援するツールを利用するのが一般的である。
【０００４】
変換ルール記述支援ツールでは、変換を直感的に理解しやすいように、ＧＵＩ上で変換前、変換後の構造化文書の木構造を示しており、ユーザは、変換前、変換後の木構造のノード間に「マッピング」を作成することで変換ルールを生成する（例えば、特許文献１参照）。「マッピング」とは、変換前のノードがフォーマット変換により変換後のどのノードに変換されるかを示すものである。
【０００５】
ユーザは記述支援ツール上でマッピングを作成するが、全てのマッピングを人手で作成するのは煩雑である。そのため、記述支援ツールの中にはマッピングの自動生成機能を有するものがある（例えば、非特許文献１参照）。マッピングの自動生成機能とは、ノード間の距離（近似度）を評価関数にて計算し、距離が近いと判定したノード同士を結ぶマッピングを自動生成するものである。しかし、マッピング自動生成機能は、評価関数によるノード間の距離を算出しているだけなので、完全にユーザの意図するマッピングを生成することは不可能である。そのため、自動生成されたマッピングに対してユーザによるマッピングの修正が必要となる。
【０００６】
【特許文献１】
特開２００３−５８５３０
【０００７】
【非特許文献１】
「流通分野におけるＸＭＬ変換方式の研究」，鳥海幸輝，春日史朗，坂田哲夫，小林伸幸，芳西祟、ＮＴＴサイバースペース研究所、ＤＥＷＳ２００２
【０００８】
【発明が解決しようとする課題】
上記のように自動生成されたマッピングにはユーザによる修正が必要であるが、従来は、ユーザが自分の欲しいものと異なるマッピングに対して、一つ一つ修正を行っていた。
【０００９】
しかしながら、これでは修正が必要なマッピングの全てに対して人手による修正の操作が必要となってしまう。修正が必要なマッピングが増えると、修正の操作を行う量が膨大になり、非常に煩雑な作業となり、人手によるミスが発生しやすくなる。特に、ノード間の距離の算出の精度があまり高くない場合は、ユーザが欲しいものに反するマッピングが大量に自動生成されるため、修正の操作を行う回数が非常に多くなる。
【００１０】
そこで、自動生成されたマッピングに対して、少ない修正操作で効率の良い修正を可能とする方法が望まれている。
【００１１】
本発明は、上記事情を考慮してなされたもので、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間の対応付けをより効率良くできるようにする構造化文書処理システム、構造化文書処理方法及びプログラムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明に係る構造化文書処理システムは、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理手段と、前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出手段と、前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理手段と、前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理手段と、前記第１の対応処理手段により対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理手段とを備えたことを特徴とする。
【００１３】
また、本発明に係る構造化文書処理方法は、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理ステップと、前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出ステップと、前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理ステップと、前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理ステップと、前記第１の対応処理ステップにより対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理ステップとを有することを特徴とする。
【００１４】
また、本発明は、構造化文書処理装置としてコンピュータを機能させるためのプログラムであって、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間のノード間類似度をそれぞれ求める第１の類似度処理機能と、前記第１の木構造からその一部分を構成するノードの第１のグループを抽出するとともに、前記第２の木構造からその一部分を構成するノードの第２のグループを抽出する抽出機能と、前記ノード間類似度に基づいて、前記第１のグループと、前記第２のグループとの間のグループ間類似度を求める第２の類似度処理機能と、前記グループ間類似度に基づいて、前記第１のグループと前記第２のグループとの対応付けを行う第１の対応処理機能と、前記第１の対応処理機能により対応付けられた前記グループ対について、前記ノード間類似度に基づき、前記第２のグループを構成する各ノードに対する、前記第１のグループを構成するノードの対応付けを行う第２の対応処理機能とをコンピュータに実現させるためのプログラムである。
【００１５】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【００１６】
本発明では、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間の対応関係を生成してユーザに提示することができ、かつ、第１の木構造と第２の木構造が持つ局所的類似性を利用することで、自動生成した対応関係に対するユーザの修正を効率的に行うことを可能がになる。これにより、ユーザはより少いインタラクションで所望の変換ルールを生成することが可能である。
【００１７】
本発明によれば、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間の対応付けがより効率良くできるようになる。
【００１８】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１９】
本実施形態では、構造化文書の具体例としてＸＭＬ文書を用いて説明する。ＸＭＬ文書とは、ＷＷＷに関する技術の標準化団体Ｗ３Ｃにて規定された文書形式で広く利用されている（例えば、Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）  １．０  （Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ）Ｗ３Ｃ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ６  Ｏｃｔｏｂｅｒ  ２０００参照）。最初に、構造化文書の一例としてのＸＭＬ文書について説明する。
【００２０】
次に例示するＸＭＬ文書（＜Ａｄｄｒｅｓｓ＞から＜／Ａｄｄｒｅｓｓ＞まで）は、住所録データを表現した例である。
【００２１】
2004348341.tif 000003
このデータは、ある男性に関する氏名（△△太郎）、電話番号（０４４−０００−００００）及び勤務先会社名（株式会社□□）と、ある女性に関する氏名（○○花子）及び電話番号（０４４−０００−１１１１）を示した住所録データの例である。このように、ＸＭＬ文書では、テキストデータに対して、記号＜と、記号＞とで囲まれた文字列でマークアップすることで、そのテキストデータが何のデータを指しているかを示しており、マークアップされたテキストデータで階層構造をなすことで、木構造を表現している。
【００２２】
このようにＸＭＬ文書に代表される構造化文書は、その構造が木状になっている。木構造のデータは、ノードの相対関係を示すためにしばしば「親」「子」「子孫」「祖先」といった表現を用いる。
【００２３】
「親」とは、現在注目しているノードの一つ上位のノードのことを指す。上記のＸＭＬ文書例では、Ｎａｍｅノードの親ノードは、Ｐｅｒｓｏｎノードである。
【００２４】
「子」とは、現在注目しているノードの一つ下位のノードのことを指す。上記のＸＭＬ文書例では、Ａｄｄｒｅｓｓノードの子ノードと、Ｐｅｒｓｏｎノードである。
【００２５】
「祖先」ノードとは、注目しているノードよりも上位にあるノード全てのことを指し、「子孫」ノードとは注目しているノードよりも下位にあるノード全てのことを指す。
【００２６】
なお、「子」を持たないノード（末端のノード）を「葉ノード（若しくはリーフノード）」と呼ぶこともある。また、「親」を持たないノード（頂天のノード）を「根ノード（若しくはルートノード）」と呼ぶこともある。
【００２７】
次に、ＸＭＬ文書のフォーマット指定について説明する。
【００２８】
ＸＭＬ文書には、フォーマットを規定するためのスキーマ言語が存在する。これは、ＸＭＬ文書がどのようなフォーマットを順守しているかを示している。一般に利用されているＸＭＬ文書のスキーマ言語はＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）である。
【００２９】
ＤＴＤは、ＸＭＬ文書中にどのような順序で親子間のノードが成立しているかを示す。例えば、上記のＸＭＬ文書例では、Ａｄｄｒｅｓｓノードの子としてＰｅｒｓｏｎノードが複数個あり、Ｐｅｒｓｏｎノードの子としてＭａｌｅノード又はＦｅｍａｌｅノードが一回出現し、ＮａｍｅノードとＴｅｌノードが一回ずつ出現し、ＯｆｆｉｃｅＮａｍｅノードは高々一回出現する。また、ＮａｍｅノードとＴｅｌノードとＯｆｆｉｃｅＮａｍｅノードは、テキストデータを持つ。
【００３０】
こうしたフォーマット規定をＤＴＤで表現すると次のようになる。
【００３１】
＜！ＥＬＥＭＥＮＴ  Ａｄｄｅｒｓｓ  （Ｐｅｒｓｏｎ）＊＞
＜！ＥＬＥＭＥＮＴ  Ｐｅｒｓｏｎ  （（Ｍａｌｅ｜Ｆｅｍａｌｅ），  Ｎａｍｅ，  Ｔｅｌ，  Ｏｆｆｉｃｅ？）＞
＜！ＥＬＥＭＥＮＴ  Ｍａｌｅ  （ＥＭＰＴＹ）＞
＜！ＥＬＥＭＥＮＴ  Ｆｅｍａｌｅ  （ＥＭＰＴＹ）＞
＜！ＥＬＥＭＥＮＴ  Ｎａｍｅ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｔｅｌ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｏｆｆｉｃｅ  （＃ＰＣＤＡＴＡ）＞
“＜！ＥＬＥＭＥＮＴ”で始まる行には、第一フィールドに親ノードの名前を記述し、第二フィールドにその子ノードとして出現するノードの名前を記述する。子ノードが記号｜で区切られているものは、そのうちの一つが出現することを意味する。これを排他的宣言と呼ぶ。また、記号，で区切られているものは、子ノードがその順番で出現することを意味する。また、記号？，＊，＋が付いているものはそれらが出現する回数に制約条件があることを意味する。記号？は高々一回、記号＊は０回以上、記号＋は１回以上現れることを意味する。＃ＰＣＤＡＴＡとは、そのノードの値としてテキストデータが入ることを意味し、ＥＭＰＴＹとは、そのノードの値としては何も入らないことを意味する。
【００３２】
以下、本発明の一実施形態に係る文書処理システムについて詳しく説明する。
【００３３】
図１に、本実施形態の文書処理システムの構成例を示す。
【００３４】
図１に示されるように、本文書処理システム１は、変換前木構造入力部（図示せず）、変換後木構造入力部（図示せず）、ノード間距離管理部１１、グループ間距離管理部１２、マッピング生成部１３、マッピング情報管理部１４、変換ルール生成部１５、修正情報入力部１６、変換ルール出力部（図示せず）を備えている。
【００３５】
変換前木構造入力部は、変換前の木構造の情報を入力する。変換後木構造入力部は、変換後の木構造の情報を入力する。なお、変換前木構造入力部や変換後木構造入力部が木構造を入力する手段としては、例えば、ＧＵＩ等からユーザが手入力する手段、記録媒体から読み込み手段、通信媒体を介して読み込む手段など、種々のものが採用可能である。
【００３６】
ノード間距離管理部１１は、ノード抽出部１１１とノード間距離計算部１１２とノード間距離記憶部１１３を含む。
【００３７】
ノード抽出部１１１は、入力された変換前の木構造及び変換後の木構造についてそれぞれ当該木構造を構成するノードを抽出する。
【００３８】
ノード間距離計算部１１２は、変換前の木構造を構成するノードと変換後の木構造を構成するノードとの全ての組み合わせに対して、所定の評価関数を用いて、当該組合せに係る２つのノード間の類似度（本実施形態では、ノード間の距離とする）を計算する。なお、距離がより小さいものほどが、より類似している（より類似度が大きい）ものとする。
【００３９】
各組合せについて求められたノード間距離は、当該組合せに係る２つのノードを識別する識別情報に対応付けて、ノード間距離記憶部１１３に格納される。
【００４０】
グループ間距離管理部１２は、グループ抽出部１２１とグループ間距離計算部１２２とグループ間距離記憶部１２３とグループ指定情報入力部（図示せず）を含む。
【００４１】
グループ抽出部１２１は、必要時に又は事前にグループ指定情報入力部から入力されたグループ指定情報に基づき、入力された変換前の木構造及び変換後の木構造についてそれぞれ当該木構造のノードからグループ（部分木構造）を構成するノード群を抽出して、グループを抽出する。
【００４２】
なお、グループ抽出方法を予め決定しておいて、グループ指定情報入力部を省いた構成も可能である。
【００４３】
グループ間距離計算部１２２は、変換前の木構造から抽出されたグループと変換後の木構造から抽出されたグループとの全ての組み合わせに対して、所定の評価関数を用いて、当該組合せに係る２つのグループ間の類似度（本実施形態では、ノード間の距離とする）を計算する。
【００４４】
各組合せについて求められたグループ間距離は、当該組合せに係る２つのグループを識別する識別情報に対応付けて、グループ間距離記憶部１２３に格納される。
【００４５】
マッピング生成部１３は、まず、グループ間距離記憶部１２３に格納されているグループ間距離を参照し、最も近い（最も小さい）グループ間距離を持つグループ同士でグループのペア（変換前の木構造に含まれる一つのグループと、変換後の木構造に含まれる一つのグループとからなるペア）を作成する。次に、各グループ・ペアについて、変換前の木構造に係るグループを構成するノードと、変換後の木構造に係るグループを構成するノードとに対して、ノード間距離記憶部１１３に格納されているノード間距離を参照し、最も近いノード間距離を持つノード同士を対応付け、この対応を示す情報をマッピングの情報として生成する。
【００４６】
マッピング情報管理部１４は、マッピング生成部１３により生成されたマッピング情報を保持し、所定の表示装置（図示せず）の表示画面に表示するためのＧＵＩ（グラフィカルユーザインタフェイス）部である。
【００４７】
ユーザは、同じくＧＵＩ（グラフィカルユーザインタフェイス）部である修正情報入力部１６を通じて修正情報を入力し、マッピング生成部１３にて生成されたマッピングの情報を修正する。このとき、ユーザが修正情報入力部１６を通じて修正情報を入力すると、その修正情報に応じて、マッピング情報管理部１４が管理しているマッピング情報が修正されるとともに、ノード間距離記憶部１１３に格納されているノード間距離およびグループ間距離記憶部１２３に格納されているグループ間距離がそれぞれ更新される。
【００４８】
変換ルール生成部１５は、マッピング情報管理部１４が保持しているマッピング情報をもとに、変換前の木構造を変換後の木構造へと変換するための変換ルールを生成する。
【００４９】
変換ルール出力部は、生成された変換ルールを出力する。なお、変換ルール出力部が変換ルールを出力する手段としては、例えば、ＧＵＩ等へ表示する手段、記録媒体へ保存する手段、通信媒体を介して送出する手段など、種々のものが採用可能である。
【００５０】
以下、本実施形態についてより詳しく説明する。
【００５１】
まず、変換前の木構造の入力データと変換後の木構造の入力データについて説明する。
【００５２】
木構造の入力方法としては、木構造を入力する方法と、ＸＭＬ文書もしくはフォーマットを規定しているＤＴＤを入力し、それらにより表現されている木構造を生成する方法とがあり得る。後者の場合について説明する。
【００５３】
まず、ＸＭＬ文書が入力された場合について説明する。
【００５４】
ＸＭＬ文書が入力された場合は、変換前木構造入力部や変換後木構造入力部は、全てのテキストノードを削除し、同じ深さにあるノードのうち同じ名前のノードが複数存在する場合には、それらを一つに集約する。
【００５５】
例えば、次のＸＭＬ文書（＜Ａｄｄｒｅｓｓ＞から＜／Ａｄｄｒｅｓｓ＞まで）が入力されたとする。
【００５６】
2004348341.tif 000004
この場合、この文書に対して、全てのテキスノードを削除する。この結果を次に示す。
【００５７】
2004348341.tif 000005
次に、同じ深さにあるノードのうち同じ名前のノードが複数存在する“Ｐｅｒｓｏｎ”，“Ｎａｍｅ”，“Ｔｅｌ”を一つに集約する。この結果を次に示す。
【００５８】
2004348341.tif 000006
このようにして作成される木構造が、ＸＭＬ文書から作成される木構造である。
【００５９】
次に、ＤＴＤが入力された場合について説明する。
【００６０】
ＤＴＤが入力された場合は、ＤＴＤが宣言している親子関係を展開する。展開する際、子ノードの出現回数が複数以上宣言されている場合は、一回だけ展開する。また、子ノードが排他的宣言されている場合は、生成する木構造のノード中の排他的宣言されているノードに対して、一組の排他的宣言をされているノード群を識別するためのＩＤと、一組の排他的宣言をされているノード群の中の一つの要素を識別するためのＩＤをノードの属性として付加する。
【００６１】
具体例として、次のＤＴＤを用いる。
【００６２】
＜！ＥＬＥＭＥＮＴ  Ａｄｄｅｒｓｓ  （Ｐｅｒｓｏｎ）＊＞
＜！ＥＬＥＭＥＮＴ  Ｐｅｒｓｏｎ  （（Ｍａｌｅ｜Ｆｅｍａｌｅ），  Ｎａｍｅ，  Ｔｅｌ，  （ｃｅｌｌｕｌａｒ｜ＰＨＳ））＞
＜！ＥＬＥＭＥＮＴ  Ｍａｌｅ  （ＥＭＰＴＹ）＞
＜！ＥＬＥＭＥＮＴ  Ｆｅｍａｌｅ  （ＥＭＰＴＹ）＞
＜！ＥＬＥＭＥＮＴ  Ｎａｍｅ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｔｅｌ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  ｃｅｌｌｕｌａｒ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  ＰＨＳ  （＃ＰＣＤＡＴＡ）＞
この場合、この入力に対して親子関係を展開する。すなわち、まず、ＤＴＤの中の全親子宣言の中で子として宣言されていないノードを検出する。子として宣言されていないノードが一つの場合は、それを根として木構造を展開する。子として宣言されていないノードが複数ある場合は、例えば、ユーザにどれを根として展開するかを問い合わせる。
【００６３】
この例では、Ａｄｒｅｓｓノードのみが子として宣言されていない。そのため、Ａｄｄｒｅｓｓノードを根として展開する。そして、Ａｄｒｅｓｓノードの子ノードがＰｅｒｓｏｎ，Ｐｅｒｓｏｎノードの子ノードがＭａｌｅもしくはＦｅｍａｌｅ、Ｎａｍｅ、Ｔｅｌ、ＣｅｌｌｕｌａｒもしくはＰＨＳなので、その順番に展開する。ＭａｌｅノードとＦｅｍａｌｅノードは一組の排他的ノードとして宣言されているので、ｃｈｏｉｃｅ＿ｉｄ＝“１”属性を付加し、Ｍａｌｅノード、Ｆｅｍａｌｅノードがそれぞれ排他的宣言されている組の一つの要素なので、Ｍａｌｅノードにｃｈｏｉｃｅ＿ｉｔｅｍ＿ｉｄ＝“１”を、Ｆｅｍａｌｅノードにｃｈｏｉｃｅ＿ｉｔｅｍ＿ｉｄ＝“２”を付加する。Ｃｅｌｌｕｌａｒノード、ＰＨＳノードについても同様である。
【００６４】
展開した結果を次に示す。
【００６５】
2004348341.tif 000007
次に、ノード間距離管理部１１について説明する。
【００６６】
ノード間距離管理部１１は、ノード間距離を計算し、保持する部分である。ノード間距離管理部１１は、変換前木構造、変換後木構造を読み込み、ノード抽出部１１１にて全てのノードを取り出す。次に、取り出したノードに対して、変換前のノードと変換後のノードのペアを全ての組み合わせ通り生成する。生成したノード・ペアに対して、所定の評価関数を用いて、ノード間距離を算出する。全てのノード・ペアについてノード間距離を求め、それらをノード間距離記憶部１１３に保存する。
【００６７】
例えば、変換前木構造が図２（ａ）のようであり、変換後木構造が図２（ｂ）のようであるとすると、図３に示すような１６通りのノード・ペアの全てについてノード間距離を求め、それらを図４に例示するようにノード間距離記憶部１１３に保存する。
【００６８】
ノード間距離を求める方法については、種々の方法がある。例えば、その一つに、ノードの名前の文字列の間のエディットディスタンスにより求める方法がある。文字列のエディットディスタンスとは、一方の文字列に対して、文字の挿入、削除、変更という操作を最小何回行うことによってもう一方の文字列になるかという回数より二つの文字列間の距離を計算する手法である。以下、エディットディスタンスを求める方法について説明する。
【００６９】
エディットディスタンスを求めるには、まず、変換前文字列の長さプラス１の列数、変換後文字列の長さプラス１の行数の行列を作成する。そして、この行列に対して一行目の各要素に列の順番と同じ数を入れる。次に、行列の一列目の各要素に行の順番の数と同じ値を入れる。
【００７０】
次に、残り全ての行列の要素に対して、
（ｉ）「一つ前の行の要素の値プラス１」と、
（ｉｉ）「一つ前の列の要素の値プラス１」と、
（ｉｉｉ）「要素に対して、その要素の列の順番と同じ文字数目の変換前の文字列の文字と、その要素の行の順番と同じ文字数目の変換後の文字列の文字との比較を行い、等しい場合は、一つ前の列の一つ前の行の要素の値、等しくない場合は、一つ前の行の一つ前の列の要素の値プラス１」とを求め、
それらのうち最も小さい値を入れる。
【００７１】
このようにして作成された行列の最後の列の最後の行の要素の値が、求めるべきエディットディスタンスになる。
【００７２】
以下、“Ｍｏｂｉｌｅ”と“Ｍｉｓｃ”の文字列のエディットディスタンスを求める場合を例にとって説明する。
【００７３】
図５（ａ）に示すように、“Ｍｏｂｉｌｅ”の文字列の長さプラス１の列数と“Ｍｉｓｃ”の文字列の長さプラス１の行数を持つ行列、すなわち５行７列の行列を作成する。次に、その行列の１行目の各要素に、列の順番と同じ値を入れる。ただし、このときの順番のカウントは０から始める。同様に、行列の１列目の各要素に行の順番と同じ値を入れる。ここまでの操作の結果が図５（ａ）に示されている。
【００７４】
次に、残りの全て要素に対して（計算可能になったものから適宜の順番で良い）、次の三つの項目の値を計算し、そのうちで最も小さい値をその要素の値とする。
【００７５】
（ｉ）「一つ前の行の要素の値プラス１」
（ｉｉ）「一つ前の列の要素の値プラス１」
（ｉｉｉ）「要素に対して、その要素の列の順番と同じ文字数目の変換前の文字列の文字と、その要素の行の順番と同じ文字数目の変換後の文字列の文字との比較を行い、等しい場合は、一つ前の列の一つ前の行の要素の値、等しくない場合は、一つ前の行の一つ前の列の要素の値プラス１」
例えば、図５（ａ）１行１列の要素に対しては、
（ｉ）「一つ前の行の要素（＝０行１列）の値（＝１）プラス１」の値は『２』
（ｉｉ）「一つ前の列の要素（＝１行０列）の値（＝１）プラス１」の値は『２』
（ｉｉｉ）「要素（＝１行１列）に対して、その要素の列の順番と同じ文字数目の変換前の文字列の文字（＝Ｍ）と、その要素の行の順番と同じ文字数目の変換後の文字列の文字（＝Ｍ）との比較を行い、等しい場合は、一つ前の列の一つ前の行の要素（＝０行０列）の値（＝０）、等しくない場合は、一つ前の行の一つ前の列の要素の値プラス１」は『０』（一行一列の要素に対応する変換前文字列の文字、および変換後文字列の文字がともに“Ｍ”だから）、
となる。
【００７６】
（ｉ）〜（ｉｉｉ）で求められた値のうちで最も小さい値は０であるので、１行１列の値は０になる。この様子を図５（ｂ）に示す。
【００７７】
以下、同様に、他の全ての行列の要素を計算すると図５（ｃ）のようになる。
この行列の最後の行の最後の列（＝７行７列）の値（＝４）がエディットディスタンスを与えるので、“Ｍｏｂｉｌｅ”ノードと“Ｍｉｓｃ”  ノードとのノード間距離は４となる。
【００７８】
次に、グループ間距離管理部１２について説明する。
【００７９】
前述したように、グループ間距離管理部１２は、グループ抽出部１２１、グループ間距離計算部１２２、グループ間距離記憶部１２３を含む。
【００８０】
グループ抽出部１２１は、予め定められたグループ指定情報あるいはグループ指定情報入力部から入力されたグループ指定情報に基づいて、グループの抽出を行う。
【００８１】
グループの指定としては種々の方法が考えられるが、次に具体例を４つ示す。
【００８２】
（１）排他的ノードのマークアップされているノードのうち、自分の子孫ノードに排他的ノードとマークアップされているノードを含まないノードからなるサブツリー、およびそのサブツリーに含まれないノード群をグループとして抽出する。図６に、この場合のグループ抽出例を示す。なお、図中、１つの閉じた線で囲まれた範囲が１つのグループに相当する（後で示す図７〜図９についても同様である）。
【００８３】
（２）グループ指定情報入力部１２１１からグループ指定情報として、パラメータｎを入力し、リーフノードから高さｎのノード以下のサブツリーをグループとして抽出する。ただし、高さｎのノードの祖先に他の高さｎのノードがある場合は、より祖先のノードを優先する。図７に、この場合のグループ抽出例を示す。図７は、パラメータが２のときの例である。
【００８４】
（３）グループ指定情報入力部１２１１からグループ指定情報としてパラメータｎを入力し、根ノードから深さｎのノード以下のサブツリーをグループとして抽出する。図８に、この場合のグループ抽出例を示す。図８は、パラメータが２のときの例である。
【００８５】
（４）グループ指定情報入力部１２１１からグループ指定情報としてノードを特定する情報を入力し、指定されたノード以下のサブツリーと、そのいずれにも属さないノード群からなるグループを抽出する。図９に、この場合のグループ抽出例を示す。図９は、ノードを特定する情報が、“／Ａｄｄｒ／Ｏｆｆｉｃｅ，／Ａｄｄｒ／Ｈｏｍｅ／Ａｄｄｒｅｓｓ”の場合の例である。ただし、ここで用いている表記法は、ＸＭＬのパス表現と呼ばれるもので、親子のノード関係を、「親ノード／子ノード」として表現するものである。
【００８６】
なお、上記で示した方法以外の方法も可能である。また、複数の方法を備えておき、例えばグループ指定情報入力部からいずれの方法を用いるかを指定する情報を入力するようにしてもよい。
【００８７】
グループ間距離計算部１２２は、グループ抽出部１２１が抽出したグループに対して、変換前のグループと変換後のグループのペアを全ての組み合わせ通り生成し、グループ間距離を算出する。
【００８８】
例えば、変換前グループが図１０（ａ）のようであり、変換後グループが図１０（ｂ）のようであるとすると、図１１に示すような１２通りのノード・ペアの全てについてノード間距離を求め、それらを図１２に例示するようにグループ間距離記憶部１２３に保存する。
【００８９】
グループ間距離を求める方法については、種々の方法がある。以下、その一例について説明する。
【００９０】
（１）対象となるグループ・ペアについて、変換前グループを構成するノードと変換後グループを構成するノードとの全ての組み合わせを求める。
【００９１】
（２）求められたノードの組み合わせに対してノード間距離をノード間距離記憶部１１３から取り出す。
【００９２】
（３）ノード間距離が最小となるノード・ペアを求めていく。
【００９３】
（４）求められたノード・ペアの距離の和を、ノード・ペアの数で割った値を、グループ間距離とする。
【００９４】
なお、（３）においては、ノード・ペアの距離の和が最小となるようなノード・ペアを求めるようにしてもよい。
【００９５】
マッピング生成部１３は、グループ間距離記憶部１２３に保持されているグループ間距離とノード間距離記憶部１１３に保持されているノード間距離とを参照しながらマッピングの情報を作成する。
【００９６】
マッピング情報を作成する方法については、種々の方法がある。以下、その一例について説明する。
【００９７】
（１）グループ間距離記憶部１２３からグループ間距離を取り出す。
【００９８】
（２）グループ間距離が最も小さいグループのペアを求める。このとき、グループ間距離が−１になっているグループ同士は無条件にグループ・ペアとし、それ以外のグループについては、変換後のグループについて一対一になるようにグループのペアを作成する。
【００９９】
作成された各々のグループ・ペアについて、次の（３）〜（５）を行う。
【０１００】
（３）当該グループ・ペアの中から変換前グループを構成するノードと変換後グループを構成するノードとの全ての組み合わせを求める。
【０１０１】
（４）求められたノードの組み合わせに対してノード間距離をノード間距離記憶部１１３から取り出す。
【０１０２】
（５）ノード間距離が最も小さい組合せに係るノード同士を対応付け、これを示すマッピング情報を生成する。このとき、ノード間距離が−１になっているノード同士は無条件に対応付ける（マッピングする）。それ以外のノードについては、変換後のノードについて一対一になるようにノードのマッピングを作成する。
【０１０３】
マッピング情報管理部１４は、マッピング生成部１３が生成したマッピングをＧＵＩにて表現しそれをユーザに提示する。
【０１０４】
図１３に、この場合の表示例を示す。画面左部に変換前木構造のツリービューを示し、画面右部に変換後木構造のツリービューを示す（矩形の画像がノードを示し、矩形間の線の画像がノード間のリンクを示す）。ツリービュー間にある（片方向）矢印の画像がマッピングを示す。変換前木構造における矢印の始点にあたるノードが、変換後木構造では該矢印の終点にあたるノードに対応していることが示されている。
【０１０５】
ユーザは、この矢印を新規作成することで新規のマッピングの作成を指示し、矢印を削除することでマッピングの削除を指示し、矢印の元ノード及び又は着ノードを変更することでマッピングの変更を指示する。この指示（修正情報）に応じて、マッピング情報管理部１４が管理しているマッピング情報が、ノード間距離記憶部１１３に格納されているノード間距離、グループ間距離記憶部１２３に格納されているグループ間距離のうちが更新される。
【０１０６】
変換ルール生成部１５は、マッピング情報管理部１４が管理しているマッピングを反映させた変換ルールを生成する。この変換ルールをＸＳＬＴ（ＸＳＬ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎｓ）で表現する場合には、マッピングを反映させたＸＳＬＴを生成する（ＸＳＬＴは、ＸＭＬ文書の変換を行うための変換ルール記述言語として広く利用されている）。
【０１０７】
変換ルール生成部１５は、マッピング情報管理部１４からマッピング情報を取り出し、マッピング情報が表現している変換前ノードと変換後ノードとの対応関係一つ一つに対応するＸＳＬＴの変換ルールの最小単位である「テンプレートルール」を生成する。
【０１０８】
例えば、変換前Ａｄｄｒｅｓｓノードと変換後Ａｄｄｒノードとがマッピングで結ばれている場合には、次のようなＸＳＬＴのテンプレートルールを生成する。
【０１０９】
2004348341.tif 000008
ただし、上記例の中で、．．．．．で示した箇所は、変換前Ａｄｄｒｅｓｓノードの子ノードに対するマッピングと対応するテンプレートルールを参照する式が入る。例えば、変換前Ａｄｄｒｅｓｓノードの子ノードがＰｅｒｓｏｎノードであるとすると、Ｐｅｒｓｏｎノード用のテンプレートを参照する式＜ｘｓｌ：ａｐｐｌｙ−ｔｅｍｐｌａｔｅｓ  ｓｅｌｅｃｔ＝“Ｐｅｒｓｏｎ”／＞が入る。
【０１１０】
次に、本実施形態の処理の流れについて説明する。
【０１１１】
図１４に、本実施形態の処理手順の一例を示す。
【０１１２】
変換前木構造入力部と変換後木構造入力部から、それぞれ、変換前木構造と変換後木構造を入力する（ステップＳ１）。
【０１１３】
次に、変換前のノード群と変換後のノード群との間の全てのノードの組み合わせに対して、ノード間距離を算出する（ステップＳ２）。各ノード間距離は、例えば、当該２つのノードの名前を比較して名前の文字列のエディットディスタンスを計算することなどにより求めることができる。算出したノード間距離をノード間距離記憶部１１３に格納する（ステップＳ２）。
【０１１４】
次に、グループ抽出部１２１は、グループ指定情報を入力し、どのサブツリーでグループ抽出を行うかを設定し、変換前、変換後の木構造からグループを抽出する（ステップＳ３）。
【０１１５】
次に、抽出を行った変換前、変換後の各々のグループに対する全ての組み合わせについてグループ間距離を計算する（ステップＳ４）。グループ間距離は、例えば、各グループを構成するノードを抽出し、全てのノード間の組み合わせについてノード間距離を計算し、ノード間距離の和が最も小さくなるノードの組み合わせを求め、その組み合わせにおけるノード間距離の平均値を求め、これをグループ間距離とする。算出したグループ間距離をグループ間距離記憶部１２３に格納する（ステップＳ４）。
【０１１６】
このようにして得られたノード間距離とグループ間距離とをもとにマッピング生成部１３がマッピングの情報を生成する。
【０１１７】
まず、マッピング生成部１３は、グループ間距離の最も近いもの同士でグループのペアを形成する（ステップＳ５）。このとき、グループ間距離が−１になってグループ同士については、無条件にグループ・ペアにする。
【０１１８】
次に、マッピング生成部１３は、各グループ・ペア内で最もノード間距離の近いものを求め、それらをマッピングとして自動生成する（ステップＳ６）。このときノード間距離が−１になっているノード間については、無条件にマッピングとする（ステップＳ６）。
【０１１９】
生成されたマッピングの情報をマッピング情報管理部１４にてＧＵＩ表示する（ステップＳ７）。
【０１２０】
ここで、ユーザは、自動生成されたマッピングに対して、それらが全部自分の欲しいマッピングかどうかを判断することができる。ユーザは、その自動生成結果で良い場合には、修正情報入力部１６を通じて、自動生成されたマッピングが全て正しい旨の指示を入力し、修正操作を行う場合には、修正情報入力部１６を通じて、修正操作を行う旨（自動生成されたマッピングが全て正しくはない旨）の指示を入力する。
【０１２１】
修正情報入力部１６は、ステップＳ８において、ユーザから、修正操作を行う旨（自動生成されたマッピングが全て正しくはない旨）の指示が入力された場合には、ユーザからの修正情報を入力する（ステップＳ９）。
【０１２２】
「マッピングの削除」に関する修正情報の入力は、例えば、削除すべきノード対に関するマッピングを示す画像（例えば、矢印）の選択と、マッピングを削除すべき旨の指示、あるいはマッピングを示す画像の移動、又はこれと等価な入力方法により行われる。
【０１２３】
「マッピングの追加」に関する修正情報の入力は、例えば、追加すべき２つのノードの選択と、マッピングを追加すべき旨の指示、あるいはマッピングを示す画像の追加、又はこれと等価な入力方法により行われる。
【０１２４】
「マッピングの変更」に関する修正情報の入力は、例えば、変更すべきノード対のうち変更する前のノードと、それを変更した後のノードの選択と、マッピングを変更すべき旨の指示、又はこれと等価な入力方法により行われる。
【０１２５】
入力された修正情報（ユーザにより行われた修正）が「マッピングの削除」であった場合は（ステップＳ１０）、削除されたマッピングが示していたノード・ペアのノード間距離を再計算する（ステップＳ１１）。そして、削除されたマッピングが結んでいたグループ間を結ぶノード・ペアのマッピングのうち、ノード間距離が−１であるものが他に存在しないなら、グループ間距離を再計算し、存在するなら、該グループ間距離を−１のままにする（ステップＳ１２）。
【０１２６】
入力された修正情報が「マッピングの追加」の場合は（ステップＳ１０）、追加したマッピングが示すノード・ペアのノード間距離を−１に設定する（ステップＳ１３）。そして、修正したマッピングが結ぶグループ・ペアのグループ間距離を−１に設定する（ステップＳ１４）。
【０１２７】
入力された修正情報が「マッピングの変更」の場合は（ステップＳ１０）、変更前のマッピングが示していたノード・ペアのノード間距離を再計算する（ステップＳ１５）。次に、変更後のマッピングが示すノード・ペアのノード間距離を−１に設定する（ステップＳ１６）。次に、変更前のマッピングが結んでいたグループ・ペア内で他にノード間距離が−１であるノード・ペアのマッピングが存在しないなら、そのグループ・ペアのグループ間距離を再計算し、存在するなら、該グループ間距離を−１のままにする（ステップＳ１７）。そして、変更後のマッピングが結ぶグループ・ペアのグループ間距離を−１に設定する（ステップＳ１８）。
【０１２８】
このようにして、グループ間距離、ノード間距離を再計算して再度自動生成のプロセスを繰り返す。
【０１２９】
しかして、ステップＳ８において、ユーザから、マッピングが全て正しい旨の指示が入力された場合には、この時点で得られているマッピング情報をもとに変換ルールを生成する（ステップＳ１９）。
【０１３０】
さて、以下では、具体例を用いて本実施形態について説明する。
【０１３１】
本具体例では、次に示すＤＴＤを変換前用ＤＴＤとする。
【０１３２】
＜！ＥＬＥＭＥＮＴ  Ａｄｄｒｅｓｓ  （Ｐｅｒｓｏｎ）＊＞
＜！ＥＬＥＭＥＮＴ  Ｐｅｒｓｏｎ  （Ｎａｍｅ，  Ｏｆｆｉｃｅ，  Ｈｏｍｅ）＞
＜！ＥＬＥＭＥＮＴ  Ｏｆｆｉｃｅ  （Ｔｅｌ，  Ｆａｘ）＞
＜！ＥＬＥＭＥＮＴ  Ｈｏｍｅ  （Ｔｅｌ，  Ｍｏｂｉｌｅ）
＜！ＥＬＥＭＥＮＴ  Ｎａｍｅ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｔｅｌ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｆａｘ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｍｏｂｉｌｅ  （＃ＰＣＤＡＴＡ）＞
他方、次のＤＴＤを変換後用ＤＴＤとする。
【０１３３】
＜！ＥＬＥＭＥＮＴ  Ａｄｄｒ  （Ｍｅｍｂｅｒ）＊＞
＜！ＥＬＥＭＥＮＴ  Ｍｅｍｂｅｒ  （Ｎａｍｅ，  Ｐｈｏｎｅ）＞
＜！ＥＬＥＭＥＮＴ  Ｐｈｏｎｅ  （Ｔｅｌ，  Ｍｉｓｃ）＞
＜！ＥＬＥＭＥＮＴ  Ｎａｍｅ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｔｅｌ  （＃ＰＣＤＡＴＡ）＞
＜！ＥＬＥＭＥＮＴ  Ｍｉｓｃ  （＃ＰＣＤＡＴＡ）＞
変換前木構造入力部と変換後木構造入力部は、それぞれを、木構造情報入力として受け取る。
【０１３４】
この場合、変換前のＤＴＤからは次に例示する木構造が生成される。
【０１３５】
2004348341.tif 000009
他方、変換後のＤＴＤからは次に例示する木構造が生成される。
【０１３６】
2004348341.tif 000010
次に、ノード間距離計算部１１２にてノードを取り出し、変換前木構造のノードと変換後木構造のノードとの全ての組み合わせを求め、そのノード間の距離を求める。本具体例では、ノード間距離には、ノードの文字の比較から算出されるエディットディスタンスを用いるものとする。
【０１３７】
図１５に、全てのノードの組み合わせに対してエディットディスタンスを求めた結果を含むテーブルを示す。
【０１３８】
これらノード間距離は、ノード間距離記憶部１１３に格納される。
【０１３９】
次に、変換前木構造と変更後木構造からグループ抽出部１２１にてグループを抽出する。
【０１４０】
本具体例では、グループ指定情報として、変換前木構造に対しては、「／Ａｄｄｒｅｓｓ／Ｐｅｒｓｏｎ／Ｎａｍｅ／Ｏｆｆｉｃｅもしくは／Ａｄｄｒｅｓｓ／Ｐｅｒｓｏｎ／Ｈｏｍｅ」と指定されているとし、変換後木構造に対しては、「／Ａｄｄｒ／Ｍｅｍｂｅｒ／Ｎａｍｅ／Ｐｈｏｎｅ」と指定されているとする。
【０１４１】
この場合、変換前木構造のグループは、
Ｇｒｏｕｐ１（変換前）：Ａｄｄｒｅｓｓ，Ｐｅｒｓｏｎ，Ｎａｍｅ
Ｇｒｏｕｐ２（変換前）：Ｏｆｆｉｃｅ，Ｔｅｌ，Ｆａｘ
Ｇｒｏｕｐ３（変換前）：Ｈｏｍｅ，Ｔｅｌ，Ｍｏｂｉｌｅ
となる。
【０１４２】
ただし、Ｇｒｏｕｐ２（変換前）のＴｅｌは、Ｏｆｆｉｃｅの子ノードのＴｅｌであり、Ｇｒｏｕｐ３（変換前）のＴｅｌは、Ｈｏｍｅの子ノードのＴｅｌである。
【０１４３】
変換後木構造のグループは
Ｇｒｏｕｐ１（変換後）：Ａｄｄｒ，Ｍｅｍｂｅｒ，Ｎａｍｅ
Ｇｒｏｕｐ２（変換後）：Ｐｈｏｎｅ，Ｔｅｌ，Ｍｉｓｃ
となる。
【０１４４】
次に、抽出したグループに対して、グループ間距離計算部１２２にてグループ間距離を算出する。
【０１４５】
ここで、Ｇｒｏｕｐ３（変換前）とＧｒｏｕｐ２（変換後）のペアについてのグループ間距離を求める場合について説明する。
【０１４６】
まず、Ｇｒｏｕｐ３（変換前）のノードとＧｒｏｕｐ２（変換後）のノードからなる組のうち、最もノード間距離の近いノード・ペアを求める。
【０１４７】
ノード間距離記憶部１１３に管理されているノード間距離より、
・Ｇｒｏｕｐ３（変換前）のＨｏｍｅノードとＧｒｏｕｐ２（変換後）のＰｈｏｎｅノードとの距離が『３』、
・Ｇｒｏｕｐ３（変換前）のＴｅｌノードとＧｒｏｕｐ２（変換後）のＴｅｌノードとの距離が『０』、
・Ｇｒｏｕｐ３（変換前）のＭｏｂｉｌｅノードとＧｒｏｕｐ２（変換後）のＭｉｓｃノードとの距離が『４』、
となる。
【０１４８】
Ｇｒｏｕｐ３（変換前）とＧｒｏｕｐ２（変換後）のペアについては、上記の３組のノード・ペアが、最もノード間距離が小さい。ここで、本具体例では、各ノード・ペアのノード間距離の和を、ペアの数で割った値を、求めるグループ間距離にするものとする。従って、このＧｒｏｕｐ３（変換前）とＧｒｏｕｐ２（変換後）のペアについては、ノード間距離の和が７、ペアの数が３であることから、グループ間距離は『２．３』となる。
【０１４９】
同様にして、全てのグループの組み合わせに対してグループ間距離を求める。
【０１５０】
図１６に、全てのグループの組み合わせに対してグループ間距離を求めた結果を含むテーブルを示す。
【０１５１】
これらグループ間距離は、グループ間距離記憶部１２３に格納される。
【０１５２】
次に、マッピング生成部１３は、グループ間距離記憶部１２３に格納されているグループ間距離から最も距離が近いグループ同士のペアを作成する。まず、グループ間距離が−１になっているものを探す。本具体例では、グループ間距離が−１であるものは無い。次に、変換後のグループに対して最も距離の近い変換前のグループと一対一のグループのペアを作成する。変換後のグループは、Ｇｒｏｕｐ１（変換後）とＧｒｏｕｐ２（変換後）であるので、それぞれに対して最も距離が近い変換前のグループを求め、それぞれとペアを作成する。本具体例では、Ｇｒｏｕｐ３（変換前）とＧｒｏｕｐ２（変換後）、およびＧｒｏｕｐ１（変換前）とのＧｒｏｕｐ１（変換後）が、最も近いグループのペアとなる。
【０１５３】
次に、求めたグループ・ペア内で最も距離の近いノード同士をマッピングとして生成する。まず、ノード間の距離が−１になっているノードのペアを探す。本具体例では、ノード間距離が−１であるものは無い。次に、変換後のノードに対して最も距離の近い変換前のノードと一対一のノードのペアを作成する。変換前Ｇｒｏｕｐ３と変換後Ｇｒｏｕｐ２からなるグループ・ペア内で最も近いノードのペアは、ＨｏｍｅノードとＰｈｏｎｅノード、ＴｅｌノードとＴｅｌノード、ＭｏｂｉｌｅノードとＭｉｓｃノードの各ペアとなる。変換前Ｇｒｏｕｐ１と変換後Ｇｒｏｕｐ１では、ＡｄｄｒｅｓｓノードとＡｄｄｒノード、ＰｅｒｓｏｎノードとＭｅｍｂｅｒノード、ＮａｍｅノードとＮａｍｅノードの各ペアとなる。
【０１５４】
このようにして生成されたマッピングの情報は、マッピング情報管理部１４に渡され、ＧＵＩとして画面に描画される。図１７に、この場合の表示例を示す。
【０１５５】
さて、ＧＵＩ上でユーザが、ＭｏｂｉｌｅノードからＭｉｓｃノードへのマッピングを修正して、ＦａｘノードからＭｉｓｃノードへのマッピングに変更したとする。この様子を、図１８に例示する。
【０１５６】
この変更を受けて、ノード間距離管理部１１が管理しているノード間距離のうち、ＦａｘノードとＭｉｓｃノードとのペアに対応するノード間距離を−１に設定する。
【０１５７】
図１９に、図１５のテーブルを更新した状態を示す。
【０１５８】
また、グループ間距離管理部１２が管理しているグループ間距離のうち、ＭｏｂｉｌｅノードとＭｉｓｃノードをそれぞれ含んでいるグループＧｒｏｕｐ２（変更前）とＧｒｏｕｐ２（変更後）とのペアに対応するグループ間距離を−１に設定する。
【０１５９】
図２０に、図１６のテーブルを更新した状態を示す。
【０１６０】
次いで、上記のようなグループ間距離およびノード間距離の変更に応じて、マッピング生成部１３は、マッピングを再計算する。
【０１６１】
まず、グループのペアを再計算する。先ほどのユーザの修正によりＧｒｏｕｐ２（変換前）とＧｒｏｕｐ２（変換後）のグループ間距離が−１になっているので、Ｇｒｏｕｐ２（変換前）とＧｒｏｕｐ２（変換後）とのペアを作成する。次に、残りのＧｒｏｕｐ１（変換後）に対して、最も距離が近いものはＧｒｏｕｐ１（変換前）であるので、グループペアＧｒｏｕｐ１（変更前）とＧｒｏｕｐ１（変更後）とのペアが作成される。
【０１６２】
次に、Ｇｒｏｕｐ１（変更前）とＧｒｏｕｐ１（変更後）とのペア、およびＧｒｏｕｐ２（変更前）とＧｒｏｕｐ２（変更後）とのペアのそれぞれについて、当該ペア内で最も距離が近いノードのペアをマッピングとして生成する。Ｇｒｏｕｐ１（変更前）とＧｒｏｕｐ１（変更後）とのペアについては、マッピングの修正によるノード間距離への影響がないので、ノード・ペアは不変である（ＡｄｄｒｅｓｓノードとＡｄｄｒノードとのペア、ＰｅｒｓｏｎノードとＭｅｍｂｅｒノードとのペア、ＮａｍｅノードとＮａｍｅノードとのペアのままである）。Ｇｒｏｕｐ２（変更前）とＧｒｏｕｐ２（変更後）とのペアについては、ＦａｘノードとＭｉｓｃノードとのノード間距離が−１になっているので、ＦａｘノードからＭｉｓｃノードへのマッピングが作成される。残りのＧｒｏｕｐ２（変更後）のノードについて、Ｐｈｏｎｅノードと最も近いＧｒｏｕｐ２（変更前）のノードはＯｆｆｉｃｅノード、Ｔｅｌノードと最も近いノードはＴｅｌノードであるので、結果として、ＯｆｆｉｃｅノードからＰｈｏｎｅノードへのマッピング、ＴｅｌノードからＴｅｌノードへのマッピング、ＦａｘノードからＭｉｓｃノードへのマッピングが生成される。
【０１６３】
これらマッピングを示す情報がマッピング情報管理部１４に渡されると、図２１に例示するような画面が表示される。
【０１６４】
ユーザがマッピング情報管理部１４にあるマッピングで良いと判断し、その旨を示す指示が入力されると、変換ルール生成部１５が変換ルールを生成する。
【０１６５】
変換ルール生成部１５は、マッピングが示している変更前のノードを変更後のノードに変換する変換ルールを生成する。この例では、変換前のＡｄｄｒｅｓｓノードを変換後のＡｄｄｒノードに、変換前のＰｅｒｓｏｎノードを変換後のＭｅｍｂｅｒノードに、変換前のＮａｍｅノードを変換後のＮａｍｅノードに、変換前のＯｆｆｉｃｅノードを変換後のＰｈｏｎｅノードに、変換前のＴｅｌノードを変換後のＰｈｏｎｅノードの子ノードのＴｅｌノードに、変換前のＦａｘノードを変換後のＰｈｏｎｅノードの子ノードのＦａｘノードに変換するＸＳＬＴを生成する。
【０１６６】
図２２に、この場合のＸＳＬＴを例示する。
【０１６７】
なお、マッピングが示している変更前のノードを変更後のノードに変換する変換ルールを生成する方法としては、既存の方法を用いても構わない。例えば、特開２００３−５８５３０に開示されている方法を用いてもよい。
【０１６８】
なお、以上の各機能は、ソフトウェアとして記述し適当な機構をもったコンピュータに処理させても実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための、あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるためのプログラムとして実施することもできる。加えて該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【０１６９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１７０】
【発明の効果】
本発明によれば、第１の構造化文書の有する第１の木構造を構成する各ノードと第２の構造化文書の有する第２の木構造を構成する各ノードとの間の対応付けがより効率良くできるようになる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る文書処理システムの構成例を示す図
【図２】ノード間距離について説明するための図
【図３】ノード間距離について説明するための図
【図４】ノード間距離について説明するための図
【図５】エディットディスタンスについて説明するための図
【図６】グループの抽出について説明するための図
【図７】グループの抽出について説明するための図
【図８】グループの抽出について説明するための図
【図９】グループの抽出について説明するための図
【図１０】グループ間距離について説明するための図
【図１１】グループ間距離について説明するための図
【図１２】グループ間距離について説明するための図
【図１３】生成されたマッピングのＧＵＩによる表示例を示す図
【図１４】同実施形態に係る文書処理システムの処理手順の一例を示すフローチャート
【図１５】ノード間距離の算出例を示す図
【図１６】グループ間距離の算出例を示す図
【図１７】生成されたマッピングのＧＵＩによる表示例を示す図
【図１８】ＧＵＩ上でマッピングが修正される例を示す図
【図１９】ノード間距離の更新例を示す図
【図２０】グループ間距離の更新例を示す図
【図２１】修正を反映して再生成されたマッピングのＧＵＩによる表示例を示す図
【図２２】生成された変換ルールの一例を示す図
【符号の説明】
１１…ノード間距離管理部、１１１…ノード抽出部、１１２…ノード間距離計算部、１１３…ノード間距離記憶部、１２…グループ間距離管理部、１２１…グループ抽出部、１２１１…グループ指定情報入力部、１２２…グループ間距離計算部、１２３…グループ間距離記憶部、１３…マッピング生成部、１４…マッピング情報管理部、１５…変換ルール生成部、１６…修正情報入力部
【図１】
2004348341.tif 000011
【図２】
2004348341.tif 000012
【図３】
2004348341.tif 000013
【図４】
2004348341.tif 000014
【図５】
2004348341.tif 000015
【図６】
2004348341.tif 000016
【図７】
2004348341.tif 000017
【図８】
2004348341.tif 000018
【図９】
2004348341.tif 000019
【図１０】
2004348341.tif 000020
【図１１】
2004348341.tif 000021
【図１２】
2004348341.tif 000022
【図１３】
2004348341.tif 000023
【図１４】
2004348341.tif 000024
【図１５】
2004348341.tif 000025
【図１６】
2004348341.tif 000026
【図１７】
2004348341.tif 000027
【図１８】
2004348341.tif 000028
【図１９】
2004348341.tif 000029
【図２０】
2004348341.tif 000030
【図２１】
2004348341.tif 000031
【図２２】
2004348341.tif 000032