(57)【要約】      （修正有）【課題】トランザクションデータをグラフアナリティクスアプリケーションへの入力のためのグラフ表現に変換することによって製品の推薦を生成するためのシステムを提供する。【解決手段】システムは、トランザクションデータを記憶するためのトランザクションテーブルと、顧客データを記憶するための顧客テーブルと、製品データを記憶するための製品テーブルとを生成し、トポロジーおよびエッジ識別子情報を包含するテーブルと、エッジ属性情報を包含するテーブルとを生成し、顧客テーブルおよび／または製品テーブルおよび／またはエッジ属性情報を包含するテーブルを記述するデータを含むヘッダを生成し、１つ以上のヘッダとテーブルからのデータとを包含するファイルを生成する。その後、システムは、製品の推薦を生成するためにグラフアナリティクスアプリケーションに入力として１つ以上のファイルをサブミットする。【選択図】図２
2015130165.tif 000002
【特許請求の範囲】
【請求項１】
トランザクションデータをグラフアナリティクスアプリケーションへの入力のためのグラフ表現に変換することによって製品の推薦を生成するためのコンピューティングシステムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行された場合に、前記１つ以上のプロセッサに、
トランザクションデータを記憶するためのトランザクションテーブルと、顧客データを記憶するための顧客テーブルと、製品データを記憶するための製品テーブルとを生成することと、
前記トランザクションテーブルからのデータを用いて、トポロジーおよびエッジ識別子情報を包含するテーブルと、エッジ属性情報を包含するテーブルとを生成することと、
前記顧客テーブルおよび／または前記製品テーブルおよび／または前記エッジ属性情報を包含するテーブルを記述するデータを含む１つ以上のヘッダを生成することと、
前記１つ以上のヘッダと前記テーブルからのデータとを包含する１つ以上のファイルを生成することであって、前記データはトランザクションを表現するエッジと顧客または製品を表現する頂点とを有するグラフを記述する、生成することと、
製品の推薦を生成するために前記グラフアナリティクスアプリケーションに入力として前記１つ以上のファイルをサブミットすることと
を備える動作を実行させる命令を記憶した、前記１つ以上のプロセッサに結合されたコンピュータ可読記憶媒体と
を備えるコンピューティングシステム。
【請求項２】
トランザクションテーブルと、顧客テーブルと、製品テーブルとを生成することは、
関係モデルに応じてデータを記憶するテーブルからデータを検索すること
を備える、請求項１に記載のコンピューティングシステム。
【請求項３】
前記トランザクションは、購入トランザクションである、請求項１に記載のコンピューティングシステム。
【請求項４】
顧客テーブルおよび／または製品テーブルおよび／またはトランザクションテーブルを生成することはさらに、顧客テーブルおよび／または製品テーブルおよび／またはトランザクションテーブルの各行に一意の連続した整数値を割り当てることを備える、請求項１に記載のコンピューティングシステム。
【請求項５】
前記コンピュータ可読記憶媒体は、実行された場合に、前記１つ以上のプロセッサに、
まず顧客ＩＤ、続いてエッジの型、続いて製品ＩＤ、続いてトランザクションＩＤによって、前記トポロジーおよびエッジ識別子情報を包含するテーブルをソートすること
を備える追加のステップを実行させる追加の命令を記憶する、請求項１に記載のコンピューティングシステム。
【請求項６】
方法のすべてのステップが単一のスクリプトによって実行される、請求項１に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフアナリティクスに関する。より具体的には、この開示は、トランザクションデータをグラフアナリティクスアプリケーションへの入力のためのグラフ表現に変換することによって、効率的な協調フィルタリングの応用を容易にするための方法およびシステムに関する。
【背景技術】
【０００２】
ハイパーグラフは、グラフデータへの極めて速いクエリを実行するハイパフォーマンスグラフアナリティクスエンジンである。グラフデータは、グラフによって容易に表現され得るデータである。グラフは、頂点を連結するエッジを有する頂点の集合である。ハイパーグラフは、入力が極めて固有のフォーマットであることを要求するが、整形動作は単一のマシンの典型的なメモリおよびディスク容量を超えるので、多くの実世界のグラフデータセットを整形することは簡単ではない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
１つのアプローチでは、スクリプトおよびＵＮＩＸ（登録商標）ユーティリティを使用してデータの自動編集および整形が実行され得る。このアプローチは、入力および出力ファイルおよび中間計算が現代的なワークステーションと適合する場合、相対的に満足に機能する。しかしながら、入力グラフデータセットが数百ギガバイトオーダーである場合、要求される時間、ディスクスペース、およびメモリスペースゆえに、標準的なマシンではデータをソートすることさえできない。
【課題を解決するための手段】
【０００４】
本発明の一実施形態は、トランザクションデータをグラフアナリティクスアプリケーションへの入力のためのグラフ表現に変換することによって製品の推薦を生成するためのシステムを提供する。動作中、システムは、トランザクションデータを記憶するためのトランザクションテーブルと、顧客データを記憶するための顧客テーブルと、製品データを記憶するための製品テーブルとを生成する。システムは続いて、トランザクションテーブルからのデータを用いて、トポロジーおよびエッジ識別子情報を包含するテーブルと、エッジ属性情報を包含するテーブルとを生成する。次に、システムは、顧客テーブルおよび／または製品テーブルおよび／またはエッジ属性情報を包含するテーブルを記述するデータを含む１つ以上のヘッダを生成する。その後、システムは、１つ以上のヘッダとテーブルからのデータとを包含する１つ以上のファイルを生成し、データは、トランザクションを表現するエッジと顧客または製品を表現する頂点とを有するグラフを記述する。システムは続いて、製品の推薦を生成するためにグラフアナリティクスアプリケーションに入力として１つ以上のファイルをサブミットする。
【０００５】
この実施形態の変形例において、トランザクションテーブルと、顧客テーブルと、製品テーブルとを生成することは、関係モデルに応じてデータを記憶するテーブルからデータを検索することを含む。
【０００６】
この実施形態の変形例において、トランザクションは、購入トランザクションである。
【０００７】
この実施形態の変形例において、顧客テーブルおよび／または製品テーブルおよび／またはトランザクションテーブルを生成することは、顧客テーブルおよび／または製品テーブルおよび／またはトランザクションテーブルの各行に一意の連続した整数値を割り当てることを含む。
【０００８】
この実施形態の変形例において、システムは、まず顧客ＩＤ、続いてエッジの型、続いて製品ＩＤ、続いてトランザクションＩＤによって、トポロジーおよびエッジ識別子情報を包含するテーブルをソートする。
【０００９】
この実施形態の変形例において、方法のすべてのステップは単一のスクリプトによって実行される。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係るグラフ変換システムの例示的なアーキテクチャを示すブロック図である。
【図２】図２は、実施形態に係る、グラフを生成するためにメインテーブルからのデータを編集するための処理の概要を示すブロック図である。
【図３Ａ】図３Ａは、実施形態に係る顧客テーブルのための例示的なヘッダを示すブロック図である。
【図３Ｂ】図３Ｂは、実施形態に係る製品テーブルのための例示的なヘッダを示すブロック図である。
【図３Ｃ】図３Ｃは、実施形態に係るエッジ属性テーブルのための例示的なヘッダを示すブロック図である。
【図３Ｄ】図３Ｄは、実施形態に係るサンプル顧客データを有する例示的な顧客テーブルを示すブロック図である。
【図３Ｅ】図３Ｅは、実施形態に係るサンプル製品データを有する例示的な製品テーブルを示すブロック図である。
【図３Ｆ】図３Ｆは、実施形態に係るサンプルエッジデータを有する例示的なエッジ属性テーブルを示すブロック図である。
【図３Ｇ】図３Ｇは、実施形態に係るグラフトポロジーを表現する例示的なエッジデータを有するテーブルを示すブロック図である。
【図４Ａ】図４Ａは、実施形態に係る、グラフアナリティクスアプリケーションのための入力としてのテーブルおよびヘッダを生成するための例示的な処理を示すフローチャートである。
【図４Ｂ】図４Ｂは、実施形態に係る、グラフアナリティクスアプリケーションのための入力としてのテーブルおよびヘッダを生成するための例示的な処理を示すフローチャートである。
【図５】図５は、実施形態に係る、トランザクションデータからグラフ表現を生成するための例示的な装置を示すブロック図である。
【図６】図６は、実施形態に係る、トランザクションデータからグラフ表現を生成するための例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１１】
図面において、同一の参照番号は、同一の図面要素を指す。
【００１２】
以下の説明は、実施形態の製造および使用を任意の当業者に可能にさせるために提示され、特定の応用例およびその要求の文脈において提供される。開示される実施形態に対するさまざまな変更が当業者に容易に理解され、本明細書において定義される一般的な原理は、本開示の精神および範囲から逸脱せずに、他の実施形態および応用例に適用され得る。かくして、本発明は、示される実施形態に限定されるのではなく、本明細書に開示される原理および特徴と一致する最も広い範囲を付与されるべきである。
【００１３】
本発明の実施形態は、データを自動で編集し、データをグラフモデル表現に変換することによって、トランザクションデータをグラフアナリティクスアプリケーションへの入力に適したフォーマットに変換する問題を解決する。グラフ変換システムが、さまざまな型のデータを記憶する関係テーブルのようなデータソースからデータを抽出し得る。システムは、データを処理して中間テーブルに投影し、ヘッダを生成し、続いて、テーブル、ヘッダ、およびグラフトポロジーを記述するデータおよび関連づけられたエッジ属性データを有する追加のテーブルを、適切に整形されたテキストファイルに書き込む。生成されたグラフは、抽出されたデータに見出されるトランザクションリレーションシップを反映する。グラフ変換システムが続いて、生成されたグラフデータを、分析のためにグラフアナリティクスアプリケーション（たとえば、ハイパーグラフ）に入力としてサブミットし得る。１つの例示的な応用例は、ユーザに製品の推薦を提案するために、協調フィルタリングを実行するためにハイパーグラフを用いて購入トランザクションデータを分析することである。
【００１４】
ハイパーグラフエンジンは、その入力が、ある特定の制約および整形の要求を伴う極めて固有の手法で整形されたテキストファイルであることを要求する。入力テキストファイルは、グラフトポロジー、および頂点に関連づけられたデータを含む、グラフの記述子、および他の関連づけられたデータを含むべきである。グラフ構造データは、頂点およびエッジの属性を記述するデータとは分離されるべきである。協調フィルタリングのために、頂点が顧客または製品を表現する一方で、エッジは、購入トランザクションを表現する。
【００１５】
１つの実現において、システムは、Ｈａｄｏｏｐ上に構築されたＨｉｖｅのようなデータウェアハウジングソフトウェアを利用する。Ｈｉｖｅは、Ｈａｄｏｏｐのためのデータウェアハウスシステムである。Ｈｉｖｅは、Ｈａｄｏｏｐ互換のファイルシステムによる分散ストレージに存在する大規模データセットの、容易なデータ要約、アドホッククエリ、および分析を容易にする。Ｈｉｖｅは、記憶されたデータにアクセスするためのＳＱＬインターフェースを提供する。Ｈａｄｏｏｐは、ストレージレイヤである。Ｈａｄｏｏｐは、マシンおよびＣＰＵのパワーをまとめて、マシンのクラスタにわたる大規模データセットを分散処理するためのフレームワークである。Ｈａｄｏｏｐは、クラスタにわたるデータのストレージを提供し、単一のサーバから数千ものマシンへのスケーリングを可能にする。それは、クラスタにおけるすべてのノードに及ぶスケーラブルな分散ファイルシステムを提供する。小売業者は、Ｈａｄｏｏｐのクラスタに数百ギガバイトのデータを記憶し得る。典型的な関係データベーステーブルからのデータをハイパーグラフに適したフォーマットに自動で編集するために、ＨａｄｏｏｐおよびＢａｓｈスクリプトとともにＨｉｖｅが使用され得る。Ｂａｓｈは、Ｕｎｉｘ（登録商標）シェルである。Ｂａｓｈは、スクリプトファイルからのコマンドを読み取り、スクリプト内のコマンドを実行し得る。
【００１６】
ハイパーグラフへの入力は、Ｈｉｖｅを用いて生成されたテーブルおよびヘッダのセットである。いくつかの実現において、メインテーブルからの顧客、製品、およびトランザクションデータをより小さな中間テーブルに投影するために、ＨｉｖｅにおいてＳＱＬスクリプトが実行され得る。たとえば、小売データベースには、ある列が顧客ＩＤを記憶し、別の列は顧客が行った購入についての製品ＩＤを記憶する、メインテーブルが存在し得る。このメインテーブルにおける他の列は、トランザクションＩＤおよびそのようなトランザクションの日付を記憶し得る。Ｈｉｖｅによって生成された中間テーブルは、テキストファイルの形式でストレージに書き込まれ得、テキストファイル中の改行によって区切られた各行は、テーブルにおける行を表現する。システムはまた、ヘッダ、グラフのトポロジーを記述するテーブル、およびエッジの属性を記述する別のテーブルを生成し得る。
【００１７】
関係モデルに応じて記憶されたデータをハイパーグラフへの入力のために適切に整形されたグラフ表現に変換するために自動化手順が利用され得る。例示的な実現では、ハイパーグラフへの入力としての役割を果たし得るグラフ表現出力を生み出すために単一のコマンドを有するスクリプトが呼び出され得る。システムは、ハイパーグラフへの入力として、グラフ構造を表現するデータを有するテキストファイルを生成する。システムは、ハイパーグラフによって指定された固有の順序によってこれらのファイルの列をソートし得る。システムは続いて、生成されたグラフをハイパーグラフに入力することによって、トランザクションデータの効率的な分析を容易にし得る。
【００１８】
システムは、顧客に推薦を提供するために、本明細書に開示される技法を利用し得る。小売業者が顧客に製品を販売し得ると、顧客に推薦を提供するために、システムが協調フィルタリングを実行し得る。しかしながら、協調フィルタリングは、購入データを含む顧客トランザクションデータの分析を要求する。システムは、顧客の購入アイテムを調べ、続いて、最初の顧客と同一のアイテムを同じく購入した他の顧客によって行われた購入を決定し得る。システムは続いて、最初の顧客にアイテムを推薦し得る。顧客のトランザクションデータは、他のデータと混ぜられ、関係データベースに（またはハイパーグラフへの直接入力に適さない何らかの他のフォーマットで）記憶され得る。システムは、トランザクションデータをハイパーグラフへの入力に適したフォーマットに変換するために、本明細書において論じられる変換技法を適用し得る。ハイパーグラフは、協調フィルタリングを実行するために、極めて効率的にグラフをトラバースし得る。
【００１９】
協調フィルタリングのために、システムは、小売業者のデータベースから抽出された購入トランザクションデータを用いて２部グラフを生成し得る。２部グラフは、すべてのエッジが集合Ｕにおける頂点を集合Ｖにおける頂点と連結するように２つの互いに素な集合ＵおよびＶに分割され得る頂点を有するグラフである。製品を表現する頂点が、２部グラフの１つの集合を構成し、顧客を表現する頂点が、２部グラフの他の集合を構成する。グラフは、トランザクションデータの小売業者のデータベースを表現する。ハイパーグラフが続いて、製品の推薦を生成するために２部グラフをトラバースし得る。
【００２０】
本明細書に開示される変換処理がない場合、関係テーブルからのデータとのデータベース結合が実行される必要があり、それは、特に、大規模な関係テーブルが必要とされる場合、時間のかかる非効率的な処理である、ということに注意すべきである。データベース結合を実行するよりもむしろ、システムは、ハイパーグラフを用いて２部グラフをトラバースする。たとえば、ハイパーグラフは、製品の推薦を生成するために２部グラフをトラバースし得る。製品の推薦を生成するためにグラフのトラバースを実行することは、データベーステーブルとの結合を実行することよりもはるかに速い。
【００２１】
本明細書ではハイパーグラフに関し例が論じられるが、本発明の実施形態は、開示された技法を任意のグラフアナリティクスアプリケーションによって応用することができる。いくつかの実施形態は、Ｈｉｖｅの代わりにＨＢａｓｅまたはＳＱＬのような関係インターフェースを利用し得る。スクリプトの一部は、Ｃ／Ｃ＋＋または他のスクリプト言語、またはｃａｔ、ｊｏｉｎ、ｐａｓｔｅ、ｃｕｔ、およびｓｏｒｔといった標準的なＵＮＩＸ（登録商標）スクリプトプログラムで書かれ得る。
【００２２】
図１は、実施形態に係るグラフ変換システム１００の例示的なアーキテクチャを示すブロック図を提示する。システム１００は、関係モデル（または任意の他のデータモデル）に応じて記憶されたデータを抽出し、グラフを表現する適切なフォーマットにデータを変換し得る。変換されたデータは、グラフアナリティクスアプリケーション（たとえば、ハイパーグラフ）への入力に適するべきである。
【００２３】
システム１００は、クラスタ１０４の一部として実行されるサーバ１０２Ａ〜１０２Ｅのセットを含み得る。サーバ１０２Ａ〜１０２Ｅの各々は、ストレージデバイスに記憶されたソフトウェアおよびデータを含み得る。たとえば、サーバ１０２Ｅは、ストレージデバイス１０６を含み得る。ストレージデバイス１０６は、グラフアナリティクスアプリケーション１０８（たとえば、ハイパーグラフ）、トランザクションデータ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア１１４のようなデータおよびソフトウェアを記憶し得る。いくつかの実現はまた、ハイパーグラフに関連づけられたグラフ変換サービスを要求するためにクラスタ１０４におけるサーバと通信するクライアント１１６を含み得る。
【００２４】
本発明の異なる実現は任意の数のサーバおよびストレージデバイスを含み得る、ということに注意する。システム１００のさまざまな発明態様が、以下においてさらに説明される。
【００２５】
図２は、実施形態に係る、グラフを生成するためにメインテーブルからのデータを編集するための処理の概要を示すブロック図を提示する。図２は、システム１００がどのようにしてトランザクションデータをハイパーグラフに適したフォーマットに変換し得るかを示す。システム１００が、中間テーブル、関連づけられたヘッダ、およびトポロジーテーブルおよびエッジ属性テーブルを形成するために、メインテーブルからデータを抽出し得る。システム１００は続いて、中間テーブル、ヘッダ、および他のテーブルを１つ以上のテキストファイルに書き込み得る。
【００２６】
図２に示すように、グラフアナリティクスアプリケーション１０８は、パーティショニング／記憶コンポーネント２０４Ａおよび他のコンポーネント２０４Ｂ〜２０４Ｃを含む。コンポーネント２０４Ｂ〜２０４Ｃは、入力されたグラフの分析を容易にする任意の数のコンポーネントを表現し得る。グラフアナリティクスアプリケーション１０８は、テキストファイル２０６を入力として受理し、それは、データベース２０８に記憶される。テキストファイル２０６は、メインテーブル２１０から検索されたデータから生成されたグラフ表現を記述するデータを包含する。実現に依存してテキストファイル２０６は１つ以上のテキストファイルを表現し得る、ということに注意する。
【００２７】
システム１００は、顧客テーブル２１２、製品テーブル２１４、購入テーブル２１６を含む中間テーブルを生成し得る。顧客テーブル２１２は、顧客を記述するデータを記憶し得る。製品テーブル２１４は、購入のために入手可能な製品を記述するデータを記憶し得る。購入テーブル２１６は、顧客による製品の購入を記述するデータを記憶し得るが、異なる実現はまた、このまたは別のトランザクションテーブルにおける他の型のトランザクションを含み得る。システム１００は、メインテーブル２１０からデータを検索し、検索されたデータを、顧客テーブル２１２、製品テーブル２１４、および購入テーブル２１６において記憶する。メインテーブル２１０は、たとえば、関係モデルに応じてデータを記憶し得る。異なる小売業者は、定義域に依存して記憶されるデータの構造または型が異なるメインテーブルを記憶し得、任意の数のテーブルを含み得る。
【００２８】
例示的な実現において、システム１００は、中間テーブルのためのいくつかのヘッダを生成し、中間テーブルおよびヘッダをテキストファイル２０６に書き込む。システム１００はまた、グラフアナリティクスアプリケーション１０８にサブミットするためのエッジ関連情報を包含する他のテーブルを含み得る。テーブルの１つは、図３Ｇに示され、グラフのトポロジーを記述する例示的なデータを包含する。別のテーブルは、エッジ属性情報を含み得、その例が図３Ｆに示されている。システム１００は、テキストファイル２０６にトポロジーおよびエッジ属性のテーブルを含み得る。システム１００はまた、図３Ｇに示すトポロジーテーブルとは異なるようにソートされた列を有する冗長テーブルである別のトポロジーテーブルをテキストファイル２０６に含み得る。テーブルの例は、図３Ｄ〜図３Ｇに示されている。システム１００は続いて、グラフアナリティクスアプリケーション１０８にテキストファイル２０６をサブミットする。いくつかの実現は、複数の別個のテキストファイルにヘッダおよびテーブルを書き込み、すべてのテキストファイルをグラフアナリティクスアプリケーション１０８にサブミットし得る、ということに注意する。
【００２９】
図３Ａ〜図３Ｇは、顧客データ、製品データ、およびエッジデータのための例示的なヘッダおよびテーブルを示す。システム１００は、ベーステーブル２１０からヘッダおよびテーブルを生成する。ヘッダは、スキーマを記述し、テーブルに関連づけられた他のメタデータを提供する。以下のセクションは、例示的なヘッダおよびテーブルをより詳細に説明する。図３Ａは、顧客テーブルのための例示的なヘッダを示し、図３Ｂは、製品テーブルのための例示的なヘッダを示し、図３Ｃは、エッジ属性テーブルのための例示的なヘッダを示す。図３Ｄは、例示的な顧客テーブルを示し、図３Ｅは、例示的な製品テーブルを示し、図３Ｆは、例示的なエッジ属性テーブルを示し、図３Ｇは、例示的なグラフトポロジーテーブルを示す。
【００３０】
図３Ａは、実施形態に係る顧客テーブル３０８のための例示的なヘッダ３０２を示すブロック図を提示する。ヘッダ３０２は、スキーマと顧客テーブル３０８のための他のメタデータとを示す。１つの実現において、ヘッダにおけるｔｙｐｅフィールドは、テーブルが顧客データを記憶することを示す２の値を有する。別のヘッダフィールドは、顧客テーブル３０８における列の数を記憶し得、図示した例では３である。識別子フィールドｉｄは、顧客に関連づけられた内部識別番号を記憶する顧客テーブル３０８における列を示す。顧客識別子フィールドｃｕｓｔｏｍｅｒ＿ｉｄは、小売業者によって割り当てられた顧客識別子を記憶する顧客テーブル３０８における列を示す。文字列フィールドｃｌａｓｓは、氏名、住所、および他の顧客データといった顧客情報を記憶する顧客テーブル３０８における列を示す。別のヘッダフィールドは、顧客テーブル３０８における行の数を示し、図示した例では１５５４１２である。また、オプションのヘッダフィールドｃｕｓｔｏｍｅｒ．ａｔｔｒ．ｖ．ｄｅｆは、各々の顧客の追加の属性を示すデータを記憶し得る。システム１００は、グラフアナリティクスアプリケーション１０８への入力のためのグラフを生成することの一部として、テキストファイルのセットにヘッダ３０２および顧客テーブル３０８を書き込み得る。これは、顧客データのためのヘッダの一例であり、異なる実現は、異なるフィールドを有する顧客ヘッダを利用し得る、ということに注意する。
【００３１】
図３Ｂは、実施形態に係る製品テーブルのための例示的なヘッダ３０４を示すブロック図を提示する。ヘッダ３０４は、スキーマと、製品のＩＤ、製品の記述子、および他のデータを含む製品テーブル３１０に関連づけられた他のメタデータとを示す。１つの実現において、ヘッダにおけるｔｙｐｅフィールドは、テーブルが製品データを記憶することを示す１の値を有する。別のヘッダフィールドは、製品テーブル３１０における列の数を記憶し得、図示した例では３である。識別子フィールドｉｄは、製品に関連づけられた内部識別子を記憶する製品テーブル３１０における列を示す。製品識別子フィールドｐｒｏｄｕｃｔ＿ｉｄは、小売業者のための製品識別子を記憶する製品テーブル３１０における列を示す。文字列フィールドｃｌａｓｓは、製品の記述子を記憶する製品テーブル３１０における列を示す。別のヘッダフィールドは、製品テーブル３１０における行の数を示し、図示した例では１９９０４１２である。また、オプションのヘッダフィールドｐｒｏｄｕｃｔ．ａｔｔｒ．ｖ．ｄｅｆは、各々の製品の追加の属性を示すデータを記憶し得る。システム１００は、グラフアナリティクスアプリケーション１０８への入力のためのグラフを生成することの一部として、テキストファイルのセットにヘッダ３０４および製品テーブル３１０を書き込み得る。これは、製品データのためのヘッダの一例であり、異なる実現は、異なるフィールドを有する製品ヘッダを利用し得る、ということに注意する。
【００３２】
図３Ｃは、実施形態に係るエッジ属性テーブルのための例示的なヘッダ３０６を示すブロック図を提示する。エッジヘッダ３０６は、購入型トランザクションに関連づけられたエッジ属性情報を包含するエッジ属性テーブル３１２を記述する。例示的な実現において、ヘッダにおけるｔｙｐｅフィールドは、テーブルが型１のエッジに関連づけられた属性情報を記憶することを示す１の値を有する。型１のエッジは、購入を表現する。いくつかの実現において、異なる型の値を有する他のエッジは、返金、ウェブページのクリックスルー、または何らかの他の型のトランザクションを表現し得る。本発明の実施形態は、例示したエッジの型に限定されるものではない。エッジのための型の付番体系は頂点のための型の付番体系とは異なる、ということに注意する。異なる応用例は任意の数のエッジの型を有し得るが、この例示的な応用例では購入のための１つのエッジの型のみが存在する。
【００３３】
ヘッダ３０６における別のフィールドは、エッジ属性テーブル３１２における列の数を記憶し得る（たとえば、図３Ｃの図示した例では４である）。内部識別子ｉｄは、各々のエッジのための内部識別子を記憶するエッジ属性テーブル３１２における列を示す。小売業者に固有の識別子ｐｕｒｃｈａｓｅ＿ｉｄは、小売業者に固有の購入識別子情報を表現する。ｐｒｉｃｅ識別子は、製品の小売価格を示し、ｐｒｉｃｅ＿ａｄｊ識別子は、顧客によって支払われた実際の価格を示す。１つのヘッダフィールドは、エッジ属性テーブル３１２における行の数を記憶し、図示した例では２７６３８０８０４である。別のフィールドｐｕｒｃｈａｓｅ．ａｔｔｒ．ｖ．ｄｅｆは、購入属性情報を記憶し得る。これらのフィールドは例であり、いくつかの実現は、タイムスタンプのような追加のフィールドを含み得る。いくつかの実施形態において、システム１００は、列が整数値を記憶する場合、いくつかの列についての最大値および最小値を含み得る、ということに注意する。さらに、これはエッジデータのためのヘッダの一例であり、異なる応用例は、異なるフィールドを有するエッジヘッダを利用し得る。
【００３４】
図３Ｄは、実施形態に係るサンプル顧客データを有する例示的な顧客テーブル３０８を示すブロック図を提示する。顧客テーブル３０８は、図２からの顧客テーブル２１２の例である。図３Ｄに示すように、顧客テーブル３０８は、内部顧客識別子３１０、顧客識別子３１２、および記述子３１４の３列を含み得る。システム１００は、グラフアナリティクスアプリケーション１０８にサブミットするための顧客ヘッダ３０２を伴う顧客テーブル３０８を含み得る。顧客テーブル３０８は、例示的な顧客テーブルにすぎず、異なる実現は、任意の型の値を記憶する任意の数の列を有する顧客テーブルを有し得る、ということに注意する。
【００３５】
図３Ｅは、実施形態に係るサンプル製品データを有する例示的な製品テーブル３１０を示すブロック図を提示する。製品テーブル３１０は、図２からの製品テーブル２１４の例である。図３Ｅに示すように、製品テーブル３１０は、内部製品識別子３１８、製品識別子３２０、および記述子３２２の３列を含み得る。システム１００は、グラフアナリティクスアプリケーション１０８にサブミットするための製品ヘッダ３０４を伴う製品テーブル３１０を含み得る。製品テーブル３１０は、例示的な製品テーブルにすぎず、異なる実現は、任意の型の値を記憶する任意の数の列を有する製品テーブルを有し得る、ということに注意する。
【００３６】
図３Ｆは、実施形態に係るサンプルエッジデータを有する例示的なエッジ属性テーブル３１２を示すブロック図を提示する。図３Ｆにおけるエッジ属性テーブル３１２は、エッジ属性を記述するデータを包含し、図３Ｇにおけるテーブル３２２は、グラフトポロジー情報を包含する。グラフトポロジーデータからエッジ属性データを分離することは、ハイパーグラフがより効率的にグラフを分析することを可能にする。図３Ｆに示すように、エッジ属性テーブル３１２は、エッジの型３１４、内部ＩＤ３１６、小売表示価格３１８、および支払われた実際の価格３２０の４列を含み得る。システム１００は、グラフアナリティクスアプリケーション１０８にサブミットするためのエッジヘッダ３０６を伴うエッジ属性テーブル３１２を含み得る。エッジ属性テーブル３１２は例にすぎず、異なる実現は、任意の型の値を記憶する任意の数の列を有するエッジ属性テーブルを有し得る、ということに注意する。
【００３７】
図３Ｇは、実施形態に係るグラフトポロジーを表現する例示的なエッジデータを有するテーブル３２２を示すブロック図を提示する。テーブル３２２の各行は、トランザクションを表現するエッジデータを包含し、列は、顧客ＩＤ、エッジの型、トランザクションＩＤ、および製品ＩＤを記述するデータを記憶する。顧客ＩＤの列３２４は、各々のトランザクションに関連づけられた顧客の識別子を記憶する。エッジの型の列３２６は、各々のトランザクションの型情報を記憶する。図３Ｇに示すトランザクションの各々のトランザクションは、エッジの型の列３２６における１の値によって示されるように、購入トランザクションである。トランザクションＩＤの列３２８は、各々のトランザクションのための識別子を記憶する。製品ＩＤの列３３０は、各々のトランザクションに関連づけられた製品のための識別子を記憶する。
【００３８】
システム１００は、グラフアナリティクスアプリケーション１０８の要求に準拠するようにテーブル３２２の列をソートし得る。たとえば、システム１００は、顧客ＩＤ、続いてエッジの型、続いて製品ＩＤ、続いてトランザクションＩＤによってソートし得る。テーブル３２２をテキストファイルに書き込む際に、テーブル３２２のソート順序がＨｉｖｅに対し指定され得る。システム１００はまた、テーブル３２２と同一のデータを包含するが異なるようにソート（たとえば、異なる列に応じてソート）された冗長トポロジーファイルを生成し得る。グラフアナリティクスアプリケーション１０８は、効率的なグラフ分析を容易にするためにこの冗長トポロジーファイルを要求し得る。グラフのメタデータと別個にグラフのトポロジーを記憶することは、必要とされるまでメタデータをロードしないことをシステムに可能にさせることにより、グラフの効率的な処理を容易にする、ということに注意する。
【００３９】
図４Ａおよび図４Ｂは、実施形態に係る、グラフアナリティクスアプリケーションのための入力としてのテーブルおよびヘッダを生成するための例示的な処理を示すフローチャートを提示する。システム１００は、メインテーブル２１０から中間テーブル（たとえば、顧客テーブル２１２、製品テーブル２１４、および購入テーブル２１６）を生成するために、図４Ａおよび図４Ｂの動作を実行する。システム１００はまた、頂点間のエッジＩＤおよび連結情報のみを包含するトポロジーテーブルと、各々のエッジＩＤに関連づけられたデータを包含するエッジ属性テーブルとを生成する。さらに、システム１００は、中間テーブルに関連づけられたヘッダを生成し、中間テーブル、ヘッダ、トポロジーテーブル、およびエッジ属性テーブルをグラフアナリティクスアプリケーション１０８への入力のためにテキストファイルに記憶する。１つの実現では、システム１００は、図４Ａおよび図４Ｂに示す動作を実行するためにスクリプト（たとえば、Ｂａｓｈスクリプト）を実行し得る。
【００４０】
動作中、システム１００は最初に、生成されるテーブルの各行に連続したＩＤ番号を割り当てるＪａｖａ（登録商標）プログラムを編集し得る（動作４０２）。各々の型の頂点（またはエッジデータ）について、システム１００は、各々の頂点のテーブル（またはエッジ関連テーブル）を処理（たとえば、生成および／または投入）するステップを順々に実行する（動作４０４）。システム１００は、各々のそれぞれの中間テーブルを生成および投入するために動作４０６〜４１６を実行し得る。
【００４１】
システム１００が、Ｊａｖａ（登録商標）プログラムから次の一意のＩＤを選択し、１つ以上の頂点（またはエッジ）に関連づけられたデータを選択する（動作４０６）。たとえば、システム１００は、顧客ＩＤ／製品ＩＤ（またはエッジＩＤ）を記憶する列に対しＳＥＬＥＣＴ  ＤＩＳＴＩＮＣＴのようなＳＱＬステートメントを実行することによって、顧客／製品（またはエッジ）についてのデータを抽出し得る。システム１００は、顧客（たとえば、顧客テーブル２１２）に関連するデータまたは製品（たとえば、製品テーブル２１４）に関連するデータ（またはエッジ、たとえば、購入テーブル２１６に関連するデータ）を検索する。この動作によって、システム１００は、顧客または製品（または購入）中間テーブルに投入するためのすべての行のデータを検索することができ、システム１００は、新たなテーブルの各行を各々の追加された行とともに値が増加する一意のＩＤに関連づける。システム１００は続いて、データを検査する（たとえば、フィールドがヌルでないことを確認する）（動作４０８）。システム１００はまた、データを正規化およびリファクタリングし得る。
【００４２】
次に、システム１００は、結果として生じたデータを、顧客テーブル２１２または製品テーブル２１４（または購入テーブル２１６）のような新たなテーブルに行として挿入する（動作４１０）。たとえば、Ｊｏｈｎ  Ｓｍｉｔｈという顧客について、システム１００は、頂点ＩＤを含むデータとＪｏｈｎ  Ｓｍｉｔｈに関連づけられたデータとを、すべての他の顧客についてのデータとともに、顧客テーブル３０８に投影する。いくつかの実現において、メインテーブル２１０からトランザクションを抽出する際、システム１００は、複数の製品を含むトランザクションを、各々のトランザクションが単一の製品を有するように、複数のトランザクションに分離し得る。いくつかの実現において、これらのトランザクションのいくつかは、返金、購入、またはクリックスルーを含み得る。ハイパーグラフは、各行が連続して列挙されることを要求するので、システム１００は、各行に連続したＩＤ番号を割り当て、たとえば、１から顧客／製品／エッジの合計数までのシーケンス番号を割り当て得る。いくつかの実現では、中間テーブルは、正規化された形式のデータを記憶し得る。
【００４３】
システム１００は続いて、（たとえば、Ｈｉｖｅを使用して）割り当てられた最大のＩＤを計算し得、この最大のＩＤの値を動作４０４から開始する次の反復に渡し得る（動作４１２）。システム１００は続いて、それぞれのテーブルのためのヘッダファイルを生成する（動作４１４）。ヘッダファイルを生成することは、それぞれのテーブルにおける行の数を計算することと、列が文字列か整数かを決定することとを含み得る、ということに注意する。整数の列について、システム１００は、最小値および最大値を調べることによって、列が８ビット、１６ビット、または３２ビットの整数かどうかを決定する。
【００４４】
システム１００は、整形されたテーブルを、適切な列によってソートしてローカルファイルシステムに書き込む（動作４１６）。１つの実現において、システム１００は、テーブルのためのディスクスペースを割り振るために、ＳＱＬクエリを実行して文字列および他のフィールドのサイズを決定し得る。システム１００は、整形されたテーブルを書き込みながらテキストファイル２０６を生成し得る。
【００４５】
システム１００は続いて、元のテーブル（たとえば、メインテーブル２１０）を、エッジ属性およびグラフ構造のみを包含するより小さなテーブル（たとえば、購入テーブル２１６）に投影する（動作４１８）。その後、システム１００は、頂点間のエッジＩＤおよび連結情報のみを包含するトポロジーテーブルを生成し、その例は、図３Ｇに示されている（動作４２０）。システム１００は、連結およびエッジＩＤ情報のみを有するトポロジーテーブルを生成するために、動作４０６〜４１６と同様の方法を実行し得る。システム１００は続いて、各々のエッジＩＤについて、そのエッジに関連づけられたデータを包含するエッジ属性テーブルを生成する（動作４２２）。エッジ属性テーブルの例は、図３Ｆに示されている。システム１００は、エッジ属性テーブルを生成するために動作４０６〜４１６と同様の方法を実行し得る。ヘッダおよびテーブルを記憶するテキストファイルの生成後、システム１００は、グラフアナリティクスアプリケーション１０８にテキストファイルをサブミットし得る。
【００４６】
図５は、実施形態に係る、トランザクションデータからグラフ表現を生成するための例示的な装置５００を示すブロック図を提示する。装置５００は、有線または無線通信チャネルを介して互いに通信し得る複数のモジュールを備え得る。装置５００は、１つ以上の集積回路を使用して実現されることができ、図５に示すモジュールより少ないまたは多いモジュールを含み得る。さらに、装置５００は、コンピュータシステムに組み込まれることができ、または、他のコンピュータシステムおよび／またはデバイスと通信することができる別個のデバイスとして実現されることができる。特に、装置５００は、トランザクションデータ受信モジュール５０２、グラフアナリティクスアプリケーション１０８、トランザクションデータ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア１１４を備え得る。装置５００はまた、図５に示されていない追加のモジュールを含み得る、ということに注意する。
【００４７】
いくつかの実施形態において、トランザクションデータ受信モジュール５０２は、購入データのようなトランザクションデータを受信し得る。グラフアナリティクスアプリケーション１０８（たとえば、ハイパーグラフ）が、生成されたグラフを受信し、購入の推薦の生成を容易にするために、生成されたグラフを分析する。グラフ変換ソフトウェア１１４は、トランザクションデータ１１０からグラフデータ１１２を生成するために、本明細書において説明された変換処理を実行する。
【００４８】
図６は、実施形態に係る、トランザクションデータからグラフ表現を生成するための例示的なコンピュータシステム６００を示す。一実施形態において、コンピュータシステム６００は、プロセッサ６０２、メモリ６０４、およびストレージデバイス６０６を含む。ストレージデバイス６０６は、多数のアプリケーション、たとえば、アプリケーション６１０および６１２、およびオペレーティングシステム６１６を記憶する。ストレージデバイス６０６はまた、トランザクションデータ受信モジュール６０２、グラフアナリティクスアプリケーション１０８、トランザクションデータ１１０、グラフデータ１１２、およびグラフ変換ソフトウェア１１４を含み得る、グラフ変換システム１００を記憶する。動作中、グラフ変換システム１００のような１つ以上のアプリケーションが、ストレージデバイス６０６からメモリ６０４にロードされ、続いてプロセッサ６０２によって実行される。プログラムを実行している間、プロセッサ６０２は、上述した機能を実行する。コンピュータおよび通信システム６００は、光学ディスプレイ６１７、キーボード６１８、およびポインティングデバイス６２０に結合され得る。
【００４９】
この詳細な説明において説明されたデータ構造およびコードは典型的に、コンピュータシステムによる使用のためのコードおよび／またはデータを記憶し得る任意のデバイスまたは媒体であり得るコンピュータ可読記憶媒体に記憶される。コンピュータ可読記憶媒体は、揮発性メモリ、不揮発性メモリ、磁気および光学ストレージデバイス、たとえば、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）、または、現在知られているまたは後に開発されるコンピュータ可読媒体を記憶することができる他の媒体を含むが、これらに限定されない。
【００５０】
詳細な説明のセクションにおいて説明された方法および処理は、上述したコンピュータ可読記憶媒体に記憶され得るコードおよび／またはデータとして具体化され得る。コンピュータシステムがコンピュータ可読記憶媒体に記憶されたコードおよび／またはデータを読み取り、実行する場合、コンピュータシステムは、データ構造およびコードとして具体化され、コンピュータ可読記憶媒体の中に記憶された、方法および処理を実行する。
【００５１】
さらに、本明細書において説明された方法および処理は、ハードウェアモジュールまたは装置に含まれ得る。これらのモジュールまたは装置は、特定の時間に特定のソフトウェアモジュールまたはコードを実行する、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、専用または共有プロセッサ、および／または、現在知られているまたは後に開発される他のプログラマブルロジックデバイスを含み得るが、これらに限定されない。ハードウェアモジュールまたは装置が活動化されると、それらは、それらの中に含まれる方法および処理を実行する。
【図１】
2015130165.tif 000003
【図２】
2015130165.tif 000004
【図３Ａ】
2015130165.tif 000005
【図３Ｂ】
2015130165.tif 000006
【図３Ｃ】
2015130165.tif 000007
【図３Ｄ】
2015130165.tif 000008
【図３Ｅ】
2015130165.tif 000009
【図３Ｆ】
2015130165.tif 000010
【図３Ｇ】
2015130165.tif 000011
【図４Ａ】
2015130165.tif 000012
【図４Ｂ】
2015130165.tif 000013
【図５】
2015130165.tif 000014
【図６】
2015130165.tif 000015