(57)【特許請求の範囲】
【請求項１】
コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置において、
所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を格納する利用頻度関連情報格納部と、
前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、
前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出部と
を備えることを特徴とする利用者情報処理装置。
【請求項２】
前記受信した利用情報に基づいて、利用者を識別するユーザ識別情報と、コンテンツを識別するコンテンツ識別情報と、前記利用者の前記コンテンツに対する利用の有無を少なくとも示す利用頻度値とを関連付けて格納する嗜好情報格納部を更に備え、
前記嗜好情報格納部は、前記所定の時点における利用頻度値である第１の利用頻度値と、前記第１の利用頻度値が前記所定の時点以降に値が更新された場合の更新後の利用頻度値である第２の利用頻度値と、前記所定の時点では格納されておらず、それ以降に新たに追加された利用頻度値である第３の利用頻度値をそれぞれ格納し、
前記補正値計算部は、
前記嗜好情報格納部に格納されている利用頻度値の内から各利用者の前記第３の利用頻度値を抽出し、前記２人の利用者の利用頻度値の内積値であり、その少なくとも一方の利用者の利用頻度値が前記第３の利用頻度値の内積値である追加内積補正値とをそれぞれ計算する追加内積補正値算出部と、
前記嗜好値格納部に格納されている利用頻度値の内から各利用者の前記第２の利用頻度値と、それに対応する前記第１の利用頻度値とを抽出し、前記２人の利用者の利用頻度値の内積値であり、その一方の利用者の利用頻度値が前記第２の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第１の利用頻度値または前記第２の利用頻度値である内積値から、前記２人の利用者の前記第１の利用頻度値の内積値を減算した値である更新内積補正値とをそれぞれ計算する更新内積補正値算出部と、
前記追加内積補正値と前記更新内積補正値を加算して前記補正内積値を算出する統合補正値計算部と
を有することを特徴とする請求項１に記載の利用者情報処理装置。
【請求項３】
前記所定の時点までに前記２人の利用者の両方が利用したコンテンツの前記コンテンツ識別情報と、前記２人の利用者の前記第１の利用頻度値の積である内積算出補助値とを関連付けて格納する内積算出補助情報格納部とを更に備え、
前記更新内積補正値算出部は、前記嗜好情報格納部を参照しながら、前記２人の利用者の内の一方の利用者の利用頻度値が前記第２の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第１の利用頻度値または前記第２の利用頻度値である場合における、前記２人の利用者の利用頻度値の内積である第１の内積値を算出すると共に、前記第１の内積値を算出する際に用いたコンテンツに対応する前記内積算出補助値を前記内積算出補助情報格納部から読み出して、それらの総和である第２の内積値を算出し、前記第１の内積値から前記第２の内積値を減算した値を更新内積補正値とすることを特徴とする請求項２に記載の利用者情報処理装置。
【請求項４】
前記２人の利用者の両方が利用したコンテンツの前記コンテンツ識別情報と、前記２人の利用者の前記利用頻度値の積である内積算出補助値とを関連づけて格納する内積算出補助情報格納部を更に備え、
前記内積算出補助情報格納部は、前記２人の利用者の前記第１の利用頻度値の積である第１の内積算出補助値と、前記２人の利用者の内の一方の利用者の前記利用頻度値が前記第２の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第１の利用頻度値または前記第２の利用頻度値である場合の利用頻度値の積である第２の内積算出補助値と、前記２人の利用者の内の少なくとも一方の利用者の前記利用頻度値が前記第３の利用頻度値である場合の利用頻度値の積である第３の内積算出補助値とを識別可能なように格納し、
前記追加内積補正値算出部は、前記第３の内積算出補助値の総和である前記追加補正値を計算し、
前記更新内積補正値算出部は、前記第２の内積算出補助値の総和から前記第１の内積算出補助値の総和を減算した値を前記更新補正値として計算することを特徴とする請求項２に記載の利用者情報処理装置。
【請求項５】
前記類似度算出部は、前記新規内積値を新たな利用者間内積値として、前記利用頻度関連情報格納部に格納させることを特徴とする請求項１〜４のいずれか１項に記載の利用者情報処理装置。
【請求項６】
前記利用頻度関連情報格納部は、所定の条件を満たすコンテンツを対象にして算出された前記利用者間内積値を格納し、
前記補正値計算部は、前記所定の条件を満たすコンテンツを対象にして、前記補正内積値を計算することを特徴とする請求項１〜５のいずれか１項に記載の利用者情報処理装置。
【請求項７】
利用者を識別するユーザ識別情報と、ユーザ属性情報とを対応させて格納するユーザ情報格納部と、
前記類似度算出部で計算された一の利用者との前記類似度が所定値以上の他の利用者、または前記類似度が高い順に所定数の他の利用者の前記ユーザ識別情報を選択する類似ユーザ情報選択部と、
を更に備えることを特徴とする請求項１〜６のいずれか１項に記載の利用者情報処理装置。
【請求項８】
コンテンツを識別するコンテンツ識別情報と、コンテンツ属性情報とを対応させて格納するコンテンツ情報格納部と、
前記類似度算出部で計算された一の利用者との前記類似度が所定値以上の他の利用者、または前記類似度が高い順に所定数の他の利用者の前記ユーザ識別情報を選択する類似ユーザ情報選択部と、
前記類似ユーザ情報選択部で選択されたユーザ識別情報と対応する前記利用頻度値が利用ありの状態を示すコンテンツを対象にして所定個数の前記コンテンツ識別情報を選択する推薦コンテンツ選択部と
を更に備えることを特徴とする請求項１〜７のいずれか１項に記載の利用者情報処理装置。
【請求項９】
コンテンツを識別するコンテンツ識別情報と、コンテンツ属性情報とを対応させて格納するコンテンツ情報格納部と、
前記類似度算出部で計算された一の利用者との前記他の利用者との類似度が大きいほど、かつ前記他の利用者の利用頻度値が大きいほど大きな値となる適合度をコンテンツごとに計算すると共に、前記適合度が所定値以上のコンテンツの前記コンテンツ識別情報、または前記適合度が大きな順に所定個数の前記コンテンツ識別情報を選択する推薦コンテンツ選択部と
を更に備えることを特徴とする請求項１〜７のいずれか１項に記載の利用者情報処理装置。
【請求項１０】
コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置で実行される利用者情報処理方法において、
所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納ステップと、
前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算ステップと、
前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出ステップと
を有することを特徴とする利用者情報処理方法。
【請求項１１】
コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置のコンピュータを、
所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納手段、
前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、
前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出手段、
として機能させることを特徴とする利用者情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツに対する利用者の利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラムに関する。
【背景技術】
【０００２】
近年、デジタル技術やネットワーク技術の進展により、ネットワークを使って配信、提供される文書、音楽、画像、映像等のコンテンツが非常に増えている。これに伴い、ユーザの嗜好に合ったコンテンツを推薦するサービスのニーズが高まってきている。このようなニーズに対応する技術として、コンテンツに関するユーザの利用履歴や評価履歴などの行動履歴を用いて、ユーザの嗜好を推定し、ユーザの嗜好に合ったコンテンツを推薦する技術の開発が行われている。
【０００３】
例えば、ユーザの嗜好に合ったコンテンツを推薦する技術の一つに、協調フィルタリング方式の推薦技術が存在する。一般的な協調フィルタリング方式では、まず、多くのユーザ行動履歴を蓄積する。次に、その行動履歴を用いて、コンテンツを推薦するユーザと類似した嗜好をもつユーザを選定する。そして、選定した複数のユーザの行動履歴から推薦コンテンツを決定することで、ユーザの嗜好に合ったコンテンツの推薦を実現する。
【０００４】
また、コンテンツ推薦に必要な処理時間を短縮するための技術の開発も行われている。
例えば、コンテンツ推薦処理に使用する行動履歴データの量を制限することにより、処理時間を短縮する装置が、特許文献１に開示されている。この装置は、まず、指定された推薦対象のユーザ数と行動履歴データの数に基づいて、推薦処理に要する時間の推定値を算出する。そして、処理時間の推定値が目標時間内に収まるように推薦対象のユーザ数と行動履歴データの数を制限した後、協調フィルタリング方式の推薦処理を行っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３０２０９７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
協調フィルタリング方式の推薦処理では、大量の行動履歴データを対象に処理を行う場合、計算量が膨大になるという問題があった。このため、演算能力の高いシステムが必要になる場合や、実用的な時間で推薦処理を行うことが難しい場合があった。一方、特許文献１の装置では、行動履歴データ全体のなかから一部のデータを抽出し、一部のデータのみを用いてコンテンツ推薦処理を行っている。このため、計算量を減らして処理時間を短縮することはできるが、コンテンツ推薦処理において必要なユーザ間類似度が、必ずしも十分な精度では得られないという問題がある。この結果、コンテンツ推薦の精度も低下するという問題がある。
【０００７】
そこで、本発明は、少ない計算量で、かつ精度良くユーザ間の類似度を計算することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は上述した従来の技術の課題を解決するため、コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置において、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を格納する利用頻度関連情報格納部（１９）と、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部（１５３）と、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出部（１５，２１５）とを備えることを特徴とする利用者情報処理装置を提供する。
また、本発明は上述した従来の技術の課題を解決するため、  コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置で実行される利用者情報処理方法において、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納ステップと、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算ステップと、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出ステップとを有することを特徴とする利用者情報処理方法を提供する。
また、本発明は上述した従来の技術の課題を解決するため、コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置のコンピュータを、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の２人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納手段、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記２人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記２人の利用者の間の類似度を計算する類似度算出手段、として機能させることを特徴とする利用者情報処理プログラムを提供する。
【発明の効果】
【０００９】
本発明では、ユーザ間の類似度を算出する際に、直近の類似度計算時に算出した類似度から値が変化しているユーザの組合せを正確に抽出し、再計算が必要なユーザに対してのみ再計算を行っている。さらに、再計算を行う場合にも、必要最低限のデータ、すなわち直近の類似度算出以降に蓄積された行動履歴データのみを用いることに加え、直近の類似度算出時の計算過程で算出されたデータを記憶し再利用している。このため、ユーザ間の類似度を非常に少ない計算量で計算することができる。また、行動履歴データの一部のみを抽出して使用し他のデータを無視するような処理とは異なり、計算量削減の代償として計算精度が低下することは生じない。このため、行動履歴データの量が多い場合であっても、実用的な時間で精度良くユーザ間の類似度を計算することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態におけるシステム全体の構成図である。
【図２】本発明の第１の実施形態における嗜好情報格納部１８での嗜好情報の格納状態を示す図である。
【図３】本発明の第１の実施形態におけるｓｔａｔｅの値と嗜好情報の状態との対応を示す表である。
【図４】本発明の第１の実施形態における類似度格納部１９の格納状態の一例を示す図である。
【図５】本発明の第１の実施形態におけるユーザ情報格納部２０の格納状態の一例を示す図である。
【図６】本発明の第１の実施形態におけるコンテンツ情報格納部２１の格納状態の一例を示す図である。
【図７】本発明の第１の実施形態における類似度算出部１５の構成を示すブロック図である。
【図８】本発明の第１の実施形態における端末装置３より、利用情報を受信した際の、サーバ装置１による嗜好情報を記憶する処理フローを示すシーケンス図である。
【図９】本発明の第１の実施形態における類似度算出部１５による類似度算出処理の動作を示すフローチャートである。
【図１０】本発明の第１の実施形態におけるステップＳ２０１の内積算出処理の動作を示すフローチャートである。
【図１１】本発明の第１の実施形態におけるステップＳ３０４の通常内積算出処理の動作を示すフローチャートである。
【図１２】本発明の第１の実施形態におけるステップＳ３０５における補正内積算出処理の動作を示すフローチャートである。
【図１３】本発明の第１の実施形態におけるステップＳ５０４の追加内積補正値算出処理の動作を示すフローチャートである。
【図１４】本発明の第１の実施形態におけるステップＳ５０７の更新内積補正値算出処理の動作を示すフローチャートである。
【図１５】本発明の第１の実施形態におけるステップＳ２０２の類似度算出処理の動作を示すフローチャートである。
【図１６】本発明の第１の実施形態における端末装置３より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置１による類似ユーザ情報提供処理フローを示すシーケンス図である。
【図１７】本発明の第１の実施形態における推薦コンテンツの決定方法が異なる、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理の第１の方法を示すシーケンス図である。
【図１８】本発明の第１の実施形態における推薦コンテンツの決定方法が異なる、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理の第２の方法を示すシーケンス図である。
【図１９】本発明の第２の実施形態におけるサーバ装置１０の構成を示すブロック図である。
【図２０】本発明の第２の実施形態における内積算出補助情報格納部２２３での内積算出補助情報の格納形式を示す図である。
【図２１】本発明の第２の実施形態における類似度算出部２１５の構成を示すブロック図である。
【図２２】本発明の第２の実施形態における類似度算出部２１５による類似度算出処理の動作を示すフローチャートである。
【図２３】本発明の第２の実施形態におけるステップＳ１２０１の内積算出処理の動作を示すフローチャートである。
【図２４】本発明の第２の実施形態におけるステップＳ１３０１の内積算出補助値算出処理の動作を示すフローチャートである。
【図２５】本発明の第２の実施形態におけるステップＳ１３０４の通常内積算出処理の動作を示すフローチャートである。
【図２６】本発明の第２の実施形態におけるステップＳ１３０５の補正内積算出処理の動作を示すフローチャートである。
【図２７】本発明の第２の実施形態におけるステップＳ１６０４の追加内積補正値算出処理の動作を示すフローチャートである。
【図２８】本発明の第２の実施形態におけるステップＳ１６０７の更新内積補正値算出処理の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の利用者情報処理装置(サーバ装置）、利用者情報処理方法、利用者情報処理プログラムについて、添付図面を参照して説明する。なお、各実施形態において、コンテンツとは、楽曲コンテンツ、映像コンテンツ、ソフトウェア、種々の商品等を意味するものとする。また、「コンテンツを利用する」とは、楽曲コンテンツや映像コンテンツを再生すること、楽曲コンテンツ、映像コンテンツ、ソフトウェア等をダウンロードすること、楽曲コンテンツ、映像コンテンツ、種々の商品等を購入すること、などを意味するものとする。また、各実施形態において、利用者情報処理装置をサーバ装置とした例について説明する。
【００１２】
＜第１の実施形態＞
以下に、本発明の実施形態について、図を用いて詳細に説明する。
図１は、本発明の第１の実施形態におけるシステム全体の構成図である。サーバ装置１、端末装置３、ネットワーク２により構成されている。
【００１３】
ネットワーク２は、外部の機器と接続するための手段であり、例えばインターネット等の外部ネットワークである。ネットワーク２は、サーバ装置１と端末装置３との間の情報のやり取りを仲介する。
サーバ装置１は、ネットワーク２を通じて、複数の端末装置３（３ａ〜３ｎ）より受信したコンテンツの利用情報を用いて、ユーザごとに推薦コンテンツを決定し、端末装置３の取得要求に応じて、推薦コンテンツに関する情報を送信する装置である。尚、コンテンツの利用情報には、少なくとも端末装置３を利用中のユーザを識別するためのユーザ識別情報と、そのユーザが利用したコンテンツを識別するためのコンテンツ識別情報が含まれている。また、取得要求には、少なくとも端末装置３を利用中のユーザを識別するためのユーザ識別情報が含まれている。尚、本実施形態においては、ユーザを識別するユーザ識別情報を用いて処理を行う場合を説明するが、ユーザ識別情報の代わりに端末装置３を識別する端末識別情報を用いて処理を行なっても良い。
【００１４】
サーバ装置１は、利用情報受信部１１、取得要求受信部１２、要求情報送信部１３、利用頻度値算出部１４、類似度算出部１５、類似ユーザ情報選択部１６、推薦コンテンツ選択部１７、嗜好情報格納部１８、類似度格納部（利用頻度関連情報格納部）１９、ユーザ情報格納部２０、コンテンツ情報格納部２１、制御部２２から構成される。
サーバ装置１は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ハードディスクドライブ（ＨＤＤ）、ネットワークインタフェース等を備えるコンピュータを用いて、ソフトウェア（プログラム）処理として実施することも可能である。
制御部２２は、サーバ装置１を構成する各部に対して全体的な制御を行なう。
【００１５】
利用情報受信部１１は、ネットワーク２を通じて、端末装置３より、ユーザ識別情報とコンテンツ識別情報を含む利用情報を受信する。そして、利用頻度算出部１４に、受信した利用情報を送信する。以下では、ユーザ識別情報をｕｓｅｒ＿ｉｄ、コンテンツ識別情報をｃｏｎｔｅｎｔ＿ｉｄと表わす。
【００１６】
取得要求受信部１２は、ネットワーク２を通じて、端末装置３より、ユーザ識別情報を含む取得要求を受信する。そして、受信した取得要求に応じて、類似ユーザ情報選択部１６、または推薦コンテンツ選択部１７に、受信したユーザ識別情報を含む取得要求を送信する。尚、取得要求は、類似ユーザの情報、または、推薦コンテンツの情報の取得を要求する情報である。
【００１７】
要求情報送信部１３は、類似ユーザ情報選択部１６、または、推薦コンテンツ選択部１７より、ユーザ識別情報と要求情報を受信する。そして、ネットワーク２を通じて、受信したユーザ識別情報に対応する端末装置３に、受信した要求情報を送信する。尚、要求情報は、共に受信したユーザ識別情報に対応する類似ユーザの情報、または、ユーザの嗜好に応じた推薦コンテンツに関する情報である。
【００１８】
利用頻度値算出部１４は、利用情報受信部１５より、ユーザ識別情報とコンテンツ識別情報を含む利用情報を受信し、受信した利用情報を用いて利用頻度値を算出する。そして後述するようなデータ形式で、利用頻度値を嗜好情報格納部１８に格納する。利用情報には、少なくともユーザ識別情報とコンテンツ識別情報が含まれているが、この他に、利用回数、利用日時、ユーザがコンテンツに対して行なった評価の情報（評価値）が含まれていても良い。
利用頻度値は、例えば、ユーザがコンテンツを１回以上利用した場合には「１」、１回も利用していない場合を「０」として算出すれば良い。
【００１９】
また、利用情報に、コンテンツが音楽なら再生回数、映画なら視聴回数といったような、コンテンツの利用回数が含まれる場合は、その利用回数を用いて利用頻度値を算出しても良い。例えば、利用回数そのものを利用頻度値としても良いし、利用回数が多くなるほど値が大きくなるような所定の計算式により利用頻度値を算出しても良い。例えば、利用回数の平方根、あるいは（利用回数＋１）の対数値を利用頻度値としても良い。利用回数を用いて利用頻度値を算出する場合、嗜好情報格納部１８に、受信したユーザ識別情報とコンテンツ識別情報とに対応する嗜好情報が存在する場合は、その嗜好情報の中の利用頻度値と利用回数を用いて利用頻度値を算出する。
さらに、利用情報に利用日時が含まれる場合は、同じ利用回数ならば利用日時が新しい場合ほど利用頻度値が大きくなるように算出しても良い。
また、利用情報に、ユーザのコンテンツに対する評価の情報が含まれている場合は、その評価情報を用いて利用頻度値を算出する。
【００２０】
嗜好情報格納部１８は、ＨＤＤなどの記憶装置を用いて、嗜好情報を複数記憶する。嗜好情報格納部１８における嗜好情報の格納形式として、図２（ａ）〜（ｃ）に示すように、３種類の格納形式を用いることができる。
嗜好情報の第１の格納形式は、ユーザ識別情報であるｕｓｅｒ＿ｉｄと、コンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄと、類似度算出部１５において直近の類似度算出が行なわれた際に使われた利用頻度値であるｖａｌｕｅと、直近の類似度算出が行われたとき以降に利用頻度値算出部１４によって算出された最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅと、嗜好情報の状態を示すフラグであるｓｔａｔｅとを関連付けたものであり、図２（ａ）に示すテーブル形式で格納されている。このテーブルにおいて、（ｕｓｅｒ＿ｉｄ，ｃｏｎｔｅｎｔ＿ｉｄ）の組合せはユニーク（一意）であり、この組合せを指定することにより、テーブルのデータが特定できる。
【００２１】
嗜好情報の第１の格納形式における、嗜好情報の状態を示すｓｔａｔｅについて、図３の対応表を用いて説明する。図３に示すように、ｓｔａｔｅが「０」の場合は、ｖａｌｕｅにのみ値が記憶されている状態である。これは、直近の類似度算出が行われた際に、すでに嗜好情報格納部１８に、嗜好情報が記憶されており、その後一度も利用頻度値の更新がないことを示している。ｓｔａｔｅが「１」の場合は、ｖａｌｕｅ、ｎｅｗ＿ｖａｌｕｅ共に値が記憶されている状態である。これは、直近の類似度算出が行われた際に、すでに嗜好情報格納部１８に、嗜好情報が登録されており、かつ、その後に少なくとも１回は、利用頻度値算出部１４によって、その嗜好情報に含まれるユーザ識別情報とコンテンツ識別情報に対して、利用頻度値が算出され、嗜好情報の利用頻度値が更新されたことを示す。ｓｔａｔｅが「２」の場合は、ｎｅｗ＿ｖａｌｕｅにのみ値が記憶されている状態である。これは、直近の類似度算出が行われたとき以降に、利用頻度値算出部１４が、あるユーザ識別情報とコンテンツ識別情報に対して、利用頻度値を算出して嗜好情報として記憶する際に、嗜好情報格納部１８に、そのユーザ識別情報とコンテンツ識別情報に対応する嗜好情報が存在しなかったことを示している。尚、利用頻度値を算出して嗜好情報として記憶する際に、そのユーザ識別情報とコンテンツ識別情報に対応する嗜好情報のｓｔａｔｅが「２」である場合は、ｓｔａｔｅを「２」のままにして、ｎｅｗ＿ｖａｌｕｅを更新する。本実施形態ではこのようなｓｔａｔｅを用いて処理を行なうが、ｓｔａｔｅを用いる代わりに、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無を用いて、同様に嗜好情報の状態を判定することも可能である。
【００２２】
嗜好情報の第２の格納形式は、図２（ｂ）に示すように、ユーザ識別情報であるｕｓｅｒ＿ｉｄと、コンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄと、類似度算出部１５において直近の類似度算出が行なわれた際に使われた利用頻度値であるｖａｌｕｅと、直近の類似度算出が行われた際に、すでに利用頻度値が計算されておりかつ、それ以降に利用頻度値算出部１４によって再び算出された最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅ＿１と、直近の類似度算出が行われたとき以降に初めて算出された最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅ＿２とを関連付けたものである。このテーブルにおいて、（ｕｓｅｒ＿ｉｄ，ｃｏｎｔｅｎｔ＿ｉｄ）の組合せはユニーク（一意）であり、この組合せを指定することにより、テーブルのデータが特定できる。第２の格納形式においては、利用頻度値算出部１４より、嗜好情報格納部１８に、はじめて格納された場合は、利用頻度値がｎｅｗ＿ｖａｌｕｅ＿２にのみ記録された状態となる。さらに、ｎｅｗ＿ｖａｌｕｅ＿２にのみ利用頻度値が記憶されている状態で、再び、利用頻度値算出部１４より、利用頻度値が算出された場合は、ｎｅｗ＿ｖａｌｕｅ＿２の値を、再び算出された利用頻度値で置き換える。さらに、類似度算出が行われるまでこの状態を維持し、類似度算出直後に、類似度算出部１５より、ｖａｌｕｅにｎｅｗ＿ｖａｌｕｅ＿２の値が記録され、ｎｅｗ＿ｖａｌｕｅ＿２の値が削除される。
【００２３】
また、ｖａｌｕｅにのみ利用頻度値が記憶されている状態で、利用頻度値算出部１４より、新たに利用頻度値が算出された場合は、算出された利用頻度値をｎｅｗ＿ｖａｌｕｅ＿１に記録する。さらに、ｖａｌｕｅに直近の類似度算出時に用いた利用頻度値が記憶され、ｎｅｗ＿ｖａｌｕｅ＿１に最新の利用頻度値が記憶されている状態で、再び、利用頻度値算出部１４より、利用頻度値が算出された場合は、ｎｅｗ＿ｖａｌｕｅ＿１の値を、再び算出された利用頻度値で置き換える。さらに、類似度算出が行われるまでこの状態を維持し、類似度算出直後に、類似度算出部１５より、ｖａｌｕｅの値がｎｅｗ＿ｖａｌｕｅ＿１の値で置き換えられ、ｎｅｗ＿ｖａｌｕｅ＿１の値が削除される。尚、第２の格納形式において、ｖａｌｕｅにのみ値が入っている状態は、第１の格納形式における、ｓｔａｔｅの値が「０」の状態と等しい。また、第２の格納形式において、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅ＿１にのみ値が入っている状態は、第１の格納形式における、ｓｔａｔｅの値が「１」の状態と等しい。また、第２の格納形式において、ｎｅｗ＿ｖａｌｕｅ＿２にのみ値が入っている状態は、第１の格納形式における、ｓｔａｔｅの値が「２」の状態と等しい。
【００２４】
嗜好情報の第３の格納形式は、図２（ｃ）に示すように、ユーザ識別情報であるｕｓｅｒ＿ｉｄと、コンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄと、利用頻度値であるｖａｌｕｅと、利用頻度値の種類を表すｔｙｐｅとを関連付けたものである。このテーブルにおいて、（ｕｓｅｒ＿ｉｄ，ｃｏｎｔｅｎｔ＿ｉｄ，ｔｙｐｅ）の組合せはユニーク（一意）であり、この組合せを指定することにより、テーブルのデータが特定できる。ｔｙｐｅの値により、記録された利用頻度値の種類を判別できる。ｔｙｐｅの値が「０」の場合は、ｖａｌｕｅに記憶された利用頻度値が、直近の類似度算出時に使用されたものであることを示す。また、ｔｙｐｅの値が「１」の場合は、ｖａｌｕｅに記憶された利用頻度値が、直近の類似度算出以降に、再度算出されたものであることを示す。このとき、嗜好情報格納部１８には、同じｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応するｔｙｐｅの値が「０」であるデータも格納されている。また、ｔｙｐｅの値が「２」の場合は、ｖａｌｕｅに記憶された利用頻度値が、直近の類似度算出以降に、はじめて算出された利用頻度値であることを示す。このとき、直近の類似度算出時に、同じｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応する利用頻度値は計算されていなかったため、ｔｙｐｅの値が「０」であるデータは格納されていない。
【００２５】
また、嗜好情報格納部１８に、あるｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応するデータのうち、ｔｙｐｅの値が「０」であるデータのみが格納されている状態で、利用頻度値算出部１４により、そのｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応する利用頻度値が算出された場合は、そのｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄと持ち、ｖａｌｕｅの値が算出された利用頻度値であり、ｔｙｐｅの値が「１」であるデータを、嗜好情報格納部１８に新たに格納する。また、嗜好情報格納部１８に、あるｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応するデータにおいて、ｔｙｐｅの値が「１」、または、「２」であるデータが格納されている状態で、利用頻度値算出部１４により、そのｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応する利用頻度値が算出された場合は、そのｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄに対応するｔｙｐｅの値が「１」、または、「２」であるデータのｖａｌｕｅの値を、算出された利用頻度値に置き換える。
【００２６】
また、類似度算出直後に、ｔｙｐｅの値が「１」であるデータは、類似度算出部１５より、同じｕｓｅｒ＿ｉｄとｃｏｎｔｅｎｔ＿ｉｄとを有し、ｔｙｐｅの値が「０」のデータが削除された後で、ｔｙｐｅの値が「０」に置き換えられる。また、類似度算出直後に、ｔｙｐｅの値が「２」であるデータは、類似度算出部１５より、ｔｙｐｅの値が「０」に置き換えられる。また、第３の格納形式において、嗜好情報格納部１８に、ｔｙｐｅの値が「０」であるデータのみ格納されている状態は、第１の格納形式における、ｓｔａｔｅの値が「０」の状態と等しい。また、第３の格納形式において、嗜好情報格納部１８に、ｔｙｐｅの値が「０」であるデータと、ｔｙｐｅの値が「１」であるデータが共に格納されている状態は、第１の格納形式における、ｓｔａｔｅの値が「１」の状態と等しい。このとき、ｔｙｐｅの値が「０」であるデータにおけるｖａｌｕｅが、第１の格納形式のｖａｌｕｅと等しく、ｔｙｐｅの値が「１」であるデータのｖａｌｕｅが、第１の格納形式におけるｎｅｗ＿ｖａｌｕｅと等しい。また、第３の格納形式において、嗜好情報格納部１８に、ｔｙｐｅの値が「２」であるデータのみが格納されている状態は、第１の格納形式におけるｓｔａｔｅの値が「２」の状態と等しい。
以下、本実施形態においては嗜好情報の第１の格納形式を用いるものとして説明を行う。
【００２７】
類似度格納部１９は、ＨＤＤなどの記憶装置を用いて、２ユーザ分のユーザ識別情報と、そのユーザ識別情報に対応する２ユーザ間の内積と、その２ユーザ間の類似性を示す類似度を関連付けて複数記憶する。図４は、類似度格納部１９の格納状態の一例を示す図である。図４に示すように、記憶している類似度に対応する２ユーザのうちの一方に対応するユーザ識別情報であるｕｓｅｒ＿ｉｄ＿１と、記憶している類似度に対応する２ユーザのうちの他方に対応するユーザ識別情報であるｕｓｅｒ＿ｉｄ＿２と、２ユーザ間の内積であるｉｎｎｅｒ＿ｐｒｏｄｕｃｔと、２ユーザ間の類似度であるｓｉｍｉｌａｒｉｔｙとを関連付けて、テーブル形式で記憶する。このテーブルにおいて、（ｕｓｅｒ＿ｉｄ＿１，ｕｓｅｒ＿ｉｄ＿２）の組合せはユニーク（一意）であり、この組合せを指定することにより、テーブルのデータが特定できる。
【００２８】
本実施形態における類似度の算出方法は、類似度算出対象の一方のユーザの利用頻度値をベクトル要素とする嗜好ベクトルと、類似度算出対象の他方のユーザの利用頻度値をベクトル要素とする嗜好ベクトルとの内積を用いるものとする。類似度が高ければ高いほど、２ユーザ間の類似性が高くなるという性質を持つ。また、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を入れ替えて一致するものが重複して記憶されないように、ユーザ識別情報に大小関係を設け、常に、ｕｓｅｒ＿ｉｄ＿１＜ｕｓｅｒ＿ｉｄ＿２が成り立つようにするか、または、常に、ｕｓｅｒ＿ｉｄ＿１＞ｕｓｅｒ＿ｉｄ＿２が成り立つようにするとよい。
ユーザ情報格納部２０は、ＨＤＤなどの記憶装置を用いて、ユーザ識別情報と、ユーザ属性情報（利用者属性情報）とを関連付けて記憶する。ユーザ属性情報とは、例えば、ユーザの氏名、年齢、性別、居住地域、趣味、電子メールあるいは電話番号などのコンタクト情報などである。また更に、ユーザが希望する「紹介相手の条件」を含んでいても良い。図５は、ユーザ情報格納部２０の格納状態の一例を示す図である。図５に示すように、ユーザ識別情報であるｕｓｅｒ＿ｉｄと、ユーザ識別情報に対応するユーザの情報であるｕｓｅｒ＿ｉｎｆｏとを関連付けて記憶する。
【００２９】
コンテンツ情報格納部２１は、ＨＤＤなどの記憶装置を用いて、コンテンツ識別情報と、コンテンツ属性情報とを関連付けて記憶する。コンテンツ属性情報とは、例えば、コンテンツの名称、制作者、制作年、ジャンル、価格、コンテンツを利用するのに適したユーザの条件、などの情報である。図６は、コンテンツ情報格納部２１の格納状態の一例を示す図である。図６に示すように、コンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄと、コンテンツ識別情報に対応するコンテンツの情報であるｃｏｎｔｅｎｔ＿ｉｎｆｏとを関連付けて記憶する。
【００３０】
類似度算出部１５は、同一コンテンツに対する嗜好情報を有する２ユーザ間の類似度を所定のタイミングで算出する。所定のタイミングとは例えば、利用情報を一定回数受信するごととしてもよいし、２４時間ごとなど、一定の時間経過ごととしてもよい。また、月曜日〜金曜日までは３時間ごと、土曜日は６時間ごと、日曜日は１２時間ごと、というように時間間隔が変動しても良い。また、夏は時間間隔を短くして、冬は時間間隔を長くするなど、季節に応じて時間間隔を変えても良い。また後述するように、端末装置３から、類似ユーザ情報の取得を要求する取得要求、または推薦コンテンツの取得を要求する取得要求を受信したタイミングでも良い。
ここで、類似度算出部１５の構成を図７のブロック図を用いて説明する。図７に示すように、類似度算出部１５は、内積類似度算出部１５１、通常内積算出部１５２、補正内積算出部１５３、追加内積補正値算出部１５４、更新内積補正値算出部１５５との構成である。なお、補正内積算出部１５３は、補正値計算部や統合補正値計算部としての機能を有する。
【００３１】
内積類似度算出部１５１は、通常内積算出部１５２、補正内積算出部１５３とデータのやり取りを行いながら、嗜好情報格納部１８に記憶されている複数の嗜好情報や、類似度格納部１９に記憶されている２ユーザ間の類似性を数値化した類似度等を用いて、内積を用いた類似度を算出する。そして、類似度格納部１９に、類似度算出対象の２ユーザに対応する２つのユーザ識別情報と、算出した類似度とを関連付けて記憶する。そして、全類似度算出対象の２ユーザ間の類似度算出が終わると、嗜好情報格納部１８において、ｓｔａｔｅが「１」、または、「２」の全ての嗜好情報に対して、ｖａｌｕｅの値をｎｅｗ＿ｖａｌｕｅの値に置き換え、ｎｅｗ＿ｖａｌｕｅの値を消去し、ｓｔａｔｅを「０」とする。また、ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｖａｌｕｅを消去するだけでよい。
通常内積算出部１５２は、一度も内積を算出したことのない２ユーザ間の内積を算出するためのものである。
【００３２】
補正内積算出部１５３は、追加内積補正値算出部１５４、更新内積補正値算出部１５５とデータのやり取りを行いながら、以前内積を算出した２ユーザにおいて、以前算出した内積（利用者間内積値）との変化量を補正値（補正内積値）として算出し、以前算出した内積にその補正値を加えることで、新たな内積（新規内積値）を算出するものである。尚、補正値は、後述する追加内積補正値と更新内積補正値の和である。また、追加内積補正値は追加内積補正値算出部１５４にて算出される。また、更新内積補正値は更新内積補正値算出部１５５にて算出される。
【００３３】
追加内積補正値算出部１５４は、類似度算出対象の２ユーザにおいて、前回類似度を算出した際に、少なくとも一方が、嗜好情報を有していないコンテンツであり、新たに嗜好情報が追加されたことにより、両ユーザが共に嗜好情報を有することなったコンテンツにおける両ユーザの嗜好情報のみを用いて、追加内積補正値を算出するためのものである。
更新内積補正値算出部１５５は、類似度算出対象の２ユーザにおいて、前回類似度を算出した際に、両ユーザが共に嗜好情報を有する同一のコンテンツにおいて、その少なくとも一方の嗜好情報における利用頻度値に対して更新が行われた場合に、その同一コンテンツにおける両ユーザの嗜好情報のみを用いて、更新内積補正値を算出するためのものである。
以上が、類似度算出部１５における構成の説明である。
【００３４】
類似ユーザ情報選択部１６は、取得要求受信部１２より、ユーザ識別情報を含む取得要求を受信した後、類似度格納部１９に記憶されているデータを用いて、１つ以上の類似ユーザのユーザ識別情報を選択する。そして、ユーザ情報格納部２０より、選択したユーザ識別情報に対応するユーザ属性情報を取得する。そして、要求情報送信部１３に、取得した１つ以上のユーザ属性情報を要求情報として送信する。
推薦コンテンツ選択部１７は、取得要求受信部１２より、ユーザ識別情報を含む取得要求を受信した後、嗜好情報格納部１８、類似度格納部１９に記憶されているデータを用いて、１つ以上の推薦するコンテンツのコンテンツ識別情報を選択する。そして、コンテンツ情報格納部２１より、選択したコンテンツ識別情報に対応するコンテンツ情報を取得する。そして、要求情報送信部１３に、取得した１つ以上のコンテンツ情報を要求情報として送信する。
【００３５】
端末装置３は、ネットワーク２を通じて、サーバ装置１に、コンテンツの利用情報を送信したり、サーバ装置１より、要求情報を受信したりする装置である。
端末装置３は、利用情報送信部３１、取得要求送信部３２、要求情報受信部３３、入力部３４、表示部３５から構成される。
端末装置３は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ハードディスクドライブ（ＨＤＤ）、ネットワークインタフェース等を備えるパーソナルコンピュータ等を用いて、ソフトウェア（プログラム）処理として実施することも可能である。
【００３６】
利用情報送信部３１は、入力部３４より、コンテンツの利用履歴、例えば、コンテンツが音楽であれば、再生を行ったという履歴であり、コンテンツが映画であれば、視聴したという履歴を受信する。そして、受信した利用履歴と端末装置３を利用中のユーザを識別するためのユーザ識別情報と、利用されたコンテンツに対応するコンテンツ識別情報より、利用情報を作成する。そして、ネットワーク２を通じて、サーバ装置１に、作成した利用情報を送信する。
【００３７】
取得要求送信部３２は、入力部３４より、類似ユーザの情報を要求するような操作、例えば、表示部３５に類似ユーザ情報取得ボタンを予め表示し、その類似ユーザ情報取得ボタンの選択を受信する。そして、サーバ装置１に、ユーザ識別情報と類似ユーザ情報の要求を含む取得要求を送信する。また、入力部３４より、コンテンツの推薦を要求するような操作、例えば、表示部３５に推薦コンテンツ取得ボタンを予め表示し、その推薦コンテンツ取得ボタンの選択を受信する。そして、サーバ装置１に、ユーザ識別情報と推薦コンテンツの要求を含む取得要求を送信する。尚、取得要求は、ユーザ識別情報と取得要求の種類を示す情報のみでもよいし、推薦数を制限する情報等を含ませても良い。推薦数を制限する情報等を含んだ場合は、サーバ装置１にてその制限情報が反映される。
要求情報受信部３３は、サーバ装置１より、要求情報を受信する。そして、受信した要求情報を描画し、表示部３５に表示する。
【００３８】
入力部３４は、例えば、端末装置３がＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ）であれば、マウスやキーボード、携帯電話であれば、ボタンといったように、ユーザが端末装置３を操作するためのインタフェースである。入力部３４は、利用情報送信部３１に、コンテンツの操作履歴を送信する。また、取得要求送信部３２に、類似ユーザ情報を要求するような操作や、コンテンツの推薦を要求するような操作を送信する。
表示部３５は、例えば、ディスプレイといったように、様々な情報を表示し、ユーザに視覚的に示すためのインタフェースである。表示部３５は、要求情報受信部３３によって描画された要求情報を表示する。
【００３９】
次に、上記構成におけるサーバ装置１の動作を説明する。
第１の実施形態におけるサーバ装置１は、ネットワーク２を通じて、複数の端末装置３との情報のやり取りを行いながら、主に、嗜好情報の記憶、類似度の算出、類似ユーザ情報の提供、コンテンツの推薦を行う。
図８は、端末装置３から送信された嗜好情報をサーバ装置１が受信して記憶する処理フローを示すシーケンス図である。
【００４０】
まず、端末装置３の利用情報送信部３１が、入力部３４より、利用履歴を受信し（ステップＳ１０１）、ステップＳ１０１にて受信した利用履歴と、端末装置３を利用中のユーザを識別するユーザ識別情報と、利用したコンテンツに対応するコンテンツ識別情報とを用いて、利用情報を作成し（ステップＳ１０２）、ネットワーク２を通じて、サーバ装置１に、ステップＳ１０２にて作成した利用情報を送信する（ステップＳ１０３）。
次に、サーバ装置１の利用情報受信部１１が、端末装置３から送信された利用情報を受信し（ステップＳ１０４）、利用頻度値算出部１４に、ステップＳ１０４にて受信した利用情報を送信する（ステップＳ１０５）。
次に、利用頻度値算出部１４が、利用情報受信部１１より、利用情報を受信し（ステップＳ１０６）、ステップＳ１０６で受信した利用情報を用いて利用頻度値を算出する（ステップＳ１０７）。
【００４１】
次に、利用頻度値算出部１４が、嗜好情報格納部１８に、ステップＳ１０６にて受信した利用情報に含まれるユーザ識別情報とコンテンツ識別情報に対応する嗜好情報が存在するか否かを確認する。嗜好情報が存在する場合は、嗜好情報格納部１８において、その嗜好情報のｎｅｗ＿ｖａｌｕｅを、ステップＳ１０７で算出した利用頻度値と置き換え、その嗜好情報のｓｔａｔｅの値が「０」のときのみ「１」に置き換える。また、嗜好情報が存在しない場合は、嗜好情報格納部１８に、ステップＳ１０６にて受信した利用情報含まれるユーザ識別情報をｕｓｅｒ＿ｉｄとし、コンテンツ識別情報をｃｏｎｔｅｎｔ＿ｉｄとし、ステップＳ１０７にて算出した利用頻度値をｎｅｗ＿ｖａｌｕｅとし、ｓｔａｔｅを「２」とした嗜好情報を記憶し（ステップＳ１０８）、ステップＳ１０１からステップＳ１０８までの一連の処理を終了する。
【００４２】
尚、嗜好情報格納部１８に記憶する嗜好情報を所定の条件を満たすコンテンツに対応する嗜好情報のみに制限することもできる。例えば、嗜好情報を記憶するの制限の基準をコンテンツ識別情報で判定することができる。このとき、予め図示しないコンテンツ識別情報のリストをサーバ装置１側に記憶し、そのコンテンツ識別情報のリストに、嗜好情報におけるコンテンツ識別情報が含まれているか否かを判定し、リストに含まれたコンテンツ識別情報に対応する嗜好情報のみを記憶することができる。また、図示しないコンテンツ識別情報のリストを端末装置３に記憶し、利用情報としてサーバ装置１に送信するか否かを判定し、リストに含まれたコンテンツ識別情報に対応する利用情報のみを送信することでも同様に制限することができる。
【００４３】
また、サーバ装置１や、端末装置３に、コンテンツ識別情報のリストを記憶する代わりに、コンテンツ属性情報のリストを記憶し、リストに含まれたコンテンツ属性情報を有するコンテンツに対応する嗜好情報のみを記憶することで、嗜好情報格納部１８に記憶する嗜好情報を制限することもできる。例えば、特定の制作者と特定のジャンルとをコンテンツ属性情報のリストに登録し、特定の制作者と特定のジャンルを共に満たすコンテンツに対応する嗜好情報のみ記憶してもよいし、特定の制作者と特定のジャンルの何れかを満たすコンテンツに対応する嗜好情報のみ記憶してもよい。以上のように、所定の条件を満たすコンテンツに対応する嗜好情報のみを嗜好情報格納部１８に記憶することで、より高精度に類似ユーザを選出することができる。例えば、サッカーの世界的な大会の開催中に、にわかファンが増えることが予測される際に、リストにサッカーに関するコンテンツ以外のコンテンツのコンテンツ識別情報やコンテンツ属性情報を登録することで、サッカーに関するコンテンツの影響を排除し、より高精度に類似ユーザを選出することができる。また、類似度算出処理に用いる嗜好情報が減るため、処理時間も短くなる。
【００４４】
また、端末装置３に、図示しないコンテンツの利用回数を記憶する格納部を用意し、一定回数以上の利用があったコンテンツのみをサーバ装置１に送信することで、嗜好情報格納部１８に記憶する嗜好情報を制限することもできる。一定回数以上の利用があったコンテンツに対応する嗜好情報のみを嗜好情報格納部１８に記憶することで、ユーザの嗜好が高いコンテンツに対応する嗜好情報のみを類似度算出に用いることができるので、より高精度に類似ユーザを選出することができる。また、類似度算出処理に用いる嗜好情報が減るため、処理時間も短くなる。
また、ユーザごとに、嗜好情報格納部１８に記憶する嗜好情報の数を設定し、記憶できる数の上限に到達した後はそれ以上記憶しないようにすることもできる。
以上が、端末装置３より、利用情報を受信した際の、サーバ装置１による嗜好情報を記憶する処理フローの説明である。
【００４５】
図９は、上述した所定のタイミングごとに行われる、類似度算出部１５による類似度算出処理の動作を示すフローチャートである。
まず、内積類似度算出部１５１が、通常内積算出部１５２、補正内積算出部１５３とデータのやり取りを行いながら、内積算出処理を行い（ステップＳ２０１）、類似度算出処理を行う（ステップＳ２０２）。
次に、内積類似度算出部１５１が、嗜好情報格納部１８に記憶されている嗜好情報の中で、ｓｔａｔｅが「１」、または、「２」の嗜好情報において、ｖａｌｕｅの値を、ｎｅｗ＿ｖａｌｕｅの値で置き換え（ステップＳ２０３）、ｎｅｗ＿ｖａｌｕｅを全て消去し（ステップＳ２０４）、全てのｓｔａｔｅを「０」とし（ステップＳ２０５）、ステップＳ２０１からステップＳ２０５までの一連の処理を終了する。
【００４６】
次に、ステップＳ２０１の内積算出処理について、図１０のフローチャートを用いて説明する。
まず、内積類似度算出部１５１が、内積を算出する２ユーザに対するユーザ識別情報の組合せを、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せとして抽出する（ステップＳ３０１）。ここでは、嗜好情報格納部１８を参照しながら、２ユーザ間で同一のコンテンツに対応する嗜好情報が存在しており、かつ、少なくとも一方のユーザの嗜好情報における、ｓｔａｔｅが「１」または「２」であるという条件を満たす、２ユーザの組合せを抽出する。この条件を満たす２ユーザは、前回の類似度算出時には共通でなかったコンテンツが新たに共通コンテンツとして追加されたり、前回の類似度算出時に共通であっても、そのコンテンツに対する嗜好情報における利用頻度値に変化が起きたりするため、内積が変化する。また、この条件を満たさない２ユーザ間の内積は、前回の類似度算出時の内積から変化がないため、改めて内積を算出する必要がない。尚、ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｖａｌｕｅが存在する状態がｓｔａｔｅ「１」、または、ｓｔａｔｅ「２」の状態のどちらか一方であるため、ｎｅｗ＿ｖａｌｕｅの存在の有無で判定することができる。
【００４７】
次に、内積類似度算出部１５１が、ステップＳ３０１で取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せのうちから１つの組合せを選択する。例えば、抽出した順に、１つ選択すればよい（ステップＳ３０２）。
次に、内積類似度算出部１５１が、ステップＳ３０２で選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せにおいて、以前内積を算出したか否かを判定する。以前内積を算出したことがある場合は、ステップＳ３０５へ進み、以前内積を算出したことがない場合は、ステップＳ３０４へ進む（ステップＳ３０３）。ここで、以前内積を算出したか否かを判定するには、類似度格納部１９に、ステップＳ３０２で選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せに対応した内積（ｉｎｎｅｒ＿ｐｒｏｄｕｃｔ）が記憶されているか否かで容易に判定することができる。記憶されている場合は、以前内積を算出したことになる。記憶されていない場合は、以前内積を算出していないことになる。サーバ装置１の初期状態では、類似度格納部１９に何も格納されていないため、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の全ての組合せにおいて、必ず最初の１回は、ステップＳ３０４に進むことになる。
【００４８】
ステップＳ３０４では、内積類似度算出部１５１が、通常内積算出部１５２に、ステップＳ３０２で選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを送ることで、通常内積算出部１５２が、通常内積算出処理を行い、ステップＳ３０６へ進む。
ステップＳ３０５では、内積類似度算出部１５１が、補正内積算出部１５３に、ステップＳ３０２で選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを送ることで、補正内積算出部１５３が、補正内積算出処理を行い、ステップＳ３０６へ進む。
次に、内積類似度算出部１５１が、ステップＳ３０２にて、全てのｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを選択したか否かを判定する。全て選択した場合は、ステップＳ３０１からステップＳ３０６までの一連の処理を終了し、まだ未選択のものが残っている場合は、ステップＳ３０２へ進む（ステップＳ３０６）。
以上が、ステップＳ２０１の内積算出処理の説明である。
【００４９】
次に、ステップＳ３０４の通常内積算出処理について、図１１を用いて説明する。
まず、通常内積算出部１５２が、内積類似度算出部１５１より、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを取得し（ステップＳ４０１）、内積を算出するための変数ｉ＿ｐｒｏｄｕｃｔ＝０とする（ステップＳ４０２）。
次に、通常内積算出部１５２が、嗜好情報格納部１８より、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１に対応する全ての嗜好情報のｃｏｎｔｅｎｔ＿ｉｄの集合と、ｕｓｅｒ＿ｉｄ＿２に対応する全ての嗜好情報のｃｏｎｔｅｎｔ＿ｉｄとの集合において、その両方の集合に存在するｃｏｎｔｅｎｔ＿ｉｄを全て取得する（ステップＳ４０３）。これにより、２ユーザ間の共通コンテンツのｃｏｎｔｅｎｔ＿ｉｄを全て取得することができる。
【００５０】
次に、通常内積算出部１５２が、ステップＳ４０３にて取得したｃｏｎｔｅｎｔ＿ｉｄのうち、例えば、取得した順番に、ｃｏｎｔｅｎｔ＿ｉｄを選択する（ステップＳ４０４）。
次に、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅを確認し、その値により判定を行う。ｓｔａｔｅが「０」の場合は、ステップＳ４０６へ進み、ｓｔａｔｅが「１」、または、「２」の場合は、ステップＳ４０７へ進む（ステップＳ４０５）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
【００５１】
ステップＳ４０６では、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値が記憶されているｖａｌｕｅをｖａｌｕｅ１として取得し、ステップＳ４０８へ進む。
ステップＳ４０７では、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値が記憶されているｎｅｗ＿ｖａｌｕｅをｖａｌｕｅ１として取得し、ステップＳ４０８へ進む。
【００５２】
次に、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿２とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅを確認し、その値により判定を行う。ｓｔａｔｅが「０」の場合は、ステップＳ４０９へ進み、ｓｔａｔｅが「１」、または、「２」の場合は、ステップＳ４１０へ進む（ステップＳ４０８）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
ステップＳ４０９では、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿２とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値が記憶されているｖａｌｕｅをｖａｌｕｅ２として取得し、ステップＳ４１１へ進む。
ステップＳ４１０では、通常内積算出部１５２が、嗜好情報格納部１８にて、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿２とステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値が記憶されているｎｅｗ＿ｖａｌｕｅをｖａｌｕｅ２として取得し、ステップＳ４１１へ進む。
次に、通常内積算出部１５２が、ｉ＿ｐｒｏｄｕｃｔにｖａｌｕｅ１とｖａｌｕｅ２との積を加える（ステップＳ４１１）。
次に、通常内積算出部１５２が、ステップＳ４０４にて、全てのｃｏｎｔｅｎｔ＿ｉｄを選択したか否かを判定する。全て選択した場合は、ステップＳ４１３へ進み、まだ未選択のものが残っている場合は、ステップＳ４０４へ進む（ステップＳ４１２）。
ステップＳ４１３では、通常内積算出部１５２が、類似度格納部１９に、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２と、ステップＳ４０２からステップＳ４１２までの処理にて算出したｉ＿ｐｒｏｄｕｃｔをｉｎｎｅｒ＿ｐｒｏｄｕｃｔとして関連付けたものを記憶し、ステップＳ４０１からステップＳ４１３までの一連の処理を終了する。
尚、通常内積算出処理による内積算出式は、内積算出対象の２ユーザをｘ，ｙとし、ユーザｘとユーザｙの全共通コンテンツをＩｃ、ユーザｘのコンテンツｉ（∈Ｉｃ）における利用頻度値をｖ（ｘ，ｉ）、ユーザｙのコンテンツｉにおける利用頻度値をｖ（ｙ，ｉ）としたとき、ユーザｘとユーザｙの内積ｉｐは、式（１）で表わされる。
以上が、ステップＳ３０４の通常内積算出処理の説明である。
【００５３】
【数１】
0005447307.tif 000002
【００５４】
次に、ステップＳ３０５における補正内積算出処理について、図１２を用いて説明する。
まず、補正内積算出部１５３が、内積類似度算出部１５１より、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを取得し（ステップＳ５０１）、類似度格納部１９より、ステップＳ５０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せに対応するｉｎｎｅｒ＿ｐｒｏｄｕｃｔを取得し（ステップＳ５０２）、内積を算出するための変数ｎｅｗ＿ｉｐの初期値をｉｎｎｅｒ＿ｐｒｏｄｕｃｔとする（ステップＳ５０３）。
次に、補正内積算出部１５３が、追加内積補正値算出部１５４に、ステップＳ５０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを送ることで、追加内積補正値算出部１５４が、追加内積補正値算出処理を行う（ステップＳ５０４）。
次に、補正内積算出部１５３が、追加内積補正値算出部１５４より、追加内積補正値Δｎ＿ｉ＿ｐを取得する（ステップＳ５０５）。
次に、補正内積算出部１５３が、ステップＳ５０５にて取得したΔｎ＿ｉ＿ｐをｎｅｗ＿ｉｐに加算する（ステップＳ５０６）。
【００５５】
次に、補正内積算出部１５３が、更新内積補正値算出部１５５に、ステップＳ５０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを送ることで、更新内積補正値算出部１５５が、更新内積補正値算出処理を行う（ステップＳ５０７）。
次に、補正内積算出部１５３が、更新内積補正値算出部１５５より、更新内積補正値Δｕ＿ｉ＿ｐを取得する（ステップＳ５０８）。
次に、補正内積算出部１５３が、ステップＳ５０８にて取得したΔｕ＿ｉ＿ｐをｎｅｗ＿ｉｐに加算する（ステップＳ５０９）。
次に、補正内積算出部１５３が、類似度格納部１９において、ステップＳ５０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２に対応するｉｎｎｅｒ＿ｐｒｏｄｕｃｔを、ｎｅｗ＿ｉｐで置き換え（ステップＳ５１０）、ステップＳ５０１からステップＳ５１０までの一連の処理を終了する。
以上が、ステップＳ３０５の補正内積算出処理の説明である。
【００５６】
次に、ステップＳ５０４の追加内積補正値算出処理について、図１３を用いて説明する。
まず、追加内積補正値算出部１５４が、補正内積算出部１５３より、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを取得する（ステップＳ６０１）。
次に、追加内積補正値算出部１５４が、追加内積補正値を算出するための変数をΔｎ＿ｉ＿ｐ＝０とする（ステップＳ６０２）。
【００５７】
次に、追加内積補正値算出部１５４が、嗜好情報格納部１８より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１に対応するユーザとｕｓｅｒ＿ｉｄ＿２に対応するユーザの共通コンテンツにおいて、少なくとも一方の共通コンテンツに対応する嗜好情報のｓｔａｔｅの値が「２」のｃｏｎｔｅｎｔ＿ｉｄを全て取得する（ステップＳ６０３）。この条件を満たすｃｏｎｔｅｎｔ＿ｉｄは、前回類似度算出以降に、そのｃｏｎｔｅｎｔ＿ｉｄに対応するコンテンツが共通コンテンツとなったため、前回類似度算出時に、対応する嗜好情報の利用頻度値を、内積を算出する際に用いていない。このため、対応する嗜好情報の利用頻度値を用いて、内積の変化量を追加内積補正値として算出する必要がある。
次に、追加内積補正値算出部１５４が、ステップＳ６０３にて取得したｃｏｎｔｅｎｔ＿ｉｄを、例えば、取得した順に一つ選択する（ステップＳ６０４）。
【００５８】
次に、追加内積補正値算出部１５４が、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅの値を判定する。ｓｔａｔｅの値が「０」の場合は、ステップＳ６０６へ進み、ｓｔａｔｅの値が「１」、または、「２」の場合は、ステップＳ６０７へ進む（ステップＳ６０５）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
ステップＳ６０６では、追加内積補正値算出部１５４が、嗜好情報格納部１８より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｎｖ１として取得し、ステップＳ６０８へ進む。
【００５９】
ステップＳ６０７では、追加内積補正値算出部１５４が、嗜好情報格納部１８より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｎｖ１として取得し、ステップＳ６０８へ進む。
【００６０】
次に、追加内積補正値算出部１５４が、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅの値を判定する。ｓｔａｔｅの値が「０」の場合は、ステップＳ６０９へ進み、ｓｔａｔｅの値が「１」、または、「２」の場合は、ステップＳ６１０へ進む（ステップＳ６０８）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
ステップＳ６０９では、追加内積補正値算出部１５４が、嗜好情報格納部１８より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｎｖ２として取得し、ステップＳ６１１へ進む。
【００６１】
ステップＳ６１０では、追加内積補正値算出部１５４が、嗜好情報格納部１８より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｎｖ２として取得し、ステップＳ６１１へ進む。
次に、追加内積補正値算出部１５４が、Δｎ＿ｉ＿ｐにｎｖ１×ｎｖ２を加算する（ステップＳ６１１）。
次に、追加内積補正値算出部１５４が、ステップＳ６０４にて、全てのｃｏｎｔｅｎｔ＿ｉｄを選択したか否かを判定する。全て選択した場合は、ステップＳ６１３へ進み、まだ未選択のものが残っている場合は、ステップＳ６０４へ進む（ステップＳ６１２）。
次に、追加内積補正値算出部１５４が、補正内積算出部１５３に、Δｎ＿ｉ＿ｐを送り（ステップＳ６１３）、ステップＳ６０１からステップＳ６１３までの一連の処理を終了する。
以上が、ステップＳ５０４の追加内積補正値算出処理の説明である。
【００６２】
次に、ステップＳ５０７の更新内積補正値算出処理について、図１４を用いて説明する。
まず、更新内積補正値算出部１５５が、補正内積算出部１５３より、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを取得する（ステップＳ７０１）。
次に、更新内積補正値算出部１５５が、更新内積補正値を算出するための変数をΔｕ＿ｉ＿ｐ＝０とする（ステップＳ７０２）。
【００６３】
次に、更新内積補正値算出部１５５が、嗜好情報格納部１８より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１に対応するユーザとｕｓｅｒ＿ｉｄ＿２に対応するユーザの共通コンテンツにおいて、一方のユーザの共通コンテンツに対応する嗜好情報のｓｔａｔｅの値が「１」で、他方のユーザの共通コンテンツに対応するｓｔａｔｅの値が「１」か「０」のｃｏｎｔｅｎｔ＿ｉｄを全て取得する（ステップＳ７０３）。この条件を満たすｃｏｎｔｅｎｔ＿ｉｄは、前回の類似度算出時に、すでに共通コンテンツであったため、前回類似度算出時に、対応する嗜好情報の利用頻度値を用いて、内積を算出している。このため、対応する嗜好情報の最新の利用頻度値と、以前類似度を算出した際の利用頻度値を用いて、内積の変化量を更新内積補正値として算出する必要がある。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅが共に存在する状態がｓｔａｔｅ「１」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
次に、更新内積補正値算出部１５５が、ステップＳ７０３にて取得したｃｏｎｔｅｎｔ＿ｉｄを、例えば、取得した順に一つ選択する（ステップＳ７０４）。
【００６４】
次に、更新内積補正値算出部１５５が、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅの値を判定する。ｓｔａｔｅの値が「０」の場合は、ステップＳ７０６へ進み、ｓｔａｔｅの値が「１」の場合は、ステップＳ７０７へ進む（ステップＳ７０５）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しく、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅが共に存在する状態がｓｔａｔｅ「１」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
【００６５】
ステップＳ７０６では、更新内積補正値算出部１５５が、嗜好情報格納部１８より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｎｖ１として取得し、以前類似度を算出した際の利用頻度値でもあるｖａｌｕｅをｖ１として取得する。次に、ステップＳ７０８へ進む。
ステップＳ７０７では、更新内積補正値算出部１５５が、嗜好情報格納部１８より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｎｖ１として取得し、以前類似度を算出した際の利用頻度値であるｖａｌｕｅをｖ１として取得する。
【００６６】
次に、更新内積補正値算出部１５５が、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅの値を判定する。ｓｔａｔｅの値が「０」の場合は、ステップＳ７０９へ進み、ｓｔａｔｅの値が「１」の場合は、ステップＳ７１０へ進む（ステップＳ７０８）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しく、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅが共に存在する状態がｓｔａｔｅ「１」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
【００６７】
ステップＳ７０９では、更新内積補正値算出部１５５が、嗜好情報格納部１８より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｎｖ２として取得し、以前類似度を算出した際の利用頻度値でもあるｖａｌｕｅをｖ２として取得し、ステップＳ７１１へ進む。
【００６８】
ステップＳ７１０では、更新内積補正値算出部１５５が、嗜好情報格納部１８より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿２と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報の最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｎｖ２として取得し、以前類似度を算出した際の利用頻度値であるｖａｌｕｅをｖ２として取得する。
次に、更新内積補正値算出部１５５が、Δｕ＿ｉ＿ｐにｎｖ１×ｎｖ２−ｖ１×ｖ２を加算する（ステップＳ７１１）。
次に、更新内積補正値算出部１５５が、ステップＳ７０４にて、全てのｃｏｎｔｅｎｔ＿ｉｄを選択したか否かを判定する。全て選択した場合は、ステップＳ７１３へ進み、まだ未選択のものが残っている場合は、ステップＳ７０４へ進む（ステップＳ７１２）。
次に、更新内積補正値算出部１５５が、補正内積算出部１５３に、Δｕ＿ｉ＿ｐを送り（ステップＳ７１３）、ステップＳ７０１からステップＳ７１３までの一連の処理を終了する。
以上が、ステップＳ５０７の更新内積補正値算出処理の説明である。
【００６９】
尚、ユーザｘとユーザｙにおける以前算出した内積をｉｐ、内積の変化量をΔｉｐ、追加内積補正値をΔｎｉｐ、更新内積補正値をΔｕｉｐとしたとき、補正内積算出処理による内積ｉｐ’は、式（２）で表わされる。
【００７０】
【数２】
0005447307.tif 000003
【００７１】
さらに、ユーザｘとユーザｙの共通コンテンツのうち、追加内積補正値算出処理の対象となった全てのコンテンツをＪｃとし、ユーザｘにおけるコンテンツｊ（∈Ｊｃ）の最新の利用頻度値（追加内積補正値算出処理におけるｎｖ１）をｖ'（ｘ，ｊ）とし、ユーザｙにおけるコンテンツｊの最新の利用頻度値（追加内積補正値算出処理におけるｎｖ２）をｖ'（ｙ，ｊ）とすると、Δｎｉｐは式（３）で表わされる。
【００７２】
【数３】
0005447307.tif 000004
【００７３】
また、ユーザｘとユーザｙの共通コンテンツのうち、更新内積補正値算出処理の対象となった全てのコンテンツをＫｃとし、ユーザｘにおけるコンテンツｋ（∈Ｋｃ）の最新の利用頻度値（更新内積補正値算出処理におけるｎｖ１）をｖ'（ｘ，ｋ）とし、以前類似度を算出した際の利用頻度値（更新内積補正値算出処理におけるｖ１）をｖ（ｘ，ｋ）とし、ユーザｙにおけるコンテンツｋの最新の利用頻度値（更新内積補正値算出処理におけるｎｖ２）をｖ'（ｙ，ｋ）とし、以前類似度を算出した際の利用頻度値（更新内積補正値算出処理におけるｖ２）をｖ（ｙ，ｋ）とすると、Δｕｉｐは式（４）で表わされる。
【００７４】
【数４】
0005447307.tif 000005
【００７５】
次に、ステップＳ２０２の類似度算出処理について、図１５を用いて説明する。
まず、内積類似度算出部１５１が、類似度を算出する２ユーザに対するユーザ識別情報の組合せを、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せとして取得する（ステップＳ８０１）。尚、類似度を算出する２ユーザは、嗜好情報格納部１８に、少なくとも１つの同一コンテンツに対応する嗜好情報を記憶している、かつ、少なくとも１つの同一コンテンツにおいて、少なくとも一方の嗜好情報における、ｓｔａｔｅが「１」、または、「２」であるという条件を満たす。この条件を満たす２ユーザは、ステップＳ２０１の内積算出処理により、内積の値が変化しているため、類似度を改めて算出する必要がある。また、この条件を満たさない２ユーザは、前回の類似度算出時の内積から変化していないので、改めて類似度を算出する必要がない。
【００７６】
次に、内積類似度算出部１５１が、ステップＳ８０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せの中から、例えば、取得した順に、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを一つ選択する（ステップＳ８０２）。
次に、内積類似度算出部１５１が、類似度格納部１９より、ステップＳ８０２にて選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せに対応するｉｎｎｅｒ＿ｐｒｏｄｕｃｔを取得する（ステップＳ８０３）。
【００７７】
次に、内積類似度算出部１５１が、ステップＳ８０３にて取得したｉｎｎｅｒ＿ｐｒｏｄｕｃｔを用いて類似度を算出する（ステップＳ８０４）。尚、ｉｎｎｅｒ＿ｐｒｏｄｕｃｔを用いて類似度を算出する方法は、例えば、ｉｎｎｅｒ＿ｐｒｏｄｕｃｔをそのまま類似度としてもよい。このとき、ユーザｘとユーザｙの内積をｉｐとすると、ユーザｘとユーザｙとの間の類似度ｓｉｍ（ｘ，ｙ）は、式（５）で表わされる。
【００７８】
【数５】
0005447307.tif 000006
【００７９】
また、ｉｎｎｅｒ＿ｐｒｏｄｕｃｔに、２ユーザ間の共通コンテンツ数を用いて算出した値を重みとして掛け合わせた値を類似度としてもよい。このとき、ユーザｘとユーザｙの内積をｉｐとし、２ユーザ間の共通コンテンツ数を用いた重みをｗｃとすると、ユーザｘとユーザｙとの間の類似度ｓｉｍ（ｘ，ｙ）は、式（６）で表わされる。
【００８０】
【数６】
0005447307.tif 000007
【００８１】
重みｗｃは、ユーザｘとユーザｙの共通コンテンツ数を用いて算出する。例えば、共通コンテンツ数が多ければ多いほど類似度が高くしたい場合は、ｗｃとして、共通コンテンツ数や、共通コンテンツ数の平方根や、共通コンテンツ数の対数などを用いれば良い。また逆に、共通コンテンツ数の影響を小さくしたい場合は、ｗｃとして、共通コンテンツ数の逆数や、共通コンテンツ数の平方根の逆数や、共通コンテンツ数の対数の逆数などを用いれば良い。コンテンツの性質や、利用頻度値の算出方法に応じて、共通コンテンツ数の影響を大きくするか小さくするかを決めれば良い。
【００８２】
次に、内積類似度算出部１５１が、類似度格納部１９における、ステップＳ８０２にて選択したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せに対応するｓｉｍｉｌａｒｉｔｙに、ステップ８０４にて算出した類似度を記憶する（ステップＳ８０５）。
次に、内積類似度算出部１５１が、ステップＳ８０２にて全てのｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２との組合せを選択したか否かを判定する。全ての組合せを選択した場合は、ステップＳ８０１からステップＳ８０６までの一連の処理を終了し、未選択の組合せが残っている場合は、ステップＳ８０２へ進む（ステップＳ８０６）。
以上が、ステップＳ２０２の類似度算出処理の説明である。
【００８３】
類似度算出部１５による類似度算出処理の説明は以上であるが、ここで本発明のサーバ装置によってユーザ間類似度の計算量が削減できる理由を説明する。
協調フィルタリング方式のコンテンツ推薦において、時間の経過と共に、ユーザ間の類似度計算を繰り返し行うことが一般的である。本実施形態においても、上述した所定のタイミングごとに、繰り返しユーザ間の類似度計算を行っている。
しかしながら、従来の協調フィルタリングにおけるユーザ間の類似度計算においては、本実施形態の通常内積算出部１５２に相当する処理を行っており、繰り返し計算において、過去の計算結果を利用した計算量の削減は行われていなかった。
【００８４】
ここで、利用頻度値データ（利用情報）の性質を考えると、類似度計算を行う所定のタイミングの間隔が限られているため、前回類似度を計算した時点から、新たに類似度計算を行う時点までの間で、利用頻度値が変化するユーザは極一部であり、ユーザ全体に対して非常に少ない割合である場合が多い。本発明においては、このような利用頻度値データの性質を利用して、ユーザ間の類似度の計算量を削減をしている。
具体的には、嗜好情報格納部１８に、直近の類似度算出時の用いた利用頻度値であるｖａｌｕｅと、直近の類似度算出以降に追加または変更された利用頻度値であるｎｅｗ＿ｖａｌｕｅと、嗜好情報の状態を示すフラグのｓｔａｔｅを格納しているので、ｓｔａｔｅの値、またはｖａｌｕｅの値の有無とｎｅｗ＿ｖａｌｕｅの値の有無の組合せを用いることにより、ステップＳ３０１において、内積の再計算が必要な２ユーザの組合せを的確に抽出できる。上述した利用頻度値データの性質により、ほとんどのユーザの利用頻度値は、変更も追加もされないため、内積の再計算も必要ない。従って、ステップＳ３０１以降の処理で対象となるユーザの組合せは、全てのユーザの組合せの内の極一部であり、大半のユーザの組合せに関しては再計算処理を行う必要がないので、計算量を大幅に削減することができる。
【００８５】
また、類似度格納部１９に直近に計算された内積であるｉｎｎｅｒ＿ｐｒｏｄｕｃｔを格納しているため、ステップＳ３０３の処理において、過去に内積を計算しているユーザの組合せか否かを容易に判定することができ、過去に内積を計算している場合は、ステップＳ３０５に進んで、過去の内積計算の結果を有効に再利用している。
また、ステップＳ５０６において、嗜好情報格納部１８のｓｔａｔｅの値、またはｖａｌｕｅの値の有無とｎｅｗ＿ｖａｌｕｅの値の有無の組合せを用いて、どのユーザのどのコンテンツに対する利用頻度値が追加されたか、及びどのユーザのどのコンテンツに対する利用頻度値が更新されたかについて、その２つの場合に限定して適切に抽出している。そして、追加時（ステップＳ５０７）と更新時（ステップＳ５０８）の場合のみ処理を行っているため、内積の値に影響を与える必要最低限のデータのみを使って効率よく内積を計算ができる。
【００８６】
このように本発明では、ユーザ間類似度の算出に必要な内積計算を効率よく行うことができる。また、内積計算において行動履歴データの一部のみを用いているわけではなく、全ての行動履歴データを用いているので、計算量削減を行わない場合（全てのデータに対して通常内積算出部１５２に相当する処理を行う場合）と比べて、内積の計算精度が低下することがない。従って本発明により、ユーザ間の類似度を少ない計算量で、かつ精度良く計算することができる。
【００８７】
図１６は、端末装置３より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置１による類似ユーザ情報提供処理フローを示すシーケンス図である。
まず、取得要求送信部３２が、入力部３４より、類似ユーザ情報の取得を要求する操作を受信し（ステップＳ９０１）、端末装置３を利用中のユーザを識別するユーザ識別情報を用いて、類似ユーザ情報の取得を要求する取得要求を作成し（ステップＳ９０２）、ネットワーク２を通じて、取得要求受信部１２に、ステップＳ９０２にて作成した取得要求を送信する（ステップＳ９０３）。
次に、取得要求受信部１２が、ネットワーク２を通じて、取得要求送信部３２より、取得要求を受信し（ステップＳ９０４）、類似ユーザ情報選択部１６に、ステップＳ９０４にて受信した取得要求を送信する（ステップＳ９０５）。
次に、類似ユーザ情報選択部１６が、取得要求受信部１２より、取得要求を受信する（ステップＳ９０６）。
【００８８】
次に、類似ユーザ情報選択部１６が、類似度格納部１９より、ステップＳ９０６にて受信した取得要求のユーザ識別情報に対応するユーザ（一のユーザ）における類似ユーザのユーザ識別情報を取得する（ステップＳ９０７）。類似ユーザのユーザ識別情報取得には、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、ｓｉｍｉｌａｒｉｔｙが所定値以上のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、一のユーザのユーザ識別情報を含むものの中から、ｓｉｍｉｌａｒｉｔｙの高い順に所定数のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の組合せを選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。さらに、ユーザ情報格納部２０において、ユーザ属性情報の中に、ユーザが希望する「紹介相手の条件」が含まれている場合には、これを用いて、類似ユーザを選択しても良い。すなわち、一のユーザの「紹介相手の希望条件」に合致する属性情報（年齢、性別など）を持つ他のユーザを対象にして、ｓｉｍｉｌａｒｉｔｙが所定値以上のユーザ、またはｓｉｍｉｌａｒｉｔｙの高い順に所定数のユーザを抽出して、一のユーザに対する類似ユーザとしても良い。
【００８９】
次に、類似ユーザ情報選択部１６が、ユーザ情報格納部２０より、ステップＳ９０７にて取得した全てのユーザ識別情報に対応するユーザ属性情報を取得する（ステップＳ９０８）。
次に、類似ユーザ情報選択部１６が、要求情報送信部１３に、ステップＳ９０６で取得した取得要求のユーザ識別情報とともに、ステップＳ９０８で取得した全てのユーザ情報を要求情報として送信する（ステップＳ９０９）。
次に、要求情報送信部１３が、類似ユーザ情報選択部１６より、ユーザ識別情報と要求情報とを受信し（ステップＳ９１０）、ネットワーク２を通じて、ステップＳ９１０にて取得したユーザ識別情報に対応する端末装置３の要求情報受信部３３に、ステップＳ９１０にて取得した要求情報を送信する（ステップＳ９１１）。
次に、要求情報受信部３３が、ネットワーク２を通じて、要求情報送信部１３より、要求情報を取得し（ステップＳ９１２）、ステップＳ９１２にて取得した要求情報を描画し、表示装置２５に表示し（ステップＳ９１３）、ステップＳ９０１からステップＳ９１３までの一連の処理を終了する。
以上が、端末装置３より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置１による類似ユーザ情報提供処理の説明である。
【００９０】
図１７は、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理の第１の方法を説明するためのシーケンス図である。
まず、取得要求送信部３２が、入力部３４より、コンテンツの推薦を要求する操作を受信し（ステップＳ１００１）、端末装置３を利用中のユーザを識別するユーザ識別情報を用いて、推薦コンテンツの取得を要求する取得要求を作成し（ステップＳ１００２）、ネットワーク２を通じて、取得要求受信部１２に、ステップＳ１００２にて作成した取得要求を送信する（ステップＳ１００３）。
【００９１】
次に、取得要求受信部１２が、ネットワーク２を通じて、取得要求送信部３２より、取得要求を受信し（ステップＳ１００４）、推薦コンテンツ選択部１７に、ステップＳ１００４にて受信した取得要求を送信する（ステップＳ１００５）。
次に、推薦コンテンツ選択部１７が、取得要求受信部１２より、取得要求を受信する（ステップＳ１００６）。
次に、推薦コンテンツ選択部１７が、類似度格納部１９より、ステップＳ１００６にて受信した取得要求のユーザ識別情報に対応するユーザ（一のユーザ）における類似ユーザのユーザ識別情報を取得する（ステップＳ１００７）。類似ユーザのユーザ識別情報取得には、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、ｓｉｍｉｌａｒｉｔｙが所定値以上のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、一のユーザのユーザ識別情報を含むものの中から、ｓｉｍｉｌａｒｉｔｙの高い順に所定数のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。
【００９２】
次に、推薦コンテンツ選択部１７が、嗜好情報格納部１８より、ステップＳ１００７にて取得した類似ユーザのユーザ識別情報に対応するｃｏｎｔｅｎｔ＿ｉｄを所定数取得する（ステップＳ１００８）。ここで、嗜好情報格納部１８を参照しながら、類似ユーザのｓｔａｔｅが「０」の場合はｖａｌｕｅ、ｓｔａｔｅが「１」または「２」の場合はｎｅｗ＿ｖａｌｕｅの値をコンテンツ毎に加算し、その加算値の大きな順に所定数のコンテンツのｃｏｎｔｅｎｔ＿ｉｄを取得しても良い。
【００９３】
次に、推薦コンテンツ選択部１７が、コンテンツ情報格納部２１より、ステップＳ１００８にて取得した全てのｃｏｎｔｅｎｔ＿ｉｄに対応するｃｏｎｔｅｎｔ＿ｉｎｆｏを取得する（ステップＳ１００９）。
次に、推薦コンテンツ選択部１７が、要求情報送信部１３に、ステップＳ１００６で取得した取得要求のユーザ識別情報とともに、ステップＳ１００９で取得した全てのコンテンツ情報を要求情報として送信する（ステップＳ１０１０）。
次に、要求情報送信部１３が、推薦コンテンツ選択部１７より、ユーザ識別情報と要求情報とを受信し（ステップＳ１０１１）、ネットワーク２を通じて、ステップＳ１０１１にて取得したユーザ識別情報に対応する端末装置３の要求情報受信部３３に、ステップＳ１０１１にて取得した要求情報を送信する（ステップＳ１０１２）。
次に、要求情報受信部３３が、ネットワーク２を通じて、要求情報送信部１３より、要求情報を取得し（ステップＳ１０１３）、ステップＳ１０１３にて取得した要求情報を描画し、表示装置２５に表示し（ステップＳ１０１４）、ステップＳ１００１からステップＳ１０１４の一連の処理を終了する。
以上が、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理の説明である。
【００９４】
図１８は、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理の第２の方法を説明するためのシーケンス図である。
ステップＳ１００１からステップＳ１００６まで、及び、ステップＳ１００９からステップＳ１０１４までの処理は図１７の端末装置３より取得要求を受信した際の、サーバ装置１によるコンテンツ推薦処理フローと同様である。
ステップＳ１００６の処理の後に、ステップＳ１１０７へ進む。
【００９５】
次に、推薦コンテンツ選択部１７が、類似度格納部１９より、ステップＳ１００６にて受信した取得要求のユーザ識別情報に対応するユーザ（一のユーザ）における類似ユーザのユーザ識別情報とｓｉｍｉｌａｒｉｔｙとを取得する（ステップＳ１１０７）。類似ユーザのユーザ識別情報取得には、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、ｓｉｍｉｌａｒｉｔｙが所定値以上のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２のどちらか一方に、ステップＳ１００６にて受信した取得要求のユーザ識別情報を含むものの中から、ｓｉｍｉｌａｒｉｔｙの高い順に所定数のｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。
【００９６】
次に、推薦コンテンツ選択部１７が、嗜好情報格納部１８より、ステップＳ１１０７にて取得した類似ユーザのユーザ識別情報に対応するｃｏｎｔｅｎｔ＿ｉｄと、ｖａｌｕｅとを取得し、ｃｏｎｔｅｎｔ＿ｉｄごとに推薦度を算出する。さらに算出した推薦度を基に推薦コンテンツ用のｃｏｎｔｅｎｔ＿ｉｄを選択する（ステップＳ１１０８）。次に、ステップＳ１００９へ進む。推薦度は、ステップＳ１１０７にて取得したｓｉｍｉｌａｒｉｔｙと、ステップＳ１１０８にて取得したｖａｌｕｅの積とする。このとき、推薦されるユーザｘとユーザｘの類似ユーザｙとのｓｉｍｉｌａｒｉｔｙをｓｉｍ（ｘ，ｙ）、ユーザｙのコンテンツｉに対するｖａｌｕｅをｖ（ｙ，ｉ）としたとき、ユーザｘに対する類似ユーザｙにおけるコンテンツｉの推薦値ｒｅｃｏｍ（適合度）は、式（７）で表わされる。
【００９７】
【数７】
0005447307.tif 000008
【００９８】
また、推薦コンテンツに対応するｃｏｎｔｅｎｔ＿ｉｄは、推薦値の高い順に所定数選択するか、または、所定値以上の推薦値をもつものを選択する。なお、推薦値（適合度）は、式（７）で表される推薦値ｒｅｃｏｍに限定されず、一の利用者との他の利用者との類似度が大きいほど、かつその他の利用者の利用頻度値が大きいほど大きな値となるような値であればよい。
以上が、サーバ装置１によるコンテンツ推薦処理の第２の方法の説明である。
【００９９】
＜第２の実施形態＞
以下に、本発明の実施形態について、図を用いて詳細に説明する。
図１９は、本発明の第２の実施形態におけるサーバ装置１０の構成図である。本発明のシステム全体の構成は、図１の本発明の第１の実施形態におけるシステム全体の構成図において、サーバ装置１を、図１９のサーバ装置１０で置き換えたものである。
【０１００】
サーバ装置１０は、本発明の第１の実施形態のサーバ装置１と、構成が変わっているものの、同様の機能を有する。
サーバ装置１０は、利用情報受信部１１、取得要求受信部１２、要求情報送信部１３、利用頻度値算出部１４、類似度算出部２１５、類似ユーザ情報選択部１６、推薦コンテンツ選択部１７、嗜好情報格納部１８、類似度格納部１９、ユーザ情報格納部２０、コンテンツ情報格納部２１、制御部２２、内積算出補助情報格納部２２３から構成される。
利用情報受信部１１、取得要求受信部１２、要求情報送信部１３、利用頻度値算出部１４、類似ユーザ情報選択部１６、推薦コンテンツ選択部１７、嗜好情報格納部１８、類似度格納部１９、ユーザ情報格納部２０、コンテンツ情報格納部２１に関しては、第１の実施形態と同様である。
【０１０１】
内積算出補助情報格納部２２３は、ＨＤＤなどの記憶装置を用いて、内積算出補助情報を複数格納する。内積算出補助情報格納部２２３における内積算出補助情報の格納形式を図２０に示す。内積算出補助情報とは、２ユーザ分のユーザ識別情報であるｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２、及び、その２ユーザの共通コンテンツに対するコンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄと、類似度算出部２１５において直近の類似度算出が行われた際に使われた、一方のユーザ識別情報とコンテンツ識別情報に対応する利用頻度値と、もう一方のユーザ識別情報とコンテンツ識別情報に対応する利用頻度値との積（内積算出補助値）であるｐｒｏｄｕｃｔと、類似度算出部２１５において類似度算出をする際に、新たに２ユーザ間に共通コンテンツが追加された場合と、以前算出した内積算出補助値に変化があった場合にのみ算出される内積算出補助値であるｎｅｗ＿ｐｒｏｄｕｃｔと、内積算出補助情報の状態を示すフラグであるｐ＿ｓｔａｔｅとを関連付けたものであり、図２０のようなテーブル形式で格納されている。このテーブルにおいて、（ｕｓｅｒ＿ｉｄ＿１，ｕｓｅｒ＿ｉｄ＿２，ｃｏｎｔｅｎｔ＿ｉｄ）の組合せはユニーク（一意）であり、この組合せを指定することのより、テーブルのデータが特定できる。
【０１０２】
本実施形態における内積算出補助情報の状態を示すフラグであるｐ＿ｓｔａｔｅは、嗜好情報格納部１８のｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無により値が変化するｓｔａｔｅと同様に、ｐｒｏｄｕｃｔとｎｅｗ＿ｐｒｏｄｕｃｔの有無により値が変化する。ただし、ｐ＿ｓｔａｔｅの値が変化をするタイミングは、類似度算出部２１５にて、類似度算出を行うときのみである。ｐ＿ｓｔａｔｅが「０」の場合は、ｐｒｏｄｕｃｔにのみ値が記憶されている状態である。これは、前回の類似度算出以降に、嗜好情報格納部１８において、内積算出補助情報のｕｓｅｒ＿ｉｄ＿１とｃｏｎｔｅｎｔ＿ｉｄに対応する嗜好情報も、ｕｓｅｒ＿ｉｄ＿２とｃｏｎｔｅｎｔ＿ｉｄに対応する嗜好情報も変化せず、内積算出補助値が変化しなかったことを示す。ｐ＿ｓｔａｔｅが「１」の場合は、ｐｒｏｄｕｃｔとｎｅｗ＿ｐｒｏｄｕｃｔの両方に値が記憶されている状態である。
【０１０３】
これは、前回の類似度算出時に、嗜好情報格納部１８において、内積算出補助情報のｕｓｅｒ＿ｉｄ＿１とｃｏｎｔｅｎｔ＿ｉｄに対応する嗜好情報も、ｕｓｅｒ＿ｉｄ＿２とｃｏｎｔｅｎｔ＿ｉｄに対応する嗜好情報も記憶されており、かつ、前回の類似度算出以降に、２つの嗜好情報のうちの少なくとも一方が変化し、内積算出補助値が変化したことを示す。ｐ＿ｓｔａｔｅが「２」の場合は、ｎｅｗ＿ｐｒｏｄｕｃｔにのみ値が記憶されている状態である。これは、類似度算出時に、はじめてこの内積算出補助情報が登録されたことを示す。ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２は、類似度格納部１９と同様に、ｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２を入れ替えて一致するものが重複して記憶されないようにするとよい。本実施形態ではこのようなｐ＿ｓｔａｔｅを用いて処理を行うが、ｐ＿ｓｔａｔｅを用いる代わりにｐｒｏｄｕｃｔとｎｅｗ＿ｐｒｏｄｕｃｔの有無を用いて、同様に内積算出補助情報の状態を判定することも可能である。
【０１０４】
類似度算出部２１５は、構成は異なるが、本発明の第１の実施形態における類似度算出部１５と同様の機能を有する。
ここで、類似度算出部２１５の構成を図２１のブロック図を用いて説明する。図２１に示すように、類似度算出部２１５は、内積類似度算出部２１５１、内積算出補助値算出部２１５６、通常内積算出部１５２、補正内積算出部１５３、追加内積補正値算出部２１５４、更新内積補正値算出部２１５５との構成である。
通常内積算出部１５２と、補正内積算出部１５３は、本発明の第１の実施形態と同様である。
【０１０５】
内積類似度算出部２１５１は、内積算出補助値算出部２１５６、通常内積算出部２１５２、補正内積算出部２１５３とデータのやり取りを行いながら、嗜好情報格納部１８に記憶されている複数の嗜好情報や、類似度格納部１９に記憶されている２ユーザ間の類似性を数値化した類似度や、内積算出補助情報格納部２２３に記憶されている内積算出補助値等を用いて、内積を用いた類似度を算出する。そして、類似度格納部１９に、類似度算出対象の２ユーザに対応する２つのユーザ識別情報と、算出した類似度とを関連付けて記憶する。そして、全類似度算出対象の２ユーザ間の類似度算出が終わると、嗜好情報格納部１８において、ｓｔａｔｅが「１」、または、「２」の全ての嗜好情報に対して、ｖａｌｕｅの値をｎｅｗ＿ｖａｌｕｅの値に置き換え、ｎｅｗ＿ｖａｌｕｅの値を消去し、ｓｔａｔｅを「０」とする。そして、内積算出補助情報格納部２２３において、ｐ＿ｓｔａｔｅが「１」、または、「２」の全ての内積算出補助情報に対して、ｐｒｏｄｕｃｔの値をｎｅｗ#ｐｒｏｄｕｃｔの値に置き換え、ｎｅｗ＿ｐｒｏｄｕｃｔの値を消去し、ｐ＿ｓｔａｔｅを「０」にする。また、ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｖａｌｕｅを消去するだけでよい。また、ｐ＿ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｐｒｏｄｕｃｔを消去するだけでよい。
【０１０６】
内積算出補助値算出部２１５６は、共通コンテンツを有する２ユーザにおいて、その共通コンテンツに対する内積算出補助値を算出し、内積算出補助情報格納部２２３に記憶するためのものである。内積算出補助値を算出する対象は、共通コンテンツを有する２ユーザにおいて、嗜好情報格納部１８に記憶されている嗜好情報のうち、少なくとも一方の嗜好状態のｓｔａｔｅが「１」か「２」である必要がある。これにより、内積算出補助値の算出対象を、内積算出補助値が変化する内積算出補助情報や、新たに追加される内積算出補助情報のみに絞ることができる。このとき、内積算出補助情報格納部２２３に、その２ユーザのユーザ識別情報と、共通コンテンツに対応するコンテンツ識別情報に対応する内積算出補助情報が既に記憶されている場合は、新たに算出した内積算出補助値をｎｅｗ＿ｐｒｏｄｕｃｔに記憶し、ｐ＿ｓｔａｔｅを「１」と置き換える。また、内積算出補助情報格納部２２３に、その２ユーザのユーザ識別情報と、共通コンテンツに対応するコンテンツ識別情報に対応する内積算出補助情報が記憶されていない場合は、２ユーザのユーザ識別情報をｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２に、共通コンテンツのコンテンツ識別情報をｃｏｎｔｅｎｔ＿ｉｄに、内積算出補助値をｎｅｗ＿ｐｒｏｄｕｃｔに割り当て、ｐ＿ｓｔａｔｅを「２」として新たに記憶する。
【０１０７】
追加内積補正値算出部２１５４は、類似度算出対象の２ユーザにおいて、内積算出補助情報格納部２２３にて、ｐ＿ｓｔａｔｅが「２」のみの内積算出補助情報を用いて、追加内積補正値を算出するためのものである。
更新内積補正値算出部２１５５は、類似度算出対象の２ユーザにおいて、内積算出補助情報格納部２２３にて、ｐ＿ｓｔａｔｅが「１」のみの内積算出補助情報を用いて、更新内積補正値を算出するためのものである。
以上が、類似度算出部２１５における構成の説明である。なお、ネットワーク２と端末装置３の構成については、第１の実施形態と同様である。
【０１０８】
次に、上記構成におけるサーバ装置１０の動作を説明する。
第２の実施形態におけるサーバ装置１０は、ネットワーク２を通じて、複数の端末装置３との情報のやり取りを行いながら、主に、嗜好情報の記憶、類似度の算出、類似ユーザ情報の提供、コンテンツの推薦を行う。
端末装置３より、利用情報を受信した際の、サーバ装置１０による嗜好情報を記憶する処理、端末装置３より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置１０による類似ユーザ情報提供処理、端末装置３より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置１０によるコンテンツ推薦処理については、第１の実施形態と同様である。
【０１０９】
図２２は、所定のタイミングごとに行われる、類似度算出部２１５による類似度算出処理の動作を示すフローチャートである。
まず、内積類似度算出部２１５１が、内積算出補助値算出部２１５６と、通常内積算出部２１５２と、補正内積算出部２１５３とデータのやり取りを行いながら、内積算出処理を行う（ステップＳ１２０１）。次に、ステップＳ２０２へ進む。
ステップＳ２０２からステップＳ２０５までの手順は、本発明の第１の実施形態における所定のタイミングごとに行われる、類似度算出部１５による類似度算出処理のステップＳ２０２からステップＳ２０５までの処理と同様である。ステップＳ２０２からステップＳ２０５までの処理を終えると、ステップＳ１２０６へ進む。
【０１１０】
次に、内積類似度算出部２１５１が、内積算出補助情報格納部２２３に記憶されている内積算出補助情報の中で、ｐ＿ｓｔａｔｅが「１」、または、「２」の内積算出補助情報において、ｐｒｏｄｕｃｔの値を、ｎｅｗ＿ｐｒｏｄｕｃｔの値で置き換え（ステップＳ１２０６）、ｎｅｗ＿ｐｒｏｄｕｃｔを全て消去し（ステップＳ１２０７）、全てのｐ＿ｓｔａｔｅを「０」とし（ステップＳ１２０８）、ステップＳ１２０１からステップＳ１２０８までの一連の処理を終了する。
以上が、所定のタイミングごとに行われる、類似度算出部２１５による類似度算出処理の説明である。
【０１１１】
次に、ステップＳ１２０１の内積算出処理について、図２３のフローチャートを用いて説明する。
まず、内積類似度算出部２１５１が、内積算出補助値算出部２１５６にて、内積算出補助値算出処理を行わせる（ステップ１３０１）。
【０１１２】
次にステップＳ１３０２において、内積類似度算出部２１５１が、嗜好情報格納部１８の代わりに、内積算出補助情報格納部２２３において、ｐ＿ｓｔａｔｅが「１」、または、「２」の条件を満たす内積算出補助情報におけるｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の組合せを抽出する。この条件を満たす２ユーザは、前回の類似度算出以降に、共通コンテンツが新たに追加されたり、共通コンテンツの利用頻度値の積が変化しているため、内積が変化する。また、この条件を満たさない２ユーザ間の内積は、前回の類似度算出時の内積から変化がないため、改めて内積を算出する必要がない。また、予め共通コンテンツが記憶されている内積算出補助情報格納部２２３より、２ユーザ間の共通コンテンツを探すため、本発明の第１の実施形態におけるステップＳ２０１の内積算出処理におけるステップＳ３０１の内積算出対象の２ユーザの組合せを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、ｐ＿ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｐｒｏｄｕｃｔが存在する状態がｐ＿ｓｔａｔｅ「１」、または、ｐ＿ｓｔａｔｅ「２」の状態を示すので、ｎｅｗ＿ｐｒｏｄｕｃｔの存在の有無で判定することができる。
【０１１３】
ステップＳ３０２からステップＳ３０３までの処理とステップＳ３０６の処理は、本発明の第１の実施形態におけるステップＳ２０１の内積算出処理のステップＳ３０２からステップＳ３０３までの処理とステップＳ３０６の処理と同様である。
ステップＳ１３０４の通常内積算出処理と、ステップＳ１３０５の補正内積算出処理は後ほど詳しく説明する。
以上が、ステップＳ１２０１の内積算出処理の説明である。
【０１１４】
次に、ステップＳ１３０１の内積算出補助値算出部２１５６による内積算出補助値算出処理について、図２４を用いて説明する。
まず、内積算出補助値算出部２１５６が、内積算出補助値を算出する２ユーザのユーザ識別情報であるｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２と、その２ユーザの共通コンテンツのコンテンツ識別情報であるｃｏｎｔｅｎｔ＿ｉｄとの組合せを全て抽出する（ステップＳ１４０１）。内積算出補助値を算出するｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄの組合せは、共通のコンテンツを有する２ユーザにおいて、嗜好情報格納部１８において、その２ユーザの内の一方のユーザ識別情報と、共通コンテンツのコンテンツ識別情報とに対応する嗜好情報と、その２ユーザの内の他方のユーザ識別情報と、共通コンテンツのコンテンツ識別情報とに対応する嗜好情報のうち少なくとも一方の嗜好状態のｓｔａｔｅが「１」、または、「２」であるという条件を満たす。
【０１１５】
この条件を満たす２ユーザの共通コンテンツは、前回の類似度算出以降に共通コンテンツとして追加されたものや、前回の類似度算出以降に共通コンテンツに対する２ユーザの嗜好情報のうち、少なくとも一方の利用頻度値が変化し、利用頻度値の積を更新する必要があるものである。この条件を用いるため、すでに内積算出補助情報格納部２２３に記憶されている内積算出補助情報の中で、内積算出補助値が変化するものと、新たに追加される内積算出補助情報においてのみ、内積算出補助値を算出する対象として絞り込むことができる。尚、ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｖａｌｕｅが存在する状態がｓｔａｔｅ「１」、または、ｓｔａｔｅ「２」の状態のどちらか一方であるため、ｎｅｗ＿ｖａｌｕｅの存在の有無で判定することができる。
【０１１６】
次に、内積算出補助値算出部２１５６が、ステップＳ１４０１にて取得したｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄの組合せのうち、例えば抽出した順に、１つ選択する（ステップＳ１４０２）。
次に、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅを確認し、その値により判定を行う。ｓｔａｔｅが「０」の場合は、ステップＳ１４０４へ進み、ｓｔａｔｅが「１」、または、「２」の場合は、ステップＳ１４０５へ進む（ステップＳ１４０３）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
【０１１７】
ステップＳ１４０４では、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｖａｌｕｅ１として取得し、ステップＳ１４０６へ進む。
ステップＳ１４０５では、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｖａｌｕｅ１として取得し、ステップＳ１４０６へ進む。
【０１１８】
次に、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿２とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報のｓｔａｔｅを確認し、その値により判定を行う。ｓｔａｔｅが「０」の場合は、ステップＳ１４０７へ進み、ｓｔａｔｅが「１」、または、「２」の場合は、ステップＳ１４０８へ進む（ステップＳ１４０６）。尚、ｓｔａｔｅを用いない場合は、ｖａｌｕｅが存在し、ｎｅｗ＿ｖａｌｕｅが存在しない状態がｓｔａｔｅ「０」の状態と等しいので、ｖａｌｕｅとｎｅｗ＿ｖａｌｕｅの有無で判定することができる。
【０１１９】
ステップＳ１４０７では、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿２とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｖａｌｕｅをｖａｌｕｅ２として取得し、ステップＳ１４０９へ進む。
ステップＳ１４０８では、内積算出補助値算出部２１５６が、嗜好情報格納部１８にて、ステップＳ１４０２にて取得したｕｓｅｒ＿ｉｄ＿２とｃｏｎｔｅｎｔ＿ｉｄとに対応する嗜好情報において、最新の利用頻度値であるｎｅｗ＿ｖａｌｕｅをｖａｌｕｅ２として取得し、ステップＳ１４０９へ進む。
【０１２０】
次に、内積算出補助値算出部２１５６が、内積算出補助値をｖａｌｕｅ１とｖａｌｕｅ２との積として算出する（ステップＳ１４０９）。
次に、内積算出補助値算出部２１５６が、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄの組合せに対応する内積算出補助値を算出したことがあるか否かを判定する。算出したことがある場合は、ステップＳ１４１２へ進み、算出したことがない場合は、ステップＳ１４１１へ進む（ステップＳ１４１０）。尚、内積算出補助値を算出したことがあるか否かを判定するには、内積算出補助情報格納部２２３に、ｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄの組合せに対応する内積算出補助情報が存在するかを調べればよい。存在する場合は、算出したことがあることを意味し、存在しない場合は、算出したことがないことを示す。
【０１２１】
ステップＳ１４１１では、内積算出補助値算出部２１５６が、内積算出補助情報格納部２２３に、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄと、ステップＳ１４０９にて算出した内積算出補助値をｎｅｗ＿ｐｒｏｄｕｃｔとして、さらに、ｐ＿ｓｔａｔｅを２とした内積算出補助情報を記憶し、ステップＳ１４１３へ進む。
ステップＳ１４１２では、内積算出補助値算出部２１５６が、内積算出補助情報格納部２２３に、ステップＳ１４０２にて選択したｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄとの組合せに対応する内積算出補助情報におけるｎｅｗ＿ｐｒｏｄｕｃｔにステップＳ１４０９にて算出した内積算出補助値を記憶し、ｐ＿ｓｔａｔｅを１とし、ステップＳ１４１３へ進む。
【０１２２】
次に、内積算出補助値算出部２１５６が、ステップＳ１４０２にて、全てのｕｓｅｒ＿ｉｄ＿１と、ｕｓｅｒ＿ｉｄ＿２と、ｃｏｎｔｅｎｔ＿ｉｄとの組合せを選択したか否かを判定する。全て選択した場合は、ステップＳ１４０１からステップＳ１４１３までの一連の処理を終了し、まだ未選択のものが残っている場合は、ステップＳ１４０２へ進む（ステップＳ１４１３）。
以上が、ステップＳ１３０１の内積算出補助値算出部２１５６による内積算出補助値算出処理の説明である。
【０１２３】
次に、ステップＳ１３０４の通常内積算出処理について、図２５を用いて説明する。
本実施形態におけるステップＳ１３０４の通常内積算出処理は、本発明の第１の実施形態におけるステップＳ３０４の通常内積算出処理のステップＳ４０３の処理がステップＳ１５０３の処理に置き換わり、ステップＳ４０５からステップＳ４１１までの処理が、ステップＳ１５０５からステップＳ１５０６までの処理に置き換わる。
ステップＳ１５０３では、通常内積算出部１５２が、内積算出補助情報格納部２２３より、ステップＳ３０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の組合せに対応する内積算出補助情報におけるｃｏｎｔｅｎｔ＿ｉｄを全て抽出する。次に、ステップＳ４０４へ進む。内積算出補助情報格納部２２３には、２ユーザ間の共通コンテンツが全て記憶されているので、本発明の第１の実施形態におけるステップＳ３０４の通常内積算出処理におけるステップＳ４０３の２ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。
【０１２４】
ステップＳ１５０５では、通常内積算出部１５２が、内積算出補助情報格納部２２３より、ステップＳ４０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２と、ステップＳ４０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する内積算出補助情報のｎｅｗ＿ｐｒｏｄｕｃｔをｐｒｏｄｕｃｔとして取得する。
次に、通常内積算出部１５２が、ｉ＿ｐｒｏｄｕｃｔに、ステップＳ１５０５にて取得したｐｒｏｄｕｃｔを加える（ステップＳ１５０６）。次に、ステップＳ４１２へ進む。
以上が、本実施形態におけるステップＳ１３０４の通常内積算出処理の説明である。
ステップＳ１３０５の補正内積算出処理について、図２６のフローチャートを用いて説明する。本実施形態のステップＳ１３０５の補正内積算出処理は、本発明の第１の実施形態におけるステップＳ３０５の補正内積算出処理のステップＳ５０４の追加内積補正値算出処理がステップＳ１６０４の追加内積補正値算出処理に置き換わり、ステップＳ５０７の更新内積補正値算出処理がステップＳ１６０７の更新内積補正値算出処理に置き換わる。
【０１２５】
まず、本実施形態におけるステップＳ１６０４の追加内積補正値算出処理について、図２７を用いて説明する。本実施形態のステップＳ１６０４の追加内積補正値算出処理は、本発明の第１の実施形態におけるステップＳ５０４の追加内積補正値算出処理のステップＳ６０３の処理が、ステップＳ１７０３の処理に置き換わり、ステップＳ６０５からステップＳ６１１までの処理がステップＳ１７０５からステップＳ１７０６までの処理に置き換わる。
【０１２６】
ステップＳ１７０３では、追加内積補正値算出部２１５４が、内積算出補助情報格納部２２３より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の組合せに対応する内積算出補助情報のうち、ｐ＿ｓｔａｔｅの値が「２」の内積算出補助情報におけるｃｏｎｔｅｎｔ＿ｉｄを抽出する。次に、ステップＳ５０４へ進む。この条件を満たす共通コンテンツは、前回の類似度算出以降に新たに追加されるため、その共通コンテンツに対応する両ユーザの最新の利用頻度値を用いて、類似度格納部１９のｉｎｎｅｒ＿ｐｒｏｄｕｃｔの変化量を算出する必要がある。また、この条件を満たさない２ユーザにおいては、後述するステップＳ１６０７の更新内積補正値算出処理において、類似度格納部１９のｉｎｎｅｒ＿ｐｒｏｄｕｃｔの変化量が算出されるか、または、前回の類似度算出時からｉｎｎｅｒ＿ｐｒｏｄｕｃｔに変化がないため、改めて類似度を算出する必要がない。また、予め内積算出補助情報が記憶されている内積算出補助情報格納部２２３より、２ユーザ間の共通コンテンツを探すため、本発明の第１の実施形態におけるステップＳ５０４の追加内積補正値算出処理におけるステップＳ６０３の２ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、ｐ＿ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｐｒｏｄｕｃｔが存在し、ｐｒｏｄｕｃｔが存在しない状態がｐ＿ｓｔａｔｅ「２」の状態を示すので、ｎｅｗ＿ｐｒｏｄｕｃｔとｐｒｏｄｕｃｔの存在の有無で判定することができる。
【０１２７】
ステップＳ１７０５では、追加内積補正値算出部２１５４が、内積算出補助情報格納部２２３より、ステップＳ６０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２と、ステップＳ６０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する内積算出補助情報のｎｅｗ＿ｐｒｏｄｕｃｔを取得する。
次に、追加内積補正値算出部２１５４が、Δｎ＿ｉ＿ｐに、ステップＳ１７０５にて取得したｎｅｗ＿ｐｒｏｄｕｃｔを加える（ステップＳ１７０６）。次に、ステップＳ６１２へ進む。
内積算出補助情報格納部２２３を利用することで、第１の実施形態におけるステップＳ５０４の追加内積補正値算出処理より、かなり少ない手順で追加内積補正値を算出することができる。
以上が、本実施形態におけるステップＳ１６０４の追加内積補正値算出処理の説明である。
【０１２８】
次に、本実施形態におけるステップＳ１６０７の更新内積補正値算出処理について、図２８を用いて説明する。本実施形態のステップＳ１６０７の更新内積補正値算出処理は、本発明の第１の実施形態におけるステップＳ５０７の更新内積補正値算出処理のステップＳ７０３の処理が、ステップＳ１８０３の処理に置き換わり、ステップＳ７０５からステップＳ７１１までの処理がステップＳ１８０５からステップＳ１８０６までの処理に置き換わる。
【０１２９】
ステップＳ１８０３では、更新内積補正値算出部２１５５が、内積算出補助情報格納部２２３より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２の組合せに対応する内積算出補助情報のうち、ｐ＿ｓｔａｔｅの値が「１」の内積算出補助情報におけるｃｏｎｔｅｎｔ＿ｉｄを抽出する。次に、ステップＳ７０４へ進む。この条件を満たす共通コンテンツは、前回の類似度算出時も共通であったが、利用頻度値が変化しているため、その共通コンテンツに対応する両ユーザの最新の利用頻度値と、前回の類似度算出時に用いた利用頻度値とを用いて、類似度格納部１９のｉｎｎｅｒ＿ｐｒｏｄｕｃｔの変化量を算出する必要がある。また、この条件を満たさない２ユーザにおいては、前述したステップＳ１６０４の追加内積補正値算出処理において、類似度格納部１９のｉｎｎｅｒ＿ｐｒｏｄｕｃｔの変化量が既に算出されているか、または、前回の類似度算出時からｉｎｎｅｒ＿ｐｒｏｄｕｃｔに変化がないため、改めて類似度を算出する必要がない。また、予め共通コンテンツが記憶されている内積算出補助情報格納部２２３より、２ユーザ間の共通コンテンツを探すため、本発明の第１の実施形態におけるステップＳ５０７の更新内積補正値算出処理におけるステップＳ７０３の２ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、ｐ＿ｓｔａｔｅを用いない場合は、ｎｅｗ＿ｐｒｏｄｕｃｔとｐｒｏｄｕｃｔが共に存在する状態がｐ＿ｓｔａｔｅ「１」の状態を示すので、ｎｅｗ＿ｐｒｏｄｕｃｔとｐｒｏｄｕｃｔの存在の有無で判定することができる。
【０１３０】
ステップＳ１８０５では、更新内積補正値算出部２１５５が、内積算出補助情報格納部２２３より、ステップＳ７０１にて取得したｕｓｅｒ＿ｉｄ＿１とｕｓｅｒ＿ｉｄ＿２と、ステップＳ７０４にて選択したｃｏｎｔｅｎｔ＿ｉｄとに対応する内積算出補助情報のｎｅｗ＿ｐｒｏｄｕｃｔとｐｒｏｄｕｃｔとを取得する。
次に、更新内積補正値算出部２１５５が、Δｕ＿ｉ＿ｐに、ステップＳ１８０５にて取得したｎｅｗ＿ｐｒｏｄｕｃｔから、ステップＳ１８０５にて取得したｐｒｏｄｕｃｔを引いた値を加える（ステップＳ１８０６）。次に、ステップＳ７１２へ進む。
内積算出補助情報格納部２２３を利用することで、第１の実施形態におけるステップＳ５０７の更新内積補正値算出処理より、かなり少ない手順で更新内積補正値を算出することができる。
【０１３１】
以上が、本実施形態におけるステップＳ１６０７の更新内積補正値算出処理の説明である。
第２の実施形態におけるサーバ装置１０は、第１の実施形態のサーバ装置１よりも、更に少ない計算量でユーザ間の類似度を計算することができる。
なお、本発明は上述実施形態に限定されることなく、適宜変形して実施することができる。例えば、上述においては、端末装置３から送信される利用情報をサーバ装置１に集めて処理を行うようにしているが、端末装置３において上述実施形態のサーバ装置１の処理についても行うようにし、サーバ装置１を省略することも可能である。具体的には、端末装置３同士で利用情報を交換できるようにし、端末装置３にサーバ装置１の各部を追加した上で、端末装置３にて、上述実施形態においてサーバ装置１の処理として説明した処理を行ってもよい。この場合更に、ある端末装置３ａにおいて、全てのユーザの組合せに対する類似度を計算するのではなく、端末装置３ａを利用するユーザと、他のユーザとの組合せに限定して、ユーザ間の類似度の計算を行うようにしてもよい。
【符号の説明】
【０１３２】
１，１０  サーバ装置（利用者情報処理装置）
１１  利用情報受信部
１２  取得要求受信部
１３  要求情報送信部
１４  利用頻度値算出部
１５，２１５  類似度算出部
１６  類似ユーザ情報選択部
１７  推薦コンテンツ選択部
１８  嗜好情報格納部
１９  類似度格納部
２０  ユーザ情報格納部
２１  コンテンツ情報格納部
２２  制御部
２  ネットワーク
３ａ，３ｂ，３ｎ  端末装置
３１  利用情報送信部
３２  取得要求送信部
３３  要求情報受信部
３４  入力部
３５  表示部
１５１，２１５１  内積類似度算出部
１５２  通常内積算出部
１５３  補正内積算出部
１５４，２１５４  追加内積補正値算出部
１５５，２１５５  更新内積補正値算出部
２２３  内積算出補助情報格納部
２１５６  内積算出補助値算出部
【図１】
0005447307.tif 000009
【図２】
0005447307.tif 000010
【図３】
0005447307.tif 000011
【図４】
0005447307.tif 000012
【図５】
0005447307.tif 000013
【図６】
0005447307.tif 000014
【図７】
0005447307.tif 000015
【図８】
0005447307.tif 000016
【図９】
0005447307.tif 000017
【図１０】
0005447307.tif 000018
【図１１】
0005447307.tif 000019
【図１２】
0005447307.tif 000020
【図１３】
0005447307.tif 000021
【図１４】
0005447307.tif 000022
【図１５】
0005447307.tif 000023
【図１６】
0005447307.tif 000024
【図１７】
0005447307.tif 000025
【図１８】
0005447307.tif 000026
【図１９】
0005447307.tif 000027
【図２０】
0005447307.tif 000028
【図２１】
0005447307.tif 000029
【図２２】
0005447307.tif 000030
【図２３】
0005447307.tif 000031
【図２４】
0005447307.tif 000032
【図２５】
0005447307.tif 000033
【図２６】
0005447307.tif 000034
【図２７】
0005447307.tif 000035
【図２８】
0005447307.tif 000036