(57)【特許請求の範囲】
【請求項１】
プログラムを記憶するメモリと、
前記メモリに記憶されたプログラムを基にデータを処理するプロセッサと、を備え、
前記プロセッサは、
自然言語の文章のデータと構造化されたテーブルに格納される文字列形式のデータのうち少なくとも一方のデータを処理対象となる入力データとして入力し、前記入力された入力データを構成する要素のうち集計対象となる文字であって、前記入力データの中で最初に並ぶ文字に相当する第一の文字と当該第一の文字に対して文字数が一つずつ増加しながら前記入力データの中で最後に並ぶ文字まで連なる１又は２以上の文字の組合せを複数の集計対象文字として集計し、当該集計結果を基に前記集計された各集計対象文字の出現頻度又は情報量を算出し、前記算出された出現頻度又は情報量を基に前記各集計対象文字のうち一方の集計対象文字の出現頻度又は情報量に対して前記文字数が一つ多い他方の集計対象文字の出現頻度又は情報量が半分以下であることを条件に、前記一方の集計対象文字を分離の対象となる集計対象文字として特定し、当該特定された前記集計対象文字を基に前記複数の集計対象文字を分離することを特徴とするデータ変換装置。
【請求項２】
メモリに記憶されたプログラムを基にデータを処理するプロセッサが、自然言語の文章のデータと構造化されたテーブルに格納される文字列形式のデータのうち少なくとも一方のデータを処理対象となる入力データとして入力する第一のステップと、
前記プロセッサが、前記第一のステップで入力された入力データを構成する要素のうち集計対象となる文字であって、前記入力データの中で最初に並ぶ文字に相当する第一の文字と当該第一の文字に対して文字数が一つずつ増加しながら前記入力データの中で最後に並ぶ文字まで連なる１又は２以上の文字の組合せを複数の集計対象文字として集計する第二のステップと、
前記プロセッサが、前記第二のステップでの集計結果を基に前記第二のステップで集計された各集計対象文字の出現頻度又は情報量を算出する第三のステップと、
前記プロセッサが、前記第三のステップで算出された出現頻度又は情報量を基に前記各集計対象文字のうち一方の集計対象文字の出現頻度又は情報量に対して前記文字数が一つ多い他方の集計対象文字の出現頻度又は情報量が半分以下であることを条件に、前記一方の集計対象文字を分離の対象となる集計対象文字として特定する第四のステップと、
前記プロセッサが、前記第四のステップで特定された前記集計対象文字を基に前記複数の集計対象文字を分離する第五のステップと、を有することを特徴とするデータ変換方法。
【請求項３】
プログラムを記憶するメモリと、
前記メモリに記憶されたプログラムを基にデータを処理するプロセッサと、を備えた計算機に対して、
自然言語の文章のデータと構造化されたテーブルに格納される文字列形式のデータのうち少なくとも一方のデータを処理対象となる入力データとして入力する第一のステップと、
前記第一のステップで入力された入力データを構成する要素のうち集計対象となる文字であって、前記入力データの中で最初に並ぶ文字に相当する第一の文字と当該第一の文字に対して文字数が一つずつ増加しながら前記入力データの中で最後に並ぶ文字まで連なる１又は２以上の文字の組合せを複数の集計対象文字として集計する第二のステップと、
前記第二のステップで集計された各集計対象文字の出現頻度又は情報量を算出する第三のステップと、
前記第三のステップで算出された出現頻度又は情報量を基に前記各集計対象文字のうち一方の集計対象文字の出現頻度又は情報量に対して前記文字数が一つ多い他方の集計対象文字の出現頻度又は情報量が半分以下であることを条件に、前記一方の集計対象文字を分離の対象となる集計対象文字として特定する第四のステップと、
前記第四のステップで特定された前記集計対象文字を基に前記複数の集計対象文字を分離する第五のステップと、を実行させることを特徴とするデータ変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自由記述文章のデータあるいはテーブル形式のデータに対して、データ中の各要素から得られる統計情報を元に、分析に必要なデータ加工を自動化するデータ変換装置とデータ変換方法に関する。
【背景技術】
【０００２】
近年、企業で蓄積されてきた業績に関するビッグデータを活用し、業績向上に繋がる要因を分析するシステムの開発が盛んに行われている。一般的に分析者は、様々な情報を含む大量のデータに対して、どのような条件が業績向上の要因となり得るか調べる。このとき分析者は、業績と関係する可能性のある項目を抽出するため、様々なデータ加工を行う。しかし、分析するデータのサイズが大きくなるにつれ、このようなデータの加工を分析者が人手で行うことは困難になってきた。そこで、大規模なデータを分析する際、データ加工を支援するシステムの開発が求められている。例えば、分析者が人手で行ってきた分析対象データの加工、その中でも特にＩＤ（Identification）や名前、アンケート結果などの自然言語データやラベルデータから、所属や入社年度など上位概念情報の分離・抽出を自動化するシステムの開発が求められている。このような技術を実現するために、特にテキスト形式の自然言語文章を対象として、テキスト内から抽出される文字列に対応する分岐状態の評価値として、例えば分岐数（パープレキシティ）を算出し、算出値に基づいて、文字列が単語であるか否かを決定するものが提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2008-165675号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術により、形態素解析用の辞書等の辞書に登録されていない単語の抽出が可能となる。しかし、特許文献１では、扱えるデータはテキスト文章データに限られており、適用するためには単語の分岐数に関する情報などを必要とする。【０００５】
本発明の目的は、自然言語の文章のデータと文字列形式のデータを対象として、対象となるデータを構成する要素を概念の相異なる複数の要素に分離することにある。
【課題を解決するための手段】
【０００６】
前記課題を解決するために、本発明は、プログラムを記憶するメモリと、前記メモリに記憶されたプログラムを基にデータを処理するプロセッサと、を備え、前記プロセッサは、自然言語の文章のデータと構造化されたテーブルに格納される文字列形式のデータのうち少なくとも一方のデータを処理対象となる入力データとして入力し、前記入力した入力データを構成する要素のうち集計対象となる第一の文字と当該第一の文字に連なる１又は２以上の文字の組合せを複数の集計対象文字として集計し、当該集計結果を基に前記集計された各集計対象文字の出現頻度又は情報量を算出し、前記算出された出現頻度又は情報量を基に前記各集計対象文字の出現頻度の変化点又は情報量の変化点を算出し、前記算出された出現頻度の変化点又は情報量の変化点を基に前記複数の集計対象文字を分離することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、自然言語の文章のデータと文字列形式のデータを対象として、対象となるデータを構成する要素を概念の相異なる複数の要素に分離することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第一の実施の形態のハードウェア構成を示す全体構成図である。
【図２】データ変換装置におけるデータ分離部に入力される入力データの具体例を示す入力テーブルの構成図である。
【図３】データ変換装置におけるデータ分離部の出力による出力データの具体例を示す出力テーブルの構成図である。
【図４】データ変換装置におけるデータ分離部の出力による出力データの具体例を示す他の出力テーブルの構成図である。
【図５】データ分離部の処理を説明するためのフローチャートである。
【図６】データ分離部におけるクラスタリングの処理を示すフローチャートである。
【図７】データ分離部における出現頻度を用いた頻出語抽出の処理を示すフローチャートである。
【図８】データ分離部における出現頻度の変化点抽出の処理を示すフローチャートである。
【図９】データ分離部における抽出語クラスタリングの処理を示すフローチャートである。
【図１０】データ分離部における命名の処理を示すフローチャートである。
【図１１】データ分離部に入力される入力テーブル中の一つのカラムに対して、正規表現抽出処理を実行する様子を示す説明図である。
【図１２】データ分離部に入力される入力テーブル中の一つのカラムに対して、出現頻度を用いた頻出語抽出処理を実行する様子を示す説明図である。
【発明を実施するための形態】
【実施の形態１】
【０００９】
以下、本発明の一実施の形態を、図面を参照して説明する。
本実施の形態は、自然言語テキストだけでなく、テーブルに格納されたデータも対象とし、ＩＤや名前のようなラベルデータに対して、文字間の独立性に注目し、対象とするデータから上位概念データを抽出するものである。
【００１０】
図１は、本発明の第一の実施の形態のハードウェア構成を示す全体構成図である。図１において、本実施の形態は、中央処理演算装置１、二次記憶装置２、主記憶装置３、入力装置４及び出力装置５を有し、中央処理演算装置１、二次記憶装置２、主記憶装置３、入力装置４及び出力装置５がバス６で接続された計算機であって、データ変換装置あるいはデータ変換システムとして構成される。
【００１１】
中央処理演算装置１は、二次記憶装置２や主記憶装置３などのメモリ（記憶デバイス）に格納されたプログラムを実行するプロセッサ（ＣＰＵ：Central Processing Unit）である。
【００１２】
二次記憶装置２は、例えば、磁気記憶装置、フラッシュメモリ等の大容量かつ不揮発性の記憶装置であり、プログラム実行時に中央処理演算装置1によって計算されるデータ分離部７を格納する。
【００１３】
主記憶装置３は、例えばＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶装置であり、オペレーティングシステム（ＯＳ）及びアプリケーションプログラムを格納する。中央処理演算装置１がオペレーティングシステムを実行することによって、計算機の基本機能が実現され、アプリケーションプログラムを実行することにより計算機が提供する機能が実現される。具体的には主記憶装置３は、入力データ８、出力データ９を格納する。入力データ８は、自然言語の文章のデータと構造化されたテーブルの各要素に格納される文字列形式のデータのうち少なくとも一方のデータで構成される。
【００１４】
入力装置４は、キーボード、マウスなどのユーザインターフェースである。出力装置５は、ディスプレイ装置、プリンタなどのユーザインターフェースである。
【００１５】
なお、本実施の形態は、本システム（データ変換システム）がネットワークに接続し、他の装置との通信を制御する通信インターフェースを有してもよい。この場合、本システムが通信インターフェースを介して端末と接続されており、該端末が入力装置４及び出力装置５を有し、端末からの要求に従ってテーブルを処理し、処理結果を端末に出力する。
【００１６】
また、本システムは物理的に一つの計算機上に構築されても、物理的には一つ又は複数の計算機上に構成された論理区画上に構築されてもよい。次に、データ分離部７に入力される入力データ８について詳細を説明する。
【００１７】
図２は、データ変換装置におけるデータ分離部に入力される入力データの具体例を示す入力テーブルの構成図である。図２において、入力テーブル１０１は、ある企業の倉庫に保管される在庫商品と、各商品の管理状況に関するデータを管理するテーブルである。この入力テーブル１０１は、例えば、複数のカラム（データ項目）によって構造化されたテーブルであって、各カラムには、文字列形式のデータが格納される。
【００１８】
具体的には、入力テーブル１０１は、カラム（データ項目）として、商品ＩＤ１０２、商品詳細名１０３、個数１０４、社員ＩＤ１０５、処理時刻１０６を備えている。商品ＩＤ１０２には、保管される商品の場所を一意に定めるデータ、例えば、「04A51010502」が格納され、商品詳細名１０３には、商品に関する詳細属性情報から成るデータ、例えば、「ほうき10本45cm」が格納され、個数１０４には、保管される商品の個数を表すデータ、例えば、「３」が格納され、社員ＩＤ１０５には、商品を保管した社員を特定するデータ、例えば、「850013004」が格納され、処理時刻１０６には、作業が実行された日時を表すデータ、例えば、「2016/01/07 09:12」が格納される。企業や組織では一般的に、入力テーブル１０１のような形でシステムの運用状況や在庫状況が管理されている。本実施の形態では、自然言語の文章のデータ、あるいは入力テーブル１０１のようなリレーショナルデータベース形式のあらゆるテーブルに属するデータを入力対象としている。入力テーブル１０１の各カラムのデータは、データ分離部７で１又は２以上のデータに分離され、出力データ９に変換される。
【００１９】
図３は、データ変換装置におけるデータ分離部の出力による出力データの具体例を示す出力テーブルの構成図である。図３において、出力テーブル２０１は、入力テーブル１０１の各カラムのデータを、データ分離部７が１又は２以上のデータに分離して得られた出力データ９で構成されるテーブルである。出力テーブル２０１は、例えば、複数のカラム（データ項目）によって構造化されたテーブルであって、各カラムには、文字列形式のデータが格納される。
【００２０】
具体的には、出力テーブル２０１は、入力テーブル１０１の各カラムが抽象化された上位概念カラムを含むカラムを持つテーブルであって、商品ＩＤ’２０２、商品ＩＤ’’２０３、商品ＩＤ’’’２０４、商品詳細名’２０５、商品詳細名’’２０６、商品詳細名’’’２０７、個数２０８、社員ＩＤ’２０９、社員ＩＤ’’２１０、社員ＩＤ’’’２１１、処理時刻’２１２、処理時刻’’２１３、処理時刻’’’２１４から構成される。
【００２１】
商品ＩＤ’２０２、商品ＩＤ’’２０３、商品ＩＤ’’’２０４は、入力テーブル１０１におけるカラムの商品ＩＤ１０２から抽出された上位概念カラムであり、商品ＩＤ’２０２、商品ＩＤ’’２０３、商品ＩＤ’’’２０４には、それぞれデータとして、例えば、「04」、「A51」、「010502」が格納される。商品詳細名’２０５、商品詳細名’’２０６、商品詳細名’’’２０７は、入力テーブル１０１におけるカラムの商品詳細名１０５から抽出された上位概念カラムであり、商品詳細名’２０５、商品詳細名’’２０６、商品詳細名’’’２０７には、それぞれデータとして、例えば、「ほうき」、「10本」、「45cm」が格納される。同様に、社員ＩＤ’２０９、社員ＩＤ’’２１０、社員ＩＤ’’’２１１は、入力テーブル１０１におけるカラムの社員ＩＤ１０５から抽出された上位概念カラムであり、社員ＩＤ’２０９、社員ＩＤ’’２１０、社員ＩＤ’’’２１１には、それぞれデータとして、例えば、「850」、「013」、「004」が格納される。処理時刻’２１２、処理時刻’’２１３、処理時刻’’’２１４は、入力テーブル１０１におけるカラムの処理時刻１０６から抽出された上位概念カラムであり、処理時刻’２１２、処理時刻’’２１３、処理時刻’’’２１４には、それぞれデータとして、例えば、「2016/01/07」、「09」、「12」が格納される。
【００２２】
なお、個数２０８は、上位概念が存在しないカラムであり、個数２０８には、入力テーブル１０１におけるカラムの個数１０４のデータがそのまま格納される。また、データ分離部７によって分離されたデータであって、抽象化された出力データ９のカラムを用いることで、分析者は大規模なデータに対して様々な分析を行うことができる。
【００２３】
図４は、データ変換装置におけるデータ分離部の出力による出力データの具体例を示す他の出力テーブルの構成図である。図４において、出力テーブル３０１は、出力テーブル２０１の各カラムに対して、ユーザからの入力により名前を付加した際のテーブルであり、階３０２、エリア名３０３、棚番号３０４、製品分類３０５、製品ごとの数３０６、サイズ３０７、個数３０８、所属部署ＩＤ３０９、入社年度３１０、五十音番号３１１、処理日３１２、処理時３１３、処理分３１４から構成される。
【００２４】
入力テーブル１０１における商品ＩＤ１０２に属するデータが３種類に分離された場合、分離された各データのカラム名として、出力テーブル３０１には、商品が格納される建物の階を表す階３０２、エリア名を表すエリア名３０３、棚の列番号を示す棚番号３０４が付加される。同様に、入力テーブル１０１における商品詳細名１０３に属するデータが３種類に分離された場合、分離された各データのカラム名として、出力テーブル３０１には、製品の分類を示す製品分類３０５、製品ごとの数を示す製品ごとの数３０６、製品のサイズを示すサイズ３０７が付加される。また、入力テーブル１０１における社員ＩＤ１０５に属するデータが３種類に分離された場合、分離された各データのカラム名として、出力テーブル３０１には、社員の所属部署を表す所属部署ＩＤ３０９、社員の入社年度を表す入社年度３１０、同期入社の社員の中での五十音順を示す五十音番号３１１が付加される。また、ＩＤのようなラベル的に振る舞うカラム以外にも、日時や時刻を表現するカラムに対しても適用される。入力テーブル１０１における処理時刻１０６に属するデータが３種類に分離された場合、分離された各データのカラム名として、出力テーブル３０１には、処理した日時を表す処理日３１２、処理した時刻を一時間単位で表す処理時３１３、処理した時間を分単位で表す処理分３１４が付加される。
【００２５】
なお、個数３０８のように、上位概念となるカラムが存在しない場合は、入力テーブル１０１におけるカラム名がそのまま用いられる。また、出力テーブル３０１の各カラムには、出力テーブル２０１と同一のデータが格納される。
【００２６】
図５は、データ分離部の処理を説明するためのフローチャートである。この処理では、入力対象となる入力テーブルの各カラムについて、各カラムの要素を相異なる概念の要素に分離することで、入力テーブルのカラムを、上位概念となるカラムに自動変換して出力することが実行される。
【００２７】
データ分離部７は、データ変換プログラムとして機能し、中央処理演算装置１の起動により、入力データ８に属する入力テーブル１０１から、入力テーブル１０１に属するデータを取り込み（Ｓ１１）、入力テーブル１０１に属するデータをカラムごとに順次選択し（Ｓ１２）、選択した各カラムのデータを、例えば、文字パターン、言葉の類似度を基に複数のグループに分割するクラスタリングの処理を実行する（Ｓ１３）。このクラスタリングの処理により、文字列を構成する文字の種類が、あらかじめ設定される閾値とは異なる場合には、カラムは、複数のカラムに分割される。
【００２８】
次に、データ分離部７は、分割された各カラムに属するデータに対して正規表現抽出の処理を実行し、分割された各カラムに属するデータの中から、対象文字列群を表現する正規表現を抽出し（Ｓ１４）、抽出した正規表現に対して、閾値以上の文字数が浮動文字であるか否かを判定する（Ｓ１５）。ステップＳ１５でＮｏと判定された場合、即ち、抽出された正規表現について、定めた閾値あるいは割合よりも浮動文字が少ない場合（浮動文字の文字数が閾値以上であって、文字列が正規表現で分離できた場合）、データ分離部７は、抽出された正規表現に対して、浮動文字列分離の処理を実行し、浮動文字部分のみを分離して抽出する（Ｓ１６）。一方、ステップＳ１５でＹｅｓと判定された場合、即ち、浮動文字の文字数が閾値未満であって、正規表現によって文字列を分離することができない場合、出現頻度を用いた頻出語抽出の処理を実行して、頻出語の塊を探索し、この探索で抽出された頻出語の単位で要素を分離する（Ｓ１７）。次に、データ分離部７は、抽出された頻出語をクラスタリングし、クラスタリングされた頻出語同士は、同一カラムに属するとしてカラムを生成する（Ｓ１８）。
【００２９】
次に、データ分離部７は、ステップＳ１６又はステップＳ１８の処理結果として、要素を分離した結果をユーザへ提示し、例えば、出力装置５に処理結果を表示し、ユーザからのフィードバックがあるか否かを判定し（Ｓ１９）、ユーザからのフィードバックがある場合、例えば、分離箇所の修正がある場合、ステップＳ１７の処理に戻り、出現頻度を用いた頻出語抽出の処理で、修正箇所を頻出語辞書に反映させる。一方、ユーザからのフィードバックがない場合、データ分離部７は、ステップＳ１６又はステップＳ１８の処理結果に対して、即ち、対象カラムから分離して新しく生成された複数のカラムに対して、カラム名を設定する命名の処理を実行する（Ｓ２０）。この後、データ分離部７は、入力テーブル１０１中の全てのカラムに対して処理をしたか否かを判定し（Ｓ２１）、全てのカラムに対する処理が完了していない場合、ステップＳ１２の処理に戻り、ステップＳ１２〜Ｓ２１の処理を繰り返し、全てのカラムに対する処理が完了した場合、各カラムを分離・抽象化した上位概念となるカラムを含んだ出力テーブルとして、例えば、出力テーブル３０１を生成して出力し（Ｓ２２）、このルーチンでの処理を終了する。
【００３０】
この際、データ分離部７は、分離された複数のカラム（頻出語）を文字列同士の類似関係を基に複数のグループに分け、各グループに類似する頻出語を割り当てて管理し、各グループに、入力データを構成する要素の名称よりも上位概念となる名称を付加することになる。なお、ステップＳ２０の処理（命名の処理）を省略した場合、出力テーブルとして、出力テーブル２０１が生成される。
【００３１】
図６は、データ分離部におけるクラスタリングの処理を示すフローチャートである。この処理は、図５のステップＳ１３の具体的内容である。
【００３２】
図６において、データ分離部７は、入力テーブル１０１に属するカラムを順次選択し（Ｓ３１）、選択した各カラムのデータを、例えば、文字パターン、言葉の類似度を基に複数のグループに分類するためのクラスタリングの処理を実行し（Ｓ３２）、この処理結果を基に、各カラムを複数のグループに分割して、グループ毎に新しいカラムを生成し（Ｓ３３）、生成されたカラムを、分割された各カラムとして出力し（Ｓ３４）、このルーチンでの処理を終了する。
【００３３】
図７は、データ分離部における出現頻度を用いた頻出語抽出の処理を示すフローチャートである。この処理は、図５のステップＳ１７の具体的内容である。
【００３４】
図７において、データ分離部７は、図６のステップＳ３４の処理結果として、分割された各カラムに属するデータを入力し（Ｓ４１）、入力した各カラムのデータに対して、あらゆる文字列の出現頻度を計算し（Ｓ４２）、計算された文字列の出現頻度に基づき、出現頻度の変化点を抽出する処理を実行する（Ｓ４３）。次に、データ分離部７は、抽出された出現頻度の変化点（情報量）を元に、頻出語を抽出する（Ｓ４４）。この際、データ分離部７は、平均分離数保持部（図示せず）に保持された平均分離数を基本の分離数、例えば、「3」を参照し（Ｓ４５）、参照した平均分離数を利用して、頻出語を抽出することができる。平均分離数を利用することで、頻出語の抽出精度を高めることができる。なお、各カラムに属するデータ（要素）の抽出が終了した場合には、平均分離数の値は更新される。
【００３５】
次に、データ分離部７は、抽出した頻出語のデータを辞書、例えば頻出語辞書（図示せず）に登録し（Ｓ４６）、登録した頻出語が、辞書に登録済みの文字と競合するか否かを判定する（Ｓ４７）。データ分離部７は、ステップＳ４７で否定の判定結果を得た場合、ステップＳ４９の処理に移行し、ステップＳ４７で肯定の判定結果を得た場合、即ち、辞書に登録済みの文字と競合する文字列が分離された場合、変化点の変曲度合い計算し、予め定義されている文字列の出現頻度の変化の度合いが大きい方を採用して辞書を更新するロールバック処理を実行する（Ｓ４８）。この後、データ分離部７は、全要素の全文字列を走査したか否かを判定し（Ｓ４９）、全要素の全文字列を走査していない場合、ステップＳ４２の処理に戻り、ステップＳ４２〜Ｓ４９の処理を繰り返し、全要素の全文字列を走査した場合、新しく、要素が分離されたカラムが追加されたテーブルとして、分離した要素情報が追加されたテーブルを生成し（Ｓ５０）、このルーチンでの処理を終了する。なお、辞書（頻出語辞書）や平均分離数保持部は、例えば、二次記憶装置２に格納される。
【００３６】
図８は、データ分離部における出現頻度の変化点抽出の処理を示すフローチャートである。この処理は、図７のステップＳ４３の具体的内容である。
【００３７】
図８において、データ分離部７は、図６のステップＳ３４の処理結果として、分割された各カラムに属するデータを入力し（Ｓ６１）、入力した各カラムのデータに対して、あらゆる文字列の出現頻度の変化点を計算して記録する（Ｓ６２）。このとき計算される変化点とは、出現頻度の推移の微分値であったり、２回微分値であったり、差など変化を捉える量である。次に、データ分離部７は、計算された出現頻度の変化量を元に、例えば、出現頻度の変化が変局している地点を分離点として分離するか否かを判定する（Ｓ６３）。言い換えると、出現頻度の変化量が正から負、もしくは負から正に変化している地点で分離する。この後、データ分離部７は、分離結果として、分離文字列（分離された文字列）を出力し（Ｓ６４）、また、分離結果から、いくつの文字列に分離されたかを判定し、判定結果を基に、平均分離数の値を更新し（Ｓ６５）、このルーチンでの処理を終了する。
【００３８】
図９は、データ分離部における抽出語クラスタリングの処理を示すフローチャートである。この処理は、図５のステップＳ１８の具体的内容である。
【００３９】
図９において、データ分離部７は、図７のステップＳ５０の処理結果として、分離した要素情報が追加されたテーブルを参照し（Ｓ７１）、参照したテーブルの各対象カラムの各要素（データ）の中から、各要素に格納される、分離された要素数の中で最大数を抽出する（Ｓ７２）。次に、データ分離部7は、抽出した最大分離要素数に基づき、対象カラムの要素の中に、最大数に満たないものが存在する場合、即ち、最大数よりも少ない要素で構成されるカラムが存在する場合、各カラムの要素の数を揃えるために、空のカラムを生成する（Ｓ７３）。
【００４０】
次に、データ分離部７は、対象カラムの各要素に対して、定義された類似度によるクラスタリングを行い、各空のカラムに属する文字列のうちで最も類似度の高いカラムへ各要素を格納する（Ｓ７４）。例えば、「ほうき、ほうき、4本」を含むカラムと、「10本、23本、25cm」を含むカラムと、「45cm、60cm、ほうき」を含むカラムが存在する場合、「ほうき、ほうき、ほうき」を含むカラムと、「10本、23本、4本」を含むカラムと、「45cm、60cm、25cm」を含むカラムに変更する。
【００４１】
次に、データ分離部７は、参照したテーブルの全てのカラム、全ての要素に対して分類したか否かを判定し（Ｓ７５）、ステップＳ７５で否定の判定結果を得た場合、ステップＳ７４に戻り、ステップＳ７４〜Ｓ７５の処理を繰り返し、ステップＳ７５で肯定の判定結果を得た場合、分離されたカラムの集合が追加されたテーブルを生成して出力し（Ｓ７６）、このルーチンでの処理を終了する。
【００４２】
図１０は、データ分離部における命名の処理を示すフローチャートである。この処理は、図５のステップＳ２０の具体的内容である。
【００４３】
図１０において、データ分離部７は、図９のステップＳ７６の処理結果として、分離されたカラムの集合が追加されたテーブルのデータを入力し（Ｓ８１）、且つユーザから入力されたカラム名のデータを入力し（Ｓ８２）、入力したテーブルのデータを参照して、テーブルの各カラムを選択し（Ｓ８３）、選択した各カラムに名前を付加する（Ｓ８４）。この際、分離された各カラムがそれぞれ選択され、ユーザから入力されたカラム名の情報を用いて、各カラムに名前が付加される。例えば、「商品ＩＤ’」に対して、「階」が付加され、「商品ＩＤ’’」に対して、「エリア名」が付加され、「商品ＩＤ’’’」に対して、「棚番号」が付加される。ユーザから入力されたカラム名の付加は任意であり、カラム名が入力されなかった場合は、分離元カラムの名前に識別記号を付加した名前を付ける。例えば、「担当社員ＩＤ」カラムから２つのカラムが生成された場合、「担当社員ＩＤ’」、「担当社員ＩＤ’’」といった名前が自動的に付加される。
【００４４】
次に、データ分離部７は、全てのカラムについて処理したか否かを判定し（Ｓ８５）、ステップＳ８５で否定の判定結果を得た場合、ステップＳ８３の処理に戻り、ステップＳ８３〜Ｓ８５の処理を繰り返し、ステップＳ８５で肯定の判定結果を得た場合、分離したカラムを出力し（Ｓ８６）、このルーチンでの処理を終了する。これにより、出力テーブル２０１から出力テーブル３０１を生成することができる。
【００４５】
図１１は、データ分離部に入力される入力テーブル中の一つのカラムに対して、正規表現抽出処理を実行する様子を示す説明図である。
【００４６】
図１１において、データ分離部７は、図５のステップＳ１４で正規表現抽出処理を実行するに際して、入力テーブルのデータとして、例えば、入力テーブル１００１のデータを入力する。入力テーブル１００１は、商品ＩＤ１００２と商品詳細１００３をカラムに持つ入力テーブルであり、商品ＩＤ１００２には、データとして、例えば、「1000」、・・・、「1100」が格納され、商品詳細１００３には、データとして、例えば、「ほうき（中）10本45cm」、・・・、「くぎ（大）3本15cm」が格納される。この際、データ分離部７は、入力テーブル１００１のデータを参照し、各カラムに属するデータに対して、例えば、各レコード（行）で共通の要素とそれ以外の要素に分類し、正規表現１００４を生成して出力する。
【００４７】
正規表現１００４における「*」はワイルドカードを示す記号であり、いくつかの記号が連なっていることを表現している。正規表現１００４により、始めに幾つかの記号が入り、「(」を挟み、幾つか記号が入って「)」を挟み、幾つか記号が入って「本」、幾つか記号が入って「cm」という形式で対象カラム中の要素が、各レコードで共通の要素（「本」、「cm」）とそれ以外の要素（「*」）で表現できることが分かる。この情報を用いて商品詳細１００３中の要素を分離すると、入力テーブル１００１は、商品ＩＤ１００６、商品名１００７、規格１００８、個数(本)１００９、長さ(cm)１０１０というカラムを有する出力テーブル１００５に変換される。正規表現１００４のワイルドカード部分（「*」）が浮動文字列で、「(」や「本」などが固定文字列であり、浮動文字列が、それぞれ新しいカラムとして分離される。入力テーブル１００１の商品詳細１００３は、商品ＩＤ１００６、商品名１００７、規格１００８、個数(本)１００９、長さ(cm)１０１０というカラムに分離される。カラムの名前はユーザによって与える必要がある。
【００４８】
図１２は、データ分離部に入力される入力テーブル中の一つのカラムに対して、出現頻度を用いた頻出語抽出処理を実行する様子を示す説明図である。
【００４９】
図１２において、データ分離部７は、図５のステップＳ１７で出現頻度を用いた頻出語抽出の処理を実行するに際して、テーブルのデータとして、例えば、テーブル１１０１のデータを入力する。テーブル１１０１は、商品ＩＤ１１０２と商品詳細１１０３をカラムに持つテーブルであり、商品ＩＤ１１０２には、データとして、例えば、「1000」〜「1100」が格納され、商品詳細１１０３には、データとして、例えば、「ほうき10本45cm」〜「パイプ3本15cm」が格納される。この後、データ分離部７は、テーブル１１０１の商品詳細１１０３に属するデータであって、各レコード（行）に属する要素（データ）に対して、頻出単語を抽出し、抽出した頻出単語を辞書へ登録して分離の基準とし、カラム中の要素を分離して出力する。この際、データ分離部７は、入力した入力データを構成する要素のうち集計対象となる第一の文字と第一の文字に連なる１又は２以上の文字の組合せを複数の集計対象文字として集計し、集計結果の各集計対象文字をテーブル１１０４に記録する。例えば、商品詳細１１０３に属する要素のうち、例えば、「ほうき10本45cm」を、「ほ」、「ほう」、「ほうき」、「ほうき１」、「ほうき10」、・・・、「ほうき10本45cm」に分けて集計し、これらの文字を集計対象文字として、テーブル１１０４の集計対象文字１１０５の各レコード（行）に記録する。
【００５０】
次に、データ分離部７は、テーブル１１０４の集計対象文字１１０５の各レコード（行）に記録された要素（集計対象文字）に対して、集計結果を基に集計対象文字ごとに、全体（同一カラムであって、商品詳細１１０３に属するカラム）に対する頻度、例えば、出現頻度又は生起頻度を順次計算し、各計算結果を、テーブル１１０４の頻度１１０６の各レコードに記録する。例えば、「ほ」から順に、同一カラム内での生起頻度を計算する。同様に２文字目まで含めた「ほう」や、３文字目まで含めた「ほうき」についても、同一カラム内での生起頻度を計算する。計算結果が、それぞれ「5/100」、「4/100」、「3/100」である場合、これらの計算結果が、テーブル１１０４の頻度１１０６の各レコードに記録される。
【００５１】
次に、データ分離部７は、計算された生起頻度について、横軸に対象文字の文字数ｘ、縦軸に頻度Ｈ（ｘ）をとったグラフを生成し、生成してグラフ上に、集計対象文字の文字数に対応した頻度（生起頻度）の計算結果をプロットして、グラフ上に曲線ｙを生成する。曲線ｙにおける頻度は、集計対象文字１１０５の文字数ｘが増加するに従って、徐々に減少するが、ある地点で大きく減少する様子が観測できる。ある地点を変化点（変曲点）y1として、頻度の変化量の変化を捉えることで、文字列の独立性を評価することができ、変化点y1を基準に文字列を分離できる。
【００５２】
例えば、「ほうき10本45cm」の場合、「ほうき」までで生起頻度が3/100であり、「ほうき１」では、生起頻度が1/100となっているため、集計対象文字１１０５のうち第一の文字「ほ」から変化点y1までの文字列である「ほうき」を、文字列の塊とみなし、「ほうき10本45cm」から、「ほうき」を、一つの文字列として分離することができる。同様に、「ほうき10本45cm」のうち、「１」を集計対象文字の第一の文字として、第一の文字と第一の文字に連なる１又は２以上の文字の組合せに属する複数の集計対象文字に対して、集計結果を基に集計対象文字ごとに、全体に対する出現頻度（生起頻度）を順次計算し、各計算結果を、テーブル１１０４の頻度１１０６の各レコードに記録し、計算された出現頻度（生起頻度）について、変化点（変曲点）y1を求めることで、「ほうき10本45cm」から、「10本」を、一つの文字列として分離することができる。
【００５３】
出現頻度の代わりに、データの持つ情報の大きさを表現する情報量を用いることもできる。この情報量Ｈ（Ｘ）は、対象カラムについて、各集計対象文字１１０５の持つ情報量として、次の数１に従って計算することができる。この計算結果は、テーブル１１０４の情報量１１０７の各レコードに記録される。
【数１】
0006763967.tif 000002
ここで、ｐ(ｘ)は、頻度を示す。
【００５４】
出現頻度の代わりに、情報量を用いた場合にも、テーブル１１０４に示すように、「ほ」から「ほうき」まで、情報量１１０７が「0.33」〜「0.15」であり、「ほうき１」では、情報量１１０７が「0.07」となっているため、集計対象文字１１０５のうち第一の文字「ほ」から変化点y1までの文字列である「ほうき」を、文字列の塊とみなし、「ほうき10本45cm」から、「ほうき」を、一つの文字列として分離することができる。
【００５５】
本実施の形態によれば、自然言語の文章のデータと文字列形式のデータを対象として、対象となるデータを構成する要素を概念の相異なる複数の要素に分離することができる。また、入力した分析対象テーブル（入力テーブル１０１）の各カラムから、上位概念関係にあるカラムを自動抽出することができ、結果として、抽出されたカラムを分析に使用することで、分析速度の向上及び汎用性の向上を図ることができる。
【００５６】
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００５７】
１  中央処理演算装置、２  二次記憶装置、３  主記憶装置、４  入力装置、５  出力装置、６  バス、７  データ分離部、８  入力データ、９  出力データ
【図１】
0006763967.tif 000003
【図２】
0006763967.tif 000004
【図３】
0006763967.tif 000005
【図４】
0006763967.tif 000006
【図５】
0006763967.tif 000007
【図６】
0006763967.tif 000008
【図７】
0006763967.tif 000009
【図８】
0006763967.tif 000010
【図９】
0006763967.tif 000011
【図１０】
0006763967.tif 000012
【図１１】
0006763967.tif 000013
【図１２】
0006763967.tif 000014