JP5447307B2 - 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム - Google Patents

利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム Download PDF

Info

Publication number
JP5447307B2
JP5447307B2 JP2010199724A JP2010199724A JP5447307B2 JP 5447307 B2 JP5447307 B2 JP 5447307B2 JP 2010199724 A JP2010199724 A JP 2010199724A JP 2010199724 A JP2010199724 A JP 2010199724A JP 5447307 B2 JP5447307 B2 JP 5447307B2
Authority
JP
Japan
Prior art keywords
value
inner product
user
content
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010199724A
Other languages
English (en)
Other versions
JP2012058893A (ja
Inventor
幸之助 松下
一郎 宍戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JVCKenwood Corp
Original Assignee
JVCKenwood Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by JVCKenwood Corp filed Critical JVCKenwood Corp
Priority to JP2010199724A priority Critical patent/JP5447307B2/ja
Publication of JP2012058893A publication Critical patent/JP2012058893A/ja
Application granted granted Critical
Publication of JP5447307B2 publication Critical patent/JP5447307B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、コンテンツに対する利用者の利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラムに関する。
近年、デジタル技術やネットワーク技術の進展により、ネットワークを使って配信、提供される文書、音楽、画像、映像等のコンテンツが非常に増えている。これに伴い、ユーザの嗜好に合ったコンテンツを推薦するサービスのニーズが高まってきている。このようなニーズに対応する技術として、コンテンツに関するユーザの利用履歴や評価履歴などの行動履歴を用いて、ユーザの嗜好を推定し、ユーザの嗜好に合ったコンテンツを推薦する技術の開発が行われている。
例えば、ユーザの嗜好に合ったコンテンツを推薦する技術の一つに、協調フィルタリング方式の推薦技術が存在する。一般的な協調フィルタリング方式では、まず、多くのユーザ行動履歴を蓄積する。次に、その行動履歴を用いて、コンテンツを推薦するユーザと類似した嗜好をもつユーザを選定する。そして、選定した複数のユーザの行動履歴から推薦コンテンツを決定することで、ユーザの嗜好に合ったコンテンツの推薦を実現する。
また、コンテンツ推薦に必要な処理時間を短縮するための技術の開発も行われている。
例えば、コンテンツ推薦処理に使用する行動履歴データの量を制限することにより、処理時間を短縮する装置が、特許文献1に開示されている。この装置は、まず、指定された推薦対象のユーザ数と行動履歴データの数に基づいて、推薦処理に要する時間の推定値を算出する。そして、処理時間の推定値が目標時間内に収まるように推薦対象のユーザ数と行動履歴データの数を制限した後、協調フィルタリング方式の推薦処理を行っている。
特開2006−302097
協調フィルタリング方式の推薦処理では、大量の行動履歴データを対象に処理を行う場合、計算量が膨大になるという問題があった。このため、演算能力の高いシステムが必要になる場合や、実用的な時間で推薦処理を行うことが難しい場合があった。一方、特許文献1の装置では、行動履歴データ全体のなかから一部のデータを抽出し、一部のデータのみを用いてコンテンツ推薦処理を行っている。このため、計算量を減らして処理時間を短縮することはできるが、コンテンツ推薦処理において必要なユーザ間類似度が、必ずしも十分な精度では得られないという問題がある。この結果、コンテンツ推薦の精度も低下するという問題がある。
そこで、本発明は、少ない計算量で、かつ精度良くユーザ間の類似度を計算することを目的とする。
本発明は上述した従来の技術の課題を解決するため、コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置において、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を格納する利用頻度関連情報格納部(19)と、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部(153)と、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出部(15,215)とを備えることを特徴とする利用者情報処理装置を提供する
た、本発明は上述した従来の技術の課題を解決するため、 コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置で実行される利用者情報処理方法において、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納ステップと、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算ステップと、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出ステップとを有することを特徴とする利用者情報処理方法を提供する。
また、本発明は上述した従来の技術の課題を解決するため、コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置のコンピュータを、所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納手段、前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出手段、として機能させることを特徴とする利用者情報処理プログラムを提供する。
本発明では、ユーザ間の類似度を算出する際に、直近の類似度計算時に算出した類似度から値が変化しているユーザの組合せを正確に抽出し、再計算が必要なユーザに対してのみ再計算を行っている。さらに、再計算を行う場合にも、必要最低限のデータ、すなわち直近の類似度算出以降に蓄積された行動履歴データのみを用いることに加え、直近の類似度算出時の計算過程で算出されたデータを記憶し再利用している。このため、ユーザ間の類似度を非常に少ない計算量で計算することができる。また、行動履歴データの一部のみを抽出して使用し他のデータを無視するような処理とは異なり、計算量削減の代償として計算精度が低下することは生じない。このため、行動履歴データの量が多い場合であっても、実用的な時間で精度良くユーザ間の類似度を計算することができる。
本発明の第1の実施形態におけるシステム全体の構成図である。 本発明の第1の実施形態における嗜好情報格納部18での嗜好情報の格納状態を示す図である。 本発明の第1の実施形態におけるstateの値と嗜好情報の状態との対応を示す表である。 本発明の第1の実施形態における類似度格納部19の格納状態の一例を示す図である。 本発明の第1の実施形態におけるユーザ情報格納部20の格納状態の一例を示す図である。 本発明の第1の実施形態におけるコンテンツ情報格納部21の格納状態の一例を示す図である。 本発明の第1の実施形態における類似度算出部15の構成を示すブロック図である。 本発明の第1の実施形態における端末装置3より、利用情報を受信した際の、サーバ装置1による嗜好情報を記憶する処理フローを示すシーケンス図である。 本発明の第1の実施形態における類似度算出部15による類似度算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS201の内積算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS304の通常内積算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS305における補正内積算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS504の追加内積補正値算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS507の更新内積補正値算出処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるステップS202の類似度算出処理の動作を示すフローチャートである。 本発明の第1の実施形態における端末装置3より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置1による類似ユーザ情報提供処理フローを示すシーケンス図である。 本発明の第1の実施形態における推薦コンテンツの決定方法が異なる、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理の第1の方法を示すシーケンス図である。 本発明の第1の実施形態における推薦コンテンツの決定方法が異なる、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理の第2の方法を示すシーケンス図である。 本発明の第2の実施形態におけるサーバ装置10の構成を示すブロック図である。 本発明の第2の実施形態における内積算出補助情報格納部223での内積算出補助情報の格納形式を示す図である。 本発明の第2の実施形態における類似度算出部215の構成を示すブロック図である。 本発明の第2の実施形態における類似度算出部215による類似度算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1201の内積算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1301の内積算出補助値算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1304の通常内積算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1305の補正内積算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1604の追加内積補正値算出処理の動作を示すフローチャートである。 本発明の第2の実施形態におけるステップS1607の更新内積補正値算出処理の動作を示すフローチャートである。
以下、本発明の利用者情報処理装置(サーバ装置)、利用者情報処理方法、利用者情報処理プログラムについて、添付図面を参照して説明する。なお、各実施形態において、コンテンツとは、楽曲コンテンツ、映像コンテンツ、ソフトウェア、種々の商品等を意味するものとする。また、「コンテンツを利用する」とは、楽曲コンテンツや映像コンテンツを再生すること、楽曲コンテンツ、映像コンテンツ、ソフトウェア等をダウンロードすること、楽曲コンテンツ、映像コンテンツ、種々の商品等を購入すること、などを意味するものとする。また、各実施形態において、利用者情報処理装置をサーバ装置とした例について説明する。
<第1の実施形態>
以下に、本発明の実施形態について、図を用いて詳細に説明する。
図1は、本発明の第1の実施形態におけるシステム全体の構成図である。サーバ装置1、端末装置3、ネットワーク2により構成されている。
ネットワーク2は、外部の機器と接続するための手段であり、例えばインターネット等の外部ネットワークである。ネットワーク2は、サーバ装置1と端末装置3との間の情報のやり取りを仲介する。
サーバ装置1は、ネットワーク2を通じて、複数の端末装置3(3a〜3n)より受信したコンテンツの利用情報を用いて、ユーザごとに推薦コンテンツを決定し、端末装置3の取得要求に応じて、推薦コンテンツに関する情報を送信する装置である。尚、コンテンツの利用情報には、少なくとも端末装置3を利用中のユーザを識別するためのユーザ識別情報と、そのユーザが利用したコンテンツを識別するためのコンテンツ識別情報が含まれている。また、取得要求には、少なくとも端末装置3を利用中のユーザを識別するためのユーザ識別情報が含まれている。尚、本実施形態においては、ユーザを識別するユーザ識別情報を用いて処理を行う場合を説明するが、ユーザ識別情報の代わりに端末装置3を識別する端末識別情報を用いて処理を行なっても良い。
サーバ装置1は、利用情報受信部11、取得要求受信部12、要求情報送信部13、利用頻度値算出部14、類似度算出部15、類似ユーザ情報選択部16、推薦コンテンツ選択部17、嗜好情報格納部18、類似度格納部(利用頻度関連情報格納部)19、ユーザ情報格納部20、コンテンツ情報格納部21、制御部22から構成される。
サーバ装置1は、CPU、RAM、ROM、ハードディスクドライブ(HDD)、ネットワークインタフェース等を備えるコンピュータを用いて、ソフトウェア(プログラム)処理として実施することも可能である。
制御部22は、サーバ装置1を構成する各部に対して全体的な制御を行なう。
利用情報受信部11は、ネットワーク2を通じて、端末装置3より、ユーザ識別情報とコンテンツ識別情報を含む利用情報を受信する。そして、利用頻度算出部14に、受信した利用情報を送信する。以下では、ユーザ識別情報をuser_id、コンテンツ識別情報をcontent_idと表わす。
取得要求受信部12は、ネットワーク2を通じて、端末装置3より、ユーザ識別情報を含む取得要求を受信する。そして、受信した取得要求に応じて、類似ユーザ情報選択部16、または推薦コンテンツ選択部17に、受信したユーザ識別情報を含む取得要求を送信する。尚、取得要求は、類似ユーザの情報、または、推薦コンテンツの情報の取得を要求する情報である。
要求情報送信部13は、類似ユーザ情報選択部16、または、推薦コンテンツ選択部17より、ユーザ識別情報と要求情報を受信する。そして、ネットワーク2を通じて、受信したユーザ識別情報に対応する端末装置3に、受信した要求情報を送信する。尚、要求情報は、共に受信したユーザ識別情報に対応する類似ユーザの情報、または、ユーザの嗜好に応じた推薦コンテンツに関する情報である。
利用頻度値算出部14は、利用情報受信部15より、ユーザ識別情報とコンテンツ識別情報を含む利用情報を受信し、受信した利用情報を用いて利用頻度値を算出する。そして後述するようなデータ形式で、利用頻度値を嗜好情報格納部18に格納する。利用情報には、少なくともユーザ識別情報とコンテンツ識別情報が含まれているが、この他に、利用回数、利用日時、ユーザがコンテンツに対して行なった評価の情報(評価値)が含まれていても良い。
利用頻度値は、例えば、ユーザがコンテンツを1回以上利用した場合には「1」、1回も利用していない場合を「0」として算出すれば良い。
また、利用情報に、コンテンツが音楽なら再生回数、映画なら視聴回数といったような、コンテンツの利用回数が含まれる場合は、その利用回数を用いて利用頻度値を算出しても良い。例えば、利用回数そのものを利用頻度値としても良いし、利用回数が多くなるほど値が大きくなるような所定の計算式により利用頻度値を算出しても良い。例えば、利用回数の平方根、あるいは(利用回数+1)の対数値を利用頻度値としても良い。利用回数を用いて利用頻度値を算出する場合、嗜好情報格納部18に、受信したユーザ識別情報とコンテンツ識別情報とに対応する嗜好情報が存在する場合は、その嗜好情報の中の利用頻度値と利用回数を用いて利用頻度値を算出する。
さらに、利用情報に利用日時が含まれる場合は、同じ利用回数ならば利用日時が新しい場合ほど利用頻度値が大きくなるように算出しても良い。
また、利用情報に、ユーザのコンテンツに対する評価の情報が含まれている場合は、その評価情報を用いて利用頻度値を算出する。
嗜好情報格納部18は、HDDなどの記憶装置を用いて、嗜好情報を複数記憶する。嗜好情報格納部18における嗜好情報の格納形式として、図2(a)〜(c)に示すように、3種類の格納形式を用いることができる。
嗜好情報の第1の格納形式は、ユーザ識別情報であるuser_idと、コンテンツ識別情報であるcontent_idと、類似度算出部15において直近の類似度算出が行なわれた際に使われた利用頻度値であるvalueと、直近の類似度算出が行われたとき以降に利用頻度値算出部14によって算出された最新の利用頻度値であるnew_valueと、嗜好情報の状態を示すフラグであるstateとを関連付けたものであり、図2(a)に示すテーブル形式で格納されている。このテーブルにおいて、(user_id,content_id)の組合せはユニーク(一意)であり、この組合せを指定することにより、テーブルのデータが特定できる。
嗜好情報の第1の格納形式における、嗜好情報の状態を示すstateについて、図3の対応表を用いて説明する。図3に示すように、stateが「0」の場合は、valueにのみ値が記憶されている状態である。これは、直近の類似度算出が行われた際に、すでに嗜好情報格納部18に、嗜好情報が記憶されており、その後一度も利用頻度値の更新がないことを示している。stateが「1」の場合は、value、new_value共に値が記憶されている状態である。これは、直近の類似度算出が行われた際に、すでに嗜好情報格納部18に、嗜好情報が登録されており、かつ、その後に少なくとも1回は、利用頻度値算出部14によって、その嗜好情報に含まれるユーザ識別情報とコンテンツ識別情報に対して、利用頻度値が算出され、嗜好情報の利用頻度値が更新されたことを示す。stateが「2」の場合は、new_valueにのみ値が記憶されている状態である。これは、直近の類似度算出が行われたとき以降に、利用頻度値算出部14が、あるユーザ識別情報とコンテンツ識別情報に対して、利用頻度値を算出して嗜好情報として記憶する際に、嗜好情報格納部18に、そのユーザ識別情報とコンテンツ識別情報に対応する嗜好情報が存在しなかったことを示している。尚、利用頻度値を算出して嗜好情報として記憶する際に、そのユーザ識別情報とコンテンツ識別情報に対応する嗜好情報のstateが「2」である場合は、stateを「2」のままにして、new_valueを更新する。本実施形態ではこのようなstateを用いて処理を行なうが、stateを用いる代わりに、valueとnew_valueの有無を用いて、同様に嗜好情報の状態を判定することも可能である。
嗜好情報の第2の格納形式は、図2(b)に示すように、ユーザ識別情報であるuser_idと、コンテンツ識別情報であるcontent_idと、類似度算出部15において直近の類似度算出が行なわれた際に使われた利用頻度値であるvalueと、直近の類似度算出が行われた際に、すでに利用頻度値が計算されておりかつ、それ以降に利用頻度値算出部14によって再び算出された最新の利用頻度値であるnew_value_1と、直近の類似度算出が行われたとき以降に初めて算出された最新の利用頻度値であるnew_value_2とを関連付けたものである。このテーブルにおいて、(user_id,content_id)の組合せはユニーク(一意)であり、この組合せを指定することにより、テーブルのデータが特定できる。第2の格納形式においては、利用頻度値算出部14より、嗜好情報格納部18に、はじめて格納された場合は、利用頻度値がnew_value_2にのみ記録された状態となる。さらに、new_value_2にのみ利用頻度値が記憶されている状態で、再び、利用頻度値算出部14より、利用頻度値が算出された場合は、new_value_2の値を、再び算出された利用頻度値で置き換える。さらに、類似度算出が行われるまでこの状態を維持し、類似度算出直後に、類似度算出部15より、valueにnew_value_2の値が記録され、new_value_2の値が削除される。
また、valueにのみ利用頻度値が記憶されている状態で、利用頻度値算出部14より、新たに利用頻度値が算出された場合は、算出された利用頻度値をnew_value_1に記録する。さらに、valueに直近の類似度算出時に用いた利用頻度値が記憶され、new_value_1に最新の利用頻度値が記憶されている状態で、再び、利用頻度値算出部14より、利用頻度値が算出された場合は、new_value_1の値を、再び算出された利用頻度値で置き換える。さらに、類似度算出が行われるまでこの状態を維持し、類似度算出直後に、類似度算出部15より、valueの値がnew_value_1の値で置き換えられ、new_value_1の値が削除される。尚、第2の格納形式において、valueにのみ値が入っている状態は、第1の格納形式における、stateの値が「0」の状態と等しい。また、第2の格納形式において、valueとnew_value_1にのみ値が入っている状態は、第1の格納形式における、stateの値が「1」の状態と等しい。また、第2の格納形式において、new_value_2にのみ値が入っている状態は、第1の格納形式における、stateの値が「2」の状態と等しい。
嗜好情報の第3の格納形式は、図2(c)に示すように、ユーザ識別情報であるuser_idと、コンテンツ識別情報であるcontent_idと、利用頻度値であるvalueと、利用頻度値の種類を表すtypeとを関連付けたものである。このテーブルにおいて、(user_id,content_id,type)の組合せはユニーク(一意)であり、この組合せを指定することにより、テーブルのデータが特定できる。typeの値により、記録された利用頻度値の種類を判別できる。typeの値が「0」の場合は、valueに記憶された利用頻度値が、直近の類似度算出時に使用されたものであることを示す。また、typeの値が「1」の場合は、valueに記憶された利用頻度値が、直近の類似度算出以降に、再度算出されたものであることを示す。このとき、嗜好情報格納部18には、同じuser_idとcontent_idに対応するtypeの値が「0」であるデータも格納されている。また、typeの値が「2」の場合は、valueに記憶された利用頻度値が、直近の類似度算出以降に、はじめて算出された利用頻度値であることを示す。このとき、直近の類似度算出時に、同じuser_idとcontent_idに対応する利用頻度値は計算されていなかったため、typeの値が「0」であるデータは格納されていない。
また、嗜好情報格納部18に、あるuser_idとcontent_idに対応するデータのうち、typeの値が「0」であるデータのみが格納されている状態で、利用頻度値算出部14により、そのuser_idとcontent_idに対応する利用頻度値が算出された場合は、そのuser_idとcontent_idと持ち、valueの値が算出された利用頻度値であり、typeの値が「1」であるデータを、嗜好情報格納部18に新たに格納する。また、嗜好情報格納部18に、あるuser_idとcontent_idに対応するデータにおいて、typeの値が「1」、または、「2」であるデータが格納されている状態で、利用頻度値算出部14により、そのuser_idとcontent_idに対応する利用頻度値が算出された場合は、そのuser_idとcontent_idに対応するtypeの値が「1」、または、「2」であるデータのvalueの値を、算出された利用頻度値に置き換える。
また、類似度算出直後に、typeの値が「1」であるデータは、類似度算出部15より、同じuser_idとcontent_idとを有し、typeの値が「0」のデータが削除された後で、typeの値が「0」に置き換えられる。また、類似度算出直後に、typeの値が「2」であるデータは、類似度算出部15より、typeの値が「0」に置き換えられる。また、第3の格納形式において、嗜好情報格納部18に、typeの値が「0」であるデータのみ格納されている状態は、第1の格納形式における、stateの値が「0」の状態と等しい。また、第3の格納形式において、嗜好情報格納部18に、typeの値が「0」であるデータと、typeの値が「1」であるデータが共に格納されている状態は、第1の格納形式における、stateの値が「1」の状態と等しい。このとき、typeの値が「0」であるデータにおけるvalueが、第1の格納形式のvalueと等しく、typeの値が「1」であるデータのvalueが、第1の格納形式におけるnew_valueと等しい。また、第3の格納形式において、嗜好情報格納部18に、typeの値が「2」であるデータのみが格納されている状態は、第1の格納形式におけるstateの値が「2」の状態と等しい。
以下、本実施形態においては嗜好情報の第1の格納形式を用いるものとして説明を行う。
類似度格納部19は、HDDなどの記憶装置を用いて、2ユーザ分のユーザ識別情報と、そのユーザ識別情報に対応する2ユーザ間の内積と、その2ユーザ間の類似性を示す類似度を関連付けて複数記憶する。図4は、類似度格納部19の格納状態の一例を示す図である。図4に示すように、記憶している類似度に対応する2ユーザのうちの一方に対応するユーザ識別情報であるuser_id_1と、記憶している類似度に対応する2ユーザのうちの他方に対応するユーザ識別情報であるuser_id_2と、2ユーザ間の内積であるinner_productと、2ユーザ間の類似度であるsimilarityとを関連付けて、テーブル形式で記憶する。このテーブルにおいて、(user_id_1,user_id_2)の組合せはユニーク(一意)であり、この組合せを指定することにより、テーブルのデータが特定できる。
本実施形態における類似度の算出方法は、類似度算出対象の一方のユーザの利用頻度値をベクトル要素とする嗜好ベクトルと、類似度算出対象の他方のユーザの利用頻度値をベクトル要素とする嗜好ベクトルとの内積を用いるものとする。類似度が高ければ高いほど、2ユーザ間の類似性が高くなるという性質を持つ。また、user_id_1とuser_id_2を入れ替えて一致するものが重複して記憶されないように、ユーザ識別情報に大小関係を設け、常に、user_id_1<user_id_2が成り立つようにするか、または、常に、user_id_1>user_id_2が成り立つようにするとよい。
ユーザ情報格納部20は、HDDなどの記憶装置を用いて、ユーザ識別情報と、ユーザ属性情報(利用者属性情報)とを関連付けて記憶する。ユーザ属性情報とは、例えば、ユーザの氏名、年齢、性別、居住地域、趣味、電子メールあるいは電話番号などのコンタクト情報などである。また更に、ユーザが希望する「紹介相手の条件」を含んでいても良い。図5は、ユーザ情報格納部20の格納状態の一例を示す図である。図5に示すように、ユーザ識別情報であるuser_idと、ユーザ識別情報に対応するユーザの情報であるuser_infoとを関連付けて記憶する。
コンテンツ情報格納部21は、HDDなどの記憶装置を用いて、コンテンツ識別情報と、コンテンツ属性情報とを関連付けて記憶する。コンテンツ属性情報とは、例えば、コンテンツの名称、制作者、制作年、ジャンル、価格、コンテンツを利用するのに適したユーザの条件、などの情報である。図6は、コンテンツ情報格納部21の格納状態の一例を示す図である。図6に示すように、コンテンツ識別情報であるcontent_idと、コンテンツ識別情報に対応するコンテンツの情報であるcontent_infoとを関連付けて記憶する。
類似度算出部15は、同一コンテンツに対する嗜好情報を有する2ユーザ間の類似度を所定のタイミングで算出する。所定のタイミングとは例えば、利用情報を一定回数受信するごととしてもよいし、24時間ごとなど、一定の時間経過ごととしてもよい。また、月曜日〜金曜日までは3時間ごと、土曜日は6時間ごと、日曜日は12時間ごと、というように時間間隔が変動しても良い。また、夏は時間間隔を短くして、冬は時間間隔を長くするなど、季節に応じて時間間隔を変えても良い。また後述するように、端末装置3から、類似ユーザ情報の取得を要求する取得要求、または推薦コンテンツの取得を要求する取得要求を受信したタイミングでも良い。
ここで、類似度算出部15の構成を図7のブロック図を用いて説明する。図7に示すように、類似度算出部15は、内積類似度算出部151、通常内積算出部152、補正内積算出部153、追加内積補正値算出部154、更新内積補正値算出部155との構成である。なお、補正内積算出部153は、補正値計算部や統合補正値計算部としての機能を有する。
内積類似度算出部151は、通常内積算出部152、補正内積算出部153とデータのやり取りを行いながら、嗜好情報格納部18に記憶されている複数の嗜好情報や、類似度格納部19に記憶されている2ユーザ間の類似性を数値化した類似度等を用いて、内積を用いた類似度を算出する。そして、類似度格納部19に、類似度算出対象の2ユーザに対応する2つのユーザ識別情報と、算出した類似度とを関連付けて記憶する。そして、全類似度算出対象の2ユーザ間の類似度算出が終わると、嗜好情報格納部18において、stateが「1」、または、「2」の全ての嗜好情報に対して、valueの値をnew_valueの値に置き換え、new_valueの値を消去し、stateを「0」とする。また、stateを用いない場合は、new_valueを消去するだけでよい。
通常内積算出部152は、一度も内積を算出したことのない2ユーザ間の内積を算出するためのものである。
補正内積算出部153は、追加内積補正値算出部154、更新内積補正値算出部155とデータのやり取りを行いながら、以前内積を算出した2ユーザにおいて、以前算出した内積(利用者間内積値)との変化量を補正値(補正内積値)として算出し、以前算出した内積にその補正値を加えることで、新たな内積(新規内積値)を算出するものである。尚、補正値は、後述する追加内積補正値と更新内積補正値の和である。また、追加内積補正値は追加内積補正値算出部154にて算出される。また、更新内積補正値は更新内積補正値算出部155にて算出される。
追加内積補正値算出部154は、類似度算出対象の2ユーザにおいて、前回類似度を算出した際に、少なくとも一方が、嗜好情報を有していないコンテンツであり、新たに嗜好情報が追加されたことにより、両ユーザが共に嗜好情報を有することなったコンテンツにおける両ユーザの嗜好情報のみを用いて、追加内積補正値を算出するためのものである。
更新内積補正値算出部155は、類似度算出対象の2ユーザにおいて、前回類似度を算出した際に、両ユーザが共に嗜好情報を有する同一のコンテンツにおいて、その少なくとも一方の嗜好情報における利用頻度値に対して更新が行われた場合に、その同一コンテンツにおける両ユーザの嗜好情報のみを用いて、更新内積補正値を算出するためのものである。
以上が、類似度算出部15における構成の説明である。
類似ユーザ情報選択部16は、取得要求受信部12より、ユーザ識別情報を含む取得要求を受信した後、類似度格納部19に記憶されているデータを用いて、1つ以上の類似ユーザのユーザ識別情報を選択する。そして、ユーザ情報格納部20より、選択したユーザ識別情報に対応するユーザ属性情報を取得する。そして、要求情報送信部13に、取得した1つ以上のユーザ属性情報を要求情報として送信する。
推薦コンテンツ選択部17は、取得要求受信部12より、ユーザ識別情報を含む取得要求を受信した後、嗜好情報格納部18、類似度格納部19に記憶されているデータを用いて、1つ以上の推薦するコンテンツのコンテンツ識別情報を選択する。そして、コンテンツ情報格納部21より、選択したコンテンツ識別情報に対応するコンテンツ情報を取得する。そして、要求情報送信部13に、取得した1つ以上のコンテンツ情報を要求情報として送信する。
端末装置3は、ネットワーク2を通じて、サーバ装置1に、コンテンツの利用情報を送信したり、サーバ装置1より、要求情報を受信したりする装置である。
端末装置3は、利用情報送信部31、取得要求送信部32、要求情報受信部33、入力部34、表示部35から構成される。
端末装置3は、CPU、RAM、ROM、ハードディスクドライブ(HDD)、ネットワークインタフェース等を備えるパーソナルコンピュータ等を用いて、ソフトウェア(プログラム)処理として実施することも可能である。
利用情報送信部31は、入力部34より、コンテンツの利用履歴、例えば、コンテンツが音楽であれば、再生を行ったという履歴であり、コンテンツが映画であれば、視聴したという履歴を受信する。そして、受信した利用履歴と端末装置3を利用中のユーザを識別するためのユーザ識別情報と、利用されたコンテンツに対応するコンテンツ識別情報より、利用情報を作成する。そして、ネットワーク2を通じて、サーバ装置1に、作成した利用情報を送信する。
取得要求送信部32は、入力部34より、類似ユーザの情報を要求するような操作、例えば、表示部35に類似ユーザ情報取得ボタンを予め表示し、その類似ユーザ情報取得ボタンの選択を受信する。そして、サーバ装置1に、ユーザ識別情報と類似ユーザ情報の要求を含む取得要求を送信する。また、入力部34より、コンテンツの推薦を要求するような操作、例えば、表示部35に推薦コンテンツ取得ボタンを予め表示し、その推薦コンテンツ取得ボタンの選択を受信する。そして、サーバ装置1に、ユーザ識別情報と推薦コンテンツの要求を含む取得要求を送信する。尚、取得要求は、ユーザ識別情報と取得要求の種類を示す情報のみでもよいし、推薦数を制限する情報等を含ませても良い。推薦数を制限する情報等を含んだ場合は、サーバ装置1にてその制限情報が反映される。
要求情報受信部33は、サーバ装置1より、要求情報を受信する。そして、受信した要求情報を描画し、表示部35に表示する。
入力部34は、例えば、端末装置3がPC(Personal Computer)であれば、マウスやキーボード、携帯電話であれば、ボタンといったように、ユーザが端末装置3を操作するためのインタフェースである。入力部34は、利用情報送信部31に、コンテンツの操作履歴を送信する。また、取得要求送信部32に、類似ユーザ情報を要求するような操作や、コンテンツの推薦を要求するような操作を送信する。
表示部35は、例えば、ディスプレイといったように、様々な情報を表示し、ユーザに視覚的に示すためのインタフェースである。表示部35は、要求情報受信部33によって描画された要求情報を表示する。
次に、上記構成におけるサーバ装置1の動作を説明する。
第1の実施形態におけるサーバ装置1は、ネットワーク2を通じて、複数の端末装置3との情報のやり取りを行いながら、主に、嗜好情報の記憶、類似度の算出、類似ユーザ情報の提供、コンテンツの推薦を行う。
図8は、端末装置3から送信された嗜好情報をサーバ装置1が受信して記憶する処理フローを示すシーケンス図である。
まず、端末装置3の利用情報送信部31が、入力部34より、利用履歴を受信し(ステップS101)、ステップS101にて受信した利用履歴と、端末装置3を利用中のユーザを識別するユーザ識別情報と、利用したコンテンツに対応するコンテンツ識別情報とを用いて、利用情報を作成し(ステップS102)、ネットワーク2を通じて、サーバ装置1に、ステップS102にて作成した利用情報を送信する(ステップS103)。
次に、サーバ装置1の利用情報受信部11が、端末装置3から送信された利用情報を受信し(ステップS104)、利用頻度値算出部14に、ステップS104にて受信した利用情報を送信する(ステップS105)。
次に、利用頻度値算出部14が、利用情報受信部11より、利用情報を受信し(ステップS106)、ステップS106で受信した利用情報を用いて利用頻度値を算出する(ステップS107)。
次に、利用頻度値算出部14が、嗜好情報格納部18に、ステップS106にて受信した利用情報に含まれるユーザ識別情報とコンテンツ識別情報に対応する嗜好情報が存在するか否かを確認する。嗜好情報が存在する場合は、嗜好情報格納部18において、その嗜好情報のnew_valueを、ステップS107で算出した利用頻度値と置き換え、その嗜好情報のstateの値が「0」のときのみ「1」に置き換える。また、嗜好情報が存在しない場合は、嗜好情報格納部18に、ステップS106にて受信した利用情報含まれるユーザ識別情報をuser_idとし、コンテンツ識別情報をcontent_idとし、ステップS107にて算出した利用頻度値をnew_valueとし、stateを「2」とした嗜好情報を記憶し(ステップS108)、ステップS101からステップS108までの一連の処理を終了する。
尚、嗜好情報格納部18に記憶する嗜好情報を所定の条件を満たすコンテンツに対応する嗜好情報のみに制限することもできる。例えば、嗜好情報を記憶するの制限の基準をコンテンツ識別情報で判定することができる。このとき、予め図示しないコンテンツ識別情報のリストをサーバ装置1側に記憶し、そのコンテンツ識別情報のリストに、嗜好情報におけるコンテンツ識別情報が含まれているか否かを判定し、リストに含まれたコンテンツ識別情報に対応する嗜好情報のみを記憶することができる。また、図示しないコンテンツ識別情報のリストを端末装置3に記憶し、利用情報としてサーバ装置1に送信するか否かを判定し、リストに含まれたコンテンツ識別情報に対応する利用情報のみを送信することでも同様に制限することができる。
また、サーバ装置1や、端末装置3に、コンテンツ識別情報のリストを記憶する代わりに、コンテンツ属性情報のリストを記憶し、リストに含まれたコンテンツ属性情報を有するコンテンツに対応する嗜好情報のみを記憶することで、嗜好情報格納部18に記憶する嗜好情報を制限することもできる。例えば、特定の制作者と特定のジャンルとをコンテンツ属性情報のリストに登録し、特定の制作者と特定のジャンルを共に満たすコンテンツに対応する嗜好情報のみ記憶してもよいし、特定の制作者と特定のジャンルの何れかを満たすコンテンツに対応する嗜好情報のみ記憶してもよい。以上のように、所定の条件を満たすコンテンツに対応する嗜好情報のみを嗜好情報格納部18に記憶することで、より高精度に類似ユーザを選出することができる。例えば、サッカーの世界的な大会の開催中に、にわかファンが増えることが予測される際に、リストにサッカーに関するコンテンツ以外のコンテンツのコンテンツ識別情報やコンテンツ属性情報を登録することで、サッカーに関するコンテンツの影響を排除し、より高精度に類似ユーザを選出することができる。また、類似度算出処理に用いる嗜好情報が減るため、処理時間も短くなる。
また、端末装置3に、図示しないコンテンツの利用回数を記憶する格納部を用意し、一定回数以上の利用があったコンテンツのみをサーバ装置1に送信することで、嗜好情報格納部18に記憶する嗜好情報を制限することもできる。一定回数以上の利用があったコンテンツに対応する嗜好情報のみを嗜好情報格納部18に記憶することで、ユーザの嗜好が高いコンテンツに対応する嗜好情報のみを類似度算出に用いることができるので、より高精度に類似ユーザを選出することができる。また、類似度算出処理に用いる嗜好情報が減るため、処理時間も短くなる。
また、ユーザごとに、嗜好情報格納部18に記憶する嗜好情報の数を設定し、記憶できる数の上限に到達した後はそれ以上記憶しないようにすることもできる。
以上が、端末装置3より、利用情報を受信した際の、サーバ装置1による嗜好情報を記憶する処理フローの説明である。
図9は、上述した所定のタイミングごとに行われる、類似度算出部15による類似度算出処理の動作を示すフローチャートである。
まず、内積類似度算出部151が、通常内積算出部152、補正内積算出部153とデータのやり取りを行いながら、内積算出処理を行い(ステップS201)、類似度算出処理を行う(ステップS202)。
次に、内積類似度算出部151が、嗜好情報格納部18に記憶されている嗜好情報の中で、stateが「1」、または、「2」の嗜好情報において、valueの値を、new_valueの値で置き換え(ステップS203)、new_valueを全て消去し(ステップS204)、全てのstateを「0」とし(ステップS205)、ステップS201からステップS205までの一連の処理を終了する。
次に、ステップS201の内積算出処理について、図10のフローチャートを用いて説明する。
まず、内積類似度算出部151が、内積を算出する2ユーザに対するユーザ識別情報の組合せを、user_id_1とuser_id_2との組合せとして抽出する(ステップS301)。ここでは、嗜好情報格納部18を参照しながら、2ユーザ間で同一のコンテンツに対応する嗜好情報が存在しており、かつ、少なくとも一方のユーザの嗜好情報における、stateが「1」または「2」であるという条件を満たす、2ユーザの組合せを抽出する。この条件を満たす2ユーザは、前回の類似度算出時には共通でなかったコンテンツが新たに共通コンテンツとして追加されたり、前回の類似度算出時に共通であっても、そのコンテンツに対する嗜好情報における利用頻度値に変化が起きたりするため、内積が変化する。また、この条件を満たさない2ユーザ間の内積は、前回の類似度算出時の内積から変化がないため、改めて内積を算出する必要がない。尚、stateを用いない場合は、new_valueが存在する状態がstate「1」、または、state「2」の状態のどちらか一方であるため、new_valueの存在の有無で判定することができる。
次に、内積類似度算出部151が、ステップS301で取得したuser_id_1とuser_id_2との組合せのうちから1つの組合せを選択する。例えば、抽出した順に、1つ選択すればよい(ステップS302)。
次に、内積類似度算出部151が、ステップS302で選択したuser_id_1とuser_id_2との組合せにおいて、以前内積を算出したか否かを判定する。以前内積を算出したことがある場合は、ステップS305へ進み、以前内積を算出したことがない場合は、ステップS304へ進む(ステップS303)。ここで、以前内積を算出したか否かを判定するには、類似度格納部19に、ステップS302で選択したuser_id_1とuser_id_2との組合せに対応した内積(inner_product)が記憶されているか否かで容易に判定することができる。記憶されている場合は、以前内積を算出したことになる。記憶されていない場合は、以前内積を算出していないことになる。サーバ装置1の初期状態では、類似度格納部19に何も格納されていないため、user_id_1とuser_id_2の全ての組合せにおいて、必ず最初の1回は、ステップS304に進むことになる。
ステップS304では、内積類似度算出部151が、通常内積算出部152に、ステップS302で選択したuser_id_1とuser_id_2との組合せを送ることで、通常内積算出部152が、通常内積算出処理を行い、ステップS306へ進む。
ステップS305では、内積類似度算出部151が、補正内積算出部153に、ステップS302で選択したuser_id_1とuser_id_2との組合せを送ることで、補正内積算出部153が、補正内積算出処理を行い、ステップS306へ進む。
次に、内積類似度算出部151が、ステップS302にて、全てのuser_id_1とuser_id_2との組合せを選択したか否かを判定する。全て選択した場合は、ステップS301からステップS306までの一連の処理を終了し、まだ未選択のものが残っている場合は、ステップS302へ進む(ステップS306)。
以上が、ステップS201の内積算出処理の説明である。
次に、ステップS304の通常内積算出処理について、図11を用いて説明する。
まず、通常内積算出部152が、内積類似度算出部151より、user_id_1とuser_id_2との組合せを取得し(ステップS401)、内積を算出するための変数i_product=0とする(ステップS402)。
次に、通常内積算出部152が、嗜好情報格納部18より、ステップS401にて取得したuser_id_1に対応する全ての嗜好情報のcontent_idの集合と、user_id_2に対応する全ての嗜好情報のcontent_idとの集合において、その両方の集合に存在するcontent_idを全て取得する(ステップS403)。これにより、2ユーザ間の共通コンテンツのcontent_idを全て取得することができる。
次に、通常内積算出部152が、ステップS403にて取得したcontent_idのうち、例えば、取得した順番に、content_idを選択する(ステップS404)。
次に、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_1とステップS404にて選択したcontent_idとに対応する嗜好情報のstateを確認し、その値により判定を行う。stateが「0」の場合は、ステップS406へ進み、stateが「1」、または、「2」の場合は、ステップS407へ進む(ステップS405)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS406では、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_1とステップS404にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値が記憶されているvalueをvalue1として取得し、ステップS408へ進む。
ステップS407では、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_1とステップS404にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値が記憶されているnew_valueをvalue1として取得し、ステップS408へ進む。
次に、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_2とステップS404にて選択したcontent_idとに対応する嗜好情報のstateを確認し、その値により判定を行う。stateが「0」の場合は、ステップS409へ進み、stateが「1」、または、「2」の場合は、ステップS410へ進む(ステップS408)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS409では、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_2とステップS404にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値が記憶されているvalueをvalue2として取得し、ステップS411へ進む。
ステップS410では、通常内積算出部152が、嗜好情報格納部18にて、ステップS401にて取得したuser_id_2とステップS404にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値が記憶されているnew_valueをvalue2として取得し、ステップS411へ進む。
次に、通常内積算出部152が、i_productにvalue1とvalue2との積を加える(ステップS411)。
次に、通常内積算出部152が、ステップS404にて、全てのcontent_idを選択したか否かを判定する。全て選択した場合は、ステップS413へ進み、まだ未選択のものが残っている場合は、ステップS404へ進む(ステップS412)。
ステップS413では、通常内積算出部152が、類似度格納部19に、ステップS401にて取得したuser_id_1とuser_id_2と、ステップS402からステップS412までの処理にて算出したi_productをinner_productとして関連付けたものを記憶し、ステップS401からステップS413までの一連の処理を終了する。
尚、通常内積算出処理による内積算出式は、内積算出対象の2ユーザをx,yとし、ユーザxとユーザyの全共通コンテンツをIc、ユーザxのコンテンツi(∈Ic)における利用頻度値をv(x,i)、ユーザyのコンテンツiにおける利用頻度値をv(y,i)としたとき、ユーザxとユーザyの内積ipは、式(1)で表わされる。
以上が、ステップS304の通常内積算出処理の説明である。
Figure 0005447307
次に、ステップS305における補正内積算出処理について、図12を用いて説明する。
まず、補正内積算出部153が、内積類似度算出部151より、user_id_1とuser_id_2との組合せを取得し(ステップS501)、類似度格納部19より、ステップS501にて取得したuser_id_1とuser_id_2との組合せに対応するinner_productを取得し(ステップS502)、内積を算出するための変数new_ipの初期値をinner_productとする(ステップS503)。
次に、補正内積算出部153が、追加内積補正値算出部154に、ステップS501にて取得したuser_id_1とuser_id_2との組合せを送ることで、追加内積補正値算出部154が、追加内積補正値算出処理を行う(ステップS504)。
次に、補正内積算出部153が、追加内積補正値算出部154より、追加内積補正値Δn_i_pを取得する(ステップS505)。
次に、補正内積算出部153が、ステップS505にて取得したΔn_i_pをnew_ipに加算する(ステップS506)。
次に、補正内積算出部153が、更新内積補正値算出部155に、ステップS501にて取得したuser_id_1とuser_id_2との組合せを送ることで、更新内積補正値算出部155が、更新内積補正値算出処理を行う(ステップS507)。
次に、補正内積算出部153が、更新内積補正値算出部155より、更新内積補正値Δu_i_pを取得する(ステップS508)。
次に、補正内積算出部153が、ステップS508にて取得したΔu_i_pをnew_ipに加算する(ステップS509)。
次に、補正内積算出部153が、類似度格納部19において、ステップS501にて取得したuser_id_1とuser_id_2に対応するinner_productを、new_ipで置き換え(ステップS510)、ステップS501からステップS510までの一連の処理を終了する。
以上が、ステップS305の補正内積算出処理の説明である。
次に、ステップS504の追加内積補正値算出処理について、図13を用いて説明する。
まず、追加内積補正値算出部154が、補正内積算出部153より、user_id_1とuser_id_2との組合せを取得する(ステップS601)。
次に、追加内積補正値算出部154が、追加内積補正値を算出するための変数をΔn_i_p=0とする(ステップS602)。
次に、追加内積補正値算出部154が、嗜好情報格納部18より、ステップS601にて取得したuser_id_1に対応するユーザとuser_id_2に対応するユーザの共通コンテンツにおいて、少なくとも一方の共通コンテンツに対応する嗜好情報のstateの値が「2」のcontent_idを全て取得する(ステップS603)。この条件を満たすcontent_idは、前回類似度算出以降に、そのcontent_idに対応するコンテンツが共通コンテンツとなったため、前回類似度算出時に、対応する嗜好情報の利用頻度値を、内積を算出する際に用いていない。このため、対応する嗜好情報の利用頻度値を用いて、内積の変化量を追加内積補正値として算出する必要がある。
次に、追加内積補正値算出部154が、ステップS603にて取得したcontent_idを、例えば、取得した順に一つ選択する(ステップS604)。
次に、追加内積補正値算出部154が、ステップS601にて取得したuser_id_1と、ステップS604にて選択したcontent_idとに対応する嗜好情報のstateの値を判定する。stateの値が「0」の場合は、ステップS606へ進み、stateの値が「1」、または、「2」の場合は、ステップS607へ進む(ステップS605)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS606では、追加内積補正値算出部154が、嗜好情報格納部18より、ステップS601にて取得したuser_id_1と、ステップS604にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをnv1として取得し、ステップS608へ進む。
ステップS607では、追加内積補正値算出部154が、嗜好情報格納部18より、ステップS601にて取得したuser_id_1と、ステップS604にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるnew_valueをnv1として取得し、ステップS608へ進む。
次に、追加内積補正値算出部154が、ステップS601にて取得したuser_id_2と、ステップS604にて選択したcontent_idとに対応する嗜好情報のstateの値を判定する。stateの値が「0」の場合は、ステップS609へ進み、stateの値が「1」、または、「2」の場合は、ステップS610へ進む(ステップS608)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS609では、追加内積補正値算出部154が、嗜好情報格納部18より、ステップS601にて取得したuser_id_2と、ステップS604にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをnv2として取得し、ステップS611へ進む。
ステップS610では、追加内積補正値算出部154が、嗜好情報格納部18より、ステップS601にて取得したuser_id_2と、ステップS604にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるnew_valueをnv2として取得し、ステップS611へ進む。
次に、追加内積補正値算出部154が、Δn_i_pにnv1×nv2を加算する(ステップS611)。
次に、追加内積補正値算出部154が、ステップS604にて、全てのcontent_idを選択したか否かを判定する。全て選択した場合は、ステップS613へ進み、まだ未選択のものが残っている場合は、ステップS604へ進む(ステップS612)。
次に、追加内積補正値算出部154が、補正内積算出部153に、Δn_i_pを送り(ステップS613)、ステップS601からステップS613までの一連の処理を終了する。
以上が、ステップS504の追加内積補正値算出処理の説明である。
次に、ステップS507の更新内積補正値算出処理について、図14を用いて説明する。
まず、更新内積補正値算出部155が、補正内積算出部153より、user_id_1とuser_id_2との組合せを取得する(ステップS701)。
次に、更新内積補正値算出部155が、更新内積補正値を算出するための変数をΔu_i_p=0とする(ステップS702)。
次に、更新内積補正値算出部155が、嗜好情報格納部18より、ステップS701にて取得したuser_id_1に対応するユーザとuser_id_2に対応するユーザの共通コンテンツにおいて、一方のユーザの共通コンテンツに対応する嗜好情報のstateの値が「1」で、他方のユーザの共通コンテンツに対応するstateの値が「1」か「0」のcontent_idを全て取得する(ステップS703)。この条件を満たすcontent_idは、前回の類似度算出時に、すでに共通コンテンツであったため、前回類似度算出時に、対応する嗜好情報の利用頻度値を用いて、内積を算出している。このため、対応する嗜好情報の最新の利用頻度値と、以前類似度を算出した際の利用頻度値を用いて、内積の変化量を更新内積補正値として算出する必要がある。尚、stateを用いない場合は、valueとnew_valueが共に存在する状態がstate「1」の状態と等しいので、valueとnew_valueの有無で判定することができる。
次に、更新内積補正値算出部155が、ステップS703にて取得したcontent_idを、例えば、取得した順に一つ選択する(ステップS704)。
次に、更新内積補正値算出部155が、ステップS701にて取得したuser_id_1と、ステップS704にて選択したcontent_idとに対応する嗜好情報のstateの値を判定する。stateの値が「0」の場合は、ステップS706へ進み、stateの値が「1」の場合は、ステップS707へ進む(ステップS705)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しく、valueとnew_valueが共に存在する状態がstate「1」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS706では、更新内積補正値算出部155が、嗜好情報格納部18より、ステップS701にて取得したuser_id_1と、ステップS704にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをnv1として取得し、以前類似度を算出した際の利用頻度値でもあるvalueをv1として取得する。次に、ステップS708へ進む。
ステップS707では、更新内積補正値算出部155が、嗜好情報格納部18より、ステップS701にて取得したuser_id_1と、ステップS704にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるnew_valueをnv1として取得し、以前類似度を算出した際の利用頻度値であるvalueをv1として取得する。
次に、更新内積補正値算出部155が、ステップS701にて取得したuser_id_2と、ステップS704にて選択したcontent_idとに対応する嗜好情報のstateの値を判定する。stateの値が「0」の場合は、ステップS709へ進み、stateの値が「1」の場合は、ステップS710へ進む(ステップS708)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しく、valueとnew_valueが共に存在する状態がstate「1」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS709では、更新内積補正値算出部155が、嗜好情報格納部18より、ステップS701にて取得したuser_id_2と、ステップS704にて選択したcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをnv2として取得し、以前類似度を算出した際の利用頻度値でもあるvalueをv2として取得し、ステップS711へ進む。
ステップS710では、更新内積補正値算出部155が、嗜好情報格納部18より、ステップS701にて取得したuser_id_2と、ステップS704にて選択したcontent_idとに対応する嗜好情報の最新の利用頻度値であるnew_valueをnv2として取得し、以前類似度を算出した際の利用頻度値であるvalueをv2として取得する。
次に、更新内積補正値算出部155が、Δu_i_pにnv1×nv2−v1×v2を加算する(ステップS711)。
次に、更新内積補正値算出部155が、ステップS704にて、全てのcontent_idを選択したか否かを判定する。全て選択した場合は、ステップS713へ進み、まだ未選択のものが残っている場合は、ステップS704へ進む(ステップS712)。
次に、更新内積補正値算出部155が、補正内積算出部153に、Δu_i_pを送り(ステップS713)、ステップS701からステップS713までの一連の処理を終了する。
以上が、ステップS507の更新内積補正値算出処理の説明である。
尚、ユーザxとユーザyにおける以前算出した内積をip、内積の変化量をΔip、追加内積補正値をΔnip、更新内積補正値をΔuipとしたとき、補正内積算出処理による内積ip’は、式(2)で表わされる。
Figure 0005447307
さらに、ユーザxとユーザyの共通コンテンツのうち、追加内積補正値算出処理の対象となった全てのコンテンツをJcとし、ユーザxにおけるコンテンツj(∈Jc)の最新の利用頻度値(追加内積補正値算出処理におけるnv1)をv'(x,j)とし、ユーザyにおけるコンテンツjの最新の利用頻度値(追加内積補正値算出処理におけるnv2)をv'(y,j)とすると、Δnipは式(3)で表わされる。
Figure 0005447307
また、ユーザxとユーザyの共通コンテンツのうち、更新内積補正値算出処理の対象となった全てのコンテンツをKcとし、ユーザxにおけるコンテンツk(∈Kc)の最新の利用頻度値(更新内積補正値算出処理におけるnv1)をv'(x,k)とし、以前類似度を算出した際の利用頻度値(更新内積補正値算出処理におけるv1)をv(x,k)とし、ユーザyにおけるコンテンツkの最新の利用頻度値(更新内積補正値算出処理におけるnv2)をv'(y,k)とし、以前類似度を算出した際の利用頻度値(更新内積補正値算出処理におけるv2)をv(y,k)とすると、Δuipは式(4)で表わされる。
Figure 0005447307
次に、ステップS202の類似度算出処理について、図15を用いて説明する。
まず、内積類似度算出部151が、類似度を算出する2ユーザに対するユーザ識別情報の組合せを、user_id_1とuser_id_2との組合せとして取得する(ステップS801)。尚、類似度を算出する2ユーザは、嗜好情報格納部18に、少なくとも1つの同一コンテンツに対応する嗜好情報を記憶している、かつ、少なくとも1つの同一コンテンツにおいて、少なくとも一方の嗜好情報における、stateが「1」、または、「2」であるという条件を満たす。この条件を満たす2ユーザは、ステップS201の内積算出処理により、内積の値が変化しているため、類似度を改めて算出する必要がある。また、この条件を満たさない2ユーザは、前回の類似度算出時の内積から変化していないので、改めて類似度を算出する必要がない。
次に、内積類似度算出部151が、ステップS801にて取得したuser_id_1とuser_id_2との組合せの中から、例えば、取得した順に、user_id_1とuser_id_2との組合せを一つ選択する(ステップS802)。
次に、内積類似度算出部151が、類似度格納部19より、ステップS802にて選択したuser_id_1とuser_id_2との組合せに対応するinner_productを取得する(ステップS803)。
次に、内積類似度算出部151が、ステップS803にて取得したinner_productを用いて類似度を算出する(ステップS804)。尚、inner_productを用いて類似度を算出する方法は、例えば、inner_productをそのまま類似度としてもよい。このとき、ユーザxとユーザyの内積をipとすると、ユーザxとユーザyとの間の類似度sim(x,y)は、式(5)で表わされる。
Figure 0005447307
また、inner_productに、2ユーザ間の共通コンテンツ数を用いて算出した値を重みとして掛け合わせた値を類似度としてもよい。このとき、ユーザxとユーザyの内積をipとし、2ユーザ間の共通コンテンツ数を用いた重みをwcとすると、ユーザxとユーザyとの間の類似度sim(x,y)は、式(6)で表わされる。
Figure 0005447307
重みwcは、ユーザxとユーザyの共通コンテンツ数を用いて算出する。例えば、共通コンテンツ数が多ければ多いほど類似度が高くしたい場合は、wcとして、共通コンテンツ数や、共通コンテンツ数の平方根や、共通コンテンツ数の対数などを用いれば良い。また逆に、共通コンテンツ数の影響を小さくしたい場合は、wcとして、共通コンテンツ数の逆数や、共通コンテンツ数の平方根の逆数や、共通コンテンツ数の対数の逆数などを用いれば良い。コンテンツの性質や、利用頻度値の算出方法に応じて、共通コンテンツ数の影響を大きくするか小さくするかを決めれば良い。
次に、内積類似度算出部151が、類似度格納部19における、ステップS802にて選択したuser_id_1とuser_id_2との組合せに対応するsimilarityに、ステップ804にて算出した類似度を記憶する(ステップS805)。
次に、内積類似度算出部151が、ステップS802にて全てのuser_id_1とuser_id_2との組合せを選択したか否かを判定する。全ての組合せを選択した場合は、ステップS801からステップS806までの一連の処理を終了し、未選択の組合せが残っている場合は、ステップS802へ進む(ステップS806)。
以上が、ステップS202の類似度算出処理の説明である。
類似度算出部15による類似度算出処理の説明は以上であるが、ここで本発明のサーバ装置によってユーザ間類似度の計算量が削減できる理由を説明する。
協調フィルタリング方式のコンテンツ推薦において、時間の経過と共に、ユーザ間の類似度計算を繰り返し行うことが一般的である。本実施形態においても、上述した所定のタイミングごとに、繰り返しユーザ間の類似度計算を行っている。
しかしながら、従来の協調フィルタリングにおけるユーザ間の類似度計算においては、本実施形態の通常内積算出部152に相当する処理を行っており、繰り返し計算において、過去の計算結果を利用した計算量の削減は行われていなかった。
ここで、利用頻度値データ(利用情報)の性質を考えると、類似度計算を行う所定のタイミングの間隔が限られているため、前回類似度を計算した時点から、新たに類似度計算を行う時点までの間で、利用頻度値が変化するユーザは極一部であり、ユーザ全体に対して非常に少ない割合である場合が多い。本発明においては、このような利用頻度値データの性質を利用して、ユーザ間の類似度の計算量を削減をしている。
具体的には、嗜好情報格納部18に、直近の類似度算出時の用いた利用頻度値であるvalueと、直近の類似度算出以降に追加または変更された利用頻度値であるnew_valueと、嗜好情報の状態を示すフラグのstateを格納しているので、stateの値、またはvalueの値の有無とnew_valueの値の有無の組合せを用いることにより、ステップS301において、内積の再計算が必要な2ユーザの組合せを的確に抽出できる。上述した利用頻度値データの性質により、ほとんどのユーザの利用頻度値は、変更も追加もされないため、内積の再計算も必要ない。従って、ステップS301以降の処理で対象となるユーザの組合せは、全てのユーザの組合せの内の極一部であり、大半のユーザの組合せに関しては再計算処理を行う必要がないので、計算量を大幅に削減することができる。
また、類似度格納部19に直近に計算された内積であるinner_productを格納しているため、ステップS303の処理において、過去に内積を計算しているユーザの組合せか否かを容易に判定することができ、過去に内積を計算している場合は、ステップS305に進んで、過去の内積計算の結果を有効に再利用している。
また、ステップS506において、嗜好情報格納部18のstateの値、またはvalueの値の有無とnew_valueの値の有無の組合せを用いて、どのユーザのどのコンテンツに対する利用頻度値が追加されたか、及びどのユーザのどのコンテンツに対する利用頻度値が更新されたかについて、その2つの場合に限定して適切に抽出している。そして、追加時(ステップS507)と更新時(ステップS508)の場合のみ処理を行っているため、内積の値に影響を与える必要最低限のデータのみを使って効率よく内積を計算ができる。
このように本発明では、ユーザ間類似度の算出に必要な内積計算を効率よく行うことができる。また、内積計算において行動履歴データの一部のみを用いているわけではなく、全ての行動履歴データを用いているので、計算量削減を行わない場合(全てのデータに対して通常内積算出部152に相当する処理を行う場合)と比べて、内積の計算精度が低下することがない。従って本発明により、ユーザ間の類似度を少ない計算量で、かつ精度良く計算することができる。
図16は、端末装置3より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置1による類似ユーザ情報提供処理フローを示すシーケンス図である。
まず、取得要求送信部32が、入力部34より、類似ユーザ情報の取得を要求する操作を受信し(ステップS901)、端末装置3を利用中のユーザを識別するユーザ識別情報を用いて、類似ユーザ情報の取得を要求する取得要求を作成し(ステップS902)、ネットワーク2を通じて、取得要求受信部12に、ステップS902にて作成した取得要求を送信する(ステップS903)。
次に、取得要求受信部12が、ネットワーク2を通じて、取得要求送信部32より、取得要求を受信し(ステップS904)、類似ユーザ情報選択部16に、ステップS904にて受信した取得要求を送信する(ステップS905)。
次に、類似ユーザ情報選択部16が、取得要求受信部12より、取得要求を受信する(ステップS906)。
次に、類似ユーザ情報選択部16が、類似度格納部19より、ステップS906にて受信した取得要求のユーザ識別情報に対応するユーザ(一のユーザ)における類似ユーザのユーザ識別情報を取得する(ステップS907)。類似ユーザのユーザ識別情報取得には、user_id_1とuser_id_2のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、similarityが所定値以上のuser_id_1とuser_id_2を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、user_id_1とuser_id_2のどちらか一方に、一のユーザのユーザ識別情報を含むものの中から、similarityの高い順に所定数のuser_id_1とuser_id_2の組合せを選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。さらに、ユーザ情報格納部20において、ユーザ属性情報の中に、ユーザが希望する「紹介相手の条件」が含まれている場合には、これを用いて、類似ユーザを選択しても良い。すなわち、一のユーザの「紹介相手の希望条件」に合致する属性情報(年齢、性別など)を持つ他のユーザを対象にして、similarityが所定値以上のユーザ、またはsimilarityの高い順に所定数のユーザを抽出して、一のユーザに対する類似ユーザとしても良い。
次に、類似ユーザ情報選択部16が、ユーザ情報格納部20より、ステップS907にて取得した全てのユーザ識別情報に対応するユーザ属性情報を取得する(ステップS908)。
次に、類似ユーザ情報選択部16が、要求情報送信部13に、ステップS906で取得した取得要求のユーザ識別情報とともに、ステップS908で取得した全てのユーザ情報を要求情報として送信する(ステップS909)。
次に、要求情報送信部13が、類似ユーザ情報選択部16より、ユーザ識別情報と要求情報とを受信し(ステップS910)、ネットワーク2を通じて、ステップS910にて取得したユーザ識別情報に対応する端末装置3の要求情報受信部33に、ステップS910にて取得した要求情報を送信する(ステップS911)。
次に、要求情報受信部33が、ネットワーク2を通じて、要求情報送信部13より、要求情報を取得し(ステップS912)、ステップS912にて取得した要求情報を描画し、表示装置25に表示し(ステップS913)、ステップS901からステップS913までの一連の処理を終了する。
以上が、端末装置3より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置1による類似ユーザ情報提供処理の説明である。
図17は、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理の第1の方法を説明するためのシーケンス図である。
まず、取得要求送信部32が、入力部34より、コンテンツの推薦を要求する操作を受信し(ステップS1001)、端末装置3を利用中のユーザを識別するユーザ識別情報を用いて、推薦コンテンツの取得を要求する取得要求を作成し(ステップS1002)、ネットワーク2を通じて、取得要求受信部12に、ステップS1002にて作成した取得要求を送信する(ステップS1003)。
次に、取得要求受信部12が、ネットワーク2を通じて、取得要求送信部32より、取得要求を受信し(ステップS1004)、推薦コンテンツ選択部17に、ステップS1004にて受信した取得要求を送信する(ステップS1005)。
次に、推薦コンテンツ選択部17が、取得要求受信部12より、取得要求を受信する(ステップS1006)。
次に、推薦コンテンツ選択部17が、類似度格納部19より、ステップS1006にて受信した取得要求のユーザ識別情報に対応するユーザ(一のユーザ)における類似ユーザのユーザ識別情報を取得する(ステップS1007)。類似ユーザのユーザ識別情報取得には、user_id_1とuser_id_2のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、similarityが所定値以上のuser_id_1とuser_id_2を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、user_id_1とuser_id_2のどちらか一方に、一のユーザのユーザ識別情報を含むものの中から、similarityの高い順に所定数のuser_id_1とuser_id_2を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。
次に、推薦コンテンツ選択部17が、嗜好情報格納部18より、ステップS1007にて取得した類似ユーザのユーザ識別情報に対応するcontent_idを所定数取得する(ステップS1008)。ここで、嗜好情報格納部18を参照しながら、類似ユーザのstateが「0」の場合はvalue、stateが「1」または「2」の場合はnew_valueの値をコンテンツ毎に加算し、その加算値の大きな順に所定数のコンテンツのcontent_idを取得しても良い。
次に、推薦コンテンツ選択部17が、コンテンツ情報格納部21より、ステップS1008にて取得した全てのcontent_idに対応するcontent_infoを取得する(ステップS1009)。
次に、推薦コンテンツ選択部17が、要求情報送信部13に、ステップS1006で取得した取得要求のユーザ識別情報とともに、ステップS1009で取得した全てのコンテンツ情報を要求情報として送信する(ステップS1010)。
次に、要求情報送信部13が、推薦コンテンツ選択部17より、ユーザ識別情報と要求情報とを受信し(ステップS1011)、ネットワーク2を通じて、ステップS1011にて取得したユーザ識別情報に対応する端末装置3の要求情報受信部33に、ステップS1011にて取得した要求情報を送信する(ステップS1012)。
次に、要求情報受信部33が、ネットワーク2を通じて、要求情報送信部13より、要求情報を取得し(ステップS1013)、ステップS1013にて取得した要求情報を描画し、表示装置25に表示し(ステップS1014)、ステップS1001からステップS1014の一連の処理を終了する。
以上が、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理の説明である。
図18は、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理の第2の方法を説明するためのシーケンス図である。
ステップS1001からステップS1006まで、及び、ステップS1009からステップS1014までの処理は図17の端末装置3より取得要求を受信した際の、サーバ装置1によるコンテンツ推薦処理フローと同様である。
ステップS1006の処理の後に、ステップS1107へ進む。
次に、推薦コンテンツ選択部17が、類似度格納部19より、ステップS1006にて受信した取得要求のユーザ識別情報に対応するユーザ(一のユーザ)における類似ユーザのユーザ識別情報とsimilarityとを取得する(ステップS1107)。類似ユーザのユーザ識別情報取得には、user_id_1とuser_id_2のどちらか一方に、一のユーザのユーザ識別情報を含む組合せの中から、similarityが所定値以上のuser_id_1とuser_id_2を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。若しくは、user_id_1とuser_id_2のどちらか一方に、ステップS1006にて受信した取得要求のユーザ識別情報を含むものの中から、similarityの高い順に所定数のuser_id_1とuser_id_2を選択し、一のユーザ以外のユーザ識別情報を、類似ユーザのユーザ識別情報として取得する。
次に、推薦コンテンツ選択部17が、嗜好情報格納部18より、ステップS1107にて取得した類似ユーザのユーザ識別情報に対応するcontent_idと、valueとを取得し、content_idごとに推薦度を算出する。さらに算出した推薦度を基に推薦コンテンツ用のcontent_idを選択する(ステップS1108)。次に、ステップS1009へ進む。推薦度は、ステップS1107にて取得したsimilarityと、ステップS1108にて取得したvalueの積とする。このとき、推薦されるユーザxとユーザxの類似ユーザyとのsimilarityをsim(x,y)、ユーザyのコンテンツiに対するvalueをv(y,i)としたとき、ユーザxに対する類似ユーザyにおけるコンテンツiの推薦値recom(適合度)は、式(7)で表わされる。
Figure 0005447307
また、推薦コンテンツに対応するcontent_idは、推薦値の高い順に所定数選択するか、または、所定値以上の推薦値をもつものを選択する。なお、推薦値(適合度)は、式(7)で表される推薦値recomに限定されず、一の利用者との他の利用者との類似度が大きいほど、かつその他の利用者の利用頻度値が大きいほど大きな値となるような値であればよい。
以上が、サーバ装置1によるコンテンツ推薦処理の第2の方法の説明である。
<第2の実施形態>
以下に、本発明の実施形態について、図を用いて詳細に説明する。
図19は、本発明の第2の実施形態におけるサーバ装置10の構成図である。本発明のシステム全体の構成は、図1の本発明の第1の実施形態におけるシステム全体の構成図において、サーバ装置1を、図19のサーバ装置10で置き換えたものである。
サーバ装置10は、本発明の第1の実施形態のサーバ装置1と、構成が変わっているものの、同様の機能を有する。
サーバ装置10は、利用情報受信部11、取得要求受信部12、要求情報送信部13、利用頻度値算出部14、類似度算出部215、類似ユーザ情報選択部16、推薦コンテンツ選択部17、嗜好情報格納部18、類似度格納部19、ユーザ情報格納部20、コンテンツ情報格納部21、制御部22、内積算出補助情報格納部223から構成される。
利用情報受信部11、取得要求受信部12、要求情報送信部13、利用頻度値算出部14、類似ユーザ情報選択部16、推薦コンテンツ選択部17、嗜好情報格納部18、類似度格納部19、ユーザ情報格納部20、コンテンツ情報格納部21に関しては、第1の実施形態と同様である。
内積算出補助情報格納部223は、HDDなどの記憶装置を用いて、内積算出補助情報を複数格納する。内積算出補助情報格納部223における内積算出補助情報の格納形式を図20に示す。内積算出補助情報とは、2ユーザ分のユーザ識別情報であるuser_id_1とuser_id_2、及び、その2ユーザの共通コンテンツに対するコンテンツ識別情報であるcontent_idと、類似度算出部215において直近の類似度算出が行われた際に使われた、一方のユーザ識別情報とコンテンツ識別情報に対応する利用頻度値と、もう一方のユーザ識別情報とコンテンツ識別情報に対応する利用頻度値との積(内積算出補助値)であるproductと、類似度算出部215において類似度算出をする際に、新たに2ユーザ間に共通コンテンツが追加された場合と、以前算出した内積算出補助値に変化があった場合にのみ算出される内積算出補助値であるnew_productと、内積算出補助情報の状態を示すフラグであるp_stateとを関連付けたものであり、図20のようなテーブル形式で格納されている。このテーブルにおいて、(user_id_1,user_id_2,content_id)の組合せはユニーク(一意)であり、この組合せを指定することのより、テーブルのデータが特定できる。
本実施形態における内積算出補助情報の状態を示すフラグであるp_stateは、嗜好情報格納部18のvalueとnew_valueの有無により値が変化するstateと同様に、productとnew_productの有無により値が変化する。ただし、p_stateの値が変化をするタイミングは、類似度算出部215にて、類似度算出を行うときのみである。p_stateが「0」の場合は、productにのみ値が記憶されている状態である。これは、前回の類似度算出以降に、嗜好情報格納部18において、内積算出補助情報のuser_id_1とcontent_idに対応する嗜好情報も、user_id_2とcontent_idに対応する嗜好情報も変化せず、内積算出補助値が変化しなかったことを示す。p_stateが「1」の場合は、productとnew_productの両方に値が記憶されている状態である。
これは、前回の類似度算出時に、嗜好情報格納部18において、内積算出補助情報のuser_id_1とcontent_idに対応する嗜好情報も、user_id_2とcontent_idに対応する嗜好情報も記憶されており、かつ、前回の類似度算出以降に、2つの嗜好情報のうちの少なくとも一方が変化し、内積算出補助値が変化したことを示す。p_stateが「2」の場合は、new_productにのみ値が記憶されている状態である。これは、類似度算出時に、はじめてこの内積算出補助情報が登録されたことを示す。user_id_1とuser_id_2は、類似度格納部19と同様に、user_id_1とuser_id_2を入れ替えて一致するものが重複して記憶されないようにするとよい。本実施形態ではこのようなp_stateを用いて処理を行うが、p_stateを用いる代わりにproductとnew_productの有無を用いて、同様に内積算出補助情報の状態を判定することも可能である。
類似度算出部215は、構成は異なるが、本発明の第1の実施形態における類似度算出部15と同様の機能を有する。
ここで、類似度算出部215の構成を図21のブロック図を用いて説明する。図21に示すように、類似度算出部215は、内積類似度算出部2151、内積算出補助値算出部2156、通常内積算出部152、補正内積算出部153、追加内積補正値算出部2154、更新内積補正値算出部2155との構成である。
通常内積算出部152と、補正内積算出部153は、本発明の第1の実施形態と同様である。
内積類似度算出部2151は、内積算出補助値算出部2156、通常内積算出部2152、補正内積算出部2153とデータのやり取りを行いながら、嗜好情報格納部18に記憶されている複数の嗜好情報や、類似度格納部19に記憶されている2ユーザ間の類似性を数値化した類似度や、内積算出補助情報格納部223に記憶されている内積算出補助値等を用いて、内積を用いた類似度を算出する。そして、類似度格納部19に、類似度算出対象の2ユーザに対応する2つのユーザ識別情報と、算出した類似度とを関連付けて記憶する。そして、全類似度算出対象の2ユーザ間の類似度算出が終わると、嗜好情報格納部18において、stateが「1」、または、「2」の全ての嗜好情報に対して、valueの値をnew_valueの値に置き換え、new_valueの値を消去し、stateを「0」とする。そして、内積算出補助情報格納部223において、p_stateが「1」、または、「2」の全ての内積算出補助情報に対して、productの値をnew#productの値に置き換え、new_productの値を消去し、p_stateを「0」にする。また、stateを用いない場合は、new_valueを消去するだけでよい。また、p_stateを用いない場合は、new_productを消去するだけでよい。
内積算出補助値算出部2156は、共通コンテンツを有する2ユーザにおいて、その共通コンテンツに対する内積算出補助値を算出し、内積算出補助情報格納部223に記憶するためのものである。内積算出補助値を算出する対象は、共通コンテンツを有する2ユーザにおいて、嗜好情報格納部18に記憶されている嗜好情報のうち、少なくとも一方の嗜好状態のstateが「1」か「2」である必要がある。これにより、内積算出補助値の算出対象を、内積算出補助値が変化する内積算出補助情報や、新たに追加される内積算出補助情報のみに絞ることができる。このとき、内積算出補助情報格納部223に、その2ユーザのユーザ識別情報と、共通コンテンツに対応するコンテンツ識別情報に対応する内積算出補助情報が既に記憶されている場合は、新たに算出した内積算出補助値をnew_productに記憶し、p_stateを「1」と置き換える。また、内積算出補助情報格納部223に、その2ユーザのユーザ識別情報と、共通コンテンツに対応するコンテンツ識別情報に対応する内積算出補助情報が記憶されていない場合は、2ユーザのユーザ識別情報をuser_id_1とuser_id_2に、共通コンテンツのコンテンツ識別情報をcontent_idに、内積算出補助値をnew_productに割り当て、p_stateを「2」として新たに記憶する。
追加内積補正値算出部2154は、類似度算出対象の2ユーザにおいて、内積算出補助情報格納部223にて、p_stateが「2」のみの内積算出補助情報を用いて、追加内積補正値を算出するためのものである。
更新内積補正値算出部2155は、類似度算出対象の2ユーザにおいて、内積算出補助情報格納部223にて、p_stateが「1」のみの内積算出補助情報を用いて、更新内積補正値を算出するためのものである。
以上が、類似度算出部215における構成の説明である。なお、ネットワーク2と端末装置3の構成については、第1の実施形態と同様である。
次に、上記構成におけるサーバ装置10の動作を説明する。
第2の実施形態におけるサーバ装置10は、ネットワーク2を通じて、複数の端末装置3との情報のやり取りを行いながら、主に、嗜好情報の記憶、類似度の算出、類似ユーザ情報の提供、コンテンツの推薦を行う。
端末装置3より、利用情報を受信した際の、サーバ装置10による嗜好情報を記憶する処理、端末装置3より類似ユーザ情報の取得を要求する取得要求を受信した際の、サーバ装置10による類似ユーザ情報提供処理、端末装置3より推薦コンテンツの取得を要求する取得要求を受信した際の、サーバ装置10によるコンテンツ推薦処理については、第1の実施形態と同様である。
図22は、所定のタイミングごとに行われる、類似度算出部215による類似度算出処理の動作を示すフローチャートである。
まず、内積類似度算出部2151が、内積算出補助値算出部2156と、通常内積算出部2152と、補正内積算出部2153とデータのやり取りを行いながら、内積算出処理を行う(ステップS1201)。次に、ステップS202へ進む。
ステップS202からステップS205までの手順は、本発明の第1の実施形態における所定のタイミングごとに行われる、類似度算出部15による類似度算出処理のステップS202からステップS205までの処理と同様である。ステップS202からステップS205までの処理を終えると、ステップS1206へ進む。
次に、内積類似度算出部2151が、内積算出補助情報格納部223に記憶されている内積算出補助情報の中で、p_stateが「1」、または、「2」の内積算出補助情報において、productの値を、new_productの値で置き換え(ステップS1206)、new_productを全て消去し(ステップS1207)、全てのp_stateを「0」とし(ステップS1208)、ステップS1201からステップS1208までの一連の処理を終了する。
以上が、所定のタイミングごとに行われる、類似度算出部215による類似度算出処理の説明である。
次に、ステップS1201の内積算出処理について、図23のフローチャートを用いて説明する。
まず、内積類似度算出部2151が、内積算出補助値算出部2156にて、内積算出補助値算出処理を行わせる(ステップ1301)。
次にステップS1302において、内積類似度算出部2151が、嗜好情報格納部18の代わりに、内積算出補助情報格納部223において、p_stateが「1」、または、「2」の条件を満たす内積算出補助情報におけるuser_id_1とuser_id_2の組合せを抽出する。この条件を満たす2ユーザは、前回の類似度算出以降に、共通コンテンツが新たに追加されたり、共通コンテンツの利用頻度値の積が変化しているため、内積が変化する。また、この条件を満たさない2ユーザ間の内積は、前回の類似度算出時の内積から変化がないため、改めて内積を算出する必要がない。また、予め共通コンテンツが記憶されている内積算出補助情報格納部223より、2ユーザ間の共通コンテンツを探すため、本発明の第1の実施形態におけるステップS201の内積算出処理におけるステップS301の内積算出対象の2ユーザの組合せを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、p_stateを用いない場合は、new_productが存在する状態がp_state「1」、または、p_state「2」の状態を示すので、new_productの存在の有無で判定することができる。
ステップS302からステップS303までの処理とステップS306の処理は、本発明の第1の実施形態におけるステップS201の内積算出処理のステップS302からステップS303までの処理とステップS306の処理と同様である。
ステップS1304の通常内積算出処理と、ステップS1305の補正内積算出処理は後ほど詳しく説明する。
以上が、ステップS1201の内積算出処理の説明である。
次に、ステップS1301の内積算出補助値算出部2156による内積算出補助値算出処理について、図24を用いて説明する。
まず、内積算出補助値算出部2156が、内積算出補助値を算出する2ユーザのユーザ識別情報であるuser_id_1とuser_id_2と、その2ユーザの共通コンテンツのコンテンツ識別情報であるcontent_idとの組合せを全て抽出する(ステップS1401)。内積算出補助値を算出するuser_id_1と、user_id_2と、content_idの組合せは、共通のコンテンツを有する2ユーザにおいて、嗜好情報格納部18において、その2ユーザの内の一方のユーザ識別情報と、共通コンテンツのコンテンツ識別情報とに対応する嗜好情報と、その2ユーザの内の他方のユーザ識別情報と、共通コンテンツのコンテンツ識別情報とに対応する嗜好情報のうち少なくとも一方の嗜好状態のstateが「1」、または、「2」であるという条件を満たす。
この条件を満たす2ユーザの共通コンテンツは、前回の類似度算出以降に共通コンテンツとして追加されたものや、前回の類似度算出以降に共通コンテンツに対する2ユーザの嗜好情報のうち、少なくとも一方の利用頻度値が変化し、利用頻度値の積を更新する必要があるものである。この条件を用いるため、すでに内積算出補助情報格納部223に記憶されている内積算出補助情報の中で、内積算出補助値が変化するものと、新たに追加される内積算出補助情報においてのみ、内積算出補助値を算出する対象として絞り込むことができる。尚、stateを用いない場合は、new_valueが存在する状態がstate「1」、または、state「2」の状態のどちらか一方であるため、new_valueの存在の有無で判定することができる。
次に、内積算出補助値算出部2156が、ステップS1401にて取得したuser_id_1と、user_id_2と、content_idの組合せのうち、例えば抽出した順に、1つ選択する(ステップS1402)。
次に、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて選択したuser_id_1とcontent_idとに対応する嗜好情報のstateを確認し、その値により判定を行う。stateが「0」の場合は、ステップS1404へ進み、stateが「1」、または、「2」の場合は、ステップS1405へ進む(ステップS1403)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS1404では、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて選択したuser_id_1とcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをvalue1として取得し、ステップS1406へ進む。
ステップS1405では、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて選択したuser_id_1とcontent_idとに対応する嗜好情報において、最新の利用頻度値であるnew_valueをvalue1として取得し、ステップS1406へ進む。
次に、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて選択したuser_id_2とcontent_idとに対応する嗜好情報のstateを確認し、その値により判定を行う。stateが「0」の場合は、ステップS1407へ進み、stateが「1」、または、「2」の場合は、ステップS1408へ進む(ステップS1406)。尚、stateを用いない場合は、valueが存在し、new_valueが存在しない状態がstate「0」の状態と等しいので、valueとnew_valueの有無で判定することができる。
ステップS1407では、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて選択したuser_id_2とcontent_idとに対応する嗜好情報において、最新の利用頻度値であるvalueをvalue2として取得し、ステップS1409へ進む。
ステップS1408では、内積算出補助値算出部2156が、嗜好情報格納部18にて、ステップS1402にて取得したuser_id_2とcontent_idとに対応する嗜好情報において、最新の利用頻度値であるnew_valueをvalue2として取得し、ステップS1409へ進む。
次に、内積算出補助値算出部2156が、内積算出補助値をvalue1とvalue2との積として算出する(ステップS1409)。
次に、内積算出補助値算出部2156が、ステップS1402にて選択したuser_id_1と、user_id_2と、content_idの組合せに対応する内積算出補助値を算出したことがあるか否かを判定する。算出したことがある場合は、ステップS1412へ進み、算出したことがない場合は、ステップS1411へ進む(ステップS1410)。尚、内積算出補助値を算出したことがあるか否かを判定するには、内積算出補助情報格納部223に、user_id_1と、user_id_2と、content_idの組合せに対応する内積算出補助情報が存在するかを調べればよい。存在する場合は、算出したことがあることを意味し、存在しない場合は、算出したことがないことを示す。
ステップS1411では、内積算出補助値算出部2156が、内積算出補助情報格納部223に、ステップS1402にて選択したuser_id_1と、user_id_2と、content_idと、ステップS1409にて算出した内積算出補助値をnew_productとして、さらに、p_stateを2とした内積算出補助情報を記憶し、ステップS1413へ進む。
ステップS1412では、内積算出補助値算出部2156が、内積算出補助情報格納部223に、ステップS1402にて選択したuser_id_1と、user_id_2と、content_idとの組合せに対応する内積算出補助情報におけるnew_productにステップS1409にて算出した内積算出補助値を記憶し、p_stateを1とし、ステップS1413へ進む。
次に、内積算出補助値算出部2156が、ステップS1402にて、全てのuser_id_1と、user_id_2と、content_idとの組合せを選択したか否かを判定する。全て選択した場合は、ステップS1401からステップS1413までの一連の処理を終了し、まだ未選択のものが残っている場合は、ステップS1402へ進む(ステップS1413)。
以上が、ステップS1301の内積算出補助値算出部2156による内積算出補助値算出処理の説明である。
次に、ステップS1304の通常内積算出処理について、図25を用いて説明する。
本実施形態におけるステップS1304の通常内積算出処理は、本発明の第1の実施形態におけるステップS304の通常内積算出処理のステップS403の処理がステップS1503の処理に置き換わり、ステップS405からステップS411までの処理が、ステップS1505からステップS1506までの処理に置き換わる。
ステップS1503では、通常内積算出部152が、内積算出補助情報格納部223より、ステップS301にて取得したuser_id_1とuser_id_2の組合せに対応する内積算出補助情報におけるcontent_idを全て抽出する。次に、ステップS404へ進む。内積算出補助情報格納部223には、2ユーザ間の共通コンテンツが全て記憶されているので、本発明の第1の実施形態におけるステップS304の通常内積算出処理におけるステップS403の2ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。
ステップS1505では、通常内積算出部152が、内積算出補助情報格納部223より、ステップS401にて取得したuser_id_1とuser_id_2と、ステップS404にて選択したcontent_idとに対応する内積算出補助情報のnew_productをproductとして取得する。
次に、通常内積算出部152が、i_productに、ステップS1505にて取得したproductを加える(ステップS1506)。次に、ステップS412へ進む。
以上が、本実施形態におけるステップS1304の通常内積算出処理の説明である。
ステップS1305の補正内積算出処理について、図26のフローチャートを用いて説明する。本実施形態のステップS1305の補正内積算出処理は、本発明の第1の実施形態におけるステップS305の補正内積算出処理のステップS504の追加内積補正値算出処理がステップS1604の追加内積補正値算出処理に置き換わり、ステップS507の更新内積補正値算出処理がステップS1607の更新内積補正値算出処理に置き換わる。
まず、本実施形態におけるステップS1604の追加内積補正値算出処理について、図27を用いて説明する。本実施形態のステップS1604の追加内積補正値算出処理は、本発明の第1の実施形態におけるステップS504の追加内積補正値算出処理のステップS603の処理が、ステップS1703の処理に置き換わり、ステップS605からステップS611までの処理がステップS1705からステップS1706までの処理に置き換わる。
ステップS1703では、追加内積補正値算出部2154が、内積算出補助情報格納部223より、ステップS601にて取得したuser_id_1とuser_id_2の組合せに対応する内積算出補助情報のうち、p_stateの値が「2」の内積算出補助情報におけるcontent_idを抽出する。次に、ステップS504へ進む。この条件を満たす共通コンテンツは、前回の類似度算出以降に新たに追加されるため、その共通コンテンツに対応する両ユーザの最新の利用頻度値を用いて、類似度格納部19のinner_productの変化量を算出する必要がある。また、この条件を満たさない2ユーザにおいては、後述するステップS1607の更新内積補正値算出処理において、類似度格納部19のinner_productの変化量が算出されるか、または、前回の類似度算出時からinner_productに変化がないため、改めて類似度を算出する必要がない。また、予め内積算出補助情報が記憶されている内積算出補助情報格納部223より、2ユーザ間の共通コンテンツを探すため、本発明の第1の実施形態におけるステップS504の追加内積補正値算出処理におけるステップS603の2ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、p_stateを用いない場合は、new_productが存在し、productが存在しない状態がp_state「2」の状態を示すので、new_productとproductの存在の有無で判定することができる。
ステップS1705では、追加内積補正値算出部2154が、内積算出補助情報格納部223より、ステップS601にて取得したuser_id_1とuser_id_2と、ステップS604にて選択したcontent_idとに対応する内積算出補助情報のnew_productを取得する。
次に、追加内積補正値算出部2154が、Δn_i_pに、ステップS1705にて取得したnew_productを加える(ステップS1706)。次に、ステップS612へ進む。
内積算出補助情報格納部223を利用することで、第1の実施形態におけるステップS504の追加内積補正値算出処理より、かなり少ない手順で追加内積補正値を算出することができる。
以上が、本実施形態におけるステップS1604の追加内積補正値算出処理の説明である。
次に、本実施形態におけるステップS1607の更新内積補正値算出処理について、図28を用いて説明する。本実施形態のステップS1607の更新内積補正値算出処理は、本発明の第1の実施形態におけるステップS507の更新内積補正値算出処理のステップS703の処理が、ステップS1803の処理に置き換わり、ステップS705からステップS711までの処理がステップS1805からステップS1806までの処理に置き換わる。
ステップS1803では、更新内積補正値算出部2155が、内積算出補助情報格納部223より、ステップS701にて取得したuser_id_1とuser_id_2の組合せに対応する内積算出補助情報のうち、p_stateの値が「1」の内積算出補助情報におけるcontent_idを抽出する。次に、ステップS704へ進む。この条件を満たす共通コンテンツは、前回の類似度算出時も共通であったが、利用頻度値が変化しているため、その共通コンテンツに対応する両ユーザの最新の利用頻度値と、前回の類似度算出時に用いた利用頻度値とを用いて、類似度格納部19のinner_productの変化量を算出する必要がある。また、この条件を満たさない2ユーザにおいては、前述したステップS1604の追加内積補正値算出処理において、類似度格納部19のinner_productの変化量が既に算出されているか、または、前回の類似度算出時からinner_productに変化がないため、改めて類似度を算出する必要がない。また、予め共通コンテンツが記憶されている内積算出補助情報格納部223より、2ユーザ間の共通コンテンツを探すため、本発明の第1の実施形態におけるステップS507の更新内積補正値算出処理におけるステップS703の2ユーザ間の共通コンテンツを抽出する処理に比べ、容易に共通コンテンツを抽出することができる。尚、p_stateを用いない場合は、new_productとproductが共に存在する状態がp_state「1」の状態を示すので、new_productとproductの存在の有無で判定することができる。
ステップS1805では、更新内積補正値算出部2155が、内積算出補助情報格納部223より、ステップS701にて取得したuser_id_1とuser_id_2と、ステップS704にて選択したcontent_idとに対応する内積算出補助情報のnew_productとproductとを取得する。
次に、更新内積補正値算出部2155が、Δu_i_pに、ステップS1805にて取得したnew_productから、ステップS1805にて取得したproductを引いた値を加える(ステップS1806)。次に、ステップS712へ進む。
内積算出補助情報格納部223を利用することで、第1の実施形態におけるステップS507の更新内積補正値算出処理より、かなり少ない手順で更新内積補正値を算出することができる。
以上が、本実施形態におけるステップS1607の更新内積補正値算出処理の説明である。
第2の実施形態におけるサーバ装置10は、第1の実施形態のサーバ装置1よりも、更に少ない計算量でユーザ間の類似度を計算することができる。
なお、本発明は上述実施形態に限定されることなく、適宜変形して実施することができる。例えば、上述においては、端末装置3から送信される利用情報をサーバ装置1に集めて処理を行うようにしているが、端末装置3において上述実施形態のサーバ装置1の処理についても行うようにし、サーバ装置1を省略することも可能である。具体的には、端末装置3同士で利用情報を交換できるようにし、端末装置3にサーバ装置1の各部を追加した上で、端末装置3にて、上述実施形態においてサーバ装置1の処理として説明した処理を行ってもよい。この場合更に、ある端末装置3aにおいて、全てのユーザの組合せに対する類似度を計算するのではなく、端末装置3aを利用するユーザと、他のユーザとの組合せに限定して、ユーザ間の類似度の計算を行うようにしてもよい。
1,10 サーバ装置(利用者情報処理装置)
11 利用情報受信部
12 取得要求受信部
13 要求情報送信部
14 利用頻度値算出部
15,215 類似度算出部
16 類似ユーザ情報選択部
17 推薦コンテンツ選択部
18 嗜好情報格納部
19 類似度格納部
20 ユーザ情報格納部
21 コンテンツ情報格納部
22 制御部
2 ネットワーク
3a,3b,3n 端末装置
31 利用情報送信部
32 取得要求送信部
33 要求情報受信部
34 入力部
35 表示部
151,2151 内積類似度算出部
152 通常内積算出部
153 補正内積算出部
154,2154 追加内積補正値算出部
155,2155 更新内積補正値算出部
223 内積算出補助情報格納部
2156 内積算出補助値算出部

Claims (11)

  1. コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置において、
    所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を格納する利用頻度関連情報格納部と、
    前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、
    前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出部と
    を備えることを特徴とする利用者情報処理装置。
  2. 前記受信した利用情報に基づいて、利用者を識別するユーザ識別情報と、コンテンツを識別するコンテンツ識別情報と、前記利用者の前記コンテンツに対する利用の有無を少なくとも示す利用頻度値とを関連付けて格納する嗜好情報格納部を更に備え、
    前記嗜好情報格納部は、前記所定の時点における利用頻度値である第1の利用頻度値と、前記第1の利用頻度値が前記所定の時点以降に値が更新された場合の更新後の利用頻度値である第2の利用頻度値と、前記所定の時点では格納されておらず、それ以降に新たに追加された利用頻度値である第3の利用頻度値をそれぞれ格納し、
    前記補正値計算部は、
    前記嗜好情報格納部に格納されている利用頻度値の内から各利用者の前記第3の利用頻度値を抽出し、前記2人の利用者の利用頻度値の内積値であり、その少なくとも一方の利用者の利用頻度値が前記第3の利用頻度値の内積値である追加内積補正値とをそれぞれ計算する追加内積補正値算出部と、
    前記嗜好値格納部に格納されている利用頻度値の内から各利用者の前記第2の利用頻度値と、それに対応する前記第1の利用頻度値とを抽出し、前記2人の利用者の利用頻度値の内積値であり、その一方の利用者の利用頻度値が前記第2の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第1の利用頻度値または前記第2の利用頻度値である内積値から、前記2人の利用者の前記第1の利用頻度値の内積値を減算した値である更新内積補正値とをそれぞれ計算する更新内積補正値算出部と、
    前記追加内積補正値と前記更新内積補正値を加算して前記補正内積値を算出する統合補正値計算部と
    を有することを特徴とする請求項1に記載の利用者情報処理装置。
  3. 前記所定の時点までに前記2人の利用者の両方が利用したコンテンツの前記コンテンツ識別情報と、前記2人の利用者の前記第1の利用頻度値の積である内積算出補助値とを関連付けて格納する内積算出補助情報格納部とを更に備え、
    前記更新内積補正値算出部は、前記嗜好情報格納部を参照しながら、前記2人の利用者の内の一方の利用者の利用頻度値が前記第2の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第1の利用頻度値または前記第2の利用頻度値である場合における、前記2人の利用者の利用頻度値の内積である第1の内積値を算出すると共に、前記第1の内積値を算出する際に用いたコンテンツに対応する前記内積算出補助値を前記内積算出補助情報格納部から読み出して、それらの総和である第2の内積値を算出し、前記第1の内積値から前記第2の内積値を減算した値を更新内積補正値とすることを特徴とする請求項2に記載の利用者情報処理装置。
  4. 前記2人の利用者の両方が利用したコンテンツの前記コンテンツ識別情報と、前記2人の利用者の前記利用頻度値の積である内積算出補助値とを関連づけて格納する内積算出補助情報格納部を更に備え、
    前記内積算出補助情報格納部は、前記2人の利用者の前記第1の利用頻度値の積である第1の内積算出補助値と、前記2人の利用者の内の一方の利用者の前記利用頻度値が前記第2の利用頻度値であり、かつ他方の利用者の利用頻度値が前記第1の利用頻度値または前記第2の利用頻度値である場合の利用頻度値の積である第2の内積算出補助値と、前記2人の利用者の内の少なくとも一方の利用者の前記利用頻度値が前記第3の利用頻度値である場合の利用頻度値の積である第3の内積算出補助値とを識別可能なように格納し、
    前記追加内積補正値算出部は、前記第3の内積算出補助値の総和である前記追加補正値を計算し、
    前記更新内積補正値算出部は、前記第2の内積算出補助値の総和から前記第1の内積算出補助値の総和を減算した値を前記更新補正値として計算することを特徴とする請求項2に記載の利用者情報処理装置。
  5. 前記類似度算出部は、前記新規内積値を新たな利用者間内積値として、前記利用頻度関連情報格納部に格納させることを特徴とする請求項1〜4のいずれか1項に記載の利用者情報処理装置。
  6. 前記利用頻度関連情報格納部は、所定の条件を満たすコンテンツを対象にして算出された前記利用者間内積値を格納し、
    前記補正値計算部は、前記所定の条件を満たすコンテンツを対象にして、前記補正内積値を計算することを特徴とする請求項1〜5のいずれか1項に記載の利用者情報処理装置。
  7. 用者を識別するユーザ識別情報と、ユーザ属性情報とを対応させて格納するユーザ情報格納部と、
    前記類似度算出部で計算された一の利用者との前記類似度が所定値以上の他の利用者、または前記類似度が高い順に所定数の他の利用者の前記ユーザ識別情報を選択する類似ユーザ情報選択部と、
    を更に備えることを特徴とする請求項1〜6のいずれか1項に記載の利用者情報処理装置。
  8. コンテンツを識別するコンテンツ識別情報と、コンテンツ属性情報とを対応させて格納するコンテンツ情報格納部と、
    前記類似度算出部で計算された一の利用者との前記類似度が所定値以上の他の利用者、または前記類似度が高い順に所定数の他の利用者の前記ユーザ識別情報を選択する類似ユーザ情報選択部と、
    前記類似ユーザ情報選択部で選択されたユーザ識別情報と対応する前記利用頻度値が利用ありの状態を示すコンテンツを対象にして所定個数の前記コンテンツ識別情報を選択する推薦コンテンツ選択部と
    を更に備えることを特徴とする請求項1〜7のいずれか1項に記載の利用者情報処理装置。
  9. コンテンツを識別するコンテンツ識別情報と、コンテンツ属性情報とを対応させて格納するコンテンツ情報格納部と、
    前記類似度算出部で計算された一の利用者との前記他の利用者との類似度が大きいほど、かつ前記他の利用者の利用頻度値が大きいほど大きな値となる適合度をコンテンツごとに計算すると共に、前記適合度が所定値以上のコンテンツの前記コンテンツ識別情報、または前記適合度が大きな順に所定個数の前記コンテンツ識別情報を選択する推薦コンテンツ選択部と
    を更に備えることを特徴とする請求項1〜7のいずれか1項に記載の利用者情報処理装置
  10. コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置で実行される利用者情報処理方法において、
    所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納ステップと、
    前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算ステップと、
    前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出ステップと
    を有することを特徴とする利用者情報処理方法。
  11. コンテンツを利用する利用者における、コンテンツに対する利用状況に関する情報である利用情報を受信し、前記利用情報を用いて、利用者間の類似度を計算する利用者情報処理装置のコンピュータを、
    所定の時点までに受信した前記利用情報に基づいて、利用者の内の任意の2人における、各コンテンツに対する利用頻度を示す数値である利用頻度値の内積である利用者間内積値を利用頻度関連情報格納部に格納する利用頻度関連情報格納手段、
    前記所定の時点以降に受信した前記利用情報に基づいて、前記所定の時点からの前記2人の利用者の前記利用者間内積値の変化量を示す補正内積値を計算する補正値計算部と、
    前記利用者間内積値と前記補正内積値とを加算した新規内積値を用いて、前記2人の利用者の間の類似度を計算する類似度算出手段、
    として機能させることを特徴とする利用者情報処理プログラム。
JP2010199724A 2010-09-07 2010-09-07 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム Active JP5447307B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010199724A JP5447307B2 (ja) 2010-09-07 2010-09-07 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010199724A JP5447307B2 (ja) 2010-09-07 2010-09-07 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2012058893A JP2012058893A (ja) 2012-03-22
JP5447307B2 true JP5447307B2 (ja) 2014-03-19

Family

ID=46055945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010199724A Active JP5447307B2 (ja) 2010-09-07 2010-09-07 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム

Country Status (1)

Country Link
JP (1) JP5447307B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5860796B2 (ja) * 2012-11-08 2016-02-16 株式会社コナミデジタルエンタテインメント サーバ装置、サーバ装置の制御方法およびプログラム
CN116149236B (zh) * 2023-04-04 2023-10-27 深圳市特区建发科技园区发展有限公司 一种基于区块链的应用运维管理智能监控系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153381A (ja) * 1997-08-01 1999-02-26 Toshiba Corp 類似文書検索装置および類似文書検索方法
JP2006302097A (ja) * 2005-04-22 2006-11-02 Matsushita Electric Ind Co Ltd 協調フィルタ装置
JP4685605B2 (ja) * 2005-11-22 2011-05-18 エヌ・ティ・ティ・コミュニケーションズ株式会社 情報処理装置、検索方法およびプログラム
JP4179341B2 (ja) * 2006-06-01 2008-11-12 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
JP2009265754A (ja) * 2008-04-22 2009-11-12 Ntt Docomo Inc 情報提供装置、情報提供方法及び情報提供プログラム

Also Published As

Publication number Publication date
JP2012058893A (ja) 2012-03-22

Similar Documents

Publication Publication Date Title
US10405016B2 (en) Recommending media items based on take rate signals
US10579694B1 (en) Location based recommendation and tagging of media content items
US20140372429A1 (en) Incorporating user usage of consumable content into recommendations
JP5913800B2 (ja) コンテンツ提示装置、外部推薦装置およびコンテンツ提示システム
JP2012204894A (ja) 情報推薦装置
CN111767466A (zh) 基于人工智能的推荐信息推荐方法、装置及电子设备
KR20150042894A (ko) 프로필 이미지 카드를 공유하는 시스템 및 방법
KR20170014464A (ko) 사용자 성향을 고려한 여행 일정 추천 방법,장치 및 컴퓨터 프로그램
JP5447307B2 (ja) 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム
CN103593382A (zh) 信息处理设备、信息处理方法和程序
JP6414192B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム
JP5429116B2 (ja) 利用者情報処理装置、利用者情報処理方法、及び利用者情報処理プログラム
CN114730340A (zh) 在用户界面数据收集中保护用户隐私
JP5846033B2 (ja) 情報処理装置、端末装置、情報処理方法、表示方法、情報処理プログラム、及び表示プログラム
JP6700146B2 (ja) 評価値に基づいて推奨するコンテンツを決定するシステム
US20150170035A1 (en) Real time personalization and categorization of entities
JP6065061B2 (ja) 情報処理装置、端末装置、情報処理方法、表示方法、情報処理プログラム、及び表示プログラム
JP6269864B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP6856084B2 (ja) 情報処理装置、コンテンツ制御装置、情報処理方法、及びプログラム
JP2015228225A (ja) 情報推薦装置
JP6065060B2 (ja) 情報処理装置、端末装置、情報処理方法、表示方法、情報処理プログラム、及び表示プログラム
JP5235227B2 (ja) ログ処理装置およびその動作方法
JP5429088B2 (ja) 利用者情報処理装置、利用者情報処理方法、利用者情報処理プログラム
JP6028847B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP6443431B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131114

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

R150 Certificate of patent or registration of utility model

Ref document number: 5447307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250