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