(57)【要約】【課題】より簡単にテーブルに記録されたデータのルールを特定する情報処理装置、情報処理方法及びコンピュータプログラムを提供することを目的とする。【解決手段】複数のデータ項目を有するテーブルから選択された少なくとも２つのデータ項目が取りうる値のうち、最小の組み合わせの数を示す下限値と、最大の組み合わせの数を示す上限値と、テーブルに含まれる組み合わせの数を示す計測値を計数する計数部と、上限値と下限値と計測値とに基づいて、テーブルに記録されたデータレコードの各値を特定するルールを特定するルール特定部と、を備える情報処理装置。【選択図】図１
2019086887.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ項目を有するテーブルから選択された少なくとも２つの前記データ項目が取りうる値のうち、最小の組み合わせの数を示す下限値と、最大の組み合わせの数を示す上限値と、前記テーブルに含まれる組み合わせの数を示す計測値を計数する計数部と、
前記上限値と前記下限値と前記計測値とに基づいて、前記テーブルに記録されたデータレコードの各値を特定するルールを特定するルール特定部と、
を備える情報処理装置。
【請求項２】
前記上限値と前記下限値と前記計測値とに基づいて、前記データ項目の取りうる値の組み合わせのうち前記テーブルに含まれる値の組み合わせの割合を示すカーディナリティを算出するカーディナリティ算出部と、
をさらに備え、
前記ルール特定部は、前記カーディナリティに基づいて、前記データレコードの各値を特定するルールを特定する、請求項１に記載の情報処理装置。
【請求項３】
前記カーディナリティ算出部は、前記計測値を前記下限値で減算した値を、前記上限値を前記下限値で減算した値で除算することで算出することで前記カーディナリティを算出する請求項２に記載の情報処理装置。
【請求項４】
前記ルール特定部は、前記カーディナリティが予め定められた閾値より小さい場合、前記選択されたデータ項目の組み合わせを、前記データレコードの各値を特定するルールとして特定する請求項２又は３に記載の情報処理装置。
【請求項５】
前記カーディナリティが予め定められた閾値より小さい場合に、前記選択されたデータ項目に含まれる一部のデータ項目の値が定まることで、残りのデータ項目の値が定まる場合に、前記選択されたデータ項目には一意性があると判定する一意性判定部と、
を備え、
前記ルール特定部は、一意性があると判定された前記選択されたデータ項目を包含するデータ項目の組み合わせがない場合、前記選択されたデータ項目の組み合わせを、一部のデータ項目の値が定まることで、残りのデータ項目の値が定まるルールとして特定する請求項２または３に記載の情報処理装置。
【請求項６】
前記特定されたルールに基づいて、前記選択されたデータ項目の値の組み合わせを前記テーブルから取得するルール取得部をさらに備える請求項１から５のいずれか一項に記載の情報処理装置。
【請求項７】
情報処理装置が、複数のデータ項目を有するテーブルから選択された少なくとも２つの前記データ項目が取りうる値のうち、最小の組み合わせの数を示す下限値と、最大の組み合わせの数を示す上限値と、前記テーブルに含まれる組み合わせの数を示す計測値を計数する計数ステップと、
情報処理装置が、前記上限値と前記下限値と前記計測値とに基づいて、前記テーブルに記録されたデータレコードの各値を特定するルールを特定するルール特定ステップと、
を有する情報処理方法。
【請求項８】
請求項１から６のいずれか一項に記載の情報処理装置としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
企業などで長年運用されているシステムでは、マニュアル化又はバリデーションチェックがされていないルールがデータとして蓄積されている。ルールは、システムの更改において、有識者からのヒアリング又はドキュメントの調査を通じて、仕様として定義される。しかし、有識者からのヒアリング又はドキュメント調査に依存した場合、ルールの漏れや曖昧さが存在する。このような不正確な情報のままで次工程へ進めると、想定されていないデータによって、更改後のシステムが動作しない可能性がある。この場合、ユーザによるデータ修正又は、更改後システムの改修が行われることになり、開発期間の延長等の問題が発生する。
【０００３】
そこで、特許文献１に記載されるように、テーブルに含まれるカラムのうち、相関があると考えられるカラムを人手で選択し、ルールを抽出するという手段が行われていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３９９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、システムが大量のテーブル又はカラムを有する場合には、相関があると考えられるカラムを人手で選択することは困難であるという問題があった。
【０００６】
上記事情に鑑み、本発明は、より簡単にテーブルに記録されたデータのルールを特定する情報処理装置、情報処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、複数のデータ項目を有するテーブルから選択された少なくとも２つの前記データ項目が取りうる値のうち、最小の組み合わせの数を示す下限値と、最大の組み合わせの数を示す上限値と、前記テーブルに含まれる組み合わせの数を示す計測値を計数する計数部と、前記上限値と前記下限値と前記計測値とに基づいて、前記テーブルに記録されたデータレコードの各値を特定するルールを特定するルール特定部と、を備える情報処理装置である。
【０００８】
本発明の一態様は、上記の情報処理装置であって、前記上限値と前記下限値と前記計測値とに基づいて、前記データ項目の取りうる値の組み合わせのうち前記テーブルに含まれる値の組み合わせの割合を示すカーディナリティを算出するカーディナリティ算出部と、をさらに備え、前記ルール特定部は、前記カーディナリティに基づいて、前記データレコードの各値を特定するルールを特定する。
【０００９】
本発明の一態様は、上記の情報処理装置であって、前記カーディナリティ算出部は、前記計測値を前記下限値で減算した値を、前記上限値を前記下限値で減算した値で除算することで算出することで前記カーディナリティを算出する。
【００１０】
本発明の一態様は、上記の情報処理装置であって、前記ルール特定部は、前記カーディナリティが予め定められた閾値より小さい場合、前記選択されたデータ項目の組み合わせを、前記データレコードの各値を特定するルールとして特定する。
【００１１】
本発明の一態様は、上記の情報処理装置であって、前記カーディナリティが予め定められた閾値より小さい場合に、前記選択されたデータ項目に含まれる一部のデータ項目の値が定まることで、残りのデータ項目の値が定まる場合に、前記選択されたデータ項目には一意性があると判定する一意性判定部と、を備え、前記ルール特定部は、一意性があると判定された前記選択されたデータ項目を包含するデータ項目の組み合わせがない場合、前記選択されたデータ項目の組み合わせを、一部のデータ項目の値が定まることで、残りのデータ項目の値が定まるルールとして特定する。
【００１２】
本発明の一態様は、上記の情報処理装置であって、前記特定されたルールに基づいて、前記選択されたデータ項目の値の組み合わせを前記テーブルから取得するルール取得部をさらに備える。
【００１３】
本発明の一態様は、情報処理装置が、複数のデータ項目を有するテーブルから選択された少なくとも２つの前記データ項目が取りうる値のうち、最小の組み合わせの数を示す下限値と、最大の組み合わせの数を示す上限値と、前記テーブルに含まれる組み合わせの数を示す計測値を計数する計数ステップと、情報処理装置が、前記上限値と前記下限値と前記計測値とに基づいて、前記テーブルに記録されたデータレコードの各値を特定するルールを特定するルール特定ステップと、を有する情報処理方法である。
【００１４】
本発明の一態様は、上記の情報処理装置としてコンピュータを機能させるためのコンピュータプログラムである。
【発明の効果】
【００１５】
本発明により、より簡単にテーブルに記録されたデータのルールを特定することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】実施形態の情報処理装置１００の機能構成を表す機能ブロック図である。
【図２】データテーブルの一具体例を示す図である。
【図３】ルールテーブルの一具体例を示す図である。
【図４】実施形態のルールテーブル生成までの処理の流れを示すフローチャートである。
【図５】実施形態の一意性有無の判定からルールの特定までの処理の流れを示すフローチャートである。
【図６】フィルタリング処理によってカラムが除去されたデータテーブルを示す図である。
【図７】変数ｎ＝２の場合の全ての組み合わせを示す図である。
【図８】変数ｎ＝２の場合の下限値、上限値及び計数値を計数した結果を示す図である。
【図９】変数ｎ＝２の場合のカーディナリティを算出した結果を示す図である。
【図１０】変数ｎ＝３の場合の全ての組み合わせを示す図である。
【図１１】変数ｎ＝３の場合の下限値、上限値及び計数値を計数した結果を示す図である。
【図１２】変数ｎ＝３の場合のカーディナリティを算出した結果を示す図である。
【図１３】変数ｎ＝４の場合の全ての組み合わせを示す図である。
【図１４】変数ｎ＝４の場合の下限値、上限値及び計数値を計数した結果を示す図である。
【図１５】変数ｎ＝４の場合のカーディナリティを算出した結果を示す図である。
【図１６】データテーブルが有するデータレコードのルールの特定の結果を示す図である。
【図１７】取りうる値の組み合わせのうち、一部のデータレコード数が少ない場合の具体例を示す図である。
【発明を実施するための形態】
【００１７】
図１は、実施形態の情報処理装置１００の機能構成を表す機能ブロック図である。情報処理装置１００は、パーソナルコンピュータ、サーバ、スマートフォン、タブレットコンピュータ又は産業用コンピュータ等の装置である。情報処理装置１００は、データルール生成プログラムを実行することによって、通信部１０１、入力部１０２、表示部１０３、データ記憶部１０４、ルール記憶部１０５及び制御部１０６として機能する。
【００１８】
通信部１０１は、ネットワークインタフェースである。通信部１０１はネットワークを介して、外部の通信装置と通信する。通信部１０１は、例えば無線ＬＡＮ（Local Area Network）、有線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）又はＬＴＥ（Long Term Evolution）（登録商標）等の通信方式で通信してもよい。
【００１９】
入力部１０２は、タッチパネル、マウス及びキーボード等の入力装置を用いて構成される。入力部１０２は、入力装置を情報処理装置１００に接続するためのインタフェースであってもよい。この場合、入力部１０２は、入力装置において入力された入力信号から入力データ（例えば、情報処理装置１００に対する指示を示す指示情報）を生成し、情報処理装置１００に入力する。
【００２０】
表示部１０３は、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ、有機ＥＬ（Electro Luminescence）ディスプレイ等の出力装置である。表示部１０３は、出力装置を情報処理装置１００に接続するためのインタフェースであってもよい。この場合、表示部１０３は、映像データから映像信号を生成し自身に接続されている映像出力装置に映像信号を出力する。
【００２１】
データ記憶部１０４は、磁気ハードディスク装置や半導体記憶装置等の記憶装置を用いて構成される。データ記憶部１０４は、データテーブルを記憶する。データテーブルとは、運用されたシステムに記録されたデータレコードの集合である。システムとは、企業等で運用される商取引システムであってもよいし、生産システムであってもよいし、基幹システムであってもよい。システムは、データを有するものであれば、どのようなシステムであってもよい。
【００２２】
ルール記憶部１０５は、磁気ハードディスク装置や半導体記憶装置等の記憶装置を用いて構成される。ルール記憶部１０５は、ルールテーブルを記録する。ルールテーブルは、データレコードの各値が特定されるルールである。ルールテーブルは、データテーブルに記録される全てのデータレコードの各値に基づいて決定される。ルールテーブルは、複数決定されてもよい。
【００２３】
制御部１０６は、情報処理装置１００の各部の動作を制御する。制御部１０６は、例えばプロセッサ及びメモリを備えた装置により実行される。制御部１０６は、データルール生成プログラムを実行することによって、フィルタリング部１０７、計数部１０８、カーディナリティ算出部１０９、一意性判定部１１０、ルール特定部１１１及びルール生成部１１２として機能する。
【００２４】
フィルタリング部１０７は、フィルタリング処理を実行する。フィルタリング部１０７は、フィルタリング処理において、データテーブルが有するカラムのうち、所定の条件を満たすカラムを除去する。所定の条件とは、例えば、分類数がデータレコードの数と一致するカラムや、分類数が１であるカラムである。分類数とは、データレコードの各カラムが保持する値の種類を示す数である。カラムとはデータテーブルの列を示す情報である。カラムは、データ項目の一態様である。
【００２５】
計数部１０８は、データテーブルを探索することで、カラムの組み合わせ毎に下限値、上限値及び計測値を計数する。カラムの組み合わせとは、フィルタリング部１０７によって除去されなかったデータテーブルのカラムのうち、選択された少なくとも２つのカラムである。下限値は、選択された各カラムがとりうる値の組み合わせの最小の数である。具体的には、選択された各カラムのうち、分類数が最も大きなカラムの分類数である。下限値は、以下の数式（１）で表される。
【００２６】
下限値 ＝ ＭＡＸ｛（選択された各カラムの分類数）｝  ・・・（１）
【００２７】
なお、上限値は、選択された各カラムがとりうる値の組み合わせの最大の数である。具体的には、選択された各カラムの取りうる分類数を乗じて得られる値である。上限値は、データレコードの総数を超えない範囲で、以下の数式（２）で表される。
【００２８】
上限値＝ＭＩＮ[(データレコードの総数)，{選択された各カラムの分類数の積}]  ・・・（２）
【００２９】
計測値は、選択された各カラムの取りうる値の組み合わせのうち、データテーブルに含まれる値の組み合わせの数を示す。計測値は、選択されたカラムの組み合わせが取りうる値のうち、データテーブルに含まれる分類数を示す数である。計数部１０８は、データテーブルを探索することで、選択されたカラムの組み合わせの計測数を計数する。計数部１０８は、計測数を計数するタイミングで、カラムの組み合わせ毎にデータレコードの数を計数する。
【００３０】
カーディナリティ算出部１０９は、カラムの組み合わせ毎に下限値、上限値及び計測値に基づいてカーディナリティを算出する。カーディナリティとは、選択されたカラムの組み合わせが取りうる値の分類数のうち、データテーブルに含まれている分類数に関する値である。カーディナリティは、所定の演算式によって算出される。所定の演算式とは、例えば、以下の数式（３）で表される。
【００３１】
カーディナリティ＝｛(計測値)-(下限値）｝/｛(上限値)-(下限値｝｝  ・・・（３）
【００３２】
一意性判定部１１０は、カラムの組み合わせに一意性があるか否かを判定する。一意性とは、組み合わせに含まれるカラムのうち、一部のカラムの値が決定されれば、その他のカラムの値が一意に定められることを示す。一意性とは、例えば、組み合わせに含まれる２つのカラムのうち、一方のカラムの値が決定されれば、他方のカラムの値が一意に定められることである。以下、その他のカラムの値を定める一部のカラムを前提カラムという。以下、前提カラムによって定められるその他のカラムを結論カラムという。一意性判定部１１０は、決定された前提カラムに基づいて、データテーブルのデータレコードを探索し、前提カラムの各値の組み合わせに対して、結論カラムの値が一意に定まるか否かを判定する。
【００３３】
一意性判定部１１０は、カーディナリティが所定の条件を満たすカラムの組み合わせに対して、一意性があるか否かを判定する。所定の条件とは、例えば、カーディナリティの値があらかじめ定められた閾値以下であること等であってもよい。
【００３４】
ルール特定部１１１は、一意性があると判定されたカラムの組み合わせを選択する。ルール特定部１１１は、選択したカラムの組み合わせの前提カラム及び結論カラムを包含するカラムの組み合わせがあるか否かを探索する。ルール特定部１１１は、選択したカラムの組み合わせの前提カラム及び結論カラムを包含するカラムの組み合わせがある場合、探索したカラムの組み合わせを除去する。ルール特定部１１１は、除去されなかったカラムの組み合わせを、データレコードの各値を特定するルールとして特定する。
【００３５】
ルール生成部１１２は、特定されたルールに基づいて、ルールテーブルを生成する。ルール生成部１１２は、データテーブルから、特定されたルールに一致する値を取得し、ルールレコードを生成する。ルール生成部１１２は、ルールレコードをルールテーブルに追加することで、ルールテーブルを生成する。ルールテーブルは、特定されたルール毎に生成される。ルール生成部１１２は、生成したルールテーブルを、表示部１０３に表示させてもよいし、ルール記憶部１０５に記憶させてもよい。ルール生成部１１２は、ルール取得部の一態様である。ルール取得部は、特定されたルールに基づいて、選択されたカラムの値の組み合わせをデータテーブルから取得する。
【００３６】
図２は、データテーブルの一具体例を示す図である。データテーブルは、１０００のデータレコードを有する。本実施形態におけるデータレコードは、商取引に関するレコードである。本実施形態におけるデータレコードは、氏名、日付、曜日、男女、子供フラグ、金額及び現金フラグの各値を有する。氏名は、商取引を行った顧客の名前を示す情報である。日付は、商取引が行われた日付を示す情報である。曜日は、日付に対応する曜日である。男女は、商取引を行った顧客の性別を示す情報である。子供フラグは、商取引を行った顧客が子供であるか否かを示す情報である。子供フラグがＴＲＵＥの場合、子供であることを示す。子供フラグがＦＡＬＳＥの場合、子供ではないことを示す。金額は、商取引が行われた金額を示す情報である。現金フラグは、商取引が現金で行われたか否かを示す情報である。現金フラグが０１の場合、商取引が現金で行われたことを示す。
【００３７】
図２に示される例では、データテーブルの最上段のデータレコードは、氏名の値が“Barclay Booley”、日付の値が“2016/7/21”、曜日の値が“月”、男女の値が“Female”、子供フラグの値が“TRUE”、金額の値が“1500”及び現金フラグの値が“01”である。従って、データテーブルの最上段のデータレコードによると、商取引を行った者の名前は“Barclay Booley”であり、商取引が行われた日は“2016/7/21”であり、商取引が行われた日は“月曜日”であり、商取引を行ったものは子供の女性であり、商取引が行われた金額は１５００円であり、現金で行われたことがわかる。なお、図２に示されるデータテーブルは一具体例に過ぎない。そのため、図２とは異なるカラムを有するデータテーブルが構成されてもよい。データテーブルは、通信部１０１を介して、情報処理装置１００の外部から送信されてもよい。
【００３８】
図３は、ルールテーブルの一具体例を示す図である。図３は、図２に示されるデータテーブルに基づいて生成される。図３によると、ルールテーブルは、図３（ａ）と図３（ｂ）との２種類が生成されることがわかる。図３（ａ）におけるルールレコードは、金額、子供フラグ及びレコード数の各値を有する。図３（ｂ）におけるルールレコードは、曜日、男女、子供フラグ、金額及びレコード数の各値を有する。図３（ａ）におけるルールテーブルでは、前提カラムが金額、結論カラムが子供フラグである。図３（ｂ）におけるルールテーブルでは、前提カラムが曜日、男女及び子供フラグ、結論カラムが金額である。各ルールテーブルはそれぞれルールレコードを有する。曜日、男女、子供フラグ及び金額の各値は、いずれもデータレコードの各値が取りうる値である。レコード数は、データテーブルが有するデータレコードのうち、当該ルールレコードと同じ値を保持するデータレコードの数である。
【００３９】
図３（ａ）に示される例では、ルールテーブルの最上段のルールレコードは、金額の値が“1500”、子供フラグの値が“TRUE”、レコード数の値が“370”である。従って、図３（ａ）のルールテーブルの最上段のルールレコードによると、前提カラムである金額の値が”1500”に定められた場合、結論カラムである子供フラグの値は“TRUE”に一意に定まることがわかる。また、金額の値が“1500”、子供フラグの値が“TRUE”となるデータレコードの数は、図２のデータテーブルには“370”あることがわかる。
【００４０】
図３（ｂ）に示される例では、ルールテーブルの最上段のルールレコードは、曜日の値が“金”、男女の値が“Female”、子供フラグの値が“TRUE”、金額の値が“800”、レコード数の値が“30”である。従って、図３（ｂ）のルールテーブルの最上段のルールレコードによると、前提カラムである曜日の値が“金”、男女の値が“Female”、子供フラグの値が“TRUE”に定められた場合、結論カラムである金額の値は“800”に一意に定まることがわかる。また、曜日の値が“金”、男女の値が“Female”、子供フラグの値が“TRUE”、金額の値が“800”となるデータレコードの数は、図２のデータテーブルには“30”あることがわかる。なお、図３に示されるルールテーブルは一具体例に過ぎない。そのため、図３とは異なる態様でルールテーブルが構成されてもよい。例えば、図３に示されるルールテーブルは、指定されたカラムにてソートされた態様で表示されてもよい。例えば、図３（ａ）に示されるルールテーブルは、金額のカラムでソートされた態様で表示されてもよいし、子供フラグでソートされた態様で表示されてもよいし、レコード数でソートされた態様で表示されてもよい。また、図３（ｂ）に示されるルールテーブルは、第１ソートキーとして曜日、第２ソートキーとして男女でソートされた態様で表示されてもよい。
【００４１】
図４は、実施形態のルールテーブル生成までの処理の流れを示すフローチャートである。以下、図４に示すフローチャートの処理の流れを、図２に示すデータテーブルを用いて説明する。
【００４２】
フィルタリング部１０７は、データ記憶部１０４に記憶されるデータテーブルに対してフィルタリング処理を実行する（ステップＳ１０１）。フィルタリング部１０７は、所定の条件を満たすカラムを除去する。所定の条件とは、分類数がデータレコードの数と同じとなるカラム又は分類数が１であるカラムである。図６は、フィルタリング処理によってカラムが除去されたデータテーブルを示す図である。データテーブルの最上段に記載される分数は、分子がデータレコードの分類数を示す。分母が、データレコードの総数を示す。図６によると、氏名及び日付のカラムは、分類数が１０００であり、データレコードの数と同じとなるカラムであるため、除去される。現金フラグのカラムは、分類数が１のカラムであるため、除去される。また、曜日のカラムの分類数は７である。男女のカラムの分類数は２である。子供フラグの分類数のカラムは２である。金額のカラムの分類数は４である。
【００４３】
計数部１０８は、変数ｎに２を代入する（ステップＳ１０２）。変数ｎは、除去されなかったデータテーブルのカラムのうち、選択されるカラム数を示す数である。計数部１０８は、除去されなかったカラムのうち、ｎ個のカラムを選択した全ての組み合わせを生成する（ステップＳ１０３）。図７は、変数ｎ＝２の場合の全ての組み合わせを示す図である。図７によると、カラムを２つ選択した場合、６通りの組み合わせが存在することがわかる。
【００４４】
計数部１０８は、フィルタリング部１０７によって除去されなかったカラムに基づいて、カラムの組み合わせ毎に下限値、上限値及び計測値を計数する（ステップＳ１０４）。図８は、変数ｎ＝２の場合の下限値、上限値及び計数値を計数した結果を示す図である。例えば、図８の最上段の組み合わせは、カラム１が曜日、カラム２が男女である。したがって、下限値は、曜日の分類数である７となる。上限値は、カラム１とカラム２との分類数を乗じた１４となる。計測値は、上限値と同じ１４である。したがって、１０００件のデータレコードには、カラムの組み合わせが取りうる全ての値が含まれていることがわかる。
【００４５】
計数部１０８は、計測値を計数する際に各組み合わせのデータレコードの件数を計数する。図８の吹き出し２００は、選択されたカラムが子供フラグ及び金額である場合の計測値を計数する際に求められた各データレコードの件数を示すテーブルを含む。吹き出し２００によると、データテーブルには、４種類のデータレコードが含まれていることと、各データレコードの件数がわかる。
【００４６】
カーディナリティ算出部１０９は、計測された下限値、上限値及び計測値に基づいて、カーディナリティを算出する（ステップＳ１０５）。図９は、変数ｎ＝２の場合のカーディナリティを算出した結果を示す図である。カーディナリティは、上述の数式（３）に基づいて、０から１までの範囲で算出される。カーディナリティ算出部１０９は、算出されたカーディナリティが閾値以下の場合、選択されたカラムの組み合わせを一意性判定部１１０に出力する。図９の最上段によると、計測値と上限値とが同じ２８である。したがって、図９に示されるカーディナリティの値は、１．０となる。
【００４７】
カーディナリティ算出部１０９は、変数ｎが、削除されなかったカラム数と一致するか否かを判定する（ステップＳ１０６）。変数ｎが、削除されなかったカラム数と一致しない場合（ステップＳ１０６：ＮＯ）、計数部１０８は、変数ｎに１を加算し、ステップＳ１０３に遷移する（ステップＳ１０７）。本実施例では、除去されなかったカラム数は４カラムである。したがって、変数ｎ＝２から４まで、ステップＳ１０３からステップＳ１０５が実行される。
【００４８】
図１０は、変数ｎ＝３の場合の全ての組み合わせを示す図である。図１０によると、カラムを３つ選択した場合、４通りの組み合わせが存在することがわかる。図１１は、変数ｎ＝３の場合の下限値、上限値及び計数値を計数した結果を示す図である。図１１の最上段の組み合わせは、カラム１が曜日、カラム２が男女、カラム３が子供フラグである。したがって、下限値は、曜日の分類数である７となる。上限値は、カラム１、カラム２及びカラム３の分類数をそれぞれ乗じた２８となる。計測値は、上限値と同じ２８である。したがって、１０００件のデータレコードには、カラムの組み合わせが取りうる全ての値が含まれていることがわかる。図１２は、変数ｎ＝３の場合のカーディナリティを算出した結果を示す図である。カーディナリティは、上述の数式（３）に基づいて、０から１までの範囲で算出される。図１１の最上段によると、計測値と上限値とが同じ２８である。したがって、図１２に示されるカーディナリティの値は、１．０となる。
【００４９】
図１３は、変数ｎ＝４の場合の全ての組み合わせを示す図である。図１３によると、カラムを４つ選択した場合、１通りの組み合わせが存在することがわかる。図１４は、変数ｎ＝４の場合の下限値、上限値及び計数値を計数した結果を示す図である。図１４の最上段の組み合わせは、カラム１が曜日、カラム２が男女、カラム３が子供フラグ、カラム４が金額である。したがって、下限値は、曜日の分類数である７となる。上限値は、カラム１とカラム２とカラム３とカラム４との分類数を乗じた１１２となる。計測値は、２８である。したがって、１０００件のデータレコードには、１１２通り中２８通りの値の組み合わせが含まれていることがわかる。図１５は、変数ｎ＝４の場合のカーディナリティを算出した結果を示す図である。カーディナリティは、上述の数式（３）に基づいて、０から１までの範囲で算出される。図１４の最上段によると、計測値の値は上限値よりも小さい２８である。したがって、カーディナリティの値は、０．２となる。
【００５０】
変数ｎが、削除されなかったカラム数と一致する場合（ステップＳ１０６：ＹＥＳ）、一意性判定部１１０は、算出されたカーディナリティに基づいて、各カラムの組み合わせに一意性があるか否かを判定する（ステップＳ１０８）。ルール特定部１１１は、一意性があるか否か判定された結果に基づいて、ルールを特定する（ステップＳ１０９）。ステップＳ１０８及びステップＳ１０９の詳細については、後述する。ルール生成部１１２は、特定されたルールに基づいて、ルールテーブルを生成する（ステップＳ１１０）。
【００５１】
図５は、実施形態の一意性有無の判定からルールの特定までの処理の流れを示すフローチャートである。図５のステップＳ２０１からステップＳ２０６までが、図４のステップＳ１０８における一意性の有無の判定の処理を示す。図５のステップＳ２０７からステップＳ２１０までが、図４のステップＳ１０９におけるルールの特定の処理を示す。以下、図５の処理の流れを図１６を用いて説明する。
【００５２】
図１６は、データテーブルが有するデータレコードのルールの特定の結果を示す図である。図１６は、図１６（ａ）と図１６（ｂ）とを含む。図１６（ａ）は、カーディナリティ算出部１０９から出力されたカラムの組み合わせに対して、一意性の有無が判定された結果を示す図である。図１６（ｂ）は、一意性の有無が判定された結果から、ルールが特定されたカラムの組み合わせを示す図である。図１６（ｂ）によると、ルールが特定された組み合わせは、２番目のカラムの組み合わせと、６番目のカラムの組み合わせと、である。６番目のカラムの組み合わせの場合、前提カラムが、曜日、男女、子供フラグであり、結論カラムが金額である場合がルールとして特定されている。
【００５３】
一意性判定部１１０は、カーディナリティ算出部１０９から出力されたカラムの組み合わせから一意性があるか否かを判定するカラムの組み合わせを選択する（ステップＳ２０１）。一意性判定部１１０は、選択したカラムの組み合わせから、前提カラムを決定する（ステップＳ２０２）。一意性判定部１１０は、決定された前提カラムから、結論カラムが一意に定まるか否かを判定する（ステップＳ２０３）。
【００５４】
結論カラムが一意に定まる場合（ステップＳ２０３：ＹＥS）、一意性判定部１１０は、カラムの組み合わせが一意性を有することと、前提カラムと、結論カラムと、を記録する（ステップＳ２０４）。具体的には、図１６（ａ）の２行目のレコードのように記録される。図１６（ａ）の２行目のレコードによると、カラム１は子供フラグ、カラム２は金額である。前提カラムは金額である。結論カラムは子供フラグである。したがって、データテーブルのデータレコードは、金額が定まると、子供フラグが一意に定まることがわかる。
【００５５】
結論カラムが一意に定まらない場合（ステップＳ２０３：ＮＯ）、一意性判定部１１０は、カラムの組み合わせが一意性を有さないことを記録する（ステップＳ２０５）。具体的には、図１６（ａ）の１行目のレコードのように記録される。図１６（ａ）の１行目のレコードによると、カラム１は曜日、カラム２は金額である。したがって、データテーブルのデータレコードは、金額が定まったとしても、曜日は一意に定まらないことと、曜日が定まったとしても、金額は一意に定まらないことがわかる。
【００５６】
一意性判定部１１０は、カーディナリティ算出部１０９から受け付けた全てのカラムの組み合わせに対して一意性の有無を判定したか否かを判定する（ステップＳ２０６）。一意性の有無を判定していない場合（ステップＳ２０６：ＮＯ）、ステップＳ２０１に遷移する。一意性の有無を判定した場合（ステップＳ２０６：ＹＥS）、ルール特定部１１１は、一意性ありと判定されたカラムの組み合わせのうち、カラム数が少ない順にカラムの組み合わせを選択する（ステップＳ２０７）。
【００５７】
ルール特定部１１１は、ステップＳ２０７で選択されたカラムの組み合わせの前提カラム及び結論カラムを包含するカラムの組み合わせが、他の一意性ありと判定されたカラムの組み合わせにあるか否かを判定する（ステップＳ２０８）。例えば、図１６（ａ）によると、一意性ありと判定されたカラムの組み合わせのうち、最もカラム数が少ない組み合わせはカラム１が子供フラグ、カラム２が金額となる組み合わせである。したがって、ルール特定部１１１は、他の一意性ありと判定されたカラムの組み合わせから、前提カラムとして金額を含み、かつ結論カラムとして子供フラグを含むカラムの組み合わせを除去する。図１６（ａ）によると、４番目の及び５番目のカラムの組み合わせが、前提カラムとして金額を含み、かつ結論カラムとして子供フラグを含むカラムの組み合わせであることがわかる。
【００５８】
前提カラム及び結論カラムを包含するカラムの組み合わせがある場合（ステップＳ２０８：ＹＥＳ）、ルール特定部１１１は、特定したカラムの組み合わせを除去する（ステップＳ２０９）。例えば、図１６（ａ）によると、ルール特定部１１１は、上述の４番目及び５番目のカラムの組み合わせを除去する。
【００５９】
ルール特定部１１１は、一意性ありと判定されたカラムの組み合わせの全てに対して、前提カラム及び結論カラムを包含する組み合わせがあるか否か判定する（ステップＳ２１０）。
前提カラム及び結論カラムを包含する組み合わせがない場合（ステップＳ２１０：ＮＯ）、ステップＳ２０７へ遷移し、除去されていないカラムの組み合わせのうちカラム数が次に少ないカラムの組み合わせを選択する。前提カラム及び結論カラムを包含する組み合わせがある場合（ステップＳ２１０：ＹＥS）、ルール特定部１１１は、特定したルールをルール生成部１１２に出力し、処理を終了する（ステップＳ２１１）。
【００６０】
このように構成された情報処理装置１００では、データテーブルが有する各カラムから複数のカラムが選択される。一意性判定部１１０は、選択されたカラムの組み合わせのうち、一部の値が定まれば、残りの値が定まるか否かを示す一意性の有無を判定する。ルール特定部１１１は、一意性があると判定されたカラムの組み合わせから、ルールを特定する。ルール生成部１１２は、特定されたルールに基づいて、データテーブルからカラムの組み合わせの値を取得し、ルールテーブルを生成する。したがって、システムが大量のテーブル又はカラムを有する場合であっても、より簡単にデータテーブルに記録されたデータのルールを特定することができる。さらに、情報処理装置１００は、データテーブルのデータレコードをそのまま処理することでルールを特定する。したがって、データテーブルに数十万〜数百万単位でデータレコードが存在する場合であっても、各データを記号値に変換することなく、ルールを特定することができる。
【００６１】
図１７は、データテーブルが有する値の組み合わせのうち、一部のデータレコード数が少ない場合の具体例を示す図である。図１７は、図１７（ａ）と図１７（ｂ）とを含む。
図１７（ａ）によると、カラム１がＢ、カラム２が３である場合のデータレコード数は１である。したがって、他のデータレコード数と比べて少ないことがわかる。また、図１７（ａ）のカラム１の分類数は２でありカラム２の分類数は３であるため、カーディナリティは、１．０未満となる。したがって、図１７（ａ）に示されるカラムの組み合わせは、一意性が判定されるため、不正なデータレコードが含まれていたとしても、生成されるルールテーブルに抜けなどの不具合は生じない。
【００６２】
図１７（ｂ）のカラム１の分類数は２であり、カラム２の分類数は２であるため、１７（ｂ）の場合、カーディナリティは１．０となり、一意性は判定されない。したがって、カラム１がＡ、カラム２が２となるデータレコード又はカラム１がＢ、カラム２が１となるデータレコードが本来は含まれるはずがない不正なデータレコードであった場合、生成されるべきルールテーブルが生成されず、ルールの抜け等の不具合は生じることになる。そこで、情報処理装置１００のルール生成部１１２は、上記のように、算出されたカーディナリティが所定の条件を満たさないカラムの組み合わせであっても、とりうる値の組み合わせのうち一部が少ない場合（例えば、全体の１〜５パーセント程度）、カラムの組み合わせを出力するように構成されても良い。このように構成されることで、データテーブルが不正なデータを有することに伴う、ルールテーブルの抜けを防止することができる。
【００６３】
一意性判定部１１０は、複数の結論カラムを選択するように構成されても良い。この場合、一意性判定部１１０は、前提カラムが定まった場合に、結論カラムとして選択された各カラムの値の組み合わせが一意に定まるか否かで、一意性の有無を判定する。
【００６４】
ルール生成部１１２は、ルールテーブルを生成した場合に、レコード数の値が所定の閾値未満となるルールレコードを、他のルールレコードとは異なる態様で表示するように構成されても良い。異なる態様とは、例えば、異なる色、太字、斜体、下線又は点滅等で表示されることであっても良いし、これらを組み合わせて表示されても良い。また、音声等の視覚以外に訴求する情報を出力しても良い。このように構成されることで、レコード数が小数となるルールレコードが含まれる場合に、ルールレコードが不正に入力されたデータであるか否かの判断をユーザに求めることができる。
【００６５】
カーディナリティ算出部１０９は、上記とは異なる演算式でカーディナリティを算出するように構成されてもよい。例えば、カーディナリティ算出部１０９は、以下の数式（４）でカーディナリティを算出するように構成されてもよい。
【００６６】
カーディナリティ＝｛｛(上限値)-(下限値)/(計測値)-(下限値）｝｝  ・・・（４）
【００６７】
上述した実施形態におけるカーディナリティ算出部１０９、一意性判定部１１０、ルール特定部１１１、ルール生成部１１２をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【００６８】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６９】
１００…情報処理装置，１０１…通信部，  １０２…入力部，  １０３…表示部，  １０４…データ記憶部，  １０５…ルール記憶部，  １０６…制御部，  １０７…フィルタリング部，  １０８…計数部，  １０９…カーディナリティ算出部，  １１０…一意性判定部，  １１１…ルール特定部，  １１２…ルール生成部
【図１】
2019086887.tif 000003
【図２】
2019086887.tif 000004
【図３】
2019086887.tif 000005
【図４】
2019086887.tif 000006
【図５】
2019086887.tif 000007
【図６】
2019086887.tif 000008
【図７】
2019086887.tif 000009
【図８】
2019086887.tif 000010
【図９】
2019086887.tif 000011
【図１０】
2019086887.tif 000012
【図１１】
2019086887.tif 000013
【図１２】
2019086887.tif 000014
【図１３】
2019086887.tif 000015
【図１４】
2019086887.tif 000016
【図１５】
2019086887.tif 000017
【図１６】
2019086887.tif 000018
【図１７】
2019086887.tif 000019