(57)【特許請求の範囲】
【請求項１】
グラフデータストリーム内のオブジェクトをクラス化するための方法であって、前記グラフデータストリームは、エレメントを表わす複数のノードと、前記エレメント間の接続を表わすエッジとを含み、前記データストリーム内のオブジェクトは、ノードとそれらノード間のエッジとが一緒になったグループであり、前記方法は、
グラフデータの訓練ストリームを受信するステップであって、前記訓練ストリームは、複数のオブジェクトを前記オブジェクトの各々に関連付けられたクラスラベルと共に含むものである、ステップと、
前記クラスラベルについて前記訓練ストリーム内の判別エッジ集合を決定するステップであって、前記判別エッジ集合は、所与のクラスラベルを有するエッジを含むオブジェクトを示すものである、第１の決定ステップと、
前記グラフデータの着信データストリームを受信するステップであって、クラスラベルがまだ、前記着信データストリーム内の前記オブジェクトに割り当てられていない、ステップと、
前記判別エッジ集合に基づいて、前記着信データストリーム内の前記オブジェクトに関連付けられるクラスラベルを決定する、第２の決定ステップと、
前記第２の決定ステップに基づくオブジェクトとクラスラベルの対を情報リポジトリに出力するステップと
を含み、
前記方法はプロセッサを用いて実行され、
前記第１の決定ステップは、
前記訓練ストリームの第１の着信エッジを２次元（２Ｄ）データ構造内に配置するステップであって、前記２Ｄデータ構造の行が、前記訓練ストリームの異なるグラフに対応し、前記２Ｄデータ構造の列が、前記訓練ストリームの異なるエッジを表す、ステップと、
前記２Ｄデータ構造の各々の行及び列内の前記エッジについて、ｍｉｎ−ｈａｓｈ関数を用いて生成されるハッシュ値を生成するステップと、
相関エッジ集合を識別するステップであって、相関エッジ集合は、前記訓練データ内の特定のオブジェクトに関連したエッジの集合であり、同じｍｉｎ−ｈａｓｈ値を有するエッジの集合が相関エッジ集合である、識別ステップと、
クラスラベルを前記相関エッジ集合に割り当てて、前記判別エッジ集合を得るステップであって、特定の相関エッジ集合に割り当てられるクラスラベルが、前記相関エッジ集合の優勢クラスラベルである、割当ステップと、
を含む、方法。
【請求項２】
異なるオブジェクトの前記エッジが、前記グラフデータ内に順序が乱れて出現する、請求項１に記載の方法。
【請求項３】
前記第１の決定ステップが、
前記判別エッジ集合をそれらの所与のクラスラベルと共にデータセット内に格納するステップであって、前記データセットが、ディスク上又は主コンピュータメモリ内に格納される、格納ステップを含む、請求項１に記載の方法。
【請求項４】
前記２Ｄデータ構造が、前記主コンピュータメモリ内に格納される、請求項３に記載の方法。
【請求項５】
前記訓練ストリームの第２の着信エッジを受信するステップと、
前記２Ｄデータ構造の各々の行及び列内の前記エッジについて、新たなハッシュ値を生成するステップと、
前記新たなハッシュ値に基づいて、前記２Ｄデータ構造のインデックス及び値を更新するステップと、
前記更新された２Ｄデータ構造を用いて、前記識別ステップ、前記割当ステップ、及び前記格納ステップを繰り返すステップと
をさらに含む、請求項３に記載の方法。
【請求項６】
グラフデータストリーム内のオブジェクトをクラス化するための方法であって、前記グラフデータストリームは、エレメントを表わす複数のノードと、前記エレメント間の接続を表わすエッジとを含み、前記データストリーム内のオブジェクトは、ノードとそれらノード間のエッジとが一緒になったグループであり、前記方法は、
グラフデータの訓練ストリームを受信するステップであって、前記訓練ストリームは、複数のオブジェクトを前記オブジェクトの各々に関連付けられたクラスラベルと共に含むものである、ステップと、
前記クラスラベルについて前記訓練ストリーム内の判別エッジ集合を決定するステップであって、前記判別エッジ集合は、所与のクラスラベルを有するエッジを含むオブジェクトを示すものである、第１の決定ステップと、
前記グラフデータの着信データストリームを受信するステップであって、クラスラベルがまだ、前記着信データストリーム内の前記オブジェクトに割り当てられていない、ステップと、
前記判別エッジ集合に基づいて、前記着信データストリーム内の前記オブジェクトに関連付けられるクラスラベルを決定する、第２の決定ステップと、
前記第２の決定ステップに基づくオブジェクトとクラスラベルの対を情報リポジトリに出力するステップと
を含み、
前記方法はプロセッサを用いて実行され、
前記第１の決定ステップは、
前記訓練ストリームの第１の着信エッジを２Ｄデータ構造内に配置するステップであって、前記２Ｄデータ構造の行が、前記訓練ストリームの異なるグラフに対応し、前記２Ｄデータ構造の列が、前記訓練ストリームの異なるエッジを表す、ステップと、
前記２Ｄデータ構造の列を、第１のハッシュ関数を用いて擬似列にマッピングするステップであって、各々の擬似列がその中にマッピングされた複数の列を含む、ステップと、
前記２Ｄデータ構造の各々の行及び擬似列内の前記エッジについて、ｍｉｎ−ｈａｓｈ関数を用いて生成されるハッシュ値を生成するステップと、
相関エッジ集合を識別するステップであって、相関エッジ集合は、前記訓練データ内の特定のオブジェクトに関連したエッジの集合であり、同じｍｉｎ−ｈａｓｈ値を有するエッジの集合が相関エッジ集合である、識別ステップと、
クラスラベルを前記相関エッジ集合に割り当てて、前記判別エッジ集合を得るステップであって、特定の相関エッジ集合に割り当てられるクラスラベルが、前記相関エッジ集合の優勢クラスラベルである、割当ステップと、
前記判別エッジ集合をそれらの所与のクラスラベルと共にデータセット内に格納するステップであって、前記データセットが、ディスク上又は主コンピュータメモリ内に格納される、格納ステップと
を含む、方法。
【請求項７】
前記２Ｄデータ構造が、前記主コンピュータメモリ内に格納される、請求項６に記載の方法。
【請求項８】
前記訓練ストリームの第２の着信エッジを受信するステップと、
前前記第２の着信エッジが配置された前記２Ｄデータ構造の列を、前記第１のハッシュ関数を用いて擬似列にマッピングするステップと、
前記２Ｄデータ構造の各々の行及び擬似列内の前記エッジについて、新たなハッシュ値を生成するステップと、
前記新たなハッシュ値に基づいて、前記２Ｄデータ構造のインデックス及び値を更新するステップと、
前記更新された２Ｄデータ構造を用いて、前記識別ステップ、前記割当ステップ、及び前記格納ステップを繰り返すステップと
をさらに含む、請求項６に記載の方法。
【請求項９】
前記第２の決定ステップが、
前記着信データストリーム内の特定のオブジェクトについて、（ａ）前記クラスラベルについての前記訓練ストリーム内の前記判別エッジ集合が格納されたメモリにアクセスし、（ｂ）前記オブジェクトに対応する判別エッジ集合を見つけ出すステップと、
これらの前記判別エッジ集合の優勢クラスラベルを前記オブジェクトのクラスラベルとして割り当てるステップと
を含む、請求項１に記載の方法。
【請求項１０】
前記着信データストリーム内のユーザ定義パターンを見つけ出すことを求める要求を受け取るステップと、
前記ユーザ定義パターンのパラメータに対応する、前記情報リポジトリ内に格納されたオブジェクトとクラスラベルの対を検索するステップと、
検索結果をユーザに表示するステップと
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記ユーザ定義パターンが、ソーシャル・ネットワークにおける特定の時間窓の中でのユーザの通信パターン、ウェブグラフのユーザが特定のウェブページに入るときの閲覧パターン、又は通信ネットワーク上の侵入トラフィックを含む、請求項１０に記載の方法。
【請求項１２】
前記グラフデータが、ウェブグラフ、ソーシャル・ネットワーク又は通信ネットワークから提供される、請求項１に記載の方法。
【請求項１３】
前記ウェブグラフのノードは、ユニフォーム・リソース・ロケータ（ＵＲＬ）アドレスを含み、前記ウェブグラフのエッジは、前記ＵＲＬアドレス間のリンクを含み、前記ソーシャル・ネットワークのノードは、ユーザ識別子を含み、前記ソーシャル・ネットワークのエッジは、前記ユーザ識別子間のリンクを含み、又は、前記通信ネットワークのノードは、インターネット・プロトコル（ＩＰ）アドレスを含み、前記通信ネットワークのエッジは、前記ＩＰアドレス間のリンクを含む、請求項１２に記載の方法。
【請求項１４】
グラフデータストリーム内のオブジェクトをクラス化するためのコンピュータ・プログラム製品であって、前記グラフデータストリームは、エレメントを表わす複数のノードと、前記エレメント間の接続を表わすエッジとを含み、前記データストリーム内のオブジェクトは、ノードとそれらノード間のエッジとが一緒になったグループであり、
前記コンピュータ・プログラム製品は、コンピュータ可読プログラム・コードを有するコンピュータ可読な記憶媒体を備え、前記コンピュータ可読プログラム・コードは、
グラフデータの訓練ストリームを受信するステップであって、前記訓練ストリームは、複数のオブジェクトを前記オブジェクトの各々に関連付けられたクラスラベルと共に含むものである、ステップと、
前記クラスラベルについて前記訓練ストリーム内の判別エッジ集合を決定するステップであって、前記判別エッジ集合は、所与のクラスラベルを有するエッジを含むオブジェクトを指し示すものである、第１の決定ステップと、
前記グラフデータの着信データストリームを受信するステップであって、前記着信データストリーム内の前記オブジェクトにはまだクラスラベルが割り当てられていない、ステップと、
前記判別エッジ集合に基づいて、前記着信データストリーム内の前記オブジェクトに関連付けられるクラスラベルを決定する、第２の決定ステップと、
前記第２の決定ステップに基づくオブジェクトとクラスラベルの対を情報リポジトリに出力するステップと
を含み、
前記第１の決定ステップは、
前記訓練ストリームの第１の着信エッジを２次元（２Ｄ）データ構造内に配置するステップであって、前記２Ｄデータ構造の行が、前記訓練ストリームの異なるグラフに対応し、前記２Ｄデータ構造の列が、前記訓練ストリームの異なるエッジを表す、ステップと、
前記２Ｄデータ構造の各々の行及び列内の前記エッジについて、ｍｉｎ−ｈａｓｈ関数を用いて生成されるハッシュ値を生成するステップと、
相関エッジ集合を識別するステップであって、相関エッジ集合は、前記訓練データ内の特定のオブジェクトに関連したエッジの集合であり、同じｍｉｎ−ｈａｓｈ値を有するエッジの集合が相関エッジ集合である、ステップと、
クラスラベルを前記相関エッジ集合に割り当てて、前記判別エッジ集合を得るステップであって、特定の相関エッジ集合に割り当てられるクラスラベルが、前記相関エッジ集合の優勢クラスラベルである、ステップと、
を含む、コンピュータ・プログラム製品。
【請求項１５】
前記第１の決定ステップは、
前記判別エッジ集合をそれらの所与のクラスラベルと共にデータセット内に格納するステップを含む、請求項１４に記載のコンピュータ・プログラム製品。
【請求項１６】
単一の一様乱数ハッシュ値が各行について生成され、総ての列が前記ハッシュ値の順序によりソートされる、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模（ｍａｓｓｉｖｅ）グラフストリームのクラス化に関する。
【背景技術】
【０００２】
機械学習において、クラス化は、入力オブジェクトに対してクラスラベルを割り当てることである。クラス化は、化学的及び生物学的なデータ、ウェブ並びに通信ネットワークのような多数の領域を背景として生じる。一例として、ウェブクエリのトピックのクラス化／カテゴリ化は、ウェブ検索クエリ（例えば、入力オブジェクト）を、そのクエリのトピックに基づいて、１つ又は複数の事前定義されたカテゴリ（例えば、クラスラベル）に割り当てることを扱う。例えば、ウェブクエリ「ａｐｐｌｅ」を発行したユーザは、果物のリンゴに関係したウェブページを見ようとしているかもしれないし、又はコンピュータ会社に関係した製品若しくはニュースを見る方を好むかもしれない。検索結果ページは、クエリクラス化アルゴリズムにより予測されたカテゴリに従ってグループ化することができる。
【０００３】
化学的データ、生物学的データ及びウェブのような多くのデータ領域は、グラフとして構造化される。化学的及び生物学的領域においては、グラフのノードは、比較的少ない可能性のベースから引き出されたものであり、データセットは比較的小さいサイズであると想定される。一方で、ウェブグラフ、通信ネットワーク、及びソーシャル・ネットワークは、根底にある大規模なノード領域上で定義されたものであり得る。１０７を超えるノードを有するグラフは、１０１３ものエッジを含むことがあり、それゆえ大規模であるとみなすことができる。ノードは、ウェブグラフにおけるＵＲＬアドレス、通信ネットワークにおけるＩＰアドレス、又はソーシャル・ネットワークにおけるユーザ識別子に対応するものとすることができる。ＵＲＬアドレス、ＩＰアドレス及びユーザ識別子の間のリンクがエッジである。
【０００４】
ストリーミング・アプリケーションにおいては、ある外部環境内で生成されたデータが、この情報を処理するサーバに非同期的にプッシュされる。ストリーミング・アプリケーションは、大容量のデータストリームをタイムリーで応答性に優れた方式で処理する能力により特徴付けられる。大規模グラフストリームは、ソーシャル・ネットワークにおけるユーザの通信パターン、全てのユーザの閲覧パターン、又は通信ネットワーク上の侵入トラフィックを含むことができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｒｏｇｅｒ  Ｒｅａ及びＫｒｉｓｈｎａ  Ｍａｍｉｄｉｐａｋａ著「ＩＢＭ  ＩｎｆｏＳｐｈｅｒｅ  Ｓｔｒｅａｍｓ，  Ｒｅｄｅｆｉｎｉｎｇ  Ｒｅａｌ  Ｔｉｍｅ  Ａｎａｌｙｔｉｃｓ」２０１０年２月発行
【非特許文献２】Ｇｅｄｉｋ他著、「ＳＰＡＤＥ：Ｓｙｓｔｅｍ  Ｓ  Ｄｅｃｌａｒａｔｉｖｅ  Ｓｔｒｅａｍ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅ」、ＳＩＧＭＯＤ、２００８年６月９日−１２日、１１２３−１１３４ページ
【非特許文献３】Ｈｉｒｚｅｌ他著、「ＳＰＬ  Ｓｔｒｅａｍ  Ｐｒｏｃｅｓｓｉｎｇ  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」、ＩＢＭ（登録商標）Ｒｅｓｅａｒｃｈ  Ｒｅｐｏｒｔ、ＲＣ２４８９７（Ｗ０９１１−０４４）、２００９年１１月５日
【発明の概要】
【発明が解決しようとする課題】
【０００６】
大規模グラフがストリーム形態である場合には、そのことが、将来的な解析のために構造情報をマイニングするために用いることができるアルゴリズムの種類を制限する。例えば、ストリームであるという制約条件は、データ上で１つのパスしか許容しない。さらに、グラフのエッジは、データストリーム内で順序が乱れて到着することがある。グラフのサイズが大規模であることで、クラス化に関連した情報の効果的な抽出にとっての難題も生じる。例えば、グラフデータ内の多数の相異なるエッジに関する集計情報を格納することは困難である。さらに、構造的挙動は多数の相異なるエッジの組合せによって支配されるので、部分構造決定問題の複雑度の指数関数的増大は、部分構造のカーディナリティが増すにつれて非常に速く増大する。このような場合、頻度判別的部分グラフの決定は、計算的にも空間的にも非実用的な程度まで非効率的になることがある。
【課題を解決するための手段】
【０００７】
本発明の例示的な実施形態は、グラフデータストリーム内のオブジェクトをクラス化するための方法及びコンピュータ・プログラム製品を提供する。
【０００８】
グラフデータストリームは、エレメントを表わす複数のノードと、エレメント間の接続を表わすエッジとを含むことができる。データストリーム内のオブジェクトは、ノードとそれらのノード間のエッジとが一緒になったグループとすることができる。例示的な方法において、グラフデータの訓練ストリームが受信され、この訓練ストリームは、複数のオブジェクトをそれらオブジェクトの各々に関連付けられたクラスラベルと共に含む。クラスラベルについて訓練ストリーム内の判別エッジ集合（例えば、部分グラフ）が決定され、ここで判別エッジ集合は、所与のクラスラベルを有するエッジを含むオブジェクトを指し示すもの（しかし、直接対応するものではない）である。次にグラフデータの着信データストリームが受信されるが、着信データストリーム内のオブジェクトにはまだクラスラベルは割り当てられていない。判別エッジ集合に基づいて、着信データストリーム内のオブジェクトに関連付けられるクラスラベルが決定される。第２の決定に基づいたオブジェクト−クラスラベル対が、情報リポジトリに出力される。
【図面の簡単な説明】
【０００９】
【図１】大規模グラフの一部を示す。
【図２】本発明の例示的な実施形態による、グラフデータストリーム内のオブジェクトをクラス化するための方法のフローチャートを示す。
【図３】本発明の例示的な実施形態による、グラフデータストリームの各着信エッジについてｍｉｎ−ｈａｓｈインデックスを更新するためのアルゴリズムを示す。
【図４】図３に示されるアルゴリズムの一部に対応するフローチャートを示す。
【図５】本発明の例示的な実施形態による、列圧縮を伴う、グラフデータストリームの各着信グラフについてｍｉｎ−ｈａｓｈインデックスを更新するためのアルゴリズムを示す。
【図６】図５に示されるアルゴリズムの一部に対応するフローチャートを示す。
【図７】本発明の例示的な実施形態を実装するための装置を示す。
【発明を実施するための形態】
【００１０】
本発明の例示的な実施形態による、グラフデータストリーム内のオブジェクトをクラス化するための方法を以下説明する。グラフデータストリームは、大規模なものとすることができる。オブジェクトは、ウェブサーフィンのパターンを識別するグラフのノード及びエッジを含むことができる。例えば、訪問したウェブサイトがノードであり、１つのウェブページから別のウェブページへのパスがエッジである。したがって、ページ１の次にページ２へ、その次にページ３へと訪問するユーザは、ある特定の特性を有していそうな（すなわち、特定の本を購入しそうな）人である。本発明は、そのようなパターンを識別し、次いで、これらのパターンに、関連したラベルを割り当てることを目的とする。
【００１１】
このことを達成するために、グラフデータの訓練ストリーム内に存在する判別的（ｄｉｓｃｒｉｍｉｎａｔｉｖｅ）部分グラフを最初に決定し、次いでクラスラベルを与える。簡単に言えば、着信データを小空間に縮小する２次元（２Ｄ）ハッシュ圧縮技術を用いて相関エッジ集合を決定する。次いで相関エッジ集合について優勢クラスラベルを決定し、この優勢クラスラベルをそれぞれの部分グラフに対して最終的なクラスラベルとして与えて、判別的部分グラフを得る。次にこの判別的部分グラフを用いて、検定グラフストリーム内のオブジェクトのクラスラベルを推論することができる。例えば上述のウェブサーフィンのパターンを反映したオブジェクトを含む検定グラフストリームがストリーム・プロセッサにおいて受信される場合には、判別的部分グラフとそれらの関連付けられたクラスラベルとを含むメモリにアクセスして、着信オブジェクトに対応する部分グラフを見つけ出すことができる。着信オブジェクトが対応する部分グラフのクラスラベルが、そのオブジェクトに与えられる。この場合、クラスラベルは、そのオブジェクトが特定の本を購入しそうなユーザのパターンに対応することを示すことができる。
【００１２】
図１は、大規模グラフの一部を示す。この例では、ウェブグラフ１００が示されている。しかしながら、大規模グラフは、通信ネットワーク、ソーシャル・ネットワーク等のグラフとすることができる。図１に示されるように、ウェブグラフ１００は、複数のノードＡ−Ｐ及びエッジ（すなわちノード間の矢印）を含む。ウェブグラフ１００は、例えば、１０７を超えるノード及び１０１３を超えるエッジを含むことがあるので、図１にはウェブグラフ１００の一部しか示されていない。ウェブグラフ１００のノードＡ−Ｐは、ウェブページを表わすことができ、ウェブグラフ１００のエッジは、ウェブページ間のハイパーリングを表わすことができる。ウェブグラフ１００のリンク構造は、様々なデータマイニング目的で利用することができる豊富な情報を保持する。例えば、マイニングを通じて識別されたウェブ閲覧パターンは、脅威をクラス化してテロリズムと戦うために政府が用いることもでき、又は、顧客が正に必要とするものを供給することによってより良い顧客との関係を確立するために会社が用いることもできる。
【００１３】
図２は、本発明の例示的な実施形態による、グラフデータストリーム内のオブジェクトをクラス化するための方法のフローチャートである。再び図１を参照すると、オブジェクトは、ノードＡ−Ｐとそれらのエッジとが一緒になったグループとすることができる。例えば、オブジェクトは、ノードＡ及びＢをそれらの間の単一のエッジと共に含むことができ、又は、より多くのノードとそれらの間のエッジとを含むこともできる。
【００１４】
図２に示されるように、ストリーム・プロセッサは、ウェブグラフ１００からデータの訓練ストリームを受信する（２１０）。ストリーム・プロセッサは、ニューヨーク州アーモンク（Ａｒｍｏｎｋ）のインターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＩｎｆｏＳｐｈｅｒｅ  Ｓｔｒｅａｍｓ（登録商標）（以前はＳｙｓｔｅｍ  Ｓとして知られていた）のような実時間ストリーム処理プラットフォームを実行することができるコンピューティング環境とすることができる。ＩｎｆｏＳｐｈｅｒｅ  Ｓｔｒｅａｍｓ（商標）に関する詳細は、例えば、非特許文献１を含む種々のＩＢＭ（商標）の刊行物で提供される。ＩｎｆｏＳｐｈｅｒｅ  Ｓｔｒｅａｍｓ（商標）プラットフォームは、ストリーム処理言語（ＳＰＬ：Ｓｔｒｅａｍ  Ｐｒｏｃｅｓｓｉｎｇ  Ｌａｎｇｕａｇｅ、以前はＳＰＡＤＥとして知られていた）と呼ばれる高水準プログラミング言語を用いる。ＳＰＡＤＥは、非特許文献２で説明されている。ＳＰＬに関するさらなる詳細は、非特許文献３で説明されている。ＩｎｆｏｒＳｐｈｅｒｅ  Ｓｔｒｅａｍｓ（商標）及びストリーム処理言語は、多数の演算ノードに及ぶことがある分散データストリーム処理アプリケーションをサポートする。ストリーム処理言語の宣言型言語は、一例において、これらの多重オペレータ・アプリケーションをプログラムするために用いられる。ストリーム処理言語のストリーム中心の設計は、基本ビルディングブロックがストリームである言語を含意する。ストリーム処理言語のオペレータベースのプログラミングは、あるアプリケーションがその実行のために設計された演算を供給するのに必要とされる可能な限り最小限のビルディングブロックに基づいて、アプリケーションを設計することに焦点を合わせている。
【００１５】
ステップ２１０において受信されたグラフデータの訓練ストリームは、複数のオブジェクトをこれらのオブジェクトに関連付けられたクラスラベルと共に含む。ストリーム内の個々のオブジェクトは、グラフＧ１．．ＧＮ．．．で示すことができる。各グラフＧｉは、｛１．．．ｍ｝から引き出されるクラスラベルＣｉに関連付けられる。ウェブグラフは、ノード集合Ｎにわたって定義することができる。ストリーム内のデータは、順々にストリーム・プロセッサに到着する。例えば、データは、〈ＧｒａｐｈＩｄ〉〈Ｅｄｇｅ〉〈ＣｌａｓｓＬａｂｅｌ〉のように到着することができる。ストリーム内で、クラスラベルは常にグラフ識別子に添付されていると仮定する。グラフＧｉのエッジは、ストリーム内で順序が乱れて出現することがある。これは、ソーシャル・ネットワーク及び通信ネットワークのような多くのアプリケーションでは一般によくあることであり、その理由は、異なるエッジを横断してメッセージ及び通信の順序を制御することができないからである。変数〈Ｅｄｇｅ〉の値は、その２つの構成ノードにより定義される。
【００１６】
ストリーム内のデータのうちの幾つかの例として、ネットワーク侵入アプリケーションを考えると、この場合、識別子は侵入が生じたタイムスタンプに対応する。侵入は、部分グラフに対応するエッジ集合を誘導することができる。したがって、グラフの識別子は、タイムスタンプとすることができる。エッジは、攻撃者と犠牲者の送信元及び宛先のＩＰアドレスを含むことができる。クラスラベルは、侵入のタイプとすることができる（例えば「サービス妨害」攻撃）。
【００１７】
グラフデータの訓練ストリームの受信に応答して、訓練ストリーム内の判別エッジ集合（例えば、部分グラフ）がクラスラベルについて決定される（２２０）。このステップにおいて、最初に相関エッジ集合を見つけ出し、次にこれらにクラスラベルを与えて、判別エッジ集合を得る。例えば、対応する共起エッジ（グループとして）の存在が統計的に期待されるよりはるかに高い部分グラフが、最初に見つけ出される。そのような部分グラフは、以下の議論において、有意な部分グラフと呼ばれる。次に、特定のクラスに対して判別的な部分グラフが決定される。
【００１８】
相関エッジ集合を見つけ出し、これにクラスラベルを与えて判別エッジ集合を得る方法を検討する前に、幾つかの関連した注釈及び定義をここで紹介する。
【００１９】
有意な部分グラフＰは、その構成エッジの相対度数に関して有意な統計的存在を有するものとして定義される。これは、エッジ・コヒーレンスと呼ばれる。この概念は、形式上、以下のように定義される。ｆ∩（Ｐ）を、Ｇ１．．．ＧＮのうち、Ｐの全てのエッジが存在するグラフの分率とする。ｆ∪（Ｐ）を、Ｐのエッジのうちの少なくとも１つ又は複数が存在するグラフの分率とする。すると、部分グラフＰのエッジ・コヒーレンスＣ（Ｐ）は、ｆ∩（Ｐ）／ｆ∪（Ｐ）で表される。
【００２０】
このエッジ・コヒーレンスの定義は、部分グラフパターンの絶対存在ではなく、むしろ相対存在に焦点を合わせたものである。このことは、有意な部分グラフだけが見つけ出されることを保証する。このことは、度数は高いが有意性は低い多数の関連性のないパターンは考慮されないこともまた保証する。
【００２１】
クラスラベルｒ∈｛１．．．ｍ｝に関するエッジ集合Ｐのクラス信頼度は、以下のように定義される。部分グラフＰを含む全てのグラフの中で、ｓ（Ｐ，ｒ）を、クラスラベルｒに属する分率とする。この分率は、クラスｒに関するパターンＰの信頼度である。
【００２２】
次いで、特定の部分グラフについての優勢クラス信頼度は、以下のように定義される。優勢クラス信頼度ＤＩ（Ｐ）又は部分グラフＰは、全ての異なるクラス｛１．．．ｍ｝にわたる最大クラス信頼度として定義される。特定の検定インスタンスについてのＤＩ（Ｐ）の有意に大きい値は、そのパターンＰがクラス化にとって非常に関連性のあるものであること、及び、対応する優勢クラスラベルがその検定インスタンスのラベルの魅力的な候補となり得ることを示している。
【００２３】
絶対存在の点で興味深い、特定のクラスについて判別的な部分グラフを決定するために、エッジ・コヒーレンス及びクラス興味率（ｃｌａｓｓ  ｉｎｔｅｒｅｓｔ  ｒａｔｉｏ）に対する閾値パラメータに対応する、パラメータ対（α，θ）も用いられる。部分グラフＰは、以下の２つのエッジ・コヒーレンス及びクラス判別の制約条件を満たすならば、（α，θ）有意であるといわれる。部分グラフＰのエッジ・コヒーレンスＣ（Ｐ）が少なくともαであること。すなわち、Ｃ（Ｐ）＞α。優勢クラス信頼度ＤＩ（Ｐ）が少なくともθである。すなわち、ＤＩ（Ｐ）＞θ。
【００２４】
相関エッジ集合を見つけ出すために、本発明の例示的な実施形態によれば、２Ｄハッシュ圧縮技術が用いられる。この技術は、クラス化に最も関連した判別的部分グラフを決定することができる連続的に更新可能なデータ構造を使用する。このデータ構造は小さいので、主メモリ内で維持することができ、着信データストリームが到着している間の任意の時点で用いることができる。
【００２５】
議論を簡単にするために、データ構造は、グラフデータセットのＮ行ｎ列の表形式の二進表現とすることができる。Ｎ行は、データ内に存在するＮ個の異なるグラフに対応する。列は、データ内の異なるエッジを表わすが、これは１対１写像ではない。ｎの選択は、主メモリ内で表を保持するのに利用可能な空間に依存する。２つの２Ｄハッシュ圧縮技術を、本発明に従って用いることができる。１つは、ｍｉｎ−ｈａｓｈ圧縮を行に対してのみ用いる技術であり、各列は相異なるエッジに対応する。もう１つは、従来のハッシュ関数を用いることにより複数の列を単一の列にマッピングし、次に、ｍｉｎ−ｈａｓｈ圧縮を行に対して用いる技術である。
【００２６】
ここで第１の技術について論じる。
【００２７】
このｍｉｎ−ｈａｓｈスキームの主たる思想は、データ内の行に対するソート順序を用いることにより、異なる列上の値における共起性を決定することである。このソート順序を作り出すために、単一の一様乱数ハッシュ値が、データ内の各行について生成される。データ内の全ての列は、このハッシュ値の順序によりソートされる。このような手法の結果として、各列は全く同じランダムな順序でソートされることになることに留意されたい。それゆえ、以下のことを観察することができる。
【００２８】
Ｐエッジの集合を考える。Ｐ’を、Ｐに対応する表内の列とする。列は、ハッシュ値によりソートされた順序で検査される。１の値を有するＰ’内の各列についての第１の行のインデックスが同じである確率は、エッジ・コヒーレンスＣ（Ｐ）に等しい。
【００２９】
Ｐ’内の列のうちのいずれかの中に１を有する第１の行のインデックスは、Ｐ’のエッジのうちのいずれかが存在する第１の行でもあるので、上記の観察は検証が簡単である。この行が、関連した列にわたって全て１の値を含む確率が、エッジ・コヒーレンス確率Ｃ（Ｐ）である。
【００３０】
この手法を用いて、エッジ・コヒーレンス確率の標本推定を構築することができる。例えば、ｋ個の異なるハッシュ値を用いてソート順序を構築することができ、上記の確率は、全ての値が１であるｋ個の標本の分率を計算することによって推定することができる。
【００３１】
ここで、完全な表の使用を伴う第１の技術の実施を検討する。この場合、表がＥ個の列を有すると仮定すると、Ｅ＝Ｎ・（Ｎ−１）／２が、データ内の可能な相異なるエッジの数である。ｍｉｎ−ｈａｓｈインデックスを用いて、根底にあるデータのトランザクション表現を構築する。これを行うために、最初にｋ個の異なるハッシュ値を用いたｍｉｎ−ｈａｓｈ手法を適用し、サイズｋ×Ｅの表を作成する。ここで、このｍｉｎ−ｈａｓｈ表現からの特定の標本を検査する。ｒ１．．．ｒＥを、対応する列内に１を有する第１の行の行インデックスとする。次に、集合ｒ１．．．ｒＥを、ｍｉｎ−ｈａｓｈインデックス値が同じであるグループに分割する。したがって、ｒ１．．．ｒＥがＱ１．．．Ｑｈに分割されたならば、各ｒｉ∈Ｑｊは同じ値を有する（一定のｊについて）。各分割Ｑｊについて、対応する列のインデックスを含むカテゴリ的トランザクションを作成する。例えば、Ｑｊ＝｛ｒ２，ｒ２３，ｒ４５，ｒ７１｝ならば、トランザクションＴｊ＝｛２，２３，４５，７１｝を作成する。最後に、等インデックス分割Ｑ１．．．Ｑｈに対応するトランザクションＴ１．．．Ｔｈを構築する。各インデックス集合は対応するトランザクション集合を作成するので、この標本抽出プロセスをｋ回繰り返してｋ個の異なるインデックス集合を作成することにより、推定プロセスの精度を高めることができる。例えば、各インデックス集合について、対応するトランザクション集合を全トランザクション集合Ｔに加える。以下の観察がなされる。
【００３２】
Ｔを、ｍｉｎ−ｈａｓｈインデックス集合から構築されたトランザクションとする。すると、エッジ集合Ｐのコヒーレンス確率Ｃ（Ｐ）は、トランザクション集合ＴにおけるＰ’の絶対台（ａｂｓｏｌｕｔｅ  ｓｕｐｐｏｒｔ）をｋで割ったものとして推定することができる。高いコヒーレンス確率Ｃ（Ｐ）を有するエッジが、相関エッジ集合であると決定される。
【００３３】
この観察は、従来の観察の直接的拡張である。なぜなら、列集合Ｐ’は、Ｔ１．．．Ｔｈ内のトランザクションを、Ｐ’内のエッジのｍｉｎ−ｈａｓｈインデックスが、該トランザクションがそこから構築された対応するｍｉｎ−ｈａｓｈ標本内で同一であるときかつそのときに限り、支持するからである。
【００３４】
特定のグラフ内のエッジの存在を表わす表の行は、所与の時点で利用可能でないことがあることに留意されたい。なぜなら、所与のグラフについてのエッジは、ストリームシナリオにおいては連続的に到着しない場合があるからである。さらに、データは典型的に非常に疎であり、表内の大部分の値は０である。したがって、本発明は、疎な無順序のエッジと共に機能することができる新規な更新プロセスを使用する。このプロセスの例は、図３のアルゴリズム３００によって示される。
【００３５】
図３に示されるように、ストリーム内の各々の着信グラフエッジｅ∈Ｇ（グラフ識別子Ｉｄ（Ｇ）を有する）について、ｋ個のランダムハッシュ値ｈ（１，Ｉｄ（Ｇ））．．．ｈ（ｋ，Ｉｄ（Ｇ））が生成される。ｉ番目のハッシュ値ｈ（ｉ，Ｉｄ（Ｇ））は、ｐｉで表される。ハッシュ関数ｈ（・，・）は、入力としてＩｄ（Ｇ）を用いるので、ストリーム内の後の段階において同じグラフＧからのエッジに遭遇したときに、同じランダムハッシュ値を生成することができる。ランダムハッシュ値を生成するために、ｈ（・，・）の２つの引数に対応する文字列の連接に対して、標準的なハッシュ関数を用いることができる。
【００３６】
Ｌを、ストリーム内で今までに遭遇した相異なるエッジの数の実行中推定（ｒｕｎｎｉｎｇ  ｅｓｔｉｍａｔｅ）とする。アルゴリズム３００は、ｋ・Ｌ個の実行中最小ハッシュ値の集合Ｖを、これらの最小値が得られたｋ・Ｌ個の対応するグラフ識別子の集合Ｉと共に維持する。Ｌの値は、データストリームの進行中に、ますます多くの相異なるエッジがストリームによって受信されるので、増加する。Ｖ内の各エントリは（ｅ，ＭｉｎＨａｓｈＶａｌｕｅ）の形式であり、Ｉ内の各エントリは（ｅ，ＧｒａｐｈＩｄｅｎｔｉｆｉｅｒ）の形式である。データストリーム内で今までに遭遇した各々の相異なるエッジについて、Ｖ及びＩの両方の中にこのようなｋ個のエントリが存在する。各エッジｅについて、Ｖ内のｉ番目の最小ハッシュ標本は、ｅを含む全グラフＧ上でのｈ（ｉ，Ｉｄ（Ｇ））の最小値を表わす。特定のエッジｅについてのＩ内のｋ個のエントリは、Ｖ内のこれら最小ハッシュ値が得られたｋ個のグラフ識別子を表わす。
【００３７】
ストリーム内のエッジは、順序が乱れて出現することがあるので、アルゴリズム３００の適用により、各エッジは、ストリーム内で自身に対応するグラフ識別子に関連付けられる。この場合、各々の着信エッジｅ及びグラフ識別子Ｉｄ（Ｇ）について、集合Ｖ及びＩは、アルゴリズム３００によって以下のように更新される。ｋ個の異なるハッシュ値ｐｌ＝ｈ（１，Ｉｄ（Ｇ））．．．ｐｋ＝ｈ（ｋ，Ｉｄ（Ｇ））を生成する。今までにエッジｅに遭遇していない場合には、その情報はＶ及びＩ内に存在しないことになる。そのような場合には、Ｌの値を増やし、ｅについての対応するエントリをＶ及びＩの中にそれぞれ含める。具体的には、この新たに追跡されるエッジについてのＶ内のｋ個のハッシュ値が、最近生成されたｋ個のハッシュ値ｐ１．．．ｐｋに設定される。したがって、エントリ（ｅ，ｐ１）．．．（ｅ，ｐｋ）が、Ｖの中に含められる。これに対応して、エントリ（ｅ，Ｉｄ（Ｇ））．．．（ｅ，Ｉｄ（Ｇ））が、Ｉに追加される。一方、ストリーム内で既にエッジｅに遭遇している場合には、対応するエントリ（ｅ，ＭｉｎＨａｓｈＶａｌｕｅ１）．．．（ｅ，ＭｉｎＨａｓｈＶａｌｕｅｋ）がＶ内で検査される。新たに生成されたハッシュ値ｐｉがＭｉｎＨａｓｈＶａｌｕｅｉより小さい場合には、（ｅ，ＭｉｎＨａｓｈＶａｌｕｅｉ）は、（ｅ，ｐｉ）で置き換えられる。さらに、Ｉ内の対応するエントリは、（ｅ，Ｉｄ（Ｇ））で置き換えられる。
【００３８】
図４は、各々の着信エッジについてｍｉｎ−ｈａｓｈインデックスを更新するプロセスを示す、図３のアルゴリズム３００の一部を反映したフローチャートである。特に、図４は、各々の着信グラフストリームについて要求されるステップを示す。ステップ４１０において、各行についてｋ個のランダムハッシュ値が生成され、この行は、本質的にはストリーム内の着信グラフである。ｋ個のランダムハッシュ値は、図３においては、ｐ１．．．ｐｋとも称される。ステップ４２０において、各行のｍｉｎ−ｈａｓｈインデックスが更新される。ステップ４３０において、各行についてのｍｉｎ−ｈａｓｈ値が更新される。これらの更新は、生成されたｍｉｎ−ｈａｓｈ値が現行の値より小さい場合にのみ行われる。この生成ステップは、図３の最も内側のループにより行われる。
【００３９】
以上のように、図３及び図４を参照して検討したプロセスは、着信グラフの集計表現を連続的に維持する。これらの集計統計量は主メモリ内で維持されるので、任意の時点でこれらを用いて、コヒーレントなエッジパターン、すなわち相関エッジ集合を決定することができる。
【００４０】
図３のアルゴリズム３００の使用に伴う主定数は、集計統計量Ｖ及びＩがサイズＯ（ｋ・Ｌ）を有することであり、ここでＬは今までに遭遇した相異なるエッジの数であることに留意されたい。ここでの問題点は、本開示において検討されている大規模グラフ仮説のため、Ｌの値が非常に大きくなることがあるという点である。そのような大きい集計は、このシナリオでの効率的な更新プロセスのために必要とされるディスク上又は主メモリ内に容易に維持することができないことがある。したがって、図３のｍｉｎ−ｈａｓｈ行圧縮アルゴリズム３００は、図５のアルゴリズム５００により示されるプロセスで補完される。図５に示されるプロセスは、第２のｍｉｎ−ｈａｓｈ技術であり、データ構造のサイズを縮小するために列圧縮を用いる。この結果として、行及び列が同時に圧縮されるが、図５における列圧縮は、図３とは異なるやり方で実行される。
【００４１】
図５のアルゴリズム５００は、図３のアルゴリズム３００と同様であるが、但し、データ内の各エッジは、最初に一様乱数ハッシュ関数を用いて範囲［１，ｎ］内の整数にマッピングされ、次に図３のアルゴリズム３００のステップが適用される。したがって、この場合には、実際のエッジ上でパターンを決定する代わりに、範囲［１，ｎ］内の整数上でパターンが決定される。さらに、図５のアルゴリズム５００は、列圧縮サイズｎを入力として用い、これを用いて各エッジを［１，ｎ］内の整数上にマッピングするという点で、図３のアルゴリズムとは異なる。アルゴリズム３００においては、このマッピングは、一様ハッシュ関数を使用して行われる。エッジの文字列表現は、２つの端部のノードラベルを連接することにより構築される。次いで、ハッシュ関数がこの文字列表現に適用される。
【００４２】
ｎの値は、記憶装置の要件に基づいて選ぶことができ、典型的には、相異なるエッジの数よりもずっと小さくされる。ｎの選択は、記憶装置の大きさと精度との間のトレードオフに起因する。複数のエッジを同じ整数にマッピングすることができるので、この手法の結果として計算精度のある程度の低下がさらに生じることがある。しかしながら、列圧縮スキームは、質の低下が比較的小さい状態で、空間の要求条件を顕著に小さくする。
【００４３】
列圧縮を用いて各々の着信グラフについてのハッシュインデックスを更新するための方法を示す、図５のアルゴリズム５００の一部を反映したフローチャートが図６に示される。このフローチャートは、図４に示されるものと同様であるが、但し、エッジは、より制限されたハッシュ値の集合にマッピングされている。これは、全ての相異なるエッジについてのハッシュ値を追跡するには、相異なるエッジの数が多すぎる過ぎることがあるという理由で行われる。図６に示されるように、ステップ６１０において、エッジは、従来のハッシュ関数により、擬似列の制限された集合に対してマッピングされる。その後のステップは、図４のステップと同様である。ステップ６２０において、異なる行についてのハッシュ値が生成される。ステップ６３０及びステップ６４０において、生成されたｍｉｎ−ｈａｓｈ値が今までにストリーム内で遭遇した現行の値より小さければ、現行のｍｉｎ−ｈａｓｈインデックス及び値がそれぞれ生成される。
【００４４】
クラスラベルもまた、ｍｉｎ−ｈａｓｈスキームの実行中に追跡される。先に述べたように、グラフのクラスラベルは、各グラフＧについての識別子Ｉｄ（Ｇ）に添付されていると仮定する。したがって、クラスラベルは、グラフ識別子と共に追跡される。具体的には、グラフ識別子の最後の部分が、そのグラフのクラスラベルである。ｍｉｎ−ｈａｓｈインデックスはグラフ識別子を含むので、暗黙的にクラスラベルも含む。
【００４５】
これらのクラスラベルを用いて、データの圧縮された集計から判別エッジ集合を計算する。これは、特定のクラスラベルと高度に相関するｍｉｎ−ｈａｓｈインデックス内の頻度の高いエッジのパターン（換言すれば、コヒーレントな又は相関エッジパターン）を決定することにより達成される。具体的には、ｍｉｎ−ｈａｓｈ相内で決定された高頻度パターンに関係した優勢クラスラベルが決定され、クラスの存在がユーザ定義閾値を上回る全てのパターンの集合が保存される。
【００４６】
ここで、図２のステップ２３０を参照すると、ストリーム・プロセッサは、グラフデータの着信ストリームを受信する。このストリームは訓練ストリームと同様であるが、但し、ストリーム内のオブジェクトにはまだクラスラベルが割り当てられていないことに留意されたい。このようなストリームの例は、侵入の性質はまだ決定されていないが侵入に対応する部分グラフは既に受信された、侵入アプリケーションとすることができる。グラフデータの着信ストリームを入力として用いて、クラスラベルが着信データストリーム内のオブジェクトに関連付けられる（２４０）。これは、ステップ２２０で決定された判別エッジ集合を用いることによって行われる。具体的には、訓練相において決定された判別的部分グラフに対応するオブジェクトを着信グラフ内で見つけ出す。次に、見つけ出されたオブジェクトに対して、その単独の対応する部分グラフのクラスラベル又はその対応する部分グラフの多数派のクラスラベルが割り当てられる。
【００４７】
これらのオブジェクト−クラスラベル対は、次にストリーム・プロセッサから出力され、情報リポジトリ内に格納される（２５０）。これらの対を処理して、多様なアプリケーションのための有用な情報を提供することができる。特に、ユーザは、着信データストリームの中から見つけ出すべき特定のパターンを定義することができる（２６０）。例えば、侵入検出アプリケーションでは、ユーザは、侵入攻撃の性質（例えば、それが「サービス妨害」攻撃であるか否か）に関して知りたいと望むかもしれない。オブジェクト−クラスラベル対は、着信ストリーム内のクラスを「サービス妨害」とラベル付けすることにより、そのような攻撃の性質に関する情報を提供することができる。
【００４８】
ここで、本発明の例示的な実施形態を、図７の装置７０１を参照して説明する。装置７０１はコンピュータとすることができ、これは、メモリ７０２、ディスク７０３、及び中央処理ユニット（ＣＰＵ）７０４などのプロセッサを含む。
【００４９】
本明細書で用いられる「プロセッサ」という用語は、図２を参照して上で検討したストリーム・プロセッサのような、任意の処理デバイス、例えばＣＰＵ及び／又は他の形態の処理回路を含むものなどを含むことを意図することを理解されたい。さらに、「プロセッサ」という用語は、複数の個別のプロセッサを指すことができる。「メモリ」という用語は、プロセッサ又はＣＰＵに関連付けられたメモリ、例えば、ＲＡＭ、ＲＯＭ、固定メモリ・デバイス（例えば、ハード・ドライブ）、取り外し可能なメモリ・デバイス（例えば、ディスケット）、フラッシュ・メモリなどを含むことが意図される。さらに、本明細書で用いられる「入力／出力インターフェース」という語句は、例えば、処理ユニットにデータを入力するための１つ又は複数の機構（例えば、マウス）、及び、処理ユニットに関連付けられた結果を提供するための１つ又は複数の機構（例えば、プリンタ）を含むことが意図される。
【００５０】
図７に示されるように、装置７０１が入力インターフェースを介して訓練ストリームのようなグラフデータストリームを受信すると、これを、図２−図６を参照して上で説明したメモリ７０２内の２Ｄデータ構造内に格納することができる。グラフデータストリームは、任意のタイプの大規模グラムから到来したものとすることができる。着信グラフデータをＣＰＵ７０４で処理して、例えば図２−図６を参照して上で説明した方法で判別エッジ集合を決定する。判別エッジ集合は、それらのクラスラベルと共にディスク７０３内に格納することができる。装置７０１が入力インターフェースを介して非訓練／検定グラフデータストリームを受信したときには、この入力データストリームはメモリ７０２内に置くことができる。次いで、ディスク７０３内に格納された判別エッジ集合にアクセスして、非訓練／検定グラフデータストリーム内のオブジェクトに関連付けられるクラスラベルを、図２−図６を参照して説明した方法で決定することができる。次いで、この決定に基づいたオブジェクト−クラスラベル対を、装置７０１の出力インターフェースを通じて情報リポジトリ７０５に出力することができる。情報リポジトリ７０５は、オブジェクト−クラスラベル対が格納されるディスク記憶装置の形態とすることができる。オブジェクト−クラスラベル対は、将来的な処理のために任意の種類のデータベース内に格納することができる。
【００５１】
非訓練グラフデータストリーム内の所望のパターンを識別するために、オブジェクト−クラスラベル対は、情報リポジトリ７０５から装置７０１又は別のコンピューティング装置によってアクセスすることができる。次に、オブジェクト−クラスラベル対を解析して、所望のパターンを決定することができる。例えば、特定のウェブサイトを訪問したときのユーザの挙動を指し示すオブジェクト−クラスラベル対を見つけ出すことができる。幾つかの実施形態においては、パターン識別を実施することを求める要求７１０、例えばユーザから入力される検索要求を、装置７０１に入力することができる。幾つかの実施形態においては、要求に対する応答７２０が装置７０１から出力される。
【００５２】
当業者により認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらは全て本明細書において一般的に「回路」、「モジュール」又は「システム」と呼ばれることがある。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードをその中に有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００５３】
１つ又は複数のコンピュータ可読媒体のあらゆる組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体であってもよく、又はコンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又はそれらのいずれかの適切な組み合わせとすることができるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）は、以下もの、即ち、１つ又は複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ＲＡＭ、ＲＯＭ、消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク型読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、又はそれらのいずれかの適切な組み合わせを含む。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって用いられるプログラム又はそれらに関連して用いられるプログラムを収容又は格納することができる、いずれかの有形媒体とすることができる。
【００５４】
コンピュータ可読信号媒体は、具体化されたコンピュータ可読プログラム・コードを例えばベースバンド内に又は搬送波の一部としてその中に有する、伝搬データ信号を含むことができる。このような伝搬信号は、電磁的形態、光学的形態又はこれらのいずれかの適切な組み合わせを含む種々の形態のうちのいずれの形態をとることもできるが、それらに限定されない。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、且つ、命令実行システム、装置若しくはデバイスによって用いられるプログラム又はそれらに関連して用いられるプログラムを伝達、伝搬又伝送することができる、いずれかのコンピュータ可読媒体とすることができる。
【００５５】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバケーブル、ＲＦ等、又はこれらのいずれかの適切な組み合わせを含むがそれらに限定されない、いずれかの適切な媒体を用いて送信することができる。
【００５６】
本発明の態様に関する動作を遂行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオの場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００５７】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照しながら説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができることが理解される。これらのコンピュータ・プログラム命令を、機械を製造するために汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供し、これにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令がフローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するための手段を作り出すようにさせることができる。
【００５８】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、これにより、そのコンピュータ可読媒体内に格納された命令がフローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施する命令を含む製品を製造するようにさせることもできる。
【００５９】
コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能装置又は他のデバイス上で実行させて、コンピュータ実施プロセスを生成し、これにより、コンピュータ又は他のプログラム可能装置上で実行される命令がフローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するためのプロセスを提供するようにさせることもできる。
【００６０】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能な命令を含むモジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることもあることにも留意されたい。例えば、連続して示された２つのブロックが実際には実質的に同時に実行されることもあり、又は、それらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００６１】
本明細書において用いられる用語は、特定の実施形態を説明することのみを目的とするものであり、本発明を限定することを意図していない。本明細書で用いられる場合、単数形の「１つの（ａ、ａｎ）」及び「その（ｔｈｅ）」は、文脈が明確に他の場合を指示していない限り、複数形をも含むことを意図している。「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書において用いられる場合、述べられた特徴、整数、ステップ、動作、要素及び／又はコンポーネントの存在を特定するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント及び／又はそれらの群の存在又は付加を排除するものではないこともさらに理解されよう。
【００６２】
下記の特許請求の範囲における全ての「手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、明確に特許請求される他の特許請求された要素と組み合わされてその機能を実施するためのいかなる構造、材料又は動作をも含むことを意図している。本発明の記載は、例示及び説明の目的で提示されたが、網羅的であることを意図するものでも、開示された形態の発明に限定することを意図するものでもない。当業者には、本発明の範囲及び真意から逸脱しない多くの修正及び変形が明らかであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明し、且つ、当業者が企図される特定の使用に適した種々の修正を伴う種々の実施形態について本発明を理解できるように、選択され、説明された。
【符号の説明】
【００６３】
１００：ウェブグラフ
７０１：装置
【図１】
0005596235.tif 000002
【図２】
0005596235.tif 000003
【図３】
0005596235.tif 000004
【図４】
0005596235.tif 000005
【図５】
0005596235.tif 000006
【図６】
0005596235.tif 000007
【図７】
0005596235.tif 000008