以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図3は、本発明による変換プログラム探索システムの第1の実施形態を示すブロック図である。第1の実施形態の変換プログラム探索システムは、データ接続問題入出力部11と、変換探索手段12と、属性知識記憶部13と、記述形式知識記憶部14と、属性値シグニチャ作成手段15と、変換モジュール記憶部16と、変換モジュール実行手段17と、事例記憶部18と、変換シグニチャ作成手段19とを備える。
データ接続問題入出力部11には、データ接続問題が入力され、また、データ接続問題の解である変換パスを出力する。なお、データ接続問題が入力されるとは、具体的には、変換元の一つ以上の属性名と、変換後の一つ以上の属性名と、属性値の変換例の集合(すなわち、変換元の属性値と変換後の属性値との組み合わせの集合)とが入力されることである。データ接続問題入出力部11は、例えば、外部のシステムもしくはユーザによって操作される。また、データ接続問題入出力部11は、例えば、キーボード等の入力装置とディスプレイ装置等の出力装置によって実現される。あるいは、データ接続問題入出力部11は、外部のシステムとのインタフェースであってもよい。
データ接続問題入出力部11は、データ接続問題が入力されると、そのデータ接続問題(変換元の一つ以上の属性名、変換後の一つ以上の属性名、および属性値の変換例の集合)を変換探索手段12に渡す。すると、変換探索手段12は、その解を探索する。また、データ接続問題入出力部11は、変換探索手段12によって得られた解を、外部のシステムまたはユーザに提示する。
変換探索手段12は、データ接続問題入出力部11からデータ接続問題を入力されると、その解となる変換パスを探索し、その変換パスをデータ接続問題入出力部11に送信する。なお、データ接続問題の解とする変換パスに含まれる変換モジュール数の上限値を探索距離Dとする。探索距離Dは、予め定められている。
変換探索手段12は、変換パスの構成要素となる変換モジュール(変換プログラム)を選び出すために、変換モジュール記憶部16から各変換モジュールに関する情報を読み込む。また、変換探索手段12は、変換パスの要素となる変換モジュールの候補を選び出すために、属性知識記憶部13に属性名間の類似度を求めさせ、データ接続問題として入力された変換元の一つ以上の属性名、変換後の一つ以上の属性名、変換モジュールの入力となる属性および出力となる属性の属性名との間に類似性があるか否かを判定する。そして、入力された変換元の一つ以上の属性名、変換後の一つ以上の属性名と、入力となる属性および出力となる属性の属性名との間に類似性がある変換モジュールを選択する。この処理は、図10に示すステップF22の処理であり、具体的な処理内容の例については後述する。さらに、変換探索手段12は、データ接続問題として入力された属性値(属性値の変換例の集合に含まれる変換元、変換後の各属性値)を属性値シグニチャ作成手段15に入力し、属性値シグニチャを得る。そして、変換探索手段12は、属性値シグニチャを用いて、解となる変換パスに含まれる変換モジュールの組み合わせ(一つの変換モジュールである場合もある)を予測する。属性値シグニチャについては後述する。また、変換探索手段12は、予測する変換モジュールを試行するため、変換モジュールを実行するための情報(実行定義情報)と、属性値の変換例の集合に含まれる変換元の属性値とを、変換モジュール実行手段17に送り、変換モジュール実行手段17によって求められた変換元の属性値の変換結果が、入力された属性値の変換例の集合に含まれていた変換後の属性値と合致するか否かを判定する。
属性記憶部13は、属性名となる語彙の類似度を導出可能な情報を記憶し、変換探索手段12に指定された属性名同士の類似度を求める。属性名となる語彙の類似度を導出可能な情報の例として、例えば、属性名となる語彙同士間の関係を表す情報がある。属性名となる語彙同士間の関係を表す情報の例を図4に示す。図4では、2つの語彙と、その2つの語彙が類義語であることを示す情報が組み合わされている。属性記憶部13は、例えば、このような情報の集合を記憶する。属性記憶部13は、図4に例示する情報の集合として、シソーラス(類義語辞書)やオントロジを記憶していてもよい。
2つの語彙と、その2つの語彙が類義語であることを示す情報との組み合わせ(図4参照)の集合を記憶している場合、属性記憶部13は、予め規定されたルールに従って、属性名間の類似度を決定すればよい。ルールの例として、以下に示すルール1〜3の組み合わせが挙げられる。属性記憶部13が記憶する情報によって、2つの属性名が類義語であると定められているならば類似度を1とする(ルール1)。2つの属性名が直接類似語であると定められていなくても、一方の属性名と類義語となる語彙が、他方の属性名とも類義語となっているならば、類似度を0.5とする(ルール2)。ルール1,ルール2に該当しなければ、類似度を0とする。例えば、属性記憶部13が図4に例示する情報を記憶していて、「名前」と「氏名」の類似度を求める場合、ルール1により、類似度1とすればよい。また、属性記憶部13が記憶する情報において、「住所」と「市町村」とが類義語であると定められ、「市町村」と「宛先」も類義語であると定められているが、「住所」と「宛先」は類義語として定められていないとする。このとき、属性記憶部13は、「住所」と「宛先」の類似度を求める場合、ルール2により、類似度を0.5とすればよい。
なお、上記のルール1〜3の組み合わせは例示であり、ルールの規定の仕方は限定されない。例えば、類似度を判定しようとする2つの属性名の一方を起点として、順次、類義語となる語彙を辿っていき、もう一方の属性名が得られるまでに辿った語彙数に応じた類似度をより細分化して定めていてもよい。
また、属性名となる語彙の類似度を導出可能な情報の例として、コーパス(文書の集合)も挙げられる。属性記憶部13は、図4に例示する情報ではなく、文書の集合を記憶していてもよい。この場合、属性記憶部13は、記憶している文書の集合を参照して、以下に示す式(1)によって類似度を算出すればよい。
Sim(A,B)=(doc(A,B))2/(doc(A)×doc(B))
式(1)
式1において、A,Bは、それぞれ類似度を判定しようとする属性名である。Sim(A,B)は、AとBとの類似度である。また、doc(x)は、単語xを含む文書数を意味し、doc(x,y)は、単語xとyを両方とも含む文書数を意味する。従って、属性記憶部13は、類似度を判定しようとする2つの属性名を両方とも含む文書を属性記憶部13から検索して、その文書数の二乗(doc(A,B))2)を計算する。また、属性記憶部13は、一方の属性名Aを含む文書ともう一方の属性名Bを含む文書をそれぞれ検索し、属性名Aを含む文書数と属性名Bを含む文書数の積(doc(A)×doc(B))で、(doc(A,B))2)を除算し、その結果を属性名A,Bの類似度とすればよい。
記述形式記憶部14は、属性値が満たしているか否かを判定される記述形式を定めた情報である記述形式知識を記憶する。記述形式は、属性値が満たしているか否かを判定される条件ということができる。記述形式知識は、属性値シグニチャ作成手段15によって参照される。図5は、記述形式知識の例を示す説明図である。図5に示す例において、各記述形式知識毎に、記述形式ID、記述形式の名前、属性値のデータ型、属性値が記述形式を満足しているか否かを判定するための条件式が定められている。このうち、記述形式IDは、例えば、記述形式記憶部14によって自動採番される。名前、データ型、条件式は、予め人手で用意される。例えば、変換プログラム探索システムの管理者(以下、システム管理者と記す。)によって記述形式記憶部14に記憶される。なお条件式は、ある属性値がその記述形式で記述されているかどうかを判定する任意の式または関数である。例えば、図5に例示する、「isKanji(value)」は、属性値を引数とし、その属性値が漢字であるか否かを判定する関数である。また、例えば、図5に例示する「value.length」は、属性値となる文字列に含まれる文字数を意味している。従って、「value.length=1」は、属性値の文字数が1であるという条件式である。条件式は、論理和や論理積で表されていてもよい。属性値シグニチャ作成手段15は、記述形式知識において条件式として定められた関数を実行したり、定められた式の計算を行う。なお、図5に例示する「メール」の条件式における「a-zA-Z0-9・・・」という文字列は、正規表現で記述されており、「英数字とピリオド、@からなる文字列」を意味している。すなわち、この条件式は、属性値が、「英数字とピリオド、@からなる文字列」であるか否かを判定する関数である。
記述形式知識記憶部14に記憶される記述形式知識は、図5に例示するものに限定されない。また、記述形式知識記憶部14は、例えば、ユーザインタフェースを介してシステム管理者が入力した記述形式知識を記憶する。
属性値シグニチャ作成手段15は、1つの属性値を指定され、その属性値の属性値シグニチャを作成する。属性値シグニチャとは、属性値が記述形式知識記憶部14において定められた各記述形式を満足しているかどうかを表すベクトルデータである。属性値シグニチャ作成手段15は、属性値が記述形式を満足しているかの判定結果を、真(満足している)か偽(満足していない)かのいずれかとして導出する。ベクトルデータである属性値シグニチャでは、真を1、偽を0として、予め定められた順に個々の判定結果である1または0が並べられる。また、属性値シグニチャに含まれる要素数は、記述形式知識記憶部14に記憶された記述形式知識の数(すなわち、記述形式の数)と同数である。属性値シグニチャ作成手段15は、属性値を一つ指定されると、属性値が記述形式知識記憶部14に記憶された各記述形式知識の条件式を参照して、その属性値が条件式を満たしているか否かを判定し、真であれば1、偽であれば0とする。そして、予め定められた順に、各条件式の判定結果である1または0を並べることによって属性値シグニチャを作成する。
属性値シグニチャ作成手段15は、変換シグニチャ作成手段19もしくは変換探索手段12によって呼び出される。すなわち、変換シグニチャ作成手段19もしくは変換探索手段12によって属性値を指定される。属性値シグニチャ作成手段15は、指定された属性値を用いて変換シグニチャを作成し、その変換シグニチャを呼び出し元の変換シグニチャ作成手段19もしくは変換探索手段12に渡す。
変換モジュール記憶部16は、システム管理者によって作成された変換モジュールに関する情報と、変換シグニチャ作成手段19によって付加された変換シグニチャを記憶する。図6は、変換モジュール記憶部16が記憶する情報の例を示す説明図である。変換モジュール16は、変換モジュール毎に、モジュールIDと、モジュール名と、入力属性、入力属性型、出力属性、出力属性型、実行定義情報、変換シグニチャを記憶する。モジュールIDは、変換モジュールの識別子である。モジュール名とは、変換モジュールの役割を示す名前である。入力属性とは、変換モジュールの入力となる属性であり、具体的には、入力となる属性の属性名が変換モジュール記憶部16に記憶される。なお、図6に例示する「X」は、任意の属性でよいことを表している。入力属性型とは、変換モジュールの入力属性の属性値のデータ型である。出力属性とは、変換モジュールの出力となる属性であり、具体的には、出力となる属性の属性名が変換モジュール記憶部16に記憶される。出力属性型とは、変換モジュールの出力属性の属性値のデータ型である。
実行定義情報とは、その変換モジュールを実行するための情報であり、変換モジュールがプログラムコンポーネントとして実装される場合、実行情報はプログラム本体とそのプログラムを呼び出すための呼び出し方法を記述したものになる。例えば、変換モジュールがWebサービスとして実装される場合、WSDLファイルを実行定義情報とすることができる。実行定義情報には、例えば、変換モジュールが記憶されている装置の情報、および、変換モジュールを実行するために入力しなければならない情報が示されている。
変換シグニチャとは、記述形式知識記憶部14に記憶された各記述形式知識で定められた記述形式毎に、変換モジュールによる変換によって記述形式を満たしている状態に変化するか、記述形式を満たさない状態に変化するか、または、記述形式を満たした状態あるいは満たさない情報が変化しないかを示すデータである。変換シグニチャは、変換モジュールの特徴を示すメタデータあるということができる。変換シグニチャは、具体的には、記述形式知識の数の要素を持つベクトルデータとして表される。一組の入力となる属性値および出力となる属性値によって定められる変換シグニチャは、個々の要素として、記述形式を満たしている状態に変化することを表す“1”、記述形式を満たさない状態に変化することを表す“−1”、記述形式を満たした状態あるいは満たさない情報が変化しないことを表す“0”のいずれかの値をとる。ただし、入力となる属性値または出力となる属性値が変化すると、変動する要素も生じる。同一の変換モジュールについて入力となる属性値を変化させて求めた変換シグニチャの平均を算出する場合、その要素は、“1”,“−1”,“0”以外の値を取り得る。
図7は、変換シグニチャの例を示す説明図である。図7に示す変換シグニチャは、変換モジュールによる変換の結果、属性値が、記述形式d2を満足する状態に変化し、記述形式d3を満足しない状態に変化したことを意味する。また、変換の前後で、記述形式d1やdnを満足する状態(あるいは満足しない状態)が変化していないことを意味する。
また、変換シグニチャは、1つの入力属性と1つの出力属性との組み合わせについて、1つ定められるデータである。従って、変換モジュールがI種類の属性を入力とし、K種類の属性を出力とする場合、その変換モジュールには、I×K個の変換シグニチャが定められる。例えば、「名字」および「名前」を入力とし、それらを結合して「氏名」を出力する変換シグニチャでは、「名字」と「氏名」についての変換シグニチャと、「名前」と「氏名」についての変換シグニチャの2種類が定められる。
また、既に説明したように、一組の入力となる属性値および出力となる属性値によって定められる変換シグニチャは、個々の要素として“1”,“−1”,“0”のいずれかを含む。例えば、上述の「名字」と「氏名」についての変換シグニチャを例にすると、「田中」と「田中太郎」という属性値から求めた変換シグニチャは、個々の要素として“1”,“−1”,“0”のいずれかを含む。同様に、「佐藤」と「佐藤次郎」という属性値から求めた変換シグニチャも、個々の要素として“1”,“−1”,“0”のいずれかを含む。ただし、それらの変換シグニチャの各要素同士が完全に一致しているとは限らず、それらの変換シグニチャの平均等を算出した場合、“1”,“−1”,“0”以外の要素が生じ得る。
変換モジュール記憶部16に記憶させる各項目のうち、モジュール名、入力属性、入力属性型、出力属性、出力属性型、実行定義情報はシステム管理者もしくは変換モジュール作成者によって用意され、変換モジュール記憶部16に記憶される。これらの項目が記憶されると、変換モジュール記憶部17は、モジュールIDを自動採番して記憶する。また、変換シグニチャは、変換シグニチャ作成手段19によって作成される。
変換モジュール実行手段17は、変換シグニチャ作成手段19もしくは変換探索手段12に呼び出され、変換モジュールの実行定義情報と入力の1つ以上の属性値を渡される。そして、変換モジュール実行手段17は、その属性値を入力値として、実行定義情報に基づいて変換モジュールを実行し、変換後の属性値を作成する。あるいは、他の装置に変換モジュールを実行させ、その装置から変換後の属性値を受信してもよい。例えば、変換モジュールが記憶されている装置の情報が実行定義情報に定められている場合、その装置に属性値を送信して、その装置に変換モジュールを実行させてもよい。変換モジュール実行手段17は、変換後の属性値を、呼び出し元の変換シグニチャ作成手段19もしくは変換探索手段12に渡す。
また、変換モジュール実行手段17が、変換モジュールを呼び出して、属性値の変換を行う場合、呼び出した変換モジュールに従って、辞書を参照したり、代数的演算を行ったり、文字列操作処理を実行したり、あるいは、辞書参照、代数的演算、文字列操作処理を組み合わせた処理を実行したりすることによって変換を行う。また、この場合、変換モジュールは、例えば、変換モジュール記憶部16に予め記憶される。変換モジュール実行時に辞書を参照する場合には、その辞書もあわせて変換モジュール記憶部16に予め記憶される。
辞書を参照して変換を行う例として、例えば、「男」を「male」に変換し、「女」をfemaleに変換する等の例が挙げられる。変換モジュール実行手段17は、呼び出した変換モジュールに従って、辞書を参照して、「男」等の属性値に対応する文字列「male」等を変換後の属性値とする。文字列操作処理の例として、二つの文字列を結合して一つの文字列としたり、入力された文字列の所定の部分を抽出して変換後の文字列とする等の処理が挙げられる。
また、N種類の属性値が、一つの属性値に対応する場合等では、辞書参照と文字列操作を組み合わせて変換を行ってもよい。例えば、「住所」を入力とし、「地区」を出力とする場合、個々の住所と地区とを対応付けた辞書を作成する負担が大きい。この場合、「県名」と「近畿」等の「地区」とを対応付けた辞書を予め用意しておき、「住所」の冒頭の県名を抽出する文字列操作処理を行ってから、「県名」に対応する「地区」を辞書によって変換してもよい。
また、例えば、「連絡先」として記述されたテキストを入力とし、その中に記述された「人名」を出力とする場合、人名辞書から作成された分類器を利用してもよい。例えば、変換モジュール実行手段17は、任意の2文字が人名辞書に登場する回数と、予め用意された人名辞書ではない文書に登場する回数とを計数しておき、その2文字がどの程度名前らしいかを算出しておく。変換モジュール実行手段17は、「連絡先」から「人名」に変換する変換モジュールを読み込んだ場合、入力された文字列(「連絡先」)を2文字ずつ区切り、名前らしいと判定される2文字を抜き出す。なお、ここで挙げた例は、変換モジュール実行手段17が変換モジュールに従って変換を行う場合の例示であり、変換モジュール実行手段17による変換処理の態様は、特に限定されない。
事例記憶部18は、変換モジュール実行手段17によって生成された変換の実行例を記憶する。図8は、事例記憶部18が記憶する情報の例を示す説明図である。変換事例毎に、事例IDと、変換モジュールIDと、入力属性値と、出力属性値とを記憶する。事例IDは、個々の変換事例を識別する識別子である。変換モジュールは、変換事例において用いられた変換モジュールの識別子である。入力属性値は、変換モジュールに入力された変換前の属性値である。出力属性値は、変換モジュールが出力した変換後の属性値である。変換モジュールID、入力属性値、出力属性値は変換モジュール実行手段17によって作成される。また、事例記憶部18には、人手によっても、変換モジュールID、入力属性値、出力属性値の組み合わせが記憶される。変換モジュールの作成者等がその変換モジュールに関する情報を変換モジュール記憶部16に記憶させる場合、その変換モジュールの作成者等は、その変換モジュールの変換モジュールIDと、その変換モジュールによる変換前の属性値(入力属性値)と、変換後の属性値(出力属性値)とを、事例記憶部18に記憶させる。変換モジュールID、入力属性値、出力属性値を記憶した場合、事例記憶部17は、その組み合わせに対して、事例IDを自動採番して割り当て、その事例IDも記憶する。
変換シグニチャ作成手段19は、変換モジュール記憶部16に記憶されている変換モジュールに関する情報(ここでは、実行定義情報)を読み込んで、変換モジュール17に変換モジュールを利用して変換事例を増加させ、その変換事例を事例記憶部18に記憶させる。そして、変換シグニチャ作成手段19は、属性値シグニチャ作成手段15に変換前後の属性値の属性値シグニチャを作成させ、属性値シグニチャから変換シグニチャを作成し、変換モジュール記憶部16に記憶させる。
変換探索手段12と、属性値シグニチャ作成手段15と、変換モジュール実行手段17と、変換シグニチャ作成手段19は、例えば、変換プログラム探索用プログラムに従って動作するCPUによって実現される。属性知識記憶部13と、記述形式知識記憶部14と、変換モジュール記憶部16と、事例記憶部18は、例えば、記憶装置と、変換プログラム探索用プログラムに従って動作するCPUとによって実現される。上記の各手段12,15,17,19および各記憶部13,14,16,18を実現するためのCPUが、同一のCPUであってもよい。
次に、本実施形態の全体の動作について説明する。本実施形態の動作は大きく、変換モジュールに対して変換シグニチャを作成する動作と、データ接続問題の解を探索する動作に分けられる。
図9は、変換モジュールに対して変換シグニチャを作成する動作の例を示すフローチャートである。まず、変換シグニチャ作成手段19は、変換モジュール記憶部16に記憶されている各変換モジュールに関する情報のうち、変換シグニチャが作成されていない変換モジュールに関する情報を特定し、そのモジュールに関する実行定義情報を読み込む(ステップF11)。この実行定義情報が、変換モジュールMiの実行定義情報であるとして説明する。変換シグニチャ作成手段19は、事例記憶部18から任意の属性値を読み込み、その属性値と、変換モジュールMiの実行定義情報とともに、変換モジュール実行手段17に渡し、変換モジュール実行手段17にその属性値を変換元として、変換モジュールMiによる変換後の属性値を取得させる。変換シグニチャ作成手段19は、変換モジュール実行手段17に渡した入力値を入力属性値とし、変換モジュール実行手段17に取得させた変換後の属性値を出力属性値とし、変換モジュールMiのIDと対応付けて、事例記憶部18に記憶させる。変換シグニチャ作成手段19は、この処理を繰り返し、事例記憶部18に記憶される事例数を増加させる(ステップF12)。なお、ステップF12において、変換シグニチャ作成手段19が事例記憶部18から読み込む属性値は、変換モジュールMi以外の変換モジュールに対応付けられた属性値であってもよく、また、入力属性値であっても、出力属性値であってもよい。また、変換モジュールの作成者等がその変換モジュールに関する情報を変換モジュール記憶部16に記憶させる場合、その変換モジュールの作成者等は、その変換モジュールの変換モジュールIDと、その変換モジュールによる変換前の属性値(入力属性値)と、変換後の属性値(出力属性値)とを、事例記憶部18に記憶させるので、ステップF12に最初に移行したときに、事例記憶部18から属性値を読み込むことが可能である。
続いて、変換シグニチャ作成手段19は、事例記憶部18に記憶された変換モジュールMiの変換事例(すなわち、変換モジュールMiに対応付けられた入力属性値および出力属性値)を全て読み込む。そして、変換シグニチャ作成手段19は、読み込んだ個々の属性値をそれぞれ指定して、属性値シグニチャ作成手段15に個々の属性値毎に属性値シグニチャを作成させる(ステップF13)。ステップF13において、属性値シグニチャ作成手段15は、変換シグニチャ作成手段19によって属性値が指定されると、その属性値が、各記述形式知識(図5参照)で定められた各記述形式を満足しているか否かを判定し、真であれば1、偽であれば0とする。そして、予め定められた順に、各条件式の判定結果である1または0を並べることによって属性値シグニチャを作成する。そして、属性値シグニチャ作成手段15は、各属性値の属性値シグニチャを変換シグニチャ作成手段19
に返す。
ステップF13の後、変換シグニチャ作成手段19は、各事例のデータ(入力属性値と出力属性値の組)に対して出力属性値の属性値シグニチャと入力属性値の属性値シグニチャとの差分を算出することによって、事例毎に変換の特徴を表すベクトルを算出する(ステップF14)。出力属性値の属性値シグニチャおよび入力属性値の属性値シグニチャはいずれもベクトルであり、変換シグニチャ作成手段19は、ステップF12において、出力属性値の属性値シグニチャから入力属性値の属性値シグニチャを減算すればよい。この減算はベクトルの減算である。
続いて、変換シグニチャ作成手段19は、ステップF14で算出した各事例の変換の特徴を表したベクトルを一つのベクトルにまとめる(ステップF15)。ステップF14では、例えば、各事例の変換の特徴を表したベクトルの平均ベクトルを求めてもよい(すなわち、要素毎に平均値を求めてもよい)。あるいは、各事例の変換の特徴を表したベクトルの要素毎に中央値を算出してもよい。ここで挙げたステップF15の計算は例示であり、変換の特徴を表したベクトルを他の計算によって一つのベクトルにまとめてもよい。変換シグニチャ作成手段19は、ステップF11で読み込んだ実行定義情報に対応する変換シグニチャとして、ステップF15で一つにまとめられたベクトルを変換モジュール記憶部16に記憶させる(ステップF16)。以上の処理によって、新たに変換ベクトルが作成され、変換モジュール記憶部16に記憶される。
次に、データ接続問題の解を探索する動作について説明する。図10は、データ接続問題の解(すなわち、変換パス)を探索する動作の例を示すフローチャートである。まず、データ接続問題入出力部11に、外部システムまたはユーザから、変換元の一つ以上の属性名と、変換後の一つ以上の属性名と、属性値の変換例の集合(すなわち、変換元の属性値と変換後の属性値との組み合わせの集合)とが入力される(ステップF21)。データ接続問題入出力部11は入力された各データを変換探索手段12に渡す。
変換探索手段12は、属性名の類似度に基づいて、変換パスに含まれる変換モジュールの候補を選択する(ステップF22)。以下、ステップF22の処理の例を示す。ステップF22において、変換探索手段12は、変換モジュール毎に、以下に示す式(2)および式(3)を計算する。式(2)および式(3)の計算対象とする変換モジュールをmとする。また、ステップF21で入力された変換元の属性名の集合をsとし、変換後の属性名の集合をtとする。また、変換モジュールmの入力属性の属性名の集合をinとし、変換モジュールmの出力属性の属性名の集合をoutとする。変換探索手段12は、変換モジュール記憶部16が記憶する各モジュールIDを一つずつ順番に選択し、選択したモジュールIDに対応する入力属性の属性名の集合をinとし、選択したモジュールIDに対応する出力属性の属性名の集合をoutとすればよい。また、選択したモジュールIDによって特定される変換モジュールがmとなる。変換探索手段12は、選択したモジュールIDによって特定される変換モジュールがmについて、以下の式(2)および式(3)の計算を行う。
式(2)において、siは集合sに属する任意の属性名であり、injは集合inに属する一つ任意の属性名である。また、tkは集合tに属する任意の属性名である。Sim(x,y)は、単語(属性名)x,y間の類似度である。また、max{集合の中の値を用いた計算式;集合}は、集合の中の値を用いた計算式によって求められる値の最大値を意味する。従って、変換探索手段12は、任意のsi,inj,tkの組み合わせ毎に、siとinjとの類似度Sim(si,inj)、およびsiとtkとの類似度Sim(si,tk)を属性知識記憶部13に計算させ、Sim(si,inj)をSim(si,tk)で除算する。そして、その除算結果の最大値をInScore(m,s,t)として求める。
式(3)において、tiは集合tに属する任意の属性名である。skは、集合sに属する任意の属性名である。outjは集合outに属する任意の属性名である。変換探索手段12は、任意のsk,outj,tiの組み合わせ毎に、tiとoutjとの類似度Sim(ti,outj)、およびskとtiとの類似度Sim(sk,ti)を属性知識記憶部13に計算させ、Sim(ti,outj)をSim(sk,ti)で除算する。そして、その除算結果の最大値をOutScore(m,s,t)として求める。
変換探索手段12は、InScoreとOutScoreのうち、少なくともいずれか一方が予め定められた閾値よりも大きければ、選択したモジュールIDによって特定される変換モジュールmを、変換パスに含まれる変換モジュールの候補として選択する。変換探索手段12は、変換モジュール記憶部16が記憶する各モジュールID毎に(すなわち変換モジュール毎に)上記の処理を行い、変換パスに含まれる変換モジュールの候補として選択するか否かを個々の変換モジュール毎に判定する。式(2)および式(3)を用いた上記の処理はステップF22の処理の例示であり、ステップF22の処理は、上記の処理に限定されない。すなわち、変換探索手段12は、他の方法で変換モジュールの候補を選択してもよい。
また、変換探索手段12は、入力属性および出力属性が任意の属性でよいとされている変換モジュール(例えば、文字列結合変換)は、全て、変換パスに含まれる変換モジュールの候補として選択する。
ステップF22の後、変換探索手段12は、ステップF21で入力された各属性値(属性値の変換例の集合に含まれる変換前の属性値および変換後の属性値)をそれぞれ指定して、属性値シグニチャ作成手段15に属性値シグニチャを作成させる(ステップF23)。属性値シグニチャ作成手段15は、変換探索手段12によって属性値を指定されると、ステップF13と同様に指定された属性値について属性値シグニチャを作成する。そして、属性値シグニチャ作成手段15は、各属性値の属性値シグニチャを変換探索手段12に返す。
次に、変換探索手段12は、探索距離D以内の数の変換モジュールを含む変換パスの候補のリストを作成する(ステップF24)。既に説明したように、探索距離Dは、データ接続問題の解とする変換パスに含まれる変換モジュール数の上限値である。図11は、変換パスの候補のリストを作成するステップF24の処理経過の例を示すフローチャートである。変換探索手段12は、ステップF24において、まず、変換パスの候補に含める変換モジュール数を表す変数iの値を1とする(ステップF241)。
変数iの値を設定した後、変換探索手段12は、i個の変換モジュールを含む変換パスを作成する(ステップF242)。ステップF242の後、変換探索手段12は、i=Dであるか否かを判定する(ステップF243)。すなわち、変数iの値が探索距離Dと一致しているか否かを判定する。一致していなければ(ステップF243のno)、変換探索手段12は変数iの値を1増加させて(ステップF244)、ステップF242以降の処理を繰り返す。また、ステップF243においてi=Dであれば、変換パスの候補のリストを作成するステップF24(図10参照)を終了し、ステップF25に移行する。このように、ステップF24では、変数iをインクリメントして、1個の変換モジュールを含む変換パスから、D個の変換モジュールを含む変換パスまで順に作成する。
上記のステップF242の処理について、より詳しく説明する。ステップF242において、変換探索手段12は、変換パスに含まれる変換モジュールの候補のリストの中からi個の変換モジュールを用いてできる変換モジュールの組み合わせを全て作成する。変換パスに含まれる変換モジュールの候補のリストとは、ステップF22(図10参照)で選択された変換モジュールのリストである。1つの組み合わせにおけるi個の変換モジュールは重複していてもよい。例えば、i=3である場合に、同一の変換モジュールが3個重複した組み合わせも、全組み合わせの中に含まれる。
次に、変換探索手段12は、i個の変換モジュールからなるそれぞれの組み合わせについて、そのi個の変換モジュールと、変換元の属性名の集合と、変換後の属性名の集合とに基づいて、属性間の接続を行い、複数の変換パスの作成と追加を行う。変換元の属性名の集合は、ステップF21で入力された変換元の属性名の集合であり、この属性名の集合をSとする。変換後の属性名の集合は、ステップF21で入力された変換後の属性名の集合であり、この属性名の集合をTとする。また、属性の接続とは、どの属性名の属性がどの変換モジュールの入力属性となるのかを対応付けることである。例えば、変換元の属性名を有する属性と、最初の変換モジュールの入力属性を対応付けたり、各変換モジュールの出力属性と、次の変換モジュールの入力属性とを対応付けることである。
図12は、属性間の接続処理の経過の例を示す説明図である。例えば、図12(A)は、変換元の属性名の集合がs1,s2であり、変換後の属性名の集合がt1であり、変換モジュールの組み合わせがm1,m2,m3である場合を例示している。この図12(A)において、変換モジュールm1の入力属性i1と、変換元の入力属性s1とを接続することを仮定すると、図12(B)に示すように、変換元の属性名の集合が変換モジュールm1の出力属性o1とs2であり、変換後の属性名の集合がt1であり、変換モジュールの組み合わせがm2,m3である場合に置き換えることができる。このように、属性の接続を行う処理は、再帰的な処理によって実現することができる。
図13は、属性間の接続を行い、変換パスを作成する処理の例を示す説明図である。属性間の接続処理の対象となる組み合わせに含まれるi個の各変換モジュールの集合をMとする。また、その集合Mに含まれる変換モジュール(Miとする。)の入力属性の集合をin(Mi)とし、変換モジュールMiの出力属性の集合をout(Mi)とする。また、変換元の属性名の集合をSとし、変換後の属性名の集合をTとする。変換探索手段12は、S,T,Mを指定して、処理countUp(S,T,M)を実行する。変換探索手段12は、処理countUp(S,T,M)において、以下に示す3種類のリストを定める。countUpの後に括弧で示したS,T,Mは指定される集合を表している。
第1のリストは、未接続の属性の属性名を格納するリストであり、以下、このリストを入力未接続リストUCSL(または、単にUCSL)と記す。第2のリストは、未接続の変換モジュールのモジュール名もしくは変換後の属性名を格納するリストであり、以下、このリストを出力未接続リストUCTML(または、単にUCTML)と記す。第3のリストは、接続した属性同士の関係を示す情報を格納するリストであり、以下、このリストを接続リストCL(または単にCL)と記す。変換探索手段12は、接続した属性の属性名を、接続リストCLに、例えば「属性名1:属性名2」のように属性名のペアとして登録する。変換探索手段12は、ただし、変換モジュールの入力属性または出力属性の属性名に関しては、変換モジュールのモジュール名とともに登録する。また、最初の変換元の属性名に関しては、変換元の属性であることをを示す情報とともに登録し、最終的に得られる変換後の属性名に関しては、変換後の属性であることを示す情報とともに登録する。
処理countUp(S,T,M)では、変換探索手段12は、UCSLにSを登録する。また、UCTMLにTとMの和(すなわち、変換後の属性名の集合、およびi個の変換モジュール)を登録する。変換探索手段12は、接続リストCLを、空の状態(何も登録されていない状態)とする。変換探索手段12は、そして、UCSL、UCTML、CLを指定して、処理connect(UCSL,UCTML,CL)を実行する。connectの後に括弧で示したUCSL,UCTML,CLは、指定されるリストを表している。
処理connect(UCSL,UCTML,CL)において、変換探索手段12は、まず、UCSLとUCTMLが空の状態であるか否かを調べる。UCSLとUCTMLのうち少なくとも一方が空の状態であるならば、変換探索手段12は、処理connect(UCSL,UCTML,CL)を終了する。ただし、このとき、UCSLとUCTMLとがいずれも空の状態であるならば、指定された接続リストCLを変換パスとし、変換パスの候補のリストに追加し、その後、処理connect(UCSL,UCTML,CL)を終了する。後述するように、処理connect(UCSL,UCTML,CL)は再帰的に実行され、そのときに指定される接続リストCLは属性名のペアの集合である。このCLが変換パスを表す。
また、UCSLおよびUCTMLがいずれも空の状態でなければ、変換探索手段12は、UCTMLから1つの要素(mとする。)を取りだす。UCTMLから取りだす要素mは、変換モジュールである場合と、変換後の属性名の集合Tの要素である場合とがある。変換探索手段12は、UCTMLから要素mを取りだす場合、要素mとして、先に変換モジュールを取り出し、取りだす変換モジュールがなくなった場合に、変換後の属性名を取りだす。
UCTMLから取りだした要素mが変換モジュールである場合、変換探索手段12は、UCSLから、mの入力属性の数|in(m)|の属性名を取りだす全ての順列Pを作成する。ここで、Pは順列であるので、変換探索手段12は、取りだした|in(m)|個の属性名の順番が異なれば、別の並びとしてPを複数作成する。そして、変換探索手段12は、個々の順列P毎に以下の処理を行う。
変換探索手段12は、CLの複製であるリストTCLを作成する。次に、変換探索手段12は、順列P内の属性をmの入力属性の先頭から順に接続し、TCLに追加する。すなわち、順列P内の属性名とmの入力属性の属性名とを先頭から順に接続し、TCLに登録する。
続いて、変換探索手段12は、入力未接続リストUCSLから順列P内の属性名を削除するとともにmの出力属性out(m)を追加したリストであるTUCSLを作成する。また、変換探索手段12は、出力未接続リストUCTMLからmを削除したリストであるTUCTMLを作成する。
接続される属性名同士がTCL内に登録されていることにより、TUCLS内の属性名とTUCTML内に登録されている属性名または変換モジュールの入力属性とを接続すればよいことになる。変換探索手段12は、TCL,TUCSL,TUCTMLを作成した後、TUCSL,TUCTML ,TCLを指定して、処理connect(TUCSL,TUCTML ,TCL)を実行する。すなわち、再帰的に処理connectを実行する。
また、UCTMLから取りだした要素mが変換後の属性名の集合Tに含まれる要素である場合、変換探索手段12は、UCSL内の各属性名(pとする。)毎に、以下の処理を行う。
変換探索手段12は、上記の処理と同様に、CLの複製であるリストTCLを作成する。次に、変換探索手段12は、UCSL内の属性名pと要素mとを接続し、TCLに登録する。
続いて、変換探索手段12は、UCSLからpを削除したリストであるTUCSLを作成する。また、変換探索手段12は、出力未接続リストUCTMLからmを削除したリストであるTUCTMLを作成する。
そして、変換探索手段12は、上記の場合と同様に、TUCSL,TUCTML ,TCLを指定して、処理connect(TUCSL,TUCTML ,TCL)を再帰的に実行する。
ステップF242では、以上のように再帰的に処理を行って変換パスの候補を作成する。
変換パスの候補を全て作成した後(図10に示すステップF24の後)、変換探索手段12は、ステップF24で作成した各変換パスの候補に対して、それぞれ評価値を算出する(ステップF25)。ここで、変換パスの評価値の算出方法を説明するための語句として、シングルパスを定義する。シングルパスとは、変換元の属性値のうちの一つと、変換後の属性値のうちの一つと、一つ以上の変換モジュールに入力される属性値およびその一つ以上の変換モジュールが出力する属性値との関係を示す情報である。シングルパスは、変換パスが示す情報の一部である。
図14(A),(B)は、それぞれ変換パスに含まれるシングルパスの例を示している。図14(A),(B)では、図2と同様に属性や変換モジュールを示している。図12(A)では、変換パスaに含まれる4つのシングルパスa1,a2,a3,a4を示している。図14(B)では、変換パスbに含まれる2つのシングルパスb1,b2を示している。図14に示す例では、シングルパスを以下に示すような構文で記述している。すなわち、1つの変換元の属性名、1つ以上の変換モジュール、1つの変換後の属性名をそれぞれ括弧“[]”内に記述し、1つの変換元の属性名、1つ以上の変換モジュール、1つの変換後の属性名の順に、左側から記述している。変換モジュールを表す括弧内では、変換モジュールの識別子と、その変換モジュールの1つの入力属性の属性名と、その変換モジュールの1つの出力属性の属性名とを、「変換モジュールの識別子:入力属性の属性名→出力属性の属性名」の順に記述している。例えば、図14(B)に示すシングルパスb1は、以下の関係を表している。属性名「s」の属性の属性値が、属性名「i11」の属性の属性値として変換モジュールm3に入力され、属性名「o11」の属性の属性値として出力される。その属性値が、属性名「i21」の属性の属性値として、変換モジュールm4に入力され、属性名「o22」の属性の属性値として出力される。その属性値が、変換後の属性(属性名「t」の属性)の属性値である。
変換探索手段12は、ステップF25において、変換パスの各候補毎に、変換パスの候補をシングルパスに分解する。変換探索手段12は、例えば、変換元の属性名に接続される変換モジュールの入力属性、変換モジュールの出力属性に接続される変換後の属性名あるいはその次の変換モジュールの入力属性を順次辿って、変換元の1つの属性名から変換後の1つの属性名までの各経路をそれぞれシングルパスとすればよい。
そして、変換探索手段12は、1つの変換パスの候補から分解した各シングルパスについての評価値を計算する。変換探索手段12は、1つのシングルパスの評価値を計算するときに、そのシングルパスの先頭に記述される属性名を有する属性の属性値を、ステップF21で入力された変換元の属性値の中から抽出し、属性値シグニチャ作成手段15に、その属性値の属性値シグニチャを作成させる。この変換元の属性値の属性値シグニチャをVsとする。同様に、変換探索手段12は、そのシングルパスの最後に記述される属性名を有する属性の属性値を、ステップF21で入力された変換後の属性値の中から抽出し、属性値シグニチャ作成手段15に、その属性値の属性値シグニチャを作成させる。この変換後の属性値の属性値シグニチャをVtとする。変換探索手段12は、Vsに、シングルパスに属する各変換モジュールの変換シグニチャを加算し、その加算結果とVtとの内積をシングルパスの評価値として計算する。この計算式を示す。
シングルパスSPiに変換モジュールをM1,・・・,Mnのn個の変換モジュールが記載されているとする。そして、シングルパスに記述された入力属性および出力属性に応じた、シングルパスにおけるn個中i番目の変換モジュールの変換シグニチャをTViとする。このシングルパスの評価値をSPScore(Pi,Vs,Vt)とすると、変換探索手段12は、以下に示す式(4)によってシングルパスの評価値SPScore(Pi,Vs,Vt)を計算する。
ここでは、属性値シグニチャVtと、属性値シグニチャVsにシングルパスに属する各変換モジュールの変換シグニチャを加算したベクトルデータ(Vaとする。)との内積をシングルパスの評価値とする場合を示したが、属性値シグニチャVtとベクトルデータVaとのなす角度の余弦を評価値としてもよい。この場合、式(4)の右辺を、ベクトルデータVt,Vaの大きさの積で除算した値を評価値とすればよい。なお、式(4)の右辺の括弧で示した部分がベクトルデータVaに該当する。
変換探索手段12は、1つの変換パスの候補から分解した各シングルパスについて、それぞれ評価値を算出し、各シングルパスの評価値の平均値または中央値(数値を大きさ順に並べたときに中央にくる数値)を算出し、変換パスの候補の評価値とする。変換探索手段12は、各変換パスの候補のうち、評価値が最大となっているものを、データ接続問題の解となる変換パスとして予測する(ステップF26)。
ステップF26の次に、変換探索手段12は、変換モジュール実行手段17に変換パスを試行させる。すなわち、変換探索手段12は、ステップF21で入力された変換元の属性値と、予測した変換パスに含まれる各変換モジュールの実行定義情報を変換モジュール実行手段17に渡し、変換モジュール実行手段17に変換パスの順に変換モジュールを実行させ、変換元の属性値の変換結果を得る(ステップF27)。
さらに、変換探索手段12は、探索処理を終了するか否かを判定する(ステップF28)。ステップF27で得られた変換結果と、変換元の属性値に応じた変換後の属性値(ステップF21で入力されている変換後の属性値)とを比較し、属性値同士が完全一致していれば、予測された変換パスがデータ接続問題の解とし、変換探索手段12は、そのデータパスをデータ接続問題入出力部11から出力する(ステップF29)。また、予測した変換パスに対してステップF25で求めた評価値が、予め設定された閾値に満たない場合、解無しとして探索を終了する。
属性値同士が完全に一致しておらず、評価値が閾値以上である場合には、ステップF24で求めた変換パスの候補のリストを更新する(ステップF30)。具体的には、ステップF27で試行した変換パス(換言すれば、直近のステップF26で予測した変換パス)の評価値を0とする。その後、変換探索手段12は、ステップF30の後、ステップF26に移行し、ステップF26以降の処理を繰り返す。このように、ステップF26で一旦選択した変換パスの予測値を0とする(ステップF30)ので、そのステップF30の後のステップF26では、未だデータ接続問題の解して予測されていない変換パスのうち、評価値が最も高い変換パスを、解として予測する。従って、ステップF26〜F30のループ処理では、評価値が高い変換パスから順に選択して試行している。
次に、動作の具体例を説明する。図15は、変換モジュール記憶部16に入力属性等の各情報が記憶される変換モジュールの例を示す説明図である。図15では、各変換モジュールの機能を示すため、変換モジュールの名前、入力属性、出力属性、変換の例を示している。また、入力属性と出力属性では、各属性のデータ型も合わせて記述している。また、図15に示す「X」は、任意の属性に当てはまることを示している。変換例は、変換モジュールの実行によって変換される属性値の例を示している。例えば、「文字列結合」については、「田中」および「太郎」が入力された場合、その二つを結合して「田中太郎」に変換するという例を示している。「1文字抽出」、「2文字抽出等」は、入力された属性値の最初の1文字や2文字等を抽出する変換モジュールである。ここでは、図15に示すように、入力属性や出力属性に複数の属性を持つ変換モジュール、また、任意の属性属性値変換に利用できる変換モジュール、あるいは、性別等の特定の属性にのみ利用可能な変換モジュール等、多様な変換モジュールに関する情報が変換モジュール記憶部16に記憶されているものとする。なお、図15は、変換モジュールの一例であり、変換モジュール記憶部16に入力属性等の各情報が記憶される変換モジュールは、図15に例示する変換モジュールに限定されない。
また、記述形式知識記憶部14は、少なくとも、図5に例示する記述形式ID“d0001”,“d0002”、“d0003”,“d0011”,“d0012”の記述形式知識、および“d0012”と同様の、「3文字で記述されている」という条件、「4文字で記述されている」という条件、「5文字で記述されている」という条件、「6文字で記述されている」という条件を示す各記述形式知識を記憶しているものとする。記述形式知識記憶部14は、他の記述形式知識を記憶していてもよいが、以下の説明では、属性値シグニチャおよび変換値シグニチャの要素として、これらの9個の記述形式知識に対応する要素のみを示して説明する。
まず、図9に例示する変換シグニチャの作成処理の例について説明する。ここでは、図13に例示する「性別変換A」に関して、入力属性、入力属性型、出力属性、出力属性型、実行定義情報が変換モジュール記憶部16に記憶されているが、変換シグニチャが記憶されていない場合を例に説明する。変換シグニチャ作成手段19は、変換シグニチャが記憶されていない変換モジュールとして「性別変換A」を検出すると、「性別変換A」の実行定義情報を読み込む(ステップF11)。そして、変換シグニチャ作成手段19は、事例記憶部18に記憶されている属性値を任意の属性値を変換元の属性値として、変換モジュール実行手段17に変換後の属性値を取得させる(ステップF12)、変換前後の属性値の事例を事例記憶部18に記憶させる。図16は、性別変換Aに関して生成された事例を示す。変換シグニチャ作成手段19は、図16に例示するように出力(変換後の属性値)が“error ”となった事例は、事例記憶部18から削除し、残った事例に関して、それぞれ属性値シグニチャ作成性手段15に属性値シグニチャを作成させる(ステップF13)。
図17は、図16に示す事例の各属性値(「男性」、「male」、「女性」、「female」)について、属性値シグニチャ作成性手段15が作成する属性値シグニチャの例である。「男性」は、漢字2文字であるので、「漢字」および「2文字」という条件については満足するので、属性値シグニチャ作成性手段15は、その条件に対応する要素を「1」とし、他の条件に対応する要素を「0」とする。「male」等の他の属性値に関しても、同様に属性値シグニチャを作成する。
変換シグニチャ作成手段19は、各事例毎に、出力属性値の属性値シグニチャから、入力属性値の属性値シグニチャを減算するベクトル演算を行うことで、個々の変換事例毎の変換シグニチャを作成する。例えば、図17に示す「male」の属性値シグニチャの各要素から「男性」の属性値シグニチャの各要素を減算するベクトル演算を行い、「男性」から「male」への変換に関する「−1,0,1,0,−1,0,1,0,0」という変換シグニチャを作成する。同様に、「女性」から「female」への変換に関する変換シグニチャも作成する(ステップF14)。
変換シグニチャ作成手段19は、各変換事例の変換シグニチャの平均ベクトルを算出することによって、変換シグニチャを1つにまとめる(ステップF15)。図18は、このようにして作成した「性別変換A」の変換シグニチャの例を示す。この変換シグニチャでは、漢字2文字で記述されている値が、アルファベット4文字もしくはアルファベット6文字に変換されることを示している。変換シグニチャ作成手段19は、このように作成した変換シグニチャを変換モジュール記憶部16に記憶させる。
次に、データ接続問題の解となる変換パスを探索する動作の具体例を説明する。ステップF21ではデータ接続問題が入力されるが、ここでは、変換元の属性名として「性別」が入力され、変換後の属性名として「性別」が入力され、属性値の変換例として、変換元の属性値「男性」および変換後の属性値「m」が入力された場合を例にして説明する。ステップF21で上記の属性名や属性値が入力された後、属性値知識記憶部13を用いて、変換元の属性名「性別」と、変換後の属性名「性別」とに意味的に関連のある変換モジュールの候補を選択する(ステップF22)。具体的には、変換探索手段12は、式(2),式(3)の計算を行うことによって、変換パスに含まれる変換モジュールの候補を選択する。なお、このとき、変換探索手段12は、特定の属性名を持たない変換モジュール(図15において1文字抽出等のように入出力の属性が「X」となっているもの)は、ステップF22において常に選択する。図19に、この処理によって選ばれた性別に関連のある変換モジュールの候補を示す。このように、属性名「性別」に基づく選択では、文字列操作に関する変換モジュールや複数の性別に関する変換モジュールが選ばれる。
次に、変換探索手段12は、ステップF21で入力された各属性値「男性」および「m」について属性値シグニチャ作成手段15に属性値シグニチャを作成させる(ステップF23)。
次に、変換探索手段12は、ステップF22で選択した変換モジュールを組み合わせて変換パスの候補を作成し、各変換パスの候補の評価値を算出する(ステップF24,F25)。ここでは、「[性別],[性別変換A],[1文字抽出],[性別]」という変換パスが組み合わせられたとし、この評価値の算出方法について説明する。変換探索手段12は、評価値を算出する変換パスをシングルパスに分解するが、本例は、1つの属性を1つの属性に変換する例であり、シングルパスは変換パスそのものの1つのみとなる。
図20は、変換パスの評価値の算出例を示す説明図である。既に説明したように、変換パスの評価値は、式(4)に示すように、属性値シグニチャVtとベクトルデータVaの内積として計算してもよい。あるいは、属性値シグニチャ(ベクトルデータ)VtとベクトルデータVaとのなす角度の余弦を、変換パスの評価値としてもよい。ここでは、Vt,Vaのなす角度の余弦を変換パスの評価値とする場合を例にして説明する。
本例では、属性値「男性」の属性値シグニチャ「1,0,0,0,1,0,0,0,0」に、性別変換Aの変換シグニチャ(「−1,0,1,0,−1,0,0.5,0,0.5」とする。)および1文字抽出の変換シグニチャ(「0,0,0,1,0,0,0,0,0」)を加算した結果得られるベクトルデータがVaである。本例ではVaは、「0,0,1,1,0,0,0.5,0,0.5」である。このベクトルデータVaと、「m」の変換シグニチャVtである「0,0,1,1,0,0,0,0,0」とのなす角度の余弦を求めると、0.894となり、この値を変換パスの評価値とする。
変換探索手段12は、他の変換パスについても評価値を算出し、評価値が最も高い変換パスを選択する(ステップF26)。ここで、「[性別],[性別変換A],[1文字抽出],[性別]」の評価値が最も高いとすると、変換探索手段12は、「男性」を変換元として、「[性別],[性別変換A],[1文字抽出],[性別]」という変換パスに属する各変換モジュールについて順に、変換モジュール実行手段17に変換後の属性値を取得させる(ステップF27)。その結果得られる属性値が「m」であるとすると、変換探索手段12は、データ接続問題入出力部11を介して、ユーザまたは外部システムに、「[性別],[性別変換A],[1文字抽出],[性別]」という変換パスを提示する。
次に、効果について説明する。本発明では、変換シグニチャ作成手段19が、記述形式知識に基づいて、変換モジュールのメタデータである変換シグニチャを作成し、変換モジュール毎に変換モジュール記憶部16に記憶させる。従って、変換モジュールの作成者やあるアプリケーションの利用者が認識していないような観点で、変換モジュールの特徴を示すメタデータ(変換シグニチャ)を作成して、変換モジュールに対応付けることができる。また、人間が新しい記述形式の異なり方を発見した場合には、新たに記述形式知識を記述形式知識記憶部14に記憶させることによって、新たにメタデータを追加することができる。そして、本発明では、そのようなメタデータにもとづいて変換パスを予測する。従って、変換モジュールの再利用性を向上させることができる。
また、本発明では、変換パスに属する変換モジュール数が1個の場合の変換パスの候補から、探索距離Dの場合の変換パスの候補まで、それぞれ作成する。従って、1つの変換モジュールだけを単体で利用する場合だけでなく、複数の変換モジュールを組み合わせた再利用形態に応じた変換パスも見つけることができるよので、変換モジュールが再利用される機会を多くすることができる。
例えば、「奈良県○○市○○町○○」等の住所の属性値を、「近畿」等の地域を表す属性値に変換する場合を考える。「住所」の属性値から「地域」の属性値に直接変換する変換モジュールが存在しなくても、「住所」から「県名」に変換する変換モジュールおよび「県名」から「地域」に変換する変換モジュールがあれば、上記のような住所から地域への変換を可能とする変換パスを導くことができる。この場合、「奈良県」等の県名の属性値と「近畿」等の属性値は表層的には類似しないが、複数の変換モジュールを組み合わせた変換パスを導出することができ、精度よくデータ接続問題の解を見つけることができる。
また、本発明では、予め変換パスの評価値を計算しておき、変換パスの評価値が最も高いものについて、その変換パスによって所望の属性値変換が行われるかを判定する。従って、実際に属性値の変換処理を行うのに要する時間を短縮することができ、効率的に短時間でデータ接続問題の解を見つけることができる。例えば、非特許文献1に記載された技術と比較すると、非特許文献1に記載された技術では、変換を行った後に変換モジュールを評価するので、各変換モジュールについてそれぞれ属性値の変換処理を実際に行わなければならない。それに対し、本発明では、実際に属性値を変換しなければならない変換モジュール数を少なくすることができるので、効率的に短時間でデータ接続問題の解を見つけることができる。
実施形態2.
図21は、本発明による変換プログラム探索システムの第2の実施形態を示すブロック図である。第1の実施形態と同一の構成要素については、図3と同一の符号を付し、説明を省略する。第2の実施形態の変換プログラム探索システムは、データ接続問題入出力部11と、変換探索手段12と、属性知識記憶部13と、記述形式知識記憶部14と、属性値シグニチャ作成手段15と、変換モジュール記憶部16と、変換モジュール実行手段17と、事例記憶部18と、変換シグニチャ作成手段19と、変換モジュール登録部20とを備える。変換モジュール登録部20以外の構成要素の動作は、第1の実施形態で説明した動作と同様である。
変換探索手段12は、第1の実施形態と同様にデータ接続問題の解となる変換パスを導出する。変換パスは、順序付けられた1つ以上の変換モジュールが含まれている。本実施形態では、変換モジュールに含まれている順序付けられた1つ以上の変換モジュールの組み合わせを、新たな1つの変換モジュールとみなし、その変換モジュールの組み合わせに関する情報を新たな1つの変換モジュールに関する情報として変換モジュール記憶部16に記憶させる。変換探索手段12は、導出した変換パスを変換モジュール登録部20に渡す。
変換モジュール登録部20は、変換探索手段12が見つけた変換パスを受け取り、変換パスを1つの変換モジュールとして、変換モジュール記憶部16に登録する。具体的には、変換モジュール登録部20は、変換探索手段12から変換パスを受け取ると、その変換パスに含まれている順序付けられた1つ以上の変換モジュールの組み合わせに関する情報を、1つの変換モジュールに関する情報として、以下に示すように変換モジュール記憶部16に記憶させる。
変換モジュール登録部20は、変換パス内に含まれる各変換モジュールのモジュール名を新しい変換モジュールのモジュール名として変換モジュール記憶部16に記憶させる。例えば、変換パス内に含まれる各変換モジュールのモジュール名をハイフンで結んだ文字列を、新たな1つの変換モジュールのモジュール名として変換モジュール記憶部16に記憶させる。
また、変換モジュール登録部20は、変換パス内で最初に実行させる変換モジュールの入力属性および入力属性型を、新たな1つの変換モジュールの入力属性および入力属性型として変換モジュール記憶部16に記憶させる。
同様に、変換パス内で最後に実行させる変換モジュールの出力属性および出力属性型を、新たな1つの変換モジュールの出力属性および出力属性型として変換モジュール記憶部16に記憶させる。また、最後に実行させる変換モジュールの出力属性が、任意の属性でよいとされている場合(例えば、出力属性が、任意の属性に該当することを示す“X”とされている場合)、1つ手前の変換モジュールの出力属性を、新たな変換モジュールの出力属性とすればよい。手前の変換モジュール出力属性が、任意の出力属性でよいとされている場合、更に手前の変換モジュールの出力属性を辿ればよい。
また、変換モジュール登録部20は、変換パス自体を新たな1つの変換モジュールの実行定義情報とし、変換モジュール記憶部に記憶させる。新たな変換モジュールの実行定義情報となる情報は、変換パスに含まれる各変換モジュールを変換モジュールの実行順に特定することができる情報であればよい。例えば、変換パスに含まれる各変換モジュールのモジュールIDを変換モジュールの実行順に並べた情報を実行定義情報としてもよい。
さらに、変換モジュール登録部20は、変換パスを解とするデータ接続問題の入力時に入力された属性値の変換例を、事例記憶部18に記憶させる。
変換シグニチャ作成手段19は、入力属性、出力属性、実行定義情報等の各情報が変換モジュール記憶部16に記憶された変換パスについて変換シグニチャを作成し、その変換シグニチャを変換モジュール記憶部16に記憶させる。
また、変換パスに含まれる変換モジュールが1つである場合には、変換モジュール登録部20は、その変換パスに含まれる変換モジュールに関する情報を新たに登録しなくてもよい。
なお、変換モジュール事項手段17は、1つとみなした変換モジュールによる変換結果を取得する場合、その変換モジュールの実行定義情報に含まれる各変換モジュールによって特定される各実行定義情報を順次参照して、順番に各変換モジュールによる変換結果を取得していけばよい。
変換モジュール登録部20は、例えば、変換プログラム探索用プログラムに従って動作するCPUによって実現される。このCPUは、他の各構成要素(変換探索手段12等)を実現するためのCPUと同一のCPUであってもよい。
変換モジュール登録部20の動作の具体例を説明する。図22は、変換モジュール登録部20によって変換モジュール記憶部16に登録される新たなモジュールに関する情報の例を示す説明図である。変換モジュール16には、モジュールID、モジュール名、入力属性、入力属性型、出力属性、出力属性型がそれぞれ「m0001」、「性別変換A」、「[性別]」、「[String]」、「[性別]」、「[String]」であり、実行定義情報が定められた変換モジュールが記憶されているとする。同様に、モジュールID、モジュール名、入力属性、入力属性型、出力属性、出力属性型がそれぞれ「m0002」、「1文字抽出変換」、「[X]」、「[String]」、「[性別]」、「[String]」であり、実行定義情報が定められた変換モジュールが記憶されているとする。そして、変換探索手段12が、この2つの変換モジュールを「性別変換A」、「1文字抽出変換」の順に含む変換パスを導出し、その変換パスを変換モジュール登録部20に渡したとする。
すると、変換モジュール登録部20は、変換パス内における順番にモジュール名称「性別変換A」、「1文字抽出変換」をハイフンで結んだ「性別変換A−1文字抽出変換」を新たな変換モジュールのモジュール名として変換モジュール記憶部16に記憶させる。また、最初の変換モジュールの入力属性「[性別]」および入力属性型「[String]」をそれぞれ、新たな変換モジュールの入力属性、入力属性型として記憶させる。また、最後の変換モジュールの出力属性および出力属性型も、新たな変換モジュールの出力属性および出力属性型として変換モジュール記憶部16に記憶させるが、本例では出力属性が、任意の属性に該当することを示す「X」であるので、1つ手前の変換モジュール(性別変換A)の出力属性「[性別]」を出力属性として記憶させる。また、本例では、変換モジュール登録部20は、変換パスに含まれる各変換モジュールのモジュールIDを変換モジュールの実行順に並べた「[m0001],[m0002]」を実行定義情報として記憶させる。
この1つとみなされる新しい変換モジュールによる変換結果を取得する場合、変換モジュール実行手段17は、[m0001]によって特定される実行定義情報、[m0002]によって特定される実行定義情報を参照して、性別変換Aおよび1文字抽出変換による変換結果を順次取得していけばよい。
次に、本実施形態の効果について説明する。本実施形態によれば、変換探索手段12によって見つけられた変換パスを1つの変換モジュールとみなして、変換モジュール登録部20がその変換パスに関する情報を変換モジュール記憶部16に登録する。互いに異なるデータ接続問題であっても、その解として、同じ変換モジュールの組み合わせを利用できる場合が多い。従って、本実施形態のように、過去に登場した変換モジュールの組み合わせ方を記憶しておくことで、変換モジュールを再度探索する手間を省くことが可能になる。その結果、より高速にデータ接続問題を解決できる
また、変換モジュールの組み合わせを1つの変換モジュールとみなし、1つとみなされた変換モジュールに関する情報を変換モジュール記憶部16に記憶させるので、変換パスと同機能を持つ変換モジュールを新たに作成する必要がなくなる。その結果、変換モジュールの管理負担が軽減される。例えば、管理者は、変換モジュール記憶部16に記憶された情報を参照することで、過去に登場した変換モジュールの組み合わせ方を容易に認識でき、その結果、新しい変換モジュールを作成しなくよいと判断することができる。また、作成する変換モジュール数が少なくて済むので、変換モジュールに関する情報を変換モジュール記憶部16に登録する作業負担も軽減される。
実施形態3.
図23は、本発明による変換プログラム探索システムの第3の実施形態を示すブロック図である。第1の実施形態と同一の構成要素については、図3と同一の符号を付し、説明を省略する。第3の実施形態の変換プログラム探索システムは、データ接続問題入出力部11と、変換探索手段12と、属性知識記憶部13と、記述形式知識記憶部14と、属性値シグニチャ作成手段15と、変換モジュール記憶部16と、変換モジュール実行手段17と、事例記憶部18と、変換シグニチャ作成手段19と、変換モジュール生成部21とを備える。変換モジュール生成部21以外の構成要素の動作は、第1の実施形態で説明した動作と同様である。
ただし、本実施形態では、例えば、変換モジュール記憶部は、辞書ルールの集合が指定され、入力データとなる属性値が定められた場合、辞書ルールの集合から入力データとなる属性値に対応付けられた属性値を選択し、その属性値を出力データとするプログラム(以下、辞書プログラムと記す。)を予め記憶する。辞書ルールとは、入力データとなる属性値と、出力データとなる属性値とを対応付けた情報である。入力データとなる属性値は変換元の属性値であり、出力データとなる属性値とを対応付けた情報である。変換モジュール実行手段17が辞書プログラムを実行する際、入力データとなる属性値に対応する属性値が定められていなければ、エラーを返す。
外部リソース22(図23参照)は、少なくとも1つのプライマリキーを有する表構造のデータである。プライマリキーは、表で定められた属性名のうち、属性値が全てユニークであること(すなわち、属性値が重複しないこと)を保証されている属性名である。例えば、「社員番号」、「名前」、「住所」という属性名が定められ、「社員番号」、「名前」および「住所」の属性値の組の集合である情報等が、外部リソース22として用いることができる。この例では、「社員番号」がプライマリキーに該当する。また、外部リソース22として、例えば、企業内等で予め作成されているデータベースやオントロジを用いることができる。
変換モジュール生成手段21は、外部リソース22を読み込み、辞書ルールを作成する。そして、辞書ルールと辞書プログラムとの組み合わせを、新たな変換モジュールとして作成する。
図24は、変換モジュール生成手段21の動作の例を示すフローチャートである。変換モジュール生成部21は、外部リソース22が入力されることで起動する。変換モジュール生成手段21は、外部リソース22が入力されると(ステップF31)、その外部リソース22から対応する属性名を抽出する(ステップF32)。対応する属性名とは、外部リソース22内の属性値同士が対応関係を有している属性名である。具体的には、変換モジュール生成手段21は、ステップF32において、プライマリキーとなる属性名と、他の任意の1つの属性名とを抽出すればよい。例えば、外部リソース22がデータベースである場合、プライマリキーとなるフィールドと、他のフィールドとの組を抽出すればよい。
続いて、変換モジュール生成手段21は、新たな変換モジュールを作成する(ステップF33)。ステップF33において、変換モジュール生成手段21は、表のレコード順に、対応する属性名の属性値のペアを抽出し、抽出した属性値のペアの集合を辞書ルールとして変換モジュール記憶部16に記憶させる。このとき、変換モジュール生成手段21は、プライマリキーの属性値を入力(変換元)の属性値とし、もう一方の属性名の属性値を、出力される属性値(変換後の属性値)として変換モジュール記憶部16に記憶させる。全てのレコードから属性値のペアを抽出して辞書ルールとして記憶させた後、変換モジュール生成手段21は、その辞書ルールと辞書プログラムとの組を、新たな変換モジュールとして定める。このとき、変換モジュール生成手段21は、辞書ルールから属性値を抽出するSQL文のテンプレートを作成し、変換モジュールに含めてもよい。
ステップF33の後、変換モジュール生成手段21は、新たな変換モジュールのモジュール名、入力属性、入力属性型、出力属性、出力属性型、および実行定義情報を、新たな変換モジュールに関する情報として、図6に例示するように変換モジュール記憶部16に記憶させる(ステップF34)。モジュール名は、例えば、外部リソース22に付加されている名称、および入力属性、出力属性の属性名をつなげた文字列とすればよい。他の方法でモジュール名を定めてもよい。また、ステップ33で変換モジュール記憶部16に記憶させた辞書ルールを指定して辞書プログラムを実行する情報を実行定義情報とすればよい。実行定義情報は、辞書ルールと組み合わせた辞書プログラムを実行する情報であればよい。変換モジュール生成手段21は、入力属性および入力属性型として、プライマリキーとなる属性名およびその属性値の属性型を記憶させればよい。同様に、出力属性および出力属性型として、プライマリキーとペアにした属性名およびその属性値の属性型を記憶させればよい。変換モジュール生成手段21は、ステップF34において、外部リソース22から抽出して辞書ルールとした属性値の組(変換元の属性値と変換後の属性値との組)を、属性値の変換例として事例記憶部18に記憶させる。事例記憶部18に記憶させる属性値の組の数は、特に限定されない。
なお、外部リソース22にプライマリキー以外の属性名が複数存在する場合には、変換モジュール生成手段21は、プライマリキーとその他の属性名のペア毎に、ステップF32〜F34の処理を実行してもよい。
変換シグニチャ作成手段19は、入力属性、出力属性、実行定義情報等の各情報が変換モジュール記憶部16に記憶された新たな変換プログラムについて変換シグニチャを作成し、その変換シグニチャを変換モジュール記憶部16に記憶させる。
変換モジュール生成手段21は、例えば、変換プログラム探索用プログラムに従って動作するCPUによって実現される。このCPUは、他の各構成要素(変換探索手段12等)を実現するためのCPUと同一のCPUであってもよい。
次に、変換モジュール生成手段21の動作の具体例を説明する。ここでは、外部リソース22がリレーショナルデータベース(以下、RDBと記す。)内の社員に関するテーブルであり、テーブルの中に「社員番号(プライマリキー)、名前、住所」というフィールドが存在している場合を例にする。このような外部リソース22が入力されると(ステップF31)、変換モジュール生成部21は、プライマリキーである「社員番号」と「名前」の属性名のペアを外部リソース22から抽出する(ステップF32)。
次に、変換モジュール生成部21は、「社員番号」の属性値と「名前」の属性値とのペアをレコード順に全て抽出し、抽出した属性値のペアの集合を辞書ルールとして変換モジュール記憶部16に記憶させる。そして、変換モジュール生成部21は、「select プライマリキー以外の属性名 from 辞書ルール名 where プライマリキーの属性名=?」というSQL文における「プライマリキー以外の属性名」、「辞書ルール名」、「プライマリキーの属性名」に、それぞれ属性名や辞書ルール名を当てはめ、SQL文のテンプレートを作成する。例えば、「辞書ルール名」が社員テーブルであるとすると、変換モジュール生成部21は、「select 名前 from 社員テーブル where 社員番号=?」というSQL文のテンプレートを作成する。このテンプレートの“?”に入力データである属性値を代入して実行することで、変換後の属性値が辞書ルールから抽出される。また、本例では、辞書プログラムとして、SQL文のテンプレートを呼び出し、そのテンプレートの“?”に入力データである属性値を代入してSQL文を実行させるためのプログラムが予め変換モジュール記憶部16に記憶されているとする。変換モジュール生成部21は、その辞書プログラムと、作成したSQL文のテンプレートと、辞書ルールとの組を新たな変換モジュールとして定める(ステップF33)。
さらに、変換モジュール生成部21は、その変換プログラムのモジュール名、入力属性、入力属性値、出力属性、出力属性値、実行定義情報を変換モジュール記憶部16に記憶させ、辞書ルールを事例記憶部18に記憶させる(ステップF34)。
上記の例では、「社員番号」と「名前」とのペアについてステップF32〜F34を実行する場合を説明したが、変換モジュール生成部21は、「社員番号」と「住所」に関してもステップF32〜F34の処理を行ってもよい。
本実施形態では、変換モジュール生成部21が外部リソース22に基づいて新たな変換モジュールを定める。従って、外部リソース22を入力すれば、変換モジュールのうちの一部を自動的に作成することができる。この結果、本発明をアプリケーションに適応する際の作業コストを下げることができる。
また、本実施形態の変換プログラム探索システムは、第2の実施形態と同様に動作する変換モジュール登録部20を備えていてもよい。その場合、第2の実施形態と同様の効果を得られる。
実施形態4.
図25は、本発明による変換プログラム探索システムの第4の実施形態を示すブロック図である。第1の実施形態と同一の構成要素については、図3と同一の符号を付し、説明を省略する。第4の実施形態の変換プログラム探索システムは、データ接続問題入出力部11と、変換探索手段12と、属性知識記憶部13と、記述形式知識記憶部14と、属性値シグニチャ作成手段15と、変換モジュール記憶部16と、変換モジュール実行手段17と、事例記憶部18と、変換シグニチャ作成手段19と、スキーマ統合部23と、スキーマ統合問題入出力部24とを備える。
スキーマ統合問題入出力部24には、2つのスキーマとそのレコードからなるスキーマ統合問題が入力され、また、そのスキーマ統合問題の解を出力する。2つのスキーマとは、変換元のスキーマと変換後のスキーマである。レコードとは、スキーマによって定められる属性名の集合を用いて実世界の物やイベントを表現したデータである。例えば、「人」を定義する1つのスキーマが「名前」「住所」「性別」「年齢」という属性名の4つの属性を含んでいるとする。この場合、「田中太郎」「奈良県奈良市・・・」「男」「28歳」という4つの属性値の集合が1つのレコードとなる。すなわち、レコードは、スキーマによって定められる各属性の属性値の組である。スキーマ統合問題は、変換元のスキーマと、変換元のスキーマで用意されたデータの集合(変換元のスキーマのレコードの集合)と、変換後のスキーマと、変換後のスキーマで用意されたデータの集合(変換後のスキーマのレコードの集合)とによって、定められる。従って、スキーマ統合問題入出力部24には、スキーマ統合問題として、変換元のスキーマおよびそのレコードの集合と変換後のスキーマおよびそのレコードの集合とが入力される。また、スキーマ統合問題の解は、
変換元のスキーマで表現されたデータを変換後のスキーマで表現するための変換方法を示す情報であり、変換元のスキーマの属性名と変換後のスキーマの属性名との対応関係を示す情報と、変換前と変換後とで対応する属性名同士の間で属性値を変換する変換パスとを含む。スキーマ統合問題入出力部24は、スキーマ統合問題の解として、変換元のスキーマの属性名と変換後のスキーマの属性名との対応関係を示す情報および、属性値を変換するための変換パスを出力する。
スキーマ統合問題入出力部24は、例えば、外部のシステムもしくはユーザによって操作される。また、スキーマ統合問題入出力部24は、例えば、キーボード等の入力装置とディスプレイ装置等の出力装置によって実現される。あるいは、スキーマ統合問題入出力部24は、外部のシステムとのインタフェースであってもよい。本実施形態において、データ接続問題入出力部11は、スキーマ統合部23と変換探索手段12とのインタフェースである。また、後述するように、スキーマ統合部23は、例えばプログラムに従って動作するCPUによって実現されるが、スキーマ統合部23を実現するためのCPUと他の各構成要素(変換探索手段12等)を実現するためのCPUとが同一のCPUである場合、スキーマ統合部23と変換探索手段12とのインタフェースとなる回路としてデータ接続問題入出力部11が設けられていなくてもよい。
スキーマ統合部23は、変換前のスキーマと変換後のスキーマの属性名同士の対応関係およびレコード同士の対応関係を見つける。そして、スキーマ統合部23は、変換前のスキーマの属性名、変換後のスキーマの属性名、およびそれらの属性名を有する属性の属性値を、データ接続問題として、データ接続問題入出力部11を介して変換探索手段12に入力する。また、そのデータ接続問題の解である変換パスが出力されると、スキーマ統合部23は、変換前のスキーマの属性名、変換後のスキーマの属性名およびその変換パスをスキーマ統合問題入出力部24を介して出力する。
スキーマ統合部23は、スキーマ統合探索部233と、属性名類似度導出部232と、レコード照合部231とを有する。
属性名類似度導出部232は、2つの属性名を入力データとして、その2つの属性名の類似度を求める。属性名類似度導出部232は、この類似度を求める際、属性知識記憶部13を用いる。ただし、属性名類似度導出部232が求める属性名の類似度は、属性知識記憶部13が求める類似度に対してさらに演算を行った結果であってもよい。
レコード照合部231は、変換元のスキーマの属性名と変換後のスキーマの属性名とのペアを全て作成し、各ペア毎に属性名の類似度を属性名類似度導出部232に求めさせる。そして、レコード照合部231は、属性名の類似度を参照して、変換前と変換後とで対応する属性名の特定、変換元のスキーマおよび変換後のスキーマ間で対応するレコードの特定、および、そのレコード間で対応する属性値同士の特定を行う。例えば、変換前のスキーマの属性名「電話」と変換後のスキーマの属性名「Tel」とを対応付ける処理を行う。また、性別や電話番号を含む変換前のレコード「男性、0774xxxx、・・・」と、変換後のレコード「M,0774xxxx、」とを対応するレコードとして特定し、そのレコード間で対応する属性値「男性」と「M」、「0774xxxx」と「0774xxxx」等を特定する処理を行う。
スキーマ統合探索部233は、スキーマ統合問題入出力部24からスキーマ統合問題(変換元のスキーマおよびそのレコードの集合、変換後のスキーマおよびそのレコードの集合)を受け取ると、そのスキーマ統合問題をレコード照合部231に渡し、属性名の対応関係を示す情報、および対応する変換元、変換後の属性名における各属性値のうち対応する属性値の組をスキーマ統合探索部233から受け取る。
さらに、スキーマ統合探索部233は、スキーマ間で対応する属性名と、データ照合部231により特定した対応するデータ(属性値)とを参照し、データ接続問題の解を求める必要があるか否かを判定する。例えば、対応する属性名同士が同一属性名であり、対応する属性値同士が同一属性名であれば、データ接続問題の解を求める必要がなく、対応する属性名同士が異なっていたり、対応する属性値同士が異なっている場合に、データ接続問題の解を求める必要があると判定する。データ接続問題の解を求める必要がある場合、対応する属性名、およびその属性名を有する属性の属性値を、データ接続問題として、データ接続問題入出力部11に入力し、その解を得る。スキーマ統合探索部233は、対応する属性名の組とおよび属性名の組に関する変換パスを、対応する属性名の組毎にまとめて、スキーマ統合問題入出力部24を介して、出力する。ここで出力されるデータが、スキーマ統合問題の解である。
図26は、スキーマ統合部23の動作の例を示すフローチャートである。スキーマ統合部23は、スキーマ統合問題入出力部21を介してスキーマ統合問題(変換元のスキーマおよびそのレコードの集合、変換後のスキーマおよびそのレコードの集合)が入力されることで起動する。スキーマ統合問題入出力部24にスキーマ統合問題が入力されると、スキーマ統合問題入出力部24は、そのスキーマ統合問題をスキーマ統合探索部233に渡す(ステップF41)。
スキーマ統合探索部233はスキーマ統合問題をレコード照合部231に渡し、レコード照合部231は、スキーマ統合問題を受け取ると、変換前のスキーマの属性名と、変換後のスキーマの属性名とのペアを全て作成する。そして、各ペア毎に、ペアをなす2つの属性名およびその属性名の属性値の集合を属性名類似度導出部232に渡して、その属性名間の類似度を求めさせる(ステップF42)。
ステップF42において、属性名類似度導出部232は、2つの属性名、およびそのそれぞれの属性値を渡されると、属性名間の類似度を求める。ここでは、属性知識記憶部13が求める類似度に対してさらに演算を行うことによって属性名間の類似度を求める場合を例にして説明する。まず、属性名類似度導出部232は、2つの属性名の類似度を属性知識記憶部13に求めさせる。さらに、属性名類似度導出部232は、一方の属性名の属性値と、もう一方の属性名の属性値とを比較して、同じ属性値の割合を求める。例えば、一方の属性名(Aとする。)の属性値と、もう一方の属性名(Bとする。)の属性値とで共通する属性値の数をカウントし、一方の属性名(A,Bのいずれか)の属性値の個数に対する割合を計算する。属性名類似度導出部232は、属性知識記憶部13に求めさせた類似度と、上記の属性値の割合との線型和(例えば、平均)を計算し、その計算結果を、2つの属性名間の類似度として、レコード照合部231に返す。
ステップF42の後、レコード照合部231は、変換前のスキーマの属性名と、変換後のスキーマの属性名との全てのペアのうち、類似度が最高のペアを特定する(ステップF43)。レコード照合部231は、そのペアにおける変換前の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定する(ステップF44)。ステップF44で特定されたレコード同士が対応するレコードである。
例えば、ステップF43で、属性名「電話」と属性名「Tel」のペアを類似度が最高のペアとして特定したとする。この場合、ステップF44では、属性名「電話」の属性値と属性名「Tel」の属性値を比較し、同じ属性値(例えば「0774xxxx」)を含む「男性、0774xxxx、・・・」というレコード、「M、0774xxxx、・・・」というレコードをそれぞれ変換元、変換後のレコードから抽出する。
レコード照合部231は、未選択の属性名のペアの中で最も類似度の高いペアをを選択する(ステップF45)。さらに、レコード照合部231は、選択したペアにおける変換元の属性名の属性値と変換後の属性名の属性値を、それぞれ対応するレコード(ステップF44で特定したレコード)から抽出する。レコード照合部231は、選択したペアにおける2つの属性名および抽出した属性値を、スキーマ統合探索部233に渡す。抽出した属性値は、データ接続問題における変換例に該当する。
スキーマ統合探索部233は、レコード照合部231から受け取った属性名および属性値をデータ接続問題として、データ接続問題入出力部11を介して変換探索手段12に入力する。データ接続問題が入力された変換探索手段12は、第1の実施形態と同様に、解となる変換パスを導出する。スキーマ統合探索部233は、データ接続問題入出力部を介して、その変換パスを変換探索手段12から受け取る(ステップF46)。
続いて、レコード照合部231は、ステップF45の処理を終了するか否かを判定する(ステップF47)。例えば、変換元および変換後の属性名のうち、ペアとしてステップF45で選択されていない属性名が存在しなくなったときにステップF45の処理を終了すると判定する。ステップF45で選択されていない属性名が残っている場合には、ステップF45に移行し、ステップF45以降の処理を繰り返す。なお、最初にステップF45の処理を行ってから所定時間が経過しているとき、あるいは、ステップF45から始まる処理を所定回数実行したときにステップF45の処理を終了すると判定してもよい。
ステップF45では、未選択の属性名のペアの中で最も類似度の高いペアをを選択するが、類似度の差が予め定められた閾値以下であって、変換元の属性名または変換後の属性名が共通である複数のペアが存在する場合には、その複数のペアを同時に選択してもよい。例えば、属性名「名前」および属性名「First Name」のペアと、属性名「名前」および属性名「Family Name」のペアの類似度が閾値以下である場合等では、属性名「名前」が共通であるので、この2つのペアを同時に選択する。そして、「名前」、「First Name」、「Family Name」の属性値をそれぞれ抽出し、スキーマ統合探索部233に渡す。スキーマ統合探索部233は、「名前」、「First Name」、「Family Name」、およびその属性値をデータ接続問題として、データ接続問題入出力部11に入力すればよい。
ステップF45の処理を終了すると判定した場合(ステップF47のYes)、スキーマ統合探索部233は、それまでのステップF46で変換探索手段12から受け取った変換パスをスキーマ統合問題入出力部24から出力する(ステップF48)。その変換パスの組み合わせがスキーマ統合問題の解である。
スキーマ統合探索部233、属性名類似度導出部232、レコード照合部231を有するスキーマ統合部23は、例えば、変換プログラム探索用プログラムに従って動作するCPUによって実現される。このCPUは、他の各構成要素(変換探索手段12等)を実現するためのCPUと同一のCPUであってもよい。
次に、本実施形態の動作の具体例を説明する。図27は、スキーマ統合問題の例を示す説明図である。図27に示すテーブルAは、スキーマ統合問題における変換前のスキーマおよびそのレコードの例である。同様に、テーブルBは、スキーマ統合問題における変換後のスキーマおよびそのレコードの例である。図27に例示するように、「名前」、「性別」、「電話」、「住所」を属性名とするスキーマおよびそのレコードと、「First Name」、「Family Name」、「Sex」、「Tel」、「POS」を属性名とするスキーマおよびそのレコードとがスキーマ統合問題として入力されたとする(ステップF41)。
すると、レコード照合部231は、変換前のスキーマの属性名と、変換後のスキーマの属性名とのペアを全て作成し、ペアをなす2つの属性名間の類似度を属性名類似度導出部232に算出させる。本例では、『「名前」と「First Name」』、『「名前」と「Family Name」』、『「名前」と「Sex」』、『「名前」と「Tel」』、『「性別」と「First Name」』等のペアを全て作成し、各ペアにおける属性名間の類似度を属性名類似度導出部232に算出させる。
次に、レコード照合部231は、類似度が最高のペアを特定する(ステップF43)。本例では、『「電話」と「Tel」』の類似度が最高であったものとする。レコード照合部231は、そのペアにおける変換前の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定する(ステップF44)。例えば、「電話」および「Tel」の属性値として、様々な電話番号が記述されているが、本例ではそのうち「0774xxxx」が一致する。従って、その属性値を含む「田中太郎、男性、0774xxxx、奈良県・・・」を変換元のレコードから特定し、同様に、「Tarou、Tanaka、M、0774xxxx、610-xxxx」を変換後のレコードから特定する。この2つのレコードは変換元および変換後のレコードである。
そして、レコード照合部231は、未選択の属性名のペアのうち類似度が最高のペアを選択する(ステップF45)。さらに、レコード照合部231は、そのペアにおける変換元の属性名の属性値と変換後の属性名の属性値を、ステップF44で特定したレコードから抽出する。ここでは、属性名「電話」および「Tel」を選択し、その属性値(いずれも「0774xxxx」)を抽出する。スキーマ統合探索部233は、「電話」および「Tel」とその属性値をデータ接続問題入出力部11に入力し、データ接続問題の解となる変換パスを受け取る(ステップF46)。
また、まだ未選択の属性名が残っているので、再度ステップF45移行の処理を繰り返す。例えば、次に、類似度が高いペアが「性別」と「Sex」であるとする。レコード照合部231は、その属性値のペアを選択し、ステップF44で特定したレコードからその属性値「男性」および「M」を抽出する。そして、スキーマ統合探索部233がその属性名や属性値をデータ接続問題入出力部11に入力し、変換パスを受け取る。
同様の処理を繰り返し、「電話」の属性値から「Tel」の属性値への変換パス、「性別」の属性値から「Sex」の属性値への変換パス、「名前」の属性値から「First Name」、「Family Name」の属性値への変換パス、「住所」の属性値から「POS」の属性値への変換パスを順次受け取る。未選択の属性名がなくなった場合(ステップF47のYes)、スキーマ統合探索部233は、これらの変換パスを出力する(ステップF48)。
本実施形態によれば、スキーマ統合問題が入力された場合、スキーマ統合部233が変換元のスキーマの属性名と変換後のスキーマの属性名を対応付け、対応付けた属性名とその属性値を特定する。そして、変換探索手段12が、その属性名および属性値をデータ接続問題として変換パスを導出する。従って、スキーマ統合問題の解を正確に求めることができる。また、属性値の記述形式が異なっていたとしても、網羅的に変換を行ってスキーマ統合問題の解を求めているわけではなく、本実施形態では、短い処理時間で正確にスキーマ統合問題の解を求めることができる。
本実施形態の変換プログラム探索システムは、データベースの統合を行うスキーマ統合のアプリケーションに適用され、スキーマ統合問題を正確に解くことができる。
また、本実施形態は、企業内もしくは企業間に存在するデータベースの統合やシステム連携において、スキーマの異なりを解消する用途に適用可能である。
本実施形態の変換プログラム探索システムは、第2の実施形態と同様に動作する変換モジュール登録部20を備えていてもよい。その場合、第2の実施形態と同様の効果を得られる。本実施形態の変換プログラム探索システムは、第3の実施形態と同様に動作する変換モジュール生成部21を備えていてもよい。その場合、第3の実施形態と同様の効果を得られる。
図28は、本発明の概要を示す説明図である。本発明の変換プログラム探索システムは、予め定められた複数の記述形式を1つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第1シグニチャを生成する第1シグニチャ生成手段71を備える。そして、第2シグニチャ生成手段72が、第1シグニチャ生成手段71に、変換元のデータの第1シグニチャおよび変換後のデータの第1シグニチャを生成させ、その差分に基づいて、変換プログラムのメタデータである第2シグニチャを生成する。
また、プログラム情報記憶手段77は、変換プログラムにおける入力データの名称、出力データの名称、および変換プログラムを実行するための実行定義情報を記憶している。第2シグニチャ生成手段72は、作成した第2シグニチャをプログラム情報記憶手段77に追加記憶させる。
そして、プログラム候補選択手段73は、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択する。
さらに、変換パス候補作成手段74は、プログラム候補選択手段73によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する。また、評価値算出手段75は、入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第2シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する。
そして、変換パス特定手段76は、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、その変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する。
このように、本発明では、変換プログラムのメタデータである第2シグニチャを、変換元のデータの第1シグニチャおよび変換後のデータの第1シグニチャを用いて予め求めておく。そして、評価値算出手段75が、変換パスの候補の評価値を、変換パスの候補作成時に用いた変換プログラムの第2シグニチャを用いて算出する。また、その評価値の高い順に変換パスの候補を選択する。従って、人間が認識していないような観点で、変換プログラムの特徴を表す第2シグニチャを生成することができ、また、変換パスの候補の選択順位を定めることができる。
そして、選択した変換パスの候補について、実際に変換パスを試行して、変換事例と同じ結果が得られれば、選択した候補をデータ接続問題の解として特定する。従って、変換パスの各候補それぞれについて全て変換を試行しなくて済む。
このような構成により、変換プログラムの再利用性の向上を実現し、また、変換パスを特定する処理の効率化を実現することができる。
また、本発明の実施形態には、物またはイベントを定義する複数の属性の属性名を含む変換元スキーマと、変換元スキーマにおける各属性名に応じた属性値の組であるレコードの集合と、変換元スキーマに対して変換を行った変換後スキーマと、変換後スキーマにおける各属性名に応じた属性値の組であるレコードの集合とが入力され、変換元スキーマにおける属性名と変換後スキーマにおける属性名とのペアのうち、属性名の類似度が最高となるペアを特定するペア特定手段と、特定されたペアにおける変換元の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定するレコード特定手段と、レコード特定手段によって特定された変換元のレコードに含まれる属性値と、変換後のレコードに含まれる属性値とを、類似度が高い属性名のペアから順に抽出する属性値抽出手段とを備え、プログラム候補選択手段が、属性値抽出手段によって変換元のレコードおよび変換後のレコードから抽出された属性値を変換事例とし、変換元のレコードおよび変換後のレコードから抽出された属性値の属性名をそれぞれ変換元データの名称および変換後のデータの名称として変換プログラムの候補を選択する構成が開示されている。
また、本発明の各実施形態には、変換パス特定手段が特定した変換パスを新たな変換プログラムとみなして、その変換パスの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換プログラム登録手段を備え、第2シグニチャ生成手段が、その変換パスに対する第2シグニチャを生成してプログラム情報記憶手段に記憶させる構成が開示されている。
また、本発明の各実施形態には、指定された辞書により変換前のデータから変換後のデータを導出するための辞書プログラムを記憶する辞書プログラム記憶手段と、プライマリキーとなる属性の属性値およびそのプライマリキーに対応付けられる他の属性の属性値が与えられたときに、プライマリキーの属性値を変換前のデータとし、他の属性の属性値を変換後のデータとして、プライマリキーの属性値と他の属性の属性値とを対応付けた辞書を作成する辞書作成手段と、辞書作成手段が作成した辞書を辞書プログラムに対して指定することによって、辞書が指定された新たな変換プログラムを生成し、その新たな変換プログラムの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換モジュール生成手段とを備え、第2シグニチャ生成手段が、新たな変換プログラムに対する第2シグニチャを生成してプログラム情報記憶手段に記憶させる構成が開示されている。
また、本発明の各実施形態には、変換パス候補作成手段が、変換元のデータの名称を含む第1グループと、変換モジュールおよび変換後のデータの名称を含む第2グループ作成し、第1グループに属する名称と第2グループに属する変換モジュールの入力データの名称とを対応付け、第1グループから対応付けた名称を除外するとともに変換モジュールの出力データの名称を追加し、第2グループから変換モジュールがなくなったときに、第1グループに属する名称と第2グループに属する変換後のデータの名称とを対応付けることによって、変換パスの候補を作成する構成が開示されている。
なお、この出願は、2007年8月1日に出願した、日本特許出願番号2007−200852号を基礎とする優先権を主張し、その開示の全てをここに取り込む。