(57)【要約】【課題】コンテンツの推薦において様々なアルゴリズムを柔軟に組み合わせることを可能とする。【解決手段】行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と、行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と、前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と、前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と、を備える情報処理装置を提供する。【選択図】図７
2009289092.tif 000002
【特許請求の範囲】
【請求項１】
行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と；
行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と；
前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と；
前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と；
を備える情報処理装置。
【請求項２】
前記指定子は、データに対応するノードとデータのカテゴリに対応するノードとにより構成される階層構造内の一の前記ノードを指定する階層的に表現された文字列である、請求項１に記載の情報処理装置。
【請求項３】
前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザと他のユーザとの間の前記プロファイルデータの相関度を計算する、請求項１に記載の情報処理装置。
【請求項４】
前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザの前記プロファイルデータと任意のコンテンツの前記メタデータとの間の相関度を計算する、請求項１に記載の情報処理装置。
【請求項５】
前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザと他のユーザとの間の前記プロファイルデータの相関度、または指定されたユーザの前記プロファイルデータと任意のコンテンツの前記メタデータとの間の相関度に基づいて前記推薦リストを生成する、請求項１に記載の情報処理装置。
【請求項６】
前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたコンテンツと他のコンテンツとの間の前記メタデータの相関度を計算する、請求項１に記載の情報処理装置。
【請求項７】
前記基本アルゴリズム部は、指定されたコンテンツの前記メタデータと任意のユーザの前記プロファイルデータとの間の相関度を計算する、請求項１に記載の情報処理装置。
【請求項８】
前記データ保持部は、前記行列形式のデータ構造内の１フィールドに複数のデータ値を有する、請求項１に記載の情報処理装置。
【請求項９】
前記応用アルゴリズム部は、さらに、端末装置からユーザの行動履歴データを受信した場合に、前記行動履歴データに含まれる行動の対象となったコンテンツの前記メタデータに応じて前記行動を行ったユーザの前記プロファイルデータを更新する、請求項１に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、さらに、前記データ保持部からの指示に基づいて前記データ保持部に保持されるデータの永続化をデータベースに要求するデータベース入出力部を備える、請求項１に記載の情報処理装置。
【請求項１１】
前記データ保持部は、前記プロファイルデータのデータ項目及び前記メタデータのデータ項目のうち、前記情報処理装置に割当てられた範囲のデータを前記データベース入出力部を介してデータベースから取得する、請求項１０に記載の情報処理装置。
【請求項１２】
行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造により、前記プロファイルデータ及び前記メタデータを保持するステップと；
行または列を指定する指定子を用いて前記行列形式のデータ構造から任意の部分行列を取得するステップと；
前記行列形式のデータ構造から取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行するステップと；
前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得するステップと；
を含む、推薦方法。
【請求項１３】
情報処理装置を制御するコンピュータを：
行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と；
行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と；
前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と；
前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と；
として機能させるための、プログラム。
【請求項１４】
情報処理装置を制御するコンピュータを：
行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と；
行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と；
前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と；
前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と；
として機能させるための、プログラムを記録したコンピュータにより読み取り可能な記録媒体。
【請求項１５】
情報処理装置へコンテンツの推薦を要求するユーザアプリケーション部；
を備える端末装置と：
行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部；
行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部；
前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部；
及び前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得し、取得した前記推薦リストを前記端末装置へ送信する応用アルゴリズム部；
を備える情報処理装置と：
を含む情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、推薦方法、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年、インターネットなどのネットワークを通して提供されるサービスを差別化するための、推薦と呼ばれる技術が広く用いられている。推薦とは、例えばユーザの嗜好や行動をもとに個々のユーザに見合ったコンテンツを選択して提示することにより、コンテンツの利用を促進するための技術である。推薦は、インターネットショッピングや、映像、音楽またはニュース記事などのコンテンツの配信サービスなどに利用されている。
【０００３】
推薦を行うサービスを実現するためには、通常、サービス提供側のシステムに任意の推薦アルゴリズムが実装される。推薦アルゴリズムは、サービス提供の目的や対象とするユーザ、またはコンテンツの内容などに合わせて、個別に設計される。しかし、ユーザに最終的に提供される推薦結果やその表示形式は異なっていても、効果的な推薦を行うための基本となるアルゴリズムには、多くの推薦サービス間で共通しているものが少なくない。例えば、下記特許文献１及び２では、共に協調フィルタ（Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｆｉｌｔｅｒｉｎｇ）と呼ばれるアルゴリズムを応用して推薦を行うことのできる情報処理装置が開示されている。また、協調フィルタの他には、例えば内容フィルタ（Ｃｏｎｔｅｎｔ−Ｂａｓｅｄ  Ｆｉｌｔｅｒｉｎｇ）、ニューラルネットワーク、またはベイズ推定などの共通的なアルゴリズムが推薦サービスに用いられ得る。
【０００４】
【特許文献１】特開２００６−２１５８６７号公報
【特許文献２】特開２００８−０７７３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の推薦サービスにおいては、上述の協調フィルタや内容フィルタなどの基本的なアルゴリズムと、個々のサービスのニーズなどに合わせて最終的な推薦結果を生成する応用的なアルゴリズムとを一体として実装するのが一般的であった。そのため、新たな推薦サービスを開発する際には、推薦アルゴリズムの大部分の再設計やデータモデルの変更が必要となり、サービス開発のためのコストの増大を招いていた。
【０００６】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、様々なアルゴリズムを柔軟に組み合わせることのできる、新規かつ改良された情報処理装置、推薦方法、プログラム及び記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある観点によれば、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と、行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と、前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と、前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と、を備える情報処理装置が提供される。
【０００８】
かかる構成によれば、データ保持部は、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造により、前記プロファイルデータ及び前記メタデータを保持する。そして、データ操作部は、行または列を指定する指定子を用いて前記行列形式のデータ構造から任意の部分行列を取得する。さらに、基本アルゴリズム部は、前記行列形式のデータ構造から取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する。そして、応用アルゴリズム部は、前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する。
【０００９】
前記指定子は、データに対応するノードとデータのカテゴリに対応するノードとにより構成される階層構造内の一の前記ノードを指定する階層的に表現された文字列であってもよい。
【００１０】
前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザと他のユーザとの間の前記プロファイルデータの相関度を計算してもよい。
【００１１】
また、前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザの前記プロファイルデータと任意のコンテンツの前記メタデータとの間の相関度を計算してもよい。
【００１２】
また、前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたユーザと他のユーザとの間の前記プロファイルデータの相関度、または指定されたユーザの前記プロファイルデータと任意のコンテンツの前記メタデータとの間の相関度に基づいて前記推薦リストを生成してもよい。
【００１３】
また、前記基本アルゴリズム部は、前記定型的な計算の１つとして、指定されたコンテンツと他のコンテンツとの間の前記メタデータの相関度を計算してもよい。
【００１４】
また、前記基本アルゴリズム部は、指定されたコンテンツの前記メタデータと任意のユーザの前記プロファイルデータとの間の相関度を計算してもよい。
【００１５】
また、前記データ保持部は、前記行列形式のデータ構造内の１フィールドに複数のデータ値を有してもよい。
【００１６】
また、前記応用アルゴリズム部は、さらに、端末装置からユーザの行動履歴データを受信した場合に、前記行動履歴データに含まれる行動の対象となったコンテンツの前記メタデータに応じて前記行動を行ったユーザの前記プロファイルデータを更新してもよい。
【００１７】
また、前記情報処理装置は、さらに、前記データ保持部からの指示に基づいて前記データ保持部に保持されるデータの永続化をデータベースに要求するデータベース入出力部を備えてもよい。
【００１８】
また、前記データ保持部は、前記プロファイルデータのデータ項目及び前記メタデータのデータ項目のうち、前記情報処理装置に割当てられた範囲のデータを前記データベース入出力部を介してデータベースから取得してもよい。
【００１９】
また、上記課題を解決するために、本発明の別の観点によれば、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造により、前記プロファイルデータ及び前記メタデータを保持するステップと、行または列を指定する指定子を用いて前記行列形式のデータ構造から任意の部分行列を取得するステップと、前記行列形式のデータ構造から取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行するステップと、前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得するステップと、を含む推薦方法が提供される。
【００２０】
また、上記課題を解決するために、本発明の別の観点によれば、情報処理装置を制御するコンピュータを、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と、行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と、前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と、前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と、として機能させるためのプログラムが提供される。
【００２１】
また、上記課題を解決するために、本発明の別の観点によれば、情報処理装置を制御するコンピュータを、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部と、行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部と、前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部と、前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得する応用アルゴリズム部と、として機能させるためのプログラムを記録した、コンピュータにより読み取り可能な記録媒体が提供される。
【００２２】
また、上記課題を解決するために、本発明の別の観点によれば、情報処理装置へコンテンツの推薦を要求するユーザアプリケーション部、を備える端末装置と、行方向または列方向の少なくとも一方にユーザの属性を表すプロファイルデータ及びコンテンツの特徴を表すメタデータのデータ項目を有し、並びに行方向または列方向の少なくとも一方にユーザを識別する識別子及びコンテンツを識別する識別子のデータ項目を有する行列形式のデータ構造によりデータを保持するデータ保持部、行または列を指定する指定子を用いて前記データ保持部から任意の部分行列を取得するデータ操作部、前記データ操作部により取得された前記部分行列に含まれる前記プロファイルデータ及び前記メタデータについて定型的な計算処理を実行する基本アルゴリズム部、及び前記基本アルゴリズム部による前記定型的な計算の結果を用いて、ユーザに推薦するコンテンツを一覧化した推薦リストを取得し、取得した前記推薦リストを前記端末装置へ送信する応用アルゴリズム部、を備える情報処理装置と、を含む情報処理システムが提供される。
【発明の効果】
【００２３】
以上説明したように、本発明に係る情報処理装置、推薦方法、プログラム及び記録媒体によれば、様々なアルゴリズムを柔軟に組み合わせることができる。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２５】
〔１〕第１の実施形態
まず、図１は、本発明の第１の実施形態に係る推薦システム１の構成を示した模式図である。図１を参照すると、推薦システム１には、端末装置１０、端末装置１２、ネットワーク２０、Ｗｅｂサーバ２２、推薦サーバ３０、及びＤＢ（Ｄａｔａｂａｓｅ）サーバ３２が含まれる。
【００２６】
端末装置１０及び端末装置１２は、ネットワーク２０及びＷｅｂサーバ２２を介して推薦サーバ３０と接続される。端末装置１０及び端末装置１２は、ユーザの操作に応じて推薦の要求を推薦サーバ３０へ送信し、及び推薦サーバ３０からネットワーク２０を介して受信した推薦結果をユーザへ提示する。図１において、端末装置１０及び端末装置１２の一例としてＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）を示しているが、端末装置１０及び端末装置１２はＰＣに限られない。端末装置１０及び端末装置１２は、例えば携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ゲーム端末、音楽／映像再生装置または家電機器などの情報処理装置であってもよい。
【００２７】
ネットワーク２０は、端末装置１０及び端末装置１２とＷｅｂサーバ２２の間を接続するネットワークである。例えば、推薦システム１がインターネット上で推薦サービスを提供する場合には、ネットワーク２０はインターネットに該当する。しかしながら、ネットワーク２０はインターネットに限られない。ネットワーク２０は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、または専用線などの任意のネットワークであってよい。
【００２８】
Ｗｅｂサーバ２２は、ネットワーク２０及び推薦サーバ３０と接続される。Ｗｅｂサーバ２２は、端末装置１０または端末装置１２からネットワーク２０を介して推薦サーバ３０へ送信される推薦要求、及び推薦サーバ３０からの当該推薦要求に対する応答を仲介する役割を果たす。また、Ｗｅｂサーバ２２は、端末装置１０または端末装置１２から推薦要求ではなく例えば静的なＷｅｂページの閲覧要求を受け取った場合には、要求されたＷｅｂページの内容を自ら取得して要求元の装置へ応答してもよい。
【００２９】
なお、推薦システム１において、Ｗｅｂサーバ２２の代わりに、推薦要求を仲介する任意のサービス用のサーバ装置がネットワーク２０と推薦サーバ３０の間に配置されてもよい。また、Ｗｅｂサーバ２２を省略して推薦システム１が構成されてもよい。
【００３０】
推薦サーバ３０は、Ｗｅｂサーバ２２及びＤＢサーバ３２と接続される。推薦サーバ３０は、端末装置１０または端末装置１２からコンテンツの推薦要求を受け付け、後述する様々なアルゴリズムに基づく演算を行って取得した推薦結果を、端末装置１０または端末装置１２へ送信する。また、推薦サーバ３０は、演算に必要とされるコンテンツのメタデータ及びユーザのプロファイルデータを、ＤＢサーバ３２から取得する。
【００３１】
例えば、推薦システム１が音楽データをコンテンツとして扱っている場合には、各端末装置からの要求に応じて、ユーザに視聴や購入を促す楽曲のリストが、推薦サーバ３０から推薦結果として送信される。また、推薦システム１がテレビジョン番組の案内情報をコンテンツとして扱っている場合には、各端末装置からの要求に応じて、ユーザが興味を持つと想定される番組のリストが、推薦サーバ３０から推薦結果として送信される。
【００３２】
推薦システム１がインターネット上で推薦サービスを提供する場合には、推薦サーバ３０は、例えばＷｅｂアプリケーションサーバとして実現される。
【００３３】
ＤＢサーバ３２は、推薦サーバ３０と接続される。ＤＢサーバ３２は、推薦の演算に必要とされるコンテンツのメタデータ及びユーザのプロファイルデータなどをストレージ装置に記録する。また、ＤＢサーバ３２は、推薦サーバ３０からのデータの読み書きを一元的に管理する。
【００３４】
ここで、コンテンツのメタデータとは、コンテンツの内容に応じた様々なデータ項目によって表現される、コンテンツの特徴を表すデータである。例えば、楽曲データをコンテンツとして扱う場合には、楽曲のジャンル、対象年齢層、テンポや調などを楽曲データのメタデータとして扱うことができる。また、映像データをコンテンツとして扱う場合には、映像に含まれるシーンの情報や登場人物名などをメタデータとして扱うことができる。
【００３５】
コンテンツのメタデータは、データの登録時に人為的に与えられる他、楽曲の音響解析や動画のシーン解析などの技術を用いて取得されてもよい。
【００３６】
ユーザのプロファイルデータとは、ユーザの年齢層や趣味、嗜好の傾向などの属性を表すデータである。本実施形態では、ユーザのプロファイルデータもまたコンテンツのメタデータと同様のデータ項目によって表される。例えば、楽曲コンテンツに対するユーザの趣味や嗜好の傾向は、例えば楽曲コンテンツの「邦楽」や「洋楽」などといったジャンルに対する点数として表すことができる。
【００３７】
ユーザのプロファイルデータは、例えば年齢層のように事前に登録される他、ユーザの行動履歴の解析によって取得または更新される。ユーザの行動履歴とは、ユーザがいつ、どういったサイトまたはページを訪問し、どういった行動をしたかを記録した情報である。ユーザの行動履歴データとして、例えばコンテンツの参照、注目リストへの追加、視聴、購入などといった行動を、ユーザの識別子及び時間情報などと共に記録し得る。
【００３８】
図２は、ユーザの行動履歴に応じてユーザのプロファイルデータを更新する様子を例示した説明図である。
【００３９】
図２を参照すると、まず識別子「Ｕ００１」で表される新たなユーザが、推薦システム１の提供するＷｅｂサイトにアクセスしている（Ａ）。このとき、ユーザＵ００１のプロファイルデータは、“洋楽”＝０ポイント、“邦楽”＝０ポイントである。
【００４０】
その後、ユーザＵ００１は、Ｗｅｂサイト上で洋楽の楽曲Ａを視聴している（Ｂ）。それにより、ユーザＵ００１のプロファイルデータのうち、“洋楽”の項目に１０ポイントが加算される。なお、ここで加算されるポイント値はどのような値であってもよい。
【００４１】
次に、ユーザＵ００１は、Ｗｅｂサイト上で邦楽の楽曲Ｂを購入している（Ｃ）。それにより、ユーザＵ００１のプロファイルデータのうち、“邦楽”の項目に１００ポイントが加算される。このようにして、例えばユーザＵ００１は洋楽よりも邦楽に強い嗜好を持つことを示すプロファイルデータが生成される。
【００４２】
図３は、ユーザの行動履歴に応じてユーザのプロファイルデータを変化させる他の例を示した説明図である。図３では、推薦システム１はニュース記事をコンテンツとして扱うことを前提としている。
【００４３】
図３を参照すると、まず識別子「ＮＷ０１」で表されるニュース記事が登録される際に、コンテンツ解析によって記事ＮＷ０１のメタデータが取得される（Ａ）。例えば、テキストで表される記事内容を解析する手法として知られたＴＦ／ＩＤＦ（Ｔｅｒｍ  Ｆｒｅｑｕｅｎｃｙ／Ｉｎｖｅｒｓｅ  Ｄｏｃｕｍｅｎｔ  Ｆｒｅｑｕｅｎｃｙ）によって、ニュース記事を解析することができる。図３の例では、記事ＮＷ０１のメタデータとして、記事内容に
“東京”、“野球”という用語が含まれていたことにより、“東京”に１０ポイント、“野球”に２０ポイントの特徴量が与えられている。
【００４４】
その後、ユーザＵ００２がニュース記事配信サイトにアクセスし（Ｂ）、記事ＮＷ０１を参照したことにより（Ｃ）、ユーザＵ００２のプロファイルデータに記事ＮＷ０１のメタデータ“東京”＝１０ポイント、“スポーツ”＝２０ポイントの各値が加算されている。
【００４５】
なお、図３ではユーザが記事を参照した時点でプロファイルデータを更新する例を説明した。しかしながら、例えばユーザの行動履歴を任意の期間蓄積し、ユーザがＷｅｂサイトから退出した時点または１日１回などのタイミングで行動履歴を解析し、プロファイルデータを更新してもよい。
【００４６】
図１に示した推薦システム１では、このような推薦対象のコンテンツのメタデータ及びユーザのプロファイルデータを用いて、ユーザに対するコンテンツの推薦を行う。
【００４７】
図４は、推薦システム１の論理的な機能配置を示したブロック図である。ここでは、説明の便宜上、図１に示した端末装置１０及び１２のうち端末装置１０のみを示している。なお、端末装置１２も端末装置１０と同様に構成される。また、推薦処理の内容に直接影響を与えないネットワーク２０及びＷｅｂサーバ２２については、図示を省略している。
【００４８】
図４を参照すると、端末装置１０は、ユーザアプリケーション部１１０を備える。ユーザアプリケーション部１１０は、推薦サーバ３０へコンテンツの推薦を要求し、及び推薦サーバ３０から返却された推薦されるコンテンツのリスト（以下、推薦リストという。）を端末装置１０のユーザに提示する。また、ユーザアプリケーション部１１０は、ユーザの行動履歴データを収集し、収集した行動履歴データを推薦サーバ３０へ送信してもよい。
【００４９】
ユーザアプリケーション部１１０は、例えばＷｅｂブラウザまたはＷｅｂブラウザへ導入されるプラグインなどを用いて実現され得る。また、推薦システム１がクライアント−サーバ型のシステムである場合には、ユーザアプリケーション部１１０を専用のクライアントソフトとして実現してもよい。
【００５０】
次に、図４を参照すると、推薦サーバ３０は、アプリケーションインタフェース部１２０、応用アルゴリズム部１３０、基本アルゴリズム部１４０、データ操作部１５０、データ保持部１６０、及びデータベース入出力部１７０を備える。
【００５１】
アプリケーションインタフェース部１２０は、ユーザアプリケーション部１１０からの推薦要求を受け付け、推薦結果を返却するためのインタフェースである。プリケーションインタフェース部１２０は、例えばＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）に基づくＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）による関数群として実現することができる。また、例えばより簡易なＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）に基づくパラメータの受け渡しによってアプリケーションインタフェース部１２０を実現してもよい。
【００５２】
本実施形態において、コンテンツの推薦を行う推薦アルゴリズムは、以下に述べる応用アルゴリズム部１３０及び基本アルゴリズム部１４０に大別される。
【００５３】
応用アルゴリズム部１３０は、個々の推薦サービスのニーズなどに合わせて推薦の要求を処理し、及び推薦の結果を加工して、ユーザアプリケーション部１１０に返却するための最終的な推薦リストを取得する。例えば、応用アルゴリズム部１３０は、画面表示上のニーズまたは制約に即して推薦リストの並び替えや表示数の限定などを行ってもよい。また、応用アルゴリズム部１３０は、基本アルゴリズム部１４０から出力される複数の推薦リストの統合、または関連情報の付加などを行ってもよい。
【００５４】
さらに、応用アルゴリズム部１３０は、ユーザの行動履歴データをユーザアプリケーション部１１０から受信した場合に、行動履歴データを解析して行動を行ったユーザのプロファイルデータを更新してもよい。
【００５５】
基本アルゴリズム部１４０は、推薦に用いられる定型化されたアルゴリズムを実行する機能を有する。前述したように、現在実用されている様々な推薦サービスの中で、効果的な推薦を行うための基本となるアルゴリズムは共通しているものが少なくない。例えば、多くの推薦サービスで共通して用いられるアルゴリズムとして、以下に説明する協調フィルタ、及び内容フィルタが挙げられる。
【００５６】
図５は、協調フィルタによる推薦処理の一例を示す説明図である。
【００５７】
図５を参照すると、ユーザＵ０１１から推薦要求を受けたことをきっかけとして、まずユーザＵ０１１と他のユーザＵ０１２、Ｕ０１３、及びＵ０１４との間のプロファイルデータの相関度が計算される（Ａ）。相関度とは、複数のプロファイルデータまたはメタデータの間の関連の度合いを示す値を指す。図５の例では、データ項目ごとの差分値の総和で表される相関度を用いている（即ち、値が小さいほどより関連の度合いが高い）。
【００５８】
例えば、ユーザＵ０１１とユーザＵ０１２の相関度は、｜５００−０｜＋｜１００−３００｜＋｜０−０｜＝７００と計算される。また、同様に、ユーザＵ０１１とユーザＵ０１３の相関度は３００、ユーザＵ０１１とユーザＵ０１４の相関度は９００と計算される。
【００５９】
なお、データ間の相関度はかかる例に限定されない。例えば、ユーザのプロファイルをベクトルと見なし、プロファイルデータ間の類似度を表す方向余弦、標準化距離、またはハミング距離などを計算して相関度として用いてもよい。
【００６０】
次に、ユーザ間の相関度の計算結果を用いて、ユーザＵ０１２、Ｕ０１３、及びＵ０１４が順位付けされる（Ｂ）。図５の例では、計算された相関度の小さい方から、ユーザＵ０１３、ユーザＵ０１２、ユーザＵ０１４の順に順位付けされている。
【００６１】
そして、順位付けの結果として上位に位置するユーザのプロファイルデータに基づいて、推薦するコンテンツが決定される（Ｃ）。図５の例では、最も相関度の小さい（即ちユーザＵ０１１に最も関連する）ユーザＵ０１３のプロファイルデータの中から、高い点数を有する楽曲Ａ及び楽曲Ｃが選択されている。なお、ここではユーザＵ０１１に最も関連するユーザのプロファイルデータから推薦するコンテンツを決定しているが、推薦するコンテンツを決定する方法はかかる例に限定されない。例えば、相関度の上位数名のユーザの過去の購買履歴データなどから推薦するコンテンツを決定してもよい。
【００６２】
図６は、推薦に共通して用いられるアルゴリズムの他の例として、内容フィルタを用いた推薦処理の一例を示す説明図である。図６では、ニュース記事を推薦対象のコンテンツとしている。
【００６３】
図６を参照すると、まず、ユーザＵ０２１から推薦要求を受けたことをきっかけとして、ユーザＵ０２１のプロファイルデータとコンテンツ（即ちニュース記事）ＮＷ１１、ＮＷ１２、及びＮＷ１３のメタデータとの間の相関度が計算される（Ａ）。なお、各コンテンツのメタデータは前述のコンテンツ解析などによって事前に与えられる。
【００６４】
例えば、ユーザＵ０２１とニュース記事ＮＷ１１との間の相関度は、図５の例と同様に、１９０と計算される。また、ユーザＵ０２１とニュース記事ＮＷ１２との間の相関度は２９０、ユーザＵ０２１とニュース記事ＮＷ１３との間の相関度は２０と計算される。
【００６５】
次に、ユーザのプロファイルデータとコンテンツのメタデータ間の相関度の計算結果を用いて、ニュース記事の順位付けが行われる（Ｂ）。図６の例では、計算された相関度の小さい方から、ニュース記事ＮＷ１３、ＮＷ１１、ＮＷ１２の順で順位付けされている。
【００６６】
そして、順位付けの結果として上位に位置するニュース記事ＮＷ１３及びＮＷ１１が、推薦されるコンテンツとして決定される（Ｃ）。なお、ここでは順位付けの結果上位に位置するコンテンツが推薦されているが、推薦するコンテンツを抽出する基準はかかる例に限定されない。例えば、相関度に対する所定の閾値を用いて抽出されたコンテンツを推薦してもよい。
【００６７】
なお、図５の例では指定されたユーザと他のユーザとの間のプロファイルデータの相関度、図６の例では指定されたユーザのプロファイルデータと任意のコンテンツのメタデータとの間の相関度を計算することとしたが、相関度の計算はかかる例に限定されない。例えば、ユーザアプリケーション部１１０からの推薦要求においてユーザではなくコンテンツを指定させ、指定されたコンテンツと他のコンテンツとの間のメタデータの相関度を計算してもよい。また、指定されたコンテンツのメタデータと任意のユーザのプロファイルデータとの間の相関度を計算してもよい。
【００６８】
図４の説明に戻ると、基本アルゴリズム部１４０には、このような推薦に用いられる様々な汎用的なアルゴリズムが、定型的な計算処理として部品化された状態で実装される。ここで説明した以外の汎用的なアルゴリズムとしては、例えばニューラルネットワークに基づく学習を行う推薦アルゴリズム、ベイジアンネットワークに基づく確率論的な推薦アルゴリズムなどを基本アルゴリズム部１４０に実装してもよい。また、類似度の計算や行列の四則計算などの基礎的計算処理を、基本アルゴリズム部１４０に実装してもよい。
【００６９】
データ操作部１５０は、応用アルゴリズム部１３０または基本アルゴリズム部１４０から後述するデータ保持部１６０に対してデータを読み書きするためのインタフェースを提供する。例えば、基本アルゴリズム部１４０は、協調フィルタに基づくコンテンツの推薦を行う場合に、ユーザのプロファイルデータをデータ操作部１５０を介してデータ保持部１６０から読み取ることができる。また、例えば、応用アルゴリズム部１３０は、ユーザの行動履歴データに基づいてプロファイルデータを作成し、データ操作部１５０を介して当該プロファイルデータをデータ保持部１６０に書き込むことができる。データ操作部１５０からデータ保持部１６０へのデータの読み書きは、後に説明するように、行または列を指定する指定子を用いた部分行列の操作によって行われる。
【００７０】
データ保持部１６０は、推薦サーバ３０の中で、以下に詳しく述べる行列形式のデータ構造を用いて、ユーザのプロファイルデータ及びコンテンツのメタデータを一元的に保持する。
【００７１】
ここで、図２または図３などから理解されるように、ユーザのプロファイルデータのデータ項目とコンテンツのメタデータのデータ項目には、相互に共通する項目が含まれる。例えば、楽曲コンテンツのメタデータであるジャンル（“洋楽”や“邦楽”など）は、図２においてユーザのプロファイルデータのデータ項目として用いられている。また、例えば、ユーザの地域属性などに相当するプロファイルデータ項目“東京”などは、図３において、ニュース記事コンテンツのメタデータのデータ項目として用いられている。よって、ユーザのプロファイルデータ及びコンテンツのメタデータを、両データのデータ項目を行方向または列方向の少なくとも一方に有する行列形式のデータ構造に保持することができる。
【００７２】
図７は、本実施形態に係るデータ保持部１６０における行列形式のデータ構造について説明するための説明図である。
【００７３】
図７を参照すると、データ保持部１６０の行列形式のデータ構造の行方向には、ユーザ（“Ｕ１１１”、“Ｕ２２２”）、コンテンツ（“楽曲Ａ”、“楽曲Ｂ”）、地域属性（“東京”、“大阪”）、ジャンル（“洋楽”、“邦楽”）の８つのデータ項目が配されている。また、行列形式のデータ構造の列方向にも、同様の８つのデータ項目が配されている。そして、行列形式の各マス（以下、フィールドという。）には、数値で表されるデータ値が保持されている。
【００７４】
図７において、各フィールドのデータ値の意味は、フィールドのデータ構造内の位置によって異なる。例えば、ユーザの行と地域属性及びジャンルの列に対応する領域Ｄ１に保持されるデータは、ユーザのプロファイルデータに相当する。コンテンツの行と地域属性及びジャンルの列に対応する領域Ｄ２に保持されるデータは、コンテンツのメタデータに相当する。
【００７５】
また、ユーザの行とユーザの列に対応する領域Ｄ３には、例えば前述の協調フィルタの計算の結果得られたユーザ間の相関度を格納することができる。ユーザの行とコンテンツの列に対応する領域Ｄ４には、例えば前述の協調フィルタの計算に用いられるユーザのコンテンツに対する行動履歴を数値化したデータを格納することができる。その代わりに、領域Ｄ４には、例えば前述の内容フィルタの計算の結果得られたユーザとコンテンツとの間の相関度を格納してもよい。また、コンテンツの行とコンテンツの列に対応する領域Ｄ５には、例えば前述の内容フィルタの計算に用いられるコンテンツ同士の相関度を格納してもよい。
【００７６】
さらに、行と列が共に地域属性またはジャンルに対応する領域Ｄ６には、例えばニューラルネットワークに基づいて推薦を行う場合のノード間のリンク（属性同士の関連）の重みを格納してもよい。また、領域Ｄ６には、ベイジアンネットワークに基づいて推薦を行う場合の確率値などを格納してもよい。
【００７７】
ここで、前述したように、応用アルゴリズム部１３０または基本アルゴリズム部１４０は、データ操作部１５０を介してデータ保持部１６０に保持されたデータの読み書きを行う。図７に示したデータ構造を前提とすれば、例えばデータ保持部１６０の部分行列である領域Ｄ１〜Ｄ６をそれぞれ取得して出力する機能をデータ操作部１５０の機能に含めることができる。より一般的には、データ操作部１５０は、データ保持部１６０の行列形式のデータ構造のうち、後述する行指定子及び／または列指定子を用いて指定された範囲の部分行列のデータの読み書き機能を提供するように実装されることができる。
【００７８】
本発明によらない情報システムにおいては、通常、データはエンティティごとに分類され、正規化された上で保持される（性能面の要請から部分的に非正規化される場合もある）。例えば、ユーザデータ、ユーザのプロファイルデータ、ユーザ間の相関度、コンテンツデータ、コンテンツのメタデータなどは、それぞれ別のエンティティと見なされる。そして、本発明によらない情報システムでは、これら別々のエンティティから取得されたデータが個々の推薦アルゴリズムに適した形式に再構成された上で、推薦処理が行われる。
【００７９】
しかしながら、ここまでの説明から理解されるように、推薦サービスに共通的に用いられる協調フィルタや内容フィルタなどの処理においては、いずれも同様のデータ項目を行方向または列方向に配した行列またはベクトルについての計算処理が主となる。よって、本実施形態のように、行方向または列方向の少なくとも一方にユーザのプロファイルデータ及びコンテンツのメタデータのデータ項目を有する行列形式のデータ構造でデータを保持することにより、多くの計算処理を単純化することができる。そして、それにより、様々なアルゴリズムを柔軟に組み合わせることが可能となる。
【００８０】
なお、図７に示した行列形式のデータ構造では、行方向と列方向に同一の８つずつのデータ項目を有しているが、行方向と列方向のデータ項目は必ずしも一致していなくてもよい。例えば、図７に示した行列形式の下から４行、即ち地域属性及びジャンルのカテゴリに対応する行を省略して推薦システム１を実装してもよい。
【００８１】
図４に戻り、本実施形態に係る推薦システム１の論理的な機能配置の説明を継続する。
【００８２】
データ保持部１６０において行列形式で保持されるデータは、推薦サーバ３０のメモリ上に保持されるデータである。かかるデータをＤＢサーバ３２に永続化させるために設けられるのが、データベース入出力部１７０である。
【００８３】
データベース入出力部１７０は、データ保持部１６０からの指示を受け、データの永続化とデータの読出しをＤＢサーバ３２のデータベース管理部１８０に要求する。データの永続化とは、物理的な記憶装置にデータを記録することを指す。データベース管理部１８０は、データベース入出力部１７０からのデータの入出力要求を受け付けると共に、記憶部１９０を用いたデータの永続化とデータの読み出しを一元的に管理する。
【００８４】
データベース入出力部１７０またはデータベース管理部１８０は、キャッシュの機能を有していてもよい。例えば、データベース管理部１８０において図７に示した行列形式のデータ構造のまま過去の問い合わせに対する応答の内容を保持しておくことで、更新の発生していないデータについての問い合わせに高速に応答を返すことができる。
【００８５】
データベース入出力部１７０及びデータベース管理部１８０は、例えば汎用的なＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）機能を提供するミドルウェアを適用または拡張して実現することができる。
【００８６】
記憶部１９０は、推薦システム１の保持する様々なデータを記憶するための記憶領域である。記憶部１９０は、例えば後述する汎用コンピュータの記憶装置９１６を用いて実装され得る。
【００８７】
なお、ＤＢサーバ３２において推薦システム１のデータを永続化する際には、必ずしも図７を用いて説明した行列形式でデータを記録しなくてもよい。例えば、正規化されたリレーショナルデータベース形式、またはＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式などに変換した上でデータを永続化してもよい。
【００８８】
ここまで、推薦システム１の論理的な機能配置について説明を行った。次に、本実施形態のデータ保持部１６０におけるデータアクセス方式について説明する。
【００８９】
前述したように、データ保持部１６０は、行方向または列方向の少なくとも一方にユーザのプロファイルデータ及びコンテンツのメタデータのデータ項目を有する行列形式のデータ構造を用いて、各種データを保持する。このような行列において、いくつかのフィールドは実際の処理では使用されないことから、データ保持部１６０の保持する行列はいわゆる疎行列となる。そうした疎行列に対し、データ操作部１５０は、応用アルゴリズム部１３０または基本アルゴリズム部１４０からの要求に応じて、データ参照または更新のための部分行列の切り出しを行う。
【００９０】
データ操作部１５０を介したデータ保持部１６０からの部分行列の切り出しは、例えば行指定子及び列指定子を用いて行うことができる。行指定子及び列指定子とは、行列形式のデータ構造の個々の行または列を指定する役割を果たす識別子である。本実施形態では、データ保持部１６０に対するデータアクセスを簡易かつ高速に行うために、データのカテゴリに応じて階層的に表現された文字列を行指定子及び列指定子として用いる。
【００９１】
図８は、データ保持部１６０における行指定子及び列指定子を用いたデータアクセス方式を示した説明図である。
【００９２】
図８を参照すると、データ保持部１６０に保持される各行のデータ項目は、データのカテゴリに対応する第１及び第２階層と、データ項目に対応する第３階層とにより、３階層の階層構造を構成している（（Ａ）〜（Ｃ））。そして、階層構造内の１つのノードは、階層的に表現された文字列である行指定子及び列指定子によって指定される。
【００９３】
例えば、第１階層までを指定する行指定子「１」は“ユーザ”、行指定子「２」は“コンテンツ”、行指定子「３」は“属性”に対応する（Ａ）。また、第２階層までを指定する行指定子「１−１」は“一般ユーザ”、「１−２」は“特別ユーザ”、「２−１」は“楽曲”、「２−２」は“動画”、「３−１」は“地域属性”、そして「３−２」は“ジャンル”に対応する（Ｂ）。さらに、第３階層までを指定する行指定子＝「１−１−１」はユーザＵ１１１、「１−１−２」はユーザＵ１１２などに対応する（Ｃ）。なお、ここでは階層間をハイフン記号“−”で区切っているが、ハイフン記号“−”は省略されてもよい。
【００９４】
このような行指定子「Ｘ−Ｘ−Ｘ」によって、例えば図７の行列形式の１行が特定される。即ち、例えば本実施形態に係る基本アルゴリズム部１４０がユーザＵ１１１の１行分のデータを取得する場合には、基本アルゴリズム部１４０からデータ操作部１５０に行指定子「１−１−１」が受け渡される。そして、データ操作部１５０は、行指定子「１−１−１」に対応するユーザＵ１１１のノードの配下のデータを１行分のデータとして取得し、基本アルゴリズム部１４０へ出力する。
【００９５】
また、行指定子に加えて、同様に３階層に階層化された列指定子（Ａ´〜Ｃ´）を用いて、行列形式のデータ構造内の１フィールドを指定することができる。例えば、フィールド指定子「１−１−１−３−１−１」は、ユーザＵ１１１のプロファイルデータのうち地域属性“東京”のデータに対応するノードを指定する。また、フィールド指定子「２−１−１−３−１−１」は、楽曲Ａのメタデータのうち地域属性“東京”のデータに対応するノードを指定する。
【００９６】
さらに、プログラムの実装上は、フィールド指定子によって指定される階層構造の終端に、データが物理的に格納されたアドレスを指し示すポインタが保持される（Ｄ）。そして、ポインタによって示されたアドレスに実データが格納される（Ｅ）。例えば、図８では、フィールド指定子「１−１−１−３−１−１」の終端のポインタが指し示すアドレス“ＡＦ０５”に、ユーザＵ１１１の地域属性“東京”についてのプロファイルデータ値“１００”が格納されている。
【００９７】
なお、ここでは前半部に行指定子、後半部に列指定子を結合させたフィールド指定子を用いてデータ保持部１６０に保持されるデータにアクセスする方式について説明した。即ち、図８に示したように、データモデル上は階層構造の始点側が行、終端側が列に対応する。しかしながら、推薦アルゴリズムを実装する上では、列を先に指定してデータを参照または更新することが求められる場合もある。よって、図８に示したデータアクセス方式に加えて、前半部に列指定子、後半部に行指定子を結合させた形でデータ保持部１６０のデータにアクセスできる階層化されたデータアクセス方式を、併せて実装するのが好適である。
【００９８】
図８を用いて説明した階層化されたデータアクセス方式は、例えばオブジェクト指向型のプログラミング言語におけるクラスを用いて各階層のノードを定義することにより実現することができる。
【００９９】
図７を用いて説明した行列形式のデータ構造（論理的なデータモデルに相当）に対して図８のような階層構造のデータアクセス方式を実現することのメリットの１つは、データアクセスが高速になることである。単純な一次元配列のデータに対する逐次比較によるデータアクセスに比して、階層化された識別子によるデータアクセスが高速であることは、二分探索の考え方に基づくものとして知られている。このようなデータアクセス方式により、データ保持部１６０の保持するデータ構造が大規模な疎行列となったとしても、十分に実用に耐え得る高速なデータアクセスを行うことができる。また、階層化された識別子に数値を用いることにより、数値の大小関係によって柔軟に範囲指定をして部分行列を切り出すことも可能となる。
【０１００】
さらに、各階層のノードをクラスを用いて定義した場合、個々のノードは当該クラスから生成されるオブジェクトとなる。本発明によらない通常の推薦システムにおいて、例えば１つのユーザまたは１つのコンテンツに対するデータアクセスがあった場合、当該データアクセスがされている間、アクセス対象のユーザまたはコンテンツに関わるデータ全体がロックされる。ロックとは、複数のプロセスから同時にデータが操作されることを防ぎ、データの一貫性を担保するための処理である。しかしながら、前述のように図８の各階層のノードがそれぞれ１つのオブジェクトであれば、ロックする範囲を個々のノード、即ち処理対象とされている範囲の部分行列またはフィールドに限定することができる。それにより、複数のプロセスを並列で稼動させた場合にも、ロックの解除を待つことによる処理の遅延が低減される。
【０１０１】
また、図８では、階層構造のデータの終端である各フィールドに１つの実データのみを保持させているが、各フィールドに１つの実データではなく複数の実データを保持させてもよい。例えば、図８（Ｄ）において階層構造のデータの終端に複数のポインタを割当てることで、複数の実データを保持させることができる。かかる構成によれば、例えばＷｅｂ上のセッション単位または日単位の行動履歴に基づくプロファイルデータと、過去全ての行動履歴に基づくプロファイルデータとを、並列的に保持することができる。そうすることにより、より多面的な観点から推薦を行うサービスを構築することが可能となる。
【０１０２】
ここまで、本実施形態の推薦システム１におけるデータ構造及び当該データ構造に対するデータアクセス方式について説明を行った。次に、推薦システム１における処理の流れについて、図９及び図１０を用いて説明する。
【０１０３】
図９は、本実施形態におけるユーザのプロファイルデータ生成処理の流れを示すシーケンス図である。
【０１０４】
図９を参照すると、まず、端末装置１０のユーザアプリケーション部１１０から推薦サーバ３０の応用アルゴリズム部１３０へ、ユーザの行動履歴データが送信される（Ｓ１１０４）。なお、図４を用いて説明したように、ユーザアプリケーション部１１０と応用アルゴリズム部１３０との間の要求や応答は、アプリケーションインタフェース部１２０を介して行われる。しかし、ここでは説明の便宜上、アプリケーションインタフェース部１２０を省略して示している。
【０１０５】
ユーザアプリケーション部１１０からの行動履歴データの送信は、前述したように、ユーザがコンテンツの参照や購入などの行動をした時点、ユーザがＷｅｂサイトから退出した時点、または１日１回などの任意の時点で行われる。ここで送信される行動履歴データには、典型的には、ユーザを特定する識別子、参照や購入などの行動の対象となるコンテンツを特定する識別子、及び行動の種類を特定するコードなどが含まれる。
【０１０６】
次に、行動履歴データを受信した応用アルゴリズム部１３０は、データ操作部１５０に対してコンテンツのメタデータの取得を要求する（Ｓ１１０８）。例えば、行動履歴データに楽曲Ａ及び楽曲Ｂを特定する識別子が含まれていた場合には、図７に示した領域Ｄ２の範囲のメタデータの取得が要求される。
【０１０７】
応用アルゴリズム部１３０からの要求を受けたデータ操作部１５０は、データ保持部１６０を参照し、コンテンツのメタデータに相当するデータ保持部１６０内の部分行列を取得する（Ｓ１１１２、Ｓ１１１６）。例えば、図７に示した領域Ｄ２の範囲のメタデータは、図８に示した行指定子「２−１」及び列指定子「３」を用いて取得され得る。ここで取得されたコンテンツのメタデータは、データ操作部１５０から応用アルゴリズム部１３０に受け渡される（Ｓ１１２０）。
【０１０８】
さらに、応用アルゴリズム部１３０は、データ操作部１５０に対してユーザのプロファイルデータの取得を要求する（Ｓ１１２４）。例えば、行動履歴データにコンテンツを参照したユーザを特定する識別子Ｕ１１１が含まれていた場合には、図７に示した領域Ｄ１内のユーザＵ１１１のプロファイルデータの取得が要求される。
【０１０９】
応用アルゴリズム部１３０からの要求を受けたデータ操作部１５０は、データ保持部１６０を参照し、ユーザのプロファイルデータに相当するデータ保持部１６０内の部分行列を取得する（Ｓ１１２８、Ｓ１１３２）。例えば、ユーザＵ１１１のプロファイルデータは、図８に示した行指定子「１−１−１」及び列指定子「３」を用いて取得され得る。ここで取得されたーザのプロファイルデータは、データ操作部１５０から応用アルゴリズム部１３０に受け渡される（Ｓ１１３６）。
【０１１０】
その後、応用アルゴリズム部１３０は、行動履歴データを解析することにより、ユーザの新たなプロファイルデータを生成する（Ｓ１１４０）。例えば、応用アルゴリズム部１３０は、ユーザＵ１１１が参照した楽曲Ａ及び購入した楽曲Ｂのメタデータを、所定の係数を掛けた上でユーザＵ１１１のプロファイルデータに加算することができる。このような演算処理は、行列形式のデータ構造から取得した部分行列を用いた処理に適している。
【０１１１】
そして、応用アルゴリズム部１３０は、新たに生成したユーザのプロファイルデータをデータ操作部１５０へ受け渡し、データの更新を指示する（Ｓ１１４４）。そうすると、データ操作部１５０によってデータ保持部１６０内のユーザのプロファイルデータに相当する部分行列が更新される（Ｓ１１４８）。さらに、データ保持部１６０は、Ｓ１１４８の後の任意の時点で、更新されたユーザのプロファイルデータの永続化をデータベース入出力部１７０に指示する（Ｓ１１４８）。
【０１１２】
なお、図９では行動履歴データの解析処理を応用アルゴリズム部１３０が行うように説明したが、行動履歴データの解析処理を定型化し、基本アルゴリズム部１４０に実装してもよい。
【０１１３】
ここまで、図９を用いて本実施形態におけるユーザのプロファイルデータ生成処理について説明を行った。図９を参照すれば、データ保持部１６０において行列形式で保持したユーザのプロファイルデータ及びコンテンツのメタデータに対する読み書きを、データ操作部１５０を介する部分行列の操作に単純化できることが理解される。
【０１１４】
次に、図１０は、本実施形態における推薦リストの生成処理の流れを例示するシーケンス図である。
【０１１５】
図１０を参照すると、まず、ユーザアプリケーション部１１０からアプリケーションインタフェース部１２０を介して、応用アルゴリズム部１３０に推薦要求が送信される（Ｓ１２０４）。推薦要求には、推薦を希望するユーザを特定する識別子の他に、例えば推薦の対象とするコンテンツの範囲や推薦方法（協調フィルタや内容フィルタなど）を指定するコードなどを含んでもよい。
【０１１６】
次に、推薦要求を受信した応用アルゴリズム部１３０は、基本アルゴリズム部１４０に対して相関度の計算を要求する（Ｓ１２０８）。相関度の計算とは、例えば図５（Ａ）または図６（Ａ）に関連して説明した処理である。相関度の計算処理は、基本アルゴリズム部１４０において定型化することができる。
【０１１７】
応用アルゴリズム部１３０からの相関度の計算要求を受けた基本アルゴリズム部１４０は、データ操作部１５０を介して、データ保持部１６０から相関度の計算に必要となるデータを取得する（Ｓ１２１２〜Ｓ１２２４）。例えば、図５（Ａ）に関連して説明した相関度の計算を行う場合には、ユーザのプロファイルデータのうち楽曲のジャンルに相当するデータが、データ保持部１６０から部分行列の形で取得される。
【０１１８】
そして、基本アルゴリズム部１４０は取得されたデータを用いて相関度の計算を行い（Ｓ１２２８）、計算結果が基本アルゴリズム部１４０から応用アルゴリズム部１３０へ出力される（Ｓ１２３２）。
【０１１９】
さらに、応用アルゴリズム部１３０は、基本アルゴリズム部１４０に対して相関度の計算結果に基づく推薦リストの生成を要求する（Ｓ１２３６）。推薦リストの生成とは、例えば図５（Ｂ）〜（Ｃ）または図６（Ｂ）〜（Ｃ）に関連して説明した処理である。推薦リストの生成処理もまた、基本アルゴリズム部１４０において定型化することができる。
【０１２０】
応用アルゴリズム部１３０からの推薦リストの生成要求を受けた基本アルゴリズム部１４０は、データ操作部１５０を介して、データ保持部１６０から推薦リストの生成に必要となるデータを取得する（Ｓ１２４０〜Ｓ１２５２）。例えば、図５（Ｂ）〜（Ｃ）に関連して説明した推薦リストの生成を行う場合には、ユーザのプロファイルデータのうちユーザと個々の楽曲コンテンツの相関度を表すデータが、データ保持部１６０から部分行列の形で取得される。
【０１２１】
そして、基本アルゴリズム部１４０は取得されたデータを用いて推薦リストの生成を行い（Ｓ１２５６）、生成された推薦リストが基本アルゴリズム部１４０から応用アルゴリズム部１３０へ出力される（Ｓ１２６０）。なお、図１０には示していないが、応用アルゴリズム部１３０は、推薦リストを取得した後、個々の推薦サービスのニーズや制約に合わせて取得した推薦リストの加工を行ってもよい。
【０１２２】
そして、最終的に取得された推薦リストは、応用アルゴリズム部１３０からアプリケーションインタフェース部１２０を介してユーザアプリケーション部１１０へ出力される（Ｓ１２６４）。
【０１２３】
ここまで、図１０を用いて本実施形態における推薦リストの生成処理について説明を行った。本実施形態では、応用アルゴリズム部１３０は、基本アルゴリズム部１４０に実装される定型的な計算処理を用いて、推薦リストを取得する。例えば、図１０に示した相関度の計算処理や相関度の計算結果に基づく推薦リストの生成処理を定型化し、基本アルゴリズム部１４０に実装することができる。基本アルゴリズム部１４０において扱うデータ形式は、データ保持部１６０からデータ操作部１５０を介して取得した部分行列の形式に共通化されている。このような行列形式のデータは、応用アルゴリズム部１３０において基本アルゴリズム部１４０から出力される様々な計算結果を柔軟に組み合わせることに適している。
【０１２４】
以上、図１〜図１０を用いて本発明の第１の実施形態について説明を行った。第１の実施形態に係る推薦システム１によれば、応用アルゴリズム部１３０において、定型的な計算処理を実行する基本アルゴリズム部１４０を柔軟に組み合わせることができる。
【０１２５】
また、データ保持部１６０において行列形式で保持するユーザのプロファイルデータ及びコンテンツのメタデータに対するデータ操作部１５０を介した読み書きを、部分行列の操作の形で単純化して行うことができる。
【０１２６】
さらに、行列形式のデータ構造に対して階層的に表現された行及び列の指定子によるデータアクセス方式が提供されることにより、データアクセスが高速になると共に、処理対象とするデータの範囲を柔軟に指定することができる。
【０１２７】
即ち、第１の実施形態に係る推薦システム１によれば、推薦システム１における推薦アルゴリズムの設計及び開発の柔軟性が向上し、サービス開発のコストが低減されると共に、より効果的なコンテンツの推薦結果がユーザに提供されることが期待される。
【０１２８】
〔２〕第２の実施形態
第１の実施形態に係る推薦システム１では、推薦サーバ及びＤＢサーバをそれぞれ１台ずつ用いてシステムを構成した。しかしながら、ユーザのプロファイルデータ及びコンテンツのメタデータを行列形式で保持した場合、複数の推薦サーバによるデータの共有も容易に行うことができる。そこで、本発明の第２の実施形態として、複数の推薦サーバを用いて推薦システムを構成する例について説明する。
【０１２９】
図１１は、本発明の第２の実施形態に係る推薦システム２の構成を示した模式図である。図１１を参照すると、推薦システム２には、端末装置１０、端末装置１２、ネットワーク２０、Ｗｅｂサーバ２２、推薦サーバ３０ａ及び推薦サーバ３０ｂ、並びにＤＢサーバ３６が含まれる。
【０１３０】
推薦サーバ３０ａ及び推薦サーバ３０ｂは、Ｗｅｂサーバ２２及びＤＢサーバ３６とそれぞれ接続される。推薦サーバ３０ａ及び推薦サーバ３０ｂは、第１の実施形態に係る推薦サーバ３０と同様、端末装置１０または１２からコンテンツの推薦要求を受け付け、推薦リストを取得し、Ｗｅｂサーバ２２を介して当該推薦リストを要求元の端末装置へ送信する。また、推薦サーバ３０ａ及び推薦サーバ３０ｂは、演算に必要とされるコンテンツのメタデータ及びユーザのプロファイルデータを、ＤＢサーバ３６から取得する。
【０１３１】
ここで、推薦サーバ３０ａ及び推薦サーバ３０ｂは、同一のコンテンツを推薦の対象として扱う冗長型の推薦サーバであってもよい。また、推薦サーバ３０ａ及び推薦サーバ３０ｂは、異なる範囲のコンテンツを推薦の対象として扱う分散協調型の推薦サーバであってもよい。
【０１３２】
また、推薦サーバ３０ａまたは推薦サーバ３０ｂは、他方の推薦サーバから推薦要求を受け付け、推薦リストを生成して要求元の推薦サーバに返却する機能を有してもよい。そうすることにより、分散して処理した異なる範囲のコンテンツの推薦リストを統合して、端末装置１０または端末装置２０へ送信することが可能となる。
【０１３３】
本実施形態において、ＤＢサーバ３６は、推薦サーバごとにデータの割当て範囲を規定したデータ割当てテーブルを用いて、推薦サーバ３０ａまたは推薦サーバ３０ｂの処理対象とするユーザまたはコンテンツを管理する。
【０１３４】
図１２は、推薦システム２のＤＢサーバ３６の論理的な機能配置を示したブロック図である。図１２を参照すると、ＤＢサーバ３６は、データベース管理部１８２、記憶部１９０、及びデータ割当てテーブル１９２を備える。
【０１３５】
データベース管理部１８２は、第１の実施形態に係るデータベース管理部１８０と同様の機能を有する他、さらに、データ割当てテーブル１９２を用いて推薦サーバ３０ａまたは推薦サーバ３０ｂに処理させるユーザまたはコンテンツの範囲を管理する。
【０１３６】
データ割当てテーブル１９２は、推薦サーバごとのデータ割当て範囲を規定するためのテーブルである。なお、図１２では説明の便宜上、データ割当てテーブル１９２を記憶部１９０とは分けて示しているが、データ割当てテーブル１９２は記憶部１９０に含まれてもよい。
【０１３７】
図１３は、データ割当てテーブル１９２のデータ構成の一例を説明するための説明図である。図１３（Ａ）は、データ割当てテーブル１９２のデータ構成を示している。図１３（Ａ）において、データ割当てテーブル１９２は、縦軸に推薦サーバの識別子（３０ａまたは３０ｂ）、横軸にデータ割当て範囲及び読み出すデータ数の上限値を有する。また、図１３（Ｂ）は、ＤＢサーバ３６において管理される推薦システム２のコンテンツ及びコンテンツのメタデータを、概念的に行列形式で示している。
【０１３８】
図１３（Ａ）を参照すると、推薦サーバ３０ａには、推薦システム２で扱われるコンテンツ及びコンテンツのメタデータのうち、領域Ｄ７の範囲のデータが割当てられている。図１３（Ｂ）を参照すると、領域Ｄ７は、楽曲コンテンツ及び楽曲コンテンツのメタデータ（属性１）を対象とする領域である。また、推薦サーバ３０ａに読み出されるデータ数の上限値は１００００件に制限されている。
【０１３９】
一方、推薦サーバ３０ｂには、推薦システム２で扱われるコンテンツ及びコンテンツのメタデータのうち、領域Ｄ８の範囲のデータが割当てられている。図１３（Ｂ）を参照すると、領域Ｄ８は、ニュース記事コンテンツ及びニュース記事コンテンツのメタデータ（属性１、２）を対象とする領域である。推薦サーバ３０ａに読み出されるデータ数の上限値は規定されていない。
【０１４０】
図１２に示したデータベース管理部１８２は、このようなデータ割当てテーブル１９２を参照し、推薦サーバごとに割当てられた範囲のデータのみを処理させることで、推薦サーバの冗長化または分散協調処理を実現する。また、推薦サーバに受け渡すデータ数の上限値を制限することで、データ数が増大した場合に推薦サーバに掛かる負荷を抑制することができる。
【０１４１】
ここで、推薦サーバを冗長化した場合には、推薦サーバのいずれか一方が故障などの原因で機能停止した場合にも、他方の推薦サーバを用いてサービスが継続される。即ち、推薦システム２の全体としての可用性が確保される。また、推薦サーバ間で分散協調処理を実現した場合には、例えば推薦システム２が大規模なコンテンツデータを扱う場合に、推薦システム２の全体としての応答性能が向上される。
【０１４２】
なお、図１３ではコンテンツ及びコンテンツのメタデータの所定の範囲を推薦サーバごとに割当てる例を示したが、その代わりにユーザ及びユーザのプロファイルデータの所定の範囲を推薦サーバごとに割当ててもよい。
【０１４３】
図１４は、本実施形態において推薦サーバ３０ａ及び推薦サーバ３０ｂが起動された際の、データベースからのデータ読出し処理の一例を示したシーケンス図である。図１４では、先に推薦サーバ３０ａ、次に推薦サーバ３０ｂが起動されている。
【０１４４】
図１４において、まず推薦サーバ３０ａが起動されると、推薦サーバ３０ａのデータ保持部１６０はデータベース入出力部１７０を介してデータベース管理部１８２にデータの読出しを要求する（Ｓ２００４、Ｓ２００８）。
【０１４５】
データベース管理部１８２は、データの読出し要求を受け取ると、要求元の推薦サーバの識別子を用いてデータ割当てテーブル１９２を参照し、当該推薦サーバのデータ割当て範囲を取得する（Ｓ２０１２、Ｓ２０１６）。例えば、データ割当てテーブル１９２が図１３（Ａ）に示した内容を保持していれば、推薦サーバ３０ａに対して領域Ｄ７を示す情報が取得される。
【０１４６】
次に、データベース管理部１８２は、取得されたデータ割当て範囲に含まれるデータを、記憶部１９０を参照して取得する（Ｓ２０２０、Ｓ２０２４）。例えば、図１３（Ｂ）に示した領域Ｄ７に含まれる楽曲コンテンツ及び属性１に対応するデータが取得される。
【０１４７】
そして、データベース管理部１８２は、記憶部１９０から取得したデータを、データベース入出力部１７０を介して推薦サーバ３０ａのデータ保持部１６０へ出力する（Ｓ２０２８、Ｓ２０３２）。
【０１４８】
こうした一連の処理の結果、推薦サーバ３０ａにおける推薦処理に必要とされるデータが推薦サーバ３０ａのデータ保持部１６０に読み込まれる。
【０１４９】
また、図１４に示したように、推薦サーバ３０ｂの起動時にも、同様にデータ読出し要求（Ｓ２１０４、Ｓ２１０８）、データ割当て範囲の取得（Ｓ２１１２、Ｓ２１１６）、データ参照（Ｓ２１２０、Ｓ２１２４）、データ出力（Ｓ２１２８、Ｓ２１３２）が行われる。その結果、推薦サーバ３０ｂにおける推薦処理に必要とされるデータが推薦サーバ３０ｂのデータ保持部１６０に読み込まれる。
【０１５０】
なお、本実施形態において、推薦処理に必要とされるデータが推薦サーバ３０ａまたは推薦サーバ３０ｂの各データ保持部１６０に読み込まれた後、各推薦サーバは、推薦要求の待受け状態に移る。そして、端末装置１０または１２から推薦要求が送信されると、図１０を用いて説明した第１の実施形態に係る推薦リスト生成処理と同様の処理が行われる。
【０１５１】
以上、図１１〜図１４を用いて本発明の第２の実施形態について説明を行った。本実施形態では、ＤＢサーバ３６において、データ割当てテーブルを用いて推薦サーバ３０ａ及び３０ｂに個々に割当てたデータの範囲が管理される。そして、データベース管理部１８２は、データ読出し要求を受け取ると、データ割当てテーブルを参照して取得し、規定された範囲のデータのみを要求元の推薦サーバに出力する。かかる構成によれば、複数の推薦サーバに同一のデータ範囲を冗長的に割当ててシステムの可用性を確保し、または複数の推薦サーバに異なるデータ範囲を割当てて分散協調処理を実現することができる。
【０１５２】
なお、ここでは１つのＤＢサーバと複数の推薦サーバとを用いる構成について説明を行ったが、複数のＤＢサーバと推薦サーバとを用いて推薦システムを構成してもよい。例えば、ＤＢサーバをユーザ及びユーザのプロファイルデータを管理するサーバと、コンテンツ及びコンテンツのメタデータを管理するサーバに分けて構成してもよい。
【０１５３】
本明細書において説明した第１及び第２の実施形態に係る一連の処理は、例えば図１５に示した汎用コンピュータを用いて実行される。即ち、例えば図１または図１１に示した端末装置１０、１２、推薦サーバ３０、３０ａ、３０ｂ、及びＤＢサーバ３２、３６を、それぞれ図１５に示した汎用コンピュータを用いて実装することができる。
【０１５４】
図１５において、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０２は、汎用コンピュータの動作全般を制御する。ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０４には、一連の処理の一部または全部を記述したプログラムやデータが格納され得る。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０６には、ＣＰＵ９０２によって演算処理に用いられるプログラムやデータが一時的に記憶される。
【０１５５】
ＣＰＵ９０２、ＲＯＭ９０４、及びＲＡＭ９０６は、バス９０８を介して相互に接続される。バス９０８にはさらに、入出力インタフェース９１０が接続される。
【０１５６】
入出力インタフェース９１０は、ＣＰＵ９０２、ＲＯＭ９０４、及びＲＡＭ９０６と、入力装置９１２、出力装置９１４、記憶装置９１６、通信部９１８、及びドライブ９２０とを接続するためのインタフェースである。
【０１５７】
入力装置９１２は、例えばマウスやタッチペン、キーボードなどにより構成され、ユーザからの指示や情報入力を受け付ける。出力装置９１４は、例えばＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレなどの表示装置、またはスピーカーなどの音声出力装置により構成され、ユーザへの情報出力に用いられる。
【０１５８】
記憶装置９１６は、例えばハードディスクドライブまたはフラッシュメモリなどにより構成され、推薦システム１または２で使用されるプログラムやデータを記憶する。通信部９１８は、ＬＡＮまたはインターネットなどのネットワークを介する装置間の通信処理を行う。
【０１５９】
ドライブ９２０は、必要に応じて汎用コンピュータに設けられる周辺装置である。例えば、ドライブ９２０には記録媒体９２２を装着することができる。記録媒体９２２には、例えば第１または第２の実施形態に係る一連の処理の一部または全部が記述されたプログラムが記録され得る。そして、記録媒体９２２に記録されたプログラムは、ＣＰＵ９０２によりドライブ９２０を介して読み込まれる。
【０１６０】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１６１】
例えば、第１及び第２の実施形態に係る処理を、必ずしもシーケンス図に記載された順序に沿って実行しなくてもよい。第１及び第２の実施形態に各処理ステップは、並列的あるいは個別に独立して実行される処理を含んでもよい。
【図面の簡単な説明】
【０１６２】
【図１】第１の実施形態に係る推薦システムの物理的構成を示す模式図である。
【図２】ユーザの行動履歴に応じて更新されるプロファイルデータの一例を示す説明図である。
【図３】ユーザの行動履歴及びコンテンツのメタデータに応じて更新されるプロファイルデータの一例を示す説明図である。
【図４】第１の実施形態に係る推薦システムの論理的構成を示すブロック図である。
【図５】協調フィルタに基づく推薦処理の一例を示す説明図である。
【図６】内容フィルタに基づく推薦処理の一例を示す説明図である。
【図７】第１の実施形態に係る行列形式のデータ構造の一例を示す説明図である。
【図８】第１の実施形態に係るデータアクセス方式の一例を示す説明図である。
【図９】第１の実施形態に係るプロファイルデータ生成処理の流れを例示するシーケンス図である。
【図１０】第１の実施形態に係る推薦リストの生成処理の流れを例示するシーケンス図である。
【図１１】第２の実施形態に係る推薦システムの物理的構成を示す模式図である。
【図１２】第２の実施形態に係るＤＢサーバの論理的構成を示すブロック図である。
【図１３】第２の実施形態に係るデータ割当てテーブルの構成を示す説明図である。
【図１４】第２の実施形態に係るデータ読出し処理の流れを例示するシーケンス図である。
【図１５】汎用コンピュータの構成例を示すブロック図である。
【符号の説明】
【０１６３】
３０          情報処理装置（推薦サーバ）
１３０        応用アルゴリズム部
１４０        基本アルゴリズム部
１５０        データ操作部
１６０        データ保持部
１７０        データベース入出力部
【図１】
2009289092.tif 000003
【図２】
2009289092.tif 000004
【図３】
2009289092.tif 000005
【図４】
2009289092.tif 000006
【図５】
2009289092.tif 000007
【図６】
2009289092.tif 000008
【図７】
2009289092.tif 000009
【図８】
2009289092.tif 000010
【図９】
2009289092.tif 000011
【図１０】
2009289092.tif 000012
【図１１】
2009289092.tif 000013
【図１２】
2009289092.tif 000014
【図１３】
2009289092.tif 000015
【図１４】
2009289092.tif 000016
【図１５】
2009289092.tif 000017