(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-01
(45)【発行日】2024-10-09
(54)【発明の名称】データ処理プログラム、データ処理方法、およびデータ処理装置
(51)【国際特許分類】
G06F 40/16 20200101AFI20241002BHJP
G06F 40/177 20200101ALI20241002BHJP
【FI】
G06F40/16
G06F40/177
(21)【出願番号】P 2020137907
(22)【出願日】2020-08-18
【審査請求日】2023-05-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】増井 誠生
(72)【発明者】
【氏名】清水 雅芳
【審査官】長 由紀子
(56)【参考文献】
【文献】国際公開第2020/144842(WO,A1)
【文献】米国特許出願公開第2018/0113922(US,A1)
【文献】米国特許出願公開第2018/0107724(US,A1)
【文献】米国特許出願公開第2012/0198322(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00-58
G06F 16/00-958
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
表形式のデータに登録されている複数のレコードのうちの一部のレコードに設定されている値の変換例
を示す変換例リストに変換例が追加入力されるごとに、前記変換例リストに示される変換例に従って、前記複数のレコードの値を変換する変換プログラムの生成と、前記変換プログラムを実行することによる前記複数のレコードの値の変換と、変換結果の表示と
を実行し、
前記変換例リストへのk+1回目(kは自然数)の変換例の
追加入力において変換例が追加された第1レコードより
変換結果表示における表示位置が上の1以上の第2レコードそれぞれの値が、
前記k+1回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第1変換プログラムを実行したことによる第1変換結果において
、k回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第2変換プログラムを実行したことによる第2変換結果から変更されたか否かを判断し、
前記第2レコードの値が変更された場合、前記
第1変換結果の表示において前記第2レコードの
変更された値を強調表示させる、
処理を実行させるデータ処理プログラム。
【請求項2】
前記第1レコードが複数ある場合、複数の前記第1レコードのうちの
表示位置が最も下の最下位第1レコードより
表示位置が上のレコードを前記第2レコードとする、
請求項1記載のデータ処理プログラム。
【請求項3】
複数の前記第1レコードのうちの
、前記最下位第1レコードより
表示位置が上で、前記第2レコードでもある
前記第1レコードの値を強調表示の対象から除外する、
請求項2記載のデータ処理プログラム。
【請求項4】
前記第1レコードより
表示位置が下のレコードの値を第1表示態様で表示させ、前記第2レコードのうちの、前記
第1変換結果において
前記第2変換結果から値が変更されていない無変更第2レコードの値を前記第1表示態様とは異なる第2表示態様で表示させ、前記第2レコードのうちの、前記
第1変換結果において
前記第2変換結果から値が変更された変更第2レコードの値を前記第1表示態様および前記第2表示態様のいずれとも異なる第3表示態様で表示させる、
請求項1ないし
3のいずれかに記載のデータ処理プログラム。
【請求項5】
コンピュータが、
表形式のデータに登録されている複数のレコードのうちの一部のレコードに設定されている値の変換例
を示す変換例リストに変換例が追加入力されるごとに、前記変換例リストに示される変換例に従って、前記複数のレコードの値を変換する変換プログラムの生成と、前記変換プログラムを実行することによる前記複数のレコードの値の変換と、変換結果の表示と
を実行し、
前記変換例リストへのk+1回目(kは自然数)の変換例の
追加入力において変換例が追加された第1レコードより
変換結果表示における表示位置が上の1以上の第2レコードそれぞれの値が、
前記k+1回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第1変換プログラムを実行したことによる第1変換結果において
、k回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第2変換プログラムを実行したことによる第2変換結果から変更されたか否かを判断し、
前記第2レコードの値が変更された場合、前記
第1変換結果の表示において前記第2レコードの
変更された値を強調表示させる、
データ処理方法。
【請求項6】
複数のレコードが登録された表形式のデータを記憶する記憶部と、
前記複数のレコードのうちの一部のレコードに設定されている値の変換例
を示す変換例リストに変換例が追加入力されるごとに、前記変換例リストに示される変換例に従って、前記複数のレコードの値を変換する変換プログラムの生成と、前記変換プログラムを実行することによる前記複数のレコードの値の変換と、変換結果の表示と
を実行し、
前記変換例リストへのk+1回目(kは自然数)の変換例の
追加入力において変換例が追加された第1レコードより
変換結果表示における表示位置が上の1以上の第2レコードそれぞれの値が、
前記k+1回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第1変換プログラムを実行したことによる第1変換結果において
、k回目の変換例の追加入力後の前記変換例リストに示される変換例に従って生成された第2変換プログラムを実行したことによる第2変換結果から変更されたか否かを判断し、前記第2レコードの値が変更された場合、前記
第1変換結果の表示において前記第2レコードの
変更された値を強調表示させる処理部と、
を有するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理プログラム、データ処理方法、およびデータ処理装置に関する。
【背景技術】
【0002】
データ処理分野においては、統計的分析やデータサイエンス分野を中心に、表形式のデータを、利用目的に応じて整形する場合がある。表形式のデータの整形技術としてPBE(Programming By Example)と呼ばれる技術がある。表形式のデータは、例えば複数のレコードを含むデータテーブルである。
【0003】
PBEは、データテーブルに登録された一部のレコードについての変換例をコンピュータに入力することで、変換例に従ってコンピュータに他のレコードのデータ変換を自動的に実行させる技術である。この場合、変換例が与えられたコンピュータは、変換前と変換後とのレコード内の値の相違点を検出し、相違点に対応する変換を行うための変換ルール(以下、レシピと呼ぶ)を生成する。レシピは、例えば、レコード内の値の操作を示すオペレータの組み合わせで表現される。オペレータは、例えば1以上の命令を含む関数である。
【0004】
データ変換に関する技術としては、例えば構造化データの変換規則の正誤を検証することができるようにする情報処理方法が提案されている。また変換ルールに基づくデータ変換処理と類推に基づくデータ変換処理とを併用したデータ変換装置も提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2008-108144号公報
【文献】特開平11-53360号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
PBEにおけるレシピの変換精度はどのような変換例が入力されたかに依存する。そのため、ユーザは、変換例の入力とレシピの生成との試行錯誤を繰り返しながら、レシピの変換精度を高めていく。この場合、ユーザは、レシピを生成するごとに、そのレシピを適用したデータテーブル内のレコードの変換をコンピュータに実行させる。ユーザは、適用結果をコンピュータに表示させ、ユーザの意図に反した変換が行われたレコードが存在するかどうかを目視で確認する。このような変換結果の目視確認では、レコード数が大量になると、ユーザの意図に反した変換の見逃しが発生しやすい。レシピ生成過程での誤った変換結果を見のがしてしまうと、変換精度が低い(ユーザの意図に反する変換が多く発生する)レシピしか得られない。
【0007】
1つの側面では、本発明は、ユーザの意図に反する変換の発生を抑制することを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、以下の処理をコンピュータに実行させるデータ処理プログラムが提供される。
コンピュータは、表形式のデータに登録されている複数のレコードのうちの一部のレコードに設定されている値の変換例の入力に応じた、複数のレコードの値を変換する変換プログラムの生成と、変換プログラムを実行することによる複数のレコードの値の変換と、変換結果の表示とを繰り返し実行する。さらにコンピュータは、2回目以降の変換例の入力において変換例が追加された第1レコードより上位側にある1以上の第2レコードそれぞれの値が、最新の変換結果において前回の変換結果から変更されたか否かを判断する。そしてコンピュータは、第2レコードの値が変更された場合、最新の変換結果の表示において第2レコードの値を強調表示させる。
【発明の効果】
【0009】
1態様によれば、ユーザが意図しない変換の発生を抑制することができる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係るデータ処理方法の一例を示す図である。
【
図3】サーバのハードウェアの一例を示す図である。
【
図4】サーバの機能の一例を示すブロック図である。
【
図6】データテーブルの変換結果確認の一例を示す図である。
【
図7】データテーブル変換処理の手順の一例を示すフローチャートである。
【
図8】変換を繰り返すことによるデータテーブル内のレコードの変換履歴の一例を示す図である。
【
図9】1回目の変換例入力時の変換例入力画面の一例を示す図である。
【
図10】1回目のレシピ生成によって生成されるレシピの一例を示す図である。
【
図11】1回目の変換時の変換結果確認画面の一例を示す図である。
【
図12】2回目の変換例入力画面の一例を示す図である。
【
図13】2回目のレシピ生成によって生成されるレシピの一例を示す図である。
【
図14】2回目の変換時の変換結果確認画面の一例を示す図である。
【
図15】3回目の変換例入力画面の一例を示す図である。
【
図16】3回目のレシピ生成によって生成されるレシピの一例を示す図である。
【
図17】3回目の変換時の変換結果確認画面の一例を示す図である。
【
図18】日本語の文字列が設定されたデータテーブルの一例を示す図である。
【
図19】日本語のデータテーブルの変換結果確認の一例を示す図である。
【
図20】変換を繰り返すことによる日本語のデータテーブル内のレコードの変換履歴の一例を示す図である。
【
図21】1回目の日本語の変換例入力時の変換例入力画面の一例を示す図である。
【
図22】1回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
【
図23】1回目の日本語変換時の変換結果確認画面の一例を示す図である。
【
図24】2回目の日本語の変換例入力画面の一例を示す図である。
【
図25】2回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
【
図26】2回目の日本語変換時の変換結果確認画面の一例を示す図である。
【
図27】3回目の日本語の変換例入力画面の一例を示す図である。
【
図28】3回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
【
図29】3回目の日本語変換時の変換結果確認画面の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
【0012】
図1は、第1の実施の形態に係るデータ処理方法の一例を示す図である。
図1には、データ処理方法を実現するためのデータ処理装置10が示されている。データ処理装置10は、例えばデータ処理プログラムを実行することにより、データ処理方法を実現することができる。
【0013】
データ処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えばデータ処理装置10が有するメモリ、またはストレージ装置である。処理部12は、例えばデータ処理装置10が有するプロセッサ、または演算回路である。
【0014】
記憶部11には、複数のレコードが登録された表形式のデータ1が記憶されている。
処理部12は、複数のレコードのうちの一部のレコードに設定されている値の変換例の入力に応じて、複数のレコードの値を変換する変換プログラム3,6を生成する。また処理部12は、生成した変換プログラム3,6を実行することによる複数のレコードの値の変換を実行する。さらに処理部12は、複数のレコードの値を変換して得られた変換結果4,7をモニタなどに表示させる。処理部12は、これらの変換プログラム3,6の生成処理、変換プログラム3,6による変換処理、変換結果4,7の表示処理を、変換例の入力ごとに繰り返し実行する。
【0015】
2回目以降の変換処理を行うごとに、処理部12は、2回目以降の変換例の入力において変換例が追加された第1レコードより上位側にある1以上の第2レコードそれぞれの値が、最新の変換結果7において前回の変換結果4から変更されたか否かを判断する。例えば表示位置が上のレコードほど上位のレコードである。レコードが所定の規則でソートされ、ソート後の順で表示される場合、ソート後の順番が先のレコードほど上位のレコードである。そして処理部12は、第2レコードの値が変更された場合、最新の変換結果7の表示において第2レコードの値を強調表示させる。
【0016】
なお第2レコードは、ユーザが変換結果を確認したレコードであり、以下、確認済レコードと呼ぶこともある。また変換例が追加された第1レコードを第2レコードに含めてもよい。
【0017】
ユーザ8は、このようなデータ処理装置10を利用してPBEによるデータ変換を行うことができる。例えばユーザ8は、キーボードなどの入力装置を操作し、データ処理装置10に最初の変換例を入力する。すると処理部12により、入力された変換例を含む変換例リスト2が生成される。変換例リスト2には、データ1内の上位の2つのレコードの変換後の値が指定されている。
【0018】
処理部12は、変換例が示された変換例リスト2が入力されると、変換例リスト2に示される変換例と同じ変換を実施することができる変換プログラム3を生成する。次に処理部12は、データ1内の複数のレコードを対象として変換プログラム3を実行することにより、複数のレコードの値を変換する。そして処理部12は、変換結果4をモニタに表示させる。
【0019】
ユーザ8は、表示された変換結果4に示される各レコードの値が、意図通りに変換されているか否かを上位から順に確認する。ユーザ8は、誤って変換された値を見つけると、該当レコードの意図に沿った変換後の値を指定した変換例をデータ処理装置10に入力する。すると、例えば入力された変換例を変換例リスト2に追加した新たな変換例リスト5が生成される。変換例リスト5では、5番目のレコードの変換例が追加されている。
【0020】
すると処理部12は、変換例リスト5内の変換例と同じ変換を実施することができる変換プログラム6を生成する。次に処理部12は、データ1内の複数のレコードを対象として変換プログラム6を実行することにより、複数のレコードの値を変換する。そして処理部12は、変換結果7をモニタに表示させる。
【0021】
処理部12は、変換結果7を表示させる際、変換例が追加されたレコード(
図1の例では5番目のレコード)を第1レコードとする。処理部12は、第1レコードより上位側にある1以上のレコード(
図1の例では1番目から4番目のレコード)を第2レコードとする。処理部12は、第2レコードそれぞれの値が、最新の変換結果7において前回の変換結果4から変更されたか否かを判断する。
図1の例では、変換結果7に示される3番目のレコードの値が、変換結果4に示される該当レコードの値から変更されている。この場合、処理部12は、最新の変換結果7の表示において、値が変更された第2レコード(3番目のレコード)の値を強調表示させる。
図1の例では、3番目のレコードの値にアンダーラインを引くことにより強調表示されているが、処理部12は、該当レコードの値を強調色で表示させることもできる。
【0022】
このように第2レコードのうち、最新の変換結果7に示される値が、前回の変換結果4に示される値から変更された第2レコードは、その値が強調表示される。ここで第2レコードは、変換例が追加されたレコードよりも上位のレコードである。ユーザ8は、変換結果4を上位から確認しているため、第2レコードは、意図通りに値が正しく変換されたことが確認済のレコードである。従って、第2レコードについて、変換例が更新されたことにより変換後の値が変更されると、その値は正しい値から誤った値に変換されたこととなる。すなわちデータ処理装置10は、正しく変換されたことが確認されたレコードの値が誤った値に変更されていることを、強調表示によってユーザ8に注意喚起することができる。
【0023】
ユーザ8は、強調表示された値を修正するような変換例の入力を行うことで、以後に生成される変換プログラムの変換精度を向上させることができる。その結果、ユーザの意図に反する変換の発生が抑制される。しかも誤った値に変換されたその値が強調表示されるため、変換が正しく行われたか否かの確認負荷が軽減される。
【0024】
なお変換例の更新を繰り返すと、第1レコードが複数生成される。第1レコードが複数ある場合、処理部12は、例えば複数の第1レコードのうちの最も下位にある最下位第1レコードより上位側にあるレコードを第2レコードとする。これにより、変換結果の確認を少なくとも1度したことがあるレコードは、第2レコードとなる。その結果、変換結果が確認済のレコードを正しく抽出することができる。
【0025】
また処理部12は、複数の第1レコードのうちの、最後の変換例の入力において変換例が追加された最新第1レコードが、最下位第1レコードより上位側にある場合、第2レコードでもある最新第1レコードの値を強調表示の対象から除外してもよい。最後の変換例の入力において変換例が追加されたレコードは、前回の変換結果に誤りがあったレコードである。誤りがあったレコードの値が正しく変換されるように変換例が追加されており、今回の変換結果7に示される値は正しい値であると予想される。この値が強調されることを抑止することで、ユーザ8の意図に反した変換が行われたレコードの値に限定して強調表示することが可能となる。
【0026】
なお変換例が指定されたレコード(初回の変換処理において変換例が指定されたレコードおよび2回目以降の変換処理において変換例が指定された第1レコードを含む)の一部について、変換例の通りに変換できない場合もあり得る。これは入力された変換例の一部に誤りがある場合や、変換プログラム3,6の生成アルゴリズムが変換例に十分に対応できていない場合に発生する可能性がある。そこで処理部12は、変換例が指定されたレコードのうち、指定された変換例と異なる値に変換されたレコードについては、その値を強調表示してもよい。これにより、変換例が指定されたレコードの値が変換例と異なる値に変換された場合、変換例通りに変換されていないことをユーザ8に通知することができる。
【0027】
また処理部12は、変換結果の確認をユーザ8が少なくとも1回行った第2レコードをそれ以外のレコードと区別して、変換結果7を表示することもできる。例えば処理部12は、第1レコードより下位のレコードの値を第1表示態様で表示させる。また処理部12は、第2レコードのうちの、最新の変換結果7において前回の変換結果4から値が変更されていない無変更第2レコードの値を第1表示態様とは異なる第2表示態様で表示させる。さらに処理部12は、第2レコードのうちの、最新の変換結果7において前回の変換結果4から値が変更された変更第2レコードの値を第1表示態様および第2表示態様のいずれとも異なる第3表示態様で表示させる。これにより、ユーザ8は、どのレコードまでが確認済なのかを容易に把握することができる。
【0028】
なお処理部12は、変換例が指定されたレコードの値については、指定された変換例と変換結果とが一致していれば、例えば第2表示態様で表示させる。処理部12は、変換例が指定されたレコードのうち、指定された変換例と変換結果が一致しないレコードの値は、例えば第3表示態様で表示させる。
【0029】
図1の例では、第1表示態様は細字のフォントによる文字表記であり、第2表示態様は太字かつ斜体のフォントによる文字表記であり、第3表示態様は太字のフォントに下線を引いた文字表記である。なお処理部12は、各表示態様を、色によって区別できるようにすることもできる。例えば処理部12は、第1表示態様は黒色のフォントによる文字表記、第2表示態様は青色のフォントによる文字表記、第3表示態様は赤色のフォントによる文字表記とすることができる。
【0030】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態では、サーバ上のデータベースに格納されている表形式のデータに基づいて、ユーザの用途に応じた形式に変換するものである。
【0031】
図2は、システム構成の一例を示す図である。サーバ100と端末装置30がネットワーク20を介して接続されている。サーバ100は、表形式のデータを管理するコンピュータである。端末装置30は、データの形式の変換を実施しようとするユーザが使用するコンピュータである。なおサーバ100は、第1の実施の形態に示したデータ処理装置10の一例である。
【0032】
図3は、サーバのハードウェアの一例を示す図である。サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0033】
メモリ102は、サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0034】
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0035】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0036】
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0037】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0038】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0039】
機器接続インタフェース107は、サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0040】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
【0041】
サーバ100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示したデータ処理装置10も、
図3に示したサーバ100と同様のハードウェアにより実現することができる。
【0042】
サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またサーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0043】
ユーザは、端末装置30を用いてサーバ100に対してアクセスし、サーバ100に格納されているデータテーブルを変換するためのレシピをサーバ100に生成させることができる。サーバ100は、端末装置30を介して入力された変換例に従ってレシピを生成し、そのレシピを用いてデータテーブル内のレコードの値を変換する。なおレシピは、第1の実施の形態に示した変換プログラムの一例である。
【0044】
図4は、サーバの機能の一例を示すブロック図である。サーバ100は、記憶部110、変換例取得部120、レシピ生成部130、データ変換部140、および変換結果出力部150を有する。
【0045】
記憶部110は、データテーブル111とレシピ112とを記憶する。データテーブル111は、複数のレコードが登録された表形式のデータである。レシピ112は、データテーブル111を変換するための変換ルールを示す情報である。記憶部110は、例えばサーバ100が有するメモリ102またはストレージ装置103の記憶領域の一部である。
【0046】
変換例取得部120は、端末装置30から、レコード内の値の変換例を取得する。例えば変換例取得部120は、変換例入力画面の画面データを端末装置30に送信する。端末装置30では変換例入力画面が表示される。ユーザが変換例入力画面に対して一部のレコードの値の変換例を入力すると、端末装置30からサーバ100へ入力された変換例を示す情報(例えば変換例リスト)が送信される。変換例取得部120は、端末装置30から変換例リストを取得すると、その情報をレシピ生成部130に送信する。
【0047】
レシピ生成部130は、変換例取得部120から送られた変換例リストに基づいて、データテーブル111内のレコードの値を変換するためのレシピ112を生成する。レシピ生成部130は、生成したレシピ112を記憶部110に格納する。
【0048】
データ変換部140は、レシピ112を用いてデータテーブル111内のレコードの値を変換し、変換後の値を含む新たなデータテーブルを生成する。データ変換部140は、変換結果として生成されたデータテーブルを変換結果出力部150に送信する。
【0049】
変換結果出力部150は、変換結果を出力する。例えば変換結果出力部150は、変換結果として得られたデータテーブルを含む変換結果確認画面の画面データを生成する。レシピの生成が繰り返し行われた場合、変換結果出力部150は、過去に変換が正しいかどうかの確認が行われたレコードのうち、前回生成されたレシピによる変換結果と異なる変換が行われたレコードを強調表示させるような画面データを生成する。変換結果出力部150は、変換結果確認画面の画面データを端末装置30に送信する。
【0050】
なお、
図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、変換元のデータテーブル111の例について説明する。
【0051】
図5は、データテーブルの一例を示す図である。
図5に示すデータテーブル111には、通り、市名、および州名の列が設けられている。データテーブル111内のレコードは、各列に対応するフィールドを含む。通りの列には、通り名が設定されている。市名の列には、対応する通りを有する市の名称が設定されている。州名の列には、対応する市を有する州の名称が設定されている。
図5の例では、州の名称は略記号によって表されている。
【0052】
ユーザはサーバ100に対して、
図5に示すデータテーブル111を変換元として、PBEによって別のデータテーブルを生成させることができる。その際、ユーザは、レシピの適用結果を目視で確認することとなる。例えばユーザは、レコード数が多ければページ切替または縦スクロールなどを用いて確認対象のレコードを画面に表示させ、変換結果がユーザの意図通りとなっているかを目視で確認する。
【0053】
図6は、データテーブルの変換結果確認の一例を示す図である。
図6には、市名と州名に基づいて、別の名前を生成する場合の例が示されている。例えばユーザは、変換例リスト41に、変換例として「EASTON,MD」の変換後の値「Easton,MD」と、「SALISBURY,MD」の変換後の値「Salisbury,MD」とを入力したものとする。サーバ100のレシピ生成部130は、変換例リスト41に示される変換例に従ってデータテーブル111内の各レコードの値を変換するためのレシピを生成する。例えば「市名をCamelCaseに変換」する変換ルールがレシピ51として生成されたものとする。「CamelCase」とは、複合語の各語の先頭の文字を大文字で書き表す表記形態である。
【0054】
レシピ51が生成されると、データ変換部140によりデータテーブル111内の通りの名称がレシピ51に従って変換される。変換結果として新たなデータテーブル42が生成される。変換結果のデータテーブル42は、変換結果出力部150によって端末装置30に送信され、端末装置30の画面に表示される。
【0055】
ユーザは、端末装置30に表示されたデータテーブル42に基づいて変換結果を確認する。例えばユーザは、データテーブル42の上位のレコードから順に変換結果の誤りの有無を確認していく。変換が誤っているレコードを、ユーザが見つけた場合、現在のレシピによる変換が不正確であると判断できる。そのためユーザは、変換が誤っているレコードより下位のレコードの確認作業はせずに、変換が誤っているレコードの正しい変換結果を変換例として追加して、レシピの再生成をサーバ100に指示する。
【0056】
ここでユーザが意図した変換は、通りを含む市名から、その通りを含むCBSA(Core Based Statistical Area)への変換であるものとする。CBSAは、統計上の区域であり、各地域の人数が大体一定になるように近隣市町をまとめたものである。
図6の例では、データテーブル42に含まれる「Santa Cruz,CA」はCBSAではない。この場合、ユーザは「SANTA CRUZ,CA」に対応するCBSAを、変換例として変換例リスト43に追加する。
【0057】
このような変換例の追加、レシピの生成、生成したレシピによる変換結果の確認を繰り返すことで、正しい変換を行うためのレシピを生成することができる。この場合、レシピの変換精度を高めるには、変換結果の確認作業において、誤った変換が行われたレコードの見落としを抑止することが重要となる。特に繰り返し変換結果の確認作業をしているユーザは、以前の変換で確認したレコードについても繰り返し確認することとなる。以前の変換で確認したレコードの確認では、確認作業が漫然となりチェックが甘くなりやすい。すなわち、以前の変換で確認したレコードについては、正しく変換されていない場合でも、誤りが見落とされる可能性が高い。
【0058】
そこでサーバ100は、データ変換のレシピを繰り返して生成する処理系において、目視確認作業に伴う利用者の負担を減らすため、以前に変換結果を確認したレコードについて最新のレシピにより変換結果が変わった場合、そのレコードを強調表示する。これにより、ユーザは、繰り返しによって変換結果が変わったレコードについて、もともと正しかったものが誤りになってしまった可能性があると容易に認識でき、そのレコードを注意深くチェックすることができる。その結果、誤った変換の見落としを減らすことができる。
【0059】
次にサーバ100におけるデータテーブル変換処理の手順について説明する。
図7は、データテーブル変換処理の手順の一例を示すフローチャートである。以下、
図7に示す処理をステップ番号に沿って説明する。
【0060】
[ステップS101]変換例取得部120は、変換元のデータテーブル111を記憶部110から取得する。
[ステップS102]変換例取得部120は、データテーブル111に含まれるレコードのうちの一部のレコードの値の変換例を取得する。例えば変換例取得部120は、変換例入力画面の画面データを端末装置30に送信する。ユーザが端末装置30を用いて変換例入力画面に、一部のレコードの値の変換例を入力すると、端末装置30からサーバ100へ、入力された変換例を含む変換例リストが送信される。変換例取得部120は、端末装置30から送られた変換例リストを受信し、その情報に示される変換例を取得する。
【0061】
[ステップS103]レシピ生成部130は、変換例取得部120が取得した変換例に基づいて、レシピ112を生成する。例えばレシピ生成部130は、予め用意されたオペレータ(レコード内の値の操作命令)を組み合わせ、変換例に従った変換を行うためのプログラムを生成する。生成されたプログラムがレシピ112となる。
【0062】
[ステップS104]データ変換部140は、変換元のデータテーブル111にレシピ112を適用する。例えばデータ変換部140は、データテーブル111内のすべてのレコードに対して、レシピ112に示されているオペレータを、レシピ112に示されている順番に実行する。データ変換部140は、レシピの適用により値が変更された各レコードを含むデータテーブルを生成し、そのデータテーブルを変換結果として出力する。
【0063】
[ステップS105]変換結果出力部150は、直前のステップS104で実施したレシピ適用が、1回目のレシピ適用か否かを判断する。変換結果出力部150は、1回目のレシピ適用であれば処理をステップS106に進める。また変換結果出力部150は、2回目以降のレシピ適用であれば処理をステップS107に進める。
【0064】
[ステップS106]変換結果出力部150は、変換結果として生成されたデータテーブルを端末装置30に表示させる。例えば変換結果出力部150は、生成されたデータテーブルを含む変換結果確認画面を示す画面データを生成し、その画面データを端末装置30に送信する。すると端末装置30では、モニタに変換結果確認画面が表示される。その後、変換結果出力部150は処理をステップS110に進める。
【0065】
[ステップS107]変換結果出力部150は、変換結果として生成されたデータテーブルに含まれるレコードのうち、ユーザによる変換結果の確認が少なくとも1回行われている確認済レコードを判別する。例えば変換結果出力部150は、データテーブル内の変換例が設定されたレコードのうち、最も下位のレコードを特定する。変換結果出力部150は、特定したレコードを含め、そのレコードより上位のレコードを確認済レコードとする。
【0066】
[ステップS108]変換結果出力部150は、前回のレシピ適用時の変換後の値と今回のレシピ適用時の変換後の値とが異なる確認済レコードを特定する。なお変換結果出力部150は、今回のレシピ生成のために変換例が追加されたレコードについては、特定対象から除外する。
【0067】
例えば変換結果出力部150は、今回のレシピ適用により生成されたデータテーブルの確認済レコードごとに、前回のレシピ適用によって生成されたデータテーブルの対応するレコードと、設定されている値を比較する。そして変換結果出力部150は、設定されている値の少なくとも一部が異なるレコードであり、かつ今回のレシピ生成のために変換例が追加設定されたレコード以外のレコードを、確認済レコードとして特定する。
【0068】
[ステップS109]変換結果出力部150は、特定した確認済レコードの値を強調して、変換結果として生成されたデータテーブルを端末装置30に表示させる。例えば変換結果出力部150は、生成されたデータテーブルを含み、特定した確認済レコードの値の表示色を他のレコードと異なる色とした変換結果確認画面を示す画面データを生成する。そして変換結果出力部150は、生成した画面データを端末装置30に送信する。すると端末装置30では、特定した確認済レコードを強調表示した変換結果確認画面がモニタに表示される。
【0069】
[ステップS110]変換結果出力部150は、要修正箇所があるか否かを判断する。例えば変換結果出力部150は、端末装置30からいずれかのレコードについての変換に失敗した旨の情報を受け取った場合、要修正箇所があると判断する。要修正箇所があれば処理をステップS102に進める。また変換結果出力部150は、要修正箇所がなければ処理をステップS111に進める。
【0070】
[ステップS111]変換結果出力部150は、最後の変換で変換結果として生成されたデータテーブルを記憶部110に格納する。また、変換結果出力部150は、最後の変換に使用したレシピを記憶部110に格納する。
【0071】
このように、要修正箇所がなくなるまで変換例の追加、レシピの生成、およびデータテーブルの変換が繰り返される。要修正箇所があるか否かは、ユーザによる変換結果確認画面の確認結果に基づいて判断される。変換結果確認画面では、変換後の値が前回と異なる確認済レコードの値が強調表示されている。そのため、以前に変換結果が正しいと確認したことのあるレコードについて、新たなレシピでは誤った変換結果となってしまった場合において、ユーザがそのレコードを見落とすことが抑止される。
【0072】
図8は、変換を繰り返すことによるデータテーブル内のレコードの変換履歴の一例を示す図である。変換履歴50には、変換元のレコードに対応付けて、変換例と、変換例に応じて生成されたレシピ51~53を適用した変換結果とが示されている。
図8に示した例では、変換例の指定が3回実施されており、3つのレシピ51~53が生成されている。ユーザが意図する変換は、市名と州名からCBSAの区域名への変換であるものとする。
【0073】
1回目の変換例指定では、「EASTON,MD」を「Easton,MD」に変換する変換例と、「SALISBURY,MD」を「Salisbury,MD」に変換する変換例とが指定されている。
図8の例では、この2つの変換例に基づいて「市名をCamelCaseにする」のオペレータが記述されたレシピ51が生成されている。
【0074】
レシピ51を適用することによる各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。ユーザが上位のレコードから順に変換結果を確認していくと、5番目のレコードについて誤った変換が行われていることに気づく。5番目のレコードは「SANTA CRUZ,CA」から「Santa Cruz,CA」に変換されている。しかし「Santa Cruz,CA」はCBSAの区域名ではない。
【0075】
そこでユーザは、5番目のレコードの変換例「Santa Cruz-Watsonville,CA」を追加で指定する。
図8の例では、2回目の変換例指定に基づいて、「市名を含む区域名を選ぶ」のオペレータが記述されたレシピ52が生成されている。
【0076】
レシピ52を適用した各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。このとき先頭のレコードから、追加で変換例が指定された5番目のレコードまでは、前回の変換結果をユーザが確認した確認済レコードである。確認済レコードのうち3番目のレコードについては、前回の変換と異なる値に変換されている。前回の変換の際に正しいと判断された変換結果から異なる変換結果に変わったことで、このレコードに対する2回目の変換結果は誤った変換である可能性が高い。
【0077】
なお5番目のレコードについては、前回の変換と異なる値に変換されているが、このレコードは変換例が指定されたレコードであり、前回の変換結果が誤っていたレコードである。この5番目のレコードは変換例の通りに変換されており、2回目の変換結果は正しい。
【0078】
変換結果出力部150は、例えば変換結果が前回から変更された確認済レコード(第1の実施の形態における変更第2レコード)については、表示色を赤色にすることで強調表示する。これにより、ユーザによる確認作業時に、3番目のレコードについて誤った変換が行われていることの見落としが抑止される。なお、変換例が今回追加されたレコードは、強調表示の対象から除外される。
【0079】
また変換結果出力部150は、例えば変換結果が前回から変更されていない確認済レコード(第1の実施の形態における無変更第2レコード)については表示色を青色にすることで、他のレコードの色(例えば黒色)と異なる色で表示する。これにより、ユーザは確認済のレコードを認識することができ、すでに正しく変換されたことが確認され、2回目の変換結果でも同様に変換されたレコードを容易に識別できる。
【0080】
ユーザは、3番目のレコードについて変換結果が誤っていることを確認すると、そのレコードの変換例「Cambridge,MD」を追加で指定する。
図8の例では、3回目の変換例指定に基づいて、「市名と州名から区域名を得る」のオペレータが記述されたレシピ53が生成されている。
【0081】
レシピ53を適用した各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。このとき先頭のレコードから、過去に追加で変換例が指定された5番目のレコードまでは、以前の変換結果をユーザが確認した確認済レコードである。確認済レコードのうち3番目のレコードについては、前回の変換と異なる値に変換されているが、このレコードは変換例が追加で指定されたレコードである。そこで変換結果出力部150は、確認済レコードについては表示色を青色にすることで、他のレコードの色(例えば黒色)と異なる色で表示する。
【0082】
このように誤った変換が行われたレコードの変換例を順次追加することで、正しい変換が可能なレシピ53が生成される。そしてレシピ53を適用してデータテーブル111を変換することで、データテーブル111内のすべてのレコードに関して、ユーザの意図通りの変換を行うことができる。
【0083】
以下、
図9~
図17を参照して、
図8に示したようなPBEによるデータテーブル111の変換処理を行う際のユーザの操作および生成されるレシピについて詳細に説明する。以下の例では、データテーブル111を入力(列0:通り,列1:市名,列2:州名)とし、データテーブル111にCBSA(区域名)の列を追加したデータテーブルを出力(列0:通り,列1:市名,列2:州名,列3:CBSA(区域名))とする。
【0084】
例えばユーザは、端末装置30を操作し、サーバ100に対して、データテーブル111に基づく「列0:通り,列1:市名,列2:州名,列3:CBSA(区域名)」のデータテーブルの生成を指示する。するとサーバ100の変換例取得部120により、データテーブル111に基づいて変換例入力画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換例入力画面が表示される。
【0085】
図9は、1回目の変換例入力時の変換例入力画面の一例を示す図である。変換例入力画面61には、データテーブル表示部61a、変換例入力部61b、およびボタン61cが含まれる。データテーブル表示部61aには、変換元のデータテーブル111に登録されているレコードの各フィールドに設定された値が表示されている。
【0086】
変換例入力部61bは、変換例を入力するための領域である。変換例入力部61bには、各レコードに対応付けて、変換例入力用のテキストボックスが設けられている。ボタン61cは、変換例に基づくデータテーブル111の変換の実行を指示するためのボタンである。
【0087】
ユーザは、変換例入力部61bのいずれか1以上のテキストボックスに、対応するレコードの変換例を入力する。
図9の例では、1番目と2番目のレコードについての変換例が入力されている。次にユーザは、ボタン61cを押下する。
【0088】
ボタン61cが押下されると、変換例入力部61bに入力された変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0089】
図10は、1回目のレシピ生成によって生成されるレシピの一例を示す図である。
図10に示したレシピ51は、「市名をCamelCaseにする」ためのオペレータを含む。
【0090】
レシピ51の1行目は、データテーブル111の1番目の列を新しい列(3番目の列)にコピーすることを指示するオペレータである。レシピ51の2行目は、3番目の列のCamelCaseへの変換を指示するオペレータである。レシピ51の3行目は、2番目の列の新しい列(4番目の列)へのコピーを指示するオペレータである。4行目は、3番目の列の値と4番目の列の値とを”,”で結合して新しい列(3番目の列)を生成することを示すオペレータである。
【0091】
データ変換部140がレシピ51に示されるオペレータをデータテーブル111内の各レコードに対して実行することで、1回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0092】
図11は、1回目の変換時の変換結果確認画面の一例を示す図である。変換結果確認画面62には、データテーブル表示部62a、レシピ表示部62b、およびボタン62c,62dが含まれる。
【0093】
データテーブル表示部62aには、1回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。生成されたデータテーブルは、変換元のデータテーブル111に対して「区域名」の列が追加されている。「区域名」の列には、各レコードにレシピ51を適用することで生成された値が設定されている。1回目の変換結果においては、変換結果が正しいか否かの確認済のレコードはないため、すべてのレコードの「区域名」の値は強調表示されずに、例えば黒色で表示される。
【0094】
レシピ表示部62bには、適用したレシピ51を示す名称が表示されている。ボタン62cは、変換が成功した(すべてのレコードが意図通りの値に変換されている)場合に押下するボタンである。ボタン62cが押下されると、最新のデータテーブルが変換結果として記憶部110に格納される。ボタン62dは、変換に失敗した(意図と異なる値に変換されたレコードがある)場合に押下するボタンである。ボタン62dが押下されると、端末装置30には変換例入力画面が表示される。
【0095】
ユーザは、データテーブル表示部62aに示されているレコードを上から順番に、意図通りの変換が行われているか否かについてチェックする。
図11の例ではユーザは、5番目のレコードにおいて、意図と異なる値に変換されていることを認識する。そこでユーザは、変換の失敗を示すボタン62dを押下する。
【0096】
ボタン62dが押下されると、端末装置30からサーバ100へ、変換の失敗を示す情報が送信される。すると、サーバ100の変換例取得部120が、2回目の変換例入力用の変換例入力画面を示す画面データを生成し、その画面データを端末装置30に送信する。端末装置30には、2回目の変換例入力用の変換例入力画面が表示される。
【0097】
図12は、2回目の変換例入力画面の一例を示す図である。2回目の変換例入力用の変換例入力画面63には、データテーブル表示部63a、変換例入力部63b、およびボタン63cが含まれる。データテーブル表示部63aには、変換元のデータテーブル111に登録されているレコードの各フィールドに設定された値が表示されている。
【0098】
変換例入力部63bは、変換例を入力するための領域である。変換例入力部63bには、各レコードに対応付けて、前回変換結果と変換例入力用のテキストボックスが設けられている。ボタン63cは、変換例に基づくデータテーブル111の変換の実行を指示するためのボタンである。
【0099】
ユーザは、前回変換結果として意図と異なる値が示されている5番目のレコードに対応する、変換例入力部63b内のテキストボックスに、意図に沿った正しい変換例を追加入力する。次にユーザは、ボタン63cを押下する。
【0100】
ボタン63cが押下されると、変換例入力部63bに入力されている変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0101】
図13は、2回目のレシピ生成によって生成されるレシピの一例を示す図である。
図13に示したレシピ52は、「市名を含む区域名を選ぶ」ためのオペレータを含む。
レシピ52の1行目は、データテーブル111の1番目の列を新しい列(3番目の列)にコピーすることを指示するオペレータである。レシピ52の2行目は、区域名の一覧から、データテーブル111の3列目の列(市名)の文字列を含むものを抽出してリストを生成し、3列目に上書きで書き戻すオペレータである。2行目の「GetCBSAListByCity」は、CSBAのデータベース(cbsa-list)に以下のクエリを問い合わせる関数である。
SELECT cbsaname FROM cbsa-list WHERE cbsaname LIKE ”%{city}%”
このクエリは、データテーブル111内のレコードに設定されている市名を含むcsba名を問い合わせるものである。レシピ52の3行目は、データテーブル111の3列目に設定された1以上の要素のリストのうちの先頭の要素のみを、3列目に上書きで書き戻すオペレータである。
【0102】
なおレシピ52の2行目のオペレータでは、市名の文字列を含む区域名を抽出しているが、この処理の場合、同じ市名の市が複数の州に存在する場合、誤った州のCBSAが選択される可能性がある。
【0103】
データ変換部140がレシピ52に示されるオペレータをデータテーブル111内の各レコードに対して実行することで、2回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0104】
図14は、2回目の変換時の変換結果確認画面の一例を示す図である。変換結果確認画面64には、データテーブル表示部64a、レシピ表示部64b、およびボタン64c,64dが含まれる。
【0105】
データテーブル表示部64aには、2回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。生成されたデータテーブルは、変換元のデータテーブル111に対して「区域名」の列が追加されている。「区域名」の列には、各レコードにレシピ52を適用することで生成された値が設定されている。
【0106】
2回目の変換結果確認画面64では、「区域名」の列内の文字が、変換内容に応じて色分けして表示される。例えば前回の変換時と同じ値に変換された確認済レコード(変換例が今回追加されたレコードを除く)の区域名の値は青色で表示される。また前回の変換時と異なる値に変換された確認済レコード(変換例が今回追加されたレコードを除く)の区域名の値は赤色で表示される。変換例が今回追加されたレコードについては、変換結果が変換例と一致する場合に青色、一致しない場合に赤色で表示する。それ以外の値は黒色で表示される。
図14の例では、青色で表示される文字を太字かつ斜体で表記している。また赤色で表示される文字をアンダーライン付きの太字で表記している。
【0107】
レシピ表示部64bには、適用したレシピ52を示す名称が表示されている。ボタン64cは、変換が成功した場合に押下するボタンである。ボタン64dは、変換に失敗した場合に押下するボタンである。
【0108】
ユーザはデータテーブル表示部64aの3行目のレコードの区域名の値が赤色で表示されていることから、誤った変換結果となっていることに確実に気づくことができる。そこでユーザは、変換の失敗を示すボタン64dを押下する。
【0109】
ボタン64dが押下されると、端末装置30からサーバ100へ、変換の失敗を示す情報が送信される。すると、サーバ100の変換例取得部120が、3回目の変換例入力用の変換例入力画面を示す画面データを生成し、その画面データを端末装置30に送信する。端末装置30には、3回目の変換例入力用の変換例入力画面が表示される。
【0110】
図15は、3回目の変換例入力画面の一例を示す図である。3回目の変換例入力用の変換例入力画面65には、データテーブル表示部65a、変換例入力部65b、およびボタン65cが含まれる。データテーブル表示部65aには、変換元のデータテーブル111に登録されているレコードの各フィールドに設定された値が表示されている。
【0111】
変換例入力部65bは、変換例を入力するための領域である。変換例入力部65bには、各レコードに対応付けて、前回変換結果と変換例入力用のテキストボックスが設けられている。ボタン65cは、変換例に基づくデータテーブル111の変換の実行を指示するためのボタンである。
【0112】
ユーザは、前回変換結果として意図と異なる値が示されている3番目のレコードに対応する、変換例入力部65b内のテキストボックスに、意図に沿った正しい変換例を追加入力する。次にユーザは、ボタン65cを押下する。
【0113】
ボタン65cが押下されると、変換例入力部65bに入力されている変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0114】
図16は、3回目のレシピ生成によって生成されるレシピの一例を示す図である。
図16に示したレシピ53は、「市名と州名から区域名を得る」ためのオペレータを含む。
レシピ53の1行目は、データテーブル111の1番目の列を新しい列(3番目の列)にコピーすることを指示するオペレータである。レシピ53の2行目は、区域名の一覧から、データテーブル111の3列目列(市名)の文字列を含み、かつ州名が2列目(州名)の文字列と一致するものを抽出して、3列目に上書きで書き戻すオペレータである。同じ州に同一の市名は複数存在しないと考えられるため、このオペレータによって得られる候補はひとつに絞られる。2行目の「GetCBSANameByCityAndState」は、CSBAのデータベース(cbsa-list)に以下のクエリを問い合わせる関数である。
SELECT cbsaname FROM cbsa-list WHERE cbsaname LIKE ”%{city}%” and statename = ”{state}”
このクエリは、データテーブル111内のレコードに設定されている市名を含み、かつデータテーブル111内のレコードに設定されている州名と同じ州名を有するcbsa名を問い合わせるものである。
【0115】
データ変換部140がレシピ53に示されるオペレータをデータテーブル111内の各レコードに対して実行することで、3回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0116】
図17は、3回目の変換時の変換結果確認画面の一例を示す図である。変換結果確認画面66には、データテーブル表示部66a、レシピ表示部66b、およびボタン66c,66dが含まれる。
【0117】
データテーブル表示部66aには、3回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。生成されたデータテーブルは、変換元のデータテーブル111に対して「区域名」の列が追加されている。「区域名」の列には、各レコードにレシピ53を適用することで生成された値が設定されている。
【0118】
3回目の変換結果確認画面66では、「区域名」の列内の文字が、変換内容に応じて色分けして表示される。例えばユーザが確認済のレコードの区域名の値は青色で表示される。それ以外の値は黒色で表示される。なお
図17の例では、前回の変換時と異なる値に変換された確認済レコード(変換例が今回追加されたレコードを除く)はないため、区域名の値が赤色で表示されるレコードはない。
図17の例では、青色で表示される文字を太字かつ斜体で表記している。
【0119】
レシピ表示部66bには、適用したレシピ53を示す名称が表示されている。ボタン66cは、変換が成功した場合に押下するボタンである。ボタン66dは、変換に失敗した場合に押下するボタンである。
【0120】
ユーザは、データテーブル表示部66aに示されているレコードを上から順番に、意図通りの変換が行われているか否かについてチェックする。
図17の例ではすべてのレコードについてユーザの意図通りの変換となっている。そこで、ユーザは、変換の成功を示すボタン66cを押下する。
【0121】
ボタン66cが押下されると、端末装置30からサーバ100へ、変換の成功を示す情報が送信される。すると、サーバ100の変換結果出力部150が、3回目の変換によって生成されたデータテーブルを記憶部110に格納する。
【0122】
このようにして、変換元のデータテーブル111に基づいて、ユーザの意図通りの値(CSBAを示す文字列)を含む列を追加したデータテーブルを生成することができる。データテーブルを再生成した場合、確認済レコードのうち前回の変換時と異なる値に変換されたレコードの値が強調表示されることにより、ユーザのチェック漏れが抑止される。すなわち、データテーブルの変換を繰り返し行い、その都度、正しく変換されたか否かの確認を行っていると、既に確認済のレコードについての確認がおろそかになりやすい。変換に誤りがある可能性が高いレコードの値を強調表示することで、ユーザが誤りを見のがすことを抑止することができる。
【0123】
なお、上記のPBEの例では、英語の文字列が設定されたデータテーブル111を変換しているが、日本語の文字列が設定されたデータテーブルを変換する場合にもPBEの技術を利用することができる。
【0124】
図18は、日本語の文字列が設定されたデータテーブルの一例を示す図である。
図18に示すデータテーブル111aには、住所、建物名、および電話番号の列が設けられている。データテーブル111a内のレコードは、各列に対応するフィールドを含む。住所の列には、建物が建っている場所の住所が設定されている。建物名の列には、建物の名称が設定されている。電話番号の列には、対応する建物を使用している組織の電話番号が設定されている。
【0125】
図19は、日本語のデータテーブルの変換結果確認の一例を示す図である。
図19には、住所に基づいて、都道府県名を省略した住所を生成する場合の例が示されている。例えばユーザは、変換例リスト71に、変換例として「千葉県千葉市中央区千葉港x-x」の変換後の値「千葉市中央区千葉港x-x」と、「埼玉県さいたま市浦和区常盤x-x-x」の変換後の値「さいたま市浦和区常盤x-x-x」とを入力したものとする。サーバ100のレシピ生成部130は、変換例リスト71に示される変換例に従ってデータテーブル111a内の各レコードの値を変換するためのレシピを生成する。例えば「先頭から3文字削除」する変換ルールがレシピ81として生成されたものとする。
【0126】
レシピ81が生成されると、データ変換部140によりデータテーブル111a内の住所がレシピ81に従って変換される。変換結果として新たなデータテーブル72が生成される。変換結果のデータテーブル72は、変換結果出力部150によって端末装置30に送信され、端末装置30の画面に表示される。
【0127】
ユーザは、端末装置30に表示されたデータテーブル72に基づいて変換結果を確認する。例えばユーザは、データテーブル72の上位のレコードから順に変換結果の誤りの有無を確認していく。ここでユーザが意図した変換は、住所から都道府県名を削除する変換である。
図19の例では、データテーブル72に含まれる「県横浜市中区港町x-x」は「県」が削除されていない。この場合、ユーザは「神奈川県横浜市中区港町x-x」から県名を削除した「横浜市中区港町x-x」を、変換例として変換例リスト73に追加する。
【0128】
日本語のデータテーブル111aについても、変換例の追加、レシピの生成、レシピに基づくデータテーブル111aの変換をサーバ100に繰り返し実行させることで、ユーザの意図通りの変換を実現できる。その処理手順は、
図7に示した通りである。
【0129】
図20は、変換を繰り返すことによる日本語のデータテーブル内のレコードの変換履歴の一例を示す図である。変換履歴80には、変換元のレコードに対応付けて、変換例と、変換例に応じて生成されたレシピ81~83を適用した変換結果とが示されている。
図20に示した例では、変換例の指定が3回実施されており、3つのレシピ81~83が生成されている。ユーザが意図する変換は、住所から都道府県名を削除する変換であるものとする。なお、
図20の例では、市名より詳細な部分は省略されている。
【0130】
1回目の変換例指定では、「千葉県千葉市」を「千葉市」に変換する変換例と、「埼玉県さいたま市」を「さいたま市」に変換する変換例とが指定されている。
図20の例では、この2つの変換例に基づいて「先頭から3文字削除」のオペレータが記述されたレシピ81が生成されている。
【0131】
レシピ81を適用することによる各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。ユーザが上位のレコードから順に変換結果を確認していくと、6番目のレコードについて誤った変換が行われていることに気づく。6番目のレコードは「神奈川県横浜市」から「県横浜市」に変換されており、「県」の文字が残されている。
【0132】
そこでユーザは、6番目のレコードの変換例「横浜市」を追加で指定する。
図20の例では、2回目の変換例指定に基づいて、「「県」までの文字列を削除」のオペレータが記述されたレシピ82が生成されている。
【0133】
レシピ82を適用した各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。このとき先頭のレコードから、追加で変換例が指定された6番目のレコードまでは、前回の変換結果をユーザが確認した確認済レコードである。確認済レコードのうち3番目のレコードについては、前回の変換と異なる値に変換されている。前回の変換の際に正しいと判断された変換結果から異なる変換結果に変わったことで、このレコードに対する2回目の変換結果は誤った変換である可能性が高い。
【0134】
なお6番目のレコードについては、前回の変換と異なる値に変換されているが、このレコードは変換例が指定されたレコードであり、前回の変換結果が誤っていたレコードである。この6番目のレコードは変換例の通りに変換されており、2回目の変換結果は正しい。
【0135】
変換結果出力部150は、例えば変換結果が前回から変更された確認済レコード(変換例が今回追加されたレコードを除く)については、表示色を赤色にすることで強調表示する。これにより、ユーザによる確認作業時に、3番目のレコードについて誤った変換が行われていることの見落としが抑止される。
【0136】
また変換結果出力部150は、例えば変換結果が前回から変更されていない確認済レコードについては表示色を青色にすることで、他のレコードの色(例えば黒色)と異なる色で表示する。これにより、ユーザは確認済のレコードを認識することができ、すでに正しく変換されたことが確認され、2回目の変換結果でも同様に変換されたレコードを容易に識別できる。
【0137】
ユーザは、3番目のレコードについて変換結果が誤っていることを確認すると、そのレコードの変換例「新宿区」を追加で指定する。
図20の例では、3回目の変換例指定に基づいて、「都道府県の文字列を削除」のオペレータが記述されたレシピ83が生成されている。
【0138】
レシピ83を適用した各レコードの値の変換により、変換例を指定したレコードについては変換例通りの変換が行われている。このとき先頭のレコードから、過去に追加で変換例が指定された6番目のレコードまでは、以前の変換結果をユーザが確認した確認済レコードである。確認済レコードのうち3番目のレコードについては、前回の変換と異なる値に変換されているが、このレコードは変換例が追加で指定されたレコードである。そこで変換結果出力部150は、確認済レコードについては表示色を青色にすることで、他のレコードの色(例えば黒色)と異なる色で表示する。
【0139】
以下、
図21~
図29を参照して、
図20に示したようなPBEによるデータテーブル111aの変換処理を行う際のユーザの操作および生成されるレシピについて詳細に説明する。以下の例では、データテーブル111aを入力(列0:住所,列1:建物名,列2:電話番号)とし、データテーブル111aの住所から都道府県名を削除したデータテーブルを出力(列0:住所(都道府県を除く),列1:建物名,列2:電話番号)とする。
【0140】
例えばユーザは、端末装置30を操作し、サーバ100に対して、データテーブル111aに基づく「列0:住所(都道府県を除く),列1:建物名,列2:電話番号」のデータテーブルの生成を指示する。するとサーバ100の変換例取得部120により、データテーブル111aに基づいて変換例入力画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換例入力画面が表示される。
【0141】
図21は、1回目の日本語の変換例入力時の変換例入力画面の一例を示す図である。変換例入力画面91には、データテーブル表示部91a、変換例入力部91b、およびボタン91cが含まれる。データテーブル表示部91aには、変換元のデータテーブル111aに登録されているレコードの各フィールドに設定された値が表示されている。
【0142】
変換例入力部91bは、変換例を入力するための領域である。変換例入力部91bには、各レコードに対応付けて、変換例入力用のテキストボックスが設けられている。ボタン91cは、変換例に基づくデータテーブル111aの変換の実行を指示するためのボタンである。
【0143】
ユーザは、変換例入力部91bのいずれか1以上のテキストボックスに、対応するレコードの変換例を入力する。
図21の例では、1番目と2番目のレコードについての変換例が入力されている。次にユーザは、ボタン91cを押下する。
【0144】
ボタン91cが押下されると、変換例入力部91bに入力された変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0145】
図22は、1回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
図22に示したレシピ81は、「先頭から3文字削除」をするためのオペレータを含む。
【0146】
レシピ81に示されるオペレータは、1番目の列(住所)の文字列から先頭3文字分を取り除き、その列に戻すことを指示する命令である。
データ変換部140がレシピ81に示されるオペレータをデータテーブル111a内の各レコードに対して実行することで、1回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0147】
図23は、1回目の日本語変換時の変換結果確認画面の一例を示す図である。変換結果確認画面92には、データテーブル表示部92a、レシピ表示部92b、およびボタン92c,92dが含まれる。
【0148】
データテーブル表示部92aには、1回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。1回目の変換結果においては、変換結果が正しいか否かの確認済のレコードはないため、すべてのレコードの「住所」の値は強調表示されずに、例えば黒色で表示される。レシピ表示部92bには、適用したレシピ81を示す名称が表示されている。ボタン92cは、変換が成功した場合に押下するボタンである。ボタン92dは、変換に失敗した場合に押下するボタンである。
【0149】
ユーザは、データテーブル表示部92aに示されているレコードを上から順番に、意図通りの変換が行われているか否かについてチェックする。
図23の例では、ユーザは、6番目のレコードにおいて、意図と異なる値に変換されていることを認識する。そこで、ユーザは、変換の失敗を示すボタン92dを押下する。
【0150】
ボタン92dが押下されると、端末装置30からサーバ100へ、変換の失敗を示す情報が送信される。すると、サーバ100の変換例取得部120が、2回目の日本語変換例入力用の変換例入力画面を示す画面データを生成し、その画面データを端末装置30に送信する。端末装置30には、2回目の日本語変換例入力用の変換例入力画面が表示される。
【0151】
図24は、2回目の日本語の変換例入力画面の一例を示す図である。2回目の変換例入力用の変換例入力画面93には、データテーブル表示部93a、変換例入力部93b、およびボタン93cが含まれる。データテーブル表示部93aには、変換元のデータテーブル111aに登録されているレコードの各フィールドに設定された値が表示されている。
【0152】
変換例入力部93bは、変換例を入力するための領域である。変換例入力部93bには、各レコードに対応付けて、前回変換結果と変換例入力用のテキストボックスが設けられている。ボタン93cは、変換例に基づくデータテーブル111aの変換の実行を指示するためのボタンである。
【0153】
ユーザは、前回変換結果として意図と異なる値が示されている6番目のレコードに対応する、変換例入力部93b内のテキストボックスに、意図に沿った正しい変換例を追加入力する。次にユーザは、ボタン93cを押下する。
【0154】
ボタン93cが押下されると、変換例入力部93bに入力されている変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0155】
図25は、2回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
図25に示したレシピ82は、「「県」までの文字列を削除」するためのオペレータを含む。
【0156】
レシピ82に示されるオペレータは、データテーブル111aの1番目の列(住所)の文字列について、前方から「県」まで(「県」を含む)を取り除き、その列に戻すことを指示する命令である。データ変換部140がレシピ82に示されるオペレータをデータテーブル111a内の各レコードに対して実行することで、2回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0157】
図26は、2回目の日本語変換時の変換結果確認画面の一例を示す図である。変換結果確認画面94には、データテーブル表示部94a、レシピ表示部94b、およびボタン94c,94dが含まれる。
【0158】
データテーブル表示部94aには、2回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。2回目の変換結果確認画面94では、「住所」の列内の文字が、変換内容に応じて色分けして表示される。例えば前回の変換時と同じ値に変換された確認済レコード(変換例が今回追加されたレコードを除く)の住所の値は青色で表示される。また前回の変換時と異なる値に変換された確認済レコード(変換例が今回追加されたレコードを除く)の住所の値は赤色で表示される。変換例が今回追加されたレコードについては、変換結果が変換例と一致する場合に青色、一致しない場合に赤色で表示する。それ以外の値は黒色で表示される。
図26の例では、青色で表示される文字を太字かつ斜体で表記している。また赤色で表示される文字をアンダーライン付きの太字で表記している。
【0159】
レシピ表示部94bには、適用したレシピ82を示す名称が表示されている。ボタン94cは、変換が成功した場合に押下するボタンである。ボタン94dは、変換に失敗した場合に押下するボタンである。
【0160】
ユーザはデータテーブル表示部94aの3行目のレコードの住所の値が赤色で表示されていることから、誤った変換結果となっていることに確実に気づくことができる。そこでユーザは、変換の失敗を示すボタン94dを押下する。
【0161】
ボタン94dが押下されると、端末装置30からサーバ100へ、変換の失敗を示す情報が送信される。すると、サーバ100の変換例取得部120が、3回目の変換例入力用の変換例入力画面を示す画面データを生成し、その画面データを端末装置30に送信する。端末装置30には、3回目の変換例入力用の変換例入力画面が表示される。
【0162】
図27は、3回目の日本語の変換例入力画面の一例を示す図である。3回目の変換例入力用の変換例入力画面95には、データテーブル表示部95a、変換例入力部95b、およびボタン95cが含まれる。データテーブル表示部95aには、変換元のデータテーブル111aに登録されているレコードの各フィールドに設定された値が表示されている。
【0163】
変換例入力部95bは、変換例を入力するための領域である。変換例入力部95bには、各レコードに対応付けて、前回変換結果と変換例入力用のテキストボックスが設けられている。ボタン95cは、変換例に基づくデータテーブル111aの変換の実行を指示するためのボタンである。
【0164】
ユーザは、前回変換結果として意図と異なる値が示されている3番目のレコードに対応する、変換例入力部95b内のテキストボックスに、意図に沿った正しい変換例を追加入力する。次にユーザは、ボタン95cを押下する。
【0165】
ボタン95cが押下されると、変換例入力部95bに入力されている変換例を含む変換例リストが、端末装置30からサーバ100に送信される。変換例リストを受信したサーバ100では、レシピ生成部130が、変換例に基づいてレシピを生成する。
【0166】
図28は、3回目のレシピ生成によって生成される日本語変換用のレシピの一例を示す図である。
図28に示したレシピ83は、「都道府県の文字列を削除」するためのオペレータを含む。
【0167】
レシピ83に示されるオペレータは、データテーブル111aの1番目の列(住所)の文字列について、前方からの文字列が都道府県名に一致した場合はその文字列(都、道、府、県の文字を含む)を取り除いてその列に戻すことを指示する命令である。このオペレータでは、前方から最大4文字分の文字列が都道府県名に一致しなければそのままの値が1番目の列に戻される。
【0168】
このレシピ83で実行されるオペレータ(関数)の内部では、1番目の列の前方側から切り出した文字列(以下の例では”char”としている)が都道府県名(prefname)のリスト(pref-list)に含まれるかの判定が行われる。例えば、以下のような問い合わせを実行することで判定が行われる。
SELECT prefname FROM pref-list WHERE prefname = ”{char}”
データ変換部140がレシピ83に示されるオペレータをデータテーブル111a内の各レコードに対して実行することで、3回目の変換が行われる。すると変換結果出力部150により変換結果確認画面の画面データが生成され、その画面データが端末装置30に送信される。そして端末装置30に変換結果確認画面が表示される。
【0169】
図29は、3回目の日本語変換時の変換結果確認画面の一例を示す図である。変換結果確認画面96には、データテーブル表示部96a、レシピ表示部96b、およびボタン96c,96dが含まれる。
【0170】
データテーブル表示部96aには、3回目の変換によって生成されたデータテーブルに登録されているレコードの各フィールドに設定された値が表示されている。3回目の変換結果確認画面96では、「住所」の列内の文字が、変換内容に応じて色分けして表示される。例えばユーザが確認済のレコードの住所の値は青色で表示される。それ以外の値は黒色で表示される。なお
図29の例では、前回の変換時と異なる値に変換された確認済レコード(変換例が今回追加されたレコードを除く)はないため、住所の値が赤色で表示されるレコードはない。
図29の例では、青色で表示される文字を太字かつ斜体で表記している。
【0171】
レシピ表示部96bには、適用したレシピ83を示す名称が表示されている。ボタン96cは、変換が成功した場合に押下するボタンである。ボタン96dは、変換に失敗した場合に押下するボタンである。
【0172】
ユーザは、データテーブル表示部96aに示されているレコードを上から順番に、意図通りの変換が行われているか否かについてチェックする。
図29の例ではすべてのレコードについてユーザの意図通りの変換となっている。そこで、ユーザは、変換の成功を示すボタン96cを押下する。
【0173】
ボタン96cが押下されると、端末装置30からサーバ100へ、変換の成功を示す情報が送信される。すると、サーバ100の変換結果出力部150が、3回目の変換によって生成されたデータテーブルを記憶部110に格納する。
【0174】
このようにして、日本語が登録されたデータテーブル111aについてもPBEの技術を用いて、適切に変換することができる。しかもレシピを改善していく過程で生成されたデータテーブルにおける確認済レコードの値が前回と異なる場合には強調表示されるため、誤った変換結果の見落としが抑止される。
【0175】
〔その他の実施の形態〕
第2の実施の形態では、英語の文字列が登録されたデータテーブルの変換例と日本語の文字列が登録されたデータテーブルの変換例とを示したが、他の言語の文字列が登録されたデータテーブルを変換する場合にも、第2の実施の形態の処理を適用可能である。
【0176】
また第2の実施の形態では、変換例を指定したレコードについては、変換例の通りに変換されているが、変換例が指定されたレコードであっても、変換例の通りに変換できない場合もあり得る。サーバ100の変換結果出力部150は、変換例が指定されたレコードのうち、指定された変換例と異なる値に変換されたレコードについては、その値を強調表示することもできる。これにより、変換例が指定されたレコードの値が変換例と異なる値に変換された場合、変換例通りに変換されていないことをユーザに通知することができる。
【0177】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0178】
1 データ
2,5 変換例リスト
3,6 変換プログラム
4,7 変換結果
8 ユーザ
10 データ処理装置
11 記憶部
12 処理部