(57)【要約】【課題】ネットワーク負荷を抑えた分散型推薦システムを提供する。【解決手段】１回の新規ピア装置の紹介においてあらかじめ限られた数のピア装置１０にブロードキャストを行う。隣接ピアリストにはあらかじめ定められた数のピア識別子だけを保持し、この隣接ピアリスト内のピア装置１０だけで通信を行う。さらに、バックリンク処理を加えることにより、処理速度を向上することも可能である。【選択図】図１
2009140004.tif 000002
【特許請求の範囲】
【請求項１】
複数個のピア装置がネットワークを通じて相互に接続された分散型推薦システムにおいて、
前記各ピア装置は、
ユーザの嗜好情報を表すプロファイルを保存するプロファイル保存部と、
嗜好が類似するプロファイルを保存する有限（ｋ）個の隣接ピア装置の識別子情報を保存する隣接ピアリスト保存部と、を備え、
前記複数個のピア装置の内の第１のピア装置が、前記隣接ピアリスト保存部に保存されたｋ個の隣接ピア群である第２のピア装置群に推薦依頼情報を送信し、協調フィルタリングによる推薦情報を受信することを特徴とする分散型推薦システム。
【請求項２】
複数個のピア装置がネットワークを通じて相互に接続された分散型推薦システムにおいて、
前記各ピア装置は、
ユーザの嗜好情報を表すプロファイルを保存するプロファイル保存部と、
嗜好が類似するプロファイルを保存する有限（ｋ）個の隣接ピア装置の識別子情報を保存する隣接ピアリスト保存部と、
前記プロファイル保存部に保存されたプロファイルと前記隣接ピアから受信したプロファイルとの類似度を計算する類似度計算部と、
を備え、
前記複数個のピア装置の内の第１のピア装置は、前記プロファイル保存部に保存されたプロファイルを前記第２のピア装置群に送信し、前記第２のピア装置群はそれらの隣接ピアリストに含まれる第３のピア装置群の識別子情報を前記第１のピア装置に送信し、前記第１のピア装置は受信したこれらの第３のピア装置群のプロファイルとの類似度が前記第１のピア装置内に保存された隣接ピアリストのどのピア装置のプロファイルとの類似度よりも高い場合、前記第１のピア装置に保存された隣接ピアリストを前記第３のピア装置の識別情報により置き換えることを特徴とする分散型推薦システム。
【請求項３】
前記第２のピア装置群は、前記第３のピア装置群のうち、前記第１のピア装置の隣接ピアリストに含まれないピア装置を選択して前記第１のピア装置に送信することを特徴とする請求項２記載の分散型推薦システム。
【請求項４】
前記第２のピア装置群は、受信した前記第１のピア装置のプロファイルと自己のプロファイルとの類似度を前記類似度計算部により計算し、前記第２のピア装置群の隣接ピアリストに掲載されたどのピア装置のプロファイルよりも類似度が高い場合、前記第２のピア装置群の隣接ピアリストに掲載されたピア装置の識別子情報を前記第１のピア装置の識別子情報で置き換えることを特徴とする請求項２記載の分散型推薦システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの嗜好情報であるプロファイルを一つの装置に集中させず、各ユーザが管理する装置に分散させたまま、そのユーザが知らない他のユーザの紹介を通して推薦を受けることが可能な分散型推薦システムに関する。
【背景技術】
【０００２】
近年、情報や商品の爆発的な増加やユーザ嗜好の多様化により、ユーザが欲しい情報や商品をお薦めする情報推薦システムの重要性が高まっている。現在の情報推薦システムのアーキテクチャは、サービス事業者が運用する大規模サーバにユーザの嗜好情報であるプロファイルを集中管理する集中処理方式が一般的であり、協調フィルタリングがよく用いられている（例えば、非特許文献１）。
【０００３】
このアーキテクチャに基づく推薦においては、サービス事業者がプロファイルをサーバに収集して一括管理し、被推薦ユーザと嗜好がよく似たプロファイルを有する別のユーザのプロファイルを用いて被推薦ユーザに情報や商品を推薦することにより高精度な推薦を可能としている。
【０００４】
しかし、大規模サーバでの集中処理方式による協調フィルタリングは、サービスを利用するユーザ数の増加やお薦め対象となるアイテム数の増加によって計算量が非常に大きくなり、それをまかなうために多大な設備投資や維持コストが必要になるという問題点があった。
【０００５】
この集中処理方式の問題点を解決するために、個人の所有する機器（以下、ピアと呼ぶ。）を通じてネットワークを形成するＰｅｅｒ−ｔｏ−Ｐｅｅｒ（Ｐ２Ｐ）アーキテクチャを用いた分散処理方式が提案されている（例えば、特許文献１）。
【０００６】
このＰｅｅｒ−ｔｏ−Ｐｅｅｒアーキテクチャに基づく協調フィルタリングにおいては、サーバを用いた集中処理が不要であるため運用コスト面で有利であり、各ピアが各自計算を行うため処理の負荷分散が可能である。
【非特許文献１】Ｒｅｎｓｉｃ  Ｐ．他，  ＧｒｏｕｐＬｅｎｓ：  Ａｎ  Ｏｐｅｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｆｉｌｔｅｒｉｎｇ  ｏｆ  Ｎｅｔｎｅｗｓ，Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９９４  ＡＣＭ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｕｐｐｏｒｔｅｄ  Ｃｏｏｐｅｒａｔｉｖｅ  Ｗｏｒｋ，ｐｐ．１７５−１８６，１９９４．
【特許文献１】特開２００６−１１５５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、このＰｅｅｒ−ｔｏ−Ｐｅｅｒアーキテクチャに基づく協調フィルタリングにおいては、全体を統括するサーバが存在しないため各ピアが他のピアと通信する必要があり、ネットワーク負荷が高まるという問題点がある。
【０００８】
例えば、特許文献１に記載の技術においては、推薦を受けたい第１のピアは自己のプロファイルをネットワーク上にブロードキャストし、このプロファイルを受信した第２のピアから第Ｎのピアがピア１との類似度を計算し、この類似度を第１のピアに送り返す。
【０００９】
第１のピアは類似度を返したピアの中から類似度がもっとも高いピアを選択し、コンテンツの推薦を受ける。
【００１０】
このようなデータを多人数にブロードキャストする方法は、構内通信網（ＬＡＮ）のような狭い範囲のネットワークなら問題はない。しかし、インターネットのような大規模な広域ネットワークで用いるのは現実的ではない。
【００１１】
特許文献１においては、この問題に対して、各ピアが持つ限られた数のピアにクエリをブロードキャストし、クエリを受けたピアはさらにブロードキャストするといったブロードキャストの伝播を行えば広範囲のピアと通信できると示唆している（特許文献１、図７  参照）。
【００１２】
しかし、このようなブロードキャストを伝播する方法は、ブロードキャストの伝播回数がわずか数回でも莫大な数のピアに対してクエリを送ることになり、ネットワーク負荷を高めてしまうという問題がある。
【００１３】
また、特許文献１に記載の技術においては、推薦依頼のクエリを発するたびに上記の方法で類似ピアを探索するためさらにネットワーク負荷が高まると考えられる。
【００１４】
本発明は、上記の問題点を鑑み、他のピアから新たにピアの推薦を受ける際のネットワーク負荷を抑えたピア装置及び分散型推薦システムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の分散型推薦システムは、複数個のピア装置がネットワークを通じて相互に接続された分散型推薦システムにおいて、前記各ピア装置は、ユーザの嗜好情報を表すプロファイルを保存するプロファイル保存部と、嗜好が類似するプロファイルを保存する有限（ｋ）個の隣接ピア装置の識別子情報を保存する隣接ピアリスト保存部と、を備え、前記複数個のピア装置の内の第１のピア装置が、前記隣接ピアリスト保存部に保存されたｋ個の隣接ピア群である第２のピア装置群に推薦依頼情報を送信し、協調フィルタリングによる推薦情報を受信することを特徴とするものである。
【００１６】
また、本発明の分散型推薦システムは、複数個のピア装置がネットワークを通じて相互に接続された分散型推薦システムにおいて、前記各ピア装置は、ユーザの嗜好情報を表すプロファイルを保存するプロファイル保存部と、嗜好が類似するプロファイルを保存する有限（ｋ）個の隣接ピア装置の識別子情報を保存する隣接ピアリスト保存部と、前記プロファイル保存部に保存されたプロファイルと前記隣接ピアから受信したプロファイルとの類似度を計算する類似度計算部と、を備え、前記複数個のピア装置の内の第１のピア装置は、前記プロファイル保存部に保存されたプロファイルを前記第２のピア装置群に送信し、前記第２のピア装置群はそれらの隣接ピアリストに含まれる第３のピア装置群の識別子情報を前記第１のピア装置に送信し、前記第１のピア装置は受信したこれらの第３のピア装置群のプロファイルとの類似度が前記第１のピア装置内に保存された隣接ピアリストのどのピア装置のプロファイルとの類似度よりも高い場合、前記第１のピア装置に保存された隣接ピアリストを前記第３のピア装置の識別情報により置き換えることを特徴とするものである。
【００１７】
さらに、上記の分散型推薦システムにおいては、前記第２のピア装置群は、前記第３のピア装置群のうち、前記第１のピア装置の隣接ピアリストに含まれないピア装置を選択して前記第１のピア装置に送信することを特徴とするものである。
【００１８】
さらに、上記の分散型推薦システムにおいては、前記第２のピア装置群は、受信した前記第１のピア装置のプロファイルと自己のプロファイルとの類似度を前記類似度計算部により計算し、前記第２のピア装置群の隣接ピアリストに掲載されたどのピア装置のプロファイルよりも類似度が高い場合、前記第２のピア装置群の隣接ピアリストに掲載されたピア装置の識別子情報を前記第１のピア装置の識別子情報で置き換えることを特徴とするものである。
【００１９】
本発明の上記解決手段をより具体的に説明する。
【００２０】
本発明では、上記の問題を解決するため各ピアが高々k 個のピア情報を格納した隣接ピアリストを持ち、この隣接ピアリストを類似度がより高いピアが含まれるように動的に更新する仕組みを導入した。
【００２１】
隣接ピアリストを動的に更新するために第一の装置は隣接ピアリスト内のk 個の第二の装置群へプロファイルをブロードキャストする。ブロードキャストを受信した第二の装置は、さらなるブロードキャストはせずに、自己の隣接ピアリストに含まれる第三の装置の情報を選択して第一の装置へ送り返す。このとき選ばれる第三の装置は第二の装置との類似度が高く、かつ第一の装置が知らない（第一の装置の隣接ピアリストおよびキャッシュに存在しない）ピアに限る。
【００２２】
また第二の装置は第一の装置のプロファイルと自己のプロファイルから類似度を計算し、隣接ピアリストに含まれるいずれかのピアの類似度より第一の装置との類似度が高ければそのピアを第一の装置の情報で置き換える。このように第一の装置からクエリを受けた第二の装置が第一の装置の情報を保存しておくことをバックリンクの記録と呼ぶ。ここで第一の装置と置き換えられるピアはキャッシュと呼ばれる領域に保存しておく。キャッシュに保存されたピアは隣接ピアリスト内のピアより重要ではない類似度の低い既知のピアだと判断できる。
【００２３】
第二の装置から第三の装置の情報を受け取った第一の装置は第三の装置へプロファイルを送信し、第三の装置が計算した類似度を受け取る。そして第三の装置の類似度が自己の隣接ピアリストに含まれるいずれかのピアの類似度より高ければそのピアを第三の装置の情報で置き換える。ここで第三の装置と置き換えられるピアはキャッシュと呼ばれる領域に保存しておく。
【００２４】
上記の手順を繰り返すことで各ピアの隣接ピアリスト内に自己と類似度が高いピアが含まれるようになる。推薦は隣接ピアリスト内のピアにクエリを出し、結果を受け取ることで実現する。
【発明の効果】
【００２５】
本発明によれば、新規のピア装置の紹介を得る際にネットワーク負荷が低く済むという効果がある。また、既知のピア装置との通信を行うことがなく、無駄な通信が抑えられるという効果がある。
【発明を実施するための最良の形態】
【００２６】
以下、本発明によるピア装置及び分散型推薦システムの一実施の形態を、図面を用いて詳細に説明する。なお、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００２７】
＜実施形態の詳細＞
＜構成の説明＞
図１は、本実施形態のピア装置１０の構成を示した概要図である。図１に示すように、ピア装置１０はネットワーク１１を経由して情報を送受信する送受信部１７と、あらかじめ設定された変数ごとの値の集合であるプロファイルを格納するプロファイル保存部１２と、格納されたプロファイルと、受信したプロファイルの類似度を算出する類似度計算部１６と、通信先の識別子を示すピア識別子の集合である隣接ピアリストを格納する隣接ピアリスト保存部１４と、受信したピア識別子毎の類似度に従って隣接ピアリストを更新する隣接ピアリスト管理部１３と、を備える。ピア識別子を格納するキャッシュ部１５をさらに備えるように構成することもできる。
【００２８】
ピア装置１０はさらに、映像や音楽や商品情報等のコンテンツを保存するコンテンツ保存部１９と、プロファイルに対応したコンテンツを推薦するコンテンツ推薦部１８と、を備える。
【００２９】
隣接ピアリスト管理部１３は、ピア識別子を類似度によってソートする隣接ピアリストソート部１３Ａと、格納されている隣接ピアリストから受信した隣接ピアリストに存在しないピア識別子を検索する未知ピア検索部１３Ｂと、を備える。
【００３０】
ピア装置１０は、上述の構成を含んでいればいわゆるパソコン、テレビ、ハードディスクを内蔵するレコーダ、携帯電話、通信機能を備えた携帯音楽端末、携帯型情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）など、いずれの機器であってもよい。
【００３１】
ネットワーク１１は、例えばＬＡＮやインターネットのような公衆通信回線網を利用したネットワークが挙げられるがこれらに限られるものではない。
【００３２】
ピア識別子とは、ピア装置１０をネットワーク上において識別する識別子であり、例えばＩＰアドレスが挙げられるがこれに限られるものではない。
【００３３】
図２は、プロファイルの例を示した図である。プロファイルはユーザの嗜好情報などが挙げられるが、これに限られるものではない。図２のピア装置Ａのプロファイル２１に示すように、プロファイルはあらかじめ設定された変数、例えば複数のアイテム、すなわち商品や事象に対する、これらの変数ごとの値、例えば好感度を示すレイティングの集合である。
【００３４】
図３は、複数のピア装置１０がネットワークによって接続されている様子を模式的に表した図である。図３において、矢印の方向は情報の送信方向を示す。アルファベットはピア装置１０を示す。
【００３５】
ピア装置Ａの隣接ピアリスト３３に示すように、隣接ピアリストには、あらかじめ定められた数だけピア識別子と類似度の組が格納されている。ピア装置Ａの隣接ピアリスト３３においては、あらかじめ定められた数が４である。隣接ピアリストは隣接ピアリストソート部１３Ａによって類似度の降順にソートされている。
【００３６】
ピア装置１０を結ぶ矢印３２はアクセス可能であることとアクセス方向とを示している。各ピア装置１０はピア識別子を持っており、アクセス可能であるとは通信相手のピア識別子を保持していることを意味する。
【００３７】
従って、双方向の矢印３４は、ピア装置Ｂの隣接ピアリストにピア装置Ｃのピア識別子が保持されており、ピア装置Ｃの隣接ピアリストにピア装置Ｂのピア識別子が保持されていることを意味する。
【００３８】
＜動作の説明＞
＜動作の概要＞
本実施形態の分散型推薦システムにおいては、各ピア装置１０は次のように動作する。第１のピア装置が、第２のピア装置に第１のピア装置の第１の隣接ピアリストに存在しないピア識別子である新規ピア識別子の第１のピア装置への送信を指示する。
【００３９】
次に、第２のピア装置が、新規ピア識別子の送信指示を受信したとき、第１のピア装置に新規ピア識別子を送信する。
【００４０】
次に、第１のピア装置が、新規ピア識別子を受信したとき、新規ピア識別子が示す第３のピア装置に第１のピア装置に格納された第１のプロファイルを送信するとともに、第１のプロファイルと第３のピア装置に格納された第３のプロファイルとの類似度の算出と算出した類似度の第１のピア装置への送信を指示する。
【００４１】
次に、第３のピア装置が、類似度の算出と送信の指示を受信したとき、類似度を算出して第１のピア装置に送信する。
【００４２】
さらに、第１のピア装置が、類似度を受信したとき、類似度に従って第１の隣接ピアリストを更新する。
【００４３】
ここで、第１のピア装置は第１のプロファイルを第２のピア装置及び第３のピア装置に送信している。そこで、第２のピア装置及び第３のピア装置は第１のプロファイルと第２のプロファイル及び第３のプロファイルとの類似度をそれぞれ算出し、算出された類似度に従って各隣接ピアリストを更新しておくことにより処理を高速化することが可能となる。この第２のピア装置及び第３のピア装置が各隣接ピアリストを更新する処理をバックリンク処理と呼ぶ。
【００４４】
バックリンク処理を取り入れると、本実施形態の分散型推薦システムにおいては、各ピア装置１０は次のように動作する。
【００４５】
第１のピア装置が、第２のピア装置に第１のピア装置に格納された第１のプロファイルを送信するとともに第１のピア装置の第１の隣接ピアリストに存在しないピア識別子である新規ピア識別子の第１のピア装置への送信を指示する。
【００４６】
次に、第２のピア装置が、第１のプロファイルと新規ピア識別子の送信指示を受信したとき、第１のピア装置に新規ピア識別子を送信するとともに、第２のピア装置に格納された第２のプロファイルと第１のプロファイルとの第１の類似度を算出し、第１の類似度に従って第２のピア装置に格納された第２の隣接ピアリストを更新する。
【００４７】
次に、第１のピア装置が、新規ピア識別子を受信したとき、新規ピア識別子が示す第３のピア装置に第１のプロファイルを送信するとともに、第１のプロファイルと第３のピア装置に格納された第３のプロファイルとの第２の類似度の算出と算出した第２の類似度の第１のピア装置への送信を指示する。
【００４８】
次に、第３のピア装置が、第２の類似度の算出と送信の指示を受信したとき、第２の類似度を算出して第１のピア装置に送信するとともに、第２の類似度に従って第３のピア装置に格納された第３の隣接ピアリストを更新する。
【００４９】
さらに、第１のピア装置が、第２の類似度を受信したとき、第２の類似度に従って第１の隣接ピアリストを更新する。
【００５０】
このように動作するため、本実施形態のピア装置１０及び分散型推薦システムにおいては、各ピア装置１０の隣接ピアリストが新規ピア識別子の紹介を受けるたびに更新される。このように動的かつ非同期に隣接ピアリストが更新されるため、新規ピア識別子が得られやすくなり、接続先がマンネリ化しない。
【００５１】
ピア装置１０は、あらかじめ定められた数のピア識別子のみを隣接ピアリストに保持するように構成することが望ましい。あらかじめ定められた数は、例えば５以上１０以下の自然数から選択されることが望ましい。このように限定することにより、ネットワークの負荷が高まることを防止できる。
【００５２】
隣接ピアリストが保持するピア識別子の数を上回ったピア識別子、またはソートの結果隣接ピアリストから外されることとなったピア識別子は別の格納場所に格納することが望ましい。
【００５３】
例えば、ピア装置１０が、ピア識別子を格納するキャッシュ部１５をさらに備えるように構成することができる。
【００５４】
この場合、ピア装置１０はピア識別子毎の類似度を受信したとき、類似度によって隣接ピアリストのピア識別子をソートし、ピア識別子のうち最も類似度の低いピア識別子の類似度と新規ピア識別子の類似度とを比較し、最も類似度の低いピア識別子の類似度が新規ピア識別子の類似度を下回ったとき、最も類似度の低いピア識別子をキャッシュ部１５に移し、新規ピア識別子を隣接ピアリストに追加するように、構成することができる。
【００５５】
＜動作の詳細＞
（類似度の計算）
類似度は、プロファイルにヒストグラム、確率分布などを用いても計算することができる。以下に、図２に示した例をベクトルとしてあらわし、類似度を相関係数によって算出する例を説明する。
【００５６】
ピア装置ＡのプロファイルをＡ（１，５，２，４）とする。ここで、レイティングしていないアイテムは省略する。これに対応するアイテムのピア装置ＢのプロファイルはＢ（４，２，５，１）と表現できる。
【００５７】
このとき相関係数は、次のように計算できる。
【数１】
2009140004.tif 000003
【００５８】
ここで、Ｃｏｖは共分散、ＡｉはＡのアイテムｉへのレイティング、Ａ’はＡのレイティングの平均値を意味する。
【００５９】
（コマンドの説明）
図４は、本実施形態のピア装置１０が使用するコマンドと、各コマンドとともに送信される情報を示した図である。
【００６０】
類似度計算クエリ４１はコマンドがＲＥＱ＿ＳＩＭであり、コマンドとともに送信される情報が送信元ピア識別子、送信先ピア識別子、プロファイルである。このコマンドは送信先のピア装置１０に、送信元のプロファイルと送信先のプロファイルとの類似度を計算させ、計算した類似度を送信元に送り返させる旨の指示を意味する。
【００６１】
類似度計算レスポンス４２はコマンドがＲＥＳ＿ＳＩＭであり、コマンドとともに送信される情報が送信先ピア識別子、類似度である。このコマンドは計算した類似度を、類似度計算クエリ４１を送信したピア装置１０に返信するためのコマンドである。
【００６２】
新規ピア探索クエリ４３はコマンドがＮＥＷ＿ＰＥＥＲであり、コマンドとともに送信される情報が送信元ピア識別子、送信先ピア識別子、プロファイル、既知ピアリストである。このコマンドは送信先のピア装置１０に送信元のピア装置１０が保持していないピア識別子であって送信先のピア装置１０が保持しているピア識別子を検索して返信させる旨の指示を意味する。
【００６３】
ピア紹介レスポンス４４はコマンドがＩＮＴＲＯ＿ＰＥＥＲであり、コマンドとともに送信される情報が送信先ピア識別子、新規ピア識別子である。このコマンドは新規ピア探索クエリ４３を受信したピア装置１０が検索した新規ピア識別子を、新規ピア探索クエリ４３を送信したピア装置１０に返信するためのコマンドである。
【００６４】
推薦クエリ４５はコマンドがＲＥＱ＿ＲＥＣＯＭであり、コマンドとともに送信される情報が送信元ピア識別子、送信先ピア識別子である。このコマンドは送信先のピア装置１０にコンテンツを推薦させ、送信元のピア装置１０に返信させる旨の指示を意味する。
【００６５】
推薦レスポンス４６はコマンドがＲＥＳ_ＲＥＣＯＭであり、コマンドとともに送信される情報が送信先ピア識別子、推薦コンテンツである。このコマンドは推薦クエリ４５を送信したピア装置１０に推薦するコンテンツを返信するためのコマンドである。
【００６６】
（第１のピア装置２３の動作）
（メインフロー）
図５は、第１のピア装置２３の動作を表したフローチャートである。ステップＳ５１において、第１のピア装置２３は最初に接続する隣接ピアすなわち他のピア装置１０の決定を行う。この決定は、任意のサーバから接続先の候補をダウンロードし、その中から適宜選択することにより行う。
【００６７】
ステップＳ５２において、第１のピア装置２３は第１のピア装置２３の第１の隣接ピアリストの更新処理を行う。この処理については後述する。
【００６８】
ステップＳ５３において、第１のピア装置２３は第１の隣接ピアリストが収束したか判定する。第１の隣接ピアリストが収束していない場合は、第１のピア装置２３はステップＳ５２に戻る。第１の隣接ピアリストが収束した場合は、ステップＳ５４に進む。
【００６９】
なお、ここで収束するとは隣接ピアリストの更新が行われなくなった状態を指す。
【００７０】
ステップＳ５４において、第１のピア装置２３はユーザからコンテンツ推薦の指示があったか判定する。コンテンツの推薦指示があった場合には、ステップＳ５５に進む。コンテンツの推薦の指示がなかった場合には、ステップＳ５７に進む。
【００７１】
ステップＳ５５において、第１のピア装置２３は隣接ピアリストの各ピア装置１０へ推薦クエリ４５を送信する。ステップＳ５６において、第１のピア装置２３は推薦レスポンス４６を受信してコンテンツの推薦を受け、ステップＳ５７に進む。
【００７２】
ステップＳ５７において、第１のピア装置２３はネットワークからの離脱の指示の入力を受けたか判定する。離脱指示がない場合にはステップＳ５２に戻る。離脱指示があった場合には、処理を終了する。
【００７３】
（隣接ピアリストの更新処理サブフロー）
図６は、第１のピア装置２３の隣接ピアリストの更新処理における動作を表したフローチャートである。
【００７４】
ステップＳ６０１において、第１のピア装置２３はステップＳ５１において決定した初期隣接ピア識別子を有するピア装置１０に新規ピア探索クエリ４３をブロードキャストする。送信するプロファイルは第１のピア装置２３の第１のプロファイルである。また、送信する既知ピアリストは第１のピア装置２３の第１の隣接ピアリストとキャッシュ部１５に格納されているピア識別子である。
【００７５】
既知ピアリストはＢｌｏｏｍ  Ｆｉｌｔｅｒと呼ばれるデータ構造に圧縮して送信することが、通信量を削減する上で望ましい。Ｂｌｏｏｍ  Ｆｉｌｔｅｒとは、データのインデックスリストを小さな記憶容量で効率的に表現するための手法である。Ｂｌｏｏｍ  Ｆｉｌｔｅｒを用いると、あるインデックスがインデックスリストに含まれているか、含まれていないかを元のインデックスリストを参照せずに検査できる。
【００７６】
ステップＳ６０２において、第１のピア装置２３は第２のピア装置２４からピア紹介レスポンス４４を受信する。ここで、新規ピア識別子を有するピア装置１０を第３のピア装置２５とする。
【００７７】
ステップＳ６０３において、第１のピア装置２３は第３のピア装置２５に類似度計算クエリ４１を送信する。
【００７８】
ステップＳ６０４において、第１のピア装置２３は第３のピア装置２５から類似度計算レスポンス４２を受信する。
【００７９】
ステップＳ６０５において、第１のピア装置２３は第１の隣接ピアリストを更新する。更新は次のように行う。
【００８０】
第１の隣接ピアリストはすでにソートされている。ここで、第１のピア装置２３は第１の隣接ピアリストの中で最小の類似度を持つピア識別子である第１の最小類似度ピア識別子の類似度と受信した類似度とを比較する。
【００８１】
受信した類似度の方が大きい場合には、第１のピア装置２３は第１の最小類似度ピア識別子をキャッシュ部１５に移動し、受信したピア識別子を第１の隣接ピアリストに追加する。
【００８２】
ステップＳ６０６において、第１のピア装置２３は隣接ピアリストソート部１３Ａを用いて第１の隣接ピアリストをソートし、処理を抜け出る。
【００８３】
（第２のピア装置２４の動作）
図７は、第２のピア装置２４の動作を表したフローチャートである。ステップＳ７１において、第２のピア装置２４は第１のピア装置２３から新規ピア探索クエリ４３を受信する。
【００８４】
ステップＳ７２において、第２のピア装置２４は未知ピア検索部１３Ｂを用いて、第２のピア装置２４の第２の隣接ピアリストに含まれており、受信した既知ピアリストに含まれていないピア識別子の中から、第２のピア装置との類似度がもっとも高いピア識別子を検索する。この検索乃至選択されたピア識別子を新規ピア識別子とする。
【００８５】
ステップＳ７３において、第２のピア装置２４は第１のピア装置２３にピア紹介レスポンス４４を送信する。
【００８６】
ステップＳ７４において、第２のピア装置２４は受信した第１のプロファイルと第２のピア装置２４の第２のプロファイルとの第１の類似度を、類似度計算部１６を用いて計算する。
【００８７】
ステップＳ７５において、第２のピア装置２４は計算した第１の類似度に従って第２の隣接ピアリストを更新する。更新は次のように行う。
【００８８】
第２の隣接ピアリストはすでにソートされている。ここで、第２のピア装置２４は第２の隣接ピアリストの中で最小の類似度を持つピア識別子である第２の最小類似度ピア識別子の類似度と第１の類似度とを比較する。
【００８９】
第１の類似度の方が大きい場合には、第２のピア装置２４は第２の最小類似度ピア識別子をキャッシュ部１５に移動し、第１のピア装置２３のピア識別子を第２の隣接ピアリストに追加する。
【００９０】
ステップＳ７６において、第２のピア装置２４は隣接ピアリストソート部１３Ａを用いて第２の隣接ピアリストをソートし、処理を終了する。
【００９１】
（第３のピア装置２５の動作）
図８は、第３のピア装置２５の動作を表したフローチャートである。ステップＳ８１において、第３のピア装置２５は第１のピア装置２３から類似度計算クエリ４１を受信する。
【００９２】
ステップＳ８２において、第３のピア装置２５は類似度計算部１６を用いて第３のピア装置２５の第３のプロファイルと、受信した第１のピア装置２３の第１のプロファイルとの第２の類似度を算出する。
【００９３】
ステップＳ８３において、第３のピア装置２５は第１のピア装置２３に類似度計算レスポンス４２を送信する。
【００９４】
ステップＳ８４において、第３のピア装置２５は計算した第２の類似度に従って第３の隣接ピアリストを更新する。更新は次のように行う。
【００９５】
第３の隣接ピアリストはすでにソートされている。ここで、第３のピア装置２５は第３の隣接ピアリストの中で最小の類似度を持つピア識別子である第３の最小類似度ピア識別子の類似度と第２の類似度とを比較する。
【００９６】
第２の類似度の方が大きい場合には、第３のピア装置２５は第３の最小類似度ピア識別子をキャッシュ部１５に移動し、第１のピア装置２３のピア識別子を第３の隣接ピアリストに追加する。
【００９７】
ステップＳ８５において、第３のピア装置２５は隣接ピアリストソート部１３Ａを用いて第３の隣接ピアリストをソートし、処理を終了する。
【００９８】
（相互作用）
図９は、第１乃至第３のピア装置の相互作用をまとめた図である。図９に示すように、第１のピア装置２３は第２のピア装置２４から第３のピア装置２５の紹介を受け、第３のピア装置２５と通信を開始する。
【００９９】
以上の説明においては、第１のピア装置２３を中心に説明したが、ピア装置１０は役割が固定されているわけではない。すなわち、あるとき第１のピア装置２３の役割をしたピア装置１０は、別のときに第２のピア装置２４の役割をしたり第３のピア装置２５の役割をしたりすることもある。
【０１００】
図１０は、ネットワークで見た動作例の初期状態を示した図である。また、図１１は、ネットワークで見た動作例の隣接ピアリスト更新後の状態を示した図である。ピア装置Ａは第１のピア装置２３、ピア装置Ｂは第２のピア装置２４、ピア装置Ｃは第３のピア装置２５の役割をする。
【０１０１】
第１のピア装置２３の第１の隣接ピアリスト１０１は｛Ｂ，Ｅ，Ｆ，Ｇ｝であり、第２のピア装置２４の第２の隣接ピアリスト１０２は｛Ｃ，Ｄ，Ｆ，Ｈ｝であり、第３のピア装置２５の第３の隣接ピアリスト１０３は｛Ｄ，Ｂ，Ｉ，Ｊ｝である。
【０１０２】
これらの隣接ピアリストは、類似度が高い順にソートされている。よって、例えば第１のピアリストにおいてはピア装置Ｂが最も類似度が高いこととなっている。
【０１０３】
まず、第１のピア装置２３であるピア装置Ａは第１の隣接ピアリスト内の４つのピア装置１０に新規ピア探索クエリ４３をブロードキャストする。ここでは、特にピア装置Ｂに注目して処理を見てゆく。
【０１０４】
新規ピア探索クエリ４３を受信したピア装置Ｂは、第２の隣接ピアリストにおいて最も類似度が高く、第１の隣接ピアリストに存在しないピア装置Ｃを新規ピアすなわち第３のピア装置２５として、ピア紹介レスポンス４４に格納し、ピア装置Ａに送信する。
【０１０５】
次に、ピア装置Ｂは第１のプロファイルと第２のプロファイルとの第１の類似度を算出する。ピア装置Ｂは第１の類似度と第２の最小類似度ピア識別子Ｈの類似度を比較する。ピア装置Ａとの類似度がピア装置Ｈとの類似度よりも高い場合にはピア識別子Ｈをキャッシュ部１５に移動し、ピア識別子Ａを第２の隣接ピアリスト１０２に追加し、ソートする。この結果、第２の隣接ピアリスト１０２｛Ａ，Ｃ，Ｄ，Ｆ｝になったとする。
【０１０６】
図１１に示すように、ピア識別子Ｈが第２の隣接ピアリスト１０２から除外され（点線矢印１１１）、ピア識別子Ａが第２のピアリスト１０２に追加される（矢印１１２）。
【０１０７】
ピア装置Ａはピア装置Ｂからピア紹介レスポンス４４により、ピア装置Ｃのピア識別子を受信する。ピア装置Ａはピア装置Ｃとの類似度を保持していないため、類似度計算クエリ４１をピア装置Ｃに送信する。
【０１０８】
類似度計算クエリ４１を受信したピア装置Ｃは第１のプロファイルと第３のプロファイルの第２の類似度を計算し、類似度計算レスポンス４２をピア装置Ａに送信する。
【０１０９】
次に、ピア装置Ｃは第２の類似度が第３のプロファイルと第３の最小類似度ピア識別子Ｊのプロファイルとの類似度よりも高いかを判定する。第２の類似度が第３のプロファイルとピア装置Ｊのプロファイルとの類似度よりも高いとき、ピア装置Ｃはピア識別子Ｊをキャッシュ部１５に移動させ、ピア識別子Ａを第３の隣接ピアリストに追加し、ソートする。
【０１１０】
ここでは、第２の類似度が第３のプロファイルとピア装置Ｊのプロファイルとの類似度よりも高くなく、第３の隣接ピアリストに変化がないとする。
【０１１１】
ピア装置Ｃから第２の類似度を受信したピア装置Ａは、受信した第２の類似度が第１の最小類似度ピア識別子Ｇとの類似度より高いかを判定する。第２の類似度が第３のプロファイルとピア装置Ｇのプロファイルとの類似度よりも高い時、ピア識別子Ｇをキャッシュ部１５に移動し、ピア識別子Ｃを第１の隣接ピアリストに追加し、ソートする。
【０１１２】
この場合、ピア装置Ａの第１の隣接ピアリスト１０１は、｛Ｃ，Ｂ，Ｅ，Ｆ｝になったとする。
【０１１３】
図１１に示すように、ピア装置Ａの第１の隣接ピアリスト１０１においては、ピア識別子Ｇが除外され（点線矢印１１３）、ピア識別子Ｃが追加される（矢印１１４）。
【０１１４】
＜本実施形態の効果＞
以上述べたように、本実施形態のピア装置１０及び分散型推薦システムは、１回の新規ピアの紹介において１回のあらかじめ限られた数のピア装置１０にブロードキャストを行い、ブロードキャストを受信したピア装置１０がさらにブロードキャストすることはない。このため、本実施形態の本実施形態のピア装置１０及び分散型推薦システムは、ブロードキャストが連鎖的に生じることがなく、ネットワーク負荷が低く済むという効果がある。
【０１１５】
また、新規ピア探索クエリ４３を使用するため、既知ピアリストにあるピア装置１０との通信を行うことがなく、無駄な通信が抑えられるという効果がある。
【０１１６】
さらに、バックリンク処理を加えることにより、処理速度を向上させることができるという効果がある。
【０１１７】
＜本発明の具体化における可能性＞
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１８】
【図１】本実施形態のピア装置の構成を示した概要図である。
【図２】プロファイルの例を示した図である。
【図３】複数のピア装置がネットワークによって接続されている様子を模式的に表した図である。
【図４】本実施形態のピア装置が使用するコマンドと、各コマンドとともに送信される情報を示した図である。
【図５】第１のピア装置の動作を表したフローチャートである。
【図６】第１のピア装置の隣接ピアリストの更新処理における動作を表したフローチャートである。
【図７】第２のピア装置の動作を表したフローチャートである。
【図８】第３のピア装置の動作を表したフローチャートである。
【図９】第１乃至第３のピア装置の相互作用をまとめた図である。
【図１０】ネットワークで見た動作例の初期状態を示した図である。
【図１１】ネットワークで見た動作例の隣接ピアリスト更新後の状態を示した図である。
【符号の説明】
【０１１９】
１０：ピア装置、
１１：ネットワーク、
１２：プロファイル保存部、
１３：隣接ピアリスト管理部、
１３Ａ：隣接ピアリストソート部、
１３Ｂ：未知ピア検索部、
１４：隣接ピアリスト保存部、
１５：キャッシュ部、
１８：コンテンツ推薦部、
１９：コンテンツ保存部、
２３：第１のピア装置、
２４：第２のピア装置、
２５：第３のピア装置
【図１】
2009140004.tif 000004
【図２】
2009140004.tif 000005
【図３】
2009140004.tif 000006
【図４】
2009140004.tif 000007
【図５】
2009140004.tif 000008
【図６】
2009140004.tif 000009
【図７】
2009140004.tif 000010
【図８】
2009140004.tif 000011
【図９】
2009140004.tif 000012
【図１０】
2009140004.tif 000013
【図１１】
2009140004.tif 000014