(57)【特許請求の範囲】
【請求項１】
装置の処理手段がプログラム命令を実行することにより、前記装置が遂行する方法であって、
結合経験マトリクスを得るために、第１の経験マトリクスの少なくとも一部及び第２の経験マトリクスの少なくとも一部が結合されることを生じさせること、ただし、前記第１及び第２の経験マトリクスは各々スパースベクトルを有すると共に、各々少なくとも一つのシステムの情報を有する、前記生じさせることと；
予測出力を形成するために、前記結合経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスすることと；
前記予測出力に応じてシステムを制御することと；
他の経験マトリクスに対応する増分経験マトリクスを形成することと；
を含み、ただし前記増分経験マトリクスは少なくとも一つのシステム又は装置の空間データを含み、前記空間データは制限されたコンテキストに関係し、前記制限は時間又はトピックに関する、方法。
【請求項２】
請求項１に記載の方法であって、前記結合は、二つ、三つ、四つ、又はそれより多い経験マトリクスを前記第１の経験マトリクスと結合し、前記結合経験マトリクスを得ることを含む、方法。
【請求項３】
請求項１又は２に記載の方法であって、前記第１の経験マトリクスはユーザの経験マトリクスであり、前記第２の経験マトリクスはソーシャルな経験マトリクスであり、ここで前記ソーシャルな経験マトリクスは、前記第１の経験マトリクスとは異なる他の経験マトリクスを複数結合することによって形成されたものであり、例えば、ソーシャルネットワークサービスにおいて前記ユーザと関係を結んでいる人々の経験マトリクスを結合することによって形成されたものである、方法。
【請求項４】
請求項１から３のいずれかに記載の方法であって、前記第１の経験マトリクスと前記第２の経験マトリクスとの結合は、結合重みに従って行われ、
ただし前記結合重みは、前記結合経験マトリクスにおける前記第１の経験マトリクスの重み及び前記第２の経験マトリクスの重みを示す、
方法。
【請求項５】
請求項１から４のいずれかに記載の方法であって、前記第１及び前記第２の経験マトリクスを結合することは、以下の処理：
・  経験マトリクスにスパースベクトルを加えてベクトルの数を増やすこと；
・  スパースベクトルを対応するスパースベクトルと連結し、ベクトルの要素の数を増やすこと；
・  ベクトルまたはベクトル要素の位置をばらばらに変更すること；
・  ベクトルと対応するベクトルを要素毎に加算すること；
・  経験マトリクスの対応する要素同士を重み付け加算すること；
・  経験マトリクスの対応する要素同士を引き算すること；
のうち少なくとも一つ、または二つ、または三つ、または四つ、または五つ、または六つを含む、方法。
【請求項６】
請求項１から５のいずれかに記載の方法であって、前記経験マトリクスは複数のユーザからのものであり、前記結合は、ソーシャルネットワークにおける前記複数のユーザの間のソーシャルな結合に基づく、方法。
【請求項７】
請求項１から６のいずれかに記載の方法であって、
前記第１及び前記第２の経験マトリクスを同じシステム又は装置に格納すること、ただし前記第１及び前記第２の経験マトリクスは、各々、同じ前記システム又は前記装置のデータを含む、前記格納することと；
結合経験マトリクスを得るために、前記第１及び前記第２の経験マトリクスを結合することと；
を含む、方法。
【請求項８】
請求項１から７のいずれかに記載の方法であって、
前記第１及び前記第２の経験マトリクスを、少なくとも部分的に、それぞれ異なるシステム又は装置に格納すること、ただし前記第１及び前記第２の経験マトリクスは、各々、少なくとも部分的にはこれらのシステム又は装置のデータを含む、前記格納することと；
結合経験マトリクスを得るために、前記第１及び前記第２の経験マトリクスを結合することと；
を含む、方法。
【請求項９】
請求項１から８のいずれかに記載の方法であって、
少なくとも前記第２の経験マトリクスを、通信接続を介して、他のデバイス又はシステムで受信することを含む、方法。
【請求項１０】
請求項１から９のいずれかに記載の方法であって、
前記結合経験マトリクスを、該結合経験マトリクスが作られたシステム又は装置とは異なるシステム又は装置で使用するべく、通信接続を介して受信または送信することを含む、方法。
【請求項１１】
請求項１から１０のいずれかに記載の方法であって、
通信接続にまたがって前記結合経験マトリクスにアクセスすることを含む、方法。
【請求項１２】
請求項１から１１のいずれかに記載の方法であって、
経験マトリクスのバックアップ又はスナップショットを形成することと；
前記バックアップ又は前記スナップショットを用いて増分経験マトリクスを形成すること、例えば、最近の経験マトリクスから、前記バックアップまたは前記スナップショットを引き算することによって、前記増分経験マトリクスを形成すること、ただし、前記最近の経験マトリクスは、前記バックアップ又は前記スナップショットの経験マトリクスの異なるバージョンである、方法。
【請求項１３】
請求項１から１２のいずれかに記載の方法であって、
学習によって少なくとも一つの経験マトリクスを形成することを含む、方法。
【請求項１４】
請求項１から１３のいずれかに記載の方法であって、
通信接続を介してダウンロード又はアクセス可能なクラウドや他のネットワークストレージに経験マトリクスを格納することを含む、方法。
【請求項１５】
請求項１から１４のいずれかに記載の方法であって、
通信インタフェースにおいて前記結合経験マトリクスをアクセス可能にすることを含む、方法。
【請求項１６】
請求項１から１５のいずれかに記載の方法であって、
少なくとも一つの経験マトリクスを選択する選択情報をユーザから受信することと；
前記選択に基づいて前記結合を実行することと；
を含む、方法。
【請求項１７】
請求項１６に記載の方法であって、
ネットワークサービスにおいて、ユーザ装置から、前記選択情報を受信することと；
前記選択情報に基づいて、選択される経験マトリクスを決定することと；
経験マトリクスを結合するために、前記選択情報に基づいて、少なくとも一つの経験マトリクスの少なくとも一部分にアクセスすることと；
を含む、方法。
【請求項１８】
請求項１から１７のいずれかに記載の方法であって、
例えば以前に訪問したＷｅｂサイトや現在訪問中のＷｅｂサイトのような、ユーザのシステムの少なくとも現在のコンテキストを記述するワードのセットを形成することと；
前記ワードのセットに関連するＷｅｂアドレスの予測を少なくとも一つ決定するために、前記結合経験マトリクスを用いることと；
推薦として、少なくとも一つのＷｅｂアドレスを、推薦するＷｅｂサイトを表示することによって、ユーザに提供することと；
を含む、方法。
【請求項１９】
請求項１８に記載の方法であって、
Ｗｅｂアドレスの前記予測に基づいて、Ｗｅｂコンテンツについてのサーチエンジンによるサーチを遂行または形成することを含む、方法。
【請求項２０】
請求項１から１７のいずれかに記載の方法であって、
例えば前記システムに存在するアプリケーションのような、ユーザのシステムの少なくとも現在のコンテキストを記述するワードのセットを形成することと；
前記ワードのセットに関連する実行可能なアプリケーションの予測を少なくとも一つ決定するために、前記結合経験マトリクスを用いることと；
推薦として、少なくとも一つのアプリケーションの予測を、推薦するアプリケーションを表示することによって、ユーザに提供することと；
を含む、方法。
【請求項２１】
請求項２０に記載の方法であって、
実行可能なアプリケーションの予測に基づいて、アプリケーションストアからアプリケーションをダウンロードしたり購入したりすることへアクセスするか、それへのアクセスを提供することを含む、方法。
【請求項２２】
請求項１から２１のいずれかに記載の方法であって、
経験マトリクスがアプリケーションストアにアップロードすること、または、経験マトリクスをアプリケーションストアからダウンロードすることを含む、方法。
【請求項２３】
システムの処理手段に実行されると、前記システムに、請求項１から２２のいずれかに記載の方法を遂行させるプログラム命令を備える、コンピュータプログラム。
【請求項２４】
処理手段と、プログラム命令を格納する記憶手段とを備える装置であって、前記プログラム命令は、前記処理手段に実行されると、前記装置に請求項１から２２のいずれかに記載の方法を遂行させるように構成される、装置。
【請求項２５】
処理手段と、プログラム命令を格納する記憶手段とを備えるシステムであって、前記プログラム命令は、前記処理手段に実行されると、前記システムに請求項１から２２のいずれかに記載の方法を遂行させるように構成される、システム。
【請求項２６】
結合経験マトリクスを得るために、第１の経験マトリクスの少なくとも一部及び第２の経験マトリクスの少なくとも一部が結合されることを生じさせる手段、ただし、前記第１及び第２の経験マトリクスは各々スパースベクトルを有すると共に、各々少なくとも一つのシステムの情報を有する、前記手段と；
予測出力を形成するために、前記結合経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部にアクセスする手段と；
前記予測出力に応じてシステムを制御する手段と；
他の経験マトリクスに対応する増分経験マトリクスを形成する手段と；
を備え、ただし前記増分経験マトリクスは少なくとも一つのシステム又は装置の空間データを含み、前記空間データは制限されたコンテキストに関係し、前記制限は時間又はトピックに関する、装置。
【請求項２７】
請求項２６に記載の装置であって、
前記第１及び前記第２の経験マトリクスを同じシステム又は装置に格納する手段、ただし前記第１及び前記第２の経験マトリクスは、各々、同じ前記システム又は前記装置のデータを含む、前記格納する手段と；
結合経験マトリクスを得るために、前記第１及び前記第２の経験マトリクスを結合する手段と；
を備える装置。
【請求項２８】
請求項２６又は２７に記載の装置であって、
前記第１及び前記第２の経験マトリクスを、少なくとも部分的に、それぞれ異なるシステム又は装置に格納する手段、ただし前記第１及び前記第２の経験マトリクスは、各々、少なくとも部分的にはこれらのシステム又は装置のデータを含む、前記格納する手段と；
結合経験マトリクスを得るために、前記第１及び前記第２の経験マトリクスを結合する手段と；
を備える装置。
【請求項２９】
請求項２６から２８のいずれかに記載の装置であって、
少なくとも前記第２の経験トリクスを、通信接続を介して、他のデバイス又はシステムで受信する手段を有する、装置。
【請求項３０】
請求項２６から２９のいずれかに記載の装置であって、
前記結合経験マトリクスを、該結合経験マトリクスが作られたシステム又は装置とは異なるシステム又は装置で使用するべく、通信接続を介して受信または送信する手段を有する、装置。
【請求項３１】
請求項２６から３０のいずれかに記載の装置であって、
少なくとも一つの経験マトリクスを選択する選択情報をユーザから受信する手段と；
前記選択に基づいて前記結合を実行する手段と；
を有する、装置。
【発明の詳細な説明】
【背景】
【０００１】
スマートフォンやコンピュータのような現代の電子機器は様々な機能を有しており、例えば、様々なニーズのための様々なプログラムや、位置測定や通信、娯楽のための様々なうんモジュールを有している。これらのデバイスによって遂行されうるタスクは非常に多岐にわたっており、また各タスクもそれぞれ複雑なものでありうる。例えば、今日の世界においては、様々な仕事がコンピュータの助けを借りて遂行されている。同様に、電子機器は、自由時間において毎日の生活の一部となってきている。たくさんのＷｅｂサービスやアプリケーションが、様々な目的のために、インターネットを通じて利用可能になっている。
【０００２】
コンピュータや電子機器のような現代の電子機器を使うことは、システムが提供する機能が多岐にわたるために、またユーザが利用することのできるサービスやアプリケーションが多岐にわたるために、難しいものになっている場合がある。このため、デバイスは、その外観や機能配置をカスタマイズする方法を提供し、ユーザがそれらに容易にアクセスできるようにしている場合がある。しかし、システムの状態や、システムが使用されている状況が、ユーザの嗜好やユーザの必要性に影響を与える場合がある。
【０００３】
このため、システムのサービスやアプリケーションにより容易にアクセスすることを可能にするソリューションが求められている。
【摘要】
【０００４】
上述の問題を軽減しうる優れた方法、およびそのような方法を実装する技術的装置が発明された。本発明の様々な側面には、独立請求項に記載されている事項を特徴とする方法や装置、サーバ、クライアント、データコード、コンピュータプログラムを格納するコンピュータ可読媒体を含む。また、本発明の様々な実施形態が従属請求項に示されている。
【０００５】
例示的実施形態のいくつかは、経験マトリクスを用いて予測を形成することに関する。この経験マトリクスは、ランダムインデックスベクトルのようなスパースベクトルに基づくマトリクスである。結合経験マトリクスを得るために、第1の経験マトリクスの少なくとも一部と、第2の経験マトリクスの少なくとも一部とか結合させられる。これらの経験マトリクスはスパースベクトルまたは本質的に似たようなベクトルを含む。また、これらの経験マトリクスは、それぞれ少なくとも一つのシステムの情報、例えばシステムのコンテキストに関する情報を含む。予測出力を形成するために、結合経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部がアクセスされ、システムは、この予測出力に基づいて制御される。
【図面の簡単な説明】
【０００６】
以下、本発明の様々な実施形態が、添付の実施例図面を参照して詳細に説明される。
【図１】図1a，1ｂ，1cは、いずれも、基本スパースベクトルとしてのワードの表現や、ワードのバッグ（bag-of-words）、バッグを更新した後の経験マトリクス（experience matrix）を示したものである。
【図２】ワードのバッグと基本スパースベクトルとを使用して経験マトリクスを更新する様子を示したものである。
【図３ａ】経験マトリックスを使用して予測を提供する様子を示した図である。
【図３ｂ】コンテキスト空間においてベクトルの違いを決定する様子を示した図である。
【図３ｃ】経験マトリックスを使用して予測を提供する様子を示した図である。
【図４ａ】基本スパースベクトルとしての例示的なbag-of-wordsを示した図である。
【図４ｂ】bag-of-words及び基本スパースベクトルを用いる経験マトリクスの更新の様子を示した図である。
【図４ｃ】更新後の経験マトリクスを例示した図である。
【図５】図5a-5cは、バッグにワードを収集する様子や、ワードが異なる時点を表す状況を描いている。
【図６】経験マトリクスを有するシステムがデータを収集したり処理したりする様子を描いている。
【図７ａ】経験マトリクスを用いてデータを収集・処理するように構成されるシステムを描いている。
【図７ｂ】出力としてワードをもたらすように構成されるセンサを描いている。
【図７ｃ】ワードのハッシュテーブル及び基本スパースベクトルのグループを有するスパースベクトル供給部を描いている。
【図７ｄ】基本スパースベクトルのグループを有するスパースベクトル供給部を描いている。
【図７ｅ】基本スパースベクトルを生成するように構成される乱数発生器を有するスパースベクトル供給部を描いている。
【図７ｆ】基本マトリクスを用いて形成された予測に基づいて制御されるシステムを描いている。
【図８ａ】ワードのバッグの例示である。
【図８ｂ−８ｃ】予測に基づいて制御されるユーザインタフェースの例示である。
【図８ｄ】カレンダーに基づいてシステムを準備する方法のステップを描いている。
【図９ａ】ハッシュテーブルのグループとして経験マトリクスを表す様子を示した図である。
【図９ｂ】経験マトリクスを更新する様子を示した図である。
【図９ｃ】予測を行うために経験マトリクスを使用する様子を描いた図である。
【図１０】図10a及び10bは、カレンダー及び／又は辞書を用いて補助ワードを収集する様子と、辞書を用いてワードを二次ワードに置き換える様子とを描いている。
【図１１】経験マトリクスを有するシステムを描いている。
【図１２】図12a及び12bは、それぞれ異なるデータ処理デバイスを描いている。
【図１３ａ】2つの経験マトリクスや経験マトリクスの部分を結合する様々な方法を示している。また、結果として得られる様々なマトリクス（データ構造）も描かれている。
【図１３ｂ】2つの経験マトリクスや経験マトリクスの部分を結合する様々な方法を示している。また、結果として得られる様々なマトリクス（データ構造）も描かれている。
【図１４】ある実施形態に従って、結合された経験マトリクスを用いて予測を行う処理のフローチャートを示している。
【図１５】ある実施形態に従って、結合された経験マトリクスを用いて予測を行う処理のフローチャートを示している。
【例示的実施形態の説明】
【０００７】
以下、システムのコンテキストと、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の数ｍは、例えば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中でスパースベクトルの組み合わせとして表現されたとしても、その一意な識別性を保証するだろう。語彙のワードは例えばアルファベット順に並べられてもよい。
【００１７】
図1ｂは、"バッグ"（bag）と称されうるワードのセットをいくつか示している。バッグは、互いに異なる二つ以上のワードを有する。一つのバッグに含まれるワードの数は、例えば2から1000の範囲であってもよい。各バッグはまた、"ドキュメント"とも呼ばれる。
【００１８】
バッグはワードの共起性を表す。バッグはシステムを学習させるために用いられる場合もある。ワードの共起性に関する情報は、マトリクスEX1に格納されてもよい（図1ｃ，図4ｂ参照）。
【００１９】
バッグのワードは、例えば状況を表現するものであったり、及び／又は当該状況で使用されるシステムを表現するものであったりしてもよい。特に、ワードは、観察される事実を表現するものであってもよい。
【００２０】
例えば第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"は、例えば、時点ｔ1において支配的な状況を表現するものであってもよい。ワード"home"，"meal"，"music"は、互いに関係しあうものであってもよい。もし、ワードのこの組み合わせが過去に何回か生じたものであったとしたら、例えばそれは、ユーザが自宅で食事をしている時に音楽を聴くことを欲するかどうかの可能性を評価（推測）するために使用されてもよい。例えば、ポータブルデバイスが、ユーザが自宅で食事をしていることを検知すると、自身を音楽再生モードにセットするように構成されてもよい。
【００２３】
第3のバッグであるBAG3は、"work"（仕事），"meeting"（ミーティング），"slilent"（静かに，サイレント）のワードを含んでいる。ここで、ワード"work"及び"meeting"は、例えばシステムのカレンダーの印に基づいて、例えば決定されてもよい。システムは、例えばユーザのカレンダーに含まれる情報に基づいて、状況記述子"work"を提供するように構成されてもよい。システムはまた、ユーザのポータブルデバイスの位置が、仕事場の位置に一致するときに、ワード"work"を決定するように構成されてもよい。ワード"slilent"は、例えば、ミーティングに出席しているユーザがシステムをサイレントモードにセットしたときに供給されてもよい。例えばユーザは、着信があっても音を鳴らさない動作モードに携帯電話をセットしているかもしれない。
【００２４】
ワード"work"，"meeting"，"slilent"は、時点ｔ2において支配的な状況を表現するものであってもよい。もし、ワードのこの組み合わせが過去に何回か生じたものであったとしたら、例えばそれは、仕事でミーティングに出席している時に、ユーザが携帯デバイスをサイレントモードにセットする可能性を評価（推測）するために使用されてもよい。例えば、ユーザのポータブルデバイスは、ユーザがミーティングに出席していることを決定すると、自動的に、サイレントモードに入れることを提案するように構成されてもよい。
【００２５】
ワードの共起性の観察から導かれたデータは、マトリクスEX1のベクトルv1, v2,... ,vk,... ,vnとして格納されてもよい。このマトリクスEX1は、経験マトリクス（experience matrix）と呼ばれてもよい。この様子が図1ｃに示されている。語彙VOC1のワードw1, w2,... ,wnの各々は、経験マトリクスEX1のスパースベクトルに関連付けられてもよい。スパースベクトルv1, v2,... ,vk,... ,vnは、例えば、基本マトリクスRM1の行として格納されていてもよい。
【００２６】
語彙VOC1は、図1aのものと同じ（ハッシュテーブル）であってもよい。
【００２７】
経験マトリクスEX1の各ベクトルは、スパースベクトル及び初期ベクトル（initial vector）の線形結合であってもよい。
【００２８】
特に、経験マトリクスEX1の各ベクトルは、基本スパースマトリクスRM1（図1a参照）における複数の基本スパースベクトルの線形結合であってもよい。
【００２９】
各ベクトルvkの要素eikの数nは、図1aに示される各基本スパースベクトルの要素Rの数nに等しくともよい。複数のスパースベクトルを結合することは、バッグ（図1ｂ参照）のコンテンツに従って行われてもよい。
【００３０】
経験マトリクス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のターゲットベクトル（例えば図1ｃのvn-1）は、第2のターゲットベクトルvn-1と、バッグBAG1の他のワードW1 (morning), W3 (mail)を表す基本スパースベクトルak+1, aPとの線形結合である修正ベクトルによって置き換えられることにより、修正されてもよい。バッグが第3のワードを含んでいるとき、バッグBAG1の第3のワード（morning, W1）を表す第3のターゲットベクトル（例えば図1ｃのvk+1）は、第3のターゲットベクトルvk+1と、バッグBAG1の他のワードW2 (work), W3 (mail)を表す基本スパースベクトルan+1, aPとの線形結合である修正ベクトルによって置き換えられることにより、修正されてもよい。
【００４６】
バッグが3つより多いワードを含んでいるとき、それらのワードの各々も、バッグの他のワードの寄与を加えることにより、それぞれ更新されてもよい。
【００４７】
マトリクスは、第2のバッグのワードを用いて、また、その他のバッグのワードを用いて、それぞれ更新されてもよい。
【００４８】
バッグBAG1の2つ又はそれ以上のワードW1, W2, W3は、システムによって提供されてもよく（システムワード）、及び／又は、クライアントによって提供されてもよい（クライアントワード）。システムワードは、例えば、時刻や位置を表すワードであってもよい。"クライアント"は、人間のユーザであったり、アプリケーションであったり、ネットワークサービスであったりしてもよい。クライアントワードは、例えば、人間のユーザから得られたり、実行中のソフトウェアアプリケーションから得られたりしてもよい。ワードは、例えば、システムの状態を表すものであってもよい。
【００４９】
図3aは、経験マトリクスEX1を用いて予測を行う様子を描いている。経験マトリクスEX1は、例えば、図1cや図4ｂに描かれるマトリクスであってもよい。
【００５０】
システムの状態を表す一つ又は複数のワードは、経験マトリクスEX1を用いて予測されてもよい。予測の方法は、一つ又は複数のクエリワードQ1, Q2,...を受信することを含んでもよい。（図3ｃは、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との差を決定することを含んでもよい。
【００５２】
図3ｂは、多次元空間中に、クエリベクトルQV1と、経験マトリクスEX1のいくつかのベクトルとを描いたものである。この例では、ベクトルの始点は全て一致している（例えば原点ORIG1）。DIMおよびDIM'は、それぞれ多次元空間における次元を表す。前述のように、次元の数は10000以上であってもよい。多次元空間中で2つのベクトルがほぼ同じ長さ及びほぼ同じ方向を少なくとも有している時、これら二つのベクトルは、実質的に同様のコンテキストを表す2つのワードに関連していると解釈されてもよい。これら二つのワードのうちの一つが、システムの状態のための有効な記述子（descriptor ）である場合、他方のワードも、システムの状態のための有効な記述子である可能性が高い。
【００５３】
DV(QV1,v) は、クエリベクトルQV1と、経験マトリクスEX1のベクトルｖとの差ベクトル（差分ベクトル，difference vector）を表す。ここで、クエリベクトルQV1と、経験マトリクスEX1のベクトルｖとの差（difference）を表す値が、クエリベクトルQV1と、経験マトリクスEX1のベクトルｖとに基づいて決定されてもよい。ここで、差（difference）は、クエリベクトルQV1と、経験マトリクスEX1のベクトルｖとの間の角度θによって表されてもよい。また、この差（difference）は、クエリベクトルQV1と、経験マトリクスEX1のベクトルｖとの間の角度θの余弦（cos（θ））によって表されてもよい。2つのベクトルｖ及びQV1の間の角度θの余弦（cos（θ））は、ドット積を用いて、次式：
|v||QV1|cos(θ) = v・QV1
から計算することができる。この差はまた、例えば、差ベクトルDVのユークリッド距離|DV|によって表されてもよい。この差はまた、例えば、ベクトルのドット積を用いて、QV1・ｖのように表されてもよい。この差はまた、例えば、差ベクトル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"により記述されうる状況において、自身を自動的にサイレントモードに入れてもよい。
【００５９】
一つ又は複数の予測ワードは、クエリを行ったクライアントに返されてもよい。一つ又は複数の予測ワードは、別のクライアントに届けられてもよい。システムは、制御のために、全ての予測ワードを利用するように構成されてもよい。又はシステムは、制御のために、予測ワードの全部ではなくそのサブセットを利用するように構成されてもよく、その場合は、一つ又は複数の予測ワードは無視される。
【００６０】
図3ｃは、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及び4ｂでは、経験マトリクスEX1に共起データを格納する別の方法を描いている。図4a及び4ｃに描かれる更新方法は、基本スパースベクトルによってバッグを表現することに基づいている。
【００６５】
図4aには、ワードのバッグ（bag-of-words）としてBAG1, BAG2, BAG3の3つが描かれている。これらのバッグは、例えば、図1bに描かれるものと同じものであってもよい。BAG1, BAG2, BAG3の各々は、基本スパースベクトルb1, b2, b3に関連付けられていてもよい。BAG1, BAG2, BAG3の各々は、それぞれ異なる基本スパースベクトルb1, b2, b3に関連付けられていてもよい。この場合において、各バッグ（例えばBAG1）に含まれる全てのワードは、同じ基本スパースベクトル（例えばb1）に関連付けられる。基本スパースベクトルは、図1aに示される基本スパースベクトルと同じ基準を満たしていてもよい。
【００６６】
図4ｂは、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の範囲に限定されない。
【００７１】
図4ｂに示した方法を用いて決定された経験マトリクスEX1は、図3a-3cに示す方法を用いて予測ワードを決定するために使用されうる。図1cに関連して述べたように、経験マトリクスEX1は、列の数と行の数がいずれも同じ（ｍ個）であってもよい。経験マトリクスEX1の個々の要素eikは整数値を有していてもよい。この整数値は1より大きくともよく（例えば2であってもよく）、−1より小さくともよい（例えば−2であってもよい）。
【００７２】
図5a-5cは、バッファから一つのバッグへワードを収集する様子を示している。ワードは一つ又は複数のクライアント及び／又はシステムから受け取られてもよい。受け取られたワードは、一つ又は複数のバッファに（一時的に）格納されてもよい。ワードは、バッファからバッグに集められてもよい。経験マトリクスはバッグのコンテンツを用いて更新されてもよい。続いて経験マトリクスは、（そのバッグとは異なる）第2のバッグのコンテンツを用いて更新されてもよい。
【００７３】
図5aにおいて、バッファのワードW1,t1, W2,t1, W3,t1は、同一の時点t1を示している。このバッグは、同一の時点を示す複数のワードを含んでいてもよい。しかし、時間的な関係に関する情報が、経験マトリクスに加えられてもよい。これは、2つ又はそれ以上の異なる時点t1, t2を表す複数のワードを含むバッグによって、加えられてもよい。この時間的に組み合わされたようなもの（時間的ペア）が集められたバッグは、例えば、システムが以前に第1の状態にあった場合に、それに連続する第2の状態の確率を評価するために利用されることができる。
【００７４】
図5ｂにおいて、バッファのワードW1,t1, W2,t1, W3,t1 W1,t2, W2,t2, W3,t2は、2つ又はそれ以上の時点t1, t2を示している。そして、同じ1つのバッグが、2つ又はそれ以上の時点t1, t2を示す複数のワードを含んでもよい。図5ｂの場合、同じバッグに含まれるワードの数は、t1を示すワードの数やt2を示すワードの数よりも多くてもよい。時点t1とt2との間の時間はタイムスパン（time span）と呼ばれてもよい。
【００７５】
図5ｃにおいて、バッファのワードW1,t1, W2,t1, W3,t1 W1,t2, W2,t2, W3,t2は、2つ又はそれ以上の時点t1, t2を示している。バッグは、2つ又はそれ以上の時点t1, t2を示す複数のワードを含んでもよい。図5ｂや5ｃに描かれるようなワードの収集は、例えば、目的がワード間の時間的関係に関する情報を集めることであるときに、用いられることができる。図5ｂや5ｃに描かれるようなワードの収集は、例えば、目的がシステムの状態間の時間的関係に関する情報を集めることであるときに、用いられることができる。
【００７６】
図5ｂの方法は、例えば、ワードの重要性についての知識を予め持っていない場合であったり、及び／又は、ワード間の時間的関係についての知識を予め持っていないような場合に、用いられてもよい。図5ｃの方法は、例えば、ワードの前後関係や時間的関係の知識が予め利用可能な場合に用いられてもよい。例えば、ワード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からシステムワードを読み出してもよい。
【００９３】
図7ｂは、センサとその環境との物理的な相互作用に基づいて、どのようにワードが供給されるのかを、例を用いて示している。センサ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を使用しなければならないというわけではない。実施形態によっては、加速度センサからの信号を受信する分析ユニットは、様々な加速状態を表すセンサワードを提供してもよい。例えば、"加速Ａ"，"加速Ｂ"，"加速Ｃ"のようなセンサワードを提供してもよい。サブシステム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の更新方法に関連して説明したように、各基本スパースベクトルは、一つのバッグに含まれるワードの各々を代表する。
【０１０９】
図7ｆを参照する。システム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に基づいて決定されてもよい。
【０１５２】
図10ｂを参照する。狭い語義を有するオリジナルワード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は、経験マトリクスの列の数ｍよりも、かなり多くてもよい。
【０１７３】
ワードの「コンテキスト」は、そのワードの言語環境（verbal environment）を意味していてもよいが、そのワード自身はその環境から除外されていてもよい。この意味で、ワードは、自身のコンテキストには属していない。
【０１７４】
経験マトリクスEX1のベクトル及びクエリベクトルQV1は、一つ又は複数のワードの言語環境に関する情報を含んでいてもよい。経験マトリクスEX1のいくつかのベクトルは、コンテキストベクトルと呼ばれてもよい。クエリベクトルQV1は、コンテキストベクトルと呼ばれてもよい。
【０１７５】
一般的に、語彙VOC1の全体は、一つ又は複数のシンボルを含む列であってもよい。
【０１７６】
実施形態によっては、語彙VOC1の全体が、自然言語（日常に使用される言語）のワードではなく、数字であってもよい。そして、補助テーブルの全体が、自然言語のワードであってもよく、この補助テーブルは、語彙VOC1の数字へのポインタを含んでいてもよい。自然言語のワードは、補助テーブルを用いて数字にマッピングされてもよい。また、数字が、補助テーブルを用いて自然言語のワードにマッピングされてもよい。補助テーブルは、例えば、自然言語辞書と呼ばれてもよい。特に、補助テーブルは、複数の自然言語のワードを含んでいる多言語辞書であってもよい。第1の自然言語の第1のワードと、第2の自然言語の第2のワードが、多言語辞書を用いて語彙VOC1の同じエントリに関連付けられてもよい。第1の自然言語の第1のワードと、第2の自然言語の第2のワードが、多言語辞書を用いて語彙VOC1の同じ数字に関連付けられてもよい。多言語辞書は、例えば、英語−数字辞書，フィンランド語−数字辞書，及び／又は．ドイツ語−数字辞書を含んでいてもよい。従って、同じ語彙VOC1、同じ基本マトリクスRM1、及び／又は同じ経験マトリクスEX1が、英語，フィンランド語，及び／又はドイツ語に対して使用されてもよい。
【０１７７】
［表1］一つ又は複数の自然言語のワードを数字に関連付ける辞書の例
0005870217.tif 000002
【０１７８】
このように、システム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及び13bは、2つの経験マトリクスや経験マトリクスの部分を結合する様々な方法を示している。また、結果として得られる様々なマトリクス（データ構造）も描かれている。
【０１８１】
方法Aによれば、経験マトリクス2のスパースベクトルを経験マトリクス1に加えることにより、2つの経験マトリクス1及び2が結合される。図中、スパースベクトルは、横方向のバーとして示されている。この例では、経験マトリクス1に加えられる経験マトリクス2のスパースベクトルは、ワード"Lapland, Rudolf, reindeer"のためのものである。この例において、経験マトリクス2のスパースベクトルは、経験マトリクス1の末尾に加えられているが、別の例では、経験マトリクス1の中間に加えられたり、経験マトリクス1中に織り交ぜられたりしてもよい。結果として得られる経験マトリクスは、マトリクス1からのスパースベクトルを含んでいる。例えばワード"pen"のためのスパースベクトル"2 0 0 0 0 0 7 0 0 0"や、ワード"putter"のためのスパースベクトル"0 0 3 0 0 0 0 0 0 0"を含んでいる。記載上の都合のため、ベクトルのこれらの例は、実際に用いられるベクトルよりも短く、またスパースの程度も低い（実際のスパースベクトルはゼロ要素の数がもっと多くてもよい）。これは以前に述べた通りである。結果として得られる経験マトリクスは、マトリクス2からのスパースベクトルも含んでいる。例えばワード"Rudolf"のためのスパースベクトル"0 0 0 0 0 0 0 0 -7 0"や、ワード"reindeer"のためのスパースベクトル"0 -2 0 0 0 4 0 0 0 0"を含んでいる。結果として得られるマトリクスについて、入力ベクトルに最も一致するものが検索される時、検索結果のベクトル又はワードは、元のマトリクス1及びマトリクス2の両方から返されてもよい。ある代替例では、マトリクス1から選ばれるワード（及びベクトル）の数と、マトリクス2から選ばれるワード（及びベクトル）の数が、ユーザインタフェースを通じてユーザから指定されてもよい。この指定は、例えばスライダーにより行われてもよいし、または、何らかの方法で、マトリクス1から選ばれるワード（及びベクトル）の数と、マトリクス2から選ばれるワード（及びベクトル）の数との比を決定することにより行われてもよい。
【０１８２】
方法Bによれば、経験マトリクス2のスパースベクトルの要素を、経験マトリクス1のスパースベクトルに加えることにより、2つの経験マトリクス1及び2が結合される。要素の追加はベクトルごとに行われる。この例においては、経験マトリクス2のスパースベクトルの要素は、経験マトリクス1のスパースベクトルの末尾に加えられているが、別の例では、その中間に加えられたり、経験マトリクス1のスパースベクトルの要素中にちりばめられたりしてもよい。結果として得られる経験マトリクスは、マトリクス1からの要素を有するスパースベクトルを含んでいる。例えばワード"pen"のためにはベクトル要素"2 0 0 0 0 0 7 0 0 0"を含んでおり、ワード"putter"のためにはベクトル要素"0 0 3 0 0 0 0 0 0 0"を含んでいる。結果の経験マトリクスはまた、マトリクス2からのベクトル要素も含んでいる。例えばワード"pen"のためにはベクトル要素"0 0"を含んでおり、ワード"putter"のためにはベクトル要素"0 -7"を含んでいる。結果として得られるベクトルは、従って、ワード"pen"についてはベクトル"2 0 0 0 0 0 7 0 0 0 0 0"であり、ワード"putter"についてはベクトル"0 0 3 0 0 0 0 0 0 0 0 -7"である。つまり、例えば、マトリクス1及び2における対応するベクトルが連結されるのである。結果として得られるマトリクスについて、入力ベクトルに最も一致するものが検索される時、検索結果として、元のマトリクス1及びマトリクス2のいずれか又は両方に近いワードを返してもよい。ある代替例では、マトリクス1から選ばれる要素の数と、マトリクス2から選ばれる要素の数が、ユーザインタフェースを通じてユーザから指定されてもよい。この指定は、例えばスライダーにより行われてもよいし、または、何らかの方法で、マトリクス1から選ばれる要素の数と、マトリクス2から選ばれる要素の数との比を決定することにより行われてもよい。
【０１８３】
方法Cによれば、2つの経験マトリクス1及び2は、要素ごとに結合を行うことにより、結合されてもよい。例えば、対応するベクトルの個々の要素が加算されることにより、結合されてもよい。結果として得られるマトリクスは、マトリクス1及びマトリクス2の要素の結合がその要素となるスパースベクトルを有する。要素の結合は、例えば、加算、減算、値が大きな方を結合後の要素とすること、値が小さな方を結合後の要素とすること等、様々な手法でなされることができる。例として、ワード"pen"に対応する経験マトリクス1のベクトルが"2 0 0 0 0 0 7 0 0 0"であり、同じくワード"pen"に対応する経験マトリクス2のベクトルが"0 0 0 -7 0 0 0 0 0 0"であるとき、結合処理の結果、ワード"pen"について得られるベクトルは、"2 0 0 -7 0 0 7 0 0 0"であってもよい（すなわち、この例では結合処理は加算処理である）。同様に、ワード"putter"に対応する経験マトリクス1のベクトルが"0 0 3 0 0 0 0 0 0 0"であり、経験マトリクス2のベクトルが"0 0 1 0 0 0 0 -5 0 0"であるとき、結合処理の結果得られるベクトルは、"0 0 4 0 0 0 0 -5 0 0"であってもよい。結合処理において重み付けの手法が用いられてもよい。ここで、重みの値はユーザから指定されてもよい。この指定は、例えばスライダーにより行われてもよいし、または、何らかの方法で重みの比（組み込み比）を指定することにより行われてもよい。
【０１８４】
図13bに描かれるように、複数の結合方法が一緒に用いられてもよい。
【０１８５】
方法Aと方法Bが一緒に用いられる場合、ベクトルが加算され、そして対応するベクトルが結合されてもよい。ベクトルはまた、いくつかの要素（マトリクスの中の小さな矩形）がマトリクス2から取られ、またいくつかの要素がマトリクス1から取られることにより、修正を受けてもよい。すなわち、結果として得られるマトリクス中のベクトルの数は、マトリクス1の中のベクトルの和也マトリクス2の中のベクトルの数とは異なってもよい。また、各ベクトルの要素の数もマトリクス1や2のベクトルの要素の数とは異なってもよい。
【０１８６】
方法Aと方法Cが一緒に用いられる場合、マトリクス2の中に対応するベクトルが存在する、マトリクス1の中のベクトルが、（方法Cのように）要素ごとに加算され、マトリクス1の中に対応するベクトルを有さない、マトリクス2のベクトルが、マトリクス1に加算される。
【０１８７】
方法Bと方法Cが一緒に用いられる場合、マトリクス1のベクトルとマトリクス2の対応するベクトルとが結合されるか、または、対応する2つのベクトルの要素が結合される。例えば、マトリクス1からは第1の数の要素が取られ、マトリクス2からは第2の数の要素が取られてもよい。（例えば連結処理による）結合処理に加えて、要素ごとに結合を行うことによって、2つのベクトルが結合されてもよい。要素の結合には重み付けがなされてもよい。
【０１８８】
方法A，B，Cを一緒に用いる場合、異なるサイズを有する複数の経験マトリクスが結合されることになるかもしれない。例えば、対応する複数のベクトル（例えば同じワードについてのベクトル）の結合が、対応する要素を要素ごとに加算することと、長い方のベクトルの要素を連結する（concatenating ）こととによって、行われてもよい。加えて、他のマトリクスに対応するベクトルを有さないベクトルが、結果のマトリクスに加えられてもよい。結果として得られるマトリクスは、従って、経験マトリクス1及び2のいずれかに対応するベクトルを有する全てのワードについてのベクトルを有していてもよく、経験マトリクス1及び2の両方に対応するベクトルを有するワードについての、結果のマトリクス中における対応するベクトルは、経験マトリクス1及び2のベクトルの結合であってもよい。
【０１８９】
全ての方法において、結合処理において重み付けがなされてもよい。ここで、重みの値はユーザから指定されてもよい。この指定は、例えばスライダーにより行われてもよいし、または、何らかの方法で重みの比（組み込み比）を指定することにより行われてもよい。重み付け処理において、例えば、要素ごとの結合において重み付け和を計算するための重みを操作したり、マトリクス1から取る要素の数とマトリクス2から取る要素の数と（の比）を操作したりしてもよい。重み付け処理は、重み付け係数が乗じられた要素の値がマトリクス1及び2から取られて結合マトリクスを形成するという意味で、線形であってもよい。別の例では、重み付け処理は非線形に行われてもよい。例えばマトリクス1からの値とマトリクス2からの値とがそれぞれマッピング値1及び2に非線形にマッピングされて結合されてもよい。結合処理はまた、結合後の要素値cが、マトリクス1及び2の要素値a及びbの関数として得られるという形で行われてもよい。例えばマッピング関数をfで表すとき、c=f(a,b)であってもよい。結合後の値は、例えば丸め込み処理により、整数値にされてもよい。または、小数点を含んで表現される有理数または無理数であってもよい。重み付け処理はまた、いくつかのベクトルまたは要素を強める形で行われてもよい。例えば、結合前に、（例えば1.0より大きい）係数を要素値に乗ずることが行われてもよい。
【０１９０】
結合処理はまた、除算として行われてもよい。例えば、同じ経験マトリクスについて、最近のバージョンから以前のバージョンが引かれてもよい。経験マトリクスは、例えば学習を通じて進化したものであってもよい。そのような場合、結果のマトリクスは、2つのマトリクスの間の純粋な変化を含むだろう。例えば特定の状況や特定のコンテキストにおいて予測を行うために、特定の情報が利用可能にならなければならない場合、基本的な（baseline）経験マトリクスに加えられることのできる、マトリクスが形成されてもよい。
【０１９１】
二つより多いマトリクスが（例えば三つ、四つ、五つ、またそれより多いマトリクスが）上述の手法と同様の手法で結合されうる。上述の集合は経験マトリクスが二つだけの場合に限定されるものではない。実際、20個や50個、100個、またはそれより多くの数の経験マトリクスが上述の手法で結合されてもよい。例えばソーシャルネットワークサービスに関連して、例えばユーザ及びその友達の全ての経験マトリクスが結合されてもよい。
【０１９２】
図14は、ある実施形態に従って、結合された経験マトリクスを用いて予測を行う処理のフローチャートを示している。段階1410において、第1の経験マトリクスの少なくとも一部と、第2の経験マトリクスの少なくとも一部とか結合させられる。この結合処理は、2つのオリジナルのマトリクスの情報を含む、結合された経験マトリクスを生じてもよい。この結合処理は、図13a及び13bに関連して説明したように行われてもよい。この結合処理は、装置で行われてもよい。この装置では他の処理も行われる。この装置は例えばユーザデバイスであってもよい。結合処理は他のデバイスやシステムで行われてもよく、第1のデバイスに命令されて行われてもよい（または第1のデバイスによって結合処理が生じさせられてもよい）。
【０１９３】
段階1420において、結合された経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部が、予測出力を形成するためにアクセスされる。結果として得られた結合されたマトリクスは、マトリクスにアクセスする装置と同じ装置に格納されてもよいが、別の装置に格納されてもよく、例えばネットワークサービスに格納されてもよい。上記のアクセスは、例えば、スパースベクトルについて一致度の高いものを決定することを含んでもよい。または、結語された経験マトリクスの中から一つ又は複数の対応するスパースベクトルを決定することを含んでもよい。予測出力を形成することは、一般の経験マトリクスについて既に説明した処理と同様に行われてもよい。
【０１９４】
段階1430において、システムは、段階1420で得られた予測出力に応じて（または予測出力を用いて）制御されてもよい（または構成が変えられてもよい）。例えば、予測出力を用いて、システムのユーザインタフェースが変更されたり制御されたりしてもよい。このユーザインタフェースは装置のものであったりウェブサービスのものであったりしてもよい。システムは別な形で制御されたりその構成が変更されたりしてもよい。例えば、ユーザが、現在のコンテキストに関係のある情報をWebサイトから見つけることができるように、予測出力は、Webサイト（アドレス）をユーザに推薦するために使用されてもよい。
システムは、システムにダウンロードすべきアプリケーションやシステムにインストールすべきアプリケーションを探したり推薦したりするように構成されてもよい。Webサイトやアプリケーションの推薦は、ユーザデバイスで行われてもよいし、Webサービス（サーバデバイス）で行われてもよい。
【０１９５】
経験マトリクスの結合において、重み付けなしで結合が行われても（または等しい重み付けで結合が行われても）よいが、異なる重み付け値を用いて結合が行われてもよい。この目的のため、例えば、左右に動かすことができるバーを有するユーザインタフェースがユーザに提示されてもよい。このバーにおいて左端の位置は、ユーザ自身のマトリクスXに全ての重みを与えることに対応してもよい。この場合、全ての予測は完全にユーザ個人のためのものとなってもよい。これに対してバーの右端の位置は、他のマトリクスYに全ての重みを与えることに対応してもよい。この場合、全ての予測はマトリクスYに基づいたものとなり、例えば、ソーシャルな経験マトリクスに基づいたものとなる。中央点においては、両方のマトリクスが等しく考慮に入れられうる。
【０１９６】
このようなシステムによれば、ユーザは、ユーザ個人の情報にどのくらいの重みをおくかや、"ソーシャルな"情報にどれくらい頼りたいかを制御することができるだろう。
【０１９７】
個々のユーザから経験マトリクスを集めるために、クラウドベースのシステムが使用されてもよい。この実装例において、各クライアントデバイスは、その経験マトリクスをクラウドに送信する。クラウドは、前述のようにして、結合経験マトリクスを作成する。作成された結合マトリクスは各クライアントデバイスに送信されてもよい。
【０１９８】
別の通信チャネルを用いてマトリクスの共有が行われてもよい。例えば、Bluetooth（登録商標）やNFCのような近距離無線通信を用いて行われてもよい。このような場合、マトリクスの共有は、クライアントデバイスの間で直接行われてもよい。
【０１９９】
クライアントデバイスは、クラウドから経験マトリクスを受信すると、それをローカルに格納してもよい。クライアントデバイスは、エンドユーザに、デバイス上でどのように予測が構築されるかを構成することを可能にするユーザインタフェースを提供してもよい。この場合、重要なパラメータは、デバイスの所有者の個人的な経験マトリクスをシステムがどのくらい使い、ソーシャルなマトリクスをどのくらい使うかである。そのような構成は、例えばユーザインタフェースを用いてエンドユーザに提供されてもよい。
【０２００】
またユーザは、定期的に、ユーザのランダムマトリクスのバックアップを保存してもよい。このバックアップは、前述のように、特定の期間に追加的になされた変更のみを含むように保存されてもよい。ユーザの全体的なヒストリは、全ての期間についてのバックアップを結合することにより形成されることができる。ユーザの全体的なヒストリを、直近のものと結合したものは、（検出された場合に）ユーザのパターンの変化に適応させるために用いられてもよい。
【０２０１】
収集されたランダムマトリクスの異なるインスタンス化の重み付けを変更することが、ユーザのパターンの変化にトリガされることができる。これは、システムの予測精度が悪化する（すなわちユーザが提案されたアイテムを選ばなくなる）ことから検出されることができる。
【０２０２】
例えば、休暇シーズンにおいて、関連する経験マトリクスはユーザが休暇を取っている期間から収集されるべきである。これは、休暇に関する誰かのランダムマトリクス要素を共有し、また後に取り除くことを可能にする。これは、ソーシャルなランダムマトリクスを使って以前に説明した通りである。
【０２０３】
なお、これらのマトリクスは購入可能なアイテムになりうる。例えば素晴らしい休暇体験を得るために、有名人から購入可能でありうる。
【０２０４】
図15は、ある実施形態に従って、結合された経験マトリクスを用いて予測を行う処理のフローチャートを示している。段階1510において、少なくとも一つの経験マトリクスが、例えばトレーニング（学習）によって形成される。段階1515において、第1及び第2の経験マトリクスが同じシステム又は装置に格納されてもよい。また、第1及び第2の経験マトリクスは、各々、この同じシステム又は装置の（しかし例えば異なる時点の）データを含んでいてもよい。第1及び第2の経験マトリクスは、少なくとも部分的に、それぞれ異なるシステム又は装置に格納されてもよい。また、第1及び第2の経験マトリクスは、各々、少なくとも部分的にはシステム又は装置のデータを含んでいてもよい。例えば、各々異なるユーザに関するデータを格納していてもよい。これらの経験マトリクスはクラウドや他のネットワークストレージに格納されていてもよい。そして、通信接続を介してダウンロード又はアクセスされてもよい。
【０２０５】
段階1520において、少なくとも第2のマトリクスが、通信接続を介して、他のデバイス又はシステムによって受信されてもよい。例えば、第1の経験マトリクスはユーザの経験マトリクスであり、第2の経験マトリクスはソーシャルな経験マトリクスであってもよい。ここで、ソーシャルな経験マトリクスは、第1の経験マトリクスとは異なる他の経験マトリクスを少なくとも複数結合することによって形成されたものであり、例えば、ソーシャルネットワークサービスにおいて前記ユーザと関係を結んでいる人々の経験マトリクスを結合することによって形成されたものであってもよい。第1のマトリクスは、結合されるマトリクスのグループに含まれても含まれなくともよい。すなわち、ソーシャル経験マトリクスは、現在のユーザの経験マトリクスの情報を含んでいてもよいし、含んでいなくともよい。
【０２０６】
段階1525において、第1のマトリクスと第2のマトリクスとを結合する方法及びパラメータが決定されてもよい。例えば、第1の経験マトリクスと第2の経験マトリクスとの結合は、結合重み（combination weight）に従って行われてもよい。ここで結合重みは、結合された経験マトリクスにおける第1のマトリクスの重みや、第2のマトリクスの重みを示す。この重みは、例えばユーザから指示されることにより決定されてもよい。この指示は、例えばユーザインタフェースのスライドコントロール部を使うことにより行われてもよい。
【０２０７】
段階1530において、少なくとも一つの経験マトリクスを選択するための選択情報がユーザから受信されてもよい。そして、その選択情報に基づいて結合処理が行われてもよい。例えば、ユーザは、そのために経験マトリクスが結合されるべきであるトピックを選択してもよい。及び／又は、その経験マトリクスが使用されるべきである人を選択してもよい。この選択情報は、ネットワークサービスが、ユーザ装置から受信してもよい。この選択情報に基づいて、ユーザの選択に基づいて、結合されるべき経験マトリクスが決定されてもよい。そして、経験マトリクスを結合するために、前記選択情報に基づいて、少なくとも一つの経験マトリクスの少なくとも一部分がアクセス又は受信されてもよい。
【０２０８】
段階1535において、第1の経験マトリクスの少なくとも一部と、第2の経験マトリクスの少なくとも一部とか結合させられる。この結合処理は、2つのオリジナルのマトリクスの情報を含む、結合された経験マトリクスを生じてもよい。この結合処理は、図13a及び13bに関連して説明したように行われてもよい。この結合処理は、装置で行われてもよい。この装置では他の処理も行われる。この装置は例えばユーザデバイスであってもよい。結合処理は他のデバイスやシステムで行われてもよく、第1のデバイスに命令されて行われてもよい（または第1のデバイスによって結合処理が生じさせられてもよい）。この結合処理は、二つ、三つ、四つ、又はそれより多い経験マトリクスを第1の経験マトリクスと結合し、結合経験マトリクスを得ることを含んでもよい。第1及び第2の経験マトリクスを結合することは、以下の処理のうち少なくとも一つ、または二つ、または三つ、または四つ、または五つ、または六つを含んでもよい。
・  経験マトリクスにスパースベクトルを加え、ベクトルの数を増やす。
・  スパースベクトルを対応するスパースベクトルと連結（concatenation ）し、ベクトルの要素の数を増やす。
・  ベクトルまたはベクトル要素の位置をばらばらに変更する。
・  ベクトルと対応するベクトルを要素毎に加算する。
・  経験マトリクスの対応する要素同士を重み付け加算する。
・  経験マトリクスの対応する要素同士を引き算する。
【０２０９】
段階1540においては、他の経験マトリクスに対応する増分（差分）経験マトリクスが形成されてもよい。増分（差分）経験マトリクスは、少なくとも一つのシステムや装置のソーシャルデータを含んでいてもよい。このソーシャルデータは、例えば、経験マトリクスが関係する時間やトピック、人に関して、制限されたコンテキストに関するものであってもよい。例えば、増分マトリクスは、経験マトリクスのバックアップまたはスナップショットを用いて形成されてもよい。例えば、最近の経験マトリクスから、経験マトリクスのバックアップまたはスナップショットを引き算することによって形成されてもよい。ここで前記最近の経験マトリクスは、バックアップまたはスナップショットの経験マトリクスとは異なるものである。
【０２１０】
段階1545において、結合経験マトリクスが、それが作られたシステム又は装置とは異なるシステム又は装置で使用されるべく、通信接続を介して送受信されてもよい。段階1550において、経験マトリクスは、通信インタフェースにおいてアクセス可能に提供されてもよい。例えば、ダウンロード可能にするために、または別の方法でアクセス可能にするために、ネットワークサービスにおいてアクセス可能にされてもよい。
【０２１１】
段階1555において、結合された経験マトリクスの少なくとも一つのスパースベクトルの少なくとも一部が、予測出力を形成するためにアクセスされる。結果として得られた結合されたマトリクスは、マトリクスにアクセスする装置と同じ装置に格納されてもよいが、別の装置に格納されてもよく、例えばネットワークサービスに格納されてもよい。上記のアクセスは、例えば、スパースベクトルについて一致度の高いものを決定することを含んでもよい。または、結語された経験マトリクスの中から一つ又は複数の対応するスパースベクトルを決定することを含んでもよい。予測出力を形成することは、一般の経験マトリクスについて既に説明した処理と同様に行われてもよい。このアクセスは、通信接続にまたがって行われてもよい。
【０２１２】
例えば、ユーザのシステムの少なくとも現在のコンテキストを記述するワードのセットが形成され、それは例えば、以前に訪問したWebサイトや現在訪問中のWebサイトを示すものであってもよい。結合経験マトリクスは、ワードのセットに関連するWeb上のアドレスの予測を少なくとも一つ決定するために使用されてもよい。別の例では、ユーザのシステムの少なくとも現在のコンテキストを記述するワードのセットが形成されるが、それは例えば、システムに存在するアプリケーションを記述するものであってもよい。結合経験マトリクスは、ワードのセットに関連する実行可能なアプリケーションスの予測を少なくとも一つ決定するために使用されてもよい。
【０２１３】
段階1560において、システムは、段階1555で得られた予測出力に応じて（または予測出力を用いて）制御されてもよい（または構成が変えられてもよい）。例えば、予測出力を用いて、システムのユーザインタフェースが変更されたり制御されたりしてもよい。このユーザインタフェースは装置のものであったりウェブサービスのものであったりしてもよい。システムは別な形で制御されたりその構成が変更されたりしてもよい。例えば、ユーザが、現在のコンテキストに関係のある情報をWebサイトから見つけることができるように、予測出力は、Webサイト（アドレス）をユーザに推薦するために使用されてもよい。システムは、システムにダウンロードすべきアプリケーションやシステムにインストールすべきアプリケーションを探したり推薦したりするように構成されてもよい。Webサイトやアプリケーションの推薦は、ユーザデバイスで行われてもよいし、Webサービス（サーバデバイス）で行われてもよい。
【０２１４】
例えば推薦として、例えば少なくとも一つのWebアドレスが、推薦されたWebサイトを表示することによって、ユーザに提供されてもよい。これに加えて、またはこれに代えて、Webアドレスの予測に基づいて、Webコンテンツについてのサーチエンジンによるサーチが遂行されたり形成されたりしてもよい。別の例として、少なくとも一つのアプリケーションの予測が、推薦されたアプリケーションを表示することによって、ユーザに提供されてもよい。アプリケーションを販売するストアからアプリケーションをダウンロードしたり購入したりすることへのアクセスや、それへのアクセスを提供することは、実行可能なアプリケーションの予測に基づいて可能にされたり遂行されたりしてもよい。
【０２１５】
段階1570において、経験マトリクスがアプリケーションストアにアップロードされたり、経験マトリクスがアプリケーションストアからダウンロードされたりしてもよい。
【０２１６】
予測に基づく経験マトリクスは、Webアドレスを推薦するために使用されてもよい。この実施形態において、ユーザは、ユーザの過去の活動や場所、時間に基づいて、ニュースやフィード、広告の提案を受信してもよい。基本的に、経験マトリクスにおいてワードとしてサポートされる側面が、特定のユーザについて何が重要であるかを決定するときのパラメータとして使用されうる。経験マトリクスに格納されるデータは、関連を有する情報をフィルタするために使用されることができる。ユーザは、求めるものを探すために、サーチを行う必要がないかもしれず、または、送られてきたフィードを調べる必要がないかもしれない。さらに、ユーザは、手動で何も入力する必要がないかもしれない。関連のあるワードは、与えられたコンテキストに基づいて、経験マトリクスから抽出されてもよい。
【０２１７】
図1から12に関連して説明したように、コンテキスト情報（例えば場所や時間、センサ、以前に訪問したページなど）に基づいて、ランダムインデックスに基づくアルゴリズムが、与えられたコンテキストに対してユーザにとって最も関連の高いワードを計算する。これらのワードは、サーバ側ではサーチのためのフィルタリング用ワードとして用いられる。クライアントデバイスは、これらのワードをネットワークサーバに送信するだろう。サーバは、複数のインターネット上のソースから、ニュースやソーシャルフィードを収集することができる。クライアントデバイスから受信したワードに基づいて、サーバは、ニュースやソーシャルフィードをフィルタリングし、限定された数のニュースやフィードを選択し、クライアントへ提供してもよい。
【０２１８】
エンドユーザに関連するワードを用いてニュースやフィードがフィルタリングされているため、多くのニュースやフィードのほとんどは、エンドユーザの現在のコンテキストに関連のあるものになるだろう。
【０２１９】
クライアントデバイスは、経験マトリクスにコンテキストデータを集めたり維持したりする役目を果たしてもよい。クライアントデバイスは、与えられた状況について、最も関連性の高いワードを経験マトリクスから抽出することができてもよい。キーワードのリストは、例えば、センサデータ例えば動き、時刻、場所等に基づいてもよい。
【０２２０】
関連するワードをクライアントが集めた後、クライアントはそれらをネットワークに位置するサーバへ送信してもよい。ネットワークサーバは、多くの帯域を有し、多くの処理能力を有する可能性があるので、使用される。ネットワークサーバはTwitter（登録商標）やFacebook（登録商標）、BBC.com（商標）、CNN.com（商標）等、様々なネットワーク上のソースから、ニュースやソーシャルフィードを集めてきてもよい。
【０２２１】
サーバがワードのリストをクライアントから受信すると、サーバは、それらのワードに基づいて、ニュースやソーシャルフィードをフィルタリングしてもよい。サーバは、クライアントから提供されたワードのリストに最もよく適合するものを提供するように、ニュースやフィードを選択してもよい。サーバは、フィルタリングを完了すると、フィルタリングの結果抽出されたニュースやソーシャルフィードのリストをクライアントに返送してもよい。別の例では、サーバは、フィルタリングの結果を、クライアントが読みに行くことが可能な特別の場所に格納することができてもよい。
【０２２２】
同様に、ユーザは、自身でキーワードを追加したり取り除いたりすることができてもよい。ユーザはユーザインタフェースないで所望の変更を行い、クライアントデバイスは、その変更をサーバに送信する。サーバはその変更をキーワードの一つとして解釈する。ユーザにより提供されたキーワードは、推薦を形成する際に大きなウェイトがかけられてもよい。または、それらも他のシステムにより作られたキーワードとして扱われてもよい。サーチ及び推薦はリアルタイムに返送されてもよく、また、結果は、コンテキストにおける次の時間に与えられてもよい。
【０２２３】
予測に基づく経験マトリクスは、ダウンロード又はインストール可能なアプリケーションを推薦するために使用されてもよい。この実施形態において、ユーザは、ユーザの過去の活動や場所、時間に基づいて、アプリケーションの提案を受信してもよい。過去の活動には、既存のアプリケーションの使用状況が含まれてもよい。経験マトリクスにおいてワードとしてサポートされる側面が、特定のユーザについて何が重要であるかを決定するときのパラメータとして使用されうる。経験マトリクスに格納されるデータは、関連を有する情報をフィルタするために使用されることができる。ユーザは、検索を行ったり、手動入力したりする必要が、全くないかもしれない。関連のあるワードは、与えられたコンテキストに基づいて、経験マトリクスから抽出されてもよい。
【０２２４】
コンテキスト情報（例えば場所や時間、センサ、以前に使ったアプリケーションなど）に基づいて、ランダムインデックスに基づくアルゴリズムが、与えられたコンテキストに対してユーザにとって最も関連の高いワードを予測してもよい。予測されたワードは、サーバ側ではサーチのためのフィルタリング用ワードとして用いられてもよい。クライアントデバイスは、これらのワードをネットワークサーバに送信してもよい。サーバは、関連する一つ又は複数のアプリケーションストアや、その他のインターネットソース（例えばアプリケーションのレビューを掲載しているサイト）から、アプリケーションの抜粋や説明を調べてもよい。クライアントデバイスから受信したワードに基づいて、サーバは、アプリケーションをフィルタリングし、限定された数のアプリケーションを選択し、クライアントへ提供してもよい。
【０２２５】
エンドユーザに関連するワードを用いてアプリケーションがフィルタリングされているため、アプリケーションは、エンドユーザの現在のコンテキストにより関連の高いものになるだろう。また、どのようなものが利用可能であるかをチェックする必要なしに、ユーザにアプリケーションの提案が活発になされてもよい。または、システムは、ユーザの介入なしに、これらのアプリケーションを自動的にインストールしてもよい。
【０２２６】
ワードの抽出や、関連の高いアプリケーションの検索は、例えば上述のように、Webアドレスについて行われてもよい。
【０２２７】
さらに、ユーザは高いランクを有するアプリケーションや、友達が持っているアプリケーションについて、経験マトリクス中で優先度を付与したい場合、ユーザは、設定に影響を及ぼすことができる。また、ユーザは、システムに、選択されたアプリケーションを自動的にインストールすることを可能にすることができる。
【０２２８】
本発明の様々な実施形態は、メモリに存在するコンピュータプログラムコードを用いて実装でき、関連する装置に本発明を遂行させられる。例えば、端末装置は、データの処理・送受信を行う回路および電子装置と、メモリにコンピュータプログラムコードと、プロセッサを備えてもよい。プロセッサは、コンピュータプログラムコードを実行すると、端末装置に本実施形態の構成を遂行させる。また更に、ネットワーク装置は、データの処理・送受信を行う回路および電子装置と、メモリにコンピュータプログラムコードと、プロセッサを備えてもよい。プロセッサは、コンピュータプログラムコードを実行すると、ネットワーク装置に本実施形態の構成を遂行させる。データ構造がコンピュータの中で、コンピュータを制御するコンピュータプログラムと共に用いられるとき、そのデータ構造は、コンピュータプログラム及びコンピュータを、そのデータ構造及び内在するデータに従って動作させるように構成されてもよい。
【０２２９】
本発明の実施形態は、本明細書に紹介したものに限定されるものではないことは当然であり、請求項の範囲内で様々に変形されうるものであることは明らかである。
【図１】
0005870217.tif 000003
【図２】
0005870217.tif 000004
【図３ａ】
0005870217.tif 000005
【図３ｂ】
0005870217.tif 000006
【図３ｃ】
0005870217.tif 000007
【図４ａ】
0005870217.tif 000008
【図４ｂ】
0005870217.tif 000009
【図４ｃ】
0005870217.tif 000010
【図５】
0005870217.tif 000011
【図６】
0005870217.tif 000012
【図７ａ】
0005870217.tif 000013
【図７ｂ】
0005870217.tif 000014
【図７ｃ】
0005870217.tif 000015
【図７ｄ】
0005870217.tif 000016
【図７ｅ】
0005870217.tif 000017
【図７ｆ】
0005870217.tif 000018
【図８ａ】
0005870217.tif 000019
【図８ｂ−８ｃ】
0005870217.tif 000020
【図８ｄ】
0005870217.tif 000021
【図９ａ】
0005870217.tif 000022
【図９ｂ】
0005870217.tif 000023
【図９ｃ】
0005870217.tif 000024
【図１０】
0005870217.tif 000025
【図１１】
0005870217.tif 000026
【図１２】
0005870217.tif 000027
【図１３ａ】
0005870217.tif 000028
【図１３ｂ】
0005870217.tif 000029
【図１４】
0005870217.tif 000030
【図１５】
0005870217.tif 000031