以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、情報処理装置10のブロック図を示す。情報処理装置10は、対象者の既知のイベントに関する既知イベント情報とイベントに関する統計データを取得し、既知イベント情報及び統計データに基づいて対象者の未知のイベントを推定する。例えば、イベントは、対象者に関連するライフイベント(一例として、結婚、出産、及び、不動産の購入等)であってよい。情報処理装置10は、統計取得部110、確率算出部120、対象者情報取得部130、BN生成部140、イベント情報生成部150、及び、レコメンド生成部160を備える。
統計取得部110は、イベントに関する統計データを取得する。統計取得部110は、公開された統計情報に基づき、イベントに関する統計データを生成して取得してよい。例えば、統計取得部110は、情報処理装置10の外部サーバであってよい公開統計データベース30から一次統計情報を取得し、情報処理装置10の外部サーバである同義語データベース20からイベントに関する複数の表現を含む同義語データを取得し、同義語データを利用して一次統計情報からイベントに関する統計データを生成してよい。
また、統計取得部110は、情報処理装置10の外部サーバであってよい対象者データベース40から、複数の対象者に関する既知のイベントの情報を含む既知イベント情報を取得し、複数の対象者の既知イベント情報から統計データを生成してよい。統計取得部110は、生成したイベントに関する統計データを確率算出部120に供給する。
確率算出部120は、イベントに関する統計データに基づき、イベントの発生確率を算出する。例えば、確率算出部120は、イベントに関する統計データに基づき、第1のイベントが発生する場合に第2のイベントが発生する発生確率を算出する。また、確率算出部120は、第1のイベントが発生する場合に第2のイベントが発生する発生確率を、第1のイベントと第2のイベントの時間間隔ごとに算出する。確率算出部120は、算出したイベントの発生確率をBN生成部140に供給する。
対象者情報取得部130は、対象者の属性情報、及び、対象者に発生した少なくとも1つの既知のイベントに関する既知イベント情報を取得する。例えば、対象者情報取得部130は、情報処理装置10の外部サーバであってよい対象者データベース40から、対象者ごとのプロフィール情報を属性情報として取得し、更に対象者ごとのイベントに関する情報を対象者ごとの既知イベント情報として取得する。対象者情報取得部130は取得した情報をBN生成部140に供給する。
BN生成部140は、確率算出部120が算出したイベントの発生確率に基づき、複数のイベントをノードとして含み、イベント間の相互の相関関係を表すベイジアンネットワーク(BN)を生成する。また、BN生成部140は、ベイジアンネットワークにおける各ノードについて、時間間隔なしの条件付き確率表、及び、時間間隔ごとのイベントの発生確率を含む時間間隔ごとの条件付き確率表を生成する。ここで、BN生成部140は、対象者の属性情報及び既知イベント情報に基づき、対象者ごとにベイジアンネットワークを生成してよい。BN生成部140は生成したベイジアンネットワークをイベント情報生成部150に供給する。
イベント情報生成部150は、イベントに関する統計データ及び既知イベント情報に基づいて生成されたベイジアンネットワークに基づいて、対象者の未知のイベントに関する未知イベント情報を生成する。対象者の未知のイベントは、ベイジアンネットワークに含まれるノードに対応するイベントのうち、既知のイベント以外のイベントであってよい。例えば、対象者の未知のイベントは、対象者に発生したか否かが未知のイベントを含んでよく、更に、対象者に発生したが発生時期が未知のイベントを含んでよい。
未知イベント情報は、未知のイベントの発生の有無、及び/又は、未知のイベントの発生時期の情報を含んでよい。イベント情報生成部150は、発生有無推定部152、及び、発生時期推定部154を有する。
発生有無推定部152は、ベイジアンネットワークの時間間隔無しの条件付き確率表に基づいて、既知イベント情報から対象者について対象者の未知のイベントの発生の有無を推定する。
発生時期推定部154は、時間間隔ごとの条件付き確率表に基づいて、対象者の未知のイベントが発生した時期を推定する。イベント情報生成部150は、発生有無推定部152、及び、発生時期推定部154の少なくとも一方の推定結果を含む未知イベント情報をレコメンド生成部160に供給する。
レコメンド生成部160は、未知イベント情報に基づき、未知のイベントに関連して対象者に対してレコメンドすべき情報を生成する。例えば、レコメンド生成部160は、未知イベント情報により、対象者に発生すると推定されたイベント、及び、イベントの発生時期に応じた商品等をレコメンドする情報を生成する。レコメンド生成部160は、生成した情報を対象者に送信してもよい。
このように本実施形態の情報処理装置10によれば、公開された一次統計情報、及び、対象者の既知のイベントに関する既知イベント情報等に基づき、イベントをノードとして含み、時間間隔ごとの条件付き確率表を含むベイジアンネットワークを生成する。これにより、情報処理装置10は、ベイジアンネットワークを利用して各対象者について未知のイベントの発生の有無、及び、未知のイベントの発生時期を推定することができ、各対象者に対して適切なレコメンドを実行することができる。
なお、同義語データベース20、公開統計データベース30、及び、対象者データベース40の少なくとも一つは、情報処理装置10の外部サーバでなく、情報処理装置10に含まれる記憶装置により実現されてもよい。
図2は、本実施形態の情報処理装置10の処理フローの一例を示す。本実施形態において、情報処理装置10は、S100からS700の処理を実行することにより、対象者の未知のイベントを推定し、推定結果に応じたレコメンドを生成する。
S100において、統計取得部110は、イベントに関する統計データを取得する。例えば、統計取得部110は、公開統計データベース30にアクセスして一次統計情報を取得し、当該一次統計情報に基づいて生成したイベントに関する統計データを取得してよい。
また、統計取得部110は、対象者データベース40にアクセスして複数の対象者の既知イベント情報を取得し、当該複数の対象者の既知イベント情報を集計してイベントに関する統計データを生成、及び、取得してよい。統計取得部110は、生成したイベントに関する統計データを確率算出部120に供給する。
確率算出部120は、イベントに関する統計データに基づき、イベントの発生確率を算出する。確率算出部120は、算出したイベントの発生確率をBN生成部140に供給する。S100の処理の詳細は後述する。
次にS200において、BN生成部140は、イベントの発生確率に基づき、イベント間の相互の相関関係を表すベイジアンネットワーク(BN)を生成する。例えば、BN生成部140は、複数のイベントのそれぞれを各ノードとして含むベイジアンネットワーク構造を生成する。S200の処理の詳細は後述する。
次にS300において、BN生成部140は、ベイジアンネットワーク構造の各ノードについて、時間間隔ごとの条件付き確率表を生成する。例えば、対象者情報取得部130は、対象者データベース40から対象者ごとの属性データ及び既知イベント情報を取得してBN生成部140に供給する。
そして、BN生成部140は、S200で生成したベイジアンネットワーク、及び、対象者情報取得部130から取得した各対象者の属性情報並びに既知イベント情報に基づき、対象者ごとにベイジアンネットワークの各ノードに対応するイベントの発生確率を算出する。例えば、BN生成部140は、時間間隔ごとのイベントの発生確率を含む時間間隔ごとの条件付き確率表、及び、時間間隔を含まないイベントの発生確率を含む時間間隔なしの条件付き確率表を生成する。BN生成部140は生成した各イベントの発生確率をイベント情報生成部150に供給する。S300の処理の詳細は後述する。
次にS400において、イベント情報生成部150は、既知イベント情報から対象者について対象者の未知のイベントの発生の有無を推定する。例えば、イベント情報生成部150の発生有無推定部152は、ベイジアンネットワークの時間間隔なしの条件付き確率表におけるイベントの発生確率が予め定められた閾値(例えば、50%)以上の場合、当該未知のイベントが対象者に発生したと推定し、当該未知のイベントに対してイベントが発生したことを示す未知イベント情報を生成してよい。
次にS500において、イベント情報生成部150は、時間間隔ごとの条件付き確率表に基づいて、対象者の2つ既知のイベント間の時間間隔を推定する。イベント情報生成部150は推定された2つ既知のイベント間の時間間隔を含む未知イベント情報を生成する。例えば、イベント情報生成部150は、一のイベントについて、前のイベントが発生してから一のイベントが発生するまでの時間間隔の情報を含む未知イベント情報を生成する。S500の処理の詳細は後述する。
次にS600において、イベント情報生成部150は、時間間隔ごとの条件付き確率表に基づいて、既知の2つのイベントに挟まれたイベントの発生時期を推定する。イベント情報生成部150は、当該既知の2つのイベントに挟まれたイベントについて、当該挟まれたイベントの発生時期を含む未知イベント情報を生成する。S600の処理の詳細は後述する。なお、S400〜S600の処理は、図2で説明した順番と異なる順番で実行されてもよい。
次にS700において、レコメンド生成部160は、未知イベント情報に基づいて、未知のイベントに関連して対象者に対してレコメンドすべき情報を生成する。レコメンド生成部160は、各対象者に対してレコメンドすべき情報を生成してよい。レコメンド生成部160は、対象者に発生したことを未知イベント情報が示す未知のイベントに対してレコメンドすべき情報を生成する。例えば、レコメンド生成部160は、未知イベント情報が一のイベントが発生したことを示す場合、当該一の未知のイベントに関連する商品をレコメンドする情報を生成する。
一例として、レコメンド生成部160は、特定の対象者が結婚したことを示す未知イベント情報に基づき、結婚に関連してレコメンドすべき商品(例えば、生命保険等)の情報を生成する。
また、レコメンド生成部160は、発生時期が未知だった一のイベントの発生時期を未知イベント情報が示す場合、当該一のイベントに関連し、イベントの発生時期に応じた商品をレコメンドする情報を生成する。例えば、レコメンド生成部160は、特定の対象者が3年前に出産したことを示す未知イベント情報に基づき、出産から3年後の状況に関連してレコメンドすべき商品(例えば、学資保険、または、幼児用品等)の情報を生成する。
ここで、情報処理装置10は、対象者に商品等の提案する営業担当者により使用されてよく、その場合、レコメンド生成部160は営業用資料としてレコメンドすべき情報を生成してよい。また、情報処理装置10は、対象者自身により直接、又は、インターネット等を介して間接的に使用されてよく、その場合、レコメンド生成部160は対象者に対して送信する商品提案としてレコメンドすべき情報を生成してよい。また、レコメンド生成部160は、レコメンドに加えて、未知イベント情報に係るイベントに関連した対象者への質問を生成してよい。
図3は、図2のS100の具体的な処理フローの一例を示す。本実施形態において、情報処理装置10は、S110からS190の処理を実行することにより、S100の処理を実行してよい。情報処理装置10は、図3のフローを実行することにより公開された統計情報に基づき、イベントに関する統計データを生成する。
まず、S110において、統計取得部110は、公開された一次統計情報を取得する。例えば、統計取得部110は、公開統計データベース30(一例として、公官庁又は企業等が一般向けに公開するデータを格納し、何人もアクセス可能なデータベース等)にアクセスし、公開統計データベース30に格納された統計情報を一次統計情報として入手する。
次に、S112において、統計取得部110は、S110で取得した一次統計情報を編集し、1又は複数の統計データを生成する。例えば、統計取得部110は、一次統計情報に含まれる1または複数の表等のデータを正規化し、要約し、及び/又は、併合することにより、簡潔化された統計データを生成する。統計取得部110は、一次統計情報がカテゴリ(例えば、性別、地域、及び/又は年齢層等)ごとに分類された統計情報を有する場合、カテゴリ毎に分類された統計データを生成してよい。
次に、S120において、統計取得部110は、S112で生成した統計データのうちの1つを選択して解析する。例えば、統計取得部110は、同義語データベース20からイベントに関する複数の表現を含む同義語データを取得し、同義語データに基づいて、解析対象の統計データがイベントに関する統計データか否かを判断する。一例として、統計取得部110は、各イベントに対して1又は複数の表現を含む同義語データに基づいて、2つのイベントに関する表現と一致する統計データの表現をマッチングする。
統計取得部110は、統計データが2つの異なるイベントに関する表現を含む場合、当該統計データをイベントに関する統計データであると決定する。統計取得部110は、異なる2つのイベントの組み合わせについて、マッチングによる判断を繰り返し実行してよい。これにより、統計取得部110は、同義語データを利用して一次統計情報からイベントに関する統計を正確に抽出することができる。
次にS130において、統計取得部110は、S120の解析結果に基づき、直前のS120で解析した統計データがイベントに関する統計データであるか否かを判断する。統計取得部110は、当該統計データがイベントに関する統計データである場合、当該イベントに関する統計データを取得して処理をS140に進め、そうでない場合は処理をS180に進める。
これにより、統計取得部110は、2つのイベントの相関関係を示す統計データを取得することができる。例えば、統計取得部110は、ある一のイベント(例えば、結婚)が発生したときに、別の一のイベント(例えば、出産)が発生した数(又は割合)を示すイベントに関する統計データを取得する。
次にS140において、統計取得部110は、取得したイベントに関する統計データが2つのイベント間の時間間隔の情報を含むか否か判断する。例えば、統計取得部110は、取得した統計データが時間間隔に関する表現(一例として、「経過」、「間隔」等)を含むか否かを判断する。統計取得部110は、取得した統計データが時間間隔の情報を含むと判断する場合、処理をS160に進め、そうでない場合は処理をS170に進める。
次にS160において、確率算出部120は、時間間隔の情報を含むイベントに関する統計データに基づき、イベントの発生確率を算出する。例えば、確率算出部120は、2つのイベント間の時間間隔の情報を含む統計データに基づいて、2つのイベント間のイベント遷移の情報を生成する。例えば、確率算出部120は、イベントに関する統計データがある一のイベントの後に別のイベントに遷移する数等を含む場合、当該一のイベントから別のイベントへのイベント遷移の情報を生成する。
更に確率算出部120は、一のイベントが発生したときに当該一のイベントの後(又は前)に別のイベントが発生する確率を、当該一のイベントからの時間間隔ごと算出する。確率算出部120は、算出した時間間隔ごとのイベントの発生確率を含むイベント発生確率データを生成してよい。確率算出部120は生成したイベント発生確率データをBN生成部140に供給する。確率算出部120は、処理をS180に進める。
次にS170において、確率算出部120は、時間間隔の情報を含まないイベントに関する統計データに基づき、イベントの発生確率を算出する。例えば、確率算出部120は、時間間隔の情報を含まないイベントに関する統計データに基づき、2つのイベント間のイベント遷移の情報を生成する。例えば、確率算出部120は、イベントに関する統計データがある一のイベントの後に別のイベントに遷移する数等を含む場合、当該一のイベントから別のイベントへのイベント遷移の情報を生成する。
更に確率算出部120は、一のイベントが発生したときに当該一のイベントの後(又は前)に別のイベントが発生する確率を算出する。確率算出部120は、算出したイベントの発生確率を含むイベント発生確率データを生成してよい。確率算出部120は生成したイベント発生確率データをBN生成部140に供給する。確率算出部120は、処理をS180に進める。
S180において、統計取得部110は、S112で生成した統計データの全てについてS120〜S170の処理を完了したか否かを判断する。統計データの全てを処理したと判断する場合、統計取得部110は、S100の処理を終了し、そうでない場合は処理をS190に進める。
S190において、統計取得部110は、S112で生成した統計データのうち未選択の統計データを選択し、新しく選択した統計データについてS120の処理を開始する。
図4は、統計取得部110が取得する一次統計情報の一例を示す。図4に示す一次統計情報は、「結婚から12か月未満に第1子を出産した夫婦数」、「結婚から12か月以上24か月未満で第1子出産した夫婦数」及び「結婚から24か月以上で第1子出産した夫婦数」を、地域(ノースカロライナ(NC)及びカルフォルニア(CA))ごとに集計した表を含む。例えば、統計取得部110は、S110において図4に示す表を一次統計情報として取得してよい。
図5は、統計取得部110が取得するイベントに関する統計データの一例を示す。例えば、S112において、統計取得部110は、一次統計情報である図4に示す3つの表を併合して、図5に示す統計データを生成してよい。図5の統計データは、地域に関する2つのカテゴリ(ノースカロライナ(NC)及びカルフォルニア(CA))含み、各カテゴリにおいて、イベント「結婚」の1年未満でイベント「出産」が生じた対象者(夫婦)の数、イベント「結婚」の1年以上〜2年未満でイベント「出産」が生じた対象者(夫婦)の数、及び、イベント「結婚」の2年以上後でイベント「出産」が生じた対象者(夫婦)の数を示す。
図6は、確率算出部120が生成するイベント発生確率データを示す。例えば、S160において、確率算出部120は、図5のイベントに関する統計データから、カテゴリごとに図6に係るイベント発生確率データを生成してよい。図6に示すイベント発生確率データは、ノースカロライナ(NC)のカテゴリにおける、イベント「結婚」の1年未満でイベント「出産」が生じる発生確率、イベント「結婚」の1年以上〜2年未満でイベント「出産」が生じる発生確率、及び、イベント「結婚」の2年以上後でイベント「出産」が生じる発生確率を含む。図6に示すように、イベント発生確率データは、発生確率に加え、時間間隔ごとのイベントの発生数(図中のカウント)を含んでよい。
図7は、図2のS100の別の処理フローの一例を示す。情報処理装置10は、図2のS100の処理において、図3のS110〜S190のフローに加えて/代えて、図7のS115〜S195の処理を実行してよい。情報処理装置10は、図7のフローを実行することにより対象のイベントに関する情報に基づき、イベントに関する統計データを生成する。
S115において、統計取得部110は、対象者データベース40から、一の対象者の属性情報、及び、一の対象者の既知のイベントに関する既知イベント情報を取得する。例えば、統計取得部110は、営業担当者が対象者との会話から得て対象者データベース40に予め登録した一の対象者のライフイベント(一例として、対象者自身又は対象者の近親者についての結婚、出産、引越し、就職、及び/又は、退職等)に関する情報を、一の対象者の既知イベント情報として取得する。統計取得部110は、対象者データベース40に既知イベント情報が登録された時点の情報を取得してよい。統計取得部110は、一の対象者について複数の既知イベント情報を取得してもよい。
なお、対象者データベース40がイベントに関する情報以外を含む場合、統計取得部110は、情報処理装置10の同義語データベース20からイベントに関する複数の表現を含む同義語データを取得し、同義語データを利用してマッチングにより一の対象者のイベントに関する既知イベント情報を抽出して取得してもよい。
次にS135において、統計取得部110は、直近のS115で取得した一の対象者の既知イベント情報が時間に関する情報を含むか否か判断する。例えば、統計取得部110は、一の対象者の既知イベント情報がイベントの発生時期(一例として、発生年、発生した季節、発生月、又は発生日時等)を含むか否かを判断する。統計取得部110は、既知イベント情報が時間に関する情報を含むと判断する場合は処理をS145に進め、そうでない場合は処理をS155に進める。
S145において、統計取得部110は、一の対象者についての時間付きイベントテーブルのエントリを生成する。時間付きイベントテーブルは、複数の対象者についての既知イベント情報ごとの複数のエントリを含み、各エントリは既知イベント情報に係る既知のイベント及び発生時期の情報を含む。統計取得部110は、処理をS165に進める。
S155において、統計取得部110は、一の対象者についての順序付きイベントテーブルのエントリを生成する。順序付きイベントテーブルは、複数の対象者について既知イベント情報ごとの複数のエントリを含み、各エントリは既知イベント情報に係る既知のイベント及び発生順序の情報を含む。ここで、統計取得部110は、対象者データベース40に既知イベント情報が登録された順序を順序付きイベントテーブルにおける発生順序としてよい。統計取得部110は、処理をS165に進める。
S165において、統計取得部110は、対象者データベース40に記録された全ての対象者についてS115〜S155の処理を実行したか否か判断する。全ての対象者の処理が終了したと判断する場合、統計取得部は処理をS185に進め、そうでない場合は処理をS175に進める。
S175において、統計取得部110は、未選択の別の対象者を選択し、新しく選択した対象者についてS115の処理を開始する。
S185において、統計取得部110は、イベントに関する統計データを生成して取得する。例えば、統計取得部110は、複数の対象者についてS145で生成した時間付きイベントテーブルに基づいて、時間間隔付きのイベントに関する統計データを生成する。一例として、統計取得部110は、時間付きイベントテーブルから各対象者についてのイベント間の時間間隔を算出し、算出した時間間隔に基づいて、図5に示したものと同様の時間間付きのイベントに関する統計データを生成する。
また、例えば、統計取得部110は、複数の対象者についてS155で生成した順序付きイベントテーブルに基づいて、時間間隔無しのイベントに関する統計データを生成する。一例として、統計取得部110は、順序付きイベントテーブルから各対象者についてのイベント間の順序関係を特定し、一のイベントが発生した後に別のイベントが発生する発生確率を示す時間間隔無しのイベントに関する統計データを生成する。
また、統計取得部110は、複数の対象者が属するカテゴリごとにイベントに関する統計データを生成してもよい。例えば、統計取得部110は、S115で取得した対象者の属性情報に基づき、全対象者を複数のカテゴリに分類し、各カテゴリに属する対象者ごとにイベントに関する統計データを生成してよい。統計取得部110は、生成したイベントに関する統計データを確率算出部120に供給する。
S195において、確率算出部120は、イベントに関する統計データに基づき、イベントの発生確率を算出する。例えば、確率算出部120は、時間間隔付きのイベントに関する統計データに基づいて、2つのイベント間のイベント遷移の情報を生成する。例えば、確率算出部120は、イベントに関する統計データがある一のイベントの後に別のイベントに遷移する数等を含む場合、当該一のイベントから別のイベントへのイベント遷移の情報を生成する。
確率算出部120は、一のイベントが発生したときに当該一のイベントの後(又は前)に別のイベントが発生する確率を、当該一のイベントからの時間間隔ごと算出する。確率算出部120は、算出した時間間隔ごとのイベントの発生確率を含むイベント発生確率データを生成してよい。一例として、確率算出部120は、図6に示したものと同様のイベント発生確率データを生成してよい。
また、例えば、確率算出部120は、時間間隔無しのイベントに関する統計データに基づいて、2つのイベント間のイベント遷移の情報を生成し、一のイベントが発生したときに当該一のイベントの後(又は前)に別のイベントが発生する確率を算出する。確率算出部120は生成したイベント発生確率データをBN生成部140に供給する。
図8は、S145において統計取得部110が生成する時間付きイベントテーブルの一例を示す。図示するように時間付きイベントテーブルは、顧客IDで特定される対象者Cxxx1及びCxxx2ごとに、タイムスタンプで示される発生時期とイベント内容とを含んでよい。
図9は、S155において統計取得部110が生成する順序付きイベントテーブルの一例を示す。図示するように順序付きイベントテーブルは、顧客IDで特定される対象者Cyyy1及びCyyy2ごとに、イベントの発生順序とイベント内容とを含んでよい。
図10は、図2のS200の具体的な処理フローの一例を示す。図示するように本実施形態において、情報処理装置10は、S210からS220の処理を実行することにより、S200の処理を実行してよい。
まず、S210において、BN生成部140は、イベントに関する統計データからイベント遷移を抽出する。例えば、BN生成部140は、S160、S170及び/又はS195で生成したイベント発生確率データからイベント遷移に関する情報を抽出する。一例として、BN生成部140は、イベントごとに、自身のイベントが発生する前に発生する確率が高い別のイベントを抽出する。
次に、S220において、BN生成部140は、イベント遷移に関する情報に基づいて、各イベントをノードとするベイジアンネットワーク構造を生成する。例えば、BN生成部140は、イベントの前に発生した別のイベントを親ノードの候補として設定し、親ノードの候補を評価することにより、K2アルゴリズムに基づきベイジアンネットワーク構造を生成してよい。
図11は、図2のS300の具体的な処理フローの一例を示す。図示するように本実施形態において、情報処理装置10は、S310からS370の処理を実行することにより、S300の処理を実行してよい。
まず、S310において、BN生成部140は、ベイジアンネットワーク構造インスタンスを複数(例えば、I人)の対象者のそれぞれの対象者i(i∈I)について生成する。
次にBN生成部140は、各対象者iについてS340〜S370の処理を繰り返す。
S340において、BN生成部140は対象者iの有する属性情報を取得する。例えば、対象者情報取得部130は、対象者データベース40から、対象者iの特徴を表す属性情報(例えば、性別、年齢層、勤務形態、及び、居住地域等のプロフィール情報)を取得し、BN生成部140に供給する。BN生成部140は、対象者情報取得部130から対象者iの属性情報を取得する。
S350において、BN生成部140は、イベント発生確率データに含まれるカテゴリのうちS340で取得した対象者iの属性に基づいて対象者が属するカテゴリgiを決定する。例えば、対象者iの属性情報がノースカロライナ(NC)在住であることを示す場合、カテゴリ「ノースカロライナ(NC)」を対象者iのカテゴリgiとして決定してよい。
BN生成部140は、対象者iの属性情報に合致する複数(K個)のカテゴリgi1、gi2…giKを決定してもよい。ここで、BN生成部140は、複数のカテゴリのうち一部のカテゴリのみを選択してよい。例えば、BN生成部140は、各カテゴリgikに係るイベント発生確率データに含まれるイベントの発生数をsikとしたときの、対象者iの全カテゴリのイベントの発生数の合計(ΣKsik)が、予め定められた範囲となるように一部のカテゴリを選択してよい。これにより、BN生成部140は、特定のイベント遷移(例えば、イベント「結婚」からイベント「出産」への遷移)に係る複数のカテゴリのイベント発生確率データうち、対象者iと親和性の高いイベント発生確率データを特定することができる。
ここで、カテゴリgi1、gi2…giKに下位概念(例えば、属性情報が地域を含む場合の都道府県と市町村の関係等)がある場合、BN生成部140は、対象者iの属性情報が一致する最下位概念のカテゴリを特定し、当該最下位概念のカテゴリを上位のカテゴリの代わりに用いてもよい。
次に、S360において、BN生成部140は、対象者iについて時間間隔ごとの条件付き確率表を生成する。例えば、BN生成部140は、S350で対象者iについて特定したイベント発生確率データのうち時間間隔ごとのイベントの発生確率を含むものに基づいて、ベイジアンネットワークのノードにおける、時間間隔ごとの条件付き確率表を生成する。
一例として、BN生成部140は、図6に示す時間間隔ごとのイベントの発生確率を含むイベント発生確率データに基づき、時間間隔ごとの条件付き確率表を生成する。BN生成部140は、ノースカロライナ(NC)在住の対象者iのBNSインスタンスiにおけるノード「出産」に対して、ノード「結婚」から移行する時間間隔ごとの確率を含む条件付き確率表を生成する。この場合、BN生成部140は、「0−1年」の時間間隔に対し、確率14%を割り当て、「1−2年」の時間間隔に対し、確率27%を割り当て、「2年超」の時間間隔に対し、59%を割り当ててよい。
ここで、BN生成部140は、対象者iの既知イベント情報に基づいた条件付き確率表を生成してよい。例えば、BN生成部140は対象者iの有する既知イベント情報を対象者データベース40から取得する。そして、既知イベント情報が特定のノードに対応するイベントが特定の時期に生じたことを示す場合、当該既知イベント情報に応じた時間間隔ごとの条件付き確率表を作成する。一例として、対象者iの既知イベント情報が「結婚から15か月後に出産した」ことを示す場合、BN生成部140は、BNSインスタンスiにおけるノード「出産」において、「0−1年」及び「2年超」の時間間隔に対し、確率0%を割り当て、「1−2年」の時間間隔に対し、確率100%を割り当ててよい。
次に、S370において、BN生成部140は、対象者iについて条件付き確率表を生成する。例えば、BN生成部140は、S350で対象者iについて特定したイベント発生確率データのうち時間間隔ごとのイベントの発生確率を含まないものに基づいて、ベイジアンネットワークのノードにおける、条件付き確率表を生成する。一例として、BN生成部140は、図6に示す時間間隔ごとのイベントの発生確率を含むイベント発生確率データに基づき、NC在住の対象者iのBNSインスタンスiにおけるイベント「結婚」に対応するノードに対して、イベント「出産」が生じる確率を含む条件付き確率表を生成する。
ここで、BN生成部140は、S360と同様に対象者iの既知イベント情報に基づいて条件付き確率表を生成してよい。BN生成部140は、生成した各対象者iのBNSインスタンスiをイベント情報生成部150に供給する。また、BN生成部140は、対象者iの既知イベント情報をイベント情報生成部150に供給してよい。
BN生成部140は、対象者iについてS340〜S370の処理を繰り返すことにより、対象者iが属するカテゴリ及び対象者iの既知イベント情報に基づき、各対象者i固有のベイジアンネットワークの情報を含むBNSインスタンスiを生成する。これにより、S400〜S600において、イベント情報生成部150は、対象者iが属するカテゴリの統計データに基づき未知イベント情報を生成することとなる。
図12は、BN生成部140が生成するBNSインスタンスiの一例を示す。図12の例では、BN生成部140は、S210において対象者iについてノードEA、ノードEB、ノードEC、ノードED、及び、ノードEEを含むBNSインスタンスiを生成する。ノードEA〜EはイベントEA〜Eに対応する。BNSインスタンスiにおいて、イベントEAの発生とイベントEB及びイベントEDの発生には因果関係があり、イベントEBの発生とイベントECの発生には因果関係があり、イベントEDの発生とイベントEEの発生には因果関係があることが示されている。
また、図12には、BN生成部140が各ノードについて作成した時間間隔ごとの条件付き確率表、及び、時間間隔無しの条件付き確率表が含まれる。例えば、ノードEBの時間間隔無しの条件付き確率表には、イベントEAが生じた場合(A=1)にイベントEBが生じる確率(PP11)と、イベントEAが生じない場合にイベントEBが生じる確率(PP12)が示される。ノードECには、ノードEBと同様に確率(PP21)と確率(PP22)が示される。
また、例えば、ノードEDの時間間隔ごとの条件付き確率表には、イベントEAが生じた場合(A=1)にイベントEAから時間間隔tint31(例えば1年未満)でイベントEDが生じる確率(PP31)と、イベントEAが生じた場合(A=1)にイベントEAから時間間隔tint32(1年〜2年未満)でイベントEDが生じる確率(PP32)と、イベントEAが生じた場合(A=1)にイベントEAから時間間隔tint33(2年以上)でイベントEDが生じる確率(PP33)とが示される。ノードEEには、ノードEDと同様に確率(PP41)、確率(PP42)、及び確率(PP43)が示される。
図13及び図14は、図2のS500の具体的な処理フローの一例を示す。本実施形態において、情報処理装置10は、S510からS590の処理を実行することにより、S500の処理を実行してよい。図13はS510〜S560の処理を示し、図14はS570〜S590の処理を示す。
情報処理装置10は、BNSインスタンスi上の既知のイベント(すなわち、発生確率が100%のイベント)、及び/又は、発生確率が閾値以上のイベント(合わせて「発生済みイベント」とする)のノードについて、S510からS590の処理を実行してよい。
例えば、情報処理装置10は、発生済みイベントのノードと、直接、又は、発生済みイベントでない未知のイベントの1以上のノードを介して、連結する別の発生済みイベントのノードとの組み合わせ(「発生済みノードの組み合わせ)ともいう)に対して、S510からS590の処理を実行してよい。ここで、情報処理装置10は、当該発生済みノードの組み合わせのうち、少なくとも一方が発生時期の情報を含まないイベントに対応するノードの組み合わせのそれぞれに対して、S510からS590の処理を実行してよい。
また、情報処理装置10は、各対象者i(∈I)のBNSインスタンスiのそれぞれに対してS510〜S590の処理を実行してよく、又は、S700でレコメンドを生成する予定の対象者iについてのみS510〜S590の処理を実行してもよい。
まず、S510において、イベント情報生成部150の発生時期推定部154は、発生済みノードの組み合わせを構成するノードExとノードEyとの間の時間間隔ごとのイベントExの発生確率を算出する。発生時期推定部154は、S300で生成した時間間隔ごとの条件付き確率表に基づき、Bayesian Network確率伝搬ソフトウェアを利用して、ノードExとノードEyとの間の時間間隔ごとのイベントExの発生確率を算出してよい。
次にS530において、発生時期推定部154は、ノードExとノードEyとの間に、時間間隔ごとの条件付き確率表を有しないノードが存在するか否かを判断する。発生時期推定部154は、当該ノードが存在すると判断した場合(図13中のA)は、処理を図14で説明する処理フローに進める。
S530において、当該ノードが存在しないと判断した場合は、発生時期推定部154は、S540〜S550の処理をノードExとノードEyとの間の1以上のノードEnについて実行する。ノードEnが複数個(例えばN個:N>1)存在する場合は、それぞれのノードEn(n∈N)について、S540〜S550の処理を繰り返し実行する。
S540において、発生時期推定部154は、時間間隔ごとの条件付き確率表において、ノードEnに対応するイベントEnとイベントEnの前に発生するイベントEn−1(N=1の場合はイベントEx)との間の時間間隔であって、発生確率が最大の時間間隔を対象者の未知のイベントEnの時間間隔tnとして推定する。
例えば、図12のノードEAをノードEXとし、ノードEDをノードEnとし、ノードEEをノードEYとする場合、発生時期推定部154は、時間間隔Dtint31〜Dtint33のうち、発生確率PP31〜PP33の中で最も高い発生確率Pnに対応する時間間隔を、イベントEA〜イベントEDまでの時間間隔として推定する。
次にS550において、発生時期推定部154は、S540において選択した最も高い発生確率PnをイベントEnの時間間隔無しの条件付き確率表におけるイベントEnの発生確率とする。発生時期推定部154は、S540〜S550の繰り返し処理の後、S560の処理を実行する。
S560において、発生時期推定部154は、イベントExから発生時期を推定しようとするイベントEn'(n'∈N)までの時間間隔tn'を算出する。N=1の場合、発生時期推定部154は、S540で推定したイベントEnの時間間隔tnをそのままイベントExからイベントEn'までの時間間隔tn'としてよい。
N>1の場合、発生時期推定部154は、イベントExからイベントEn'までに含まれるイベントEnの時間間隔の合計ΣtnをイベントExからイベントEn'までの時間間隔として推定する。発生時期推定部154は、イベントExからイベントEn'までの時間間隔を、イベントEn'に関する未知イベント情報として生成する。発生時期推定部154は、生成した未知イベント情報をレコメンド生成部160に供給してよい。
図14は、図13のA以降の処理フローの一例を示す。
まず、S570において、発生時期推定部154は、発生済みイベント間の時間間隔の上限を設定する。例えば、発生時期推定部154は、イベントExからイベントEyまでの時間間隔の上限tmaxを予め定められた期間に設定する。発生時期推定部154は、情報処理装置10の使用者から時間間隔の上限tmaxを入力してもよい。
次に、発生時期推定部154は、S580〜S585の処理をノードExとノードEyとの間の1以上のノードEnについて実行する。ノードEnが複数個(例えばN個:N>1)存在する場合は、それぞれのノードEn(n∈N)について、S580〜S585の処理を繰り返し実行する。
S580において、発生時期推定部154は、イベントExから発生時期を推定しようとするイベントEn'(n'∈N)までのイベントに対応し、時間間隔ごとの条件付き確率表があるノードにおいて、tmax以内の時間間隔の発生確率の和を算出する。
例えば、図12のノードEAをノードEXとし、ノードEDをノードEn'とし、ノードEEをノードEYとし、tmaxを時間間隔Dtint32の上限とし、ノードEDに時間間隔ごとの条件付き確率表がなかったとする場合、発生時期推定部154は、発生確率PP32を時間間隔の発生確率の和として算出する。
次にS585において、発生時期推定部154は、S580で算出した発生確率の和をノードEnの条件付き確率表において、イベントEn−1が発生した場合のイベントEnの発生確率としてセットする。発生時期推定部154は、S580〜S585の処理の後、S590の処理を実行する。
S590において、発生時期推定部154は、ベイジアンネットワーク確率伝播に基づき、BNSインスタンスiの各ノードに対応するイベントの発生確率を算出する。発生時期推定部154は、イベントの発生確率が予め定められた閾値(例えば、50%)以上の場合、当該イベントが対象者に発生したと推定し、当該イベントに対してイベントが発生したことを示す未知イベント情報を生成してよい。発生時期推定部154は、生成した未知イベント情報をレコメンド生成部160に供給してよい。なお、S570〜S590を処理は、発生時期推定部154の代わりに発生有無推定部152が実行してもよい。
図13及び図14に関連して説明した実施形態においては、各イベントの発生確率は、S530の決定に基づき、図13のフロー又は図14のフローで決定された。しかし、イベントの発生確率は、他の方法により決定されてもよい。例えば、イベントの発生確率は、S530の決定にかかわらず、図13のフローにより全て決定されてよく、又は、図14のフローにより全て決定されてもよい。
図15は、図2のS600の具体的な処理フローの一例を示す。本実施形態において、情報処理装置10は、S610からS680の処理を実行することにより、S600の処理を実行してよい。情報処理装置10は、発生済みノードの組み合わせのうち、両方のノードが発生時期の情報を含むイベントに対応するノードの組み合わせのそれぞれに対して、S610からS680の処理を実行してよい。
まず、S610において、発生時期推定部154は、発生済みノードの組み合わせを構成するノードExとノードEyとの間に時間間隔を算出する。例えば、発生時期推定部154は、ノードExとノードEyに係る既知イベント情報からイベントExとイベントEyの発生時期を特定し、発生時期の差分をノードExとノードEyとの間に時間間隔として算出する。
S620において、発生時期推定部154は、ノードExとノードEyとの間に時間間隔ごとの条件付き確率表を有しないノードが存在するか否か判断する。発生時期推定部154は、当該ノードが存在すると判断した場合は、S600の処理を終了し、そうでない場合は処理をS630に進める。
S630において、発生時期推定部154は、処理変数Πmax=0にセットする。
次にS640において、発生時期推定部154は、ノードExとノードEyとのノードによる時間間隔の組み合わせctjのそれぞれに対してS660〜S670を実行する。例えば、ノードExとノードEyの間にノードEnがある場合、発生時期推定部154は、ノードExとノードEnの時間間隔tnとノードEnとノードEyの時間間隔tyとの和がノードExに対応するイベントExとノードEyに対応するイベントEyと間の時間間隔Tgと等しくなる(つまり、tn+ty=Tg)となるtn+tyの全ての組み合わせctJを生成する。そして、発生時期推定部154は、ctJに含まれる各組み合わせctjに対してS660〜S670の処理を実行する。
S660において、発生時期推定部154は、時間間隔の組み合わせctjについて、時間間隔ごとの確率表における各時間間隔の発生確率の積Πj=P(tx+1)×P(tx+2)×…×P(tn)×……×P(ty)を算出する。ここで、P(t)は時間間隔ごとの確率表における時間間隔tに対応する発生確率を示す。
例えば、図12のノードEAをノードEXとし、ノードEEをノードEYとし、ノードEDをノードEnとし、ノードEAからノードEEの時間間隔が3年であり、Dtint31〜Dtint33とDtint41〜Dtint43がそれぞれ「1年未満」、「1〜2年未満」、及び「2年以上」の時間間隔に対応する場合を想定する。この場合、発生時期推定部154は、1番目の組み合わせct1において、Π1=P(Dtint31)×P(Dtint43)を算出し、2番目の組み合わせct2において、Π2=P(Dtint32)×P(Dtint42)を算出し、3番目の組み合わせct3において、Π3=P(Dtint33)×P(Dtint41)を算出してよい。
発生時期推定部154は、各時間間隔の発生確率の積Πj=P(tx+1)×P(tx+2)×…×P(tn)×……×P(ty)に代えて、各時間間隔の発生確率の和Σj=P(tx+1)+P(tx+2)+…+P(tn)+……+P(ty)を算出してもよい。
次に、S670において、発生時期推定部154は、処理変数Πmaxを更新する。例えば、発生時期推定部154は、直近に算出したΠjがΠmaxよりも大きい場合、直近に算出したΠjを新しいΠmaxとして更新する。
次に、S680において、発生時期推定部154は、処理変数Πmaxに基づき、ノードExとノードEyとの間のノードに対応するイベントの発生時期を決定する。例えば、発生時期推定部154は、S660〜S670の繰り返しが終了したときの、処理変数Πmaxを与えた組み合わせctjに含まれる時間間隔の組み合わせを、ノードExとノードEyとの間のノードのイベントの発生時期として決定する。
例えば、S660で例示したΠ2がΠmaxとなる場合、発生時期推定部154は、Dtint32をイベントEAとイベントEDの時間間隔として決定し、Dtint42をイベントEDとイベントEEの時間間隔として決定する。発生時期推定部154は、ノードExとノードEyとの間のノードの各時間間隔を、ノードEy及びノードExとノードEyとの間のノードに関する未知イベント情報として生成してよい。発生時期推定部154は、生成した未知イベント情報をレコメンド生成部160に供給してよい。
S610〜S680の処理により、発生時期推定部154は、時間間隔ごとの条件付き確率表における3以上イベントの間に含まれる2以上の時間間隔の発生確率の和又は積となる2以上の時間間隔であって、和が3以上のイベントの最初のイベントと最後のイベントの時間間隔を超えない2以上の時間間隔を、3以上のイベントの時間間隔として特定する。また、発生時期推定部154は、特定した時間間隔により対象者の未知のイベントが発生した時期を推定する。
このように、情報処理装置10は、S100〜S700の処理を実行することにより、公開された一次統計情報、及び、対象者の既知のイベントの情報に基づき、対象者について未知のイベントの発生の有無、及び、発生時期を推定することができる。これにより、情報処理装置10は、営業担当者が対象者からセンシティブなイベントに関する情報を取得できない場合でも、対象者に対して適切なレコメンドを行うことができる。
図16は、本発明の一実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有する。コンピュータ1900は、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びDVD−ROMドライブ2060を有する入出力部をも備える。コンピュータ1900は、入出力チップ2070を介して入出力コントローラ2084に接続されるキーボード2050及びROM2010を有するレガシー入出力部をも備える。ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000がRAM2020内に設けたフレーム・バッファ等上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000が生成する画像データを格納するフレーム・バッファ等を、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、及び、DVD−ROMドライブ2060とを接続する。通信インターフェイス2030は、ネットワークを介して他の電子装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。DVD−ROMドライブ2060は、DVD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、キーボード2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム等、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。キーボード2050は、テキストデータ又はコマンドをユーザから入力し、テキストデータ又はコマンドをRAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、キーボード2050を入出力コントローラ2084へと接続するとともに、パラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続してよい。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、DVD−ROM2095、及びICカード等の記録媒体によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
コンピュータ1900にインストールされたプログラムは、コンピュータ1900を図1に示す情報処理装置10等の装置として機能させてよい。このようなプログラムは、統計取得モジュール、確率算出モジュール、対象者情報取得モジュール、BN生成モジュール、イベント情報生成モジュール、発生有無推定モジュール、発生時期推定モジュール、及び、レコメンド生成モジュールを備えてよい。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、統計取得部110、確率算出部120、対象者情報取得部130、BN生成部140、イベント情報生成部150、発生有無推定部152、発生時期推定部154、及び、レコメンド生成部160のような、情報処理装置10のセクション、コンポーネント、エレメントとしてそれぞれ機能させてよい。
これらのプログラムに記述された情報処理は、図1の情報処理装置10のようなコンピュータ1900に読込まれることにより、プログラム又はモジュールと上記の様々な種類のハードウェア資源とが協働した結果である、統計取得部110、確率算出部120、対象者情報取得部130、BN生成部140、イベント情報生成部150、発生有無推定部152、発生時期推定部154、及び、レコメンド生成部160として機能する。そして、コンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、情報処理装置10が構築される。
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、及びDVD−ROM2095の記憶媒体上に設けた送信バッファ領域に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶媒体上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶媒体との間で送受信データを転送してもよく、これに代えて、CPU2000が転送先の記憶媒体又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶媒体へとデータを書き込むことにより送受信データを転送してもよい。
また、CPU2000は、ハードディスクドライブ2040、DVD−ROMドライブ2060(DVD−ROM2095)、キーボード2050(フレキシブルディスク2090)等の外部記憶媒体に格納されたファイルまたはデータベースのファイルの中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶媒体へと書き戻す。このような処理において、RAM2020は、外部記憶媒体の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020及び外部記憶媒体等をメモリ、記憶部、または記憶媒体、コンピュータ可読媒体等と総称する。
例えば、情報処理装置10の記憶部は、統計取得部110、確率算出部120、対象者情報取得部130、BN生成部140、イベント情報生成部150、発生有無推定部152、発生時期推定部154、及び、レコメンド生成部160から受け取った/へ提供するデータを適宜記憶してよい。例えば、記憶部は、統計取得部110が取得したイベントに関する統計データ、及び、BN生成部140がイベント情報生成部150に供給したBNSインスタンス等を受け取って記憶してよい。
本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部を利用して、キャッシュメモリ上でそこへ読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶媒体に含まれるものとする。
また、CPU2000は、RAM2020等のメモリから読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020等のメモリへと結果を書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすか否かを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
また、CPU2000は、記憶媒体内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶媒体に格納されている場合において、CPU2000は、記憶媒体に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
上記で説明したプログラム又はモジュールは、外部の記録媒体に格納されてよい。記憶媒体の例としては、DVD−ROM2095並びにブルーレイディスクまたはCD等の光学記録媒体、MO等の磁気光学記録媒体、テープ媒体、及び、ICカード等の半導体メモリを含む。更に、専用の通信ネットワーク又はインターネットに接続されたサーバシステムに設けられたハードディスクまたはRAM等の記録媒体は、記録媒体として使用されてよく、これにより、ネットワークを介してコンピュータ1900にプログラムが提供され得る。
実施形態に係る発明は、システム、方法、及び/又は、コンピュータプログラム製品であってよい。コンピュータプログラム製品は、プロセッサに実施形態に係る発明の各側面を実行させるためのコンピュータ可読プログラム命令を包含する、1又は複数のコンピュータ可読記録媒体を有してよい。
コンピュータ可読記録媒体は、命令実行装置により使用される命令を保持及び格納することができる有形の装置であってよい。記憶部を実装してよいコンピュータ可読記録媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁的記憶装置、半導体記憶装置、又は、これらの任意の適切な組み合わせであってよいが、これらに限定されるものではない。
コンピュータ可読記録媒体のより具体的な例の非網羅的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、イレーサブルプログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリーメモリ(CD−ROM)、デジタルバーサタイルディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、機械的にエンコードされた装置(例えば、パンチカード、又は、命令が記録された溝における隆起構造)、及び、これらの任意の適切な組み合わせを含む。ここで使用されるコンピュータ可読記録媒体は、電波又は他の自由に伝搬する電磁波、導波路又は他の伝送媒体を通じて伝搬する電磁波(例えば、ファイバ光ケーブルを通る光パルス)、又は、配線を通じて伝送される電子信号のように、それ自体が一時的な信号であると解釈されるものではない。
ここに記述されるコンピュータ可読プログラム命令は、外部のコンピュータ、又は、外部の記憶装置のコンピュータ可読記憶媒体から、計算/処理装置の各々に、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又は、ワイヤレスネットワーク)を通じてダウンロードされてよい。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、及び/又は、エッジサーバを有してよい。各計算/処理装置のネットワークアダプタカード又はネットワークインタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、当該コンピュータ可読プログラム命令を、各計算/処理装置内のコンピュータ可読記録媒体のストレージに転送する。
実施形態の発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、オブジェクト指向プログラミング言語(例えば、Smalltalk、C++等)、及び、従来の手続き型プログラミング言語(例えば、"C"プログラミング言語または類似のプログラミング言語)を含む、1又は複数のプログラミング言語の任意の組み合わせにより記述されたオブジェクトコード若しくはソースコードであってよい。コンピュータ可読プログラム命令は、スタンドアローンソフトウェアパッケージとして、部分的にユーザのコンピュータで実行され、完全にユーザのコンピュータで実行されてよい。また、コンピュータ可読プログラム命令は、部分的にユーザのコンピュータかつ部分的に遠隔コンピュータで実行され、完全に遠隔コンピュータまたはサーバに実行されてよい。
後者の場合においては、遠隔コンピュータは、ユーザのコンピュータと、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークで接続されていてよい。または、当該接続は、(例えば、インターネットサービスプロバイダを用いたインターネットを介して)外部のコンピュータとされていてもよい。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又は、プログラマブルロジックアレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を活用してコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズし、これにより実施形態に係る発明の各側面を実行してよい。
本発明の各側面は、発明の実施形態における方法、装置(システム)、及び、コンピュータプログラム製品に係る、フローチャート図および/またはブロック図への参照と共にここに記述される。フローチャート図および/またはブロック図の各ブロック、及び、フローチャート図および/またはブロック図の複数のブロックの組み合わせは、コンピュータ可読プログラム命令により実装され得ることが理解されるだろう。
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、又は、他のプログラム可能なデータ処理装置のプロセッサに提供されて機械を形成してよく、これにより、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート又はブロック図の一又は複数のブロックに特定される機能/動作を実装するための手段を形成する。
同様にこれらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能なデータ処理装置、及び/又は、他の装置に特定の態様で機能するように指示することができるコンピュータ可読記録媒体に格納されてよく、これにより、命令を内部に格納するコンピュータ可読記録媒体は、フローチャート又はブロック図の一又は複数のブロックに特定される機能/動作の各側面を実装する命令を含む製造物品を有する。
コンピュータ、他のプログラム可能な装置、又は他の装置で実行された命令がフローチャート又はブロック図の一又は複数のブロックに特定される機能/動作を実現するように、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、又は他の装置に読みだされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、又は他の装置において実行されて、コンピュータに実現されるプロセスが形成されてよい。
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態におけるシステム、方法、及び、コンピュータプログラム製品の可能な実装におけるアーキテクチャ、機能、及び、動作を記述する。この点について、フローチャート及びブロック図における各ブロックは、特定された一又は複数のロジック機能を実装するための1又は複数の実行可能命令を有する、命令のモジュール、セグメント、又は部分を表すものであってよい。
他のいくつかの代替的な実装においては、ブロックにおいて記述される機能は、図面に記載された順番とは異なって生じてよい。例えば、連続で表された2つのブロックは、実際には、実質的に同時に実行されてよく、または、これらのブロックは、内包する機能に応じて、ある場合に逆の順番で実行されてよい。ブロック図および/またはフローチャート図の各ブロック、及び、ブロック図および/またはフローチャート図の複数ブロックの組み合わせは、特定の機能又は動作を実行する専用ハードウェアに基づくシステム、又は、専用ハードウェア及びコンピュータ命令の組み合わせにより実装されてよいことに同様に留意されたい。
また、実施形態の説明において複数の要素が列挙された場合には、列挙された要素以外の要素を用いてもよい。例えば、「Xは、A、B及びCを用いてYを実行する」と記載される場合、Xは、A、B及びCに加え、Dを用いてYを実行してもよい。
本発明の実施形態が記述されたが、発明の技術的範囲は、上記記述された実施形態に限定されるものではない。当業者にとって、様々な代替及び改良が上記された実施形態に対してなされることが明らかである。そのような代替及び改良がなされた実施形態が特許請求の範囲に含まれることも、特許請求の範囲から明らかである。
特許請求の範囲、実施形態、又は、図面に示される装置、システム、プログラム、及び、方法により実行される各プロセスにおける動作、手続き、ステップ、及び、段階は、「先だって」、「前に」等により順番が示されず、前のプロセスの出力が後のプロセスで使用されない限り、任意の順番で実行され得る。特許請求の範囲、実施形態、又は、図面において、プロセスのフローが「最初に」または「次に」等の語句を用いて記述されていた場合であっても、必ずしも当該プロセスがこの順番で実行されなければならないことを意味しない。