背景
スマートフォンやコンピュータのような現代の電子機器は様々な機能を有しており、例えば、様々なニーズのための様々なプログラムや、位置測定や通信、娯楽のための様々なモジュールを有している。これらのデバイスによって遂行されうるタスクは非常に多岐にわたっており、また各タスクもそれぞれ複雑なものでありうる。例えば、今日の世界においては、様々な仕事がコンピュータの助けを借りて遂行されている。同様に、電子機器は、自由時間において毎日の生活の一部となってきている。たくさんのWebサービスやアプリケーションが、様々な目的のために、インターネットを通じて利用可能になっている。
コンピュータや電子機器のような現代の電子機器を使うことは、システムが提供する機能が多岐にわたるために、またユーザが利用することのできるサービスやアプリケーションが多岐にわたるために、難しいものになっている場合がある。このため、デバイスは、その外観や機能配置をカスタマイズする方法を提供し、ユーザがそれらに容易にアクセスできるようにしている場合がある。しかし、システムの状態や、システムが使用されている状況が、ユーザの嗜好やユーザの必要性に影響を与える場合がある。
このため、システムのユーザのために、関連性の高いサービスに、インターネット上で容易にアクセスすることを可能にするソリューションが求められている。
摘要
上述の問題を軽減しうる優れた方法、およびそのような方法を実装する技術的装置が発明された。本発明の様々な側面には、独立請求項に記載されている事項を特徴とする方法や装置、サーバ、クライアント、データコード、コンピュータプログラムを格納するコンピュータ可読媒体を含む。また、本発明の様々な実施形態が従属請求項に示されている。
例示的実施形態には、予測ブラウジングに関するものがある。経験マトリクスと共に使用するワードのセットが形成される。ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む。予測出力を形成するために、経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部がアクセスされる。この予測出力に基づいて、Webページの提案がユーザに提供される。予測を形成するために抽象メタデータ(abstraction metadata )が用いられてもよい。それによって、予測がコンテンツに基づくものではなく、サイトを記述するワードに基づくものになる。(コンテンツはときどき、例えば広告など、思いがけないものとなりうる。)
第1の様相によれば次のような方法が提供される。この方法は、経験マトリクスと共に使用するワードのセットを形成すること、ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む、前記形成することと;予測出力を形成するために、前記経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスすることと;前記予測出力に応じて、Webページの提案をユーザに提供することと;を含む。
実施形態によっては、前記方法は、前記経験マトリクスを更新するためのワードを収集するための入力バッファを形成することを含む。実施形態によっては、前記方法は、Webブラウザの活動に基づいて前記予測出力を形成することを含む。実施形態によっては、前記方法は、ページのロードの完了に基づいて前記予測出力を形成することを含む。実施形態によっては、前記方法は、バックグラウンドで前記予測出力を形成することを含む。実施形態によっては、前記方法は、Webブラウザの活動に基づいて前記経験マトリクスを更新することを含む。実施形態によっては、前記方法は、Webページの画像又はテキストを含む予測リストを形成することと、Webブラウザの活動に基づいて前記予測リストを更新することとを含む。実施形態によっては、前記方法は、前記予測出力の結果として、Webページ以外の関連データについての提案を提供することを含む。実施形態によっては、前記方法は、前記経験マトリクスを形成するにおいて抽象メタデータを用いることを含む。実施形態によっては、前記方法は、前記予測を形成するにおいて抽象メタデータを用いることを含む。実施形態によっては、前記抽象メタデータは国毎に作られる。実施形態によっては、前記抽象メタデータは経験マトリクスの形態を有する。実施形態によっては、前記予測を形成するにおいて、サイトのコンテンツと前記抽象メタデータとを、重み付けを含む形で用いることを含む。
第2の様相によれば、一つ又は複数のプロセッサで実行されると、システムに、前記第1の様相の具現化形態のいずれかを遂行させる、一つ又は複数の命令の一つ又は複数のシーケンスを含む、コンピュータプログラム製品。
第3の様相によれば、1つ以上の命令の1つ以上のシーケンスを含むコンピュータプログラム製品が提供される。前記1つ以上の命令の1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、システムに少なくとも次のこと:経験マトリクスと共に使用するワードのセットを形成すること、ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む、前記形成することと;予測出力を形成するために、前記経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスすることと;前記予測出力に応じて、Webページの提案をユーザに提供することと;を遂行させる。
実施形態によっては、前記コンピュータプログラム製品は、Webページの画像又はテキストを含む予測リストを形成することと、Webブラウザの活動に基づいて前記予測リストを更新することとをシステムに行わせる一つ又は複数の命令の一つ又は複数のシーケンスを備える。実施形態によっては、前記コンピュータプログラム製品は、前記システムに、前記経験マトリクスを形成するにおいて抽象メタデータを用いるようにさせるための1つ以上の命令の1つ以上のシーケンスを備える。実施形態によっては、前記コンピュータプログラム製品は、前記システムに、前記予測を形成するにおいて抽象メタデータを用いるようにさせるための1つ以上の命令の1つ以上のシーケンスを備える。
第4の様相によれば、コンピューターシステムの動作を制御するデータ構造であって、高次元のスパースベクトルを含む経験マトリクスを有し、前記スパースベクトルは少なくとも一つのシステム又は装置におけるワードの共起性についての情報を含み、前記経験マトリクスは少なくとも部分的にはWebサイトの抽象メタデータを用いて形成されたものである、データ構造が提供される。実施形態によっては、前記抽象メタデータは国毎に作られる。
第5の様相によれば、少なくとも1つのプロセッサと、一つ又は複数のプログラムユニットのためのコンピュータプログラムコードを含む少なくとも1つのメモリとを備える装置が提供される。前記少なくとも1つのメモリおよび前記コンピュータプログラムコードは、前記プロセッサを用いて、前記装置に:経験マトリクスと共に使用するワードのセットを形成すること、ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む、前記形成することと;予測出力を形成するために、前記経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスすることと;前記予測出力に応じて、Webページの提案をユーザに提供することと;を遂行させるように構成される。
実施形態によっては、前記装置は、該装置に、前記経験マトリクスを更新するためのワードを収集するための入力バッファを形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、Webブラウザの使用状況に基づいて前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、ページのロードの完了に基づいて前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、バックグラウンドで前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、Webブラウザの使用状況に基づいて前記経験マトリクスを更新させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、Webページの画像又はテキストを含む予測リストを形成することと、Webブラウザの活動に基づいて前記予測リストを更新することとを行わせるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、前記予測出力の結果として、Webページ以外の関連データについての提案を提供させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、前記経験マトリクスを形成するにおいて抽象メタデータを使用するように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記装置は、該装置に、前記予測を形成するにおいて抽象メタデータを使用するように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記抽象メタデータは国毎に作られる。実施形態によっては、前記抽象メタデータは経験マトリクスの形態を有する。実施形態によっては、前記装置は、該装置に、前記予測を形成するにおいて、サイトのコンテンツと前記抽象メタデータとを、重み付けを含む形で使用させるように構成されるコンピュータプログラムコードを備える。
第6の様相によれば次のような装置が提供される。この装置は、経験マトリクスと共に使用するワードのセットを形成する手段、ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む、前記形成する手段と;予測出力を形成するために、前記結合経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスする手段と;前記予測出力に応じて、Webページの提案をユーザに提供する手段と;を備える。
実施形態によっては、前記装置は、前記経験マトリクスを更新するためのワードを収集するための入力バッファを形成する手段を備える。実施形態によっては、前記装置は、Webブラウザの活動に基づいて前記予測出力を形成する手段を備える。実施形態によっては、前記装置は、ページのロードの完了に基づいて前記予測出力を形成する手段を備える。実施形態によっては、前記装置は、バックグラウンドで前記予測出力を形成する手段を備える。実施形態によっては、前記装置は、Webブラウザの活動に基づいて前記経験マトリクスを更新する手段を備える。実施形態によっては、前記装置は、Webページの画像又はテキストを含む予測リストを形成する手段と、Webブラウザの活動に基づいて前記予測リストを更新する手段とを備える。実施形態によっては、前記装置は、前記予測出力の結果として、Webページ以外の他のデータの提案を提供する手段を備える。実施形態によっては、前記装置は、前記経験マトリクスを形成するにおいて抽象メタデータを用いる手段を備える。実施形態によっては、前記装置は、前記予測を形成するにおいて抽象メタデータを用いる手段を備える。実施形態によっては、前記抽象メタデータは国毎に作られる。実施形態によっては、前記抽象メタデータは経験マトリクスの形態を有する。実施形態によっては、前記装置は、前記予測を形成するにおいて、サイトのコンテンツと前記抽象メタデータとを、重み付けを含む形で用いる手段を備える。
第7の様相によれば、少なくとも1つのプロセッサと、一つ又は複数のプログラムユニットのためのコンピュータプログラムコードを含む少なくとも1つのメモリとを備えるシステムが提供される。前記少なくとも1つのメモリおよび前記コンピュータプログラムコードは、前記プロセッサを用いて、前記システムに:経験マトリクスと共に使用するワードのセットを形成すること、ただし前記ワードは、現在のWebページのような、システムのコンテキストを記述するものであり、前記経験マトリクスはワードに関連するスパースベクトルを含む、前記形成することと;予測出力を形成するために、前記経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスすることと;前記予測出力に応じて、Webページの提案をユーザに提供することと;を遂行させるように構成される。
実施形態によっては、前記システムは、該システムに、前記経験マトリクスを更新するためのワードを収集するための入力バッファを形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、Webブラウザの使用状況に基づいて前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、ページのロードの完了に基づいて前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、バックグラウンドで前記予測出力を形成させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、Webブラウザの使用状況に基づいて前記経験マトリクスを更新させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、Webページの画像又はテキストを含む予測リストを形成することと、Webブラウザの活動に基づいて前記予測リストを更新することとを行わせるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、前記予測出力の結果として、Webページ以外の関連データについての提案を提供させるように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、前記経験マトリクスを形成するにおいて抽象メタデータを使用するように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記システムは、該システムに、前記予測を形成するにおいて抽象メタデータを使用するように構成されるコンピュータプログラムコードを備える。実施形態によっては、前記抽象メタデータは国毎に作られる。実施形態によっては、前記抽象メタデータは経験マトリクスの形態を有する。実施形態によっては、前記システムは、該システムに、前記予測を形成するにおいて、サイトのコンテンツと前記抽象メタデータとを、重み付けを含む形で使用させるように構成されるコンピュータプログラムコードを備える。
以下、本発明の様々な実施形態が、添付の実施例図面を参照して詳細に説明される。
図1a,1b,1cは、いずれも、基本スパースベクトルとしてのワードの表現や、ワードのバッグ(bag-of-words)、バッグを更新した後の経験マトリクス(experience matrix)を示したものである。
ワードのバッグと基本スパースベクトルとを使用して経験マトリクスを更新する様子を示したものである。
経験マトリックスを使用して予測を提供する様子を示した図である。
コンテキスト空間においてベクトルの違いを決定する様子を示した図である。
経験マトリックスを使用して予測を提供する様子を示した図である。
基本スパースベクトルとしての例示的なbag-of-wordsを示した図である。
bag-of-words及び基本スパースベクトルを用いる経験マトリクスの更新の様子を示した図である。
更新後の経験マトリクスを例示した図である。
図5a-5cは、バッグにワードを収集する様子や、ワードが異なる時点を表す状況を描いている。
経験マトリクスを有するシステムがデータを収集したり処理したりする様子を描いている。
経験マトリクスを用いてデータを収集・処理するように構成されるシステムを描いている。
出力としてワードをもたらすように構成されるセンサを描いている。
ワードのハッシュテーブル及び基本スパースベクトルのグループを有するスパースベクトル供給部を描いている。
基本スパースベクトルのグループを有するスパースベクトル供給部を描いている。
基本スパースベクトルを生成するように構成される乱数発生器を有するスパースベクトル供給部を描いている。
基本マトリクスを用いて形成された予測に基づいて制御されるシステムを描いている。
ワードのバッグの例示である。
予測に基づいて制御されるユーザインタフェースの例示である。
カレンダーに基づいてシステムを準備する方法のステップを描いている。
ハッシュテーブルのグループとして経験マトリクスを表す様子を示した図である。
経験マトリクスを更新する様子を示した図である。
予測を行うために経験マトリクスを使用する様子を描いた図である。
図10a及び10bは、カレンダー及び/又は辞書を用いて補助ワードを収集する様子と、辞書を用いてワードを二次ワードに置き換える様子とを描いている。
経験マトリクスを有するシステムを描いている。
図12a及び12bは、それぞれ異なるデータ処理デバイスを描いている。
ある実施形態に従う予測ブラウザの、ユーザインタフェースの変化の様子の例を示したものである。
ある実施形態に従う予測ブラウザのユーザインタフェースの例を示したものである。この予測ブラウザには、関連のあるコンテンツの提案が含まれている。
ある実施形態に従う、予測閲覧のための抽象インデックスを示している。
ある実施形態に従う、予測閲覧のためのフローチャートを示している。
ある実施形態に従う、予測閲覧のためのフローチャートを示している。
例示的実施形態の説明
以下、システムのコンテキストと、ランダム・インデックス(Random Indexing)フレームワークとを参照して、本発明のいくつかの実施例を説明する。ただし本発明は、これらの例やその代替例に限定されるものではないことに留意されたい。セマンティック処理及びシステムの適応化が必要とされるいろいろな状況において、様々な実施形態が有用性を有する。
過去の状況におけるワードの共起性(co-occurrences of words)に基づいて、経験マトリクス(experience matrix)中に共起データ(co-occurrence data)が収集されてもよい。経験マトリクスは、様々な状況におけるワードの共起性についてのヒストリデータを含んでもよい。経験マトリクスEX1は、最終的には複数のスパースベクトルを含んでもよい。これらのスパースベクトルは、システムについてのワードの共起性のヒストリについての情報を含んでもよい。マトリクスEX1は、一つ又は複数のシステムによって収集された経験(experience)を記憶するものであると解釈されてもよい。経験マトリクスは、一つ又は複数のシステムによって収集された経験(experience)を含んでもよい。経験マトリクスは、例えば、特定の状況に関する一つ又は複数のワードが知られている場合に、当該状況に適用しうる適切なアクションや動作モードを予測するために使用されてもよい。そしてシステムは、システムの経験マトリクスに格納された過去の経験を利用して、観察した事実に基づいてその動作を変更してもよい。
経験マトリクスに格納されているデータを用いて、一つ又は複数のクエリワード(query word)から、一つ又は複数の予測ワード(prediction word)が決定されてもよい。それに続いてシステムは、予測ワードに基づいて制御されてもよい。クエリワードは現在の状況を表現するワードであってもよい。予測ワードは、現在の状況を表現する可能性があるワードであってもよい。共起データは、経験マトリクスEX1のベクトルとして格納されてもよい。それに続いて共起データは、予測を生成するために使用されてもよい。経験マトリクスEX1に共起データを格納するには語彙VOC1が必要とされてもよい。また、経験マトリクスEX1に格納されている共起データを利用するにも語彙VOC1が必要とされてもよい。実施形態によっては、語彙VOC1は、基本マトリクスRM1と呼ばれる別のマトリクスに関連して使用されてもよい。
図1において、語彙VOC1は、複数のワードw1, w2,... wnを含んでいる。語彙VOC1は、基本マトリクスRM1のスパースベクトルへのポインタを有するハッシュテーブルであってもよい。スパースベクトルは、ランダム・インデックス・ベクトル(RIベクトル)と呼ばれることもある。語彙VOC1の各ワードw1, w2,... wnは、それぞれ基本スパースベクトルa1, a2,... .anに関連付けられていてもよい。例えば、ワードwk(例えば"meeting")は、基本スパースベクトルakに関連付けられていてもよい。基本スパースベクトルa1, a2,... ak,... anは、例えば、基本マトリクスRM1の行として格納されていてもよい。
語彙VOC1は、ワード(例えばwk)をキーとして用いて基本スパースマトリクスRM1中のスパースベクトルの位置(例えば行k)を示す、ハッシュテーブルであってもよい。
マトリクスRM1の各基本スパースベクトルはワードを表してもよい。例えば、基本ベクトルakは、スパースベクトル形式でワードwk を表すものであると考えられてもよい。各基本スパースベクトルakは、要素R1,k, R2,k,... ,Rik,... ,Rm,kからなる。実施形態によっては、マトリクスRM1の基本スパースベクトルa1, a2,... ak,... anはそれぞれ唯一のものであって互いに異なっていてもよい。基本マトリクスRM1の各行は、それぞれ互いに異なるワードに関連付けられるユニークな基本スパースベクトルであってもよい。各基本スパースベクトルakは、非常に多くのゼロ要素とほんの少しの非ゼロ要素とを有してもよい。例えば、基本スパースベクトルakが10000個の要素Rを有するとして、そのうち9980個がゼロで、20個だけが非ゼロであってもよい。
実施形態によっては、基本スパースベクトルakの全要素の和はゼロに等しくともよい。これは、メモリ消費量の低減、計算処理の簡単化、データ処理速度の向上、の少なくとも一つをもたらしうる。具体的には、非ゼロ要素の半分は値が-1であってもよく、残りの半分は値が1であってもよい。つまり、基本スパースベクトルakの要素は-1,0,1のいずれかであってもよく、基本スパースベクトルakは3値ベクトルであってもよい。
各ベクトルa1, a2,... ak,... anは、多次元空間における点によって表されてもよい。より具体的には、各ベクトルa1, a2,... ak,... anの始点が、多次元空間の同じ点(例えば原点)に位置する場合、各ベクトルa1, a2,... ak,... anは、その多次元空間のそれぞれ異なる点によって表されてもよい。基本スパースベクトルakの要素Rの数mは、例えば100から106の範囲であってもよい。基本スパースベクトルakの非ゼロ要素Rの数mnzは、例えばmの0.1%から10%の数であってもよい。非ゼロ要素Rの数mnzはまた、4から103の範囲であってもよい。全要素数m及び/又は全非ゼロ要素数mnzが増すことは、大きな語彙VOC1を使用することを可能にしうる。また、より信頼性の高い予測を提供することになりうる。しかし、mやmnzが大きくなると、必要なメモリ空間も増し、より多くのデータ処理能力も必要となる。
Rikは、基本マトリクスRM1のi番目の列及びk番目の行に属する要素を表す。実施形態によっては、ベクトルは3値であり、各要素eikは-1,0,1のいずれかであってもよい。非ゼロ要素Rのうち負の値を有する要素の数は、非ゼロ要素Rのうち正の値を有する要素の数に等しくともよく、非ゼロ要素Rの値は整数であってもよい。このようにすることで、データ処理速度が向上し、メモリ消費が抑えられる可能性が高くなる。しかし、必ずしもこのようにしなければならないというわけではない。例えば、基本スパースベクトルakが、値-0.5の要素Rを16個と値2の要素Rを4個有しているような場合もあってもよい。
マトリクスRM1のベクトルa1, a2,... ak,... anを互いに比較すると、基本スパースベクトルak中の非ゼロ要素の位置や非ゼロ要素の値はランダムに分布していてもよい。基本スパースベクトルは、ランダム・インデックス・ベクトルと呼ばれることもある。このランダム性は、多次元空間中で基本スパースベクトルが表現する各点が互いに近づき過ぎていないことを高い確率で保証する。もしそれぞれ異なるワードを表現する二つの点が互いに近づき過ぎていると、後の処理において誤った予測を生じる可能性がある。位置や値がランダムに分布していることは、語彙VOC1の各ワードが、それぞれ異なる一意の基本スパースベクトルに関連付けられていることを高い確率で保証しうる。インデックスがランダムであると、それぞれ異なるワードに関連付けられる2つの基本スパースベクトルは直交する可能性が高く、あるいはほぼ直交する可能性が高い。従って、これら基本スパースベクトルのドット積は高い確率で0に等しい。このワードの偽直交性は、マトリクスに保存される個々のワードやイベント、個別事件(unique occurrence)がスパースベクトルで表現されたとしても、その一意な識別性を保証するだろう。また、このワードの偽直交性は、経験マトリクスに保存されるワードやイベント、個別事件が、経験マトリクスEX1中でスパースベクトルの組み合わせとして表現されたとしても、その一意な識別性を保証するだろう。語彙のワードは例えばアルファベット順に並べられてもよい。
図1bは、"バッグ"(bag)と称されうるワードのセットをいくつか示している。バッグは、互いに異なる二つ以上のワードを有する。一つのバッグに含まれるワードの数は、例えば2から1000の範囲であってもよい。各バッグはまた、"ドキュメント"とも呼ばれる。
バッグはワードの共起性を表す。バッグはシステムを学習させるために用いられる場合もある。ワードの共起性に関する情報は、マトリクスEX1に格納されてもよい(図1c,図4b参照)。
バッグのワードは、例えば状況を表現するものであったり、及び/又は当該状況で使用されるシステムを表現するものであったりしてもよい。特に、ワードは、観察される事実を表現するものであってもよい。
例えば第1のバッグであるBAG1は、"work"(仕事),"morning"(朝),"mail"(メール)のワードを含んでいる。ここで、ワード"work"は、例えばシステムのカレンダーの印に基づいて、例えば決定されてもよい。また、ワード"morning"は、例えばシステムの時計によって提供されてもよい。ワード"mail"は、ワード"work"及び"morning"に関連するものであってもよい。というのも、例えば、システムは、ワード"work"及び"morning"により表現される状況において、ユーザがメッセージを受信したり、作成したメッセージをユーザが送信したりすることを検出したかもしれないからである。
第2のバッグであるBAG2は、"home"(自宅),"meal"(食事),"music"(音楽)のワードを含んでいる。ワード"home"は、例えば、ユーザのナビゲーションユニットが、その測定位置が、"home"(自宅)と呼ぶ位置に一致することを示す場合に、提供されてもよい。ワード"meal"は、例えば、配達サービスに、"home"(自宅)と呼ぶ場所に食べ物(例えばピザ)を注文するときに提供されてもよい。システムは、例えば、楽曲への支払いをを行うよう当該システムにユーザが指示するときに、ワード"music"を提供するように構成されてもよい。
ワード"home","meal","music"は、例えば、時点t1において支配的な状況を表現するものであってもよい。ワード"home","meal","music"は、互いに関係しあうものであってもよい。もし、ワードのこの組み合わせが過去に何回か生じたものであったとしたら、例えばそれは、ユーザが自宅で食事をしている時に音楽を聴くことを欲するかどうかの可能性を評価(推測)するために使用されてもよい。例えば、ポータブルデバイスが、ユーザが自宅で食事をしていることを検知すると、自身を音楽再生モードにセットするように構成されてもよい。
第3のバッグであるBAG3は、"work"(仕事),"meeting"(ミーティング),"slilent"(静かに,サイレント)のワードを含んでいる。ここで、ワード"work"及び"meeting"は、例えばシステムのカレンダーの印に基づいて、例えば決定されてもよい。システムは、例えばユーザのカレンダーに含まれる情報に基づいて、状況記述子"work"を提供するように構成されてもよい。システムはまた、ユーザのポータブルデバイスの位置が、仕事場の位置に一致するときに、ワード"work"を決定するように構成されてもよい。ワード"slilent"は、例えば、ミーティングに出席しているユーザがシステムをサイレントモードにセットしたときに供給されてもよい。例えばユーザは、着信があっても音を鳴らさない動作モードに携帯電話をセットしているかもしれない。
ワード"work","meeting","slilent"は、時点t2において支配的な状況を表現するものであってもよい。もし、ワードのこの組み合わせが過去に何回か生じたものであったとしたら、例えばそれは、仕事でミーティングに出席している時に、ユーザが携帯デバイスをサイレントモードにセットする可能性を評価(推測)するために使用されてもよい。例えば、ユーザのポータブルデバイスは、ユーザがミーティングに出席していることを決定すると、自動的に、サイレントモードに入れることを提案するように構成されてもよい。
ワードの共起性の観察から導かれたデータは、マトリクスEX1のベクトルv1, v2,... ,vk... vnとして格納されてもよい。このマトリクスEX1は、経験マトリクス(experience matrix)と呼ばれてもよい。この様子が図1cに示されている。語彙VOC1のワードw1, w2,... wnの各々は、経験マトリクスEX1のスパースベクトルに関連付けられてもよい。スパースベクトルv1, v2,... ,vk... vnは、例えば、基本マトリクスRM1の行として格納されていてもよい。
語彙VOC1は、図1aのものと同じ(ハッシュテーブル)であってもよい。
経験マトリクスEX1の各ベクトルは、スパースベクトル及び初期ベクトル(initial vector)の線形結合であってもよい。
特に、経験マトリクスEX1の各ベクトルは、基本スパースマトリクスRM1(図1a参照)における複数の基本スパースベクトルの線形結合であってもよい。
各ベクトルvkの要素eikの数nは、図1aに示される各基本スパースベクトルの要素Rの数nに等しくともよい。複数のスパースベクトルを結合することは、バッグ(図1b参照)のコンテンツに従って行われてもよい。
経験マトリクスEX1は、複数のバッグ(例えばBAG1, BAG2)から得られる共起性データを含んでいてもよい。複数のバッグから得られる共起性データが、スパースベクトルの線形結合として経験マトリクスEX1に保存されるとき、これは、共起性データを圧縮フォーマットで格納することを表してもよい。
ある実施形態において、各ベクトルvkの要素eikの数nは、経験マトリクスEX1に保存される共起性データの取得元となったバッグの数よりも、かなり少ない場合がある。
バッグに新しいデータが加えられたときに、要素eikの数nを変える必要はない。これは、別のバッグか得られる共起性データを使って、マトリクスEX1を素早く簡単に更新しうることを意味する。これはまた、別のバッグか得られた共起性データを使ってマトリクスEX1を更新したとしても、マトリクスEX1のサイズ(すなわち行の数及び列の数)は一定に保ち得ることを意味する。
しかし、実施形態によっては、更新に用いた複数のバッグのうちどれが所与のワードを含んでいたかを、(語彙VOC1及びマトリクスRM1, EX1だけでは)明確に決定することができない場合がある。この意味で、マトリクスEX1に共起性データのバッグを格納することは、共起性データを格納する"lossy"な(情報が損失しうる)方法を表していると考えられてもよい。
経験マトリクスEX1は、最初はゼロ行列(NULLマトリクス)であってもよい(そうでなくともよい)。経験マトリクスEX1のいくつかのベクトルの初期値は、スムーズな空間変動を呈してもよい。
図2は、経験マトリクスEX1が、ワードのバッグ(bag-of-words)を用いてどのように更新されうるのかを例示している。bag-of-wordsは、例えば、図1bに描かれるBAG1であってもよい。
大文字の記号W1, W2, W3は、それぞれBAG1のワードを表す。小文字の記号w1, w2,... wnは、それぞれ語彙VOC1のワードを表す。通常、バッグの最初のワードW1は、語彙の最初のワードw1と同じではない。が、同じである場合もある。
経験マトリクスEX1のベクトルは、バッグに含まれるワードに基づいて更新されてもよい。更新の最中、経験マトリクスEX1のベクトルは、例えばターゲットベクトルと呼ばれてもよい。
この更新は、バッグBAG1のワード(例えば"mail")に関連付けられるターゲットベクトル(例えばvP)を変更することを含んでもよい。バッグは、二つ以上のワードW1, W2, W3を含んでいる。複数のワードW1, W2, W3が同じバッグBAG1に属しているとき、それはとりわけ、ワードW1及びW2がワードW3のコンテキストに属していることを示している。
第1のワードと共に同じバッグに属している一つ又は複数のワードは、その第1のワードと同じコンテキストに属していると考えられてもよい。ワードは、例えば、システムの状態や、外部の状態を表していてもよい。
BAG1のワードW3に関連する、経験マトリクスEX1のターゲットベクトルvPは、語彙VOC1を用いて特定されてもよい。より具体的には、ワードW3の値(= wp,"mail")に関連する、経験マトリクスEX1のベクトルvPの位置(行)は、語彙VOC1を用いて決定されてもよい。
バッグBAG1の他のワードW1やW2を表す基本スパースベクトル(例えばak+1やan-1)もまた、語彙VOC1によって見つけられてもよい。
バッグBAG1の共起データを経験マトリクスEX1に加えることは、BAG1のワードW3に関連する(第1の)ターゲットベクトルvPを、(第1の)ターゲットベクトルvPと、バッグBAG1の他のワードW1,W2を表す基本スパースベクトルak+1,an-1との線形結合である、修正ベクトルで置き換えることを含んでもよい。
ある実施形態において、基本スパースベクトルak+1,an-1は、単純にターゲットベクトルvPに加えられてもよい。つまり、線形結合に用いられる基本スパースベクトルak+1,an-1の重み係数は1であってもよい。しかし、基本スパースベクトルによって表現されるワードの寄与を強めたり弱めたりするために、基本スパースベクトルの重み係数は、1からずれたものであってもよい。重み係数の範囲は、例えば0.1から10の範囲であってもよい。
図2において、基本ベクトルapの上にバツが描かれている経験マトリクスEX1が、基本マトリクスRM1の代表ベクトル(representative vector)を用いて更新されるとき、ワードW3を表す基本ベクトルapが、ワードW3に関連する修正ターゲットベクトルvPに寄与しないように、ベクトルの結合が行われてもよい。ワードは、常に自身と共起である。ワード自身の基本ベクトルの寄与を加えることは、意味のある新しいデータを経験マトリクスに加えることにはならないであろう。
バッグBAG1の第2のワード(work, W2)を表す第2のターゲットベクトル(例えば図1cのvn-1)は、第2のターゲットベクトルvn-1と、バッグBAG1の他のワードW1 (morning), W3 (mail)を表す基本スパースベクトルak+1, aPとの線形結合である修正ベクトルによって置き換えられることにより、修正されてもよい。バッグが第3のワードを含んでいるとき、バッグBAG1の第3のワード(morning, W1)を表す第3のターゲットベクトル(例えば図1cのvk+1)は、第3のターゲットベクトルvk+1と、バッグBAG1の他のワードW2 (work), W3 (mail)を表す基本スパースベクトルan+1, aPとの線形結合である修正ベクトルによって置き換えられることにより、修正されてもよい。
バッグが3つより多いワードを含んでいるとき、それらのワードの各々も、バッグの他のワードの寄与を加えることにより、それぞれ更新されてもよい。
マトリクスは、第2のバッグのワードを用いて、また、その他のバッグのワードを用いて、それぞれ更新されてもよい。
バッグBAG1の2つ又はそれ以上のワードW1, W2, W3は、システムによって提供されてもよく(システムワード)、及び/又は、クライアントによって提供されてもよい(クライアントワード)。システムワードは、例えば、時刻や位置を表すワードであってもよい。"クライアント"は、人間のユーザであったり、アプリケーションであったり、ネットワークサービスであったりしてもよい。クライアントワードは、例えば、人間のユーザから得られたり、実行中のソフトウェアアプリケーションから得られたりしてもよい。ワードは、例えば、システムの状態を表すものであってもよい。
図3aは、経験マトリクスEX1を用いて予測を行う様子を描いている。経験マトリクスEX1は、例えば、図1cや図4bに描かれるマトリクスであってもよい。
システムの状態を表す一つ又は複数のワードは、経験マトリクスEX1を用いて予測されてもよい。予測の方法は、一つ又は複数のクエリワードQ1, Q2,...を受信することを含んでもよい。(図3cは、2つのクエリワードを用いて予測を行う様子を描いている。)クエリワードQ1, Q2は、例えばシステム及び/又はクライアントによって提供されてもよい。実施形態によっては、クライアントが、一つ又は複数のクエリワードQ1, Q2を送信することにより、予測プロセスを開始してもよい。クエリワードQ1 (例えば'morning')に関連する、経験マトリクスExのベクトルvkは、語彙VOC1を用いて特定されてもよい。1つのクエリワードQ1しかない場合、関連するベクトルvkは、クエリを表すクエリベクトルQV1として用いられてもよい。
クエリベクトルQV1は、経験マトリクスEX1のベクトルv1, v2,... vnと比較されてもよい。これは、経験マトリクスEX1のベクトルv1, v2,... .vnのうち、クエリベクトルQV1と実質的に似ているものを一つ又は複数特定するためである。比較の間、経験マトリクスEX1のベクトルv1, v2,... vnは、候補ベクトル(candidate vector)と呼ばれてもよい。クエリベクトルQV1との差が最も小さいベクトルに関連するワード(複数の場合もある)が決定され、予測出力OUT1としてもたらされてもよい。予測の方法は、経験マトリクスEX1のベクトルv1, v2,... vnの各ベクトルと、クエリベクトルQV1との差を決定することを含んでもよい。
図3bは、多次元空間中に、クエリベクトルQV1と、経験マトリクスEX1のいくつかのベクトルとを描いたものである。この例では、ベクトルの始点は全て一致している(例えば原点ORIG1)。DIMおよびDIM'は、それぞれ多次元空間における次元を表す。前述のように、次元の数は10000以上であってもよい。多次元空間中で2つのベクトルがほぼ同じ長さ及びほぼ同じ方向を少なくとも有している時、これら二つのベクトルは、実質的に同様のコンテキストを表す2つのワードに関連していると解釈されてもよい。これら二つのワードのうちの一つが、システムの状態のための有効な記述子(descriptor )である場合、他方のワードも、システムの状態のための有効な記述子である可能性が高い。
DV(QV1,v) は、クエリベクトルQV1と、経験マトリクスEX1のベクトルvとの差ベクトル(差分ベクトル,difference vector)を表す。ここで、クエリベクトルQV1と、経験マトリクスEX1のベクトルvとの差(difference)を表す値が、クエリベクトルQV1と、経験マトリクスEX1のベクトルvとに基づいて決定されてもよい。ここで、差(difference)は、クエリベクトルQV1と、経験マトリクスEX1のベクトルvとの間の角度θによって表されてもよい。また、この差(difference)は、クエリベクトルQV1と、経験マトリクスEX1のベクトルvとの間の角度θの余弦(cos(θ))によって表されてもよい。2つのベクトルv及びQV1の間の角度θの余弦(cos(θ))は、ドット積を用いて、次式:
|v||QV1|cos(θ) = v・QV1
から計算することができる。
この差はまた、例えば、差ベクトルDVのユークリッド距離|DV|によって表されてもよい。この差はまた、例えば、ベクトルのドット積を用いて、QV1・vのように表されてもよい。この差はまた、例えば、差ベクトルDVのユークリッド距離|DV|の二乗|DV|2によって表されてもよい。この差はまた、例えば、差ベクトルDVのタクシー距離(taxicab length,マンハッタン距離(Manhattan length)ともいう)によって表されてもよい。差ベクトルDVの長さを表すには、別の基準が用いられてもよい。また、ベクトル間の差を評価するために、別の基準が用いられてもよい。
いまや、語彙VOCから、一つ又は複数の予測出力ワードが選択されてもよい。この選択は、クエリベクトルQV1と、経験マトリクスEX1のベクトルとの差に基づいて行われてもよい。クエリベクトルQV1と候補ベクトルとの差が選択基準を満たす場合、その候補ベクトルに関連するワードが、予測ワードとして提供されてもよい。
クエリベクトルQV1からの差DVが最も小さい(一つ又は複数の)スパースベクトルを探すために、複数の差DVが互いに比較されてもよい。ここで、複数の差DVはソートされてもよい。最も小さな差DVに関連するスパースベクトルに関連付けられるワードが、予測メソッドの出力OUT1として提供されてもよい。この出力は、予測(predictio)と呼ばれてもよい。差DVが最も小さくなる複数のスパースベクトルに関連付けられるワードが、出力OUT1として提供されてもよい。例えば、差DVが小さな複数の候補ベクトルに関連するNp個のワードが出力OUT1として提供されてもよい。ここでNpは整数であり、例えば2から10の範囲の値であってもよい。図3aの例においては、ベクトルvP, vk, vn-2について、差の値が最も小さくなっている(|DV|2 = 6)。個数Npが3に設定されている場合、予測ワードとして、"mail", "meeting", "silent" が提供されてもよい。
クエリワードQ1,Q2は、状況を記述するものとして既知であってもよい。クエリワードQ1,Q2は、予測ワードOUT1から除外されてもよい。クエリベクトルQV1が、経験マトリクスEX1の他のベクトルと比較される時、クエリワードQ1,Q2に関連付けられるベクトルは、上述の比較処理から除外されてもよい。
一つ又は複数の予測ワードは、条件質問「一つ又は複数の(既知の)クエリワードQ1,Q2によって状況が既に記述されている時、どの(一つ又は複数の)ワードOUT1が状況をよく記述するか」に対する答えであると解釈されてもよい。図3aの例においては、一つのクエリワードQ1"morning"から決定される予測ワードは、"mail", "meeting", "silent"である。
これらの予測ワードの一つ又は複数は、システムを制御するために使用されてもよい。例えば、システムは、ワード"morning"により記述されうる状況において、Eメールを送受信するアプリケーションを自動的に立ち上げてもよい。例えば、システムは、ワード"morning"により記述されうる状況において、自身を自動的にサイレントモードに入れてもよい。
一つ又は複数の予測ワードは、クエリを行ったクライアントに返されてもよい。一つ又は複数の予測ワードは、別のクライアントに届けられてもよい。システムは、制御のために、全ての予測ワードを利用するように構成されてもよい。又はシステムは、制御のために、予測ワードの全部ではなくそのサブセットを利用するように構成されてもよく、その場合は、一つ又は複数の予測ワードは無視される。
図3cは、2つまたはそれより多いクエリワードQ1, Q2を用いてクエリを行う様子を描いている。一つのクエリに多くのクエリワードQ1, Q2を含めることは、(一つ又は複数の)予測ワードが状況の有効な記述子となる可能性を高めうる。この例においては、クエリは二つのワードQ1, Q2を含んでいる。クエリワードQ1 (例えば'morning')に関連する、経験マトリクスExの第1のベクトルvkは、語彙VOC1を用いて見つけられてもよい。クエリワードQ2 (例えば'work')に関連する第2のベクトルvn-1も、語彙VOC1を用いて見つけられてもよい。そしてクエリベクトルQV1は、クエリワードQ1, Q2に関連付けられるベクトルvk, vn-1の線形結合として決定されてもよい。より具体的には、クエリベクトルQV1は、ベクトルvk, vn-1の和として決定されてもよい。別の例では、クエリベクトルQV1は、ベクトルQ1及びQ2から、最も大きな絶対値を有する要素を選んでクエリベクトルQV1へ入れることにより、形成されてもよい。さらに別の例では、これ以外の方法により形成されてもよい。続いて、予測ワードの決定が、図3aの例に関連して述べたように、クエリベクトルQV1と、経験マトリクスEX1のベクトルv1, v2,... vnとを比較することにより行われてもよい。
予測ワードは、上述の処理に続いて、次の事項を含む方法により形成されてもよい。
・ クエリベクトルQV1と、経験マトリクスEX1の第1のベクトルとの差である第1の差を決定する。
・ クエリベクトルQV1と、経験マトリクスEX1の第2のベクトルとの差である第2の差を決定する。
・ 前記第1の差と前記第2の差とを比較する。
クエリワードQ1, Q2に関係付けられる、経験マトリクスEX1のベクトルvk+1, vn-1は、上記比較の処理から除外されてもよい。
この場合において、経験マトリクスEX1のベクトルvPは、長さが最も短い差ベクトルDV(|DV|2 = 2)をもらたらすように描かれている。この例において、ベクトルvPに対応する予測ワードは"mail"である。また、クエリベクトルに対して最も短いDVを有するNP個のベクトルに関連するいくつかのワードが、予測として提供されてもよい。NPは、例えば3であってもよい。この場合、ワード"mail", "meeting", "silent"が予測ワードとしてもたらされてもよい。
図1aから図2に示された更新方法は、個別のワードw1, w2,... wnをそれぞれ異なる基本スパースベクトルa1, a2,... anで表現することに基づいていた。図4a及び4bでは、経験マトリクスEX1に共起データを格納する別の方法を描いている。図4a及び4cに描かれる更新方法は、基本スパースベクトルによってバッグを表現することに基づいている。
図4aには、ワードのバッグ(bag-of-words)としてBAG1, BAG2, BAG3の3つが描かれている。これらのバッグは、例えば、図1bに描かれるものと同じものであってもよい。BAG1, BAG2, BAG3の各々は、基本スパースベクトルb1, b2, b3に関連付けられていてもよい。BAG1, BAG2, BAG3の各々は、それぞれ異なる基本スパースベクトルb1, b2, b3に関連付けられていてもよい。この場合において、各バッグ(例えばBAG1)に含まれる全てのワードは、同じ基本スパースベクトル(例えばb1)に関連付けられる。基本スパースベクトルは、図1aに示される基本スパースベクトルと同じ基準を満たしていてもよい。
図4bは、BAG1から生成される共起データを用いて経験マトリクスEX1を更新する様子を示している。このバッグは、2つ又はそれ以上のワードW1, W2, W3(例えば"morning", work", "mail")を含んでいる。BAG1の各ワードW1, W2, W3は、同じ基本スパースベクトル(例えばb1)によって表現されてもよい。BAG1のワードW1, W2, W3は、語彙VOC1のワードwP, wk+1, wn-1と同じであってもよい。これは、BAG1のワードに関連付けられる、経験マトリクスEX1のベクトルvP, vk+1, vn-1を探すことを可能にする。このようなベクトルは、ターゲットベクトルと呼ばれてもよい。
経験マトリクスEX1は、最初はゼロ行列(NULLマトリクス)であってもよい(そうでなくともよい)。経験マトリクスEX1のいくつかのベクトルの初期値は、スムーズな空間変動を呈してもよい。マトリクスEXは、マトリクスEX1の以前のベクトルと、スパースベクトルとの線形結合として得られるベクトルを、既に含んでいてもよい。直近の状況において、経験マトリクスは飽和(saturate)していなくともよい。すなわち、マトリクスに加えられる新しいデータは未だ確実に読み出されうる。飽和していないという性質を有する経験マトリクスは、その多くの要素がゼロではなくなっていいるとしても、本実施形態においてはスパースである(疎である)とみなされてもよい。
BAG1を表す基本スパースベクトルb1は、BAG1のワードに関連付けられる各ターゲットベクトルvP, vk+1, vn-1に加えられることができる。基本スパースベクトルb1は、いまや、BAG1の全てのワードに共通である。同じ基本スパースベクトルb1が、BAG1のワードに関連付けられる全てのターゲットベクトルvP, vk+1, vn-1に加えられることができる。一般的に、BAG1のワードに関連付けられる、修正されたターゲットベクトルは、そのワードに関連付けられるターゲットベクトルと基本スパースベクトルb1との線形結合によって形成されうる。第2のバッグBAG2は、別の基本スパースベクトル(例えばb2)によって表現されてもよい。BAG2を表す基本スパースベクトルb2は、BAG2のワードに関連付けられる各ターゲットベクトルに加えられることができる。第3のバッグBAG3は、別の基本スパースベクトル(例えばb3)によって表現されてもよい。BAG3を表す基本スパースベクトルb3は、BAG3のワードに関連付けられる各ターゲットベクトルに加えられることができる。
従って、経験マトリクスEX1は、複数のバッグBAG1,BAG2,BAG3のコンテンツを使って更新されることができる。経験マトリクスEX1のいくつかのベクトルは、結局は、異なるスパースベクトルb1, b2, b3の線形結合であってもよい。
図4cは、各々別のバッグを表す異なるスパースベクトルb1, b2, b3を用いて、バッグBAG1,BAG2,BAG3の共起データが経験マトリクスEX1に格納された後の、経験マトリクスEX1を描いたものである。マトリクスEX1の全ての要素eikの和は0であってもよい。ここでeikは、マトリクスEX1のi列k行に属する要素を表す。データ処理速度を上げるために、要素eikの値は整数であってもよい。要素eikの値は−1から1の範囲に限定されない。
図4bに示した方法を用いて決定された経験マトリクスEX1は、図3a-3cに示す方法を用いて予測ワードを決定するために使用されうる。図1cに関連して述べたように、経験マトリクスEX1は、列の数と行の数がいずれも同じ(m個)であってもよい。経験マトリクスEX1の個々の要素eikは整数値を有していてもよい。この整数値は1より大きくともよく(例えば2であってもよく)、−1より小さくともよい(例えば−2であってもよい)。
図5a-5cは、バッファから一つのバッグへワードを収集する様子を示している。ワードは一つ又は複数のクライアント及び/又はシステムから受け取られてもよい。受け取られたワードは、一つ又は複数のバッファに(一時的に)格納されてもよい。ワードは、バッファからバッグに集められてもよい。経験マトリクスはバッグのコンテンツを用いて更新されてもよい。続いて経験マトリクスは、(そのバッグとは異なる)第2のバッグのコンテンツを用いて更新されてもよい。
図5aにおいて、バッファのワードW1,t1, W2,t1, W3,t1は、同一の時点t1を示している。このバッグは、同一の時点を示す複数のワードを含んでいてもよい。しかし、時間的な関係に関する情報が、経験マトリクスに加えられてもよい。これは、2つ又はそれ以上の異なる時点t1, t2を表す複数のワードを含むバッグによって、加えられてもよい。この時間的に組み合わされたようなもの(時間的ペア)が集められたバッグは、例えば、システムが以前に第1の状態にあった場合に、それに連続する第2の状態の確率を評価するために利用されることができる。
図5bにおいて、バッファのワードW1,t1, W2,t1, W3,t1 W1,t2, W2,t2, W3,t2は、2つ又はそれ以上の時点t1, t2を示している。そして、同じ1つのバッグが、2つ又はそれ以上の時点t1, t2を示す複数のワードを含んでもよい。図5bの場合、同じバッグに含まれるワードの数は、t1を示すワードの数やt2を示すワードの数よりも多くてもよい。時点t1とt2との間の時間はタイムスパン(time span)と呼ばれてもよい。
図5cにおいて、バッファのワードW1,t1, W2,t1, W3,t1 W1,t2, W2,t2, W3,t2は、2つ又はそれ以上の時点t1, t2を示している。バッグは、2つ又はそれ以上の時点t1, t2を示す複数のワードを含んでもよい。図5bや5cに描かれるようなワードの収集は、例えば、目的がワード間の時間的関係に関する情報を集めることであるときに、用いられることができる。図5bや5cに描かれるようなワードの収集は、例えば、目的がシステムの状態間の時間的関係に関する情報を集めることであるときに、用いられることができる。
図5bの方法は、例えば、ワードの重要性についての知識を予め持っていない場合であったり、及び/又は、ワード間の時間的関係についての知識を予め持っていないような場合に、用いられてもよい。図5cの方法は、例えば、ワードの前後関係や時間的関係の知識が予め利用可能な場合に用いられてもよい。例えば、ワードW2,t2の値がW1,t1の値に依存しており、時点t2が時点t1より後であるような場合に、ワードW1,t1, W2,t2が同じバッグに収集されてもよい。
ワードW1,t1は、例えば、時点t1における天気を記述してもよい(例えば14:00において"雨"であること)。またワードW2,t2は、例えば、ユーザのカレンダー中の予定を記述してもよい(例えば18:00に運動)。現在の天気状況は、例えばインターネットサービスから受信されてもよい。この場合、14:00において優勢な天気状況は、ユーザが18:00に本当に外で運動をするのかに因果的な影響を及ぼすかもしれない。この意味で、ワード"raining"(すなわち"雨")を先に収集し、あとでワード"sports"(すなわち"運動")を収集することは、有用であるかもしれない。
図6は、共起データを経験マトリクスに格納するシステムを示している。時間を記述するシステムワードは、例えばクロックから受信してもよい。(ポータブルデバイスの)位置を記述するシステムアワードは、例えばGPSナビゲーションユニットから受信してもよい(GPSはGlobal Positioning satellite System,全地球衛星測位システムを意味する)。(ポータブルデバイスの)加速度を記述するシステムワードは加速度計から受信してもよい。他の物理センサからワードを受信してもよい。クライアントワードは、一つ又は複数のクライアントから受信してもよい。
図中、"Pull"(プル)との語句が記載されているのは、センサからバッファへのデータの通信が、センサから開始されるものではないことを示している。ある実施形態では、センサは、要求されたときにはいつでも、システムをワードを供給してもよい。実施形態によっては、センサからのデータの通信は、経験マトリクスの更新を開始しない。
図中、"Push"(プッシュ)との語句が記載されているのは、クライアントからバッファへのデータの通信が、クライアントから開始されるものであることを示している。実施形態によっては、クライアントからのデータの通信は、経験マトリクスの更新を開始してもよい。
図中、"Flush"(フラッシュ)との語句が記載されているのは、一つ又は複数のワードのバッグ(bag-of-words)を用いて、経験マトリクスを更新することを示してもよい。バッグは、バッファのコンテンツから集められてもよい。
経験マトリクスは、予測を提供する時に、上述のように使用されてもよい(図3a-3cに関する説明を参照のこと)。
図7aは、共起データを処理するサブシステム400を描いている。サブシステム400は、経験マトリクスEX1の中に共起データを格納するように構成されてもよい。サブシステム400は、経験マトリクスEX1の中に格納されている共起データに基づいて、予測を提供するように構成されてもよい。
サブシステム400は、ワードを受信し格納するバッファBUF1,ワードをバッグに集める収集ユニットWRU,バッグのワードを格納するメモリMEM1,基本スパースベクトルを提供するスパースベクトル供給部SUP1,語彙VOC1を格納するメモリMEM3,メモリMEM3に格納される語彙,経験マトリクスEX1のベクトルを修正したり、及び/又は、クエリベクトルQV1を形成したりする、結合ユニットLCU1,経験マトリクスEX1を格納するメモリMEM2,メモリMEM2に格納される経験マトリクスEX1,クエリベクトルQV1を格納するメモリMEM4,クエリベクトルQV1を、経験マトリクスEX1のベクトルと比較する差分解析ユニットDAU1を備えていてもよい。サブシステム400は、オプションで、クエリQ1及び/又は予測OUT1を格納するバッファBUF2及び/又はBUF3を備えていてもよい。
ワードは、一つ又は複数のセンサ(NAV1,G1)、クロックCLK1、一つ又は複数のクライアントC1のいずれか一つ以上から受信されてもよい。ワードは、収集ユニットWRU1によって、各バッグに集められてもよい。バッグのワードはメモリMEM1に集められてもよい(すなわち、一時的に格納されてもよい)。各バッグのコンテンツは、メモリMEM1からスパースベクトル供給部SUP1へと届けられてもよい。スパースベクトル供給部SUP1は、経験マトリクスを更新するための基本スパースベクトルを提供するように構成されてもよい。
各バッグのコンテンツ及び基本スパースベクトルは、結合ユニットLCU1に届けられてもよい。結合ユニットLCU1は、経験マトリクスEX1のベクトルを(例えば線形結合を形成することにより)修正するように構成されてもよい。特に、結合ユニットLCU1は、基本スパースベクトルを、各バッグのワードにより特定されるターゲットベクトルに加えるように構成されてもよい。結合ユニットLCU1は、ハードウェアレベルでベクトルの加算を実行するように構成されてもよい。結合ユニットLCU1の電気的及び/又は光学的回路は、同じバッグのワードに関連するいくつかのターゲットベクトルを同時に修正するように構成されてもよい。これは、高いデータ処理レートを可能にするだろう。
経験マトリクスEX1は、メモリMEM2に格納されてもよい。ワードは、メモリMEM3に格納されている語彙VOC1を使って、経験マトリクスEX1のベクトルに関連付けられてもよい。ベクトル供給部SUP1は、例えばバッグのワードに関連する基本スパースベクトルを提供するために、語彙VOC1(または別の語彙)を使用するように構成されてもよい。
サブシステム400は、結合ユニットLCU1又は別の結合ユニットを備えていてもよい。これらは、クエリQ1のワードに基づいてクエリベクトルQV1を形成するように構成される。クエリベクトルQV1は、経験マトリクスEX1のベクトルの線形結合をとして形成されてもよい。経験マトリクスEX1における、関連性の高いベクトルの位置は、語彙VOC1を用いることにより見つけられてもよい。クエリベクトルQV1は、メモリMEM4に格納されてもよい。
差分解析ユニットDAU1は、クエリベクトルQV1を、経験マトリクスEX1のベクトルと比較するように構成されてもよい。差分解析ユニットDAU1は、経験マトリクスEX1のベクトルとクエリベクトルQV1との差(difference )を決定するように構成されてもよい。差分解析ユニットDAU1は、いくつかのベクトルについて決定された複数の差をソートするように構成されてもよい。差分解析ユニットDAU1は、前述の比較に基づいて、予測OUT1を提供するように構成されてもよい。クエリワードQ1,Q2自身は、予測ワードから除外されてもよい。
差分解析ユニットDAU1は、ハードウェアレベルでベクトルの比較を行うように構成されてもよい。差分解析ユニットDAU1の電気的及び/又は光学的回路は、経験マトリクスEX1のいくつかのベクトルについて、同時に、量的な差分記述子(DV)を決定するように構成されてもよい。これは、高いデータ処理レートを可能にするだろう。
サブシステム400は、サブシステムの動作を制御するための、及び/又はシステム500の動作を制御するための、制御ユニットCNTを備えてもよい。制御ユニットCNTは、一つ又は複数のデータプロセッサを備えていてもよい。サブシステム400は、プログラムコードPROG1を格納するためのメモリMEM5を備えていてもよい。プログラムコードPROG1は、一つ又は複数のデータプロセッサに実行されると、本発明の方法を実行するものであってもよい。
ワードは、例えば、一つ又は複数のクライアントC1や、一つ又は複数のセンサG1、位置センサNAV1、クロックCLK1等から得られてもよい。一つ又は複数の予測ワードOUT1は、クライアントC1又は他のクライアントに通信されてもよい。クライアントC1はまた、例えばクエリQ1を形成するために、バッファBUF1からシステムワードを読み出してもよい。
図7bは、センサとその環境との物理的な相互作用に基づいて、どのようにワードが供給されるのかを、例を用いて示している。センサG1は、その物理的環境を監視することにより、一つ又は複数のセンサ信号であって電気的又は光学的なセンサ信号S0を提供してもよい。この監視は、物理的環境との受動的な相互作用又は能動的な相互作用を含んでもよい。例えば、受動的な相互作用について、マイクロフォン又は光センサは、システムから何ら促しを受けることなく、音波又は光波を受け取ってもよい。信号S0は、例えば、マイクロフォンによって受け取られた音波の振幅及び周波数を表すアナログ信号であってもよい。信号S0は、例えば、加速度センサによって検出された、振動の振幅及び周波数を表すアナログ信号であってもよい。
能動的な相互作用について、センサG1は、例えば超音波や赤外光を放出してもよい。これらは周囲の面によって反射されるかもしれない。例えば、周囲の面までの距離が、マイクロフォン又は光センサで受信した反射音波又は反射光波に基づいて推定されてもよい。さらに、場合によっては、デジタルセンサ信号S1が、センサインタフェースGIN1において、(アナログ)信号S0を処理することにより、提供されてもよい。デジタルセンサ信号S1は、例えば、マイクロフォンが受信した音のスペクトル解析の結果を含んでいてもよい。デジタルセンサ信号S1は、イメージセンサによりキャプチャされたデジタル画像を含んでいてもよい。
センサのあるものは、量子化されたデジタル信号を直接提供してもよい。そのような信号は、直接システムワードとして用いられてもよい。例えば、マイクロスイッチ近接センサや、ジョイスティックのデジタルエンコーダは、システムの状態を表すデジタルワードを直接提供してもよい。例えばマイクロスイッチは、何かがスイッチを押しているかいないかを示す、ワード"1" またはワード"0"を提供してもよい。
場合によっては、量子化器QU1は、デジタルセンサ信号S1に基づいて、量子化されたセンサ信号S2を提供するように構成されてもよい。量子化は、マッピング機能を用いて遂行されてもよい。このマッピング機能は必要に応じて後に修正されてもよい。例えば、0から127の範囲を有する音量値(すなわち128個の異なる値を取り得る音量値)が、小さな数の値に(例えば0,1,2に)マッピングされてもよい。
場合によっては、量子化器QU1は、信号S1を2つ又はそれ以上の異なるクラスに分類するように構成される分析器を備えていてもよい。量子化器QU1は分類器であってもよい。量子化器QU1は、信号S1のクラスを示す値を提供してもよい。例えば量子化器QU1は、スペクトル分析に基づいて、音のクラスを示す値を提供するように構成されてもよい。例えば、モーターの音に0を、音楽に1を、人間の声に2を提供するように構成されてもよい。
量子化器QU1によって提供される値は、サブシステム400への入力ワードとして用いられてもよい。場合によっては、この値は(異なる)ワードへと変換されてもよい。例えば、その値が、人間のユーザにより理解しやすいものとなるように、変換されてもよい。
量子化されたセンサ信号S2は、場合によっては、センサの物理的環境を記述するワードであって、日常使用する言語(例えば英語やフィンランドを)のワードに変換されてもよい。信号S2は、辞書を用いてワードに変換されてもよい。辞書のコンテンツは固定的なものであってもよいし、更新可能なものであってもよい。例えば、0がモーターの音を、1が音楽を、2が人間の声に対応付けられた辞書を用いて、音の性質を表す数値ワード(0,1,2)が、日常使用する言語に変換されてもよい。例えば、0が無音を、1が通常音量を、2が大音量に対応付けられた辞書を用いて、音量を表す数値ワード(0,1,2)が、日常使用する言語に変換されてもよい。
場合によっては、マーカーユニットMRK1は、識別子を付加することによってワードを変換するように構成されてもよい。この識別子は、特定のワードを、他のワードから一意に区別する。この識別子は、例えば、センサS1の身元を特定したり、ワードによって特定される量の種類を特定したりしてもよい。例えば、ワードが、音量を表す数値ワードである場合(例えば0,1,2である場合)、ワードの前にプレフィックス"volume"が付加されて、"volume 0"のようなワードが形成されてもよい。
このように、上述の一つ又は複数の方法ステップを用いて、センサS1が、センサワード(システムワード)を提供するように構成されてもよい。
実施形態によっては、加速度センサから信号を受信する分析ユニットは、例えば、ポータブルデバイスが静止しているか、歩いている人に運ばれているか、走っている人に運ばれているか、動いている車両によって運ばれているか、などを決定するように構成されてもよい。分析ユニットは、これらの様々な状態を表すワード"静止","歩き","ランニング","旅行"のようなワードを提供してもよい。加速度センサは、例えば、キャパシタ式や、ピエゾ式の加速度センサであってもよい。
なお、センサG1から得られる信号を、文脈的に明確な意味を有するセンサワードに変換しなければならないというわけではない。すなわち、辞書THESA1を使用しなければならないというわけではない。実施形態によっては、加速度センサからの信号を受信する分析ユニットは、様々な加速状態を表すセンサワードを提供してもよい。例えば、"加速A","加速B","加速C"のようなセンサワードを提供してもよい。サブシステム400及びセンサG1を有するシステム500は、センサワードの意味が状況から明らかでないよな場合であっても、適切な予測を行うように動作しうる。
センサG1から提供されるワードは、例えば、統一資源識別子(URI)として表されてもよい。URIはスキームと、スキームによって定義された部分とを有する。例えば、加速度センサを用いて提供されるワードは、例えば、"motion://moving"や、"motion://stationary"のようなものであってもよい。ここで、第1の部分"motion"(動き)がスキームを表し、第2の部分"moving"(移動中)や"stationary"(静止中)がスキームによって定義された部分である。これらの部分は記号"://"で隔てられていてもよい。加速度センサを用いて提供されるワードは、例えば、"orientation://vertical"や、"orientation://horizontal"のようなものであってもよい。第1の部分"orientation"(方向)がスキームを表し、第2の部分"vertical"(縦方向)や"horizontal"(横方向)がスキームによって定義された部分である。
図7a-7cを参照する。スパースベクトル供給部SUP1は、以前に生成されたスパースベクトルをメモリから読み出すことによって、スパースベクトルを提供してもよい。及び/又は、スパースベクトルをリアルタイムに生成して提供してもよい。
図7cを参照する。スパースベクトル供給部SUP1は、語彙VOC1(図1a参照)のワードに関連する基本スパースベクトルa1, a2,... anを格納するメモリを備えていてもよい。基本スパースベクトルa1, a2,... anは、基本スパースマトリクスRM1を形成してもよい。基本スパースベクトルa1, a2,... anは、スパースベクトル供給部SUP1のメモリに既に格納されていてもよい。代替的に又は追加的に、ワードに関連する個々の基本スパースベクトルは、バッグの中でワードが初めて使われる時に、リアルタイムで生成されてもよい。基本スパースベクトルは、乱数発生器によって生成されてもよい。図7cの構成は、例えば、図1aから図2に示された更新方法を実行するときに、使用されてもよい。
図7dを参照する。スパースベクトル供給部SUP1は、以前に決定された複数の基本スパースベクトルb1, b2,... を格納するメモリを備えていてもよい。新しいバッグが届けられると、トリガ信号が生成され、カウンタのカウント値が変化してもよい。従って、次の基本スパースベクトルは、カウンタによって示されるメモリ位置から読み出されることができてもよい。各バッグには、それぞれ異なる基本スパースベクトルが割り当てられる。また、図4a及び4bの更新方法に関連して説明したように、各基本スパースベクトルは、一つのバッグに含まれるワードの各々を代表する。
図7eを参照する。新しいバッグが届けられるたびに、乱数発生器RVGU1を用いて新しい基本スパースベクトルbkが生成される。このため、各バッグには、それぞれ異なる基本スパースベクトルが割り当てられる。(同一のスパースベクトルが2回生成される確率は無視できる。)また、図4a及び4bの更新方法に関連して説明したように、各基本スパースベクトルは、一つのバッグに含まれるワードの各々を代表する。
図7fを参照する。システム500は、共起データを格納し、及び/又は予測を提供する、サブシステム400を備えてもよい。このシステムは:
・ 状況に関連するクエリワードを一つ又は複数提供し、
・ 経験マトリクス及び前記一つ又は複数のクエリワードを用いて予測を提供し、
・ 前記予測に基づいて前記システムの動作を制御する、
ように構成されてもよい。
場合によっては、システム500は、例えばシステムの状態やシステムの周囲の性質を記述するシステムをワードを提供するセンサG1を、一つ又は複数備えていてもよい。場合によっては、システム500は、時間のデータを提供するクロックCLK1を備えていてもよい。場合によっては、システム500は、位置データを提供する位置検出器NAV1を備えていてもよい。この位置検出器は、例えばGPSナビゲーションユニットであってもよい。
前述のように、共起データは、経験マトリクスEX1に格納されてもよい。
クライアントC1は、サブシステム400にクエリQ1を送信してもよい。クエリQ1は、例えば、ユーザインタフェース501を介して人のユーザによって提供されたワードや、アプリケーションAPP1によって提供されたワード、システム500のセンサG1によって提供されたワード等のいずれか一つ以上を含んでいてもよい。クエリQ1は、インターネットサービス(例えば気象情報)から取得したワードを含んでいてもよい。上述のように、サブシステム400は、クエリQ1に基づいて一つ又は複数のワードOUT1を提供してもよい。システム500は、予測OUT1に基づいてアプリケーションAPP1やAPP2を開始したり終了したりするように構成されてもよい。システム500の動作は、予測OUT1に基づいて制御されてもよい。予測OUT1は、例えば、WEBブラウザへの入力として使用されてもよい。システム500は、予測OUT1に基づいて、ユーザインタフェース500のディスプレイに情報を表示するように構成されてもよい(ユーザインタフェース制御)。システム500は、予測OUT1に基づいて、動作モードを設定するように構成されてもよい。システム500は、予測OUT1に基づいて、個々のアプリケーション及び/又はユニットへのデータ処理能力の割り当てを行うように構成されてもよい。システム500は、予測OUT1に基づいて、システムの(物理的な)機能ユニット(例えばGPSナビゲーションユニットやオーディオアンプ)の動作を開始したり停止したりするように構成されてもよい。
システム500の第1のデバイスの動作は、システム500の第2のデバイスから得られるワードに基づいて制御されてもよい。例えば、第1のデバイスはユーザ(第1の人)によって運ばれるデバイスであり、第2のデバイスは第2の人によって運ばれるデバイスであってもよい。第2の人は、例えば、第1の人の家族であったり友人であったり、同僚であったりしてもよい。クエリQ1は、第2のデバイスの状態に関連する一つ又は複数のワードを含んでいてもよい。及び/又は、第2の人の予定に関連する一つ又は複数のワードを含んでいてもよい。そしてシステムは、クエリQ1に基づいて予測OUT1を提供してもよい。予測OUT1に基づいて、システムは、機能をアクティブ化することを提案してもよい。
例えば、第2のデバイスがサイレントモードに設定されたとき、システム500は、第2の人が好むであろう連絡方法が例えばSMSメッセージやEメールであって電話ではないことを予測し、提案してもよい。経験マトリクスは共起データを格納してもよいが、その共起データは、第2のデバイスがサイレントモードに設定されている場合は電話をかけてもほぼ応答してもらえないということを示すものであってもよい。経験マトリクスは共起データを格納してもよいが、その共起データは、第2のデバイスがサイレントモードに設定されている場合であっても、第2のデバイスのユーザはEメールに対してはすぐに応答することがあることを示すものであってもよい。従って、第1のデバイスのユーザが第2の人に電話をかけようとするとき、システム500は、第2のデバイスにメッセージを送信するアプリケーション(SMSメッセージやEメール等)を立ち上げることを提案してもよい。
図8a-8cは、通信システムの動作を予測を用いて制御する例を描いた図である。
システム500の経験マトリクスEXは、図8aに描かれるバッグBAG4〜BAG9を用いて更新されてもよい。この例において、バッグBAG4〜BAG7は、ワード"meeting", "Person A", "silent mode"を含む(それぞれ「ミーティング」「人A」「サイレントモード」の意味を有する)。バッグBAG5〜BAG8は、ワード"meeting", "Person B", "teleconference with person C"を含む(それぞれ「ミーティング」「人B」「人Cと電話会議」の意味を有する)。バッグBAG6〜BAG9はワード"meeting", "Person C", "normal mode"を含む(それぞれ「ミーティング」「人C」「通常モード」の意味を有する)。バッグBAG4〜BAG9はまた、時間及び曜日を特定するワードを含む。
図8bを参照すると、システム500は、例えば、カレンダーのマークに基づいて、人Aとのミーティングが9時開始で設定されていることを決定してもよい。経験によれば、ワード"meeting"及び"Person A"は、ワード"silent mode"と共に現れることが多い。この共起データは経験マトリクスEX1に既に格納されている。システム500のクライアントは、ワード"9:00", "meeting", "Person A"を含むクエリQ1を生成してもよい。サブシステム400は、図8aに描かれる、共起データを含む経験マトリクスEX1を用いて、クエリQ1に基づいて予測を提供してもよい。この例では、サブシステム400により提供される予測は、ワード"silent mode"を含んでいてもよい。また、クエリQ1のワードにより特定される時間及び/又は曜日が、予測の結果に影響を与えてもよい。例えば、特定の時間及び/又は曜日に設定されるミーティングは、例えばワード"playing video"(ビデオを再生する)に関連することが多いように見えてもよい。しかし、この例においては、バッグの曜日や時間は分散しており、そのような関係を見つけることはできないようである。
ミーティングが開始しようとしている時、(例えば8:59、)システム500は、(例えばミーティングが着信に邪魔されないように、)動作モード(プロファイル)をサイレントモードに変更することを提案してもよい。一つ又は複数の情報フィールドF1-F4がユーザに提示されてもよい。フィールドF1は、サイレントモードに変更することを提案してもよい。ユーザは、例えば(仮想)キーB1又はB2をタッチすることにより、この提案を受け入れたり拒否したりしてもよい。実施形態によっては、キーB2は省略されてもよい。ユーザがキーB2を所定の時間内にタッチしない場合、システムは、自動的にサイレントモードに変更してもよい。実施形態によっては、キーB1は省略されてもよい。ユーザがキーB1にタッチしない場合、システムは通常モードでの動作を継続してもよい。実施形態によっては、キーB1もB2も省略されてもよい。ユーザは、予め、システムが予測に基づいて自動的に動作モードを設定することを許可してもよい。
フィールドF2-F4は補助的な情報を表示してもよい。フィールドF3は、オプションで、例えば実際の時間を表示してもよい。フィールドF2は、オークションで、例えば次の重要なイベント(例えば人Aとのミーティングなど)を表示してもよい。フィールドF4は、オプションで、例えばカレンダーを表示してもよい。動作モードを設定することに加えて、システム500はまた、フィールドF1-F4を表示することや、キーB1,B2を表示することを、予測に基づいて制御してもよい。
予測に基づいて動作を制御することのおかげで、ユーザは今や、一つのキーをタッチするだけでシステムをサイレントモードに設定することができるだろう。実施形態によっては、システムをサイレントモードに設定するために、ユーザは何もする必要がない。
予測がない場合、ユーザは、システムをサイレントモードに設定するために、システムのメニュー構造から適切なメニューを探す必要があるだろう。通常、そのような操作には、ユーザインタフェース501のメニュー構造のメニューにおいて、何回かの選択操作や確認操作が必要とされうる。
図8cを参照すると、システム500は、例えば、カレンダーのマークに基づいて、人Bとのミーティングが13時開始で設定されていることを決定してもよい。経験によれば、ワード"meeting"及び"Person B"は、ワード"teleconference with person C"(人Cと電話会議)と共に現れることが多い。この共起データは経験マトリクスEX1に既に格納されている。
システム500のクライアントは、ワード"13:00", "meeting", "Person B"を含むクエリQ1を生成してもよい。サブシステム400は、図8aに描かれる、共起データを含む経験マトリクスEX1を用いて、クエリQ1に基づいて予測を提供してもよい。この例では、サブシステム400により提供される予測は、ワード"teleconference with person C"を含んでいてもよい。ミミーティングが始まろうとしている時、(例えば12:59、)システム500は、人Cとの電話会議を開始することを提案してもよい。一つ又は複数の情報フィールドF1-F4がユーザに提示されてもよい。ユフィールドF1が、人Cとの電話会議を開始することを提案してもよい。ユーザは、例えば(仮想)キーB1又はB2をタッチすることにより、この提案を受け入れたり拒否したりしてもよい。
ユーザが提案を受け入れると、システムは自動的に電話会議を開始してもよい。これは、ユーザのビデオ画像を撮影するカメラモジュールを自動的に起動することを含んでもよい。また、遠隔地にいる人Cのインタフェースとビデオ通信リンク及び/又は音声通信リンクを(自動的に)開くことを含んでもよい。
実施形態によっては、キーB2は省略されてもよい。ユーザがキーB2を所定の時間内にタッチしない場合、システムは、自動的に電話会議リンクを開いてもよい。実施形態によっては、キーB1は省略されてもよい。ユーザがキーB1にタッチしない場合、システムは電話会議リンクを開かなくともよい。実施形態によっては、キーB1もB2も省略されてもよい。ユーザは、予め、システムが予測に基づいて自動的に電話会議リンクを開くことを許可してもよい。
予測に基づいて動作を制御することのおかげで、ユーザは今や、一つのキーをタッチするだけで、自動的に電話会議リンクを開くことができるだろう。実施形態によっては、自動的に電話会議リンクを開くために、ユーザは何もする必要がない。
予測がない場合、ユーザは、自動的に電話会議リンクを開くために、システムのメニュー構造から適切なメニューを探す必要があるだろう。通常、そのような操作には、ユーザインタフェース501のメニュー構造のメニューにおいて、何回かの選択操作や確認操作が必要とされうる。
図8dは、経験マトリクスEXを更新し、予測に基づいてシステムを制御する方法のステップを描いたものである。ステップ705において、スケジュールされたイベント又は実際のイベントが、システムのメモリに格納されてもよい。特に、カレンダーのイベントが、例えばインタフェース501を介して、ユーザ又は他の人によって、メモリに追加されてもよい。ステップ710において、ユーザ又は他の人は、ステップ705において述べられたイベントに関連する動作モードにシステムを設定してもよい。ステップ715において、ユーザ又は他の人は、ステップ705において述べられたイベントに関連する一つ又は複数のアプリケーションを起動又は終了してもよい。ステップ720において、イベントを記述するワード、動作モード、アプリケーション、の一つ以上がバッグに集められる。システム500の経験マトリクスEX1は、このバッグを用いて更新されてもよい。以前のイベントを表す共起データは、このステップの前に、マトリクスEX1の(スパース)ベクトルとして既に格納されていてもよい。すなわちマトリクスは、ステップ720の前に空にされる必要はない。ステップ705−720は、いくつかの異なるイベントに関連する共起データを集めるために、何回か繰り返されてもよい。
ステップ750において、システムは、イベントを記述するワードを含むクエリQ1を形成してもよい。クエリQ1は、イベントに関連する追加の情報を特定するワードを含んでもよい。例えば、イベントに関連する人の識別情報を含んでもよい。ステップ755において、サブシステム400は、クエリQ1と、経験マトリクスEX1に既に格納されているベクトルとを用いて、予測を提供してもよい。ステップ760において、システム500は、予測に基づいて、例えば、一つ又は複数のアプリケーションを起動又は終了することを提案してもよい。システム500はまた、予測に基づいて、動作モードを設定することを提案してもよい。ステップ765において、システムは、ステップ760で提案したアクションを実行することの許可をユーザに求めてもよい。実施形態によっては、ユーザは予め許可を与えていてもよい。ステップ770において、ユーザから得られた応答がメモリに記録され、経験マトリクスEX1を更新するために使用されてもよい。特に、この応答を記述するワードが、クエリQ1に関係する一つ又は複数のワードと同じバッグに、共に収集されてもよい。このバッグのこれらのワードは経験マトリクスEX1を更新するために使用されてもよい。予測に従って動作モードを設定することが、ステップ765においてユーザに受け入れられた場合、ステップ775において、動作モードの設定が行われてもよい。予測に従って一つ又は複数のアプリケーションを開始又は終了することが、ステップ765においてユーザに受け入れられた場合、ステップ780において、その開始又は終了が行われてもよい。
ステップ705−780は何回か繰り返されてもよい。システム500に得するポータブルデバイスの寿命の間、ステップ705−780は、1日の間に例えば何回か繰り返されてもよい。この寿命は数年であってもよい。例えば4年以上であってもよい。従って、経験マトリクスEX1は、最終的には、例えば1000以上のイベントを表す共起データ(1000以上のバッグを表すデータ)を含むようになってもよい。
経験マトリクスEX1を格納するメモリMEM2は、ユーザに運ばれる第1のポータブルデバイスに備えられていてもよい。この第1のポータブルデバイスは、例えば、スマートフォンやポータブルコンピュータと呼ばれてもよく、無線通信機能を有していてもよい。この第1のポータブルデバイスは、例えば、図11に描かれるデバイス1260,1251,1250のいずれかであってもよい。
この第1のポータブルデバイスは、いつかは旧式のものになってしまうだろう。または、紛失されたり壊れたりするだろう。経験マトリクスEX1の(バックアップ)コピーがシステム500に保存されてもよい。この(バックアップ)コピーは、メモリMEM2とは異なる場所に保存されてもよい。以前のデータを含む経験マトリクスEX1は、必要に応じて1つ又は複数のポータブルデバイスに簡単にコピーできてもよい。
経験マトリクスEX1は、第1の人のデバイスから第2の人のデバイスへとコピーできてもよい。経験マトリクスEX1は、あるデバイスから他のデバイスへと送信されてもよいが、この送信は、例えばインターネット、電気ケーブル、光ケーブル、無線リンク、携帯電話ネットワーク、経験マトリクスEX1を格納する物理メモリ(例えばコンピュータメモリ製品)などを介して行われてもよい。コピーすることには、支払いが関わっていてもよい。すなわち、経験マトリクスEX1は単独のアイテムとして販売されてもよく、経験マトリクスEX1にデータを収集するために用いられた元のシステム500とは独立に販売されてもよい。経験マトリクスEX1は、その全部があるデバイスから他のデバイスへと送信されてもよいし、その一部のみがあるデバイスから他のデバイスへと送信されてもよい。また、送信先のマトリクスの全部または一部を置き換えなくてもよい。例えばユーザは、休暇の旅行に関連して経験マトリクスの更新(例えばイタリアアルプスに関する情報)を受信してもよい。
経験マトリクスEX1に格納されるデータは、経験マトリクスEX1を更新するために使用されたワードと同じ又は似たようなワードをクエリQ1が含んでいる時に、有用であることが多い。経験マトリクスEX1に格納された以前のデータは、特定のタイプのシステムにのみ使用可能でもあってもよい。第2のタイプのシステムには実質的に無用なデータであってもよく、異なるクエリワードを用いるものであってもよく、根本的に異なる環境で働くものであってもよい。例えば、専門的なミーティングに関するデータしか含んでいない経験マトリクスEX1は、ユーザが自由時間に見たいと欲するビデオクリップを予測するためには有用ではない可能性が高いだろう。
図9aは、経験マトリクスEXがハッシュテーブルを用いてどのように表現しうるかを描いている。経験マトリクスEX1の要素eikの多くは値0の要素でありうる。経験マトリクスEX1のいくつかのベクトルは、要素がゼロのベクトルでありうる。このような場合、値0を格納するのにメモリ空間を使用する必要はない。語彙VOC1はハッシュテーブルであってもよく、語彙VOC1に格納される各ワードはキーとして使用されてもよい。語彙VOC1のエントリは、値の配列INDHを指し示してもよい。INDHは、経験マトリクスEX1の非ゼロ要素eikの実際の値を含んでいてもよい。例えば、個々のワードwkは値の配列INDHkを指し、INDHkは、経験マトリクスEXのベクトルvkの非ゼロ要素の値を含んでもよく、ベクトルvkはワードwkに関連するものであってもよい。値の配列INDHkの全ての要素は非ゼロであってもよい。
第2のハッシュテーブルCAH1が、経験マトリクスの列のうち非ゼロ要素を含む列の経過を記録するために使用されてもよい。第2のハッシュテーブルCAH1は、例えば"columns activated"(列に活性化された)ハッシュテーブルと呼ばれてもよい。第2のハッシュテーブルCAH1は、キーとして列番号(i)を持っていていてもよい。第2のハッシュテーブルのエントリは、出現配列(occurrence array)OCCLをポイントする。各出現配列は、ワード(wk)の行番号(k)のリストを含んでもよい。ワード(wk)は、経験マトリクスEX1の対応する列に寄与するワードである。例えば、出現配列OCCLiは行番号k1, k2, k3を含んでもよく、これらはそれぞれ列iにおける要素eを示し、また行k1, k2, k3における要素eは非ゼロであることを示してもよい。
ハッシュテーブルVOC1及びCAH1、値の配列(value array)INDHのグループ、出現配列のグループは、一緒になって、経験マトリクスEX1における非ゼロ要素の値及び位置を完全に特定することができてもよい。
値の配列INDHは、経験マトリクスの一つのベクトルの非ゼロ要素の値のみを含んでいてもよい。経験マトリクスEX1におけるこれらの非ゼロ要素を含む列のインデックスを特定する必要はない。というのも、この情報は、上記値の配列INDHに関連するワードをポイントする出現配列から導き出すことが可能でありうるからである。値の配列INDHは、非ゼロ要素の値に加えて、追加の情報を含んでいてもよい。例えば、経験マトリクスEX1において非ゼロ要素を含む列のインデックスに関する情報を含んでいてもよい。複数の値配列INDHは、一緒になって、値マトリクス(value matrix)を形成してもよい。複数の出現配列OCCLは、一緒になって、出現マトリクス(occurrence matrix)を形成してもよい。
図9bは、ハッシュテーブルによって表現される経験マトリクスEX1を更新するステップを示している。この例において、語彙VOC1に含まれるワードの既定のグループは、更新マトリクスEX1のいくつかの行が変更されることを防ぐために用いられてもよい。この既定の語彙に属するワードは無視されてもよい。ステップ810において、ワードのバッグ(bag-of-words)が受信される。ステップ830において、バッグのワードが語彙VOC1に含まれているかどうかがチェックされる。語彙VOC1に含まれていないワードは、ステップ820において、無視されてもよい。これは、経験マトリクスEX1のいくつかの行が変更されることを防ぐためである。ステップ840において、バッグのワードの各々を表す基本スパースベクトルが、語彙VOC1及び基本スパースマトリクスRM1を用いて決定されてもよい(図1aを参照)。別様には、一つのバッグの中の全てのワードには共通の(すなわち同一の)スパースベクトルが割り当てられてもよい(図4aを参照)。バッグのワードwkに関連する値の配列INDHkに格納される要素の値は、(一つ又は複数の)基本スパースベクトルを用いて更新されてもよい。図1aから図2で説明された更新方法または図4aから4bで説明された更新方法が使用されてもよい。個々の要素の値は、元の値から大きくされたり小さくされたりしてもよい。更新処理の後、要素の値は0になってもよい。この場合、この要素は、メモリを節約するために、マトリクスの表現から除去されてもよい。または、ゼロの値のまま残されていてもよい。
更新処理の最中に、経験マトリクスEX1のベクトルの非ゼロ要素の数が増やされる必要があるかもしれない。従って、追加の値を格納するために、値の配列INDHkが長くされてもよい。値の配列INDHkに格納される値の位置は、当該値の配列によって表現される経験マトリクスのベクトルにおける位置と、同じ順番になっていてもよい。これは、要素は、値の配列INDHkの途中に挿入される場合もあれば、値の配列INDHkの最後に挿入される場合もあることを意味している。
ステップ860において、ハッシュテーブルCAH1及び出現配列OCCLは、(おそらく値の配列INDHに加えられた)新しい要素に従って、更新されてもよい。以前はゼロ列であった列(i)の要素eikに、非ゼロ値が格納された場合、列(i)が使用されているワードへの一つ又は複数のポインタを含む出現配列OCCLへのポインタを含むように、ハッシュテーブルCAH1が更新されてもよい。ハッシュテーブルVOC1及びCAH1、並びに配列INDH及びOCCLは、経験マトリクスの共起データを含む。経験マトリクスEX1は、ハッシュテーブルVOC1及びCAH1、並びに配列INDH及びOCCLを用いて、ハッシュテーブルの形式で表されてもよい。
図9cは、経験マトリクスEX1を用いて予測を行う方法のステップを描いている。経験マトリクスEX1は、図9aに従ってハッシュテーブルによって表されてもよい。ステップ910において、一つ又は複数のクエリワードQ1, Q2を含むクエリが受信される。ステップ920において、クエリワードQ1, Q2の各々について、経験マトリクスEX1における関連するベクトルが、語彙VOC1を用いて特定されてもよい。経験マトリクスEX1がハッシュテーブルの形式で表されている時、ベクトルの非ゼロ要素は、配列INDHによって特定されてもよい。
ステップ930では、クエリベクトルQV1が形成されてもよい。1つのクエリワードQ1しかない場合、経験マトリクスEX1の関連するベクトルが、クエリベクトルQV1として用いられてもよい。クエリが2つ又はそれ以上のクエリワードQ1, Q2を含んでいる場合、クエリベクトルQV1は、ステップ930で特定されるベクトルの線形結合として形成されてもよい。より具体的には、クエリベクトルQV1は、ステップ930で特定されるベクトルの和として形成されてもよい。
ステップ940において、ステップ930で決定されたクエリベクトルQV1が、経験マトリクスEX1のベクトルと比較されてもよい。この比較は、経験マトリクスEX1における複数のベクトルの各々と、クエリベクトルQV1との差を個別に決定することを含んでもよい。経験マトリクスEX1がハッシュテーブルの形式で表されている時、ベクトルの非ゼロ要素は、配列INDHによって特定されてもよい。ステップ950において、クエリベクトルQV1との差が最も小さい一つ又は複数のベクトルに関連する一つ又は複数のワードが選択され、予測ワードとしてもたらされてもよい。前述のように、予測ワードはシステム500の動作を制御するために用いられてもよい。
図10aは、一つ又は複数のオリジナルワードT1に基づいて、一つ又は複数の補助ワードT2-T6を生成する様子を示している。オリジナルワードに代えて補助ワードを用いることや、オリジナルワードに加えて補助ワードを用いることは、経験マトリクスEX1を更新するときや、予測を行うときに、より有用であることがある。
オリジナルワードは、例えば、"2012年1月2日09:03"であるかもしれない。ここで、ほとんど同じ文字列"2012年1月2日09:04"であっても、原理的に、完全に異なるワードであると解釈されうる。これは、経験マトリクスEX1を更新したり使用したりすることの効率を落とすかもしれない。更新処理の目的は、例えば、共起データを収集することであり、それによって、特定の曜日において行われるであろう行動の予測を可能にすることでありうる。このような目的のために、オリジナルワード"2012年1月2日09:03"は、2012年1月2日に対応する特定の曜日(月曜日)を特定する補助ワードT5に置き換えられてもよい。または、このオリジナルワードに当該補助ワードT5がつかされてもよい。補助ワードT5は、例えばカレンダーを用いてオリジナルワードから決定されてもよい。
オリジナルワード"2012年1月2日09:03"に含まれている時間情報は、目的によっては時間的な分解能が高すぎるかもしれない。例えば、目的が、例えば、(バッテリやデータ処理能力を多く消費する)ウイルススキャンアプリケーションを実行するために適切な時間を予測することである場合、低い時間分解能を有する補助ワードT6(例えば午前中)が、オリジナルワード"2012年1月2日09:03"から決定されてもよい。この補助ワードは、例えば辞書を用いて提供されてもよいし、及び/又は、量子化器(分類器)を用いて提供されてもよい。
例えば、次のようなワードが時間を表現するために用いられてもよい。
time://late night (00:16から04:00の時間を表す)
time://early morning (04:01から06:00の時間を表す)
time://morning (06:01から11:45の時間を表す)
time://noon (11:46から12:15の時間を表す)
time://afternoon (12:16から17:00の時間を表す)
time://early evening (17:01から19:00の時間を表す)
time://evening (19:01から23:45の時間を表す)
time://midnight (23:46から0015の時間を表す)
オリジナルワードは例えば位置を特定してもよい。この位置は、例えばGPS座標により特定されてもよい。及び/又は、場所の名前を提供することにより特定されてもよい。一つ又は複数の補助ワードが、例えば電子地図を用いて、オリジナルワードから決定されてもよい。この地図は、例えばインターネットからダウンロードされてもよい。一つ又は複数の補助ワードは、遠隔サービス(例えばインターネットサービス)から提供されてもよい。
例えば、システム500の第1のデバイスは、フィンランドのヴァンター(Vantaa)と呼ばれる場所に位置しているかもしれず、第2のデバイスは、フィンランドのエスポー(Espoo)と呼ばれる場所に位置しているかもしれない。例えば、補助ワード"フィンランド南部"や"フィンランド中央部"が、(例えば電子地図や場所の辞書を用いてワード"ヴァンター"から決定されてもよい。例えば、補助ワード"フィンランド南部"や"フィンランド中央部"は、(例えば電子地図や場所の辞書を用いてワード"エスポー"からも決定されてもよい。共通の補助ワードのおかげで、第1のデバイスから集められた共起データが、第2のデバイスのユーザに関連する予測を提供するために用いられうる。
システム500のユーザは、場所を名称に関連付けでもよい。例えば、ユーザに運ばれるポータブルデバイスは、その位置を、例えばGPSナビゲーションユニットにより決定すると共に、そのユーザに、検知した場所の名称を与えるように要求してもよい。ユーザにより与えられる名称は、その(GPS)位置に関連してしばしば用いられる名称であってもよい。この名前は、例えば、"自宅", "学校", "大学", "仕事場"のようなものであってもよい。一つ又は複数の補助ワードT2, T3, T4は、トークン化(tokenizing)や構文解析(parsing)の手法を用いてオリジナルワードから形成されてもよい。補助ワードT2からT6は、オリジナルワードT1に代えて、又はT1と共に、バッグに用いられてもよい。範囲の広い統一資源位置指定子(URL)が、範囲の狭いURLに基づいて決定されてもよい。特に、範囲の広いインターネットURLが、範囲の狭いインターネットURLに基づいて決定されてもよい。
図10bを参照する。狭い語義を有するオリジナルワードSPEC1("種")に基づいて、広い語義を有する補助ワードGEN1("属")が決定されてもよい。広い語義を有する補助ワードGEN1("属")は、(語義)辞書DC1を用いて、狭い語義を有するオリジナルワードSPEC1("種")から決定されてもよい。例えば、ワード"食事"または"食べ物"が、オリジナルワード"ピザ"から決定されてもよい。辞書DC1は、例えば(インターネット)サービスからダウンロードされてもよい。補助ワードGEN1は、リモートサービスに伝えられたオリジナルワードに基づいて、当該リモートサービスから提供されてもよい。システムは、オリジナルワードに対して意味的に上位に位置するものであるGEN1を決定するように構成されてもよい。意味的に上位に位置するものであるGEN1は、実質的にバッグの中のワードとして使用されてもよく、または、実質的にクエリの一部として使用されてもよい。
また、狭い語義を有する補助ワード("種")が、(辞書を用いて、)広い語義を有するオリジナルワード("属")に基づいて決定されてもよい。システムは、オリジナルワードに対して意味的に下位に位置するものを決定するように構成されてもよい。例えば、オリジナルワードが語彙VOC1に含まれておらず、語彙VOC1には語義が狭い語句のみが含まれているような場合に、上記の処理が、共起データを格納するために使用されてもよい。例えば、ワード"もうすぐ夜9時"が、オリジナルワード"晩"から決定されてもよい。しかし、この処理は、一部誤った情報を追加してしまう危険を含む場合がある。
図11、12a、12bは、ある実施形態に従って、経験マトリクスを用いてコンテキストを決定する(または予測を行う)システム及びデバイスを描いている。コンテキストは単一のデバイスで決定されてもよく、または、互いに接続している複数のデバイスで決定されてもよい。または例えば、一つ又は複数のサーバ及び一つ又は複数のユーザデバイスを有するネットワークサービスの枠組みで決定されてもよい。
図11は、経験マトリクスに共起データを収集し、格納し、また経験マトリクスで共起データを使うシステム500を、例を用いて描いている。システム500の動作は、経験マトリクスEX1のベクトルとして格納される、共起データを用いて決定される予測に基づいて制御されてもよい。システム500は、一つ又は複数のサブシステム400を有してもよい。これらのサブシステムは、経験マトリクスEX1を更新し、予測を提供する。サブシステム400の例は、既に図7a及び7fに示してある。システム500は単一のデバイスにより構成されてもよい。又はシステム500は、互いに通信するように構成される複数のデバイスを含んで構成されてもよい。サブシステム400は、単一のデバイスとして実装されてもよいし、互いに通信する複数のデバイスとして実装されてもよい。システム500は、一つ又は複数のサーバ及び一つ又は複数のユーザデバイスを有するネットワークサービス・フレームワークを含んでいてもよい。サブシステム400は、一つ又は複数のサーバ及び一つ又は複数のユーザデバイスを有するネットワークサービス・フレームワークの中に実装されてもよい。
図11は、経験マトリクスを有するシステムを描いている。図11において、様々なデバイスが互いに繋がり合っているが、この接続は、インターネットやローカル・エリア・ネットワークのような固定ネットワーク1210によって形成されてもよい。または、GSM(登録商標)ネットワークや第3世代(3G)ネットワーク、3.5世代(3.5G)ネットワーク、第4世代(4G)ネットワーク、無線ローカル・エリア・ネットワーク(WLAN)、Bluetooth(登録商標)のような、移動通信ネットワーク1220によって形成されてもよい。さらに、その他の既存の又は将来利用可能となるネットワークによって形成されてもよい。様々なネットワークが、通信インタフェース1280によって互いに接続し合っている。ネットワークは、(図示されていない)データを扱うために、ルータやスイッチのようなネットワーク要素を有する。またネットワークは、様々なデバイスにネットワークへのアクセスを提供するために、基地局1230や1231のような通信インタフェースを有する。基地局1230や1231は、有線接続1276や無線接続1277を通じて移動ネットワーク1220に接続される。
ネットワークにはいくつかのサーバが接続されていてもよい。図11の例においてはサーバ1240が描かれているが、このサーバはソーシャルメディアサービスやニュースサイト、楽曲販売、写真の保存や共有のような、ネットワークサービスを提供してもよい。サーバ1240は、固定ネットワーク1210に接続されていてもよい。図11の例においてはサーバ1241も描かれているが、このサーバは、データの保管やバックアップサービス、経験マトリクスの保存や共有のような、別のネットワークサービスを提供してもよい。サーバ1241も固定ネットワーク1210に接続されていてもよい。図11の例においてはサーバ1242も描かれており、このサーバは、上記のネットワークサービスと同じサービスや、それとは別のサービスを提供してもよい。サーバ1242は、移動通信ネットワーク1220に接続されていてもよい。上記のデバイスのいくつか、例えばサーバ1240, 1241, 1242は、固定ネットワークに存在する通信要素と共に、インターネットを構築してもよい。経験マトリクスはサーバ1240, 1241, 1242のいずれか一つ以上に格納されていてもよい。または、これらのサーバにまたがって分散配置されてもよい。例えば、経験マトリクス中のあるベクトルはあるサーバに格納され、別のベクトルは別のサーバに格納される、というのであってもよい。これらのサーバのいずれかには、いくつもの経験マトリクスが格納されていてもよい。これらの経験マトリクスは、例えば、異なるユーザから得られたものであってもよく、及び/又は、異なる目的のためのものであってもよい。サーバ1240, 1241, 1242のいずれか一つ以上は、経験マトリクスを修正するサービスを提供してもよく、または経験マトリクスを修正する能力を有していてもよい。例えば、学習させたり、別の方法で修正したり、次元を修正したり結合したりするサービスを提供したり、そのような処理能力を有していたりしてもよい。サーバ1240, 1241, 1242のいずれか一つ以上は、経験マトリクスを使って予測を行うサービスを提供してもよく、または経験マトリクスを使って予測を行う能力を有していてもよい。
他にも多くのエンドユーザ向けデバイスが存在する。例えば携帯電話やスマートフォン1251、インターネットアクセスデバイス(インターネットタブレット)1250、様々なサイズや形状のパーソナルコンピュータ1260、テレビなどの視聴デバイス1261、ビデオ再生機1262、ビデオカメラ1263等が存在してもよく、また、オーディオキャプチャーのためのデジタルマイクのようなエンコーダ等が存在してもよい。これらのデバイス1250, 1251, 1260, 1261, 1262, 1263 は、それぞれ複数の部品から構成される。これら様々なデバイスは、インターネットへの固定的な接続1270, 1271, 1272, 1280や、インターネット1210への無線接続1273、携帯電話ネットワーク1220への無線接続1278,1279,1282等の通信接続によって、ネットワーク1210及び1220に接続されてもよい。通信接続1271−1282は、それぞれの両端の通信インタフェースによって実装される。様々なエンドユーザ向けデバイスが、そのメモリに、一つ又は複数の経験マトリクスを格納していてもよく、または、経験マトリクスの一部を格納していてもよい。様々なエンドユーザ向けデバイスが、経験マトリクスを修正する能力を有していてもよく、及び/又は、経験マトリクスを使って予測を行う能力を有していてもよい。
異なる実施形態に応じて、様々な部分が様々な要素によって実行されることが可能にされることは理解されねばならない。例えば、ソフトウェアアプリケーションは、1250,1251,1260のようなユーザデバイスのいずれかの中で全て実行されてもよいし、1240,1241,1242のようなサーバデバイスのいずれかの中で全て実行されてもよいし、複数のユーザデバイス1250,1251,1260にまたがって実行されてもよいし、複数のネットワークデバイス1240,1241,1242にまたがって実行されてもよいし、ユーザデバイス1250,1251,1260及びネットワークデバイス1240,1241,1242にまたがって実行されてもよい。例えば、ユーザインタフェースを通じたユーザ入力のキャプチャがあるデバイスで生じ、データ処理及び情報のユーザへの提供が別のデバイスで生じ、コンテキスト処理の制御及び管理が第3のデバイスで遂行される、というものであってもよい。別の例では、経験マトリクスの形成がある一つのデバイス又は複数のデバイスで生じ、経験マトリクスの処理が別のデバイスで生じ、予測がさらに別のデバイスで生じるというものであってもよい。様々なアプリケーション要素やライブラリは、デバイスに保存されるソフトウェア要素として実装されることもできれが、前述のように複数のデバイスにまたがって分散配置されることもでき、例えば、これら複数のデバイスはいわゆるクラウドを形成する。ユーザデバイス1250,1251,1260は、WEBサービス・サーバとして機能してもよい。これについては、様々なネットワークデバイス1240,1241,1242と同様である。このWEBサービス・サーバの機能も、複数のデバイスにまたがって分散配置されてもよい。
様々な実施形態が、携帯デバイス上で走るソフトウェアとして実装されることができる。また、場合によっては、ネットワークベースのサービスを提供するデバイス上で走るソフトウェアとして実装されることができる。これらの携帯デバイスは、少なくとも、一つ又は複数のメモリや一つ又は複数のプロセッサ、ディスプレイ、キーボード、動き検出のためのハードウェア、2G,3G,WLAN等の通信手段を備えてもよい。様々なデバイスが、(シングルタッチやマルチタッチの)タッチスクリーンや、ネットワーク測位モジュールやGPSモジュールのような測位手段等のハードウェアを有していてもよい。これらのデバイスには様々なアプリケーションが搭載されていてもよく、例えば、カレンダー、連絡先、地図、メッセージング、ブラウザ、ギャラリー、ビデオプレーヤー等、仕事用及び/又は私用の様々なアプリケーションが搭載されていてもよい。様々なデバイスが様々なセンサを有していてもよい。例えば、温度や時刻、湿度、照度、音量、気圧、位置、動きのような、デバイスの環境の物理的性質又は状態を決定するセンサを有していてもよい。
ユーザデバイス1251はユーザインタフェース501を備えていてもよい。ユーザは、情報を、ユーザインタフェース501を介して受け取ってもよい。ユーザは、ユーザインタフェース501を介して命令を与えることにより、デバイス1251及び/又はシステム500の動作を制御してもよい。ユーザインタフェースは、例えばディスプレイやキーパッド、タッチスクリーンのようなハードウェアを備えていてもよい。ユーザインタフェースは、表示されるグラフィック要素を映すためのディスプレイスクリーンを備えていてもよい。ユーザインタフェースはソフトウェアアプリケーションを備えていてもよい。このソフトウェアアプリケーションは、例えば、タッチスクリーン上に様々な仮想キーを表示するためのものであってもよい。
ユーザインタフェース501は、例えば、固定デバイスに実装されてもよく、または、移動式デバイスに実装されてもよい。これらのデバイスはジェスチャの認識に基づいてユーザからの命令を受け取るように構成されたカメラを備えていてもよい。これらのデバイスは、音声認識に基づいてユーザからの命令を受け取るように構成されたマイクロフォンを備えていてもよい。ユーザは、ユーザインタフェース501の部分に(機械的に)接触している必要はない。
ユーザインタフェース501は、例えば腕時計型のデバイスのような点ユーザの腕に巻かれるようなデバイスに実装されてもよい。ユーザインタフェース501は、例えばゴーグル(メガネ)に実装されてもよい。このゴーグル(メガネ)は情報を表示するとへの仮想ディスプレイや、ユーザの視線方向を追うことでユーザの命令を受け取る視線方向検出器を備えていてもよい。
システム500は様々なタスクを遂行するように構成されてもよい。システムでは、タスクを実行するためにプログラムコードが走ってもよい。これらのタスクには、例えば、テキストの生成や、メッセージの送受信、音楽の再生、ビデオの撮影、ニュースの受け取り、一応情報の受け取り、カレンダーの更新及び表示、ネットサーフィン、街の道案内等が含まれてもよい。システムはまた、これらのタスクを遂行するための一つ又は複数の(物理的)機能ユニットを備えていてもよい。これらの機能ユニットとして、システムは、例えばビデオカメラやマイクロフォン、音声再生ユニット、ディスプレイスクリーン、イメージプロジェクタ、(WLANやBluetooth(登録商標)、NFCのような)無線通信ユニット、移動通信ネットワークと通信可能なユニット、GPSナビゲーションユニット等を備えていてもよい。
バッグのワードは、例えば、一つ又は複数のセンサG1から得られてもよい。これらのセンサには、例えば、加速度センサや位置センサ、マイクロフォン、無線受信機、照度センサ、カメラ、赤外線センサ、温度センサ、気圧センサ、磁気コンパス等が含まれてもよい。
ユーザデバイスは、充電式バッテリーによって電源が供給されてもよい。例えばユーザデバイスは、旅行中のユーザによって運ばれているかもしれず、ユーザデバイスは、時々しか充電されないかもしれない(すなわち常に充電されるというわけにはいかないかもしれない)。収集された共起データは、例えば、電力消費の大きな機能がユーザによってアクティブにされることが多い状況はどのようなものかを明らかにしてもよい。収集された共起データは、例えば、バッテリーを充電することが可能になることが多いのはいつかを明らかにしてもよい。
実施形態によっては、バッテリーで動作するシステムは、時々、信頼性の低い家庭用電源ネットワークや、小型の発電機、太陽電池、風力発電機等から充電されるかもしれない。共起データは、例えば、電力消費の大きな機能がアクティブにされることが多い状況はどのようなものかを明らかにしてもよい。共起データは、例えば時間(例えば日中や夜間)によってどのようなエネルギーが利用可能になることが多いかを明らかにしてもよい。同様に、季節(例えば冬や夏)や天候(例えば風が強い場合や風がない場合、日差しがある場合や日差しがない場合)によって、どのようなエネルギーが利用可能になることが多いかを明らかにしてもよい。共起データは、電源ネットワークが利用可能でなくなるのはどのような場合が多いかを明らかにしてもい。
システム500は無停電電源装置(UPS)を備えていてもよい。電源が断たれたとき、サブシステム400によって提供される予測に基づいて、不要な機能がオフにされてもよい。
ワードは文字列であってもよい。ワードは数であってもよい。ワードは文字及び/又は数字を含む列を含んでもよい。ワードは2進数、10進数、16進数で表されASCIIコードの列を含んでもよい。ワードは意味を有してもよい。が、そうでなくともよい。ワードは統一資源識別子(URI)であってもよい。例えば、URN(Uniform Resource Name)やURL(Uniform Resource Locator)であってもよい。ワードは略語や頭字語であってもよい。ワード(word)はタグ(tag)と呼ばれてもよい。
共起データは、ワードのグループを用いて経験マトリクスに集められてもよい。このワードのグループはバッグ(bag)と呼ばれる。バッグは、ワードのグループやワードのセットと呼ばれることもある。
予測は、経験マトリクスEX1に格納される共起データを用いて行われてもよい。予測(prediction)は、現在のイベントや過去のイベントを表すワードを決定することを含んでもよい。すなわち、必ずしも将来のイベントに関心が持たれているというわけではない。予測は、状況を記述するために最もふさわしい一つ又は複数のワードを推定することを意味してもよい。
経験マトリクスEX1のベクトルは、非常に多くの数のバッグからデータが集められたとしても、長くされる必要はない。実施形態によっては、経験マトリクスEX1は、NBG個のバッグから集められた共起データを有していてもよいが、ここで、バッグ(例えばドキュメント)の数NBGは、経験マトリクスの列の数mよりも、かなり多くてもよい。
ワードの「コンテキスト」は、そのワードの言語環境(verbal environment)を意味していてもよいが、そのワード自身はその環境から除外されていてもよい。この意味で、ワードは、自身のコンテキストには属していない。
経験マトリクスEX1のベクトル及びクエリベクトルQV1は、一つ又は複数のワードの言語環境に関する情報を含んでいてもよい。経験マトリクスEX1のいくつかのベクトルは、コンテキストベクトルと呼ばれてもよい。クエリベクトルQV1は、コンテキストベクトルと呼ばれてもよい。
一般的に、語彙VOC1の全体は、一つ又は複数のシンボルを含む列であってもよい。
実施形態によっては、語彙VOC1の全体が、自然言語(日常に使用される言語)のワードではなく、数字であってもよい。そして、補助テーブルの全体が、自然言語のワードであってもよく、この補助テーブルは、語彙VOC1の数字へのポインタを含んでいてもよい。自然言語のワードは、補助テーブルを用いて数字にマッピングされてもよい。また、数字が、補助テーブルを用いて自然言語のワードにマッピングされてもよい。補助テーブルは、例えば、自然言語辞書と呼ばれてもよい。特に、補助テーブルは、複数の自然言語のワードを含んでいる多言語辞書であってもよい。第1の自然言語の第1のワードと、第2の自然言語の第2のワードが、多言語辞書を用いて語彙VOC1の同じエントリに関連付けられてもよい。第1の自然言語の第1のワードと、第2の自然言語の第2のワードが、多言語辞書を用いて語彙VOC1の同じ数字に関連付けられてもよい。多言語辞書は、例えば、英語−数字辞書,フィンランド語−数字辞書,及び/又は.ドイツ語−数字辞書を含んでいてもよい。従って、同じ語彙VOC1、同じ基本マトリクスRM1、及び/又は同じ経験マトリクスEX1が、英語,フィンランド語,及び/又はドイツ語に対して使用されてもよい。
[表1]一つ又は複数の自然言語のワードを数字に関連付ける辞書の例
このように、システム500は複数の言語の情報を取り扱ってもよい。システム500は、例えばインターネットから、複数の異なる状態に関する情報を集めてもよい。結果として得られる経験マトリクスEX1は、言語に依存しないものであってもよい。同じ経験マトリクスEX1が国を超えて使用される場合がある。
図12a及び12bは、それぞれ異なるデータ処理デバイスを描いている。これらのデバイスにおいて、コンテキストの形成及び/又は修正及び/又は決定は、(または予測の形成は、)例示的実施形態に従って遂行されてもよい。図12bに描かれるように、サーバ1240は、メモリ1245、一つ又は複数のプロセッサ1246,1247、メモリ1245に存在するコンピュータプログラムコード1248を備える。コンピュータプログラムコード1248は、例えば、経験マトリクスを格納したり処理したりするサービスのような、ソフトウェアアプリケーションの機能を実装するためのものである。互いに異なるサーバ1240,1241,1242も、これらと同じ要素を少なくとも有してもよく、それによって各サーバに関連する機能が実装されてもよい。同様に、エンドユーザデバイス1251は、メモリ1252、少なくとも一つのプロセッサ1253,1256、メモリ1252に存在するコンピュータプログラムコード1254を備える。コンピュータプログラムコード1248は、例えば、ブラウザや、オペレーティングシステムのユーザインタフェースのような、ソフトウェアアプリケーションの機能を実装するためのものである。エンドユーザデバイスはまた、例えばビデオのようなイメージデータをキャプチャするための一つ又は複数のカメラ1255,1259を有していてもよい。エンドユーザデバイスはまた、音声を収録するための、一つ又は二つ又はそれ以上のマイクロフォン1257,1258を有していてもよい。エンドユーザデバイスはまた、それに取り付けられる一つ又は複数の無線又は有線のマイクロフォンを有していてもよい。別のエンドユーザデバイス1250や1260も、これらと同じ要素を少なくとも有してもよく、それによって各デバイスに関連する機能が実装されてもよい。エンドユーザデバイスはまた、グラフィカル・ユーザインタフェースを表示するためのスクリーンを備えていてもよい。
図13aは、ある実施形態に従う予測ブラウザの、ユーザインタフェースの変化の様子の例を示したものである。図1から12で説明した、経験マトリクス(ランダムインデックス)に基づく予測システムは、ユーザに、次に訪問するWebページを提案するために使用されてもよい。この提案は、過去の閲覧履歴や、状況に関する情報(時刻や場所、センサなど)に基づいてもよく、また、カレンダーのようなクライアントアプリケーションからの情報に基づいてもよい。経験マトリクスが学習されるにつれ、アルゴリズムは継続的に学習及び適応を続ける。アルゴリズムはユーザの癖を学習し、与えられた状況に対して最も適合するURL(アドレス)を提案してもよい。提案は、テキストとしてではなく、画像として表示されてもよい。
ブラウザは、次に説明する非同期動作を通じてサービスとのやりとりを行ってもよい。
ブッシュ操作の間、ブラウザはワードのバッグ(bag-of-words)を提供する。ワードは平ワード(plain word)であってもよく、システムワード(system word)であってもよい。平ワードはページのコンテンツから取り出されてもよく、または、ページのコンテンツに基づいて生成されてもよい。システムワードは、サービスに、時刻や場所、センサデータのような、システム情報を使うことを求めてもよい。この処理は、プッシュ動作及び予測動作の間に、ブラウザによって間接的に開始させられてもよい。平ワード及びシステムワードは同じプッシュにおいてミックスされてもよい。bag-of-wordsはコンテキストを定義してもよい。同じコンテキストに属するワードは互いに関連するワードである。プッシュされたワードは、次のフラッシュ動作が行われるまで入力バッファに格納される。次のフラッシュ動作が行われるまでに、複数回のブッシュ動作が行われうる。予測ブラウザは、ユーザがページを閲覧している間に、バックグラウンドで、プッシュやフラッシュ、予測の各処理を行ってもよい。
フラッシュ動作の間、経験マトリクス内で、ワード間の関係が捕捉される。これが、予測ブラウザが閲覧の癖を学習する方法である。URLもワードであると考えることができる。そのようにして、状況に関する情報やコンテンツ、URLの間の関係が、捕捉される。フラッシュ動作の間、経験マトリクスは、入力バッファのコンテンツによって更新される。
予測を開始するため、ブラウザは、実際のコンテキストを記述するbag-of-wordsを提供する。bag-of-wordsは、プッシュ動作におけるワードのリストと同じようなものであってもよい。bag-of-wordsは、経験マトリクス内で最も関連性の高いURLを計算するために使用されてもよい。つまり、bag-of-wordsのスパースベクトルに最も近い、経験マトリクス中のスパースベクトルが、前に述べたように決定される。そして、結果として得られるURLが、予測に用いられてもよい。つまり、提案するページを例えば画像として示す、ブラウザの予測ビューにおいて使用されてもよい。画像は、以前に訪問したページのスナップショットや、訪問したサイトのアイコンなどととして提供されてもよい。スナップショットはまた、スナップショット・サーバから得られてもよい。
プッシュ、フラッシュ、予測の各動作は、ブラウザのイベントによって開始されてもよい。例えば、"page loaded"(「ページがロードされた」の意)とのイベントは、プッシュ動作−フラッシュ動作−予測動作のシーケンスを開始するために使用されてもよい。無論、他のイベントやシーケンスが利用されてもよい。
図13aにおいて、ユーザははじめ、Webページを閲覧している。ページがロードされると、ページのコンテンツや、状況に関するシステム情報、URLのいずれか一つ以上が、予測サービスに基づいて、経験マトリクスに送られてもよい。これは例えばバックグラウンドで行われてもよい。サービスは、その入力バッファをフラッシュするように(経験マトリクスを更新するように)指示されてもよい。そして、フラッシュにおいて、(やはりバックグラウンドで、)サービスから、前と同じコンテキストを用いて予測が依頼される。サービスは、予測ビューを更新するために使用されるURLを返送してもよい。
ユーザが別のページを見ようとしてアドレスバーをタップすると、その操作が、ブラウザを、既に更新されている予測ビューに切り替えさせる。予測ビューにおいては、例えば、提案されるページの画像やタイトルが表示されてもよい。このビューにおいて、ユーザは、予測されたもののいずれかを選択するか、新しいURLを入力するか、テキストの検索を行うかを決定してもよい。
ユーザは、提案されたページに、その画像をタップすることにより移動することができてもよい。すると、ビューは、閲覧ビューに戻り、選択されたページがダウンロードされる。
ブラウザが起動した時には、どのページもロードされていないかもしれない。この特別な場合においては、予測は、状況情報のみを使って提供されてもよい。例えば、システム時刻や場所、センサ情報のみによって提供されてもよい。
図13bは、ある実施形態に従う予測ブラウザのユーザインタフェースの例を示したものである。予測ブラウザには関連性のあるコンテンツの提案が示されている。図13aの場合と同様に、予測は、コンテキスト及び閲覧履歴(例えば現在のページ)に基づいて形成されてもよい。Webページに加えて、予測ブラウザまたは他のアプリケーションは、現在のWebページに関連する他のデータの提案を提供してもよい。例えば、場所や時間、場所の名称が、写真を検索したり、Webサイト上の場所の天気予報サービスを検索したり、音楽や映画、ゲームのような、関連する娯楽コンテンツを検索したりするために使用されてもよい。これらのデータも、Webページを特定する方法と同様な方法で特定されてもよい。データの説明に基づいて特定されてもよい。
図14は、ある実施形態に従う、予測閲覧のための抽象メタデータのリストを示している。
予測ブラウザの予測能力は、訪問したWebページの最初のコンテンツが経験マトリクスにプッシュされるといった形で提供されてもよい。これを行うために、Webページのソースコードが取得され、HTMLUEや同様のタグ、プログラムコードが取り除かれ、残ったコンテンツが経験マトリクスへとプッシュされてもよい。このようにして、ランダムインデックス・アルゴリズムがユーザのコンテキストを学習することができる。
しかし、この基本的な方法を使用することでは、正確な予測を得ることが困難な場合もある。Webページには多すぎる数のコンテンツが存在する場合があり、それらはユーザのコンテキストにはあまり関係がないかもしれない。そのようなコンテンツには、ユーザのコンテキストには関係のない広告やポップアップ、またインターネットではよく見かける同様の情報が含まれる。インターネットサイトによっては、ユーザが興味を持っている記事の全てが関係のないコンテンツの後ろに隠されており、ユーザをいらだたせる場合がある。ソフトウェアプログラムにとって、このような混乱の中からユーザのコンテキストを把握することは困難なタスクである。周囲の全てのノイズから、ユーザにとって重要なコンテンツを、プログラムによって正確に分離して表示することが求められている。
上記の問題を軽減するため、又は上記の課題を達成するために、経験マトリクス内に抽象データ(abstraction data)を作成する方法がここで開示される。インターネットサイトの抽象データは、手動で作成されてもよいし装置で作成されてもよく、システムの製造業者によって経験マトリクスに含められてもよく、または、スタートアップ時に含められてもよく、または、定期的な更新時に含められてもよい。
この方法においては、頻繁に訪問するインターネットサイトを人(又は装置)がいくつか選択し、これらのサイトを閲覧し、図14aに例示されるような抽象データ(メタデータ)を作成してもよい。このメタデータはサイトのURLや、そのURLが重要性を有するユーザの地域や国、ページに組み込まれたハイパーリンク、Webサイトの会社名、サイトのコンテンツに関連するワードを含んでいてもよい。これらの情報は、抽象化されたレベルで含まれていてもよい。Webページから、最も関連度の高いbag-of-wordsを見つけるために、前処理が行われてもよい。この前処理は、例えば別のサーバで行われてもよく、このサーバは問い合わせを受けてもよい。他にも様々なカテゴリの情報が存在しうる。例えば曜日である。これらも同様に、メタデータとして集められてもよい。
予測ブラウザを有するユーザデバイスの経験マトリクスは、抽象データ(メタデータ)を、予め学習しておいてもよい。そのようにすれば、予測ブラウザアプリケーションは、ユーザが次に訪問するウェブサイトを計算し提案する基礎として、これらの抽象メタデータを使うことができるだろう。予測ブラウザは、コンテキストの計算の基礎として、このメタデータだけを使ってもよい。これは、Webサイトで見つけられた全てのデータをコンテキスト計算のために使う方法とは異なる。
抽象メタデータは、非常に多くのインターネットサイトから作られてもよい。例えば、国ごとに作られてもよい。どのURLが含められるべきかの選択は、サイトの人気に基づいてもよい。(例えば、その国で訪問数がトップ1000に入るサイトのような基準で選択されてもよい。)このようにすれば、予め学習させた抽象メタデータによってユーザが利益を得る可能性が高くなるだろう。このように形成される抽象メタデータは、図11の一つ又は複数のサーバで走るネットワークサービスに組み込まれてもよい。そして、予測閲覧システムは、経験マトリクスを更新するために、これらの抽象メタデータを当該サービスからロードしてもよい。メタデータサービスはまた、既製品の抽象メタデータ・経験マトリクスを提供してもよい。この経験マトリクスは、ユーザデバイスの経験マトリクスに加えられてもよいし、予測ブラウザによって使用されてもよい。
この手法は、メタデータのオンラインアップデートの可能性をも含むだろう。このシナリオでは、メタデータは、予め定められたいくつかの更新サーバにおいて利用可能であり、そこからユーザのリクエストに応じて経験マトリクスの実装が定期的に行われ、または、新たなメタデータのフェッチが非同期的に行われる。このようにして、サイトのコンテンツの変化を、効率的に、クライアントデバイスの予測ブラウザに反映することができる。
図14に示されるような抽象メタデータは、手動で準備されてもよいし、装置によって準備されてもよい。このメタデータは、システムにおいて、経験マトリクスの中にロードされてもよい。これは、例えば、ユーザデバイスの製造中に組み立てラインの中で行う;デバイスが最初にインターネットに接続されたときに、所定のサーバからフェッチする;デバイスの動作中に定期的又は非同期的に更新する;の三つの方法で行われてもよい。経験マトリクスの中にデータを作成しまたロードする目的のために、(例えばウェブサイトへのアクセスの記録のような)以前の使用態様についての情報が取得されてもよい。そのような情報は、例えばネットワークサービスにおけるユーザアカウントから取得されてもよい。このようなサービスは、例えば、そのような情報をユーザデバイスから収集してもよく、そのような情報は、経験マトリクスの更新情報を作成するために使用されてもよい。
予測ブラウザは、抽象メタデータを使用する構成オプションを有していてもよい。例えば、(経験マトリクスを用いる)コンテキストの処理の間は、サイトのコンテンツを完全に無視し、そのサイトの抽象メタデータのみを使うオプションがあってもよい。別の例では、抽象メタデータとサイトのコンテンツとが一緒に用いられてもよい。さらに別の例では、これら二つの方法のうち一方が、一定程度、コンテキスト処理において強い影響を与えるようにされてもよい。つまり、経験マトリクスは、例えば、抽象メタデータの影響が、サイトのコンテンツの影響よりも強くなるように、重みをつけてもよい。
上述の方法は、予測ブラウザにおいて、有用な予測を形成することを可能にしうる。また、コンテキスト処理の間にWebページからオンラインでワードを選択するタスクを避けることができうる(どれを選択すべきかを知ることは難しい場合がある)。
図15は、ある実施形態に従う、予測閲覧のためのフローチャートを示している。段階1510において、経験マトリクスと共に使用するワードのセットが形成される。これらのワードは、システムのコンテキストを記述するものであってもよい。例えば、現在のWebページ、カレンダー、場所、Eメール等を記述するものであってもよい。経験マトリクスはワードに関連するスパースベクトルを含んでいてもよい。また経験マトリクスは、Webページのワードの関連性やコロケーションのデータや、デバイスのコンテキスト情報を、スパースベクトルの係数として含むように形成されてもよい。
段階1520において、経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部が、予測出力を形成するためにアクセスされる。前述のように、このステップは、もっと早い段階で行われることがある。このステップは、ユーザデバイスの中でローカルに行われることもあれば、ネットワークサービスの経験マトリクスにアクセスすることで行われることもある。
段階1530において、予測出力に応じて、Webページの提案が、ユーザに提供されてもよい。例えば、予測されたWebページのアイコンや絵がユーザに提示されてもよく、また、Webページのタイトルが表示されてもよい。ユーザは、例えばユーザインタフェースのタッチスクリーンをタッチすることにより、予測されたものを閲覧することができてもよい。次の予測をユーザに示すためにタッチを行うことに加えて、別の手法が用いられてもよい。例えば、「次」と発声したり、ホバリング前進(hovering forward)したりしてもよい。ユーザは、予測されたWebページのアイコンをクリックしたりタッチすることにより、または、ページにアクセスすることを指示する別の方法(例えば音声)により、Webページを直接閲覧することができてもよい。
図16は、ある実施形態に従う、予測閲覧のためのフローチャートを示している。段階1610において、上記経験マトリクスを更新するためのワードを収集するための、入力バッファが形成されてもよい。段階1620において、経験マトリクスと共に使用するワードのセットが、例えば入力バッファからの出力として、形成される。これらのワードは、システムのコンテキストを記述するものであってもよい。例えば、現在のWebページ、カレンダー、場所、Eメール等を記述するものであってもよい。ワードは、同様の用語の共起性をうまく捕捉するべく、拡張されてもよい。例えば、"He lives in Espoo"(彼はエスポーに住んでいる)との文章は、"He lives in Espoo location://Finland location://capital-area location://southern-Finland"(彼はエスポーに住んでいる 場所://フィンランド 場所://首都エリア 場所://フィンランド南部)のように拡張されることができる。すなわち、例えば地理的位置に関連するワードや、時間に関連するワード等が、経験マトリクス中でワード間の繋がりを形成しやすい形に分類(量子化)されてもよい。例えば、温度41℃及び42℃は、いずれもワード"warm"(暖かい)に分類されてもよく、例えば、"temperature://warm"(温度://暖かい)のように分類されてもよい。
段階1630において、抽象メタデータが、経験マトリクスを形成するために使用されてもよい。経験マトリクスは、Webブラウザの使用履歴に基づいて更新されてもよい。経験マトリクスはワードに関連するスパースベクトルを含んでいてもよい。また経験マトリクスは、Webページのワードの関連性やコロケーションのデータや、デバイスのコンテキスト情報を、スパースベクトルの係数として含むように形成されてもよい。
段階1640において、Webブラウザの使用履歴が検出され、検出された使用履歴に基づいて、予測出力が形成されてもよい。例えば、予測出力は、ページのロードの完了に基づいて形成されてもよい。
段階1650において、経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部が、予測出力を形成するためにアクセスされる。前述のように、このステップは、もっと早い段階で行われることがある。このステップは、ユーザデバイスの中でローカルに行われることもあれば、ネットワークサービスの経験マトリクスにアクセスすることで行われることもある。予測を形成するために抽象メタデータが使用されてもよい。抽象データは国毎に固有であってもよい。抽象メタデータは、経験マトリクスの形態を有していてもよい。サイトのコンテンツや抽象メタデータは、毒を形成するにおいて、重み付けがされた形で使用されてもよい。予測出力の形成は、バックグラウンドで行われてもよい。
段階1660において、Webブラウザの使用履歴に基づいて、Webページの画像やテキストを含む予測リストが形成されてもよく、及び/又は更新されてもよい。
段階1670において、予測出力に応じて、Webページの提案が、ユーザに提供されてもよい。これらの予測または提案は、閲覧したページの中のハイパーリンクを含んでいてもよい。例えば、予測されたWebページのアイコンや絵がユーザに提示されてもよく、また、Webページのタイトルが表示されてもよい。ユーザは、予測されたWebページのアイコンをクリックしたりタッチすることにより、Webページを直接閲覧することができてもよい。
段階1680において、予測出力が、Webページ以外のデータであって関連するデータに関する提案を提供するために使用されてもよい。
ユーザにはまた、予測がどのくらい成功したかについての評価を行う機会が提供されてもよい。例えば、「いいね」や「よくない」のようなボタンやスライダー、選択要素等が提供されてもよい。
ユーザにはまた、どのワードが(どの抽象メタデータワードが)表示されたWebページの予測を生じたかに関する情報が表示されてもよい。またユーザは、これらのワードを編集することができてもよく、それによって予測を変えることができてもよい。例えば、ユーザには、ユーザが正しくないと思う抽象ワードを削除したり、逆にワードを追加したり、さらにワードを変更したりする機会が与えられてもよい。
予測ブラウザは利益を提供しうる。例えば、ここで紹介されたブラウザは、ページの提案を適切なものとすることにより、また多くの場合に手入力する必要性を減らして素早く閲覧することを可能にすることにより、優れたユーザ体験を提供しうる。提案したページを予め読み込んでおくことは、閲覧のスピードを向上させうる。ページの提案として画像を用いることは、テキストを用いるよりも、人間にとってより自然であろう。ブラウザ装置に予め経験マトリクスをロードしておくことは、使用開始時から提案が提供されうるため、使用開始時の経験を良好なものとしうる。予測はデバイスで生成されてもよいが、ここで、ネットワークを介するサーバとのやりとりなしで生成されてもよい。または、予測はサーバで生成されてもよい。
本発明の様々な実施形態は、メモリに存在するコンピュータプログラムコードを用いて実装でき、関連する装置に本発明を遂行させられる。例えば、端末装置は、データの処理・送受信を行う回路および電子装置と、メモリにコンピュータプログラムコードと、プロセッサを備えてもよい。プロセッサは、コンピュータプログラムコードを実行すると、端末装置に本実施形態の構成を遂行させる。また更に、ネットワーク装置は、データの処理・送受信を行う回路および電子装置と、メモリにコンピュータプログラムコードと、プロセッサを備えてもよい。プロセッサは、コンピュータプログラムコードを実行すると、ネットワーク装置に本実施形態の構成を遂行させる。データ構造がコンピュータの中で、コンピュータを制御するコンピュータプログラムと共に用いられるとき、そのデータ構造は、コンピュータプログラム及びコンピュータを、そのデータ構造及び内在するデータに従って動作させるように構成されてもよい。
本発明の実施形態は、本明細書に紹介したものに限定されるものではないことは当然であり、請求項の範囲内で様々に変形されうるものであることは明らかである。