以下に、本願の開示するデータ抽出プログラム、サーバ装置およびデータ抽出方法の実施例を図面に基づいて詳細に説明する。なお、以下では、本願の開示するサーバ装置をCEPシステムに適用する場合を説明する。また、CEPシステムを株式売買の予測に用いる場合を説明する。しかしながら、本願の開示するサーバ装置はこれに限定されるものではない。
[実施例1に係るCEPシステムの構成]
図1は、実施例1に係るサーバ装置を含むCEPシステムの全体構成を示す図である。図1に示すように、CEPシステム9は、サーバ装置1と通知先サーバ装置2とを有する。サーバ装置1は、複合イベント処理を行う物理サーバであり、例えば、データセンサや各企業に設けられたサーバコンピュータである。サーバ装置1には、様々な対象から収集されたデータが配信される。サーバ装置1は、予め設定されたルールに従って、様々な対象から受信した複数種類のデータをフィルタリング(抽出)する。そして、サーバ装置1は、抽出に失敗した場合に、予め設定されたルールの一部の条件を変更することで自動生成した複数のルール((以降、「派生ルール」という)に従って、様々な対象から受信した複数種類のデータをフィルタリング(抽出)する。そして、サーバ装置1は、抽出に成功した派生ルールの存在を、通知先サーバ装置2へ通知する。
サーバ装置1は、通信制御I/F部11,12と、記憶部13と、制御部14とを有する。通信制御I/F部11,12は、ネットワークとの間の通信を制御するインタフェースである。通信制御I/F部11は、様々な対象から配信されたデータを受信する。例えば、通信制御I/F部11は、株価を含む情報を提供するサービスを行う業者のサーバから株価情報を受信する。通信制御I/F部11は、為替を含む情報を提供するサービスを行う業者のサーバから為替情報を受信する。通信制御I/F部11は、ガソリン価格を含む情報を提供するサービスを行う業者のサーバからガソリン価格情報を受信する。通信制御I/F部12は、ルールに合致した場合、合致したルールに対応した内容を通知先サーバ2へ送信する。
記憶部13は、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な半導体メモリであっても良い。
記憶部13は、各種情報を記憶する。例えば、記憶部13は、制御部14で実行されるOS(Operating System)や後述する抽出処理、最適化処理など各種処理を行うプログラムを記憶する。さらに、記憶部13は、制御部14で実行されるプログラムの実行に要する各種データを記憶する。例えば、記憶部13は、ルールテーブル131と、最適化条件テーブル132とを記憶する。
ルールテーブル131は、フィルタリングのルールを格納したテーブルである。一例として、ルールテーブル131には、株式売買の予測を行うため、複数の条件からなるルールがユーザによって格納される。なお、ルールテーブル131のデータ構成については、後述する。
最適化条件テーブル132は、ルールテーブル131に格納されたルールに含まれる条件を最適化するために用いられる。なお、最適化条件テーブル132のデータ構成については、後述する。
制御部14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部14は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。または、制御部14は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。さらに、制御部14は、生成部141と、抽出部142と、通知部143と、最適化部144とを有する。
生成部141は、予め設定されたルールの一部の条件を変更する派生ルールを生成する。例えば、生成部141は、予め設定されたルールについて構文解析を行い、ルールに含まれる複数の条件を分解する。そして、生成部141は、分解した複数の条件のうちいずれか1つの条件を否定する派生ルールを生成する。そして、生成部141は、生成した派生ルールをルールテーブル131に格納する。このとき、生成部141は、生成した派生ルールとともに、派生ルールに合致した場合にユーザに通知する通知内容をルールテーブル131に格納する。
一例として、予め設定されたルールが「条件A and 条件B and 条件C」であるとする。生成部141は、予め設定されたルールを「条件A」、「条件B」、「条件C」に分解する。そして、生成部141は、条件Aについて、条件Aを否定する派生ルール「(not 条件A) and 条件B and 条件C」を生成する。そして、生成部141は、派生ルールとともに、ユーザに通知する通知内容として、まだ満たされていない残りの条件「条件A」をルールテーブル131に格納する。また、生成部141は、条件Bについて、条件Bを否定する派生ルール「条件A and (not 条件B) and 条件C」を生成する。そして、生成部141は、派生ルールとともに、ユーザに通知する通知内容としてまだ満たされていない残りの条件「条件B」をルールテーブル131に格納する。また、生成部141は、条件Cについて、条件Cを否定する派生ルール「条件A and 条件B and (not 条件C)」を生成する。そして、生成部141は、派生ルールとともに、ユーザに通知する通知内容としてまだ満たされていない残りの条件「条件C」をルールテーブル131に格納する。
ここで、ルールテーブル131のデータ構造について、図2を参照して説明する。図2は、ルールテーブルのデータ構造の一例を示す図である。図2に示すように、ルールテーブル131は、ルールNo131a、銘柄131b、株価131c、為替終値131d、ガソリン価格131eおよび通知内容131fを対応付けて記憶する。ルールNo131aは、ルールを一意に識別する識別番号である。銘柄131bは、ルールを適用する銘柄を示す。株価131cは、株価に関わる条件である。為替終値131dは、為替終値に関わる条件である。ガソリン価格131eは、ガソリン価格に関わる条件である。通知内容131fは、全ての条件に合致した場合にユーザに通知される内容である。
一例として、ルールNo131aが「1」である場合、銘柄131bとして「a社」、株価131cとして「3000円以上」、為替終値131dとして「1ドル80円以上」、ガソリン価格131eとして「1リットル150円以下」と記憶している。そして、通知内容131fとして、買うタイミングであることを示す「買い」と記憶している。別の例として、ルールNo131aが「2」である場合、銘柄131bとして「a社」、株価131cとして「3000円以上でない」、為替終値131dとして「1ドル80円以上」、ガソリン価格131eとして「1リットル150円以下」と記憶している。そして、通知内容131fとして、まだ満たされていない残りの条件「株価が3000円以上」と記憶している。
図1に戻って、抽出部142は、ルールテーブル131に記憶された各ルールに従って、様々な対象から受信した複数種類のデータをフィルタリング(抽出)する。様々な対象とは、ここでは、株式売買に関係する対象を意味し、一例として、株価であったり、為替であったり、ガソリン価格であったりする。例えば、抽出部142は、ルールテーブル131に記憶されたルール毎に、ルールに含まれる複数の条件に基づき、受信した複数種類のデータをフィルタリングして全ての条件に合致するパターン検出を行う。そして、抽出部142は、全ての条件に合致したそれぞれのデータを抽出する。
通知部143は、予め設定されたルールでデータの抽出に失敗した場合に、複数の派生ルールのうち、データの抽出に成功する派生ルールが存在すれば、該派生ルールの存在を通知先サーバ装置2へ通知する。例えば、通知部143は、予め設定されたルールに含まれる条件の中でまだ満たされていない残りの条件を通知する。また、通知部143は、予め設定されたルールに関係するデータの現在値を通知する。これにより、通知部143は、残りの条件を否定する条件を含む派生ルールの存在を通知することができる。
最適化部144は、派生ルールに含まれる条件を最適化する。例えば、最適化部144は、受信されたデータが最適化条件テーブル132に記憶された最適化条件に合致する場合、最適化条件に対応する変更方向で条件値を変更する。ここで、最適化条件テーブル132のデータ構造について、図3を参照して説明する。図3は、最適化条件テーブルのデータ構造の一例を示す図である。図3に示すように、最適化条件テーブル132は、最適化条件を記憶する。一例として、最適化条件テーブル132には、最適化条として「本日の為替終値が前日の為替終値より安い」が記憶されている。この場合、最適化部144は、一例として、株価に係る条件の上限値を本日の株価終値に更新する。これにより、最適化部144は、変化する環境に応じて、動的に条件を更新することができる。
[CEPシステムの具体的な処理の一例]
図4は、実施例1に係るCEPシステムの具体的な処理の一例を示す図である。図4に示すように、サーバ装置1には、株価、為替、ガソリン価格を含む情報を提供するサービスを行う業者のサーバから株価情報41、為替情報42およびガソリン価格情報43がそれぞれ適宜配信される。図4の例では、株価情報41、為替情報42およびガソリン価格43情報は、XML(Extensible Markup Language)形式のデータ構造とされている。図4の例の株価情報41は、株価が2900[円]であることを示す。図4の例の為替情報42は、100[円]であることを示す。図4の例のガソリン価格情報43は、160[円]であることを示す。
サーバ装置1は、CEPエンジン30が動作する。CEPエンジン30は、制御部14に含まれ、複合イベント処理を実現するソフトウェアである。複合イベント処理を実現するソフトウェアとしては、例えば、Esperが挙げられる。
ここで、サーバ装置1には、予め利用者が設定したルールとして、「a社の株価が3000円以下(条件A)、かつ、為替が1ドル80円以上(条件B)、かつ、ガソリン価格が1リットル150円以下(条件C)」が設定されている。このルールに合致した場合のアクションとして、「a社買い」をレコメンドすることが設定されている。さらに、予め利用者が設定したルールから生成された派生ルールとして、「a社の株価が3000円以下(条件A)、かつ、為替が1ドル80円以上(条件B)、かつ、ガソリン価格が1リットル150円以下でない(not 条件C)」が設定されている。
このようなサーバ装置1は、配信された株価情報41、為替情報42およびガソリン価格情報43を受信する。CEPエンジン30は、設定されたルールの複数の条件に基づき、受信した株価情報41、為替情報42およびガソリン価格情報43をフィルタリングして全ての条件に合致するパターン検出を行う。そして、CEPエンジン30は、合致した場合、合致したルールに対応付けられた内容を通知先サーバ装置2へレコメンドする。
図4の例では、サーバ装置1は、予め利用者が設定したルールの場合、条件A、条件Bに合致するが、条件Cに合致しない。一方、サーバ装置1は、派生ルールの場合、条件A、条件B、(not 条件C)の全ての条件に合致する。そこで、サーバ装置1は、例えば、「ガソリン価格が150円以下になれば、買い条件が揃います。現在の株価は2900円、為替は100円、ガソリン価格は160円です。」を通知先サーバ装置2にレコメンドする。
これにより、サーバ装置1は、「ガソリン価格が150円以上」という条件を含む派生ルールの存在を顕在化することができる。この結果、通知先サーバ装置2では、レコメンドに応じて、現ルールの残りの条件を把握することができる。すなわち、通知先サーバ装置2では、利用者が、ガソリン価格の条件を満たしていないことを把握するとともに、現ルールの見直しを図ることができ、ひいては、株式売買の機会の損失を防止できる。
[データ抽出処理の手順]
次に、図5を参照して、データ抽出処理の手順を説明する。図5は、実施例1に係るデータ抽出処理の手順を示すフローチャートである。なお、予め設定されたルールが、ルールテーブル131に格納されている。予め設定されたルールは、一例として「条件A and 条件B and 条件C」であるとする。また、最適化条件が最適化条件テーブル132に格納されている。最適化条件は、一例として「本日の終値が前日の終値より安い」であるとする。
まず、生成部141は、予め設定されたルールを構文解析により自動分解し、派生ルールを生成する(ステップS11)。例えば、生成部141は、予め設定されたルールに含まれる複数の条件を分解する。そして、生成部141は、分解した複数の条件のうちいずれか1つの条件を否定する派生ルールを生成する。一例として、生成部141は、「(条件A以外) and 条件B and 条件C」を派生ルールとして生成する。
その後、抽出部142は、通信制御I/F部11を介してデータを受信する(ステップS12)。そして、抽出部142は、予め設定されたルールの全ての条件が成立したか否かを判定する(ステップS13)。予め設定されたルールの全ての条件が成立したと判定した場合(ステップS13;Yes)、通知部143は、当該ルールに対応付けられたレコメンド(通知内容)を通知先サーバ2に送信する(ステップS14)。一例として、通知部143は、「条件A and 条件B and 条件Cで条件が揃いました」というレコメンドを送信する。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、予め設定されたルールの全ての条件が成立しなかったと判定した場合(ステップS13;No)、抽出部142は、ルールのうち、条件成立まであと1つか否かを判定する(ステップS15)。例えば、抽出部142は、生成部141によって生成された派生ルールの全ての条件が成立したか否かを判定する。
条件成立まであと1つと判定した場合(ステップS15;Yes)、通知部143は、派生ルールに対応付けられたレコメンド(通知内容)を通知先サーバ装置2に送信する(ステップS16)。一例として、通知部143は、「あと条件Cが真になれば、条件が揃います」というレコメンドを送信する。そして、データ抽出処理は、ステップS17に遷移する。
一方、条件成立まであと1つでないと判定した場合(ステップS15;No)、抽出部142は、ステップS17に移行する。
ステップS17では、最適化部144は、最適化条件が成立したか否かを判定する(ステップS17)。例えば、最適化部144は、受信されたデータが最適化条件テーブル132に記憶された最適化条件に合致するか否かを判定する。最適化条件が成立しなかったと判定した場合(ステップS17;No)、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、最適化条件が成立したと判定した場合(ステップS17;Yes)、最適化部144は、派生ルールを最適化条件で最適化する(ステップS18)。一例として、最適化部144は、本日の終値が(A´)が前日の終値より安いとすると、最適化条件が成立したと判定する。そして、最適化部144は、派生ルールを最適化条件の条件値A´で最適化する。すなわち、派生ルールは、「(条件A以上 and 条件A´以下) and 条件B and 条件C」に最適化される。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
[実施例1の効果]
上記実施例1によれば、サーバ装置1は、予め設定されたルールに従ってデータ抽出を行うとともに、予め設定されたルールの一部の条件を変更することで自動生成した複数の派生ルールに従ってデータ抽出を行う。そして、サーバ装置1は、予め設定されたルールでデータ抽出に失敗する場合に、複数の派生ルールのうち、データ抽出に成功する派生ルールが存在すれば、該派生ルールの存在の通知を行う。かかる構成によれば、サーバ装置1は、予め設定されたルールでデータ抽出に失敗した場合であっても、設定されたルールから自動的に生成した派生ルールの存在を健在化することが可能となり、予め設定されたルールの見直しに利用することができる。
ところで、実施例1では、サーバ装置1は、設定されたルールの一部の条件を変更する派生ルールを自動生成し、設定されたルールでデータ抽出に失敗しても、データ抽出に成功する派生ルールが存在すれば、該派生ルールの存在を通知する場合を説明した。しかしながら、サーバ装置1は、これに限定されず、さらに、派生ルールを有効にするか否かの成功条件を予め設定し、設定された成功条件に適合する派生ルールが存在する場合に、当該ルールを有効なルールとして追加するようにしても良い。
そこで、実施例2では、サーバ装置1は、さらに、派生ルールを有効にするか否かの成功条件を予め設定し、設定された成功条件に適合する派生ルールが存在する場合に、当該ルールを有効なルールとして追加する場合について説明する。ここでいう有効なルールとは、例えば、株式売買のタイミングであることを示すレコメンドがされることになる正規なルールをいう。
[実施例2に係るCEPシステムの構成]
図6は、実施例2に係るサーバ装置を含むCEPシステムの全体構成を示す図である。なお、図1に示すCEPシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、制御部14に第1の追加部145を追加した点にある。実施例1と実施例2とが異なるところは、生成部141、最適化部144をそれぞれ生成部141A、最適化部144Aに変更した点にある。また、実施例1と実施例2とが異なるところは、記憶部13にルール内部テーブル133を追加した点にある。
生成部141Aは、予め設定されたルールの一部の条件を変更する派生ルールを生成する。例えば、生成部141Aは、予め設定されたルールについて構文解析を行い、ルールに含まれる複数の条件を分解する。そして、生成部141Aは、分解した複数の条件のうちいずれか1つの条件を否定する派生ルールを生成する。そして、生成部141Aは、生成した派生ルールをルールテーブル131に格納する。このとき、生成部141Aは、生成した派生ルールとともに、派生ルールに合致した場合にユーザに通知する通知内容をルールテーブル131に格納する。
また、生成部141Aは、生成した派生ルールをルール内部テーブル133に格納する。
ルール内部テーブル133は、予め設定されたルールの一部の条件を変更することで自動生成された派生ルールを格納したテーブルである。ルール内部テーブル133は、さらに、派生ルールをルールとして有効にするか否かの成功条件を予め格納する。ここで、ルール内部テーブル133のデータ構造について、図7を参照して説明する。図7は、ルール内部テーブルのデータ構造の一例を示す図である。
図7に示すように、ルール内部テーブル133は、ルールNo133a、銘柄133b、株価133c、為替終値133d、ガソリン価格133e、成功条件133fおよび成功回数133gを対応付けて記憶する。ルールNo133aは、ルールを一意に識別する識別番号である。銘柄133bは、ルールを適用する銘柄を示す。株価133cは、株価に関わる条件である。為替終値133dは、為替終値に関わる条件である。ガソリン価格133eは、ガソリン価格に関わる条件である。成功条件133fは、ルールNo133aが示すルールをルールとして有効にするか否かの成功条件である。成功回数133gは、成功条件を含む条件が成功した回数である。後述する第1の追加部145が、成功回数133gが示す回数が予め定められた閾値(以降、「成功回数閾値」という)以上となった場合に、ルールNo133aが示すルールをルールとして有効にする。なお、成功条件133fおよび成功回数133gは、例えば、予め利用者によって設定される。ルールNo133a、銘柄133b、株価133c、為替終値133dおよびガソリン価格133eは、生成部141Aによって格納される。
一例として、ルールNo133aが「1」である場合、銘柄133bとして「a社」、株価133cとして「3000円以上、かつ、3100円以下」、為替終値133dとして「1ドル80円以上」と記憶している。そして、ガソリン価格133eとして「1リットル150円以下」、成功条件133fとして「株価終値−株価始値≧500」、成功回数133gとして「0」と記憶している。
図6に戻って、第1の追加部145は、複数の派生ルールのうち、予め設定された成功条件を満たす派生ルールが存在する場合に、当該派生ルールを正規のルールに追加する。例えば、第1の追加部145は、ルール内部テーブル133に記憶された派生ルール毎に、派生ルールに含まれる複数の条件に基づき、受信した複数種類のデータをフィルタリング(抽出)する。第1の追加部145は、全ての条件に合致したそれぞれのデータを抽出する。また、第1の追加部145は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。第1の追加部145は、成功条件133fを満たすと判定した場合に、成功回数133gに1を加算する。そして、第1の追加部145は、成功回数133gが成功回数閾値以上か否かを判定し、成功回数133gが成功回数閾値以上である場合に、該当する派生ルールをルールテーブル131に追加する。すなわち、第1の追加部145は、成功条件の成功回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとして追加する。このとき、第1の追加部145は、ルールテーブル131の通知内容131fに、成功条件に対応するレコメンドの内容を設定する。一例として、成功条件に対応するレコメンドの内容は、株式売買の「買い」のタイミングを示す内容となる。
最適化部144Aは、派生ルールを最適化する。
一例として、最適化部144Aは、受信されたデータが最適化条件テーブル132に記憶された最適化条件に合致する場合、最適化条件に対応する変更方向で、ルールテーブル131の条件を更新する。また、最適化部144Aは、受信されたデータが最適化条件テーブル132に記憶された最適化条件に合致する場合、最適化条件に対応する変更方向で、ルール内部テーブル133の条件を更新する。
別の例として、最適化部144Aは、第1の追加部145によって派生ルールが正規のルールに追加された場合に、受信されたデータが最適化条件テーブル132に記憶された最適化条件に合致すれば、以下の処理を行う。すなわち、最適化部144Aは、追加された派生ルールについて、最適化条件に対応する変更方向で条件を変更する。そして、最適化部144Aは、追加された派生ルールから、変更した条件を含む新たな派生ルールを生成する。そして、最適化部144Aは、生成した派生ルールをルール内部テーブル133に追加する。
[CEPシステムの具体的な処理の一例]
図8は、実施例2に係るCEPシステムの具体的な処理の一例を示す図である。図8に示すように、サーバ装置1には、株価、為替、ガソリン価格を含む情報を提供するサービスを行う業者のサーバから株価情報41、為替情報42およびガソリン価格情報43がそれぞれ適宜配信される。図8の例では、株価情報41、為替情報42およびガソリン価格43情報は、XML(Extensible Markup Language)形式のデータ構造とされている。図8の例の株価情報41は、株価が2900[円]であることを示す。図8の例の為替情報42は、100[円]であることを示す。図8の例のガソリン価格情報43は、160[円]であることを示す。
サーバ装置1は、CEPエンジン30が動作する。CEPエンジン30は、制御部14に含まれ、複合イベント処理を実現するソフトウェアである。複合イベント処理を実現するソフトウェアとしては、例えば、Esperが挙げられる。
サーバ装置1には、予め利用者が設定したルールとして、「a社の株価が3000円以下、かつ、為替終値が1ドル80円以上、かつ、ガソリン価格が1リットル150円以下」が設定されているとする。そして、予め利用者が設定したルールから生成された派生ルールが、ルール内部テーブル133に格納されている。例えば、ルールNo133aが「1」の派生ルールとして、「(a社の株価が3000円以上、かつ、3100円以下)、かつ、(為替終値が1ドル80円以上)、かつ、(ガソリン価格が1リットル150円以下)」が設定されている。ルールNo133aが「2」の派生ルールとして、「(a社の株価が3000円以下)、かつ、(為替終値が1ドル70円以上、かつ、80円以下)、かつ、(ガソリン価格が1リットル150円以下)」が設定されている。ルールNo133aが「3」の派生ルールとして、「(a社の株価が3000円以下)、かつ、(為替終値が1ドル80円以上)、かつ、(ガソリン価格が1リットル150円以上、かつ、160円以下)」が設定されている。そして、それぞれの派生ルールには、成功条件133fとして「株価終値−株価始値≧500」が設定されている。
ここで、最適化条件テーブル132に、最適化条件として「本日の為替終値が前日の為替終値より安い」が設定されているとする。また、受信されたデータが最適化条件テーブル132に設定された最適化条件に合致する場合であるとする。すると、CEPエンジン30は、最適化条件に対応する変更方向で条件値を更新する。図8の例では、ルールNo133aが「1」の派生ルールの株価が「3000円以上、かつ、3100円以下」に更新されている。
そして、CEPエンジン30は、ルール内部テーブル133に記憶された派生ルール毎に、派生ルールに含まれる複数の条件でデータをフィルタリング(抽出)する。CEPエンジン30は、全ての条件に合致したそれぞれのデータを抽出する。そして、CEPエンジン30は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。CEPエンジン30は、成功条件133fを満たすと判定した場合に、成功回数133gに1を加算する。そして、CEPエンジン30は、成功回数133gが成功回数閾値以上か否かを判定し、成功回数133gが成功回数閾値以上である場合に、該当する派生ルールをルールテーブル131に追加する。
図8の例では、成功回数閾値が100であるとする。すると、CEPエンジン30は、ルールNo133aが「3」の派生ルールの成功回数が100回に達したので、当該派生ルールをルールテーブル131に追加する。CEPエンジン30は、ルールNo133aが「3」の派生ルールを有効なルールとしてルールテーブル131に追加する。このとき、CEPエンジン30は、ルールテーブル131の通知内容に、成功条件に対応するレコメンド、例えば「買い」を設定する。
そして、CEPエンジン30は、受信する株価情報41、為替情報42およびガソリン価格情報43がルールテーブル131に設定されたルールの複数の条件に全て合致した場合、合致したルールに対応付けられた内容を通知先サーバ装置2へレコメンドする。例えば、CEPエンジン30は、ルールNo133aが「3」のルールの複数の条件に全て合致した場合、「a社の買い条件が揃いました。現在の株価は2900円、為替は100円、ガソリン価格は160円です。」を通信先サーバ装置2にレコメンドする。
これにより、サーバ装置1は、成功条件に合致する派生ルールを有効なルールとしてルールテーブル131に自動追加することができ、その後、ルールの複数の条件に全て合致すれば、ルールの存在を健在化することができる。この結果、通知先サーバ装置2では、利用者が、株式売買の機会の損失を防止できる。また、利用者は、現ルールの見直しを図ることができる。
[CEPシステムの具体的な処理の別の例]
図9は、実施例2に係るCEPシステムの具体的な処理の別の例を示す図である。図9に示すように、サーバ装置1には、図8と同様に、株価情報41、為替情報42およびガソリン価格情報43がそれぞれ適宜配信される。
サーバ装置1には、予め利用者が設定したルールから生成された派生ルールが、ルール内部テーブル133に格納されている。図8に示すルール内部テーブル133の派生ルールのうち、ルールNo133aが「1」、「2」の派生ルールが設定されている。そして、それぞれの派生ルールには、成功条件133fとして「株価終値−株価始値≧500」が設定されている。また、最適化条件テーブル132に、最適化条件として「本日の為替終値が前日の為替終値より安い」が設定されているとする。
このような環境の下、CEPエンジン30は、ルール内部テーブル133に記憶された派生ルール毎に、派生ルールに含まれる複数の条件でデータをフィルタリング(抽出)する。CEPエンジン30は、全ての条件に合致したそれぞれのデータを抽出する。そして、CEPエンジン30は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。CEPエンジン30は、成功条件133fを満たすと判定した場合に、成功回数133gに1を加算する。そして、CEPエンジン30は、成功回数133gが成功回数閾値以上か否かを判定し、成功回数133gが成功回数閾値以上である場合に、該当する派生ルールをルールテーブル131に追加する。
図9の例では、成功回数閾値が50であるとする。すると、CEPエンジン30は、ルールNo133aが「2」の派生ルールの成功回数が50回に達したので、当該派生ルールをルールテーブル131に追加する。CEPエンジン30は、ルールNo133aが「2」の派生ルールを有効なルールとしてルールテーブル131に追加する。
さらに、CEPエンジン30は、受信されたデータが最適化条件テーブル132に設定された最適化条件に合致すれば、追加された派生ルールについて、最適化条件に対応する変更方向で条件を変更する。そして、CEPエンジン30は、追加された派生ルールから、変更した条件を含む新たな派生ルールを生成し、ルール内部テーブル133に追加する。
図9の例では、CEPエンジン30は、受信されたデータが最適化条件テーブル132に設定された最適化条件「本日の為替終値が前日の為替終値より安い」に合致する場合であるとする。すると、CEPエンジン30は、例えば、追加されたルールNo133aが「2」の派生ルールの為替終値133dの条件を、「1ドル70円以上、かつ、80円以下」から「1ドル75円以上、かつ、80円以下」に変更する。そして、CEPエンジン30は、追加されたルールNo133aが「2」の派生ルールから、変更した為替終値の条件を含む新たな派生ルールを生成し、ルール内部テーブル133に追加する。すなわち、ルールNo133aが「2.5」の派生ルールが新たに追加される。
これにより、サーバ装置1は、最適化条件に合致する場合、派生ルールを最適化条件に対応する変更方向で条件を変更する新たな派生ルールを生成するので、変化する環境に応じて、動的に派生ルールを追加することができる。
[データ抽出処理の手順]
次に、図10Aおよび図10Bを参照して、データ抽出処理の手順を説明する。図10Aおよび図10Bは、実施例2に係るデータ抽出処理の手順を示すフローチャートである。なお、S11からS18までは、実施例1に係るデータ抽出処理と同一の処理であるので、その処理の説明を簡略する。
まず、生成部141は、予め設定されたルールを構文解析により自動分解し、派生ルールを生成する(ステップS11)。その後、抽出部142は、通信制御I/F部11を介してデータを受信する(ステップS12)。そして、抽出部142は、予め設定されたルールの全ての条件が成立したか否かを判定する(ステップS13)。
予め設定されたルールの全ての条件が成立したと判定した場合(ステップS13;Yes)、通知部143は、当該ルールに対応付けられたレコメンド(通知内容)を通知先サーバ2に送信する(ステップS14)。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、予め設定されたルールの全ての条件が成立しなかったと判定した場合(ステップS13;No)、抽出部142は、ルールのうち、条件成立まであと1つか否かを判定する(ステップS15)。例えば、抽出部142は、生成部141によって生成された派生ルールの全ての条件が成立したか否かを判定する。
条件成立まであと1つと判定した場合(ステップS15;Yes)、通知部143は、派生ルールに対応付けられたレコメンド(通知内容)を通知先サーバ装置2に送信する(ステップS16)。一方、条件成立まであと1つでないと判定した場合(ステップS15;No)、抽出部142は、ステップS17に移行する。
ステップS17では、最適化部144は、最適化条件が成立したか否かを判定する(ステップS17)。最適化条件が成立しなかったと判定した場合(ステップS17;No)、データ抽出処理は、ステップS21に遷移する。一方、最適化条件が成立したと判定した場合(ステップS17;Yes)、最適化部144は、派生ルールを最適化条件で最適化する(ステップS18)。
続いて、第1の追加部145は、派生ルールの成功条件133fを満たすか否かを判定する(ステップS21)。例えば、第1の追加部145は、ルール内部テーブル133に記憶された派生ルールのうち、全ての条件に合致した派生ルールについて、成功条件133fを満たす否かを判定する。
全ての条件に合致した派生ルールについて、成功条件133fを満たさないと判定した場合(ステップS21;No)、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。一方、全ての条件に合致した派生ルールについて、成功条件133fを満たすと判定した場合(ステップS21;Yes)、第1の追加部145は、成功回数133gに1を加算する(ステップS22)。
そして、第1の追加部145は、成功回数133gが成功回数閾値以上であるか否かを判定する(ステップS23)。成功回数133gが成功回数閾値以上でないと判定した場合(ステップS23;No)、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、成功回数133gが成功回数閾値以上であると判定した場合(ステップS23;Yes)、第1の追加部145は、成功回数閾値に達した派生ルールを、ルールテーブル131に追加する(ステップS24)。すなわち、第1の追加部145は、成功条件の成功回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとしてルールテーブル131に追加する。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
[実施例2の効果]
上記実施例2によれば、サーバ装置1は、予め設定されたルールに従ってデータ抽出を行うとともに、予め設定されたルールの一部の条件を変更することで自動生成した複数の派生ルールに従ってデータ抽出を行う。そして、サーバ装置1は、複数の派生ルールのうち、予め設定された成功条件に適合する派生ルールが存在する場合に、当該派生ルールを正規のルールとしてルールテーブル131に追加する。かかる構成によれば、サーバ装置1は、変化する環境に応じて、予め設定された成功条件に適合する派生ルールを、動的にルールテーブル131に追加することができる。
また、上記実施例2によれば、サーバ装置1は、複数の派生ルールのうち、成功条件に適合する派生ルールが存在する場合に、当該派生ルールの存在の通知を行う。かかる構成によれば、サーバ装置1は、成功条件に適合する派生ルールの存在を健在化することができる。この結果、通知先では、株式売買の機会の損失を防止できるとともに、現ルールの見直しを図ることができる。
ところで、実施例1では、サーバ装置1は、設定されたルールの一部の条件を変更する派生ルールを自動生成し、設定されたルールでデータ抽出に失敗しても、データ抽出に成功する派生ルールが存在すれば、該派生ルールの存在を通知する場合を説明した。実施例2では、サーバ装置1は、さらに、複数の派生ルールのうち、予め設定された成功条件に適合する派生ルールが存在する場合に、当該派生ルールを正規のルールとしてルールテーブル131に追加する場合を説明した。しかしながら、サーバ装置1は、これに限定されず、さらに、成功条件を否定する条件に適合する派生ルールが存在する場合に、当該ルールを有効なルールとして追加するようにしても良い。
そこで、実施例3では、サーバ装置1は、さらに、成功条件を否定する条件に適合する派生ルールが存在する場合に、当該ルールを有効なルールとして追加する場合について説明する。ここでいう有効なルールとは、例えば、株式売買のタイミングであることを示すレコメンドがされることになる正規なルールをいう。
[実施例3に係るCEPシステムの構成]
図11は、実施例3に係るサーバ装置を含むCEPシステムの全体構成を示す図である。なお、図1および図6に示すCEPシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1,2と実施例3とが異なるところは、制御部14に第2の追加部146を追加した点にある。実施例1,2と実施例3とが異なるところは、ルール内部テーブル133をルール内部テーブル133Bに変更した点にある。
図7に示すルール内部テーブル133と図12に示すルール内部テーブル133Bと同一のデータ構造については同一符号を示すことで、その重複する構造の説明については省略する。図7に示すルール内部テーブル133と図12に示すルール内部テーブル133Bとが異なるところは、マイナス回数133hを追加した点にある。マイナス回数133hは、成功条件の結果がマイナスになった回数である。すなわち、マイナス回数133hは、成功条件を否定する条件が成功した回数である。後述する第2の追加部146が、マイナス回数133hが示す回数が予め定められた閾値(以降、「マイナス回数閾値」という)以上となった場合に、ルールNo133aが示すルールをルールとして有効にする。なお、マイナス回数133hは、例えば、予め利用者によって設定される。
一例として、ルールNo133aが「1」である場合、銘柄133bとして「a社」、株価133cとして「3000円以上、かつ、3100円以下」、為替終値133dとして「1ドル80円以上」と記憶している。そして、ガソリン価格133eとして「1リットル150円以下」、成功条件133fとして「株価終値−株価始値≧500」、成功回数133gとして「0」、マイナス回数133hとして「100」と記憶している。
図11に戻って、第2の追加部146は、複数の派生ルールのうち、予め設定された成功条件を否定する条件を満たす派生ルールが存在する場合に、当該派生ルールを正規のルールに追加する。例えば、第2の追加部146は、ルール内部テーブル133Bに記憶された派生ルール毎に、派生ルールに含まれる複数の条件に基づき、受信した複数種類のデータをフィルタリング(抽出)する。第2の追加部146は、全ての条件に合致したそれぞれのデータを抽出する。また、第2の追加部146は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。ここで、第2の追加部146は、成功条件133fを満たさないと判定した場合に、マイナス回数133hに1を加算する。すなわち、第2の追加部146は、成功条件133fの結果がマイナスになったと判断し、マイナス回数133hに1を加算する。そして、第2の追加部146は、マイナス回数133hがマイナス回数閾値以上か否かを判定し、マイナス回数133hがマイナス回数閾値以上である場合に、該当する派生ルールをルールテーブル131に追加する。すなわち、第2の追加部146は、成功条件を否定する条件のマイナス回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとして追加する。このとき、第2の追加部146は、ルールテーブル131の通知内容131fに、成功条件を否定する条件に対応するレコメンドの内容を設定する。一例として、成功条件に対応するレコメンドの内容が、「買い」のタイミングを示す内容である場合、成功条件を否定する条件に対応するレコメンドの内容は、「売り」のタイミングを示す内容となる。
[CEPシステムの具体的な処理の一例]
図13は、実施例3に係るCEPシステムの具体的な処理の一例を示す図である。図13に示すように、サーバ装置1には、株価、為替、ガソリン価格を含む情報を提供するサービスを行う業者のサーバから株価情報41、為替情報42およびガソリン価格情報43がそれぞれ適宜配信される。図13の例では、株価情報41、為替情報42およびガソリン価格43情報は、XML(Extensible Markup Language)形式のデータ構造とされている。図13の例の株価情報41は、株価が2900[円]であることを示す。図13の例の為替情報42は、100[円]であることを示す。図13の例のガソリン価格情報43は、160[円]であることを示す。
サーバ装置1は、CEPエンジン30が動作する。CEPエンジン30は、制御部14に含まれ、複合イベント処理を実現するソフトウェアである。複合イベント処理を実現するソフトウェアとしては、例えば、Esperが挙げられる。
サーバ装置1には、予め利用者が設定したルールとして、「a社の株価が3000円以下、かつ、為替終値が1ドル80円以上、かつ、ガソリン価格が1リットル150円以下」が設定されているとする。そして、予め利用者が設定したルールから生成された派生ルールが、ルール内部テーブル133に格納されている。例えば、ルールNo133aが「1」の派生ルールとして、「(a社の株価が3000円以上、かつ、3100円以下)、かつ、(為替終値が1ドル80円以上)、かつ、(ガソリン価格が1リットル150円以下)」が設定されている。そして、派生ルールには、成功条件133fとして「株価終値−株価始値≧500」が設定されている。
そして、CEPエンジン30は、ルール内部テーブル133Bに記憶された派生ルール毎に、派生ルールに含まれる複数の条件でデータをフィルタリング(抽出)する。CEPエンジン30は、全ての条件に合致したそれぞれのデータを抽出する。そして、CEPエンジン30は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。CEPエンジン30は、成功条件133fを満たさないと判定した場合に、マイナス回数133hに1を加算する。そして、CEPエンジン30は、マイナス回数133hがマイナス回数閾値以上か否かを判定し、マイナス回数133hがマイナス回数閾値以上である場合に、該当する派生ルールをルールテーブル131に追加する。
図13の例では、マイナス回数閾値が100であるとする。すると、CEPエンジン30は、ルールNo133aが「1」の派生ルールのマイナス回数が100回に達したので、当該派生ルールをルールテーブル131に追加する。CEPエンジン30は、ルールNo133aが「1」の派生ルールを有効なルールとしてルールテーブル131に追加する。このとき、CEPエンジン30は、ルールテーブル131の通知内容に、成功条件を否定する条件に対応するレコメンド、例えば「売り」を設定する。
そして、CEPエンジン30は、受信する株価情報41、為替情報42およびガソリン価格情報43がルールテーブル131に設定されたルールの複数の条件に全て合致した場合、合致したルールに対応付けられた内容を通知先サーバ装置2へレコメンドする。例えば、CEPエンジン30は、ルールNo133aが「1」のルールの複数の条件に全て合致した場合、「a社の売り条件が揃いました。現在の株価は2900円、為替は100円、ガソリン価格は160円です。」を通信先サーバ装置2にレコメンドする。
これにより、サーバ装置1は、成功条件133fを否定する条件に合致する派生ルールを有効なルールとしてルールテーブル131に自動追加することができ、その後、ルールの複数の条件に全て合致すれば、ルールの存在を健在化することができる。この結果、通知先サーバ装置2では、利用者が、株式売買の機会の損失を防止できる。また、利用者は、現ルールの見直しを図ることができる。
[データ抽出処理の手順]
次に、図14Aおよび図14Bを参照して、データ抽出処理の手順を説明する。図14Aおよび図14Bは、実施例3に係るデータ抽出処理の手順を示すフローチャートである。なお、S11からS18までは、実施例1に係るデータ抽出処理と同一の処理であるので、その処理の説明を簡略する。
まず、生成部141は、予め設定されたルールを構文解析により自動分解し、派生ルールを生成する(ステップS11)。その後、抽出部142は、通信制御I/F部11を介してデータを受信する(ステップS12)。そして、抽出部142は、予め設定されたルールの全ての条件が成立したか否かを判定する(ステップS13)。
予め設定されたルールの全ての条件が成立したと判定した場合(ステップS13;Yes)、通知部143は、当該ルールに対応付けられたレコメンド(通知内容)を通知先サーバ2に送信する(ステップS14)。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、予め設定されたルールの全ての条件が成立しなかったと判定した場合(ステップS13;No)、抽出部142は、ルールのうち、条件成立まであと1つか否かを判定する(ステップS15)。例えば、抽出部142は、生成部141によって生成された派生ルールの全ての条件が成立したか否かを判定する。
条件成立まであと1つと判定した場合(ステップS15;Yes)、通知部143は、派生ルールに対応付けられたレコメンド(通知内容)を通知先サーバ装置2に送信する(ステップS16)。一方、条件成立まであと1つでないと判定した場合(ステップS15;No)、抽出部142は、ステップS17に移行する。
ステップS17では、最適化部144は、最適化条件が成立したか否かを判定する(ステップS17)。最適化条件が成立しなかったと判定した場合(ステップS17;No)、データ抽出処理は、ステップS21に遷移する。一方、最適化条件が成立したと判定した場合(ステップS17;Yes)、最適化部144は、派生ルールを最適化条件で最適化する(ステップS18)。
続いて、第1の追加部145は、派生ルールの成功条件133fを満たすか否かを判定する(ステップS21)。例えば、第1の追加部145は、ルール内部テーブル133Bに記憶された派生ルールのうち、全ての条件に合致した派生ルールについて、成功条件133fを満たすか否かを判定する。
全ての条件に合致した派生ルールについて、成功条件133fを満たすと判定した場合(ステップS21;Yes)、第1の追加部145は、成功回数133gに1を加算する(ステップS22)。そして、第1の追加部145は、成功回数133gが成功回数閾値以上であるか否かを判定する(ステップS23)。成功回数133gが成功回数閾値以上でないと判定した場合(ステップS23;No)、第1の追加部145は、ステップS26に遷移する。
一方、成功回数133gが成功回数閾値以上であると判定した場合(ステップS23;Yes)、第1の追加部145は、成功回数閾値に達した派生ルールを、ルールテーブル131に追加する(ステップS24)。すなわち、第1の追加部145は、成功条件の成功回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとしてルールテーブル131に追加する。そして、第1の追加部145は、ステップS26に遷移する。
ステップS21では、全ての条件に合致した派生ルールについて、成功条件133fを満たさないと判定した場合(ステップS21;No)、第2の追加部146は、マイナス回数133hに1を加算する(ステップS25)。そして、第2の追加部146は、ステップS26に遷移する。
ステップS26では、第2の追加部146は、マイナス回数133hがマイナス回数閾値以上であるか否かを判定する(ステップS26)。マイナス回数133hがマイナス回数閾値以上でないと判定した場合(ステップS26;No)、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、マイナス回数133hがマイナス回数閾値以上であると判定した場合(ステップS26;Yes)、第2の追加部146は、マイナス回数閾値に達した派生ルールを、ルールテーブル131に追加する(ステップS27)。すなわち、第2の追加部146は、
成功条件の結果がマイナスになった回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとしてルールテーブル131に追加する。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
[実施例3の効果]
上記実施例3によれば、サーバ装置1は、複数の派生ルールのうち、予め設定された成功条件を否定する条件を満たす回数が閾値を超えた場合に、当該派生ルールを正規のルールとしてルールテーブル131に追加する。かかる構成によれば、サーバ装置1は、変化する環境に応じて、予め設定された成功条件を否定する条件を満たす派生ルールを動的にルールテーブル131に追加することができる。
ところで、実施例1では、サーバ装置1は、設定されたルールの一部の条件を変更する派生ルールを自動生成し、設定されたルールでデータ抽出に失敗しても、データ抽出に成功する派生ルールが存在すれば、該派生ルールの存在を通知する場合を説明した。実施例2では、サーバ装置1は、さらに、複数の派生ルールのうち、予め設定された成功条件に適合する派生ルールが存在する場合に、当該派生ルールを正規のルールとしてルールテーブル131に追加する場合を説明した。実施例3では、サーバ装置1は、さらに、複数の派生ルールのうち、予め設定された成功条件を否定する条件に適合する派生ルールが存在する場合に、当該派生ルールを正規のルールとしてルールテーブル131に追加する場合を説明した。しかしながら、サーバ装置1は、これに限定されず、さらに、派生ルールからルールを派生させて、派生させたルールを用いて運用環境の方向性を検出するようにしても良い。
そこで、実施例4では、サーバ装置1は、さらに、派生ルールからルールを派生させて、派生させたルールを用いて運用環境の方向性を検出する場合について説明する。ここでいう運用環境の方向性とは、例えば、CEPシステムを株式売買の予測に用いる場合、株価の方向性であったり、為替の方向性であったりする。
[実施例4に係るCEPシステムの構成]
図15は、実施例4に係るサーバ装置を含むCEPシステムの全体構成を示す図である。なお、図1、図6および図11に示すCEPシステム9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1,2,3と実施例4とが異なるところは、制御部14に検出部147を追加した点にある。また、実施例1,2,3と実施例4とが異なるところは、記憶部13に条件設定テーブル134を追加した点にある。
条件設定テーブル134は、派生ルール内の条件を設定するために用いられるテーブルである。ここで、条件設定テーブル134のデータ構造について、図16を参照して説明する。図16は、条件設定テーブルのデータ構造の一例を示す図である。図16に示すように、条件設定テーブル134は、変更条件134aおよび設定幅134bを対応付けて記憶する。変更条件134aは、ルールの中で変更される条件の識別子である。設定幅134bは、変更条件134aの条件値を変更させる設定幅を示す。変更条件134aおよび設定幅134bは、利用者によって予め設定される。一例として、変更条件134aが「株価」である場合、設定幅134bとして「50」と記憶している。
図15に戻って、検出部147は、設定されたルールの一部の条件を変更することで自動生成した派生ルールが一部の条件の特定の条件値を変化させる派生ルールである場合、当該派生ルールの変更条件に沿った変更方向で、当該派生ルールから派生する派生ルールを生成する。例えば、検出部147は、ルール内部テーブル133Bから一部の条件の特定の条件値を変化させる派生ルールを抽出する。一例として、ルール内部テーブル133Bは、フラグが設定される列項目を有し、検出部147は、フラグがONである派生ルールを特定の条件値を変化させる派生ルールとして抽出するようにすれば良い。そして、検出部147は、抽出した派生ルールに含まれる条件のうち、条件設定テーブル134の変更条件134aが示す条件について、現在設定されている条件値から設定幅分増加させた新たな条件値を算出する。そして、検出部147は、抽出した派生ルールから、変更条件について、算出した条件値を上限値とする新たな派生ルールを生成する。また、検出部147は、変更条件134aが示す条件について、現在設定されている条件値から設定幅分減少させた新たな条件値を算出する。そして、検出部147は、抽出した派生ルールから、変更条件について、算出した条件値を下限値とする新たな派生ルールを生成する。
また、検出部147は、生成した新たな派生ルールをルール内部テーブル133Bに追加する。なお、検出部147による派生ルールの生成および追加は、例えば、システムの運用前に実行される。
また、検出部147は、生成した新たな派生ルールのうち、成功条件を満たす派生ルールが存在する場合に、当該派生ルールを含むルール内部テーブル133Bの内容を通知先サーバ装置2に通知する。例えば、検出部147は、ルール内部テーブル133Bに記憶された新たな派生ルール毎に、派生ルールに含まれる複数の条件に基づき、受信した複数種類のデータをフィルタリング(抽出)する。検出部147は、全ての条件に合致したそれぞれのデータを抽出する。また、検出部147は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。検出部147は、成功条件133fを満たすと判定した場合に、成功回数133gに1を加算する。そして、検出部147は、成功回数133gが成功回数閾値以上か否かを判定し、成功回数133gが成功回数閾値以上である場合に、該当する派生ルールを含むルール内部テーブル133Bの内容を通知先サーバ装置2に通知する。すなわち、検出部147は、成功条件の成功回数が予め設定された閾値に達した時点で、ルール内部テーブル133Bの内容を通知先サーバ装置2に通知する。
[CEPシステムの具体的な処理の一例]
図17は、実施例4に係るCEPシステムの具体的な処理の一例を示す図である。図14に示すように、サーバ装置1には、株価、為替、ガソリン価格を含む情報を提供するサービスを行う業者のサーバから株価情報41、為替情報42およびガソリン価格情報43がそれぞれ適宜配信される。図17の例では、株価情報41、為替情報42およびガソリン価格43情報は、XML(Extensible Markup Language)形式のデータ構造とされている。図17の例の株価情報41は、株価が2900[円]であることを示す。図17の例の為替情報42は、100[円]であることを示す。図17の例のガソリン価格情報43は、160[円]であることを示す。
サーバ装置1は、CEPエンジン30が動作する。CEPエンジン30は、制御部14に含まれ、複合イベント処理を実現するソフトウェアである。複合イベント処理を実現するソフトウェアとしては、例えば、Esperが挙げられる。
サーバ装置1には、予め利用者が設定したルールとして、「a社の株価が3000円以下、かつ、為替終値が1ドル80円以上、かつ、ガソリン価格が1リットル150円以下」が設定されているとする。そして、予め利用者が設定したルールから生成された派生ルールが、ルール内部テーブル133Bに格納されている。例えば、ルールNo133aが「1」の派生ルールとして、「(a社の株価が3000円以上、かつ、3100円以下)、かつ、(為替終値が1ドル80円以上)、かつ、(ガソリン価格が1リットル150円以下)」が設定されている。この派生ルールが、一部の条件の特定の条件値を変化させる派生ルールであるとする。そして、この派生ルールには、成功条件133fとして「株価終値−株価始値≧500」が設定されている。また、条件設定テーブル134に、変更条件134aが「株価」である場合に、設定幅134bとして「50」円が格納されている。
そして、CEPエンジン30は、システムの運用前に、一部の条件の特定の条件値を変化させるルールNo133aが「1」の派生ルールについて、当該派生ルールの変更条件に沿った変更方向で、当該派生ルールから派生する派生ルールを生成する。図17の例では、CEPエンジン30は、ルールNo133aが「1」の派生ルールに含まれる条件のうち、条件設定テーブル134の変更条件134aが示す「株価」の条件値について、新たな条件値を算出する。
一例として、CEPエンジン30は、「株価」の条件値「3000」円から設定幅134b「50」円分増加させた新たな条件値「3050」円を算出する。そして、CEPエンジン30は、「株価」について、算出した条件値「3050」円を上限値とする新たな派生ルールを生成する。すなわち、「株価」の条件が「(3000円以上、かつ、3050円以下)」である、ルールNo133aが「1.1」の新たな派生ルールが生成される。
別の例として、CEPエンジン30は、「株価」の条件の条件値「3000」円から設定幅134b「50」円分減少させた新たな条件値「2950」円を算出する。そして、CEPエンジン30は、「株価」について、算出した条件値「2950」円を下限値とする新たな派生ルールを生成する。すなわち、「株価」の条件が「(2950円以上、かつ、3000円以下)」である、ルールNo133aが「1.2」の新たな派生ルールが生成される。
そして、CEPエンジン30は、新たな派生ルールをルール内部テーブル133Bに追加する。図17には、ルールNo133aが「1.1」および「1.2」の新たな派生ルールが追加されている。
そして、CEPエンジン30は、ルール内部テーブル133Bに記憶された新たな派生ルール毎に、派生ルールに含まれる複数の条件でデータをフィルタリング(抽出)する。CEPエンジン30は、全ての条件に合致したそれぞれのデータを抽出する。そして、CEPエンジン30は、全ての条件に合致した派生ルールの成功条件133fを満たすか否かを判定する。CEPエンジン30は、成功条件133fを満たすと判定した場合に、成功回数133gに1を加算する。そして、CEPエンジン30は、成功回数133gが成功回数閾値以上か否かを判定し、成功回数133gが成功回数閾値以上である場合に、現時点のルール内部テーブル133Bの内容を通知先サーバ装置2へ通知する。
図17の例では、成功回数閾値が50であるとする。すると、CEPエンジン30は、ルールNo133aが「1.1」の派生ルールの成功回数が50回に達したので、当該派生ルールを含むルール内部テーブル133Bを通知先サーバ装置2へ通知する。
これにより、サーバ装置1は、派生ルールから派生させた新たな派生ルールを用いて、運用環境の方向性を検出することができる。図17の例では、サーバ装置1は、「株価」の条件が「3000円以上、かつ、3050円以下」である派生ルールの成功回数が閾値に達したので、株価の方向性として上昇傾向にあることを検出することができる。この結果、通知先サーバ装置2では、利用者は、運用環境の方向性から現ルールの見直しを図ることができる。
[データ抽出処理の手順]
次に、図18Aおよび図18Bを参照して、データ抽出処理の手順を説明する。図18Aおよび図18Bは、実施例4に係るデータ抽出処理の手順を示すフローチャートである。なお、S11からS27までは、実施例1に係るデータ抽出処理と同一の処理であるので、その処理の説明を簡略する。
まず、システムの運用前に、検出部147は、ルール内部テーブル133Bに記憶された派生ルールのうち、一部の条件の特定の条件値を変化させる派生ルールについて、当該派生ルールから派生する派生ルールを生成する(ステップS30)。例えば、検出部147は、ルール内部テーブル133Bから一部の条件の特定の条件値を変化させる派生ルールを抽出する。そして、検出部147は、抽出した派生ルールに含まれる条件のうち、条件設定テーブル134の変更条件134aが示す条件について、条件値から設定幅分増減させた新たな条件値を算出する。そして、検出部147は、抽出した派生ルールから、変更条件について、増加させた条件値を上限値とする新たな派生ルールを生成する。検出部147は、抽出した派生ルールから、変更条件について、減少させた条件値を下限値とする新たな派生ルールを生成する。そして、検出部147は、生成した新たな派生ルールをルール内部テーブル133Bに追加する。
続いて、生成部141Aは、予め設定されたルールを構文解析により自動分解し、派生ルールを生成する(ステップS11)。その後、抽出部142は、通信制御I/F部11を介してデータを受信する(ステップS12)。そして、抽出部142は、予め設定されたルールの全ての条件が成立したか否かを判定する(ステップS13)。
予め設定されたルールの全ての条件が成立したと判定した場合(ステップS13;Yes)、通知部143は、当該ルールに対応付けられたレコメンド(通知内容)を通知先サーバ2に送信する(ステップS14)。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、予め設定されたルールの全ての条件が成立しなかったと判定した場合(ステップS13;No)、抽出部142は、ルールのうち、条件成立まであと1つか否かを判定する(ステップS15)。例えば、抽出部142は、生成部141Aによって生成された派生ルールの全ての条件が成立したか否かを判定する。
条件成立まであと1つと判定した場合(ステップS15;Yes)、通知部143は、派生ルールに対応付けられたレコメンド(通知内容)を通知先サーバ装置2に送信する(ステップS16)。一方、条件成立まであと1つでないと判定した場合(ステップS15;No)、抽出部142は、ステップS17に移行する。
ステップS17では、最適化部144は、最適化条件が成立したか否かを判定する(ステップS17)。最適化条件が成立しなかったと判定した場合(ステップS17;No)、データ抽出処理は、ステップS21に遷移する。一方、最適化条件が成立したと判定した場合(ステップS17;Yes)、最適化部144は、派生ルールを最適化条件で最適化する(ステップS18)。
続いて、第1の追加部145は、派生ルールの成功条件133fを満たすか否かを判定する(ステップS21)。例えば、第1の追加部145は、ルール内部テーブル133Bに記憶された派生ルールのうち、全ての条件に合致した派生ルールについて、成功条件133fを満たすか否かを判定する。
全ての条件に合致した派生ルールについて、成功条件133fを満たすと判定した場合(ステップS21;Yes)、第1の追加部145は、成功回数133gに1を加算する(ステップS22)。そして、第1の追加部145は、成功回数133gが成功回数閾値以上であるか否かを判定する(ステップS23)。なお、システムの運用前に生成された新たな派生ルールについては、ルールテーブル131への追加対象でないので、判定処理を実行しない。成功回数133gが成功回数閾値以上でないと判定した場合(ステップS23;No)、第1の追加部145は、ステップS26に遷移する。
一方、成功回数133gが成功回数閾値以上であると判定した場合(ステップS23;Yes)、第1の追加部145は、成功回数閾値に達した派生ルールを、ルールテーブル131に追加する(ステップS24)。すなわち、第1の追加部145は、成功条件の成功回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとしてルールテーブル131に追加する。そして、第1の追加部145は、ステップS26に遷移する。
ステップS21では、全ての条件に合致した派生ルールについて、成功条件133fを満たさないと判定した場合(ステップS21;No)、第2の追加部146は、マイナス回数133hに1を加算する(ステップS25)。そして、第2の追加部146は、ステップS26に遷移する。
ステップS26では、第2の追加部146は、マイナス回数133hがマイナス回数閾値以上であるか否かを判定する(ステップS26)。なお、システムの運用前に生成された新たな派生ルールについては、ルールテーブル131への追加対象でないので、判定処理を実行しない。マイナス回数133hがマイナス回数閾値以上でないと判定した場合(ステップS26;No)、データ抽出処理は、次のデータを受信すべく、ステップS31に遷移する。
一方、マイナス回数133hがマイナス回数閾値以上であると判定した場合(ステップS26;Yes)、第2の追加部146は、マイナス回数閾値に達した派生ルールを、ルールテーブル131に追加する(ステップS27)。すなわち、第2の追加部146は、
成功条件の結果がマイナスになった回数が予め設定された閾値に達した場合に、該当する派生ルールを有効なルールとしてルールテーブル131に追加する。
続いて、検出部147は、システムの運用前に生成された新たな派生ルールの成功回数133gが成功回数閾値に達したか否かを判定する(ステップS31)。新たな派生ルールの成功回数133gが成功回数閾値に達しないと判定した場合(ステップS31;No)、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
一方、新たな派生ルールの成功回数133gが成功回数閾値に達したと判定した場合(ステップS31;Yes)、検出部147は、ルール内部テーブル133Bの内容を通知先サーバ装置2に通知する(ステップS32)。そして、データ抽出処理は、次のデータを受信すべく、ステップS12に遷移する。
[実施例4の効果]
上記実施例4によれば、サーバ装置1は、予め設定されたルールの一部の条件を変更することで自動生成した派生ルールが一部の条件の特定の閾値を変化させる派生ルールである場合、当該派生ルールの変更条件に沿った変更方向で、新たな派生ルールを生成する。そして、サーバ装置1は、生成した新たな派生ルールのうち、成功条件に適合する派生ルールが存在する場合に、当該派生ルールの存在を通知先サーバ装置2へ通知する。かかる構成によれば、サーバ装置1は、派生ルールから派生させた新たな派生ルールを用いて、運用環境の方向性を検出することができる。この結果、通知先サーバ装置2では、利用者は、運用環境の方向性から現ルールの見直しを図ることができる。
[プログラムなど]
なお、上記実施例では、CEPシステム9を株式売買の予測に用いる場合について説明した。しかしながら、CEPシステム9は、これに限定されず、ルールに基づいてデータを抽出し、抽出されたデータに基づいて分析するような対象に用いることができる。
また、上記実施例では、条件、成功条件として、株価、為替終値、ガソリン価格を用いたが、これに限定されず、予測に用いられるものであれば、何でも良い。
また、サーバ装置1は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した制御部14および記憶部13などの各機能を搭載することによって実現することができる。
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、最適化部144Aと第1の追加部145とを1個の部として統合しても良い。一方、最適化部144Aを、ルールテーブル131の条件を最適化する第1の最適化部と、ルール内部テーブル133の条件を最適化する第2の最適化部とに分散しても良い。また、ルールテーブル131、最適化条件テーブル132およびルール内部テーブル133をサーバ装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図6に示したサーバ装置1と同様の機能を実現するデータ抽出プログラムを実行するコンピュータの一例を説明する。図19は、データ抽出プログラムを実行するコンピュータの一例を示す図である。
図19に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、データ抽出プログラム205aおよびデータ抽出関連情報205bを記憶する。
CPU203は、データ抽出プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、サーバ装置1の各機能部に対応する。データ抽出関連情報205bは、ルールテーブル131、最適化条件テーブル132およびルール内部テーブル133に対応する。そして、例えばリムーバブルディスク211が、データ抽出プログラム205aなどの各情報を記憶する。
なお、データ抽出プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからデータ抽出プログラム205aを読み出して実行するようにしても良い。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)複合イベント処理におけるデータ抽出プログラムであって、
設定されたルールに従って第1のデータ抽出を行うとともに、前記設定されたルールの一部の条件を変更することで自動生成した複数の派生ルールに従って第2のデータ抽出を行い、
前記複数の派生ルールのうち、予め設定された条件に適合するデータの抽出状況を示す派生ルールが存在する場合に、該派生ルールの存在の通知を行う、
処理をコンピュータに実行させることを特徴とするデータ抽出プログラム。
(付記2)該通知する処理は、前記第1のデータ抽出に失敗する場合に、前記第2のデータ抽出によって、前記複数の派生ルールのうち、前記第2のデータ抽出に成功する派生ルールが存在する場合に、該派生ルールの存在の通知を行う
処理を実行させることを特徴とする付記1に記載のデータ抽出プログラム。
(付記3)前記複数の派生ルールのうち、予め設定された第1の条件に適合する派生ルールが存在する場合に、当該派生ルールを正規のルールに追加する
処理を実行させることを特徴とする付記1または付記2に記載のデータ抽出プログラム。
(付記4)該追加する処理は、予め設定された第1の条件を満たす回数が所定の閾値よりも大きくなった場合に、前記派生ルールを正規のルールに追加する
処理を実行させることを特徴とする付記3に記載のデータ抽出プログラム。
(付記5)該追加する処理は、さらに、予め設定された第2の条件に適合すれば、前記派生ルールを前記第2の条件に対応する変更方向で変更する新たな派生ルールを生成する
処理を実行させることを特徴とする付記4に記載のデータ抽出プログラム。
(付記6)該追加する処理は、予め設定された第1の条件を否定する条件を満たす回数が所定の閾値よりも大きくなった場合に、当該派生ルールを正規のルールに追加する
処理を実行させることを特徴とする付記3に記載のデータ抽出プログラム。
(付記7)前記設定されたルールの一部の条件を変更することで自動生成した派生ルールが一部の条件の特定の閾値を変化させる派生ルールである場合、当該派生ルールの変更条件に沿った変更方向で、前記派生ルールから派生する派生ルールをさらに生成し、生成した派生ルールのうち、予め設定された第1の条件に適合する派生ルールが存在する場合に、当該派生ルールの存在の通知を行う
処理を実行させることを特徴とする付記3から付記6のいずれか1つに記載のデータ抽出プログラム。
(付記8)設定されたルールに従って第1のデータ抽出を行うとともに、前記設定されたルールの一部の条件を変更することで自動生成した複数の派生ルールに従って第2のデータ抽出を行う抽出部と、
前記複数の派生ルールのうち、予め設定された条件に適合するデータの抽出状況を示す派生ルールが存在する場合に、該派生ルールの存在の通知を行う通知部とを有する
ことを特徴とするサーバ装置。
(付記9)コンピュータが、
設定されたルールに従って第1のデータ抽出を行うとともに、前記設定されたルールの一部の条件を変更することで自動生成した複数の派生ルールに従って第2のデータ抽出を行い、
前記複数の派生ルールのうち、予め設定された条件に適合するデータの抽出状況を示す派生ルールが存在する場合に、該派生ルールの存在の通知を行う、
各処理を実行することを特徴とするデータ抽出方法。