(57)【要約】【課題】ある商品を購入したユーザが後に購入する商品を正確に特定できる情報処理装置、情報処理システム、情報処理プログラム、情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体、及び情報処理方法を提供する。【解決手段】情報処理装置１００は、有向グラフが有する２つのノードｉ，ｊについて、ノードｉにより表現される商品ｘが購入された後にノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、商品ｙが購入された後に商品ｘが購入された購入数ｎ[ｊ,ｉ]とを履歴記憶部から取得する。次に、情報処理装置１００は、１より大きい定数ＫについてＫ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、ノードｉを始点としノードｊを終点とするエッジｖ[ｉ,ｊ]を有向グラフに追加する。【選択図】図２
2012098845.tif 000002
【特許請求の範囲】
【請求項１】
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
を備えることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記追加部によるエッジの追加がされた後、前記グラフ記憶部に記憶された有向グラフが備える３つのノードｐ，ｑ，ｒについて、前記有向グラフが前記ノードｐを始点とし前記ノードｑを終点とするエッジｖ[ｐ,ｑ]と、前記ノードｐを始点とし前記ノードｒを終点とするエッジｖ[ｐ,ｒ]と、を備える場合、
（１）購入数ｎ[ｐ,ｑ]が購入数ｎ[ｐ,ｒ]に対して十分に大きければ、前記エッジｖ[ｐ,ｒ]を、前記有向グラフから削除し、
（２）前記購入数ｎ[ｐ,ｒ]が前記購入数ｎ[ｐ,ｑ]に対して十分に大きければ、前記エッジｖ[ｐ,ｑ]を、前記有向グラフから削除する、
削除部、
をさらに備えることを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、１未満の正定数Ｈについて、
（１）ｎ[ｐ,ｒ]／（ｎ[ｐ,ｑ]＋ｎ[ｐ,ｒ]）≦Ｈであれば、前記購入数ｎ[ｐ,ｑ]が前記購入数ｎ[ｐ,ｒ]に対して十分に大きいものとし、
（２）ｎ[ｐ,ｑ]／（ｎ[ｐ,ｑ]＋ｎ[ｐ,ｒ]）≦Ｈであれば、前記購入数ｎ[ｐ,ｒ]が前記購入数ｎ[ｐ,ｑ]に対して十分に大きいものとする、
ことを特徴とする情報処理装置。
【請求項４】
請求項１から３のいずれか一項に記載の情報処理装置であって、
前記複数の商品情報で示される商品のいずれかを指定する指定部、
前記グラフ記憶部に記憶された有向グラフにおいて、前記指定された商品を表現するノードから、エッジに沿ってたどった経路内のノードを順に抽出し、当該抽出されたノードを当該抽出された順序で並べたノード列を取得する取得部、
前記取得されたノード列に含まれるノードのそれぞれにより表現される商品を、当該ノードの当該ノード列における順序にしたがって並べた商品列を、前記指定された商品の後に購入が推薦される商品の順序として出力する出力部、
をさらに備えることを特徴とする情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記取得部は、前記指定された商品を表現するノードを注目ノードに設定した後、
（１）当該注目ノードを始点とするエッジの終点のノードであり、かつ、既に抽出されたノードでないノードからなるノード群を取得し、
（２）当該取得されたノード群から、いずれかのノードを抽出し、
（３）当該抽出されたノードを新たな注目ノードに設定し直して、終了条件が満たされるまで、前記処理（１）乃至前記処理（３）を繰り返す、
ことにより、前記経路内のノードを順に抽出する、
ことを特徴とする情報処理装置。
【請求項６】
請求項４に記載の情報処理装置であって、
前記取得部は、前記指定された商品を表現するノードを注目ノードに設定した後、
（１）当該指定された商品を表現するノードを始点とするエッジの終点であり、かつ、当該注目ノードを始点とするエッジの終点であり、かつ、既に抽出されたノードでないノードからなるノード群を取得し、
（２）当該取得されたノード群から、いずれかのノードを抽出し、
（３）当該抽出されたノードを新たな注目ノードに設定し直して、終了条件が満たされるまで、前記処理（１）乃至前記処理（３）を繰り返す、
ことにより、前記経路内のノードを順に抽出する、
ことを特徴とする情報処理装置。
【請求項７】
請求項５又は６に記載の情報処理装置であって、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードのうち、当該ノードを始点とするエッジの数が最大のノードを抽出する、
ことを特徴とする情報処理装置。
【請求項８】
請求項５又は６に記載の情報処理装置であって、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードのうち、当該ノードを始点とし、当該ノード群に含まれるいずれかのノードを終点とするエッジの数が最大のノードを抽出する、
ことを特徴とする情報処理装置。
【請求項９】
請求項５又は６に記載の情報処理装置であって、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードを始点ならびに終点とするエッジをたどる経路であって、当該経路内における各ノードを通過する回数が１回限りの経路のうち、長さが最大である経路の始点のノードを抽出する、
ことを特徴とする情報処理装置。
【請求項１０】
請求項５から９のいずれか一項に記載の情報処理装置であって、
前記終了条件は、前記ノード群が取得できなくなると、満たされる、
ことを特徴とする情報処理装置。
【請求項１１】
請求項５から９のいずれか一項に記載の情報処理装置であって、
前記終了条件は、所定の数のノードが抽出されると、満たされる、
ことを特徴とする情報処理装置。
【請求項１２】
請求項５から１１のいずれか一項に記載の情報処理装置であって、
前記指定部は、前記複数の商品情報で示される商品のうち、前記グラフ記憶部に記憶される有向グラフにおいて当該商品を表現するノードがいずれかのエッジの始点となっており、いずれのエッジの終点でもないノードにより表現される商品を、指定する、
ことを特徴とする情報処理装置。
【請求項１３】
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフの２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
を備えることを特徴とする情報処理システム。
【請求項１４】
コンピュータを、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
として機能させることを特徴とする情報処理プログラム。
【請求項１５】
コンピュータを、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
として機能させることを特徴とする情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
履歴保存部と追加部とを備える情報処理装置が実行する方法であって、
前記履歴保存部が、商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を履歴記憶部へ複数保存する、
履歴保存ステップ、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフの２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加ステップ、
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理プログラム、情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体、及び情報処理方法に関する。
【背景技術】
【０００２】
従来から、商品の購買履歴データに基づいて顧客に商品を推薦する技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２７９２７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、特許文献１の技術では、ある商品を購入したユーザが後に購入する商品を正確に特定できないという問題があった。
【０００５】
本発明は、このような点に鑑みてなされたものであり、その目的とするところは、ある商品を購入したユーザが後に購入する商品を正確に特定できる情報処理装置、情報処理システム、情報処理プログラム、情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体、及び情報処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点に係る情報処理装置は、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
を備えることを特徴とする。
【０００７】
また、第１の観点に係る情報処理装置において、
前記追加部によるエッジの追加がされた後、前記グラフ記憶部に記憶された有向グラフが備える３つのノードｐ，ｑ，ｒについて、前記有向グラフが前記ノードｐを始点とし前記ノードｑを終点とするエッジｖ[ｐ,ｑ]と、前記ノードｐを始点とし前記ノードｒを終点とするエッジｖ[ｐ,ｒ]と、を備える場合、
（１）購入数ｎ[ｐ,ｑ]が購入数ｎ[ｐ,ｒ]に対して十分に大きければ、前記エッジｖ[ｐ,ｒ]を、前記有向グラフから削除し、
（２）前記購入数ｎ[ｐ,ｒ]が前記購入数ｎ[ｐ,ｑ]に対して十分に大きければ、前記エッジｖ[ｐ,ｑ]を、前記有向グラフから削除する、
削除部、
をさらに備えるとしても良い。
【０００８】
また、第１の観点に係る情報処理装置において、
１未満の正定数Ｈについて、
（１）ｎ[ｐ,ｒ]／（ｎ[ｐ,ｑ]＋ｎ[ｐ,ｒ]）≦Ｈであれば、前記購入数ｎ[ｐ,ｑ]が前記購入数ｎ[ｐ,ｒ]に対して十分に大きいものとし、
（２）ｎ[ｐ,ｑ]／（ｎ[ｐ,ｑ]＋ｎ[ｐ,ｒ]）≦Ｈであれば、前記購入数ｎ[ｐ,ｒ]が前記購入数ｎ[ｐ,ｑ]に対して十分に大きいものとする、
としても良い。
【０００９】
また、第１の観点に係る情報処理装置において、
前記複数の商品情報で示される商品のいずれかを指定する指定部、
前記グラフ記憶部に記憶された有向グラフにおいて、前記指定された商品を表現するノードから、エッジに沿ってたどった経路内のノードを順に抽出し、当該抽出されたノードを当該抽出された順序で並べたノード列を取得する取得部、
前記取得されたノード列に含まれるノードのそれぞれにより表現される商品を、当該ノードの当該ノード列における順序にしたがって並べた商品列を、前記指定された商品の後に購入が推薦される商品の順序として出力する出力部、
をさらに備えるとしても良い。
【００１０】
また、第１の観点に係る情報処理装置において、
前記取得部は、前記指定された商品を表現するノードを注目ノードに設定した後、
（１）当該注目ノードを始点とするエッジの終点のノードであり、かつ、既に抽出されたノードでないノードからなるノード群を取得し、
（２）当該取得されたノード群から、いずれかのノードを抽出し、
（３）当該抽出されたノードを新たな注目ノードに設定し直して、終了条件が満たされるまで、前記処理（１）乃至前記処理（３）を繰り返す、
ことにより、前記経路内のノードを順に抽出する、
としても良い。
【００１１】
また、第１の観点に係る情報処理装置において、
前記取得部は、前記指定された商品を表現するノードを注目ノードに設定した後、
（１）当該指定された商品を表現するノードを始点とするエッジの終点であり、かつ、当該注目ノードを始点とするエッジの終点であり、かつ、既に抽出されたノードでないノードからなるノード群を取得し、
（２）当該取得されたノード群から、いずれかのノードを抽出し、
（３）当該抽出されたノードを新たな注目ノードに設定し直して、終了条件が満たされるまで、前記処理（１）乃至前記処理（３）を繰り返す、
ことにより、前記経路内のノードを順に抽出する、
としても良い。
【００１２】
また、第１の観点に係る情報処理装置において、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードのうち、当該ノードを始点とするエッジの数が最大のノードを抽出する、
としても良い。
【００１３】
また、第１の観点に係る情報処理装置において、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードのうち、当該ノードを始点とし、当該ノード群に含まれるいずれかのノードを終点とするエッジの数が最大のノードを抽出する、
としても良い。
【００１４】
また、第１の観点に係る情報処理装置において、
前記取得部は、前記処理（２）において、当該取得されたノード群に含まれるノードを始点ならびに終点とするエッジをたどる経路であって、当該経路内における各ノードを通過する回数が１回限りの経路のうち、長さが最大である経路の始点のノードを抽出する、
としても良い。
【００１５】
また、第１の観点に係る情報処理装置において、
前記終了条件は、前記ノード群が取得できなくなると、満たされる、
としても良い。
【００１６】
また、第１の観点に係る情報処理装置において、
前記終了条件は、所定の数のノードが抽出されると、満たされる、
としても良い。
【００１７】
また、第１の観点に係る情報処理装置において、
前記指定部は、前記複数の商品情報で示される商品のうち、前記グラフ記憶部に記憶される有向グラフにおいて当該商品を表現するノードがいずれかのエッジの始点となっており、いずれのエッジの終点でもないノードにより表現される商品を、指定する、
としても良い。
【００１８】
また、上記目的を達成するため、本発明の第２の観点に係る情報処理システムは、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフの２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
を備えることを特徴とする。
【００１９】
また、上記目的を達成するため、本発明の第３の観点に係る情報処理プログラムは、
コンピュータを、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
として機能させることを特徴とする。
【００２０】
また、上記目的を達成するため、本発明の第４の観点に係るコンピュータ読み取り可能な記録媒体が記録した情報処理プログラムは、
コンピュータを、
商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を複数記憶する履歴記憶部、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフを記憶可能なグラフ記憶部、
前記有向グラフが備える２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加部、
として機能させることを特徴とする。
【００２１】
さらに上記目的を達成するため、本発明の第５の観点に係る情報処理方法は、
履歴保存部と追加部とを備える情報処理装置が実行する方法であって、
前記履歴保存部が、商品を購入したユーザを示すユーザ情報と、前記ユーザが前記商品を購入した購入日時を示す情報と、前記商品を示す商品情報と、を履歴記憶部へ複数保存する、
履歴保存ステップ、
前記複数の商品情報で示される商品のそれぞれを表現するノードと、第一の商品と第二の商品とが前記ユーザにより購入された順序を表現するエッジと、を備える有向グラフの２つのノードｉ，ｊについて、前記ノードｉにより表現される商品ｘが購入された後に前記ノードｊにより表現される商品ｙが購入された購入数ｎ[ｉ,ｊ]と、前記商品ｙが購入された後に前記商品ｘが購入された購入数ｎ[ｊ,ｉ]と、を、前記履歴記憶部から取得し、１より大きい定数Ｋについて、
（１）Ｋ×ｎ[ｊ,ｉ]≦ｎ[ｉ,ｊ]が成立すれば、前記ノードｉを始点とし前記ノードｊを終点とするエッジｖ[ｉ,ｊ]を、前記有向グラフに追加し、
（２）Ｋ×ｎ[ｉ,ｊ]≦ｎ[ｊ,ｉ]が成立すれば、前記ノードｊを始点とし前記ノードｉを終点とするエッジｖ[ｊ,ｉ]を、前記有向グラフに追加する、
追加ステップ、
を有することを特徴とする。
【発明の効果】
【００２２】
本発明に係る情報処理装置、情報処理システム、情報処理プログラム、情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体、及び情報処理方法によれば、ある商品を購入したユーザが後に購入する商品を正確に特定できる。
【図面の簡単な説明】
【００２３】
【図１】（ａ）は、本発明の実施例１に係る情報処理システムの一構成例を表すシステム構成図である。（ｂ）は、本発明の実施例１に係る情報処理装置の一構成例を表すハードウェア構成図である。
【図２】情報処理装置が発揮する機能の一例を表す機能ブロック図である。
【図３】（ａ）は、商品テーブルの一例を表す図である。（ｂ）は、履歴テーブルの一例を表す図である。（ｃ）は、前後関係テーブルの一例を表す図である。
【図４】（ａ）は、有向グラフの一例を表す図である。（ｂ）は、ノードテーブルの一例を表す図である。（ｃ）は、エッジテーブルの一例を表す図である。
【図５】（ａ）は、実施例１の情報処理装置が実行する順序特定処理の一例を表すフローチャートである。（ｂ）は、実施例２の情報処理装置が実行する順序特定処理の一例を表すフローチャートである。
【図６】情報処理装置が実行するエッジ追加処理の一例を表すフローチャートである。
【図７】（ａ）は、情報処理装置が実行する順方向エッジ追加処理の一例を表すフローチャートである。（ｂ）は、情報処理装置が実行する逆方向エッジ追加処理の一例を表すフローチャートである。
【図８】情報処理装置が実行するエッジ見直処理の一例を表すフローチャートである。
【図９】（ａ）は、情報処理装置が実行する購入順序取得処理の一例を表すフローチャートである。（ｂ）は、情報処理装置が実行する購入順序取得処理の他例を表すフローチャートである。
【図１０】（ａ）は、注目ノードｉ００１のノード群の一例を表す図である。（ｂ）は、注目ノードｉ００２のノード群の一例を表す図である。（ｃ）は、注目ノードｉ００３のノード群の一例を表す図である。（ｄ）は、注目ノードｉ００４のノード群の一例を表す図である。（ｅ）は、注目ノードｉ００２のノード群の他例を表す図である。
【図１１】（ａ）は、注目ノードｉ００１用の抽出ノードリストの一例を表す図である。（ｂ）は、注目ノードｉ００２用の抽出ノードリストの一例を表す図である。（ｃ）は、注目ノードｉ００３用の抽出ノードリストの一例を表す図である。（ｄ）は、注目ノードｉ００４用の抽出ノードリストの一例を表す図である。（ｅ）は、注目ノードｉ００５用の抽出ノードリストの一例を表す図である。（ｆ）は、注目ノードｉ００６用の抽出ノードリストの一例を表す図である。（ｇ）は、抽出ノードリストの併合結果の一例を表す図である。（ｈ）は、抽出ノードリストの併合結果の他例を表す図である。
【図１２】情報処理装置が実行する商品販売処理の一例を表すフローチャートである。
【図１３】（ａ）は、商品詳細ページの一例を表す図である。（ｂ）は、商品推薦ページの一例を表す図である。
【図１４】実施例１の情報処理装置が実行する商品推薦処理の一例を表すフローチャートである。
【図１５】実施例２の情報処理装置が実行する商品推薦処理の一例を表すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施例について添付図面を参照しつつ説明する。
【実施例１】
【００２５】
本発明の実施例１に係る情報処理システム１は、図１（ａ）に示すように、コンピュータ通信網１０（以下単に、通信網１０という）、本発明の情報処理装置であるサーバ装置１００、及び端末装置２０１から２０３で構成される。端末装置２０１から２０３は、それぞれ同様の構成を有するため、以下、端末装置２０１についてのみ説明する。
【００２６】
通信網１０は、例えば、インターネットで構成される。通信網１０は、ＬＡＮ（Local Area Network）又は公衆回線網であっても良い。
【００２７】
端末装置２０１は、例えば、ＬＣＤ（Liquid Crystal Display）などの表示部と、キーボードなどの入力部とを備えたパーソナル・コンピュータで構成される。端末装置２０１は、ユーザに操作されて、操作に応じた各種の信号を情報処理システム１に入力し、入力された信号に基づいた情報を情報処理装置１００へ送信する。また、端末装置２０１は、情報処理装置１００から返信された情報を受信し、受信された情報に基づいて表示部に各種の情報を表示する。
【００２８】
情報処理装置１００は、ウェブサーバソフトウェアをインストールされたサーバ機である。情報処理装置１００は、端末装置２０１から送信されたリクエストに応じて、商品を掲載したウェブページ（以下、商品ページという）を返信する。次に、情報処理装置１００は、端末装置２０１のユーザが、商品ページに掲載された商品を購入することを表す情報を端末装置２０１から受信すると、当該ユーザが当該商品の購入後に購入する商品を特定し、特定した商品の購入を勧めるウェブページ（以下、商品推薦ページという）を返信する。
【００２９】
ここで、複数の商品には、例えば、「１巻目」や「２巻目」などの商品の購入順序があるシリーズ商品がある。また、複数の商品には、例えば、「コーヒーメーカー」と「コーヒー豆」のように、商品の用途などに基づいて定まる購入順序があるものがある。
【００３０】
ここで、商品には、作品を商品化した商品を含むため、複数の商品には、本編作品の商品と続編作品の商品、又は原作作品の商品と派生作品の商品といった商品の関連性に基づいて定まる購入順序があるものがある。尚、原作となった作品を原作作品といい、原作作品から派生して制作された作品を派生作品という。派生作品の例としては、映画作品が制作されることに伴って制作された、映画で用いられる音楽の派生作品が挙げられる。また、ある作品を基準となる基準作品とすると、基準作品の原作作品と派生作品とは、根源的又は派生的に関連しているので、これらを関連作品という。よって、原作作品、派生作品、及び関連作品を商品化した商品をそれぞれ原作商品、派生商品、及び関連商品という。
【００３１】
これらの商品名を有する商品からユーザが購入する商品を特定する情報処理装置１００は、図１（ｂ）に示すように、ＣＰＵ（Central Processing Unit）１００ａ、ＲＯＭ（Read Only Memory）１００ｂ、ＲＡＭ（Random Access Memory）１００ｃ、ハードディスク１００ｄ、メディアコントローラ１００ｅ、ＬＡＮカード（Local Area Network）１００ｆ、ビデオカード１００ｇ、ＬＣＤ（Liquid Crystal Display）１００ｈ、キーボード１００ｉ、スピーカ１００ｊ、及びマウス１００ｋで構成される。
【００３２】
ＣＰＵ１００ａは、ＲＯＭ１００ｂ又はハードディスク１００ｄに保存されたプログラムに従ってソフトウェア処理を実行することで、情報処理装置１００の全体制御を行う。ＲＡＭ１００ｃは、ＣＰＵ１００ａによるプログラムの実行時において、処理対象とする情報（つまり、データ）を一時的に記憶する。
【００３３】
ハードディスク１００ｄは、各種の情報（つまり、データ）を保存した表（つまり、テーブル）を記憶する情報記憶部である。尚、情報処理装置１００は、ハードディスク１００ｄの代わりに、フラッシュメモリを備えても良い。
【００３４】
図１（ｂ）のメディアコントローラ１００ｅは、フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、及びブルーレイディスク（Blu-ray Disc）（登録商標）を含む記録媒体から各種のデータ及びプログラムを読み出す。
【００３５】
ＬＡＮカード１００ｆは、通信網１０を介して接続する端末装置２０１ないし２０３との間でデータを送受信する。キーボード１００ｉ及びマウス１００ｋは、ユーザの操作に応じた信号又は情報を入力する。ＬＡＮカード１００ｆ、キーボード１００ｉ、及びマウス１００ｋは、それぞれ情報入力部を構成する。
【００３６】
ビデオカード１００ｇは、ＣＰＵ１００ａから出力されたデジタル信号に基づいて画像を描画（つまり、レンダリング）すると共に、描画された画像を表す画像信号を出力する。ＬＣＤ１００ｈは、ビデオカード１００ｇから出力された画像信号に従って画像を表示する表示部である。なお、情報処理装置１００は、ＬＣＤ１００ｈの代わりに、ＰＤＰ（Plasma Display Panel）又はＥＬ（Electroluminescence）ディスプレイを備えても良い。スピーカ１００ｊは、ＣＰＵ１００ａから出力された信号に基づいて音声を出力する。ＬＡＮカード１００ｆ、ＬＣＤ１００ｈ、及びスピーカ１００ｊは、それぞれ情報出力部を構成する。
【００３７】
情報処理装置１００のＣＰＵ１００ａは、図１（ｂ）のハードディスク１００ｄと協働することで、図２に示すような設定記憶部１０１、商品記憶部１０２、履歴記憶部１０３、及びグラフ記憶部１０４として機能する。
【００３８】
設定記憶部１０１について説明する前に、商品記憶部１０２、履歴記憶部１０３、及びグラフ記憶部１０４について説明する。商品記憶部１０２は、図３（ａ）に示すような、商品を識別する商品ＩＤと、商品を詳細に説明する商品詳細情報と対応付けて保存した商品テーブルＴＸを記憶する。ここで、商品詳細情報は、例えば、商品名を表す商品名情報と、商品の種類を表す情報と、商品によって提供される作品の種類を表す情報と、商品の画像ファイル名を表す情報と、商品の金額を表す金額情報とを含む。
【００３９】
履歴記憶部１０３は、図３（ｂ）に示すような、購入履歴を表す履歴情報を保存した履歴テーブルＴＨを記憶する。履歴テーブルＴＨは、商品を購入したユーザを識別するユーザＩＤと、商品を購入した日時を表す購入日時情報と、ユーザが購入した商品の商品ＩＤと、商品の金額情報とを対応付けて保存している。
【００４０】
尚、ユーザは、常に、情報処理装置１００を用いて商品を購入する訳ではなく、他のシステムを用いて商品を購入することがある。このため、例えば、ユーザがシリーズ商品である「○○マン  １巻」、「○○マン  ２巻」、「○○マン  ３巻」、「○○マン  ４巻」を購入したとしても、これらの４つの商品の商品ＩＤの全てと、当該ユーザのユーザＩＤとを履歴テーブルＴＨが管理しているとは限らない。例えば、ユーザが情報処理装置１００を用いて「○○マン  １巻」、「○○マン  ２巻」、及び「○○マン  ４巻」を購入したが、ユーザの嗜好を良く知る友人から「○○マン  ３巻」をプレゼントされた場合などには、商品ＩＤを履歴テーブルＴＨは、「○○マン  ３巻」の商品ＩＤと当該ユーザのユーザＩＤとを対応付けたデータを有していない。このため、履歴テーブルＴＨが管理するユーザＩＤと商品ＩＤとの組合せは、商品のシリーズ順に正しく並んでいるとは限らない。
【００４１】
履歴記憶部１０３は、図３（ｃ）に示すような、商品購入における前後関係を表す情報を保存した前後関係テーブルＴＦＲを記憶する。前後関係テーブルＴＦＲは、所定期間において、同じユーザによって購入された２つの商品の内、先に購入された商品（以下、先商品という）の商品ＩＤ（以下、先商品ＩＤという）と、後に購入された商品（以下、後商品という）の商品ＩＤ（以下、後商品ＩＤという）とを対応付けて保存する。また、前後関係テーブルＴＦＲは、先商品ＩＤで識別される先商品が購入された後に、当該先商品を購入したユーザと同じユーザが、後商品ＩＤで識別される後商品を購入した回数（つまり、１ユーザが同じ商品を２回以上購入しないとすると、先商品の後に後商品を購入したユーザ数と同じになる）を、先商品ＩＤと、後商品ＩＤと、処理済フラグとに対応付けて保存している。尚、処理済フラグについては後述する。
【００４２】
グラフ記憶部１０４は、図４（ａ）に示すような有向グラフを表す情報を記憶する。ここで、グラフ記憶部１０４が記憶する有向グラフは、商品を表現するノードと、始点とされたノードから終点とされたノードまでを結ぶ矢印で表されるエッジとを有する。具体的には、ノードｉ００１、ノードｉ００２、ノードｉ００３、及びノードｉ０００４のような、図３（ａ）の商品テーブルＴＸに保存された商品ＩＤ「ｘ００１」、「ｘ００２」、「ｘ００３」、及び「ｘ００４」で識別される商品をそれぞれ表現するノードを複数有する。また、有向グラフは、例えば、ノードｉ００１を始点とし、ノードｉ００２を終点とし、視点から終点へ向かう矢印で表されるエッジｖ０００１のようなエッジを複数有する。エッジｖ０００１は、ノードｉ００１で表現される商品が、ノードｉ００２で表現される商品よりも先に購入された先商品であることを表す。
【００４３】
このため、有向グラフを表す情報は、ノードを表す情報と、エッジを表す情報とを含む。よって、グラフ記憶部１０４は、ノードを表す情報を保存するノードテーブルＴＮと、エッジを表す情報を保存するエッジテーブルＴＥとを記憶している。
【００４４】
ノードテーブルＴＮは、図４（ｂ）に示すように、ノードを識別するノードＩＤと、ノードで表現される商品の商品ＩＤとを対応づけて保存する。エッジテーブルＴＥは、図４（ｃ）に示すように、エッジを識別するエッジＩＤと、エッジの始点とされたノード（以下、始点ノードという）のノードＩＤ（以下、始点ノードＩＤという）と、エッジの終点とされたノード（以下、終点ノードという）のノードＩＤ（以下、終点ノードＩＤという）とを対応付けて保存している。尚、連鎖数については後述する。
【００４５】
設定記憶部１０１は、各種の設定値が保存される電子ファイル（以下、設定ファイルという）を記憶する。ここで、設定ファイルに保存される設定値は、商品の前後関係を特定するために用いられる所定の定数Ｋの設定値が含まれる。また、設定ファイルに保存される設定値は、前後関係を有すると特定された先商品と後商品とが関連性を有するか否か（例えば、ユーザは、先商品と後商品とが関連性を有するから先商品の購入後に後商品を購入したのか、単なる偶然であるか）を判別するために用いられる所定の定数Ｈに設定される設定値もさらに含まれる。この定数Ｋの設定値及びこの定数Ｈの設定値は、端末装置２０１によって変更されても良いし、工場出荷の段階で予め定められていても良い。また、定数Ｋの設定値は「１」より大きい値であり、例えば、「３」として良い。定数Ｈの設定値は「０」より大きく、かつ「１」より小さい値であり、例えば、「０．０３」として良い。
【００４６】
情報処理装置１００のＣＰＵ１００ａは、上記情報を用いて、図５（ａ）に示すような、ユーザが商品を購入する購入順序を特定する順序特定処理を実行する。これにより、ＣＰＵ１００ａは、図２に示すような初期化部１１１、ノード追加部１１２、前後関係特定部１１３、回数算出部１１４、回数判定部１１５、エッジ削除部１１６、エッジ追加部１１７、購入順序取得部１１８、及び商品指定部１９３として機能する。尚、順序特定処理は、例えば、１週間などの設定ファイルに保存された設定値の周期で実行される。
【００４７】
図５（ａ）の順序特定処理の実行を開始すると、図２の初期化部１１１は、初期化処理を実行する（ステップＳ０１）。具体的には、初期化部１１１は、図４（ｂ）のノードテーブルＴＮ及びエッジテーブルＴＥから全レコードを削除することで、有向グラフがノード及びエッジを有しないように初期化する。また、初期化部１１１は、設定記憶部１０１に記憶された設定ファイルから、定数Ｋ及び定数Ｈに設定する設定値をそれぞれ読み出し、読み出した値を定数Ｋ及び定数Ｈにそれぞれ設定する。
【００４８】
次に、ノード追加部１１２は、ノード追加処理を実行する（ステップＳ０２）。具体的には、ノード追加部１１２は、図３（ａ）の商品テーブルＴＸを読み出し、商品テーブルＴＸに保存された商品ＩＤのそれぞれについて、図３（ｂ）の履歴テーブルＴＨから商品の販売数量を算出する。次に、ノード追加部１１２は、算出された販売数量が所定の閾値（例えば、「1000」個）以上の商品についてそれぞれノードＩＤを生成する。その後、ノード追加部１１２は、読み込んだ商品ＩＤと、生成したノードＩＤとを対応づけて、図４（ｂ）のノードテーブルＴＮに追加する。
【００４９】
その後、図６のエッジ追加処理の実行が開始されると、図２の前後関係特定部１１３は、図３（ｂ）の履歴テーブルＴＨに保存された複数の商品ＩＤでそれぞれ識別される商品の前後関係を特定する前後関係特定処理を実行する（ステップＳ１１）。
【００５０】
具体例として、前後関係特定部１１３は、履歴テーブルＴＨの先頭から１レコード読み出してから、読み出したレコードに保存された商品ＩＤとユーザＩＤと購入日時情報とを取得した後に、取得された商品ＩＤを先商品ＩＤとする。次に、前後関係特定部１１３は、取得された購入日時情報で表される購入時刻から所定時間後の時間までの時刻を表す情報と、取得されたユーザＩＤとを保存したレコードを履歴テーブルＴＸから検索する。尚、この所定時間は、例えば、端末装置２０１によって指定され、設定ファイルに保存されているとしても良い。
【００５１】
その後、前後関係特定部１１３は、検索されたレコード毎に、検索されたレコードに保存された商品ＩＤ（つまり、後商品ＩＤ）を取得する。これによって、前後関係特定部１１３は、取得されたユーザＩＤで識別されるユーザが、取得された購入日時情報で表される時刻に、取得された先商品ＩＤで識別される商品を購入してから所定時間以内に購入した後商品の商品ＩＤを取得できる。
【００５２】
その後、前後関係特定部１１３は、図３（ｃ）の前後関係テーブルＴＦＲから、取得された先商品ＩＤと、取得された後商品ＩＤとを保存したレコードを検索し、レコードが検索された場合には、検索されたレコードに保存された情報で表される回数を値「１」だけ増加した値に更新する。これに対して、レコードが検索されなかった場合には、取得された先商品ＩＤと、取得された後商品ＩＤと、購入回数「１」と、オフ状態の処理済みフラグとを対応付けた情報を保存したレコードを前後関係テーブルＴＦＲに追加する。本実施例において、１ユーザは１つの商品を１回しか購入しないと仮定し、同一ユーザ、同一先商品ＩＤ、同一後商品ＩＤに対しては、１度しか購入回数をインクリメントしないとしても良い。また、これに限定されるのではなく、１ユーザは１つの商品を何回も購入すると仮定し、同一ユーザ、同一先商品ＩＤ、同一後商品ＩＤに対して、検索されたレコードがある限り、何度でも購入回数をインクリメントするとしても良い。その後、前後関係特定部１１３は、読み出しの対象としたレコードの次のレコードを履歴テーブルＴＨから読み出し、履歴テーブルＴＸから読み出すレコードが無くなるまで、上記処理を繰り返す。
【００５３】
図６のステップＳ１１を実行した後に、図２の回数算出部１１４は、図３（ｃ）の前後関係テーブルＴＦＲの処理済みフラグがオフ状態のレコード（以下、未処理のレコードという）の全てを処理したか否かを判別する（ステップＳ１２）。尚、処理済みフラグは、オン状態でエッジ追加処理におけるステップＳ１３からＳ２３の処理対象とされたことを表し、オフ状態で処理対象とされていないことを表す。
【００５４】
ステップＳ１２において、回数算出部１１４は、全ての未処理のレコードを処理した訳ではないと判別した場合には（ステップＳ１２；Ｎｏ）、未処理のレコードの１つを注目レコードとする（ステップＳ１３）。次に、回数算出部１１４は、注目レコードに保存された先商品ＩＤを注目先商品ＩＤとし、注目先商品ＩＤに基づいて未処理のレコードを検索する。その後、回数算出部１１４は、検索された未処理のレコードに保存された後商品ＩＤと、購入回数とを検索する（ステップＳ１４）。その後、回数算出部１１４は、検索された全ての後商品ＩＤについて、ステップＳ１６からＳ２３までの処理の対象としたか否かを判別する（ステップＳ１５）。
【００５５】
ステップＳ１５において、回数算出部１１４は、検索された全ての後商品ＩＤについて処理の対象とした訳ではないと判別された場合（ステップＳ１５；Ｎｏ）、未処理の後商品ＩＤの１つを注目後商品ＩＤとする（ステップＳ１６）。
【００５６】
ここで、理解を容易にするために、注目先商品ＩＤで識別される注目先商品を表現するノードを記号「ｉ」で表し、注目後商品ＩＤで識別される注目後商品を表現するノードを記号「ｊ」で表し、ステップＳ１４で検索された購入回数を記号「ｎ[ｉ，ｊ]」で表す。
【００５７】
ステップＳ１６の後に、回数算出部１１４は、後商品ＩＤ列に注目先商品ＩＤを、先商品ＩＤ列に注目後商品ＩＤを保存したレコードを、前後関係テーブルＴＦＲから検索する（ステップＳ１７）。その後、回数算出部１１４は、検索されたレコードに保存された購入回数を取得する（ステップＳ１８）尚、ステップＳ１８で検索された購入回数を、上記記号を用いて、記号「ｎ[ｊ，ｉ]」で表す。
【００５８】
その後、図２の回数判別部１１５は、ステップＳ１４の購入回数ｎ[ｉ，ｊ]と、ステップＳ１８の購入回数ｎ[ｊ，ｉ]と、図５（ａ）のステップＳ０１で設定された定数Ｋとが、以下の式（１）及び（２）を同時に成立させるという条件１Ａを満足するか否かを判別する（ステップＳ１９）。
【００５９】
ｎ[ｊ，ｉ]≦ｎ[ｉ，ｊ]・・・（１）
Ｋ×ｎ[ｊ，ｉ]≦ｎ[ｉ，ｊ]・・・（２）
但し、１＜Ｋ
【００６０】
ここで、ノードｉで表現される商品を記号「ｘ」で表し、ノードｊで表現される商品を記号「ｙ」で表した場合に、この条件１Ａは、例えば、商品ｘの購入後所定期間内に商品ｙが購入された回数の方が、商品ｙの購入後所定期間内に商品ｘが購入された回数よりもＫ倍以上多い場合に成立する。ここで、定数Ｋを好適な値に設定すると、条件１Ａは、後商品が、先商品の派生商品であるか、又は先商品の続編商品である場合に成立することが多い。ここで、基準商品の派生商品や、本編作品の続編商品は、基準商品及び本編作品が購入された後に購入されることが多い。このため、これらの構成によれば、条件１Ａを満足するか否かに基づいて、先商品を購入したユーザが、先商品を購入してから所定期間内に後商品を購入するということを精度良く特定できる。
【００６１】
図６のステップＳ１９において、エッジ追加部１１７は、条件１Ａが満足されると判別すると（ステップＳ１９；Ｙｅｓ）、図７（ａ）に示すような、注目先商品を表現するノードｉを始点とし、注目後商品を表現するノードｊを終点とするエッジｖ[ｉ，ｊ]を有向グラフに追加する順方向エッジ追加処理を実行する（ステップＳ２０）。
【００６２】
図７（ａ）の順方向エッジ追加処理を開始すると、エッジ追加部１１７は、注目先商品ＩＤに基づき、注目先商品を表現するノードのノードＩＤを、図４（ｂ）のノードテーブルＴＮから検索する（ステップＳ３１）。次に、エッジ追加部１１７は、検索されたノードＩＤを、有向グラフへ新たに追加するエッジの始点ノードＩＤとする（ステップＳ３２）。
【００６３】
エッジ追加部１１７は、注目後商品ＩＤに基づき、注目後商品を表現するノードのノードＩＤを、ノードテーブルＴＮから検索する（ステップＳ３３）。次に、エッジ追加部１１７は、検索されたノードＩＤを、新たに追加するエッジの終点ノードＩＤとする（ステップＳ３４）。
【００６４】
その後、エッジ追加部１１７は、新たに追加するエッジを識別するエッジＩＤを生成する（ステップＳ３５）。次に、エッジ追加部１１７は、生成されたエッジＩＤと、始点ノードＩＤと、終点ノードＩＤとを対応付けて、図４（ｃ）のエッジテーブルＴＥに保存する（ステップＳ３６）。その後、エッジ追加部１１７は、順方向エッジ追加処理の実行を終了する。
【００６５】
図６のステップＳ１９において、エッジ追加部１１７は、条件１Ａが満足されないと判別すると（ステップＳ１９；Ｎｏ）、購入回数ｎ[ｉ，ｊ]と、購入回数ｎ[ｊ，ｉ]と、定数Ｋとが、以下の式（３）及び（４）を同時に成立させるという条件１Ｂを満足するか否かを判別する（ステップＳ２１）。
【００６６】
ｎ[ｉ，ｊ]＜ｎ[ｊ，ｉ]・・・（３）
Ｋ×ｎ[ｉ，ｊ]＜ｎ[ｊ，ｉ]・・・（４）
但し、１＜Ｋ
【００６７】
上記と同様に、ノードｉで表現される商品を記号「ｘ」で表し、ノードｊで表現される商品を記号「ｙ」で表した場合に、この条件１Ｂは、例えば、商品ｙの購入後所定期間内に商品ｘが購入された回数の方が、商品ｘの購入後所定期間内に商品ｙが購入された回数よりもＫ倍より多い場合に成立する。尚、定数Ｋは、上記と同様に、値「３」として良い。
【００６８】
図６のステップＳ２１において、エッジ追加部１１７は、条件１Ｂが満足されないと判別すると（ステップＳ２１；Ｎｏ）、エッジを追加せずにステップＳ２３の処理を実行する。また、条件１Ｂ（及び条件１Ａ）が満足されないと判別された場合（ステップＳ２１；Ｎｏ）、注目先ノードを始点ノードとし、かつ注目後ノードを終点ノードとするエッジを有向グラフが既に有している場合には当該エッジを削除し、注目後ノードを始点ノードとし、かつ注目先ノードを終点ノードとするエッジを有向グラフが既に有している場合には当該エッジを削除するとしても良い。これらの構成によれば、例えば、後商品が先商品の関連商品でないため、先商品と後商品とに購入順序の先後関係が無いにも関わらず、先商品を購入したユーザが、先商品を購入してから所定期間内に後商品を購入すると特定することを防止できる。
【００６９】
ステップＳ２１において、エッジ追加部１１７は、条件１Ｂが満足されると判別すると（ステップＳ２１；Ｙｅｓ）、図７（ｂ）に示すような、注目後商品を表現するノードｊを始点とし、注目先商品を表現するノードｉを終点とするエッジｖ[ｊ，ｉ]を有向グラフに追加する逆方向エッジ追加処理を実行する（ステップＳ２２）。
【００７０】
図７（ｂ）の逆方向エッジ追加処理を開始すると、エッジ追加部１１７は、注目後商品ＩＤに基づき、注目後商品を表現するノードのノードＩＤを検索し（ステップＳ４１）し、検索されたノードＩＤを、新たに追加されるエッジの始点ノードＩＤとする（ステップＳ４２）。次に、エッジ追加部１１７は、注目先商品ＩＤに基づき、注目先商品を表現するノードのノードＩＤを検索し（ステップＳ４３）、検索されたノードＩＤを、新たに追加されるエッジの終点ノードＩＤとする（ステップＳ４４）。
【００７１】
その後、エッジ追加部１１７は、追加されるエッジを識別するエッジＩＤを生成し（ステップＳ４５）、生成されたエッジＩＤと、始点ノードＩＤと、終点ノードＩＤとを対応付けてエッジテーブルＴＥに保存する（ステップＳ４６）。その後、エッジ追加部１１７は、逆方向エッジ追加処理の実行を終了する。
【００７２】
図６のステップＳ２１において、条件１Ｂが満足されないと判別された場合（ステップＳ２１；Ｎｏ）、ステップＳ２０が実行された後、又はステップＳ２２が実行された後に、エッジ追加部１１７は、図３（ｃ）の前後関係テーブルＴＦＲにおいて、先商品ＩＤ列に注目先商品ＩＤを保存し、後商品ＩＤ列に注目後商品ＩＤを保存するレコードの処理済フラグをオン状態に更新し、先商品ＩＤ列に注目後商品ＩＤを保存し、後商品ＩＤ列に注目先商品ＩＤを保存するレコードの処理済フラグをオン状態に更新する（ステップＳ２３）。その後、ステップＳ１５の処理から、上記処理が繰り返される。
【００７３】
ステップＳ１５において、検索された全ての後商品ＩＤについて処理の対象としたと判別された場合（ステップＳ１５；Ｙｅｓ）、回数算出部１１４は、ステップＳ１２の処理に戻り上記処理を繰り返す。
【００７４】
ステップＳ１２において、回数算出部１１４は、全ての未処理のレコードを処理したと判別した場合には（ステップＳ１２；Ｙｅｓ）、エッジ追加処理の実行を終了する。
【００７５】
図５（ａ）のステップＳ０３の処理を実行した後に、ステップＳ０３で追加されたエッジが適切なエッジであるか否かを見直す、図８に示すようなエッジ見直処理が実行される（ステップＳ０４）。
【００７６】
図８のエッジ見直処理の実行が開始されると、図２の回数算出部１１４は、図４（ｃ）のエッジテーブルＴＥから全始点ノードＩＤを読み込む（ステップＳ５１）。次に、回数算出部１１４は、読み込まれた全始点ノードＩＤについて、ステップＳ５３からＳ５８の処理を実行したか否かを判別する（ステップＳ５２）。このとき、回数算出部１１４は、全始点ノードＩＤについて処理を実行した訳ではないと判別すると（ステップＳ５２；Ｎｏ）、未処理の始点ノードＩＤの１つを注目始点ノードＩＤとする（ステップＳ５３）。次に、回数算出部１１４は、注目始点ノードＩＤに基づき、注目始点ノードＩＤで識別されるノードが表現する商品の商品ＩＤを、図３（ａ）の商品テーブルＴＸから検索する（ステップＳ５４）。次に、回数算出部１１４は、検索された商品ＩＤを注目先商品ＩＤとした後に、注目先商品ＩＤを先商品ＩＤ列に保存したレコードを１又は複数検索し、検索されたレコードにそれぞれ保存された購入回数を取得する（つまり、注目先商品ＩＤを先商品ＩＤとして購入回数を検索する）（ステップＳ５５）。その後、回数算出部１１４は、検索された１又は複数の購入回数の総和を算出する（ステップＳ５６）。
【００７７】
ここで、理解を容易にするために、注目始点ノードを記号「ｐ」で表し、注目始点ノードｐを始点とするエッジｖ[ｐ，ｑ]及びｖ[ｐ，ｒ]が２つ存在し、それらのエッジの終点ノードを記号「ｑ」及び「ｒ」で表す。この場合、ステップＳ５５で２つの購入回数が検索されるので、それらをそれぞれ記号「ｎ[ｐ，ｑ]」及び「ｎ[ｐ，ｒ]」で表す。また、ステップＳ５６で算出された購入回数を記号「ｎ[ｐ]」で表す。これにより、購入回数ｎ[ｐ]と、購入回数ｎ[ｐ，ｑ]及び購入回数ｎ[ｐ，ｒ]には、以下の式（５）が成立する。
【００７８】
ｎ[ｐ]＝[ｐ，ｑ]＋[ｐ，ｒ]・・・（５）
【００７９】
次に、回数算出部１１４は、ステップＳ５５で検索されたレコードから終点ノードＩＤを１又は複数取り出す（つまり、注目始点ノードＩＤに基づいて終点ノードＩＤを検索する）（ステップＳ５７）。その後、回数算出部１１４は、検索された全ての終点ノードＩＤについて、ステップＳ５９からＳ６３の処理が実行されたか否かを判別する（ステップＳ５８）。
【００８０】
ステップＳ５８において、回数算出部１１４は、全ての終点ノードＩＤについて処理をした訳ではないと判別すると（ステップＳ５８；Ｎｏ）、未処理の終点ノードＩＤの１つを注目終点ノードＩＤとする（ステップＳ５９）。その後、回数算出部１１４は、注目終点ノードＩＤに基づき、注目終点ノードＩＤで識別されるノードが表現する商品の商品ＩＤを図３（ａ）の商品テーブルＴＸから検索する（ステップＳ６０）。その後、回数算出部１１４は、検索された商品ＩＤを注目後商品ＩＤとし、当該注目後商品ＩＤと、ステップＳ５４で検索された注目先商品ＩＤとに基づいて、購入回数を、図３（ｃ）の前後関係テーブルＴＦＲから検索する（ステップＳ６１）。ここで、理解を容易にするため、注目先商品を表現する注目始点ノードを記号「ｐ」で表し、注目後商品を表現する注目終点ノードを記号「ｑ」で表し、ステップＳ６１の購入回数を記号「ｎ[ｐ，ｑ]」で表す。
【００８１】
その後、図２の回数判定部１１５は、ステップＳ５６の購入回数ｎ[ｐ]と、ステップＳ６１の購入回数ｎ[ｐ，ｑ]と、図５（ａ）のステップ０１で設定された定数Ｈとが、以下の式（６）を成立させるという条件２を満足するか否かを判別する（ステップＳ６２）。
【００８２】
ｎ[ｐ，ｑ]／ｎ[ｐ]≦Ｈ・・・（６）
但し、０＜Ｈ＜１
【００８３】
ここで、ノードｐで表現される商品を記号「ｘ’」で表し、ノードｑで表現される商品を記号「ｙ’」で表し、ノードｒで表現される商品を記号「ｚ’」で表した場合に、この条件２は、例えば、商品ｘ’の購入後所定期間内に購入された商品（例えば、商品ｙ’及び商品ｚ’）の総数に対して、商品ｘ’の購入後所定期間内に購入された商品ｙ’の数の割合が、定数Ｈ以下である場合に成立する。ここで、定数Ｈを好適な値に設定すると、条件２は、例えば、後商品が先商品の派生商品の派生商品である場合や、後商品が先商品の続編商品の続編商品である場合など、後商品が先商品から直接的に派生した商品で無い場合に成立することが多い。このため、これらの構成によれば、条件２を満足するか否かに基づいて、先商品を購入したユーザが、先商品を購入してから所定期間内に最初に購入する商品が後商品と異なるということを精度良く特定できる。
【００８４】
図８のステップＳ６２において、図２のエッジ削除部１１５は、条件２が満足されたと判別すると（ステップＳ６２；Ｙｅｓ）、図４（ｃ）のエッジテーブルＴＥに保存されたレコード（以下、エッジレコードという）であって、注目始点ノードＩＤ及び注目終点ノードＩＤを保存するレコードを削除した後に（ステップＳ６３）、ステップＳ５８から上記処理を繰り返す。このため、これらの構成によれば、後商品が先商品から直接的に派生した商品で無いにも関わらず、先商品を購入したユーザが、先商品の次に購入する商品が後商品であると特定することを防止できる。
【００８５】
ステップＳ６２において、エッジ削除部１１５が、条件２は満足されないと判別した場合（ステップＳ６２；Ｎｏ）、ステップＳ６３の処理を実行せずに、ステップＳ５８から上記処理が繰り返される。
【００８６】
ステップＳ５８において、回数算出部１１４は、全ての終点ノードＩＤについて処理をしたと判別すると（ステップＳ５８；Ｙｅｓ）、ステップＳ５２から上記処理が繰り返される。
【００８７】
ステップＳ５２において、回数算出部１１４は、全始点ノードＩＤについて処理を実行したと判別すると（ステップＳ５２；Ｙｅｓ）、エッジ見直処理の実行を終了する。
【００８８】
図５（ａ）のステップＳ０４の実行が終了すると、複数の商品を購入する購入順序（以下、インデックスともいう）を取得する、図９に示すような購入順序取得処理が実行される（ステップＳ０５）。
【００８９】
図９の購入順序取得処理を開始すると、図２の商品指定部１９２は、図４（ｃ）のエッジテーブルＴＥから、純始点ノードＩＤを全て読み込む（ステップＳ７１）。尚、純始点ノードＩＤとは、始点ノードであるが、他のエッジの終点ノードとされていないノードをいう。具体的には、商品指定部１９２は、エッジテーブルＴＥにおいて、始点ノードＩＤ列に保存されており、かつ終点ノードＩＤ列に保存されていないノードＩＤを純始点ノードのノードＩＤとして読み出す。この構成によれば、他のエッジの始点となっていない始点ノードから順に、エッジに従ってノードを抽出するため、商品の購入順序を効率良く少ない計算量で特定できる。
【００９０】
次に、商品指定部１９２は、読み込まれた全ての始点ノードＩＤについて、ステップＳ７３からＳ８０の処理を実行したか否かを判別する（ステップＳ７２）。このとき、商品指定部１９２は、全ての始点ノードＩＤについて処理した訳ではないと判別すると（ステップＳ７２；Ｎｏ）、未処理の始点ノードＩＤの１つを注目ノードＩＤと指定する（ステップＳ７３）。
【００９１】
次に、購入順序取得部１１８は、注目ノードＩＤで識別される注目ノードを、ノード探索（以下、ノード抽出ともいう）の始端（開始点）とした場合に探索（抽出）されたノードのノードＩＤを格納する抽出ノードリスト（以下、注目ノード用の抽出ノードリストという）を生成する（ステップＳ７４）。次に、購入順序取得部１１８は、ノードが抽出された順序を表す順序変数の値に「１」を代入することで初期化する（ステップＳ７５）。その後、購入順序取得部１１８は、注目ノードＩＤで識別される注目ノードを探索されたノードであるとして有向グラフから抽出し、注目ノードＩＤと順序変数の値とを抽出ノードリストに追加する（ステップＳ７６）。次に、購入順序取得部１１８は、図４（ｃ）のエッジテーブルＴＥから、注目ノードＩＤに基づいて、注目ノードＩＤで識別される注目ノードの子ノードを検索する（ステップＳ７７）。尚、あるノードの子ノードとは、当該ノードの終点ノードをいう。同様に、ある子ノードの孫ノードとは、当該子ノードの終点ノードをいう。これらに対して、あるノードの親ノードとは、当該ノードの始点ノードをいう。
【００９２】
例えば、図１０（ａ）に示すように、注目ノードＩＤが「ｉ００１」であるとすると、注目ノードは、「ｖ００１」、「ｖ００２」、及び「ｖ００３」のエッジＩＤで識別される３つのエッジの始点ノードである。よって、「ｉ００１」で識別される注目ノードは、「ｉ００２」、「ｉ００３」、及び「ｉ００４」でそれぞれ識別される３つの子ノードを有する。「ｉ００２」、「ｉ００３」、及び「ｉ００４」でそれぞれ識別されるノードは、「ｖ００１」、「ｖ００２」、及び「ｖ００３」でそれぞれ識別されるエッジの終点ノードだからである。
【００９３】
図９のステップＳ７７を実行した後に、購入順序取得部１１８は、子ノードで構成されるノード群を有向グラフから取得する（ステップＳ７８）。具体的には、購入順序取得部１１８は、検索された子ノードＩＤを保持した子ノードリストを生成する。例えば、図１０（ａ）に示すように、注目ノードＩＤが「ｉ００１」であるとすると、図１０（ｂ）に示すような「ｉ００２」、「ｉ００３」、及び「ｉ００４」というＩＤで識別される３つの子ノードで構成されるノード群を取得する。
【００９４】
その後、購入順序取得部１１８は、取得したノード群から既に抽出された１又は複数のノードを除去する（ステップＳ７９）。具体的には、購入順序取得部１１８は、子ノードリストから、抽出ノードリストが保持するノードＩＤを削除する。この構成によれば、同じユーザが、同じ商品を２回以上購入しないとする場合に、商品の購入順序を正確に特定できるだけでなく、商品の購入順序を特定するのに要する計算量を削減できる。これに対して、情報処理装置１００が販売する商品が日用品である場合など、同じユーザが同じ商品を２回以上すると考えられる場合には、ステップＳ７９の処理を実行しなくても良い。この構成によれば、同じユーザが、同じ商品を２回以上購入する場合に、商品の購入順序を正確に特定できる。
【００９５】
ステップＳ７９の後に、購入順序取得部１１８は、所定の終了条件Ｘ１が満足されたか否かを判別する（ステップＳ８０）。ここで、終了条件Ｘ１は、例えば、図１０（ｄ）に示すように、ステップＳ７８で取得されたノード群から、ステップＳ７９で抽出済みのノードを除去した後のノード群を構成するノードが無くなるという条件である。このとき、終了条件Ｘ１が成立すると判別された場合には（ステップＳ８０；Ｙｅｓ）、購入順序取得部１１８は、ステップＳ７９に戻り上記処理を繰り返す。これに対して、終了条件Ｘ１が成立しないと判別された場合には（ステップＳ８０；Ｎｏ）、購入順序取得部１１８は、ノード群を構成するノードから１つのノードを抽出する（ステップＳ８１）。
【００９６】
例えば、購入順序取得部１１８は、孫ノードが多い子ノード（つまり、子ノードが多いノード）を優先的に抽出する。具体例として、図１０（ａ）に示すように、ノード群を構成するノードがノードｉ００２、ｉ００３、及びｉ００４の３つの子ノードである場合に、孫ノードが最も多いノードｉ００２を抽出する。同じノード群を構成する子ノードの内で、孫ノードが多いノードは、例えば、孫ノードが少ない子ノードよりも、先に購入される商品を表現すると考えられるためである。よって、これらの構成によれば、商品の購入順序を、（例えば、後述する連結数に基づいてノードを抽出する実施例、及びノード群を構成し直す実施例に比べて）少ない計算量で高速に特定できる。よって、情報処理装置１００が販売する商品が増加しても、商品の販売順序を特定するために必要な計算量の増加を抑制できる。
【００９７】
次に、購入順序取得部１１８は、順序変数の値を「１」だけインクリメントする（ステップＳ８２）。その後、購入順序取得部１１８は、注目ノードを抽出されたノードに再設定する（ステップＳ８３）。その後、購入順序取得部１１８は、注目ノードＩＤと順序変数の値とを抽出ノードリストに追加する（ステップＳ８４）。その後に、購入順序取得部１１８は、所定の終了条件Ｘ２が満足されたか否かを判別する（ステップＳ８５）。ここで、終了条件Ｘ２は、例えば、設定ファイルに保持された所定の抽出数の上限に、順序変数（つまり、抽出されたノードの数）が達したという条件である。ここで、例えば、漫画商品の場合には、数十巻程度までシリーズ化しているものが普通である。一方で、映画商品の場合には、数十もシリーズ化することは稀である。よって、これらの構成によれば、情報処理装置１００が販売する商品の種類によって、抽出数の上限を適切に設定することで、関連が少ない商品についてまで購入順序を特定してしまうことを防止できるだけでなく、購入順序の特定に要する計算量を軽減できる。また、例えば、漫画商品であれば、１日で数冊の本を読破できるが、映画商品であれば１日で鑑賞可能な作品数はせいぜい１又は２作品である。このため、例えば、情報処理装置１００が販売する商品の種類によって、抽出数の上限を適切に設定することで、ユーザが購入する量を超えた商品についてまで購入順序を特定してしまうことを防止できるだけでなく、購入順序の特定に要する計算量を軽減できる。
【００９８】
ステップＳ８５において、購入順序取得部１１８は、終了条件Ｘ２が満足されたと判別する場合には（ステップＳ８５；Ｙｅｓ）、ステップＳ７２に戻り上記処理を繰り返す。これに対して、購入順序取得部１１８は、終了条件Ｘ２が満足されないと判別する場合には（ステップＳ８５；Ｎｏ）、ステップＳ７９に戻り上記処理を繰り返す。尚、条件Ｘ２の成立を判別するステップＳ８５の処理を省略しても良い。
【００９９】
ステップＳ７２において、商品指定部１９２は、全ての始点ノードＩＤについて処理したと判別すると（ステップＳ７２；Ｙｅｓ）、購入順序取得処理の実行を終了する。
【０１００】
本実施例において、購入順序取得部１１８は、図１０（ａ）に示すような、商品ｘ００１が指定された場合に、指定商品ｘ００１を表現するノードｉ００１（以下、指定ノードｉ００１という）の子ノードｉ００２からｉ００４で構成されるノード群を取得し、この取得されたノード群のみからノード抽出を繰り返すとして説明した。つまり、ステップＳ７８でノード群を取得すると、購入順序取得部１１８は、１回目にステップＳ７９を実行することで、注目ノードｉ００１をノード群から除去し、ノード群を図１０（ｂ）に示すような群に更新する。その後、購入順序取得部１１８は、２回目にステップＳ７９を実行することで、抽出された注目ノードｉ００２を図１０（ｂ）のノード群から除去し、ノード群を図１０（ｃ）に示すような群に更新する。同様に、購入順序取得部１１８は、３回目にステップＳ７９を実行することで、抽出された注目ノードｉ００３を図１０（ｃ）のノード群から除去することで、ノード群を図１０（ｄ）に示すような群に更新する。その後、ノード群を構成するノードが存在しなくったので、購入順序取得部１１８は、終了条件１Ｘが成立したと判別する。
【０１０１】
しかし、これに限定される訳でなく、購入順序取得部１１８は、図１０（ａ）に示すような、指定商品ｘ００１を表現するノードｉ００１の子ノードｉ００２からｉ００４で構成されるノード群から子ノードを抽出すると、抽出された子ノードの孫ノードを新たに検索し、図１０（ｅ）に示すような、検索された孫ノードで構成される群にノード群を更新する実施例を採用できる。つまり、購入順序取得部１１８は、ノードｉ００１の子ノードであり、かつ子ノードｉ００２の孫ノードでもあるノードｉ００３及びｉ００４だけでなく、ノードｉ００１の子ノードでないが、子ノードｉ００２の孫ノードでもあるノードｉ００５でも構成されるノード群を取得する構成を採用できる。このノード群を更新する実施例の購入順序取得処理において、購入順序取得部１１８は、図９（ｂ）に示すように、図９（ａ）のステップＳ８５で終了条件Ｘ２が満足されないと判別されると（ステップＳ８５；Ｎｏ）、ステップＳ７９ではなく、ステップＳ７７に戻り処理を繰り返せばよい。これらの構成によれば、例えば、指定商品の購入時期から所定期間までの期間よりも遅く購入された商品など、指定商品の購入から所定期間内に購入された商品でないものについても、指定商品から開始した商品の購入順序を特定できる。また、これらの構成によれば、例えば、指定商品と直接的に関連がない商品のような、直接的に指定商品との間で購入時期の先後関係がない商品についても、指定商品から開始した商品の購入順序を特定できる。
【０１０２】
図５（ａ）のステップＳ０５の処理を終了すると、購入順序取得部１１８は、ステップＳ０５で生成された１又は複数の注目ノード用の抽出ノードリストを併合して、購入順序を表すグラフを生成する購入順序グラフ生成処理を実行した後に（ステップＳ０６）、順序特定処理の実行を終了する。
【０１０３】
ステップＳ０６の具体例としては、例えば、注目ノードｉ００１用の抽出ノードリストにおいて、図１１（ａ）に示すように、１番にノードｉ００１、２番にノードｉ００２、３番にノードｉ００３、４番にノードｉ００４が保持されているとする。同様に、注目ノードｉ００２用の抽出ノードリストにおいて、図１１（ｂ）に示すように、１番にノードｉ００２及び２番にノードｉ００３が保持されているとし、注目ノードｉ００３用の抽出ノードリストにおいて、図１１（ｃ）に示すように、１番にノードｉ００３及び２番にノードｉ００４が保持されているとし、注目ノードｉ００４用の抽出ノードリストにおいて、図１１（ｄ）に示すように、１番にノードｉ００４及び２番にノードｉ００５が保持されているとし、注目ノードｉ００６用の抽出ノードリストにおいて、図１１（ｆ）に示すように、１番にノードｉ００６、２番にノードｉ００４が保持されているとする。この場合、購入順序取得部１１８は、注目ノードｉ００１用の抽出ノードリスト、注目ノードｉ００２用の抽出ノードリスト、注目ノードｉ００３用の抽出ノードリスト、注目ノードｉ００４用の抽出ノードリスト、及び注目ノードｉ００６用の抽出ノードリストを併合することで、図１１（ｇ）に示すような購入順序グラフを生成する。
【０１０４】
情報処理装置１００のＣＰＵ１００ａは、図１２に示すような、ユーザに対して商品を販売する商品販売処理を実行する。これにより、ＣＰＵ１００ａは、図２に示すような情報入力部１９１、商品販売部１９２、商品指定部１９３、商品推薦部１９４、及び情報出力部１９５として機能する。尚、商品販売処理は、例えば、端末装置２０１からリクエストを受信する毎に実行される。
【０１０５】
図１２の商品販売処理を開始すると、情報入力部１９１は、端末装置２０１を操作するユーザのユーザＩＤ及びパスワードを受信入力する（ステップＳ９１）。商品販売部１９２は、端末装置２０１を操作するユーザがユーザ認証をクリアするか否かを判別する（ステップＳ９２）。このとき、ユーザ認証をユーザがクリアしないと判別されると（ステップＳ９２；Ｎｏ）、商品販売処理の実行を終了する。これに対して、商品販売部１９２が、ユーザ認証をユーザがクリアしたと判別すると（ステップＳ９２；Ｙｅｓ）、商品販売部１９２は、図３（ａ）の商品テーブルＴＸから、ユーザによって検索された商品の商品詳細情報を検索する（ステップＳ９８）。その後、情報出力部１９５は、図１３（ａ）に示すようなウェブページ（以下、商品詳細ページという）を端末装置２０１へ送信する（ステップＳ９３）。端末装置２０１は、商品詳細ページを受信した後に、受信されたページを表示する。尚、図１３（ａ）の商品詳細ページには、商品詳細情報で表される商品の種類、商品名、商品の値段、及び商品の画像などが掲載されている。
【０１０６】
その後、端末装置２０１のユーザは、表示された商品詳細ページを閲覧し、商品を購入するか否かを決定する。ユーザが商品を購入すると決定した場合には、ユーザは、端末装置２０１の入力部を操作することで、購入の意思を表す情報及び決済に関する情報を端末装置２０１に入力させ、入力された情報を情報端末装置１００へ送信させる。
【０１０７】
その後、情報入力部１９１は、端末装置２０１から購入の意思を表す情報及び決済に関する情報を受信入力する。次に、商品販売部１９２は、受信した情報に基づいて商品が購入されたか否かを判別する（ステップＳ９４）。このとき、商品販売部１９２は、商品が購入されたと判別すると（ステップＳ９４；Ｙｅｓ）、購入された商品の商品ＩＤと、ステップＳ９１で取得されたユーザＩＤと、商品が購入された日時を表す情報とを対応付けて、図３（ｂ）の履歴テーブルＴＨに保存する（ステップＳ９５）。次に、商品推薦部１９３は、商品を購入したユーザに対して購入を勧める商品を推薦する、図１４に示すような商品推薦処理を実行した後に（ステップＳ９６）、ステップＳ９７の処理を実行する。
【０１０８】
尚、商品の購入を勧める商品推薦処理の実行タイミングは、商品の購入直後に限定されるものではない。例えば、ユーザがログインしてから商品詳細ページが送信される前、商品詳細ページが送信された後にユーザが商品を購入する前において実行されても良い。この場合、ステップＳ９１のユーザ認証において取得されたユーザＩＤに基づいて、ユーザが過去に購入した商品を（特に、最後に購入した商品を）、後述する指定商品として商品推薦処理を実行しても良い。また、商品推薦処理によって推薦される商品は、商品推薦処理の実行前に表示されていたウェブページのトップ、又はログイン後に表示されるトップページのレコメンド枠に表示されても良い。
【０１０９】
ステップＳ９２において、認証をクリアしなかったと判別された場合、ステップＳ９４において、商品が購入されなかったと判別された場合（ステップＳ９４；Ｎｏ）、及びステップＳ９６の処理が終了した場合には、端末装置２０１から受信した情報に基づき、端末装置２０１においてログアウトされたか否かを判別する（ステップＳ９７）。このとき、商品販売部１９２は、ログアウトされたと判別した場合には（ステップＳ９７；Ｙｅｓ）、ユーザがログアウトしたことを表す情報をハードディスク１００ｄなどに保存するなどの処理を行った後に商品販売処理の実行を終了する。これに対して、商品販売部１９２は、ログアウトされなかったと判別した場合には（ステップＳ９７；Ｎｏ）、ステップＳ９３から上記処理を繰り返す。
【０１１０】
図１４の商品推薦処理を開始すると、商品推薦部１９３は、推薦する商品の商品名と、推奨する購入順序とを保持する推薦商品リストを生成し、生成したリストを初期化する（ステップＳ１１１Ａ）。次に、商品推薦部１９３は、推奨する購入順序を表す順序変数の値に「０」を代入することで初期化する（ステップＳ１１１Ｂ）。
【０１１１】
その後、商品推薦部１９３は、商品指定部１９３から指定された指定商品の商品ＩＤを取得する（ステップＳ１１２）。尚、商品指定部１９３は、購入された商品（以下、購入商品という）を指定商品と指定するので、商品推薦部１９３は、指定商品の商品ＩＤ（以下、購入商品ＩＤ）を取得する。次に、商品推薦部１９３は、指定商品を注目商品とする（ステップＳ１１３）。その後、商品推薦部１９３は、注目商品の商品ＩＤ（つまり、注目商品ＩＤ）に基づいて、図４（ｂ）のノードテーブルから注目商品を表現する注目ノードの注目ノードＩＤを検索する（ステップＳ１１４）。
【０１１２】
その後、商品推薦部１９３は、検索された注目ノードＩＤに基づいて、図５（ａ）のステップＳ０６で生成された購入順序グラフから、注目ノードの子ノードＩＤを検索する（ステップＳ１１５）。その後、商品推薦部１９３は、注目ノードが終端ノードである（つまり、注目ノードの子ノードが存在しない）という条件Ｙ１を満足するか否か判別する（ステップＳ１１６）。
【０１１３】
ステップＳ１１６において、商品推薦部１９３は、条件Ｙ１が満足されないと判別すると（ステップＳ１１６；Ｎｏ）、子ノードＩＤに基づき、子ノードで表現される商品の商品ＩＤを、図４（ｂ）のノードテーブルから検索する（ステップＳ１１７）。その後、商品推薦部１９３は、検索された商品ＩＤが、購入商品ＩＤ（つまり、指定商品ＩＤ）と同じであるという条件Ｙ２を満足するか否か判別する（ステップＳ１１８）。
【０１１４】
これは、例えば、図５（ａ）のステップＳ０６の処理によって、既に説明した図１１（ａ）から図１１（ｄ）に示すような抽出ノードリストと、図１１（ｅ）に示すような、１番にノードｉ００５及び２番にノードｉ００１が保持されている抽出ノードリストとが併合されると、図１１（ｈ）に示すような、環状の購入順序グラフが生成されるためである。つまり、ユーザは１つの商品を１回だけ購入すると仮定する場合には、指定商品がノードｉ００１で表現される商品である場合に、ノードｉ００２、ノードｉ００３、ノードｉ００４、及びノードｉ００５でそれぞれ表現される商品を推薦商品とした後に、ノードｉ００１で表現される指定商品を再度購入するように勧めてしまうことを防止できる。
【０１１５】
ステップＳ１１８において、商品推薦部１９３は、条件Ｙ２が満足されないと判別すると（ステップＳ１１８；Ｎｏ）、検索された商品ＩＤに基づいて商品名情報を、図３（ａ）の商品テーブルＴＸから検索する（ステップＳ１１９）。その後、商品推薦部１９３は、順序変数の値を「1」だけインクリメントする（ステップＳ１２０）。次に、商品推薦部１９３は、検索された商品名情報で表される商品名と、順序変数で表される順序とを、推薦商品リストに追加する（ステップＳ１２１）。その後、商品推薦部１９３は、順序変数が、例えば、設定ファイルに設定された指定枠数と等しいという条件Ｙ３を満足するか否か判別する（ステップＳ１２２）。尚、指定枠数とは、例えば、図１３（ｄ）に示すような、商品推薦ページに掲載される推薦商品の数をいう。この構成によれば、商品推薦ページに掲載される推薦商品の数だけ推薦する商品を特定するので、指定枠数よりも多い商品を推薦商品とすることを防止し、無駄な演算が行われることを抑制できる。
【０１１６】
ステップＳ１２２において、商品推薦部１９３は、条件Ｙ３が満足されないと判別すると（ステップＳ１２２；Ｎｏ）、検索された子ノードのノードＩＤを、注目ノードＩＤとした後に（ステップＳ１２３）、ステップＳ１１５から上記処理を繰り返す。
【０１１７】
ステップＳ１１６において、条件Ｙ１が成立したと判別された場合（ステップＳ１１６；Ｙｅｓ）、ステップＳ１１８において、条件Ｙ２が成立したと判別された場合（ステップＳ１１８；Ｙｅｓ）、又はステップＳ１２２において、条件Ｙ３が成立したと判別された場合（ステップＳ１２２；Ｙｅｓ）、商品推薦部１９３は、推薦商品リストに保持された順に推薦商品と、推薦商品の購入を推奨する順番とを掲載する商品推薦ページを生成し、商品推薦部１９３は、生成された商品推薦ページを端末装置２０１へ送信出力するように情報出力部１９５を制御する（ステップＳ１２４）。その後、商品推薦部１９３は、商品推奨処理の実行を終了する。これらの構成によれば、ある商品を購入したユーザが、当該商品の購入後に購入する複数の商品を、当該ユーザが購入する順序と共に推薦することができる。このため、当該ユーザが、当該購入された商品の続編商品又は派生商品などの関連商品を知らない場合であっても、当該ユーザは、当該購入された商品の関連商品を、関連した順に（つまり、派生順又は継続順）に購入できる。
【０１１８】
尚、終了条件Ｙ２の成立を判別するステップＳ１１８の処理、又は終了条件Ｙ３の成立を判別するステップＳ１２２の処理のいずれか１つを省略しても良い。
【実施例２】
【０１１９】
次に、実施例２について説明を行う。尚、実施例１とに共通する構成については説明を省略する。
実施例２の情報処理装置は、図５（ｂ）に示すような順序特定処理を実行する。実施例２の順序特定処理は、図５（ａ）に示した実施例１の順序特定処理におけるステップＳ０１の初期化処理、ステップＳ０２のノード追加処理、ステップＳ０３のエッジ追加処理、及びステップＳ０４のエッジ見直処理に相当する処理（ステップＳ２０１からＳ２０４）を有するが、ステップＳ０５の購入順序取得処理及びステップＳ０６の購入順序グラフ生成処理に相当する処理を有しない。
【０１２０】
実施例２の情報処理装置は、図５（ｂ）の順序特定処理（つまり、初期化処理、ノード追加処理、エッジ追加処理、及びエッジ見直処理までの処理）を、例えば、１週間などの予め定められた周期で実行し、実行により生成された有向グラフを表す情報をグラフ記憶部に記憶しておく。その後、情報処理装置は、端末装置のユーザが商品を購入する度に、グラフ記憶部に記憶された情報で表される有向グラフから商品の購入順序を特定し、商品を推薦する、図１５に示すような商品推奨処理を実行する。
【０１２１】
図１５の商品推奨処理の実行を開始すると、情報処理装置は、図１４のステップＳ１１１ＡからＳ１１４までの処理と同様の処理を実行する（ステップＳ２２１ＡからＳ２１４）。その後、情報処理装置は、図９のステップＳ７７からＳ８５の処理と同様の処理を実行する（ステップＳ２７７からＳ２８５）。
【０１２２】
ここで、ステップＳ２８１において、情報処理装置は、ノード群を構成するノードの内で、注目ノードからみた連鎖数が多い程大きい値となる優先度を、以下の式（７）に従って算出し、算出された優先度の大きいノードを優先的に抽出する。
【０１２３】
【数１】
2012098845.tif 000003
【０１２４】
ここで、図１０（ａ）に示すような、ノードｉ００１からみたノードｉ００２の連鎖数とは、当該ノードｉ００２の親ノードｉ００１から出発して、当該親ノードｉ００１の子ノードｉ００２、ｉ００３、及びｉ００４をそれぞれ最大１回だけ辿る複数の経路の内で、当該ノードｉ００１へ最初に移動する経路であって、最も長い（つまり、経路上のノード数が多い）経路上のノード数（親ノード及び子ノードの数）をいう。図１０（ａ）に示すノードｉ００１からみたノードｉ００２の連鎖数は、ノードｉ００１からｉ００２に移動してから、ノードｉ００２からｉ００３に移動し、その後ノードｉ００３からｉ００４に移動する経路が最も長い経路である。このため、ノードｉ００１からみたノードｉ００２の連鎖数は、当該最長経路上のノードｉ００１、ｉ００２、ｉ００３、及びｉ００４の数「４」と算出される。
【０１２５】
よってこれらの構成によれば、商品を購入したユーザが、当該商品の購入後所定期間において購入する商品及び商品の購入順序をより多く特定できる。また、最も連鎖数が多いノードで表現される商品は、他のノードで表される商品の内で最先に購入される商品であることが多い。また、最も連鎖数が多いノードで表現される商品は、他のノードで表される商品の本編作品又は原作作品である場合が多い。このため、これらの構成によれば、ユーザが購入した商品に関連したより多くの商品を推薦できる。
【０１２６】
尚、ノード群に含まれる各ノードの優先度を総和すると値「１」となる。このため、情報処理装置は、上式（７）を用いて算出された各ノードの優先度を抽出確率として用い、ステップＳ２８１の処理を実行する毎に、ノード群に含まれるノードをランダムに抽出しても良い。この構成によれば、例えば、商品を購入したユーザが購入する可能性が高いものを、可能性の高い順序でユーザに推薦することができる。また、この構成によれば、商品推奨処理が実行される毎に、ユーザに対して推薦する商品を異ならせることができる。
【０１２７】
ここで、ステップＳ２８４において、情報処理装置は、図９のステップＳ８４と異なり、注目ノードＩＤと順序変数とを、抽出ノードリストではなく推薦商品リストに追加する。
【０１２８】
また、ステップＳ２８０において、条件Ｘ１が成立したと判別された場合（ステップＳ２８０；Ｙｅｓ）、又はステップＳ２８５において、条件Ｘ２が成立したと判別された場合（ステップＳ２８５；Ｙｅｓ）、情報処理装置は、図１４のステップＳ１２４と同様の処理を実行する（ステップＳ２９４）。その後、情報処理装置は、商品推奨処理の実行を終了する。
【０１２９】
これらの構成によれば、実施例２の情報処理装置は、商品が購入される度に、既に記憶された有向グラフを表す情報を用いて、購入された商品の後に購入される商品のみを特定する。このため、情報処理装置が販売する商品の種類が増加しても（つまり、図３（ａ）の商品テーブルＴＸに保存された商品ＩＤが増加しても）、ある商品が購入されてから所定時間内に購入される商品数は通常変化しないのだから、ある商品を購入したユーザが、当該商品の購入後に購入する商品及び購入順序を特定するために必要な計算量の増加を抑制できる。
【０１３０】
本発明に係る機能を実現するための構成を備えた情報処理装置として提供できることはもとより、複数の装置で構成される情報処理システムであって、本発明に係る機能を実現するための構成をシステム全体として備えた情報処理システムとして提供することもできる。
【０１３１】
なお、本発明に係る機能を実現するための構成を予め備えた情報処理装置として提供できることはもとより、プログラムの適用により、既存の情報処理装置を本発明に係る情報処理装置として機能させることもできる。すなわち、上記実施例１で例示した情報処理装置１００又は上記実施例２で例示した情報処理装置による各機能構成を実現させるための情報処理プログラムを、既存の情報処理装置を制御するコンピュータ（ＣＰＵなど）が実行できるように適用することで、本発明に係る情報処理装置１００として機能させることができる。
【０１３２】
このようなプログラムの配布方法は任意であり、例えば、メモリカード、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭなどの記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。また、本発明に係る情報処理方法は、本発明に係る情報処理装置１００を用いて実施できる。
【０１３３】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【０１３４】
１０：通信網
１００：情報処理装置
２０１〜２０３：端末装置
１００ａ：ＣＰＵ
１００ｂ：ＲＯＭ
１００ｃ：ＲＡＭ
１００ｄ：ハードディスク
１００ｅ：メディアコントローラ
１００ｆ：ＬＡＮカード
１００ｇ：ビデオカード
１００ｈ：ＬＣＤ
１００ｉ：キーボード
１００ｊ：スピーカ
１００ｋ：マウス
１０１：設定記憶部
１０２：商品記憶部
１０３：履歴記憶部
１０４：グラフ記憶部
１１１：初期化部
１１２：ノード追加部
１１３：前後関係特定部
１１４：回数算出部
１１５：回数判定部
１１６：エッジ削除部
１１７：エッジ追加部
１１８：購入順序取得部
１９１：情報入力部
１９２：商品販売部
１９３：商品指定部
１９４：商品推薦部
１９５：情報出力部
２０１，２０２：端末装置
【図１】
2012098845.tif 000004
【図２】
2012098845.tif 000005
【図３】
2012098845.tif 000006
【図４】
2012098845.tif 000007
【図５】
2012098845.tif 000008
【図６】
2012098845.tif 000009
【図７】
2012098845.tif 000010
【図８】
2012098845.tif 000011
【図９】
2012098845.tif 000012
【図１０】
2012098845.tif 000013
【図１１】
2012098845.tif 000014
【図１２】
2012098845.tif 000015
【図１３】
2012098845.tif 000016
【図１４】
2012098845.tif 000017
【図１５】
2012098845.tif 000018