以下に、本発明の実施の形態について図面を参照して説明する。
以下の説明においては、番組情報を提供するEPG(Electronic Program Guide)を扱うシステムを例に挙げて説明するが、他の情報を扱うシステムにおいても、本発明を適用することは可能である。
本発明の実施の形態について説明するが、その説明の順番について記載しておく。まず本発明をい適用するシステムの構成について説明を加える。、次に、そのようなシステムにおいて授受されるEPGデータについて説明を加えるが、先に、EPGデータを取得したユーザ側のユーザ端末53―1乃至53−N(図3)に表示されるEPGの特徴を説明した後、そのような特徴を実現するためのデータ構成などについて、EPGデータを提供する側のサーバ52(図3)の構成を含めて説明を加える。
図3は、本発明を適用したシステムの一実施の形態の構成を示す図である。
ネットワーク51は、インターネットやLAN(Local Area Network)で構成され、接続されている機器同士でデータの授受を行う際に用いられる。ネットワーク51には、サーバ52が接続されている。サーバ52は、EPGを作成、提供する側の管理者が管理している端末である。サーバ52からは、ユーザ端末53−1乃至53−Nからの要求に対応して、適宜、EPGのデータが、ネットワーク1を介して提供される。
ユーザ端末53−1乃至53−Nは、それぞれ、放送局54から放送されるテレビジョン放送を受信する機能も有する。ユーザ端末53−1乃至53−Nは、それぞれ、ネットワーク51を介してサーバ52と接続する機能を有し、放送局54からの番組を受信する機能を有するテレビジョン受像機やパーソナルコンピュータである。または、ネットワーク51を介してサーバ52と接続する機能を有するパーソナルコンピュータと、放送局54からの番組を受信する機能を有するテレビジョン受像機という2つの端末から構成される。さらにユーザ端末53−1乃至53−Nは、それぞれ、番組を録画するための録画装置が含まれる構成とされていても良い。
すなわち、ユーザ端末53−1乃至53−Nは、それぞれ、サーバ52とデータの授受を行う機能を有し、放送局54からのテレビジョン放送用の番組を受信する機能を少なくとも有している、1の装置から構成される端末、または、複数の装置から構成され、それらの装置間でデータの授受を行える構成とされている端末である。
以下の説明において、ユーザ端末53−1乃至53−Nを個々に区別する必要がない場合、単に、ユーザ端末53と記述する。また、他の装置においても同様に記述する。さらに、図3においては、サーバ52や放送局54を、それぞれ1台しか図示していないが、説明の都合上、そのように図示しただけであり、実際の構成を限定するものではなく、複数台存在していても、本発明を適用できる事にかわりはない。
図4は、ユーザ端末53の内部構成例を示す図である。ここでは、ユーザ端末53は、サーバ52とデータの授受を行い、放送局54からの番組を受信することができる1台の端末であるとして説明する。また、そのような端末は、パーソナルコンピュータにより構成できるため、ここでは、ユーザ端末53は、パーソナルコンピュータであるとして説明する。なお、パーソナルコンピュータとは、デスクトップ型やノート型のものを含むことはもちろんであるが、PDA(Personal Digital Assistance)や、携帯電話なども含む。
ユーザ端末53のCPU(Central Processing Unit)71は、ROM(Read Only Memory)72に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)73には、CPU71が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース75は、キーボードやマウスから構成される入力部76が接続され、入力部76に入力された信号をCPU71に出力する。また、入出力インタフェース75には、ディスプレイやスピーカなどから構成される出力部77も接続されている。
さらに、入出力インタフェース75には、ハードディスクなどから構成される記憶部78、および、ネットワーク51を介して他の装置(例えば、サーバ52)とデータの授受を行う通信部79も接続されている。なお、詳細は図示しないが、通信部79には、放送局54からの番組を受信し、処理するためのアンテナ、チューナなども含まれる。ドライブ80は、磁気ディスク91、光ディスク92、光磁気ディスク93、半導体メモリ94などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
図5のフローチャートを参照して、ユーザ端末53の基本的な動作について説明する。ここでは、サーバ52により管理されているEPGを取得し、処理する場合を例に挙げて説明する。以下の説明においては、EPGとは、EPGを表示させるためのデータ、および、EPGに付随するデータを含むとする。
ステップS11において、ユーザ端末53は、ネットワーク51(図3)を介してサーバ52にアクセスする。このアクセスの処理は、所定のブラウザが起動され、ダイアルアップ方式など所定の方式(ユーザがISP(Internet Service Provider)と契約した内容に従った方式)により行われる。
アクセスが完了すると、ステップS12において、ログインの処理が行われる。この処理は、ユーザが入力部76を操作し、ユーザ名やパスワードを入力し、その入力された情報が、通信部79を介してサーバ52に対して送信されることにより行われる。
サーバ52は、ユーザ端末53からのアクセス(またはログイン)を受けると、管理しているEPGの初期画面のデータを、ネットワーク51を介して、アクセスしてきたユーザ端末53に対して提供する。もちろん、EPGが提供されるのは、ログインの処理が正常に行われときであり、正常に行われなかったときには、所定のエラー処理が実行される。
サーバ52側から提供されたデータを、ユーザ端末53は、ステップS13の処理として受信する。CPU71(図4)は、通信部79により受信されたデータに基づき、出力部77としてのディスプレイ101(図6)上に、EPGの初期画面(図6を参照して後述する)を表示させる。ユーザは、ディスプレイ101上に表示された初期画面を閲覧し、その画面内に設けられている複数のボタン(リンク先やコマンドが関連付けられているボタン)を操作する。
そのようなボタンの操作が行われると、ステップS14において、その操作されたボタンに対応するデータ(指示)が、サーバ52に送信される。そして、その指示を受信したサーバ52からの応答としてのデータが、ステップS15において受信される。そして、ステップS13の処理と同様に、CPU71が、受信されたデータを処理することにより、ディスプレイ101上に、所定の画面が表示される。ステップS14,S15の処理は、必要に応じ繰り返し行われる。
図6は、ステップS13においてディスプレイ101上に表示される初期画面の一例を示す図である。図6に示したディスプレイ101上には、EPGが表示されているが、そのEPGの構成は、基本的に、放送局、放送時間、放送される番組が関連付けられた状態で表示されている。例えば、図6に示したEPGにおいては、“放送局A”で“12時”台に放送されるのは、“番組A―1”であることが示されている。このように、複数の放送局、それらの放送局で放送される番組、および、それらの番組が放送される時間が、それぞれ関連付けられ、ユーザが、一見して認識できるような表示形態で、表示される。
また、図6に示したように、例えば、“番組A―1”という文字が表示されている領域内には、予約ボタン111が表示されている。この予約ボタン111が操作されると、対応する番組が、記憶部78(図4)に記憶(録画)されるような設定が行われる。
さらに、図6に示したように、例えば、“番組A―1”という文字が表示されている領域内には、オススメマーク112が表示されている。このオススメマーク112は、アクセスしてきたユーザに対してオススメする番組に付けられるマークである。ここで、“アクセスしてきたユーザに対してオススメする番組”とは、アクセスしてきたユーザ毎に、そのユーザに適した番組が提供され、ユーザ毎に異なる番組がオススメされる可能性があることを意味する。
換言すれば、オススメされる番組は、サーバ52にアクセスしてきたユーザ全員に共通したものではなく、よって、サーバ52側で、予めオススメ番組として設定されている番組ではなく、アクセスしてきたユーザの嗜好に合わせて、ユーザがアクセスしてきたときに、ユーザ毎に作成される情報である。このように、アクセスしてきたユーザの嗜好に合った番組がオススメとして、ユーザ側に提示されるのは、本発明の1つの特徴であり、このような特徴を実現するために、サーバ52は、後述するようなデータベースを有し、そのデータベースを用いた処理を実行する。
このオススメマーク112は、図6に示した例では、星マークで示されているが、そのマークの形状などは、どのようなものでも良い。また、星マークなどで示される場合、そのマークの数により、オススメ度が異なるようにしても良い。例えば、図6においては、“番組A−1”のオススメマーク112は、星マークが1つであるが、“番組B−1”のオススメマーク112は、星マークが3つであり、“番組B−1”の方が、“番組A−1”よりオススメであることが示されている。
このオススメマーク112(星マークの数)に関するデータは、サーバ52側で、ユーザの嗜好に関するデータを基に設定され、EPGの初期画面のデータに含まれて送信される。または、サーバ52側から送信されてきたEPGの初期画面のデータと、ユーザ端末53側で管理しているユーザの嗜好に関するデータを基に設定されるようにしても良い。このような設定の仕方の差異は、ユーザの嗜好に関するデータ(以下、適宜、嗜好データと記述する)をサーバ52側で管理するか、ユーザ端末53側で管理するかにより生じるものである。ここでは、まず、サーバ52側で、嗜好データを管理するとして説明をする。
このような、EPGの初期画面で、ユーザの嗜好に適した番組に対してオススメマーク112が表示されるようにするのは、サーバ52にユーザ端末53がアクセスした時点で、アクセスしてきたユーザを特定するための認証処理(ログイン)などが行われることを前提としている。しかしながら、例えば、初期画面として図1に示したような画面がユーザに提供され、その後、ログイン処理が実行された時点で、図6に示したような画面がユーザに提供されるようにしても良い。
オススメマーク112は、オススメの番組(サーバ52側の処理として、所定の条件を満たすとして検出された番組)とされた番組名の領域に必ず表示されるようにしても良い。必ず表示されるようにした場合、同一の放送時間帯に放送される複数の番組にオススメマーク112が、それぞれ表示されといった状況が発生する可能性がある。しかしながら、通常、ユーザは、1つの時間帯には、1つの番組しか視聴できず、また、ユーザが所有する1つの装置では、1の時間帯には1つの番組しか録画できないので、1の時間帯に2以上のオススメマーク112を表示させても、結果としては、その内の2つの番組しか視聴できないと考えられる。
また、オススメマーク112が表示される番組が、多いと、オススメマーク112を表示させる意味が薄くなると考えられる。極端な例だが、全ての番組に対してオススメマーク112が表示されたような場合(このような状況が発生することも考えられる)、オススメマーク112が、実質上、意味のないものとなってしまう。
これらのことを考慮すると、オススメマーク112が表示される番組数に、何らかの制限を設けるようにした方が良い。例えば、同一の時間帯には、オススメマーク112は2番組内にする、1日分のEPG内には、オススメマーク112は20番組内するなどの制御が行われるようにしても良い。
図6に示したEPGの画面内には、オススメボタン113とランキングボタン114も表示されている。オススメボタン113は、オススメとされる番組を閲覧したときに操作されるボタンである。ランキングボタン114は、録画予約された数や視聴率などの基づく番組紹介を閲覧したいときに操作されるボタンである。
これらのボタンは、ユーザが入力部77(図4)を操作し、カーソル121を所望のボタン上に位置した状態で、クリックなどの所定の操作が行われることにより操作されるように構成されている。
オススメボタン113が操作されると、図7に示したような画面に、ディスプレイ101上の画面が切り替えられる。図7に示した画面例では1番組分の画面しか図示しないが、オススメとされる1つの番組の詳細情報を提示する画面(以下、適宜、オススメ画面と記述する)は、ディスプレイ101上に複数、同様の形式で表示される。オススメ画面には、番組名表示部151、放送時間表示部152、内容表示部153、出演者表示部154、理由表示部155、および、オススメ度表示部156が設けられている。
番組名表示部151には、オススメとされる番組名が表示され、放送時間表示部152には、その番組が放送される日時が表示され、内容表示部153には、その番組の内容が簡潔な文章で示され、出演者表示部154には、その番組に出演する主な出演者の名前が表示される。そして、理由表示部155には、なぜその番組がオススメなのかを、ユーザに認識させるようなオススメ理由が表示され、オススメ度表示部156には、オススメ理由から総合的に算出されるオススメ度が、表示される。
図7に示した例では、オススメ度表示部156には点数が表示されているが、図6に示したオススメマーク112と同様に、星マークなどのマーク(および、そのマークの個数)で表示されるようにしても良い。
図7に示したオススメ画面のうち、理由表示部155を表示させるのは、本発明の1つの特徴である。このような特徴を有することにより、ユーザは、なぜその番組がオススメとして提供されているのか、自分のどのような嗜好に対してマッチングしているのかなどを認識することができる。そして、ユーザは、このような理由を閲覧することにより、視聴(録画)したい番組を選択しやすい(自分の嗜好に合った番組を見つけやすい)ようになる。
また本発明の1つの特徴としては、このようなオススメ画面は、既存のものが提供されるのではなく(サーバ52側が、アクセスしてきたユーザ全てに対して同様のものを提供するのではなく)、アクセスしてきたユーザの嗜好のデータを基に、そのユーザの嗜好に合った番組が選択され、提供される点である。このような特徴のために、ユーザ側としては、提供される情報に信頼性を持つことができ、所望の番組を検索しやすくなり、使い勝手がよいEPGが提供されていると感じることが可能となる。よって、サーバ52へのアクセスが増加すると考えられ、会員数などを増加させることが可能になると考えられる。
図7に示したオススメ画面についてさらに説明を加えるに、理由表示部155には、複数の情報が表示される。表示される内容は、例えば、図7においては、“よく見る出演者”、“登録ジャンル”、“よく見るキーワード”、“同じ番組を録画した人の興味”などの項目があるが、後述するようにさまざまな項目(情報)が考えられる。これらの理由表示部155に表示される情報に関しては、サーバ52側で管理されているデータベースの内容などに関わる。
図7に示した例では、例えば、“よく見る出演者”として「人物A」が挙げられ、さらに、その「人物A」に対する点数(図7では17.0点)が表示されている。この点数は、オススメとしてサーバ52側が提供する番組を検索する際、「出演者A」に対してマッチングしたスコアであり、このスコアが高いほど、ユーザの嗜好に合っていると考えられる。
この点数について説明を加えるに、図7に示した例では、単に17.0点と表示されているだけであるが、さらに、次のような詳細な表示の形態も考えられる。例えば、“17.0点(8.9,3.8)”といったような括弧書きでさらに詳細な点数が表示される。括弧書きの点数のうち、前半の“8.9”は、番組に対する重み付けの値(後述するT_PRG_VALUEの値)であり、後半の“3.8”は、ユーザに対する重み付けの値(後述するT_UM_VALUEの値)である。括弧外の点(この場合、17.0点)は、この2つの重み付けの値の責に所定のパラメータを乗算した値である。
ところで、図7に示したように、例えば、“よく見る出演者”という同一の項目に対して、「人物A」、「人物C」、および「人物D」という3つの情報が表示され、それぞれの情報に対する点数がそれぞれ表示されているような場合、以下のような問題点がある。図7に示した例では、理由表示部155に表示される項目の内の一部だけを示した状態を示しているが、複数ある項目の全部が表示され、それぞれの項目に対して複数の情報が、複数行にわたって分散的に表示され、さらに、それらの情報毎に点数までも表示されるとなると理由表示部155の領域の大きさは大きいものとなってしまう。また、情報を羅列してもユーザにとっては、見やすい画面であるとは言えない。さらに、点数を表示しても、その点数からユーザが得る情報量は少なく(点数から得られる情報を判断することはユーザにとっては必ずしも容易なことであるとは考えられないため)、所望の番組の検索には、あまり意味を持たない情報であると考えられる。
そこで、オススメ画面を図8に示したようにしても良い。図8に示したオススメ画面の理由表示部155には、1つの項目に対して、複数の情報が行を改めることなく連続的に表示され、点数は表示されないようになっている。従って、同じ項目(例えば、“よく見る出演者”)が、図7に示した例のように、何度も表示されるようなことは、図8における表示形態ではない。このようにすれば、理由表示部155の領域が大きくなってしまうようなことを防ぐことができる。また、情報がコンパクトにまとまっているので、ユーザは、それらの情報を見やすく、各情報から得られる情報は多いいと考えられる。従って、ユーザが所望の番組をより検索しやすくなると考えられる。
図7または図8に示したオススメ画面のうち、ユーザに提示される画面はどちらでも良い。また、表示形態などは、図7または図8に示した画面に限定されるものではないため、どのような形態、例えば、各表示部の順序が入れ替わった状態で表示される、図示していない表示部が設けられる形態などで情報が提示されるようにしても良い。しかしながら、本発明を適用することにより、オススメ画面、および、そのオススメ画面が表示される前に表示される画面(上述した実施の形態では、初期画面と称した画面)においては、以下のような特徴が少なくともある。
オススメ画面のみ、または、初期画面とオススメ画面は、ユーザの嗜好を考慮した画面(情報)となっており、ユーザ毎に適した情報が提示される。その提示される情報は、見やすい形態で提示される。このような特徴を実現するための、サーバ52の構成、管理されるデータベース、そのデータベースが用いられた処理などについて、以下に説明を加える。
以下の説明の概略を示しておくと、まず、サーバ52の内部構成について説明を加え、その次に、データベースについての説明を加える。そして、そのデータベースにより管理されるデータの作成について説明を加え、作成されたデータを用いた処理、特に、オススメ画面に関わる処理について説明を加える。
図9は、サーバ52の内部構成例を示す図である。サーバ52は、パーソナルコンピュータなどから構成することが可能である。サーバ52のCPU201は、ROM202に記憶されているプログラムに従って各種の処理を実行する。RAM203には、CPU201が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース205は、キーボードやマウスから構成される入力部206が接続され、入力部206に入力された信号をCPU201に出力する。また、入出力インタフェース205には、ディスプレイやスピーカなどから構成される出力部207も接続されている。
さらに、入出力インタフェース205には、ハードディスクなどから構成される記憶部208、および、ネットワーク51を介して他の装置、例えば、ユーザ端末53とデータの授受を行う通信部209も接続されている。ドライブ210は、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
サーバ52は、上述したようにEPGやオススメ画面を作成し、ユーザ端末53側に提供する機能を有する端末であるが、その機能を実行するためのプログラムは、記憶部208に記憶され、RAM203に展開され、その展開されたプログラムに基づいてCPU201が処理を実行することにより行われる。図10は、サーバ52における機能を説明するための機能ブロック図である。
ログ生成機能231は、ユーザが(ユーザ端末53が)アクセスしたときの日時など、また、そのユーザ受けたサービスの使用情報(所定の番組の録画予約)などに基づくログを生成し、記憶部208に記憶させ、その記憶されたログファイルを管理する機能である。ユーザ管理機能232は、ユーザの新規の登録、既に登録されているユーザの削除、ユーザがログインしてきたときの処理を行う機能であり、必要に応じ、ユーザからの操作(指示)を管理する機能である。
情報選別機能233は、後述する対象情報メタデータベースとユーザモデルデータベースを参照して、アクセスしてきた(所定の要求を出してきた)ユーザに対して、そのユーザに適した情報を、対象となっている情報データベースから取捨選択し、ユーザ側に提供する機能である。サービス管理機能234は、サービス管理者(サーバ52の管理者や、サーバ52に対してEPGに関わるデータを供給する者)が、各機能や、各データベース、関連情報などの追加、変更、削除などの編集を行うための機能である。
ユーザモデル管理機能235は、ユーザあるいはサービスの管理者から、直接的に入力されるか、または、ログデータベースのマイニング(Mining)結果に基づく処理により、ユーザモデルデータベースの登録、更新、削除などを行う機能である。詳細は後述するが、ユーザモデル管理機能235は、ユーザの嗜好に関するデータを取得し、管理するが、その取得には、ユーザ自身が登録したデータを取得する、学習により取得されたデータを取得する、フィルタリング処理により取得された情報を取得するといった方法がある。
情報通信機能236は、選別された情報などをユーザ側に提供する機能であり、ユーザ側からのデータを受信する機能である。対象情報メタデータ管理機能237は、ユーザあるいはサービスの管理者からの直接的な入力や、情報データベースやその他のマスターなどの関連情報をマイニングした結果に基づく処理により、情報メタデータベースへの情報の登録、更新、削除などを行う機能である。サービス一般機能238は、サーバ52がサービスを提供するうえで必要となるが、上述した機能では行われない処理を実行するための機能である。
このような機能を、サーバ52は備えている。このような機能は、ここでは、サーバ52が備えているとして説明を続けるが、これらの機能のうち、一部の機能は、ユーザ端末53側に持たせることも可能である。また、これらの機能の全て、または、一部をサーバ52以外の端末に持たせ、その端末とデータの授受を行うことにより、結果として、サーバ52が機能を実現できるように構成しても良い。
例えば、ユーザ端末53側で、ログ生成機能231や、ユーザモデル管理機能235を有するようにし(ユーザのプライベートな情報や嗜好に関わるデータを管理する機能を、ユーザ側が管理できるようにし)、これらの機能が担当する後述するような処理を、サーバ52側でなく、ユーザ端末53側で行うようにしても良い。
このような機能が用いる(管理する)データベースについて説明する。データベースは、記憶部208に構築される。図11は、記憶部208に構築されるデータベースを示す図である。図11に示した例では、記憶部208には、データベースとして、マスターデータベース251、ターゲットデータベース252、ログデータベース253、および、ユーザデータベース254が構築されている。
マスターデータベース251は、EPGを作成する際に用いられるデータベースや、ユーザに関する情報(例えば、年齢など)を管理するためのデータベースなどの複数のデータベースにより構成される。ターゲットデータベース252は、オススメ画面などを作成する際に、数値計算などが行われるが、その計算に用いられるデータベースなどの複数のデータベースにより構成される。ログデータベース253は、ログ生成機能231により生成され、管理されるデータベースである。ユーザデータベース254は、会員登録しているユーザの情報などを管理するためのデータベースである。
マスターデータベース251は、図12乃至図21の各図に示すデータベースから構成されている。なお、図12乃至図21に示すデータベース内のデータは、説明の都合上、一部分のデータのみを図示してある。
図12に示したデータベースは、M_CATEGORYデータベース271であり、放送される番組のカテゴリー(ジャンル)を管理するために設けられている。このM_CATEGORYデータベース271には、AttributeIDとして、“001”という識別子が割り当てられている。M_CATEGORYデータベース271は、登録されているカテゴリーを識別するための識別子(CategoryID)とカテゴリー(Category)を関連付けて管理する。例えば、図12に示したM_CATEGORYデータベース271において、CategoryID“1000”は、“スポーツ”というカテゴリに割り当てられている。
図13に示したデータベースは、M_PERSONデータベース272であり、放送される番組に出演する人物(司会者、俳優、女優、文化人、政治家など)を管理するために設けられている。このM_PERSONデータベース272には、AttributeIDとして、“002”という識別子が割り当てられている。M_PERSONデータベース272は、登録されている人物名を識別するための識別子(PersonID)、人物名(Name)、および、その人物名の読み方(KanaName)を、それぞれ関連付けて管理する。例えば、図13に示したM_PERSONデータベース272において、PersonIDとして“0000000001”は、“人物A”という人物に割り当てられており、その“人物A”の読み方は、“ジンブツエー”であることが関連付けられている。
図14に示したデータベースは、M_PERSON_CHARACTERデータベース273であり、放送される番組に出演する人物のキャラクタ(特徴)を管理するために設けられている。M_PERSON_CHARACTERデータベース273には、AttributeIDとして、“003”という識別子が割り当てられている。M_PERSON_CHARACTERデータベース273は、番組に出演する人物のキャラクタを識別するための識別子(CharacterID)とキャラクタ(Character)が、関連付けて管理する。なお、キャラクタとは、一般的に使われている意味あいを本発明においても適用するが、ここでは特に、視聴者(ユーザ)が、その人物に対してどのような印象を持っているか、その人物を表すのにまたは特徴として適している言葉などを意味する。
例えば、図14に示したM_PERSON_CHARACTERデータベース273において、CharacterID“001”は、“司会者系”というキャラクタが関連付けられている。なお、図14に示した例では、1つのCharacterIDには、1つの言葉が関連付けられている例を示したが、1つのCharacterIDに、複数の言葉(類似する言葉)が関連付けらているようにしても良い。例えば、CharacterIDとして“004”が割り当てられているのは、“身近”であるが、“身近、親しみ”などと、類似する複数の言葉と関連付けられるようにしても良い。
図15に示したデータベースは、M_VIEW_TYPEデータベース274であり、ユーザの視聴タイプ(どのような番組を好むか、どのような形態で視聴するかなど)を表す言葉を管理するために設けられている。このM_VIEW_TYPEデータベース274には、AttributeIDとして、“004”が割り当てられている。M_VIEW_TYPEデータベース274は、視聴タイプを識別するための識別子(ViewID)と視聴タイプ(ViewType)を関連付けて管理する。例えば、図15に示したM_VIEW_TYPEデータベース274において、ViewID“001”は、“笑い刺激型”という視聴タイプに割り当てられている。
図16に示したデータベースは、M_KEYWORDデータベース275であり、番組の特徴を表すキーワード(単語)を管理するために設けられている。このM_KEYWORDデータベース275には、AttributeIDとして、“005”が割り当てられている。M_KEYWORDデータベース273は、キーワードを識別するための識別子(KyewordID)とキーワード(Keyword)を関連付けて管理する。なお、キーワードとは、一般的に使われている意味あいを本発明においても適用するが、例えば、“番組A”の内容を1または複数の単語で表すと、どのような単語が一番適しているか(言い表せているか)を示す言葉であるとする。
例えば、図16に示したM_KEYWORDデータベース273において、KeywordID“0000000001”は、“情報”というキーワードに割り当てられている。
図17に示したデータベースは、M_KEYWORD_1データベース276であり、上述したM_KEYWORDデータベース275と基本的に同様のデータを管理するために設けられている。このM_KEYWORD_1データベース276は、図16に示したM_KEYWORDデータベース275と比較し、リーゾン(Reason)という項目も、KeywordIDやKeywordと、それぞれ関連付けて管理する。このReasonという項目に記載されている言葉は、例えば、図8において、理由表示部155に表示される言葉であり、ユーザ側に提示される言葉(単語)である。
すなわち、Keywordという項目に書かれているキーワードは、マッチングなどの処理を行うとき等に用いられる言葉であり、Reasonという項目に書かれている言葉は、マッチングが行われた結果、そのマッチングのときの得点が高く、ユーザ側にオススメ理由として提示する際に、実際に提示される言葉が書かれている。
例えば、KeywordIDが“0000000006”の“エロティック”というキーワードは、マッチングのときに適切な番組を検索するのには適していても、実際に、ユーザに番組をオススメとして提示する際には、あまり好ましくない言葉であると考えられる。そこで、“エロティック”という言葉を表示されないようにするために、Reasonの部分は空欄(Null)とされている。
また、例えば、KeywordIDが“0000000008”の“得”というキーワードは、マッチングのときに適切な番組を検索するのには適していても、実際に、ユーザに番組をオススメとして提示する際には、“得”とだけ表示しても具体的な意味がつかみづらく、不親切な表示となってしまうと考えられ、ユーザに提示するには適切ではない。そこで、Reasonの部分には“お得な情報”と記載しておき、“得”というキーワードがユーザに提示される際には、“お得な情報”という言葉が代わりに提示されるようにする。
このように、Reasonという項目を設けることにより、マッチングなどの処理に用いられる言葉と、ユーザ側に提示される言葉とを使いわけることが可能となる。
図18に示したデータベースは、M_KEYWORD_2データベース277であり、上述したM_KEYWORDデータベース275と基本的に同様のデータを管理するために設けられている。このM_KEYWORD_2データベース277は、図16に示したM_KEYWORDデータベース275と比較し、Displayという項目も、KeywordIDやKeywordと、それぞれ関連付けて管理する。このDisplayという項目に記載されているのはフラグであり、そのフラグは、Keywordの項目に記載されている言葉を、ユーザ側に提示するか否かを表すものとされている。
図18に示した例で、“1”は、ユーザ側に提示し、“0”は、ユーザ側に提示しないとして設定されていることを示す。例えば、KeywordIDが“0000000001”と割り当てられている“情報”というキーワードは、オススメ理由として、ユーザ側に提示されるが、KeywordIDが“0000000006”と割り当てられている“エロティック”というキーワードは、オススメ理由として、ユーザ側には提示されない。
図16乃至図18に示したデータベースのうち、いずれか1つのデータベースがマスターデータベース251に管理されていれば良い。よって、図16乃至図18に示した各データベースのAttributeIDは、“005”と共通のIDにしてある。以下の説明においては、特に断りのない限り、図16に示したM_KEYWORDデータベース275が、マスターデータベース251に管理されているとして説明する。
図19に示したデータベースは、M_AGEデータベース278であり、ユーザの年齢層を管理するために設けられている。このM_AGEデータベース278には、AttributeIDとして、“006”が割り当てられている。M_AGEデータベース278は、年齢を識別するための識別子(AgeID)、年齢の幅を示し、その幅を識別するための名前(AgeName)、その年齢の幅の始めの年齢(StartAge)、および、その年齢の幅の終わりの年齢(EndAge)を、それぞれ関連付けて管理する。
例えば、図19に示したM_AGEデータベース278において、AgeID“001”は、“0から4”というAgeNameに関連付けられ、“0”というStartAgeにも関連付けられ、さらに、“4”というEndAgeにも関連付けられている。
図20に示したデータベースは、M_GENDERデータベース279であり、ユーザの性別を管理するために設けられている。このM_GENDERデータベース279には、AttributeIDとして、“007”が割り当てられている。M_GENDERデータベース279は、性別を識別するための識別子(GenderID)と性別(GenderType)を関連付けて管理する。例えば、図20に示したM_GENDERデータベース279において、GenderID“001”は、“男性”というGenderTypeに関連付けられている。
図21に示したデータベースは、M_REASONデータベース280であり、理由表示部155(図7または図8)に表示される言葉を制御するためのデータを管理する。M_REASONデータベース280は、AttributeID、ValueID、およびReasonを、それぞれ関連付けて管理する。AttributeIDは、上述したように、各データベースを識別するために割り振られたIDであり、例えば、図12に示したM_CATEGORYデータベース271には、AttributeIDとして“001”が割り振られている。
ValueIDは、各データベースが管理するIDのことであり、CategoryID(図12)、PersonID(図13)、CharacterID(図14)、ViewID(図15)、KeywordID(図16)、AgeID(図19)、および、GenderID(図20)のことである。Reasonは、図17や図18を参照して説明したように、理由表示部155(図7,8)に表示される言葉のことである。
例えば、図21に示したM_REASONデータベース280のAttributeIDが“001”である場合、M_CATEGORYデータベース271のことを示し、加えてValueIDが“1000”である場合、M_CATEGORYデータベース271のCategoryIDが“1000”のことを示す。そして、M_REASONデータベース280のAttributeIDが“001”、ValueIDが“1000”で示される言葉が、ユーザに提示される場合、Reasonの項目の対応する欄に記載されている“スポーツ”という言葉が提示されることとなる。
このM_REASONデータベース280は、上述した図12乃至図19(図17と図18は除く)にそれぞれ示したデータベースを、理由表示部155(図8)に表示させる言葉を制御するために、1つにまとめたものである。制御するためにというのは、上述したように、ユーザ側に提示するには好ましくない言葉や、そのままではユーザ側に提示するには適していない言葉があり、そのような言葉を適切に処理するためという意味である。
例えば、ユーザ側に提示するには好ましくない言葉として、上述した例では“エロティック”という言葉を挙げたが、この“エロティック”という言葉は、図16に示したM_KEYWORDデータベース275に管理されており、KeywordIDとして“0000000006”が割り当てられている。M_KEYWORDデータベース275のAttributeIDは“005”であるので、図21に示したM_REASONデータベース280のAttributeIDが“005”で、ValueIDが“0000000006”を見ると、記載がない(削除されている)ことがわかる。M_REASONデータベース280に記載がないということは、ユーザ側には、提示されないということになる。
よって、M_REASONデータベース280に記載しなければ、ユーザ側に提示するには好ましくない言葉は、提示されないようにするといった制御を行えることになる。
また、例えば、そのままではユーザ側に提示するには適していない言葉として、上述した例では“得”という言葉を挙げたが、この“得”という言葉は、図16に示したM_KEYWORDデータベース275に管理されており、KeywordIDとして“0000000008”が割り当てられている。M_KEYWORDデータベース275のAttributeIDは“005”であるので、図21に示したM_REASONデータベース280のAttributeIDが“005”で、ValueIDが“0000000008”を見ると、“お得な情報”という記載がある。M_REASONデータベース280に“お得な情報”と記載があるということは、ユーザ側に“得”という言葉(キーワード)が提示されるときには、実際には“お得な情報”という言葉が提示されることになる。
よって、M_REASONデータベース280にユーザ側に提示したい言葉を記載しておけば、そのままではユーザ側に提示するには適していない言葉であっても、実際に提示されるときには、ユーザ側に提示するのに適した言葉で提示できるようにするといった制御を行えるようになる。
すなわち、番組を推薦する場合を考えると、番組のスコアリング(マッチング)には有効な番組を特徴付ける語であっても、その語自体が、例えば、成人向けの用語、一文字の語、メジャーでないキーワード、一般的過ぎて理由になりにくいキーワード、オススメ理由として成立していないキーワードなどであり、オススメ理由としてユーザに提示するには馴染まないような語である場合、そのような語を表示させない、または、他の語として表示させるといった、自由度の高い表示の制御を行うことが可能となる。
また、M_REASONデータベース280という、オススメ理由の表示を制御するためのデータベースを設けることにより、図12乃至図20に示したマスターデータベースに基づく表示とは異なる表示が行えるようになるため、例えば、形態素解析の結果、“恋い”、“恋”、“こい”などの全てのValueに対して、「恋愛好きに」といったオススメの理由の表示が可能となる。
このようなデータを管理するM_REASONデータベース280をマスターデータベース251で管理させることにより、上述したように、適切に、ユーザ側に提示する言葉を制御することができるといった効果の他に、以下のような効果もある。その効果について図22と図23を参照して説明する。
図22と図23においては、オススメ理由として、AttributeIDが“001”でCategoryIDが“1000”の言葉(検索言葉Aとする)、AttributeIDが“002”でPersonIDが“0000000001”の言葉(検索言葉Bとする)、AttributeIDが“002”でPersonIDが“0000000002”の言葉(検索言葉Cとする)、および、AttributeIDが“005”でKeywordIDが“0000000001”の言葉(検索言葉Dとする)を、ユーザ側に提示すると決定された場合を例に挙げて説明する。
図22を参照して、まず、M_REASONデータベース280が存在していないとき、従って、図12乃至図20(図17、図18を除く)のみが存在しているときの検索の仕方について説明する。検索言葉Aが検索される際、AttributeIDとして“001”が割り当てられているM_CATEGORYデータベース271(図12)内が検索される。そして、CategoryIDが“1000”である“スポーツ”という言葉が検索結果とされる。同様に、検索言葉Bが検索される際、AttributeIDとして“002”が割り当てられているM_PERSONデータベース272(図13)内が検索され、PersonIDが“0000000001”である“人物A”という言葉が検索結果とされる。
検索言葉Bと同様に、検索言葉Cも、M_PERSONデータベース272が参照され、“人物B”という言葉が検索結果とされる。そして、検索言葉Dは、M_KEYWORDデータベース275が参照され、“情報”という言葉が検索結果とされる。
この場合、4つの検索言葉を検索するのに、3つのデータベースを参照しなければならない。
これに対し、M_REASONデータベース280が存在する場合、図23を参照して以下に説明するように検索が行われる。検索言葉Aが検索される場合、M_REASONデータベース280が参照される。その参照される位置は、AttributeIDが“001”であり、ValueIDが“1000”のところである。その結果、“スポーツ”という言葉が検索結果とされる。同じように、検索言葉B乃至Dも、M_REASONデータベース280が参照されて、それぞれ検索結果が出される。
この場合、4つの検索言葉を検索するのに、1つのデータベースのみを参照すればよい。
このように、M_REASONデータベース280を設けることにより、検索を実行する際、複数のデータベースを参照する必要はなく、M_REASONデータベース280のみを参照すればよいので、検索に要する時間を短くすることができる。このことは、ユーザがオススメ画面を要求してから、そのユーザに対するオススメ画面を返すまでにかかる時間が短くなることを意味し、リアルタイムに返答を返さなくてはならないシステムにおいて、有効な手段である。
このように、マスターデータベース251には、EPGの作成、オススメ画面の作成に必要なデータが管理されている。
次に、ターゲットデータベース252(図11)について説明する。
ターゲットデータベース252は、オススメ画面を作成する際、ユーザの嗜好と番組とのマッチングを取るためのデータ、ユーザの嗜好をより詳細なものとするための学習機能を実現するためのデータなどから構成される。
図24に示したデータベースは、T_PERSON_TARGET_GENDERデータベース311であり、番組に出演する人物(Person)が、どのような性別(Gender)の人々に人気があるか等を数値化したデータを管理する。T_PERSON_TARGET_GENDERデータベース311は、PersonID、GenderID、および、Scoreを関連付けて管理する。PersonIDは、図13に示したM_PERSONデータベース272が管理するPersonIDと同じIDとされている。すなわち、例えば、PersonID“0000000001”は、“人物A”のことを意味する。
GenderIDは、図20に示したM_GENDERデータベース279が管理するGenderIDと同じIDとされている。すなわち、例えば、GenderIDが“001”は、“男性”のことを意味する。Scoreは、PersonIDに対応する人物は、GenderIDに対応する性別の人に対して、どの程度の数値(重み付け)を有するかを示す値である。例えば、人物Aが、男性に人気があるなら、数値を高くするまたは低く設定される。
数値が高く設定される場合、人気があるので、マッチングが行われるときに検出される可能性を高くするという意図があるときである。逆に、数値が低く設定される場合、人気があるので、沢山の番組に出ている、汎用すぎる等の理由から、マッチングが行われるとき、あまり重要な要素とならないようにするという意図があるときである。どちらに設定するかは、EPGを管理する管理者の考え、利用するユーザの特徴(どの性別のユーザが多いか、どの年代のユーザが多いかなど)、システムへの負荷などを考慮して設定されればよい。
なお、他のターゲットデータベースも、それぞれ、ターゲットとする要素に関わる数値を管理するが、その数値が高い値として設定されるか、低い値として設定されるかは、上述したようなことが考慮されて設定される。
図25に示したデータベースは、T_PERSON_TARGET_AGEデータベース312であり、番組に出演する人物(Person)が、どのような年齢(Age)の人々に人気があるか等を数値化したデータを管理する。T_PERSON_TARGET_AGEデータベース312は、PersonID、AgeID、および、Scoreを関連付けて管理する。このT_PERSON_TARGET_AGEデータベース312は、PersonIDは、図13に示したM_PERSONデータベース272が管理するPersonIDと同じIDとされている。
AgeIDは、図19に示したM_AGEデータベース278が管理するAgeIDと同じIDとされている。すなわち、例えば、AgeID“001”は、“0から4”歳のことを意味する。Scoreは、PersonIDに対応する人物は、AgeIDに対応する年齢の人に対して、どの程度の数値(重み付け)を有するかを示す値である。例えば、人物Aが、0から4歳(赤ちゃん)に人気があるなら、数値が高くまたは低く設定される。
図26に示したデータベースは、T_PERSON_VIEW_TYPEデータベース313であり、番組に出演する人物が、どのような視聴タイプに適しているか等を数値化したデータを管理する。T_PERSON_VIEW_TYPEデータベース313は、PersonID、ViewID、および、Scoreを関連付けて管理する。このPersonIDも、図13に示したM_PERSONデータベース272が管理するPersonIDと同じIDとされている。
ViewIDは、図15に示したM_VIEW_TYPEデータベース274が管理するViewIDと同じIDとされてる。すなわち、例えば、ViewID“001”は、“笑い刺激型”のことを意味する。Scoreは、PersonIDに対応する人物は、ViewIDに対応する視聴タイプに対して、どの程度の数値(重み付け)を有するかを示す値である。例えば、人物Aが、笑い刺激型である(お笑い番組に良く出る芸人)なら、数値が高くまたは低く設定される。
図27に示したデータベースは、T_PERSON_CHARACTERデータベース314であり、番組に出演する人物が、どのようなキャラクタ(特徴)を有しているか等を数値化したデータを管理する。T_PERSON_CHARACTERデータベース314は、PersonID、CharacterID、および、Scoreを関連付けて管理する。このPersonIDも、図13に示したM_PERSONデータベース272が管理するPersonIDと同じIDとされている。
CharacterIDは、図14に示したM_PERSON_CHARACTERデータベース273が管理するCharacterIDと同じIDとされてる。すなわち、例えば、CharacterID“001”は、“司会者系”のことを意味する。Scoreは、PersonIDに対応する人物は、CharacterIDに対応するキャラクタに対して、どの程度の数値(重み付け)を有するかを示す値である。例えば、人物Aが、バラエティ番組などで司会者をつとめることが多い司会者系であるなら、数値が高くまたは低く設定される。
図28に示したデータベースは、T_PRG_VALUデータベース315であり、所定の番組と、その番組に関連する事項を関連付けて管理する。T_PRG_VALUデータベース315は、ProgramID、Attribute、および、ValueIDを関連付けて管理する。ProgramIDは、各番組を識別するために各番組に割り当てられている識別子である。
Attributは、どのデータベースに対する特性であるかを示すデータである、AttributeIDで記載することも可能である。ValueIDは、図24に示したM_REASONデータベース280が管理するValueIDと同じIDとされてる。すなわち、例えば、AttributeIDが“002”(すなわち、AttributeとしてはPerson)で、ValueIDが“1000”は、“人物A”のことを意味する。このように、T_PRG_VALUEデータベース315は、所定の番組と、その番組に出演している人物(Person)や、その番組を特徴付けるキーワード(Keyword)などを関連付けるためのデータベースとして用いられる。
図29に示しデータベースは、T_PRG_VALUEデータベース316であり、番組自体の重み付けの数値を管理する。このT_PRG_VALUEデータベース316は、図28に示したT_PRG_VALUEデータベース315に、Scoreをさらに関連付けて管理する構成とされている。ただし、図29に示したT_PRG_VALUEデータベース316では、Attributeではなく、AttributeIDを管理する。
例えば、図29に示したT_PRG_VALUEデータベース316において、ProgramIDとして“1000000030000029”というIDが割り当てられている番組は、AttributeIDが“001”、ValueIDが“1000”に対して“0.65193365995972070000”という数値が与えられている。
スコアリングの計算のときに、このScoreの値が用いられるが、そのスコアリングの計算時には、AttributeIDとValueIDの組から一意にScore値が求められるため、AttributeIDとValueIDの組が、どのような語に関連付けられているかを判別する必要はないが、説明のために判別すると、AttributeIDが“001”、ValueIDが“1000”は、図21に示したM_REASONデータベース280を参照するに“スポーツ”である。よって、ここでは、ProgramIDとして“1000000030000029”というIDが割り当てられている番組は、“スポーツ”という要素に対しては、“0.65193365995972070000”という数値を有することになる。
このように、このT_PRG_VALUEデータベース316も、複数のAttributeIDを含むため、それぞれの要素を検出する必要がある場合、複数の対応するマスターデータベースを参照しなくてはならないが、M_REASONデータベース280を設けることにより、このM_REASONデータベース280のみを参照するだけで、必要な要素を検出することが可能となる。ただし、M_REASONデータベース280には、ユーザ側に提示するにはふさわしくないキーワードなどは削除されている(記載されていない)ため、必要に応じてM_REASONデータベース280を参照するようにしても、削除されている語は検出することはできないので、処理に必要ならば、M_REASONデータベース280以外のマスターデータベースを参照する必要がある。
図30に示したデータベースは、T_UM_VALUEデータベース317であり、ユーザの嗜好に関するデータを管理するために設けられている。T_UM_VALUEデータベース317は、MemberID、UMTypeID、AttributeID、ValueID、および、Scoreを関連付けて管理する。MemberIDは、ユーザ登録しているユーザに対して割り当てられた識別子である。UMTypeIDは、この要素は、何に基づいて設定されたものであるかを示す。“何に基づいて”とは、ここでは、登録、学習、フィルタリングに基づく場合が考えられる。
例えば、図30を参照するに、1行目のAttributeIDが“001”でValueIDが“1000”の要素は、図21のM_REASONデータベース280を参照するに、“スポーツ”という要素であるが、その要素を、ユーザが、自分は“スポーツ”が好きであると登録してあった場合には、UMTypeIDは“1”と設定される。
図30を参照するに、2行目のAttributeIDが“001”でValueIDが“1001”の要素は、図21のM_REASONデータベース280を参照するに、“スポーツ:野球”という要素であるが、その要素は、ユーザが良く視聴している番組を解析した結果、スポーツの中でも“野球”が好きであると判断され、その結果設定された要素である場合には、UMTypeIDは“2”と設定される。
図30を参照するに、3行目のAttributeIDが“002”でValueIDが“0000000001”の要素は、図21のM_REASONデータベース280を参照するに、“人物A”という要素であるが、その要素を、後述するフィルタリングの処理の結果、“人物A”が好きであろうと判断され、その結果設定された要素である場合には、UMTypeIDは“3”と設定される。
本実施の形態においては、このように、ユーザにオススメする番組を検出する際に用いられる要素は、ユーザ自身による登録により設定され、ユーザの嗜好を学習することにより設定され、さらに、フィルタリングの処理により設定される。このようにすることで、よりユーザの嗜好を的確に判断し、オススメの番組を提示できるようになる。例えば、ユーザ自身による登録だけに依存すると、あまり多くの要素を登録することができない。例えば、3万個の要素がある場合、その3万個の要素の中から、ユーザ自身が、自分に合う要素を登録するというのは、不可能なこと(可能であってもユーザに取っては煩雑な処理)となってしまう。
よって、例えば、“スポーツ”(AttributeIDが001でValueIDが1000)などという広い範囲のカテゴリーは設定できても、スポーツの中でも“野球”といった細かい設定はできない可能性がある。しかしながら、ユーザが“スポーツ”という要素しか設定していなくても、そのユーザが“野球”をよく視聴していれば、学習という機能により、“スポーツ:野球”(AttributeIDが001でValueIDが1001)の要素も設定されることになる。さらにフィルタという機能を設けることにより、後述するように、ユーザの嗜好に合っているはずと推測されるが、ユーザが登録もせず、学習の結果でも設定されないような要素も設定することが可能となる。
なお、このように登録、学習、フィルタという3つの処理で要素が設定されるわけだが、ユーザ自身が登録した要素の方が、他の処理で設定された要素よりも重要視され、学習により設定された要素の方が、フィルタという処理で設定された要素よりも重要視される方が好ましい。そのような重み付けに関することは、図30に示したT_UM_VALUEデータベース317のScoreの数値を変えることにより、制御することができる。
図22乃至図30を参照して説明したようなデータベースが、ターゲットデータベース252に管理されている。
ここで、T_PRG_VALUEデータベース315の作成について、図31のフローチャートを参照して説明する。図31に示したフローチャートに基づく処理は、EPGのデータが作成された際に行われる(放送する番組やその番組に出演する出演者などが決定し、EPGを作成するためのデータがそろった時点で行われる)。また、図31に示したフローチャートに基づく処理は、サーバ52のCPU201(図9)が実現する対象情報メタデータ管理機能237(図10)が実行する。または、管理者が手作業で行いデータを入力することも可能である。ここでは、CPU201が実行するとして説明する。他のフローチャートの処理も、断りのないかぎり、CPU201(CPU201が実現する機能)が実行するとして説明する。
ステップS31において、CPU31は、T_PRG_VALUEデータベース315に追加するデータを取得する。ステップS31において取得されるデータは、番組に出演する出演者、番組のキーワードなどの要素に対応するT_PRG_VALUEである。各要素は、主に、EPG、例えば、図6に示したEPGに表示される情報であり、そのために、EPGを作る時に必要とされるデータであり、そのEPGを作成する側から供給されるものである。
例えば、図32に示したようなEPGがユーザ側に提供される場合を考える。図32の左側に示したEPGでは、“番組A−1”という番組名と、その下に出演者として“人物A”と“人物B”が表示されている。さらに下側に、“情報”と“買い物”という2つのキーワードが表示されている。このようなEPGを表示させるのに必要な情報としては、図32の右側に示したように、まず、“人物A”というのを表示させるために、AttributeIDが“002”でValueIDが“0000000001”という情報が必要である。同じように、“人物B”、“情報”、および“買い物”という表示をさせるにの必要な情報としては、AttributeIDとValueIDの組み合わせの情報が必要である。
図32の図中右側に示したような情報が、ステップS31において取得されるわけだが、そのデータは、図28に示したT_PRG_VALUEデータベース315として提供されるため、対応するT_PRG_VALUEデータベース315内のデータを取得することにより行われる。ステップS32において、マップデータから、ステップS31において取得された各要素に対応する属性データと、その属性データに対応するスコアが取得される。マップデータとは、ターゲットデータベース252で管理されている各データベースのことである。
ステップS33において、出演者や出現キーワードのT_PRG_VALUEのスコアに、ステップS32において取得されたマップデータから取得されたスコアを乗算し、その値を属性データのスコアとして設定する。そして、ステップS34において、設定されたスコアが、T_PRG_VALUEデータベース316の1つの要素として追加、記憶される。要素が追加される際、その追加される要素には、属性に対応するAttributeIDが割り当てられる。また、その要素には、ValueIDとして、当該属性のマスターデータで定められている属性を一意に識別するIDが割り当てられる。
このようにして、図29に示したT_PRG_VALUEデータベース316が作成される。
次に、図30に示したT_UM_VALUEデータベース317の作成に関わる処理について説明する。図30に示したT_UM_VALUEデータベース317のところの説明で、T_UM_VALUEデータベース317の各要素は、登録、学習、またはフィルタといういずれかの処理により設定されたものであると説明した。ここではまず、図33に示したフローチャートを参照して、ユーザ自身の登録による要素の追加処理について説明する。T_UM_VALUEデータベース317の作成に関わる処理は、CPU201が実現する1つの機能であるユーザモデル管理機能235により実行される。
ステップS51において、CPU201は、T_UM_VALUEデータベース317に追加するデータを取得する。ステップS51において取得されるデータは、編集対象となっているユーザ(視聴者)の嗜好に関わる出演者、キーワードなどの各要素に対するT_UM_VALUEである。ステップS52において、マップデータから、ステップS51において取得された各要素に対応する属性データと、その属性データに対応するスコアが取得される。
ステップS53において、出演者や出現キーワードのT_UM_VALUEのスコアに、ステップS52において取得されたマップデータからの取得されたスコアを乗算し、その値を属性データのスコアとして設定する。そして、ステップS54において、設定されたスコアが、T_UM_VALUEデータベース317の1つの要素として追加、記憶される。要素が追加される際、その追加される要素には、属性に対応するAttributeIDが割り当てられる。また、その要素には、ValueIDとして、当該属性のマスターデータで定められている属性を一意に識別するIDが割り当てられる。
このようにして、ユーザ自身が登録した要素に対する処理が行われることにより図30に示したT_UM_VALUEデータベース317の一部が作成される。
次に、T_UM_VALUEデータベース317に、学習により要素が追加される場合の処理について、図34のフローチャートを参照して説明する。ステップS71において、処理対象となっているユーザが視聴した番組(録画予約した番組)に関するデータが、ログデータベース253(図11)から読み出される。ログデータベース253には、ユーザを識別するための識別子(MemberID)、そのユーザが視聴した番組を識別するための識別子(ProgramID)が、少なくとも関連付けられて管理されている。
ステップS71においては、所定のユーザが視聴した番組に関わるデータが取得されるわけだが、まず、処理対象とさているユーザのMemberIDが取得される。そして、そのMemberIDを基に、ログデータベース253からユーザが利用した番組のProgramIDが取得される。ProgramIDが取得されると、T_PRG_VALUEデータベース316が参照され、取得されたProgramIDに対応する、それぞれの要素毎に、T_PRG_VALUEが取得される。
ステップS72において、取得されたT_PRG_VALUEのスコアが、同一のAttributeID、ValueIDのT_UM_VALUEの要素に加算される。この処理について、図35を参照して説明を加える。ログデータベース253に、MemberIDが“200241723056783”、ProgramIDが“1000000030000029”というデータが残されている状況で、このデータが読み出されると、まず、同一のProgramIDを有する要素が、T_PRG_VALUEデータベース316から読み出される。図35に示した例では、AttributeIDが“001”、ValueIDが“1000”、Scoreが“1.65193365995972070000”という要素が読み出される。
次に、この読み出されたAttributeIDとValueIDが一致する要素が、T_UM_VALUEデータベース317内に存在するか否かが判断される。図35に示したように、一致する要素が存在する場合、その存在していると判断された要素のScore、図35に示した例では、“.84296419427714530000”が読み出される。その読み出されたScoreに、先に、T_PRG_VALUEデータベース316から読み出されているScore(この場合、“1.65193365995972070000”)が加算される。なお、単に加算されるだけでなく、所定の値が乗算される(重み付けが行われる)などするようにしても良い。
このように、ユーザが番組を視聴する(録画予約する)たびに、T_UM_VALUEデータベース317の各要素のScoreが変更される。すなわち、よりユーザの嗜好に近いものになるように、学習が行われていることになる。
図35に示した例では、T_UM_VALUEデータベース317に、T_PRG_VALUEデータベース316から読み出されたAttributeIDとValueIDが一致する要素が存在する場合を例に挙げたが、存在していない場合も考えられる。例えば、ユーザAが視聴した番組に“人物A”が出演していたが、その“人物A”という要素は、ユーザAに対応するT_UM_VALUEデータベース317には登録されていないこともある。
そのような場合、新たな要素がT_UM_VALUEデータベース317に追加される。図36を参照して、このような状況について説明を加える。
ユーザAが、番組Xを視聴し、その番組Xには、人物Aと人物Bが出演していた。人物Aは、ユーザAが好みであり、人物Aが出演していた番組は、よく視聴していたが、人物Bのことは知らなく、人物Bが出演している番組X以外の他の番組を視聴したことはなかった。このような状況の時には、ユーザAのT_UM_VALUEデータベース317には、人物Aに関するScoreAは既に存在しているので、そのScoreAに、新たな数値が加算され、ScoreA’とされる。
一方、人物Bに関する要素は、ユーザAのT_UM_VALUEデータベース317には存在していないため、新たに人物Bに対する要素が追加される。
ここでは、人物Aと同じ番組に出演していた人物Bに関する要素が追加されるとしたが、例えば、人物Aのキャラクタや視聴タイプなどの要素も追加される場合がある。また、人物Aのキャラクタや視聴タイプなどが、既に存在しているときには、そのScoreに、新たな値が加算されるなどして、その値が変化することはもちろんある。
例えば、ユーザAが視聴し、人物Aが出演していた番組Xは、バラエティ番組であっても、その人物A自体は、時代劇に出演することが多い人物であるような場合、人物Aのキャラクタとして、“時代劇”が関連付けられている(マッピングされている)。よって、ユーザAが視聴していた番組Xが、バラエティ番組であっても、上述したような処理が実行されるため、番組Xを視聴することにより、人物Aに関連付けられている“時代劇”という要素のスコア値があがり、次回から、“時代劇”もオススメ番組として推薦される可能性が高くなる。
また、人物Aが“たくましい”といった属性を有する場合、その“たくましい”といった属性を有する人物C(不図示)の要素がユーザAのT_UM_Valueデータベース317に追加される。もちろん、人物Aが“たくましい”といった属性を有する場合、かつ、ユーザAのT_UM_VALUEデータベース317に“たくましい”といった要素が存在している場合、その要素のScoreは、更新される。
さらに、ここでは、番組Xには、人物Aと人物Bが出演しているとしたが、例えば、人物Aのみが出演していた場合でも、同様なことが実行される。すなわち、人物Aと人物Bは、“時代劇”というキーワード(属性)で関連付けられている(マッピングされている)ような場合、人物Aしか出演していない番組Xが視聴された時点で、人物Aにマッピングされている人物Bが読み出され、その人物Bの要素が追加されることになる。
すなわち、このような学習が行われることにより、この場合、番組Xの属性や人物Aの属性に関連付けられている要素も、新たに、T_UM_VALUEデータベース317に追加される、または、その要素のScoreが更新される。
このように、ユーザが録画予約や視聴などを行うことにより、Score値は更新され、新たな要素が追加される。よって、徐々に、ユーザの嗜好に関するデータが、サンプル数が増えることにより詳細なものとなり、そのようなデータを用いて行われるオススメ番組の検索を、よりユーザに適した番組(ユーザが求める番組)を検索することができるものとすることができる。
図37は、このような学習の処理を行わない場合と、行った場合とを比較するために作成したグラフである。グラフAは、属性によるオススメを行った時を示し、グラフBは、詳細メタデータのみによりオススメを行った時を示す。図37に示したように、あまり時間が経過していない初期段階では、属性によるオススメを行う方(グラフA)が、学習度が高く、一定の時間が経過した段階では、詳細メタデータのみによりオススメを行う方(グラフB)の方が、学習度が高いといった結果が得られる。
この結果を考慮すると、ユーザ登録して間もないユーザに対しては、学習という処理を行う方が、より早い時期に、学習度を高めることができ、ユーザの嗜好のデータの信頼性を高めることができる。そして、所定の時間が経過した後(所定の学習度に達成した後)は、学習をやめる(または、学習の回数を少なくする)などした方が好ましい。
いずれにしても、学習を行うことにより、より早い時期に、ユーザの嗜好に関する、信頼性の高いデータを作成することができる。よって、より早い時期に、適切にユーザの嗜好に適した番組をオススメすることができるようになり、ユーザが満足するような結果を提供することが可能となる。よって、登録したユーザが、離れてしまう(脱会する)といったようなことを防ぐことが可能になる。
ユーザの嗜好に関するデータを、学習により収集するといった方法の他に、ユーザ自身で、登録するといった方法があることは既に上述した。これらの方法は、よりユーザの嗜好を正しいものとすることが1つの目的としてある。そこで、収集されるデータ(要素)についてだが、この場合、テレビジョン放送として放送される番組内から、ユーザの嗜好に合った番組をオススメするというのが1つの目的としているため、主に、番組の種類、番組に出演する出演者などに関する要素が収集される。
もちろん、このような要素だけでも良いが、さらに、ユーザのライフスタイルに関する情報を収集し、そのような情報に基づく要素も考慮して番組の推薦が行われるようにしても良い。ライフスタイルとは、例えば、日中はテレビジョン放送を視聴しない等である。しかしながら、このような、ある意味、ユーザのプライバシーに関わることは、また、ユーザに取っては、番組の推薦にどのような関連があるのか直接的に導き出せないプライバシーな情報を、簡単に提供することを快くは思わないユーザもいると考えられる。
そこで、このような情報は、アンケート形式や占い形式で、ユーザ側には、プライベートな情報を提供していると感じさせないような形式で収集する。このようにすることで、ユーザは、ゲーム感覚でプロファイルを登録することができ、そのようなプロファイルを管理する(収集する)側(この場合、サーバ52、および管理者)は、プロファイルを収集しやすくなるといった効果を望むことができる。
このようなライフスタイルといった情報も、オススメ番組の検索が実行される際に用いられる要素とすることにより、よりユーザに適した番組を推薦することが可能となる。
次に、T_UM_VALUEデータベース317に対するフィルタリング処理(またはマイニング(mining)処理)について説明する。このフィルタリング処理は、主に図8に示したオススメ画面のうち、理由表示部155の“同じ番組を録画した人の興味”という項目を表示させるために行われる処理である。このような表示を行うのは、以下のような状況、理由からである。
図38を参照して説明する。例えば、ユーザAが、番組Xを録画予約し、ユーザBも番組Xを録画予約したとする。ユーザAもユーザBも、番組Xに対して興味があると考えられる。例えば、その番組Xが、お笑い番組だとすると、ユーザAとユーザBは、お笑い系が好みであると考えられる。
ユーザBは、お笑い系に属する番組Zも録画予約している。番組Xには、人物Aが出演し、番組Zには、人物Bが出演している。このような場合、番組Zや人物Bは、ユーザAが行った録画予約のログ内やユーザAの嗜好データには含まれていないが(従って、オススメ番組として推薦されることはないが)、お笑い系の好きなユーザAは、同じお笑い系に属する番組Zや人物Bのことも好みであると考えられる。換言すれば、ユーザAは、好みであるはずの番組Zや人物Bのことを単に知らないだけとも考えられる。
そこで、番組Xを録画予約したユーザBが録画予約した番組Z、および、番組Zに出演する人物Bが、ユーザAに推薦されるようにする。このようにすれば、ユーザA側としては、その時点まで認識していなかった番組Zや人物Bのことを、新たに認識することができる。認識していなかった新たな情報が提示されるということは、ユーザ側にとって、有意な情報であり、サーバ52から提供される情報の信頼性を高めることができると考えられる。
このようなことは、従来でも、似たようなことは行われていた。例えば、書籍を販売しているサイトにおいて、購入者Aが書籍Aを購入した場合、同じくその書籍Aを購入した購入者Bが購入した書籍Bを、購入者Aに情報として提供するといったことは行われていた。このような場合、購入者Aの嗜好に関しては考慮されておらず、単に、購入者Aより前の時点で書籍Aを購入した購入者Bが存在し、その購入者Bが購入したのが書籍Bであるので、その書籍Bがオススメされるという結果になっていた。
ここで、従来行われていたオススメ(フィルタリング処理)と、本実施の形態で行われるオススメ(フィルタリング処理)を比較し、その違いを説明する。図39は、従来行われていたフィルタリング処理について説明するための図である。図39に示したように、ユーザA乃至ユーザZが、視聴した番組(コンテンツ)の履歴が管理されている状況を考える。例えば、ユーザAにコンテンツをオススメする場合、ユーザB乃至ユーザZから構成されるユーザグループの中から、ユーザAと同じコンテンツを沢山視聴した人、すなわち、コンテンツの利用の相関度が高いユーザが検索される。
そして、相関度が高いとして検索されたユーザが利用したコンテンツの中で、ユーザAがまだ利用したことがないコンテンツが、オススメとしてユーザAに提示される。
このようにしてユーザ側に情報を提示する従来の方法の場合、過去に相関度の高い人が利用したコンテンツ(番組)しかオススメできないといった問題があった。
図40は、本実施の形態において行われるフィルタリング処理について説明するための図である。図40に示したように、ユーザA乃至ユーザZが、利用したコンテンツの履歴が管理されている状況を考えるが、履歴の中には、各コンテンツのメタ情報も含まれている。さらに本実施の形態においては、コンテンツレポジトリも管理される。コンテンツレポジトリとは、ここでは、ターゲットデータベース252で管理されているデータのことである。
例えば、ユーザAにコンテンツをオススメする場合、ユーザB乃至ユーザZから構成されるユーザグループの中から、ユーザAと同じメタ情報(例えば、出演者やキーワードなどを情報として含んでいる)を沢山利用した人、すなわち、メタ情報の利用の相関度が高いユーザ(すなわち、嗜好が似ていると判断されるユーザ)が検索される。そして、相関度が高いとして検索されたユーザが利用したメタ情報の中で、ユーザAが、まだ利用したことがないメタ情報、または、利用頻度が低いメタ情報がさらに検索される(従って、ユーザA自体は、認識していない出演者やキーワード)。そして、その検索されたメタ情報を有するコンテンツ(番組)が、コンテンツレポジトリから読み出され、そのコンテンツが、オススメとしてユーザAに提示される。
このようにしてユーザ側に情報を提示することにより、例えば、再利用されることのないコンテンツや、期間限定で供給されるコンテンツなどの推薦が行えるようになると共に、通常のコンテンツなどの推薦も、より適切に行えるようになる。さらに例えば、コンテンツの推薦などにより得られたキーワードの相関度を用いて、他のコンテンツの推薦等を行うことも可能となる。
図41に示したフローチャートを参照して、本実施の形態におけるフィルタリング処理について説明する。ステップS91において、ユーザ間の相関度の計算が行われる。このユーザ間の相関度の計算は、次式(1)に基づいて行われる。
式(1)において、Xνは、Valueνに対するユーザXの評価(Score)を示し、XAは、ユーザXの評価の平均値を示す。同様に、Yνは、Valueνに対するユーザYの評価を示し、YAは、ユーザYの評価の平均値を示す。式(1)に基づく計算を行うことにより、ユーザXとユーザYの相関度(T_UM_SIMILARITY)を求めることができる。式(1)における各値は、T_UM_VALUEデータベース317で管理されている値が代入される。
このような計算が、ステップS91において行われると、ステップS92において、予測ベクトルの算出が行われる。ユーザXのValueνに対する予測ベクトルの算出は、次式(2)に基づいて行われる。
式(2)において、XAは、ユーザXの評価の平均値を示し、Nは、Valueνに対するユーザXとの相関度を持つユーザNの評価を示し、NAは、ユーザNの評価の平均値を示し、SimXNは、ステップS91において算出された値であり、ユーザXとユーザNの相関度を示す。
このようにして算出された予測ベクトルは、T_UM_VALUEデータベース317に記憶される。図30に示したT_UM_VALUEデータベース317のところで説明したように、UMTypeIDの“3”は、このようなフィルタリング処理により算出された予測ベクトルであることを示している。
ステップS91において算出された相関度を管理するデータベースを、記憶部208(図11)に設けるようにしても良い。また、ステップS92において算出された予測ベクトルの値は、T_UM_VALUEデータベース317に記憶されるようにしたが、記憶されない構成とすることも可能である。相関度や予測ベクトルは、会員登録しているユーザの内の1人が、録画予約や視聴をした時点で新たなデータが追加された(新たに計算の対象となるデータが追加された)ことになり、その結果、基本的に算出し直さなくてはならなくなる。
このようなことを考慮すると、必要が生じた時点で算出し、常に、最新の予測ベクトルの値を用いることができるようにしておいた方が良いとも考えられため、記憶させないようにすることも可能である。よって、相関度を管理するためのデータベースを設けなかった場合や、予測ベクトルの値をT_UM_VALUEデータベース317に記憶させるようにしなかった場合、必要に応じて、例えば、ユーザにオススメ画面を提供する時点で、相関度や予測ベクトルを算出するようにすればよい。
また、相関度や予測ベクトルを事前に記憶させるようにした場合であっても、その記憶されているデータを、全て再度算出し直すといったようなことはせず、新たにログが生成されたユーザに対してのみ(そのユーザのデータに対してのみ)、相関度や予測ベクトルを算出するといった処理を行うようにしても良い。このようにすれば、相関度や予測ベクトルを算出するために要する時間を短縮することができる。また、サーバ52への負担を軽くすることができる。
図41に示したフローチャートの処理のように、予測ベクトルを算出するようにしても良いが、例えば、1万人の会員が存在すると、約1万×1万の計算が最低限必要となる。会員数が増せば、それだけ、計算回数が増加し、システムにかかる負担が増大する。そこで、システムにかかる負担を軽減するとともに、軽減しても適切なフィルタリング処理が行えるようにする(図41に示したフローチャートの処理を実行したときとほぼ同様の効果が得られるようにする)ための、他のフィルタリング処理について、図42のフローチャートを参照して説明する。
図42に示したフローチャートの処理では、ステップS101においてユーザ間の相関度が計算され、ステップS102において、ユーザグループの生成の処理が行われ、ステップS103において、予測ベクトルの算出が行われる。図41に示したフローチャートの処理と比較すると、図42に示したフローチャートの処理では、ステップS102におけるユーザグループの生成処理という処理が追加された構成とされている。このユーザグループの生成処理について、図43のフローチャートを参照して説明する。なお、ステップS101における相関度の計算に関わる処理は、ステップS91(図41)における相関度の計算に関わる処理と基本的に同様である。
ステップS111において、全ユーザが各グループに属しているとしてグループをユーザの人数分だけ生成する。すなわち、構成人数が1人のグループが、ユーザ数分だけ生成される。例えば、1万人のユーザが存在していると、構成人数が1人のグループが1万グループ作成される。
ステップS112において、相関度データベース(不図示)が参照され、相関度の高い順にソート処理が実行される。このステップS112における処理においては、ステップS101(図42)において算出された相関度が用いられる。相関度データベースが、設けられる構成とされている場合、ステップS101において算出された相関度が、相関度データベースに記憶され、その記憶された相関度が用いられてステップS112の処理が実行される。一方、相関度データベースが設けられない構成とされた場合、ステップS101において相関度が算出される毎に、ソート処理が繰り返され、ステップS101における相関度の処理が終了した時点で、ステップS112におけるソートの処理も終了される。
ステップS111における処理と、ステップS112における処理は、時間的に前後関係を有しなくてはならない処理ではないため、ステップS112における処理が、ステップS111における処理より前の時点で行われても良いし、ステップS111の処理とステップS112の処理が、並列的に処理が行われても良い。
ステップS112までの処理が終了されると、ステップS113に処理が進められる。ステップS113において、相関度の高い順に、計算対象とされている2人のユーザが属するグループがまとめて1つのグループとして設定される。この処理により、相関度がほぼ同じユーザ同士が、1つのグループとして設定されることになる。例えば、1万のユーザ存在し、1万のグループが設定されているときには、このステップS113における処理で、半分の5千グループに設定し直されることになる。
ステップS114において、設定し直されたグループ数は、最終的に求めたいグループ数以下になったか否かが判断される。ステップS114において、最終的に求めたいグループ数以下になったと判断されるまで、ステップS113とステップS114の処理が繰り返される。
例えば、最終的に求めたいグループが2千グループ以下である場合、1万グループが存在しているときを考える。まず、1回目のステップS113における処理で5000グループ(1グループは、2名で構成される)とされ、2回目のステップS113の処理で2500グループ(1グループは、4名で構成される)とされ、3回目のステップS113の処理で1250グループ(1グループは、8名で構成される)とされる。この時点で、2000グループ以下となるので、ステップS114の処理で、最終的に求めたいグループ数に達したと判断され、ユーザグループの生成処理は終了される。
ステップS113とステップS114における処理は、所定のグループ数以下にユーザグループを設定するために行われる処理であり、上述したような、存在するグループ数を半分のグループ数にするという処理を繰り返す方法に限定されるものではない。例えば、全ユーザ数(ステップS111において作成された全グループ数)を、目標としているグループ数で除算し、その結果得られた数値を、1グループの人数として設定し、相関度の高い順に、その設定された人数毎に、グループを設定し直すようにしても良い。
例えば、1万のグループが存在し、2千のグループ数以下にしたい場合、まず、1万を2千で除算し、5という結果を得る。よって、1グループを5人と設定し、5人で構成されるグループを、相関度の高い順に作成すれば、2千グループが生成されることになる。
ユーザグループをどのような方法を用いて生成しても良いが、相関度の近いユーザ同士が、1つのグループとされ、グループ数の総数が、所定の数以下になれば良い。このグループの最終的な数は、システムへの負荷などを考慮して設定されればよい。
このようにして生成されたグループ毎に、予測ベクトルが、ステップS103において算出される。このステップS103における処理は、基本的に、ステップS92(図41)の処理と同様であるが、ステップS92においては、例えば、ユーザXとユーザYというように、所定のユーザと他のユーザとの間の予測ベクトルが求められる処理であった。
これに対し、ステップS103においては、例えば、グループXとグループYというように、所定のグループと他のグループとの間の予測ベクトルが求められる。このようにした場合、例えば、ユーザXの予測ベクトルは、そのユーザXが属するグループXとグループYの予測ベクトルとされる。
または、ステップS103においては、例えば、グループXに属するユーザXと、そのユーザXが属していない他のグループYというように、所定のユーザと所定のグループとの間の予測ベクトルが求められるようにしても良い。
いずれの方法によっても、グループという概念を用いて予測ベクトルを算出する方が、ユーザ同士で予測ベクトルを求める方法よりも、その算出にかかる処理を軽くすることができるため、算出にかかる時間を短縮し、システムにかかる負荷を低減させることができる。
図44は、他のフィルタリング処理について説明するためのフローチャートである。図44に示したフローチャートの処理も、グループ化を前提としているが、相関度を用いない点が、図42に示したフィルタリング処理と異なる。ステップS131において、ユーザグループの生成が行われる。このステップS131におけるユーザグループの生成の処理は、例えば、ログデータベース253(図11)が参照されて行われる。ログデータベースが参照され、近々に同じ情報を利用したユーザ同士がグループ化される。このようにすれば、このフィルタリング処理が実行されている時点で、同じような興味を持っているユーザ同士をグループ化できると考えられる。
この際、1グループに属する人数などは、予め設定されている、または、上述したような方法(例えば、全ユーザ数を、目標とするグループ数で除算する)により設定される。その設定されている人数で1グループが構成されるように、グループ化の処理が実行される。なお、このグループ化の処理は、管理者が手作業により行うことも当然可能である。
このようなグループ化(ユーザグループの生成)が終了されると、ステップS132において予測ベクトルが算出される。この予測ベクトルの算出は、ステップS103(図42)における処理と、基本的に同様に行われるので、ここでは、その説明を省略する。この場合、グループに属するユーザの各Valueに対する平均値が、そのグループに属する全ユーザに対する予測ベクトルとして設定される。
グループ化や、予測ベクトルの算出を、必要がある時に、その時点で行うのではなく、事前に実行し、記憶させるようにした場合、その記憶されているデータを再度算出し直すといったようなことはせず、新たにログが生成されたユーザに対してのみ(そのユーザのデータに対してのみ)、処理を実行するようにしても良い。このようにすれば、予測ベクトルを算出するために要する時間を短縮することができる。また、サーバ52への負担を軽くすることができる。
図41乃至図44に示した各フローチャートの処理のうち、いずれの処理に基づいて予測ベクトルが求められても良い。
なお、上述したフィルタリングの処理において、計算に利用する相関度(SimXN)に関して、所定の値以上の相関度を持つユーザのみ計算に用いる(閾値を設定し、その閾値以上の相関度を有するユーザのみを計算対象のユーザに設定する)ようにしても良い。このようにすれば、予測ベクトルの算出にかかる時間を短縮することができ、また、算出のためにかかる負荷を軽減させることができる。
また、予測ベクトルが所定のユーザに適用される際、そのユーザが有していない全てのValueに関する要素を、T_UM_VALUEデータベース317に登録するのではなく、上位の所定数のみを登録するようにしても良い。このように、登録される要素に制限を加えることにより、データベースのリソースの節約、計算速度の向上をはかることが可能となる。
仮に、予測ベクトルの情報のみを用いて、ユーザにオススメの番組を推薦するような場合、ユーザが既に有しているValueに関しても予測ベクトルを求め、オススメ番組の検索などに用いることができる。ユーザの現在のプロファイル(学習や登録により求められたプロファイル)が、“本来なら、このようになるのではないか”、“将来的には、こういう風になるはず”といったような観点からのオススメが可能となる。
このように、本実施の形態においては、ユーザ側に推薦する番組を検索する際の情報(T_UM_VALUEデータベース317のデータ(要素))は、登録、学習、フィルタリングといった、それぞれの処理が総合的に実行されることにより作成される。
次に、作成されたこれらのデータベースを用いて、推薦する番組の検索(オススメ画面の作成)について説明する。図45のフローチャートを参照し、所定のユーザに対して推薦する番組を検索し、その検索された番組の情報を取得するまでの処理について説明する。
ステップS161において、ユーザがログインしてくるため、そのログインに対応するための処理が実行される。このログインに関わる処理は、ユーザ管理機能232(図10)において行われる。ユーザは、ユーザ端末53(図3)を用いて、自己のユーザIDとパスワードをサーバ52に対して送信する。その送信されたユーザIDとパスワードは、サーバ52の情報通信機能236(図10)の制御により受信され、ユーザ管理機能232に供給される。ユーザ管理機能232は、供給されたユーザのユーザIDとパスワードの組が、ユーザデータベース254に記憶されているか否かを判断する。
供給されたユーザIDとパスワードの組が、ユーザデータベース254に記憶されていると判断された場合、ログインの処理は正常に行われることになり、ステップS162に処理が進められるが、ログインの処理が正常に行われなかった場合は、ステップS162に処理が進められることなく、エラー処理、例えば、ログインを要求してきたユーザに対して、ログインが正常に行われなかったことを示すメッセージを送付するなどの処理が実行され、図45に示したフローチャートの処理は終了される。
ステップS162において、対象ユーザモデルが取得される。対象ユーザモデルの取得とは、T_UM_VALUEデータベース317から、ログインしてきたユーザに関わる情報が読み出されることを意味する。ステップS161におけるログインの処理で、ログインしてきたユーザが判別されているため、MemberIDを取得することができる状態とされている。そこで、ログインしてきたユーザのMemberIDを、ユーザデータベース254から読み出し、そのMemberIDに対応するデータが、T_UM_VALUEデータベース317から読み出される。
このステップS162以降の処理は、情報選別機能233により行われる。ログインの処理を実行するのは、上述したようにユーザ管理機能232であるが、ユーザ管理機能232は、ログインの処理を実行した結果、取得したMemberIDを、情報選別機能233に供給する。情報選別機能233は、供給されたMemberIDを用いて、ステップS162における処理を実行する。
情報選別機能233は、ステップS162の処理を実行すると共に、並列的に、ステップS163の処理も実行する。ステップS163において、ユーザ情報から、対象情報を絞る必要があるか否かが判断される。“ユーザ情報”とは、ここでは、ユーザが住んでいる地域、ユーザが有する視聴権限、ユーザの年齢や性別などである。また、“対象情報を絞る必要があるか否か”とは、例えば、一部地域では放送されないような番組が存在するような場合、ログインしてきた(処理対象とされているユーザ)が、その地域に住んでいるか否かが判断され、住んでいる地域に放送される番組のみが提供されるように、情報を選択することを意味する。
視聴権限により対象情報を絞る必要がある場合、例えば、有料放送を視聴する権限があるか否か、そのような権限があると判断されたときであっても、どのような範囲で権限を有しているのか等が判断され、対象情報の絞り込みが行われる。また、年齢により対象情報を絞る必要がある場合、例えば、成人向けの番組が、成人でないユーザに対してはオススメされるようなことがないように、成人でないユーザがログインしてきたときには、対象情報の絞り込みが行われる。
性別により対象情報を絞る必要がある場合、例えば、男性向けの番組を女性に対してオススメされることがないようにした方が好ましいときには、対象情報の絞り込みが行われる。しかしながら、性別により対象情報を絞る必要性は、他のユーザ情報により対象情報を絞る必要性より低く、必ずしも設けなくてはならない対象ではない。
ステップS163において、ユーザ情報から対象情報を絞る必要があると判断された場合、ステップS164に処理が進められ、対象情報を絞る必要がないと判断された場合、ステップS164の処理はスキップされ、ステップS165に処理は進められる。ステップS164において、情報データの選別が行われる。この情報データの選別は、ログインしてきたユーザにオススメ番組として推薦できないような番組を排除するために行われる。排除されて残った番組が、ステップS165における処理の対象とされる。
一方、ステップS164の処理がスキップされてステップS165に処理が進められた場合は、情報データを選別する必要がないので、全ての番組が処理対象とされる。ステップS165において、処理対象とされている番組の情報メタデータが取得される。この情報メタデータは、T_PRG_VALUEデータベース316(図29)で管理されているデータのことである。
ステップS165において、処理対処とされた番組の情報メタデータが取得されると、ステップS166において、推薦対象情報の得点計算および選別の処理が実行される。この処理は、ステップS162で取得された対象ユーザモデル(T_UM_VALUEデータベース317)のScoreと、ステップS165において取得された情報メタデータ(T_PRG_VALUEデータベース316)のScoreが用いられて行われる。例えば、ベクトル演算などの得点計算方法により値が算出され、その値を元に、番組のランキングが付けられる。この処理により演算された得点は、例えば、図8に示したオススメ画面内のオススメ度表示部156に表示される得点とされる。
このようにして、各番組の得点が演算され、その得点の高い順にランキング付けが行われると、ステップS167に処理が進められる。ステップS167において、推薦対象とされた番組の情報の取得が行われる。推薦対象とされた番組とは、ランキングの上位に位置する、所定数の番組(例えば、10番組)である。その所定数の番組の情報が取得されるわけだが、この取得は、情報選別機能233により行われる。情報選別機能233は、ランキングの上位に位置する番組の識別子(ProgramID)を取得する。
そのProgramIDを元に、出演者(PersonID)やキーワード(KeywordID)といった番組に関する情報を取得する。このようにして、複数の番組の情報が順次取得される。
ユーザにオススメとして推薦される複数の番組の情報が取得された後の処理について、図46のフローチャートを参照して説明する。ステップS181において、推薦情報の取得が行われる。この処理は、ステップS167(図45)のことである。ステップS182において、推薦情報の推薦度を算出する際に、算出対象とされたValue(ValueIDにより識別される要素)に関して、各Value毎のスコアでソート処理が実行される。
ステップS183において、ソートされた上位のValueに対して、そのValueに関連付けられているAttributeIDとValueIDの組を用いて、M_REASONデータベース280(図21)から、オススメ理由が取得される。例えば、ソートされた結果、上位のValueとされたAttributeIDが“001”、ValueIDが“1000”であった場合、“スポーツ”というオススメ理由が取得される。
ステップS184において、ReasonTypeの表示上限個数と、ReasonType毎に指定された条件を満たしているか否かが判断される。ここで、ReasonTypeに関わる事項について説明する。ReasonTypeとは、図8に示したオススメ画面のうち、理由表示部155に表示される理由(Reason)の個数などを制限するために設定されているものである。図47にReasonTypeを設定するためのデータを示し、図48に各ReasonType毎の表示個数を設定するためのデータを示す。図47や図48に示した表示個数を制御するためのデータに基づく処理は、例えば、情報選別機能233の1機能として組み込まれ、実行される。
図47に示したデータのうち、1行目は、ReasonTypeを指定するデータであることを宣言するため、そして、2行目以降のデータ形式を規定するためのデータである。2行目以降のデータにおいて、“Normal”は、UMTypeを示し、図30に示したT_UM_VALUEデータベース317の説明においては、UMTypeID=“2”と記載した事項と同じ意味合いを有する。すなわち、“Normal”は、学習により登録された要素であることを示す。
“Prior”は、図30に示したT_UM_VALUEデータベース317の説明においては、UMTypeID=“1”と記載した事項と同じ意味合いを有する。すなわち、“Prior”は、ユーザ自身が登録した要素であることを示す。さらに、“Expected”は、図30に示したT_UM_VALUEデータベース317の説明においては、UMTypeID=“3”と記載した事項と同じ意味合いを有する。すなわち、“Expected”は、フィルタリング処理により登録された要素を意味する。
2行目以降は、同一の形態でデータが記載されているので、2行目を例に挙げてそのデータについて説明する。2行目には、“ReasonType.Normal.Category=4”との記載がある。まず、“ReasonType”は、その行のデータがReasonTypeを設定するものであることを宣言している。次の“Normal”は、UMTypeを示している。そして、“Category=4”は、“Category”は、“4”というReasonTypeに属することを示している。まとめると、2行目の記載が意味するものは、この場合、学習により登録され、Attributeとして“Category”に属するものは、ReasonTypeが“4”と設定されることを示している。
図48は、このようなReasonType毎のReasonType表示個数を設定するためのデータである。2行目の“#[0]登録キーワード、人物(合計5件以内)”という記載を例に挙げて、図48に示したデータについて説明する。“#[0]”は、ReasonTypeが“0”の内容を示すデータが、2行目には記載されていることを示している。“#[0]”に続く“登録キーワード、人物(合計5件以内)”という記載は、“登録キーワード、人物”という項目が、理由表示部155に表示される場合、この項目に対応するキーワードや人物は、合わせて5件以内しか表示してはいけないという規定である。換言すれば、この場合、Attributeが“Keyword”や“Person”であるReason(図21)は、合計5件までしか、この項目の欄には表示させてはいけないという制限が規定されている。
図47と図48に示したデータにより、図8に示したオススメ画面内の理由表示部155の表示に制御が加えられることになる。ここで、オススメ画面の理由表示部155の表示とあわせて、図47と図48に示したデータについての説明をさらに加える。まず、ステップS183における処理において、AttributeIDとして“001”、ValueIDとして“1000”が取得されたとする。AttributeID“001”、ValueID“1000”の組をM_REASONデータベース280(図21)を参照すると、“スポーツ”という言葉が関連付けられているため、オススメ理由(Reason)として、“スポーツ”という言葉がユーザ側に提示されるとして決定される。
さらに、AttributeID“001”、ValueID“1000”の組を、T_UM_VALUEデータベース317(図30)を参照して検出すると、UMTypeIDが“1”であることが分かる。UMTypeID“1”は、UMTypeとしては“Prior”である。また、AttributeID“001”は、M_CATEGORYデータベース271(図12)に割り振られたIDであるため、Attributeとしては“Category”であることが分かる。ここまでの処理で、オススメ理由として表示させようとしている“スポーツ”という言葉は、“Prior”であり、“Category”であることが分かる。
図47を参照するに、“Prior”、“Category”の組み合わせは、12行目に存在する。12行目の記載より、ReasonTypeが“1”であることが分かる。そこで、図48のデータを参照するに、ReasonType=1については、4,5行目に記載がある。4行目の記載より、“登録ジャンル”という項目の欄に表示されることがわかる。また、この項目には、1件しか表示してはいけないという規定になっていることが分かる。
結果として、この場合、理由表示部155には、
登録ジャンル:「スポーツ」
といった表示がされることになる。
なお、このような処理が行われた後に、“Prior”、“Category”、および、ReasonType“1”のValueがステップS183で取得された場合、既に、“スポーツ”という言葉が割り当てられているので、その取得されたValueは、処理対象とはならず破棄される。また、ステップS182において、ソートをかけているため、破棄されるValueは、常に、既に処理済みのValueよりも低い値を有するものであるため、結果として、ユーザに提示されるのは、常に、Valueが高いものだけになる。
この説明は、ステップS183とステップS184の処理についての説明であるが、実際に、上述したような順番で、データベースなどが参照されつつ行われる必要はない。すなわち、ステップS183の処理が実行される前の段階で、例えば、UMTypeIDなどは判断されているため、または、判断されるようにすれば、ステップS183,S184の処理においてT_UM_VALUEデータベース317を再度参照する必要性はない。よって、適宜、処理の重複がないように、各処理が実行されれば良く、どのタイミングで、どのようなデータベースが参照されるか等は上述した説明に限定されるものではない。
このように図47と図48にそれぞれ示したデータに基づく制御により、ステップS184(図46)の判断が行われる。ステップS184において、ReasonTypeの表示上限個数(図47に示したデータにより制限が加えられる)と、ReasonType毎に指定されている条件(図48に示したデータにより制限が加えられる)を満たしていると判断されるまで、ステップS183とステップS184の処理が繰り返され、満たしていると判断されると、図46に示したフローチャートの処理は終了される。
すなわち、図46に示したフローチャートの処理が終了されると、ユーザ側にオススメ画面を提示するためのデータがそろったことになるので、そのそろえられたデータが、ユーザ側にユーザ端末53に送信される。
ここで、さらに、ステップS183における処理について説明を加える。ステップS183においては、M_REASONデータベース280が参照される。例えば、AttributeIDとして、“005”が、ValueIDとして“0000000006”が取得された場合を考える。このAttributeIDとValueIDの組み合わせと関連付けられているのは、図16のM_KEYWORDデータベース275を参照すると、“エロティック”という言葉であることが分かる。しかしながら、既に説明したように、この“エロティック”という言葉は、ユーザ側に提示する言葉としてはふさわしくないと判断されているため、M_REASONデータベース280(図21)には記載されていない。
よって、ステップS183における処理で、AttributeID“005”、ValueID“0000000006”の組が取得されたとしても、オススメ理由としてM_REASONデータベース280から読み出されるデータはないことになる。このような場合、ステップS184の処理を行う必要がないので、行わないで、次の要素(Value)に対してステップS183の処理が実行されるようにしても良い。いずれにしても、M_REASONデータベース280に記載がないReasonは、ユーザ側には提示されないという制御が行われることになる。
図46に示したフローチャートの処理では、図21に示したようなM_REASONデータベース280が参照されるとして説明した。しかしながら、図21に示したようなM_REASONデータベース280を有してなく、図17に示したM_KEYWORD_1データベース276を有しているような場合でも、図49のフローチャートの処理に従えば、基本的に、図46に示した処理を実行したときと同様の処理を行うことができる。
図49におけるステップS201、ステップS202、および、ステップS204の処理は、図46のステップS181、ステップS182、および、ステップS184の処理と基本的に同様であるので、その説明は省略する。ステップS203において、ソートされた上位のValueに対して、当該マスターテーブルが参照され、当該ValueIDが用いられて、オススメ理由(Reason)が取得される。この処理も、基本的には、図46に示したフローチャートのステップS183の処理と同様であるが、参照されるデータベースが異なる。
ステップS203においては、M_KEYWORD_1データベース276が参照される。例えば、ValueID(この場合、KeywordIDになる)が“0000000008”の場合、M_KEYWORD_1データベース276内のReasonの欄が参照され、“お得な情報”というのが読み出される。また、例えば、ValueIDが“0000000006”の場合、M_KEYWORD_1データベース276内のReasonの欄が参照されるが、空欄(NULL)とされているため、読み出されるデータなく、このValueID“0000000006”に対する処理は終了され、次のValueIDに対する処理に移行される。
このように、M_KEYWORD_1データベース276を用い、図49に示したフローチャートの処理を実行した場合も、ユーザに提示される言葉として不適切な言葉は、提示されない、または、他の言葉に変換されて提示されるように制御することが可能である。
M_KEYWORD_1データベース276の代わりに、M_KEYWORD_2データベース277(図18)が備えられている場合、図50のフローチャートに基づく処理が実行される。この場合、ステップS211、ステップS212、および、ステップS214は、図46のステップS181、ステップS182、および、ステップS184の処理と基本的に同様であるので、その説明は省略する。
ステップS213においては、M_KEYWORD_2データベース277が参照される。例えば、ValueID(この場合、KeywordIDになる)が“0000000001”の場合、M_KEYWORD_2データベース277内のKeywordの欄が参照され、“情報”というのが読み出され、Displayの欄の“1”という値が読み出される。このDisplayの欄の“1”という値(フラグ)は、ユーザ側に提示されるとして設定されていることを示す。
例えば、ValueID(この場合、KeywordIDになる)が“0000000008”の場合、M_KEYWORD_2データベース277内のKeywordの欄が参照され、“得”というのが読み出され、Displayの欄の“0”という値が読み出される。このDisplayの欄の“0”という値(フラグ)は、ユーザ側に提示されないとして設定されていることを示す。よって、結果としてユーザ側には提示されないので、このような処理を行う必要もなく、Displayの欄が“0”のときには、“0”と判断された時点で、処理は、次のValueIDの要素へと移行される。
このように、M_KEYWORD_1データベース276を用い、図50に示したフローチャートの処理を実行した場合も、ユーザに提示される言葉として不適切な言葉は、提示されないように制御することが可能である。しかしながら、図18に示したM_KEYWORD_2データベース277を用いた処理では、ユーザに提示するにはふさわしくない言葉を、他の言葉に変換して提示するといった処理はできない。よって、他の言葉に変換しなくても良いようなシステムにおいては、有効な処理の仕方である。
このように、本発明においては、ユーザ側に提示する言葉を制御することができる。本実施の形態においては、主に、番組を推薦する場合を例に挙げて説明したが、番組以外の情報を推薦するような場合も本発明を適用することはできる。所定の情報をユーザに推薦する際、なぜその情報が推薦されたのか、その根拠をユーザ側に提示することができ、また、その提示される内容は、ユーザが認識しやすい言葉で提示されるので、ユーザは、提示される内容を理解しやくすくなり、提示される内容に信頼性をもつことができるようになる。
また、本発明によれば、その提示される内容は、ユーザの嗜好を良く考慮したものとすることができる。その理由は、上述したように、ユーザの嗜好に関するデータを、登録、学習、フィルタリングといった複数の処理を総合的に行うようにしたので、より、詳細に、ユーザの嗜好を解析することができるようになる。
上述した一連の処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
記録媒体は、図4に示すように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク91(フレキシブルディスクを含む)、光ディスク92(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク93(MD(Mini-Disc)(登録商標)を含む)、若しくは半導体メモリ94などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM72や記憶部78が含まれるハードディスクなどで構成される。
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
51 ネットワーク, 52 サーバ, 53 ユーザ端末, 54 放送局, 101 ディスプレイ, 112 オススメマーク, 113 オススメボタン, 114 ランキングボタン, 151 番組表示部, 152 放送時間表示部, 153 内容表示部, 154 出演者表示部, 155 理由表示部, 156 オススメ度表示部, 231 ログ生成機能, 232 ユーザ管理機能, 233 情報選別機能, 234 サービス管理機能, 235 ユーザモデル管理機能, 236 情報通信機能, 237 対象情報メタデータ管理機能, 238 サービス一般機能, 251 マスターデータベース, 252 ターゲットデータベース, 253 ログデータベース, 254 ユーザデータベース