(57)【特許請求の範囲】
【請求項１】
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定する解析部
を備えたデータ解析装置。
【請求項２】
前記解析部は、前記文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となるときの、前記部分文字列データの開始位置及び終了位置の少なくとも一方の位置を、前記入力データにおける前記レコードの区切り位置と推定する
請求項１に記載のデータ解析装置。
【請求項３】
前記解析部は、前記文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となるときの、文字のデータ属性の切り替わり位置を、前記入力データにおける前記データ項目の区切り位置と推定する
請求項２に記載のデータ解析装置。
【請求項４】
前記解析部は、前記特定のデータ長として前記入力データの総文字数の約数を用いて前記入力データを分割する
請求項１〜請求項３の何れか１項に記載のデータ解析装置。
【請求項５】
前記入力データは、前記データ項目及び前記レコードの少なくとも一方の区切りを示す予め定めた特定区切情報を含んでいないデータである
請求項１〜請求項４の何れか１項に記載のデータ解析装置。
【請求項６】
前記解析部は、推定した前記レコードの区切り位置で前記入力データを複数の部分文字列データに分割し、分割した複数の部分文字列データのうちの閾値以上の割合の部分文字列データに共通する文字のデータ属性の切り替わり位置を、前記入力データにおける前記データ項目の区切り位置と推定する
を含む請求項１〜請求項５の何れか１項に記載のデータ解析装置。
【請求項７】
前記解析部は、推定した前記レコードの区切り位置で前記入力データを複数の部分文字列データに分割し、分割した個々の部分文字列データに含まれる連続する同一文字を詰め文字に設定し、設定した前記詰め文字の連続の開始位置または終了位置を、前記入力データにおける前記データ項目の区切り位置と推定する
を含む請求項１〜請求項６の何れか１項に記載のデータ解析装置。
【請求項８】
前記解析部は、前記部分文字列データに含まれる連続する同一文字のうち、文字数が最大の文字を前記詰め文字に設定する
請求項７に記載のデータ解析装置。
【請求項９】
前記複数のデータ項目は、文字型のデータ項目と数字型のデータ項目を含む
請求項１〜請求項８の何れか１項に記載のデータ解析装置。
【請求項１０】
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定するデータ解析装置により推定された区切り位置を示す情報が入力され、入力された前記情報に基づいて、前記入力データを分割する分割部
を備えるデータ分割装置。
【請求項１１】
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定する解析ステップ
を含む処理をコンピュータに実行させるデータ解析方法。
【請求項１２】
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定するデータ解析方法により推定された区切り位置を示す情報が入力され、入力された前記情報に基づいて、前記入力データを分割する分割ステップ、
を含む処理をコンピュータに実行させるデータ分割方法。
【請求項１３】
コンピュータに、
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定する解析ステップ
を含む処理を実行させるためのデータ解析プログラム。
【請求項１４】
コンピュータに、
複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データに対し、前記入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる前記特定のデータ長に基づいて、前記入力データにおける前記レコードの区切り位置を推定するデータ解析プログラムにより推定された区切り位置を示す情報が入力され、入力された前記情報に基づいて、前記入力データを分割する分割ステップ
を含む処理を実行させるためのデータ分割プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、データ解析装置、データ分割装置、データ解析方法、データ分割方法、データ解析プログラム、及びデータ分割プログラムに関する。
【背景技術】
【０００２】
コンピュータシステムで使用する入力データや出力データの中には、複数の項目のデータを含むレコードが複数含まれるデータがある。典型的な例は、例えばデータベース装置を含むコンピュータシステムで使用されるデータである。データベース装置で使用されるデータは、データベース装置を含むコンピュータシステム毎に定義されることが一般的である。定義が相違するコンピュータシステムの間でデータを授受するためには、一方のコンピュータシステムの出力データを、他方のコンピュータシステムの入力データに変換する処理が必要である。このためには、一方のコンピュータシステムの出力データの定義と、他方のコンピュータシステムの入力データの定義とを関係付ける必要がある。例えば、入力データの形式（例えば入力フォーマット）の定義や、出力データの形式（例えば出力フォーマット）の定義、位置、順序等の変換方法（マッピング）の定義は一般的に手作業によって作成される。
【０００３】
これに対し、例えば、データの定義を行う技術として、改行文字や特定の文字を含むフォーマット済みのテキストファイルに対して、テキストフォーマットを認識する技術が知られている。この技術では、ページにヘッダーやフッター、段組、図表割付などのテキストフォーマット済のテキストファイルに対して、テキストフォーマットを認識する。具体的には、複数行を比較し、ページ長を推定する。また、空白文字等の特定文字が連続する範囲を段落の境界と認識し、図表領域のように文章ではなく処理が不要な行を認識する。
【０００４】
また、非構造化文書を構造化文書に変換するために、非構造化文書を構造化文書に変換するときに使用する文書の論理構造の構成要素を表す特徴的な文字列を、非構造化文書から抽出する技術が知られている。この技術では、文書の論理構造の構成要素を表す特徴的な文字列が含まれている非構造化文書から、その特徴的な文字列を抽出し、抽出した文字列を用いて、非構造化文書を構造化文書に変換する。
【０００５】
また、文書生成プログラムにおいて項目を判定するため、第一文書に含まれる第１文字列が第２文字列に関係する文字列を含むときに、第２文字列を項目として判定する技術が開示されている。この技術では、特定の文字が含まれた名刺などの画像からテキストを抽出し、抽出したテキストを対象として特定の文字に基づいて項目を判定している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−２０３０２０号公報
【特許文献２】特開平１０−２１２４９号公報
【特許文献３】特開２０１１−１７０５４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、例えばデータベース装置を含むコンピュータシステムで使用するデータの一例として、データの長さやデータの型が予め定められた項目を複数含む固定長データが知られている。固定長データは、複数の項目のデータの長さやデータの型が予め定められている一方で、項目毎の区切りがなくデータが連続していることが一般的である。このため、改行文字や特定の文字を含むテキストや文書を入力データとして、使用する技術は、固定長データを適用することが困難である。従って、固定長データを、定義が相違する他のコンピュータシステムで使用するためには、手作業による項目等の定義が必要であった。すなわち、固定長データを他のコンピュータシステムで使用するために、固定長データの形式（例えば出力フォーマット）を手作業によって定義しなければならない。
【０００８】
１つの側面では、本発明は、複数の項目のデータを含むレコードが複数連続する入力データの区切り位置を解析することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、複数のデータ項目それぞれの値を文字列として含むレコードが複数連続する入力データが入力される。この入力データを特定のデータ長毎に分割したときに生成されることとなる複数の部分文字列データそれぞれにおける、文字のデータ属性の切り替わり位置が前記複数の部分文字列データ間で所定以上の一致度となる特定のデータ長を求める。そして、求めた特定のデータ長に基づいて、入力データにおけるレコードの区切り位置を推定する。
【発明の効果】
【００１０】
１つの実施態様では、複数の各項目に関する各データを含むレコードが複数連続する入力データの区切り位置を解析できる、という効果を有する。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るデータ解析システムの概略構成を示すブロック図である。
【図２】本実施形態に係るデータ解析システムの概略ブロック図である。
【図３】本実施形態に係るデータ解析装置の解析処理の流れの一例を示すフローチャートである。
【図４】第１解析部における処理の流れの一例を示すフローチャートである。
【図５】（Ａ）は固定長データの一例を示し、（Ｂ）は約数で分割したデータを示し（Ｃ）は分割データに対する部分配列を示すイメージ図である。
【図６】（Ａ）は、約数で固定長データを分割したデータ、（Ｂ）は部分配列を示すイメージ図である。
【図７】（Ａ）は、約数で固定長データを分割したデータ、（Ｂ）は部分配列を示すイメージ図である。
【図８】第２解析部における処理の流れの一例を示すフローチャートである。
【図９】詰め文字を推測する過程の説明図である。
【図１０】第３解析部における第１の推測処理の流れの一例を示すフローチャートである。
【図１１】第３解析部における第１の推測処理の過程についての説明図である。
【図１２】第３解析部における第２の推測処理の流れの一例を示すフローチャートである。
【図１３】第３解析部における第２の推測処理の過程についての説明図である。
【図１４】第３解析部における第２の推測処理の過程についての説明図である。
【図１５】第３解析部における第２の推測処理の過程についての説明図である。
【図１６】データ分割処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【００１３】
（データ解析システム）
図１には、コンピュータで実現される本実施形態に係るデータ解析システム１０が示されている。データ解析システム１０は、少なくとも解析部１４を含むデータ解析装置１１と、分割部２６を含むデータ分割装置１３とを含む。データ解析装置１１の解析部１４は、第１解析部１６と、第２解析部２０及び第３解析部２２を含む項目解析部１８と、を備えている。解析部１４には、複数の項目のデータが区切り記号無しに連続する固定長データ１２が入力される。解析部１４は、入力された固定長データ１２を解析し、各項目のデータの区切りを示す情報（以下、区切りを示す情報）２４を出力する。また、データ分割装置１３の分割部２６には、解析部１４から出力された区切りを示す情報２４と、固定長データ１２が入力される。分割部２６は、区切りを示す情報２４に基づいて固定長データ１２を分割し、項目定義データ２８として出力する。
【００１４】
データ解析システム１０は、例えば図２に示すコンピュータ３０で実現することができる。コンピュータ３０はＣＰＵ３２、メモリ６４、不揮発性の記憶部３６、ディスプレイ５２、キーボード５４、マウス５６を備え、これらはバス６２を介して互いに接続されている。また、コンピュータ３０はインターネット等の通信回線に接続するためのインタフェース（Ｉ／Ｏ）６０と、記録媒体が挿入され、挿入された記録媒体に対して読み書きするための装置（Ｒ／Ｗ）５８がバス６２に接続されている。なお、記憶部３６はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。
【００１５】
記憶部３６には、コンピュータ３０をデータ解析装置１１として機能させるための解析プログラム３８が記憶されている。また、記憶部３６には、コンピュータ３０をデータ分割装置１３として機能させるための分割プログラム４６が記憶されている。ＣＰＵ３２は、解析プログラム３８を記憶部３６から読み出してメモリ３４に展開し、解析プログラム３８が有するプロセスを順次実行する。また、ＣＰＵ３２は、分割プログラム４６を記憶部３６から読み出してメモリ３４に展開し、分割プログラム４６が有するプロセスを順次実行する。
【００１６】
なお、本実施形態では、コンピュータ３０によってデータ解析装置１１とデータ分割装置１３との各々を実現させる一例を示すが、データ解析装置１１とデータ分割装置１３は１つのコンピュータに含まれることに限定されない。つまり、開示の技術におけるデータ解析装置１１とデータ分割装置１３とは、各々独立したコンピュータで実現できるようにしてもよい。この場合、データ解析装置１１として機能するコンピュータと、データ分割装置１３として機能するコンピュータの間は、Ｒ／Ｗ５８またはＩ／Ｏ６０によりデータを授受することができる。
【００１７】
解析プログラム３８は、第１解析プロセス４０、第２解析プロセス４２、及び第３解析プロセス４４を有する。ＣＰＵ３２は、第１解析プロセス４０を実行することで、図１に示すデータ解析装置１１の第１解析部１６として動作する。つまりデータ解析システム１０に含まれるデータ解析装置１１がコンピュータ３０で実現され、第１解析プロセス４０を実行することでコンピュータ３０は第１解析部１６として動作される。またＣＰＵ３２は、第２解析プロセス４２を実行することで、図１に示す第２解析部２０として動作する。またＣＰＵ３２は、第３解析プロセス４４を実行することで、図１に示す第３解析部２２として動作する。また、ＣＰＵ３２は、第２解析プロセス４２と第３解析プロセス４４を実行することで、図１に示す項目解析部１８として動作される。
【００１８】
なお、解析プログラム３８は開示の技術におけるデータ解析プログラムの一例である。つまり、解析プログラム３８はコンピュータ３０をデータ解析装置１１として機能させるためのデータ解析プログラムの一例である。
【００１９】
分割プログラム４６は、分割プロセス５０を有する。ＣＰＵ３２は、分割プロセス５０を実行することで、図１に示すデータ分割装置１３の分割部２６として動作する。つまりデータ解析システム１０に含まれるデータ分割装置１３がコンピュータ３０で実現され、分割プロセス５０を実行することでコンピュータ３０は分割部２６として動作される。
【００２０】
なお、分割プログラム４６は開示の技術におけるデータ分割プログラムの一例である。つまり、分割プログラム４６はコンピュータ３０をデータ分割装置１３として機能させるためのデータ分割プログラムの一例である。
【００２１】
データ解析装置１１は、入力される固定長データ１２を解析する。コンピュータで使用されるデータの一例には、異なる形式の複数のデータがある。例えば、例えば、ＸＭＬ形式のデータは、タグによって項目が明示的に区切られている。他例のＣＳＶ形式のデータば、カンマ等の所定記号によって項目が明示的に区切られている。ところが、固定長データ１２は、「長さと型が決まっている項目を複数有するデータ」である。すなわち、固定長データ１２は、項目の区切りが存在しないため、データの中のどこからどこまでが一つの項目であるのかを判断することが困難である。また、複数の項目が連続されて１つのレコードとなる場合、複数のレコードが区切り無しに連続する。従って、１２は、項目の区切りが存在しないため、データの中のどこからどこまでが一つのレコードであるのかを判断することが困難である。そこで、データ解析装置１１は、入力される区切りがない形式の固定長データ１２から、項目の区切りを自動的に解析する。
【００２２】
まず、データ解析装置１１の第１解析部１６は、入力される固定長データ１２を解析し、文字の種類等に基づいて固定長データ１２のレコードの区切り位置を求める。項目解析部１８は、第１解析部１６により解析された１つのレコードについて、項目の区切り位置を求める。詳細には、第２解析部２０において、文字や数字に連続する詰め文字を求め、第３解析部２２において詰め文字及び文字の種類等に基づいて固定長データ１２の１つのレコードにおける項目の区切り位置を求める。
【００２３】
また、データ分割装置１３は、データ解析装置１１で解析された固定長データ１２のレコードの区切り位置及び１つのレコードにおける項目の区切り位置を示す情報２４に基づいて、固定長データ１２を項目毎に分割し、項目定義データ２８を得る。詳細には、データ分割装置１３の分割部２６に、解析部１４から出力される区切りを示す情報２４と、固定長データ１２とが入力される。分割部２６は、入力された固定長データ１２に対して区切りを示す情報２４を使用して、項目毎に分割した項目定義データ２８を出力する。
【００２４】
なお、本実施形態では、コンピュータ３０の記憶部３６に解析プログラム３８及び分割プログラム４６が予め記憶されている態様を説明する。しかし、解析プログラム３８及び分割プログラム４６は、例えば、外部の情報処理装置から通信によって受信されてメモリ３４に記憶される構成であってもよい。また、解析プログラム３８及び分割プログラム４６は、記憶部３６又はメモリ３４に一纏めに記憶されることに限られるものではない。例えば解析プログラム３８及び分割プログラム４６は、個々のプログラムやプロセス毎に分けて記憶部に記憶されてもよく、インターネット等のコンピュータネットワーク上に分散されて記憶されていてもよい。
【００２５】
次に本実施形態の作用を説明する。
まず、図３〜図１５を参照し、データ解析システム１０のデータ解析装置１１によって実現される固定長データ１２の区切りを示す情報を求める解析処理を説明する。
【００２６】
データ解析装置１１による解析処理では図３に示す処理ルーチンが実行される。まず、解析部１４は、ステップ１００において、ユーザ等の指示により指定されたデータ解析対象の固定長データ１２を取得する。固定長データ１２は、長さと型が決まっている項目を区切り記号等の特殊な文字等を含まずに連続して複数持つデータである。次のステップ１０２において第１解析部１６は、取得された固定長データ１２により１レコード長を推測する。
【００２７】
詳細は後述するが、本実施形態では、固定長データ１２として例えばテキストデータを採用する。第１解析部１６は、固定長データ１２としてのテキストデータを、当該テキストデータに含まれる各文字のデータが、例えば数字以外の文字を示すデータか数字を示すデータかを表す文字の種類に変換する。また、変換した文字の種類の配列に応じて、「文字を示すデータ」が連続する文字列パターンの開始位置と「数字を示すデータ」が連続する数字列パターンの終了位置を求める。次に、文字列パターンの開始位置及び数字列パターンの終了位置が各レコードで一致、又は予め定めた閾値以上になるデータの長さを１レコード長と推定する。なお、この場合、全てのレコード長は同一であることが好ましい。また、文字列パターンの開始位置及び数字列パターンの終了位置は、その逆、すなわち文字列パターンの終了位置及び数字列パターンの開始位置でもよい。
【００２８】
次のステップ１０４において、項目解析部１８の第２解析部２０は、固定長データ１２における詰め文字を推測する。第２解析部２０は、詳細は後述するが、数字列の前後何れかに同じ文字が連続する場合、連続する文字を数字列の詰め文字（パディング文字）と推測する。また、文字列の前後何れかに同じ文字が連続する場合、連続する文字を文字列の詰め文字（パディング文字）と推測する。
【００２９】
次のステップ１０６において、項目解析部１８の第３解析部２２は、第１解析部１６で推測された１レコード長と、第２解析部２０で推測された詰め文字を用いて、固定長データ１２における項目の区切り位置を推測する。第３解析部２２は、詳細は後述するが、次の推測方法により項目の区切り位置を推測する。第１の推測方法は、レコードにおける各位置の文字の種類を求め、各レコードに共通する「文字の種類が相違する境界」を、項目の区切り位置と推定する。第２の推測方法は、予め定義された文字の種類の配列から項目の区切り位置を推測する。例えば「数字の並び」に一致または予め定めた閾値以上になるパターンを求め、そのパターンが各レコードに共通して出現するときに、そのパターンを項目と推測し、パターンの前後何れかの位置を項目の区切り位置と推測する。
【００３０】
次のステップ１０８において、解析部１４は、解析結果として区切りを示す情報２４を出力する。区切りを示す情報２４は、１レコード長、１レコード長から定まる各レコードの境界位置、１レコードに含まれる各項目の長さ（項目長）、各項目の文字の種類、及び項目毎の区切り位置を含む。
【００３１】
このように、長さと型が決まっている項目を複数持つ固定長データに対して、項目の区切りを自動的に判別でき、個々の項目の開始位置と長さを推測できる。従って、長さと型が決まっている項目を複数持つ固定長データに含まれる個々の項目の開始位置と長さを、コンピュータへ手入力する手間を削減することができる。
【００３２】
第１解析部１６によるステップ１０２の第１解析処理では、図４の処理ルーチンが実行される。本実施形態では、一例として、固定長データ１２が、数字以外の文字を示すデータと数字を示すデータとを含むテキストデータである場合について説明する。つまり、文字の種類が文字型の文字列と、数値型の数字列と、を含む固定長データについて説明する。
【００３３】
第１解析部１６は、数字以外の文字を示すデータを少なくとも１つ含む文字列の開始位置と、数字を示すデータを少なくとも１つ含む数字列の終了位置を求める。文字列の開始位置と数字列の終了位置は、固定長データに含まれるレコードの各々について同様の位置である。そこで、次に、文字列の開始位置と数字列の終了位置の間隔の繰り返しパターンが規則的になるように、１レコードの長さを求める。つまり、固定長データ上に、文字列の開始位置と数字列の終了位置が周期的に位置する、１レコードの長さを求める。ここで、全てのレコード長が同じであるなら、１レコードの長さは全レコード長の約数である。そこで、本実施形態では全レコード長の約数を用いて、第１解析部１６が１レコードの長さを推定する一例を詳細に説明する。
【００３４】
図４のステップ１１０において、第１解析部１６は、ステップ１００で取得した固定長データ１２の全体の長さ（文字長）を特定し、固定長データ１２の全体の長さの約数を求める。次のステップ１１２では、ステップ１１０で求めた約数のうち、「１」、固定長データ１２の全体の長さに一致する約数を除いた約数の中から処理対象の約数を設定する。本実施形態では、最大の約数から順に設定する場合を説明する。
【００３５】
次のステップ１１４では、固定長データの全体の文字数を、ステップ１１２で設定した処理対象の約数で除算した結果（文字数）の長さで、固定長データの全体を分割し、分割したデータを分割データとして設定する。
【００３６】
次のステップ１１６では、ステップ１１４で設定した分割データ毎に、数字列の終了位置と文字列の開始位置を求める。この場合、固定長データの１文字を予め定めた単位文字とし、単位文字毎に、単位文字の種類を示す型情報に変換することにより、数字列の終了位置と文字列の開始位置を求めることができる。つまり、固定長データは、複数の各項目のデータを含むレコードが複数連続する入力データである。また、固定長データの１文字を予め定めた単位文字とし、単位文字毎に、単位文字の種類を示す型情報を配列したとき、配列した全型情報配列の一部である部分配列は、分割データについて型情報を配列したものに相当する。第１解析部１６は、その部分配列に対応する分割データ毎に、数字列の終了位置と文字列の開始位置を求める。
【００３７】
次のステップ１１８では、分割データの各々について、数字列の終了位置と文字列の開始位置（または数字列の開始位置と文字列の終了位置）の一致度を求める。一致度は、例えば、分割した個々の部分配列における型情報の配列が一致する比率を示す。一致度の一例は、分割データの総数に対する数字列の終了位置と文字列の開始位置（または数字列の開始位置と文字列の終了位置）が分割データと対応している分割データの個数との比率である。つまり、同じ位置に、数字列の終了位置と文字列の開始位置（または数字列の開始位置と文字列の終了位置）が位置している分割データの数が多くなるほど一致度は大きくなる。
【００３８】
次のステップ１２０では、ステップ１１８で求めた一致度が予め定めた閾値以上か否かを判断する。予め定めた閾値としては、例えば、８割以上で一致することを示す値、好ましくは、９割以上で一致することを示す値、最も好ましくは、完全一致することを示す値を適用することができる。
【００３９】
一致度が閾値以上であるときは、ステップ１２０で肯定されてステップ１２２の処理へ移行する。ステップ１２２では、ステップ１１２で設定した処理対象の約数で全体長を除算した結果の長さ（文字数）を仮レコード長に設定する。次のステップ１２４では、ステップ１１２で設定した処理対象の約数で全体長を除算した結果の長さ（文字数）を、全体長と見なし、処理を継続する。すなわち、ステップ１２４では、ステップ１２２で設定した仮レコード長を全体長とみなす。この処理は、ステップ１１０で用いた固定長データ１２から、ステップ１２２で設定した仮レコード長のデータに、対象とするデータを置き換えて処理を継続することに相当とする。これにより、処理対象の約数に対する約数について繰り返し処理が行われる。ステップ１２４の処理によって、仮レコード長に設定したレコードに、複数のレコードが含まれるときに、さらに仮レコード長の約数で除算した結果の長さ（文字数）で分割することができる。なお、ステップ１１２において処理対象の約数の全てを順次処理対象の約数に設定して繰り返し処理するときには、ステップ１２４の処理がステップ１１２以降で処理することになるため、ステップ１２４の処理をスキップすることができる。
【００４０】
一方、ステップ１２０で否定されると、ステップ１２６において、第１解析部１６は、全ての約数について、処理が終了したか否かを判断する。ステップ１２６で否定されると、ステップ１１２へ戻りステップ１１２から処理を継続する。一方、ステップ１２６で肯定されると、ステップ１２８の処理へ移行する。次のステップ１２８では、ステップ１２２で最後に設定された仮レコード長を、固定長データ１２に含まれる複数項目のデータによる１レコード長に決定する。
【００４１】
以上のようにして固定長データ１２に対する１レコード長を推測する。
【００４２】
なお、ステップ１２８では、決定した１レコード長の開始位置及び終了位置の少なくとも一方の位置を、固定長データのレコードの区切り位置を示す区切情報として出力することができる。
【００４３】
図５〜図７には、１レコード長を推測する一例として、固定長データ１２の全体の長さの約数毎に対応して固定長データ１２を分割し、１レコード長を推測する過程を示した。図５（Ａ）は固定長データ１２の一例として、３０文字の固定長データ１２を示している。従って、固定長データ１２の全体長は３０であり、約数は、３０，１５，１０，６，５，３，２，１である。なお、全体長を約数の各々で除算した結果は、１，２，３，５，６，１０，１５，３０である
【００４４】
図５（Ｂ）は、約数１５において固定長データ１２を分割した分割データ１２Ａ−１，１２Ａ−２を示している。また、図５（Ｃ）は、分割データ１２Ａ−１，１２Ａ−２について、数字列の終了位置を「数」、文字列の開始位置を「文」の各々の文字に置き換えた部分配列１２ａ−１，１２ａ−２を示している。図５（Ｃ）から理解されるように、数字列の終了位置と文字列の開始位置は、部分配列１２ａ−１，１２ａ−２で一致しない。すなわち、分割データの１文字目の文字の種類のみが一致し、他の位置では不一致である。このことは、約数１５によってレコード長を求めたとき、数字列の終了位置と文字列の開始位置の一致度が略「０」であることを示している。
【００４５】
図６（Ａ）は、約数１０において固定長データ１２を分割した分割データ１２Ｂ−１，１２Ｂ−２，１２Ｂ−３を示している。また、図６（Ｂ）は、分割データ１２Ｂ−１，１２Ｂ−２，１２Ｂ−３について、数字列の終了位置を「数」、文字列の開始位置を「文」の各々の文字に置き換えた部分配列１２ｂ−１，１２ｂ−２，１２ｂ−３を示している。図６（Ｂ）から理解されるように、数字列の終了位置と文字列の開始位置は、各部分配列１２ｂ−１〜１２ｂ−３について略一致する。すなわち、分割データの１文字目の文字の種類のみが不一致であり、他の文字については一致する。このことは、約数１０によってレコード長を求めたとき、数字列の終了位置と文字列の開始位置の一致度が９割を超える好ましい一致度であることを示している。
【００４６】
次に、約数１０について、その約数である５，２のうち約数５について説明する。
図７（Ａ）は、約数５において固定長データ１２を分割した分割データ１２Ｃ−１，１２Ｃ−２，１２Ｃ−３，１２Ｃ−４，１２Ｃ−５，１２Ｃ−６を示している。また、図７（Ｂ）は、分割データ１２Ｃ−１〜１２Ｃ−６に対応する部分配列１２ｃ−１〜１２ｃ−６を示している。図７（Ｂ）から理解されるように、数字列の終了位置と文字列の開始位置は、部分配列１２ｃ−１〜１２ｃ−６について一致しない。
【００４７】
以上のことにより、図５（Ａ）に示す一例の３０文字の固定長データ１２は、レコード長が「１０」であると推測できる。
【００４８】
次に、項目解析部１８の第２解析部２０によるステップ１０４の第２解析処理では、図８の処理ルーチンが実行される。本実施形態では、一例として、長さと型が決まっている項目を複数持つ固定長データから、詰め文字（パディング文字）を推測する。なお、本実施形態では、数字列の詰め文字は数字列の前、文字列の詰め文字は文字列の後ろに連続する場合を説明する。しかし、開示の技術は、数字列の詰め文字は数字列の前、文字列の詰め文字は文字列の後ろに連続する場合に限定されるものではない。例えば、数字列の前後、および文字列の前後に同じ文字が連続する数を、以下に説明する方法と同様に計数することで、数字列の前後、および文字列の前後の何れに詰め文字が連続する場合でも適用することができる。
【００４９】
第２解析部２０は、数字列の前（または後ろ）に同じ文字が連続する場合、連続する文字を数字列（数値型項目）の詰め文字（パディング文字）と判断する。また、文字列の後ろ（または前）に同じ文字が連続する場合、連続する文字を文字列（文字型項目）の詰め文字（パディング文字）と判断する。これらの第２解析部２０において詰め文字（パディング文字）を推測する一例を詳細に説明する。
【００５０】
図８のステップ１３０では、ステップ１００で取得した固定長データ１２について、数字列の前に連続する文字を調べ、連続する同一文字の文字数を計数する。次のステップ１３２では、ステップ１３０で計数した同一文字について、文字数の合計が最大の文字を、数字列の詰め文字に設定する。また、次のステップ１３４では、固定長データ１２について、文字列の後ろに連続する文字を調べ、連続する同一文字の文字数を計数する。次のステップ１３６では、ステップ１３４で計数した同一文字について、文字数の合計が最大の文字を、文字列の詰め文字に設定する。
【００５１】
以上のようにして固定長データ１２における詰め文字（パディング文字）を推測する。
【００５２】
図９には、詰め文字を推測する過程の一例を示した。まず、数字列の前に連続する文字を探索する（ステップ１３０）。図９の例では、文字を探索するための数字列の先頭は、２文字目の「１」、８文字目の「１」、１９文字目の「１」、３０文字目の「０」である。これらの数字列の前に連続する文字を探索する。その過程を符号Ｓ１３０で示した。つまり、数字列の前に続く文字を調べる。連続して同一文字が連続する場合は、連続する文字数を計数する。探索の結果は、「空白」１文字、「郎」１文字、「郎」１文字、及び「空白」３文字である。探索の結果において、文字数の合計数が最大の文字を詰め文字とみなす。従って、図９の一例では、数字列の詰め文字は、「空白」を設定する。
【００５３】
次に、文字列の後ろに連続する文字を探索する（ステップ１３４）。図９の例では、文字を探索するための文字列の末尾は、４文字目の「田」、７文字目の「郎」、１８文字目の「郎」、２３文字目の「森」、２６文字目の「−」である。これらの文字列の後ろに連続する文字を探索する。その過程を符号Ｓ１３４で示した。つまり、文字列の後ろに続く文字を調べる。連続して同一文字が連続する場合は、連続する文字数を計数する。探索の結果は、「空白」１文字、「１」１文字、「１」１文字、「空白」２文字、及び「空白」３文字である。探索の結果において、文字数の合計数が最大の文字を詰め文字とみなす。従って、図９の一例では、文字列の詰め文字は、「空白」を設定する。
【００５４】
次に、項目解析部１８の第３解析部２２によるステップ１０６の第３解析処理では、第１解析部１６で推測された１レコード長と、第２解析部２０で推測された詰め文字を用いて、固定長データ１２についての項目の区切りを推測する。第３解析部２２は、第１の推測方法または第２の推測方法により項目の区切りを推測する。
【００５５】
第１の推測方法は、レコードにおける各位置の文字の種類を求め、各レコードに共通する「文字の種類が相違する境界」を、項目の区切りと推測する。つまり、固定長データと、１レコード長の各情報を基づいて、レコード上の文字の位置毎に文字の種類を判定して項目の区切りを見出し、１つの項目の範囲を求める。例えば、各レコードを配列方向と直交する方向に並べたときに各レコードの文字を縦（レコードの配列方向と直交する方向）に見て、レコード上の各文字の種類を判断することにより、項目の区切りを見出し、１つの項目の範囲を求める。
【００５６】
詳細には、第３解析部２２における第１の推測方法では、図１０の処理ルーチンが実行される。なお、本実施形態では、全てのレコードの長さが一致する場合を説明する。また、数字列の前（または後ろ）に詰め文字が連続することがある、また文字列の後ろ（または前）に詰め文字が連続することがある場合を説明する。また、１レコードの長さ、数字列のパディング文字、文字列のパディング文字は、事前に推測されているものとする。
【００５７】
図１０のステップ１４０では、ステップ１００で取得した固定長データ１２、ステップ１０２で推測した１レコード長、ステップ１０４で推測した詰め文字に関する情報を取得する。次のステップ１４２では固定長データ１２をステップ１０２で推測した１レコード長で分割し、分割された分割データを１レコードとみなす。次のステップ１４４では、１レコードとみなした分割データについて、先頭文字から末尾文字まで１文字づつ、全てのレコードで共通に文字の位置を文字の種類判別対象とする。このステップ１４４の処理は、縦方向にレコードの文字の位置が共通になるようにレコードを並べたときに文字を縦に参照することに相当する。
【００５８】
次のステップ１４６では、全てのレコードについて文字の位置（ｎ文字目）に共通する文字の種類を求める。なお、ステップ１４６では、文字列の文字と数字列の文字とが混在する場合には、文字列の文字とみなすことが好ましい。次のステップ１４８では、１レコード長のデータのパターンとして先頭位置から末尾位置までの各位置の文字種別を決定する。次のステップ１５０では、１レコード長のデータについて先頭位置から末尾位置までに詰め文字が存在するときにその詰め文字の位置を記録する。次のステップ１５２では、数字列の先頭位置から末尾位置までを数値型項目の位置に設定する。なお、数字列の先頭位置は、詰め文字を含む場合がある。また、数字列の末尾位置は詰め文字を含まない。次のステップ１５４では、文字列の先頭位置から末尾位置までを文字型項目の位置に設定する。なお、文字列の先頭位置は、詰め文字を含まない。また、文字列の末尾位置は、詰め文字を含む場合がある。次のステップ１５６では、ステップ１５２及び１５４による数値型項目の位置、及び文字型項目の位置により、項目の区切りを決定する。
【００５９】
なお、項目の区切りを決定する場合には、文字列を優先することが好ましい。例えば、数値型項目の位置による先頭位置から末尾位置までを数値型項目とし、その先頭位置から末尾位置までの文字数を数値型項目のデータ長と推測する。また、文字型項目の位置による先頭位置から末尾位置までを文字型項目とし、その先頭位置から末尾位置までの文字数を文字型項目のデータ長と推測する。項目の区切りを決定する場合に文字列を優先すると、文字型項目を推測する場合において、詰め文字の有無が有効に機能する。例えば、文字列の先頭に詰め文字を含まず、かつ文字列の末尾に詰め文字を含む場合があるとき、文字列が連続する範囲で、詰め文字の有無の境界部分が項目の区切りであると推測できる。
【００６０】
以上のようにして固定長データ１２における項目の区切り位置を推測する。
【００６１】
図１１には、項目を推測する過程の一例を示した。図１１（Ａ）は、約数１０で固定長データ１２を分割した分割データ１２Ｂ−１，１２Ｂ−２，１２Ｂ−３を示している（図６（Ａ）も参照）。また、図１１（Ｂ）は、１レコード長のデータのパターンとして、先頭位置から末尾位置までの各位置の文字種別を決定（ステップ１４８）した部分配列１２Ｄを示している。また、図１１（Ｂ）には、１レコード長のデータについて先頭位置から末尾位置までに詰め文字が存在するときに記録した詰め文字の位置（ステップ１５０）に文字「パ」を格納したデータ配列１２Ｅを示した。
【００６２】
図１１に示す固定長データ１２による、項目の推測は、２文字の数値型項目、３文字の文字型項目、３文字の文字型項目、及び２文字の数値型項目が連続するデータであるという推測結果を得ることができる。
【００６３】
このように、固定長データと、推測された１レコード長により、各レコードを判別できる。また、各レコードの文字の位置で共通の文字の種類（レコードを縦に確認したときの文字位置の文字の種類）を判断することにより、項目の区切りを特定でき、１つの項目の範囲を設定できる。
【００６４】
なお、本実施形態では、数値型項目と文字型項目が存在するものとして説明したが、開示の技術は、数値型項目と文字型項目に限定されるものではない。例えば、アルファベットや記号文字を示すデータを含む項目など、文字の種類で切り分け可能な項目であれば、開示の技術は適用可能である。
【００６５】
次に、第３解析部２２における第２の推測方法は、予め定義された文字の種類の配列から項目の区切り位置を推測する。例えば「数字の並び」に一致または一致度が予め定めた閾値以上になるパターンを求め、そのパターンが各レコードに共通して出現するときに、そのパターンを項目と推測し、パターンの前後何れかの位置を項目の区切り位置として推測する。つまり、正規表現で特定できるパターンによりレコードの項目を判断することにより、項目の区切り位置を設定し、１つの項目を推定する。
【００６６】
本実施形態では、正規表現による日付を示す文字型項目（例えば、ＭＭＤＤ形式の日付型項目）、その他の文字型項目、および、数値型項目が存在する場合について説明する。なお、正規表現による他の例として、日付を示す文字型項目に限定されない。例えば、値を任意の文字列パターンで表すことができる項目であれば、同様の方法で項目の区切りを推測することができる。
【００６７】
詳細には、第３解析部２２における第２の推測方法では、図１２の処理ルーチンが実行される。なお、本実施形態では、全てのレコードの長さが一致する場合を説明する。また、数字列の前（または後ろ）に詰め文字が連続することがあり、また文字列の後ろ（または前）に詰め文字が連続することがある場合を説明する。また、１レコードの長さ、数字列のパディング文字、文字列のパディング文字は、事前に推測されているものとする。
【００６８】
図１２のステップ１６０では、図１０のステップ１４０と同様に固定長データ１２、推測した１レコード長、及び詰め文字に関する情報を取得する。次のステップ１６２では、図１０のステップ１４２と同様に、固定長データ１２を推測した１レコード長で分割し、分割された分割データを１レコードとみなす。
【００６９】
次のステップ１６４では、１レコードとみなした分割データについて、正規表現による特定項目（例えば、日付を示す文字型項目。一例はＭＭＤＤ形式の日付型項目）の位置を判別する。ＭＭＤＤ形式の日付型項目では、ＭＭの位置には文字として「０１」〜「１２」の何れか１つの２桁数字を示す文字が対応する。また、ＤＤの位置には文字として「０１」〜「３１」の何れか１つの２桁数字を示す文字が対応する。
【００７０】
次のステップ１６６では、全てのレコード、又は或る一定割合を超える数のレコードについて、共通に日付を示す文字型項目と判別できる位置を日付型項目に設定する。この場合の或る一定割合は、予め定めた閾値であり、例えば、８割以上の割合を示す値があり、好ましくは、９割以上の割合を示す値があり、最も好ましくは、全てのレコードに対応する１０割の割合を示す値である。
【００７１】
次のステップ１６８では、ステップ１６６で設定した日付型項目以外の文字について、数値型項目の位置を判別する。次のステップ１７０では、全てのレコード、又は或る一定割合を超える数のレコードについて、共通に数値型項目と判別できる位置を数値型項目に設定する。この場合の或る一定割合は、予め定めた閾値であり、例えば、８割以上の割合を示す値、好ましくは、９割以上の割合を示す値、最も好ましくは、全てのレコードに対応する１０割の割合を示す値を適用することができる。
【００７２】
次のステップ１７２では、文字型項目を判別する。なお、本実施形態では、詰め文字の終端位置までを１つの文字列に設定する場合を説明する。次のステップ１７４では、或る一定割合を超える数のレコードについて、共通に文字型項目と判別できる位置を文字型項目に設定する。この場合の或る一定割合は、予め定めた閾値であり、例えば、８割以上の割合を示す値、好ましくは、９割以上の割合を示す値、最も好ましくは、全てのレコードに対応する１０割の割合を示す値を適用することができる。
【００７３】
次のステップ１７６では、ステップ１６６，１７０及び１７４による日付型項目の位置、数値型項目の位置、及び文字型項目の位置により、項目の区切りを決定する。
【００７４】
以上のようにして固定長データ１２における項目の区切り位置を推測する。
【００７５】
図１３〜図１５には、第２の推測方法により項目を推測する過程の一例を示した。図１３は日付型項目の推測過程を示し、図１４は数値型項目の推測過程を示し、図１５は文字型項目の推測過程を示した。図１３（Ａ）は、日付を示す文字型項目を含む全体長３０文字の固定長データを約数１０で分割した分割データ１２Ｆ−１，１２Ｆ−２，１２Ｆ−３を示している。また、図１３（Ｂ）は、１レコード長のデータのパターンとして、日付を示す文字型項目である日付型項目の文字の種類が設定された部分配列１２ｆを示している。
【００７６】
図１３（Ａ）に示すように、分割データ１２Ｆ−１では、６文字目から９文字目の文字列と、７文字目から１０文字目の文字列とが日付を示す文字型項目に対応する。また、分割データ１２Ｆ−２では、６文字目から９文字目の文字列と、７文字目から１０文字目の文字列とが日付を示す文字型項目に対応する。一方、分割データ１２Ｆ−３は、６文字目から９文字目の文字列のみが日付を示す文字型項目に対応する。分割データ１２Ｆ−１〜３の対応から、図１３（Ｂ）に示すように、１レコード長のデータのパターンとして、日付型項目の位置は、６文字目から９文字目の文字列の位置が対応されると推測でき、文字の種類が設定された部分配列１２ｆを推測できる。
【００７７】
次に、日付型項目以外の残存する文字について、数値型項目を推測する。図１４（Ａ）は、日付型項目以外の文字を含む分割データ１２Ｆ−１，１２Ｆ−２，１２Ｆ−３を示した。また、図１４（Ｂ）は、１レコード長のデータのパターンとして、日付型項目と数値型項目の文字の種類が設定された部分配列１２ｆを示した。
【００７８】
図１４（Ａ）に示すように、分割データ１２Ｆ−１〜１２Ｆ３では、１０文字目の文字が数値型項目に対応する。従って、図１４（Ｂ）に示すように、１レコード長のデータのパターンとして、数値型項目の位置は、１０文字目の文字位置が対応されると推測でき、文字の種類が設定された部分配列１２ｆを推測できる。
【００７９】
次に、日付型項目及び数値側項目以外の残存する文字について、文字型項目を推測する。一例として、図１５には文字型項目の推測過程を示した。図１５（Ａ）は、日付型項目及び数値側項目以外の文字を含む分割データ１２Ｆ−１，１２Ｆ−２，１２Ｆ−３を示した。また、図１５（Ｂ）は、１レコード長のデータのパターンとして、日付型項目、数値側項目、及び文字型項目の文字の種類が設定された部分配列１２ｆを示している。
【００８０】
図１５（Ａ）に示すように、分割データ１２Ｆ−１では、１文字目から３文字目の文字列と、４文字目から５文字目の文字列とが文字型項目に対応する。また、分割データ１２Ｆ−２では、１文字目から５文字目の文字列が文字型項目に対応する。そして、分割データ１２Ｆ−３は、１文字目から３文字目の文字列と、４文字目から５文字目の文字列とが文字型項目に対応する。分割データ１２Ｆ−１〜３の対応から、図１５（Ｂ）に示すように、文字の種類が設定された部分配列１２ｆを推測できる。すなわち、１レコード長のデータのパターンとして、文字型項目の位置は、１文字目から３文字目の文字列と、４文字目から５文字目の文字列との位置が対応されると推測でき、文字の種類が設定された部分配列１２ｆを推測できる。
【００８１】
従って、図１５（Ｂ）に示すように、項目の推測は、３文字の文字型項目、２文字の文字型項目、４文字の日付型項目、及び１文字の数値型項目が連続するデータであるという推測結果を得ることができる。このように、固定長データと、推測された１レコード長により、各レコードを判別できる。
【００８２】
次に図１６を参照し、データ解析システム１０のデータ分割装置１３によって実現される固定長データ１２の分割処理を説明する。
【００８３】
データ分割装置１３による分割処理では図１６に示す処理ルーチンが実行される。まず、データ分割装置１３の分割部２６は、ステップ１８０において、ユーザ等の指示により指定されたデータ解析対象の固定長データ１２、及びデータ解析装置１１で解析された区切りを示す情報を取得する。次のステップ１８２において分割部２６は、取得された固定長データ１２を、解析された区切りを示す情報を使用して項目毎に分割する。次のステップ１８４において分割部２６は、項目毎に分割したデータに対して、区切りを示す情報による項目に対応する文字の種類と文字数を対応づけた項目定義データを生成し、出力する。
【００８４】
なお、本実施形態では、データ分割装置１３が、固定長データ１２を項目毎に分割する態様を説明したが、開示の技術は固定長データ１２を項目毎に分割することに限定されるものではない。例えば、固定長データ１２に、データ解析装置１１で解析された区切りを示す情報を関連づけて、固定長データファイルとして出力するようにしてもよい。
【００８５】
また、上記ではデータ解析装置およびデータ分割装置をコンピュータにより実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
【００８６】
また、上記ではプログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるデータ解析プログラムまたはデータ分割プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【００８７】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【００８８】
以上の実施形態に関し、更に以下の付記を開示する。
【００８９】
（付記１）
前記解析部は、文字と数字との境界位置を、項目の区切り位置を示す項目区切情報とする請求項１に記載のデータ解析装置。
【００９０】
（付記２）
前記入力データに含まれる予め定めた閾値を超える文字数の文字を前記詰め文字とするときに、
前記解析部は、前記詰め文字の有無の境界位置を、項目の区切り位置を示す項目区切情報とする請求項１に記載のデータ解析装置。
【符号の説明】
【００９１】
１０    データ解析システム
１１    データ解析装置
１２    固定長データ
１３    データ分割装置
１４    解析部
１６    第１解析部
１８    項目解析部
２０    第２解析部
２２    第３解析部
２４    区切りを示す情報
２６    分割部
３０    コンピュータ
３２    ＣＰＵ
３４    メモリ
３６    記憶部
３８    解析プログラム
４０    第１解析プロセス
４２    第２解析プロセス
４４    第３解析プロセス
４６    分割プログラム
５０    分割プロセス
【図１】
0005838871.tif 000002
【図２】
0005838871.tif 000003
【図３】
0005838871.tif 000004
【図５】
0005838871.tif 000005
【図６】
0005838871.tif 000006
【図７】
0005838871.tif 000007
【図８】
0005838871.tif 000008
【図９】
0005838871.tif 000009
【図１０】
0005838871.tif 000010
【図１１】
0005838871.tif 000011
【図１２】
0005838871.tif 000012
【図１３】
0005838871.tif 000013
【図１４】
0005838871.tif 000014
【図１５】
0005838871.tif 000015
【図１６】
0005838871.tif 000016
【図４】
0005838871.tif 000017