(57)【要約】メッセージ交換スレッドからエンティティを特定し、そのエンティティに関する提案、例えばユーザがそのエンティティに対して動作を起こすための提案などを生成するためのシステムおよび方法。提案アプリケーションは、メッセージ交換スレッドから少なくとも１つの電子メッセージを受信し、電子メッセージから使用可能なエンティティを特定し、そのエンティティのコンテキストインジケータを決定し、そのコンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定し、エンティティが使用可能であることに応答して、そのエンティティに関する提案をメッセージ交換スレッドの参加者（複数可）に提供する。
2019508820.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ交換スレッドのトランスクリプトでの表示のために第１のユーザにより提示される電子メッセージを１つまたは複数のプロセッサを使用して受信するステップであって、
前記電子メッセージは、第１のユーザのクライアントデバイスを介して第１のユーザにより提供されるユーザインタフェース入力に応答して提示され、
前記メッセージ交換スレッドは、第１のユーザの第１のメッセージ交換クライアント及び第２のユーザの第２のメッセージ交換クライアントを介して少なくとも第１のユーザと第２のユーザとの間にある、ステップと、
前記１つまたは複数のプロセッサを使用して、前記電子メッセージからエンティティを特定するステップと、
前記１つまたは複数のプロセッサを使用して、前記エンティティのコンテキストインジケータを決定するステップと、
前記１つまたは複数のプロセッサを使用して、前記コンテキストインジケータに基づいて前記エンティティが使用可能であるかどうかを決定するステップと、
前記エンティティが使用可能であるとの判定に応答して、前記エンティティに関する提案を前記第１のメッセージ交換クライアントおよび前記第２のメッセージ交換クライアントを介して表示するために提供するステップと
を含む、コンピュータが実行する方法。
【請求項２】
前記第２のメッセージ交換クライアントを介した第２のユーザによる前記提案の肯定的な選択を受信するステップと、
前記肯定的な選択に応答して、前記第１のメッセージ交換クライアントを介して第１のユーザに表示するために、前記提案に基づくコンテンツを提供するステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記提案に基づくコンテンツは、第１のユーザの場所に基づくコンテンツの第１のバージョンであり、前記方法は、前記肯定的な選択に応答して、前記第２のメッセージ交換クライアントを介して第２のユーザに表示するために、第２のユーザの場所に基づくコンテンツの第２のバージョンを提供するステップを更に含む、請求項２に記載の方法。
【請求項４】
前記エンティティが使用可能であるとの判定に応答して前記提案は前記メッセージ交換スレッドのトランスクリプトに組み込まれることなく表示のために提供され、前記方法は、
前記提案の肯定的な選択を受信するステップと、
前記肯定的な選択に応答して、前記提案に基づくコンテンツを前記メッセージ交換スレッドのトランスクリプトに組み込むステップとを
更に含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記エンティティが使用可能であるとの判定に応答して前記提案は前記メッセージ交換スレッドのトランスクリプトに組み込まれることなく表示のために提供され、前記提案は、肯定的インタフェース要素と否定的インタフェース要素とを含み、前記方法は、
前記肯定的インタフェース要素または前記否定的インタフェース要素のいずれかの選択をモニタするステップと、
前記肯定的インタフェース要素の選択にのみ応答して、前記提案に基づくコンテンツを前記メッセージ交換スレッドのトランスクリプトに組み込むステップと
を更に含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項６】
前記エンティティが使用可能であるとの判定に応答して前記エンティティをサードパーティサーバに送信するステップと、
前記エンティティの送信に応答して前記サードパーティサーバから前記提案を受信するステップと
を更に含む、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記コンテキストインジケータの決定は、前記第１のユーザおよび前記第２のユーザの少なくとも一方を含む別の以前のメッセージ交換スレッドに基づいて少なくとも１つのコンテキストインジケータを決定することを含む、請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記少なくとも１つのコンテキストインジケータは、前記以前のメッセージ交換スレッドのうちの１つまたは複数の以前のメッセージにおいて前記第１のユーザおよび前記第２のユーザの少なくとも一方により表現された感情に基づく、請求項７に記載の方法。
【請求項９】
前記感情は前記エンティティに向けられたものであり、前記少なくとも１つのコンテキストインジケータの決定は、前記エンティティに向けられた前記感情に基づいて少なくとも１つのコンテキストインジケータを決定することを含む、請求項８に記載の方法。
【請求項１０】
前記コンテキストインジケータの決定は、前記第１のユーザまたは前記第２のユーザの以前のメッセージを感情分析することに基づいて少なくとも１つのコンテキストインジケータを決定することを含み、前記以前のメッセージは、前記メッセージ交換スレッド内にあるか、あるいは以前のメッセージ交換スレッド内にある、請求項１乃至６のいずれか１項に記載の方法。
【請求項１１】
前記感情分析は、前記以前のメッセージに含まれる非テキストのグラフィック要素に少なくとも部分的に基づいて行われる、請求項９に記載の方法。
【請求項１２】
前記以前のメッセージは以前のメッセージ交換スレッド内にあり、前記少なくとも１つのコンテキストインジケータは、前記以前のメッセージにおいて前記エンティティに向けられた感情に基づいて選択される、請求項１１に記載の方法。
【請求項１３】
前記コンテキストインジケータは、前記第１のユーザの以前のメッセージに基づいており、前記以前のメッセージは、前記第２のユーザに関係しない以前のメッセージ交換スレッドにおいて前記第１のユーザにより提示されたものである、請求項１乃至１２のいずれか１項に記載の方法。
【請求項１４】
前記方法は、機械学習モデルに基づいて前記少なくとも１つの電子メッセージに対して自然言語分析を実行するステップを更に含み、前記自然言語分析に基づいて、前記電子メッセージから使用可能なエンティティを特定し、かつ、前記エンティティのコンテキストインジケータを決定する、請求項１乃至１３のいずれか１項に記載の方法。
【請求項１５】
前記メッセージ交換スレッドの各参加者からの会話フローを追跡して追跡情報を作成するステップと、
前記追跡情報に基づいて前記コンテキストインジケータを生成するステップと
を更に含む、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１６】
トレーニングされた機械学習モデルおよび前記コンテキストインジケータを用いて前記提案を決定するステップを更に含む、請求項１乃至１５のいずれか１項に記載の方法。
【請求項１７】
エンティティに向けて提供された前記提案に対するユーザの反応を受信するステップと、
前記コンテキストインジケータに基づくトレーニング例の入力および前記ユーザの反応に基づくトレーニング例の出力を用いてトレーニング例を生成するステップと、
前記トレーニングされた機械学習モデルを前記トレーニング例に基づいてさらにトレーニングすることに基づいて前記トレーニングされた機械学習モデルを修正するステップと
を更に含む、請求項１６に記載の方法。
【請求項１８】
前記コンテキストインジケータに基づいて前記メッセージ交換スレッドをコンピュータ可読媒体において索引付けするステップを更に含む、請求項１乃至１７のいずれか１項に記載の方法。
【請求項１９】
コンピュータ可読プログラムを含んだ非一時的なコンピュータ使用可能媒体を備えるコンピュータプログラム製品であって、前記コンピュータ可読プログラムはコンピュータ上で実行されたときに、
メッセージ交換スレッドのトランスクリプトでの表示のために第１のユーザにより提示される電子メッセージを受信するステップであって、
前記電子メッセージは、第１のユーザのクライアントデバイスを介して第１のユーザにより提供されるユーザインタフェース入力に応答して提示され、
前記メッセージ交換スレッドは、第１のユーザの第１のメッセージ交換クライアント及び第２のユーザの第２のメッセージ交換クライアントを介して少なくとも第１のユーザと第２のユーザとの間にある、ステップと、
前記電子メッセージからエンティティを特定するステップと、
前記エンティティのコンテキストインジケータを決定するステップであって、前記エンティティの前記コンテキストインジケータは、前記第１のユーザの以前のメッセージに基づく少なくとも１つのコンテキストインジケータを含み、前記以前のメッセージは、前記第２のユーザに関係しない以前のメッセージ交換スレッドにおいて前記第１のユーザにより提示されたものである、ステップと、
前記コンテキストインジケータに基づいて前記エンティティが使用可能であるかどうかを決定するステップと、
前記エンティティが使用可能であるとの判定に応答して、前記エンティティに関する提案を前記第２のメッセージ交換クライアントを介して表示するために提供するステップと
を前記コンピュータに行わせる、コンピュータプログラム製品。
【請求項２０】
１つまたは複数のプロセッサと、
命令を格納するメモリと
を備えるシステムであって、前記命令は実行されたときに、
メッセージ交換スレッドのトランスクリプトでの表示のために第１のユーザにより提示される電子メッセージを受信するステップであって、
前記電子メッセージは、第１のユーザのクライアントデバイスを介して第１のユーザにより提供されるユーザインタフェース入力に応答して提示され、
前記メッセージ交換スレッドは、第１のユーザの第１のメッセージ交換クライアント及び第２のユーザの第２のメッセージ交換クライアントを介して少なくとも第１のユーザと第２のユーザとの間にある、ステップと、
前記電子メッセージからエンティティを特定するステップと、
前記エンティティのコンテキストインジケータを決定するステップと、
前記コンテキストインジケータに基づいて前記エンティティが使用可能であるかどうかを決定するステップと、
前記エンティティが使用可能であるとの判定に応答して、前記エンティティに関する提案を前記第１のメッセージ交換クライアントおよび前記第２のメッセージ交換クライアントのうちの少なくとも一方を介して表示するために提供するステップであって、前記提案は、前記エンティティが使用可能であると判定された場合にのみ提供される、ステップと
を前記システムに行わせる、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メッセージ交換スレッド（本明細書では「会話」とも称する）からエンティティを特定し、会話の参加者（複数可）のコンピューティングデバイス（複数可）を介して参加者（複数可）に向けて表示するための提案を生成するシステムおよび方法に関し、前記提案は、参加者（複数可）がエンティティに対して動作を起こすための提案である。
【背景技術】
【０００２】
モバイル機器はユーザの関心という点で明らかにデスクトップを追い越している。チャットでは、ユーザがモバイルデバイスで多くの時間またはほとんどの時間を費やしている。一方、ソーシャルネットワークでは、ユーザの連絡先リストがますます増加し、管理不能になるにつれて、ユーザは、プライバシーについての懸念が増大し、チャット会話に情報共有を次第に移行しつつある。その結果、関心のある情報の多くは、今や会話に含まれることとなる。このため、より直感的かつ効率的な方法で会話を処理する手法が望まれる。
【０００３】
ユーザは、時間、位置、場所、人、イベント、ビデオなど、毎日多くの情報を共有する。しかしながら、ユーザが共有する情報のほとんどは静的なものである。さらに情報を得たり行動を完了したりするためにはユーザはどこか別のところに行く必要がある。例えば、映画を視聴するために劇場に行くことを話していても、チケットを予約するには劇場のウェブサイトをチェックする必要がある。
【０００４】
ユーザは、モバイルデバイスのタッチスクリーン上でとりわけ困難な入力をするか、あるいはユーザが回答を見つけた他の場所からコピーアンドペーストすることによりメッセージに返信する。どちらも、ユーザからの返答に関して良好なエクスペリエンスを提供しない。
【０００５】
ユーザは、会話で共有しているものを追跡しない。会話は容易に検索し得ない。たとえば、ユーザが実際に必要とする１つの情報を見つけるために多数の検索結果を上下にスクロールする必要があり得る。
【０００６】
さらに、例えば、会話からの洞察を得たり状況や感情を測定したりするための簡単な方法はない。会話から別のアプリケーションへの情報フィードも存在しない。
【発明の概要】
【０００７】
本開示は、メッセージ交換スレッド（本明細書では「会話」とも称する）からエンティティを特定し、会話の参加者（複数可）のコンピューティングデバイス（複数可）を介して参加者（複数可）に向けて表示するための提案を生成するシステムおよび方法に関し、前記提案は、参加者（複数可）がエンティティに対して動作を起こすための提案である。いくつかの実施形態において、エンティティは、単数の明確に定義された区別可能な物または概念である。例えば、エンティティは、人、場所、アイテム、アイデア、またはそれらの任意の組み合わせであってもよい。
【０００８】
いくつかの実施形態において、提案は、エンティティに関するものであり、メッセージ交換スレッドの１つまたは複数のメッセージからエンティティを特定することに基づく。それらの実施形態のうちのいくつかでは、エンティティの１つまたは複数のコンテキストインジケータも決定され、エンティティが使用可能である（ａｃｔｉｏｎａｂｌｅ）かどうかを決定するためにコンテキストインジケータが利用され、エンティティが使用可能であると判定されたときにのみ、参加者（複数可）への表示のための提案が提供される。エンティティは、メッセージ交換スレッドのコンテキストにおいて、ユーザがエンティティに対して動作を起こそうとしているかどうかを決定することにより、エンティティが使用可能であると判定されてもよい。メッセージ交換スレッド自体に対して外部のコンテンツ（例えば、以前のメッセージ交換スレッドにおける参加者の以前の電子メッセージ）に基づくコンテキストインジケータ、（メッセージ交換スレッドおよび／または以前のメッセージ交換スレッド（複数可）の）メッセージ（複数可）の自然言語処理に基づくコンテキストインジケータ、メッセージ交換スレッドの会話フローに基づくコンテキストインジケータ、（メッセージ交換スレッドおよび／または以前のメッセージ交換スレッド（複数可）の）メッセージ（複数可）に基づいて決定された感情に基づくコンテキストインジケータ、その他の各種コンテキストインジケータを利用し得る。付加的および代替的なコンテキストインジケータが本明細書でより詳細に説明されている。（コンテキストインジケータに基づいて）エンティティが使用可能であると判定された場合に提案を提供することにより、参加者（複数可）は無関係な提案によって注意をそらされないようにすることができ、かつ／またはプレゼンテーション、無関係な提案を送信および／または提供しないことによって様々な計算リソースを節約することができる。例えば、提案は、コンテキストの関連性に関係なく提案を提供する場合と比較して、提案の提供およびそれに対応する計算リソースの節約につながるコンテキスト的な関連性があると判定された場合にのみ提供され得る。また、本明細書に記載された技術による提案を提供するいくつかの実施形態は、あまり器用でないユーザにとって、あるいはそうでなければデバイスへのユーザ入力が困難なユーザにとって特に有益であり得る。少なくともこれらのユーザにとって、選択可能な提案をメッセージ交換スレッドに組み込むことにより、例えば、あまり器用でないということでユーザが間違えることを抑制して、デバイスの信頼性および使用速度が向上し得る。
【０００９】
いくつかの実施形態では、提案は選択可能な提案である。これらの実施形態のうちのいくつかでは、会話の参加者による提案の選択に応答して、提案（および／または関連するコンテンツ）が会話のトランスクリプトに組み込まれ、かつ／または（例えば、メッセージ交換スレッド内で、および／またはメッセージ交換スレッドから離れて）エンティティに関するコンピュータベースの動作が実行され得る。例えば、提案は最初に１人または複数人の参加者のへの表示のための非静的なグラフィカル要素として提供されてもよく、１人または複数人の参加者による提案の選択時にのみ、提案（および／または関連するコンテンツ）は会話のトランスクリプトに静的に組み込まれる。例えば、一旦静的に組み込まれると、提案は、さらなるメッセージが会話のトランスクリプトに含まれるように提示された後であっても、そのトランスクリプトの一部を形成し、かつ会話において（例えば、スクロールすることによって）見続けることができる。また、例えば、一旦静的に組み込まれると、参加者が提案に基づいて今後会話を検索することができるように、提案は、会話に関連して索引付けされる。提案が選択可能ないくつかの実施形態では、提案は肯定的インタフェース要素と否定的インタフェース要素とを含み得る。肯定的インタフェース要素の選択（複数可）に応答して、提案はトランスクリプトに組み込まれてもよく、肯定的インタフェース要素の選択に応答して、提案はトランスクリプトへの静的な組込みなしに破棄されてもよい。
【００１０】
いくつかの実施形態では、進行中のメッセージ交換スレッド中にコンテキスト的に関連する提案を提供することにより、参加者は、簡単な方法で（例えば、シングルタップおよび／または他の単一選択インタフェース動作を介して）メッセージ交換スレッドに提案（または関連するコンテンツ）を加えることが可能となり得る。付加的または代替的に、コンテキスト的に関連する提案は、参加者（複数可）が、メッセージ交換スレッドをレンダリングするアプリケーションから、そのようなコンテンツを取得するために別のアプリケーションに切り替える必要なしに、コンテキスト的に関連するエンティティに関するコンテンツを参加者（複数可）に提供し得る。例えば、メッセージ交換クライアントを介して表示するための提案を提供すること、および／または（例えば、提案のユーザ選択に応答して）提案に基づいてコンテンツをメッセージ交換スレッドのトランスクリプトに組み込むことは、そのようなコンテンツを取得するためのメッセージ交換クライアントから切り替える必要性を回避し得る。これにより、情報ニーズを満たすために別のアプリケーションに切り替える際に消費される特定の計算リソースの使用が低減され得る。例えば、別のアプリケーションに切り替えるには、アプリケーションの起動および／またはサーフェシングを介してプロセッサ、メモリ、および／またはバッテリのリソースを使用する必要がある。さらに、メッセージ交換スレッドでコンテンツを取得する代わりに別のアプリケーションに切り替えることで、参加者がコンテンツの取得に費やす時間が増加し得、これは、コンテンツを取得する際の計算リソースの消費の対応する増加をもたらし得る。
【００１１】
さらに、参加者（複数可）に会話のトランスクリプトに提案を静的に組み込むかどうかの選択肢が提示される実施形態では、参加者（複数可）にコンテキスト的に関連する提案が提示されてもよいが、参加者（複数可）は、これらの提案が会話の一部を形成するかどうかを制御することが許容され得る。これにより、メッセージ交換スレッドをレンダリングするユーザインタフェースが乱雑となるのが抑制され、かつ／または様々な計算リソースの使用が低減され得る（例えば、全ての提案が自動的に記憶されないので、メッセージ交換スレッドのトランスクリプトを索引付けするか、または他の方法でメッセージ交換スレッドのトランスクリプトを記憶するために必要な記憶スペースが削減され得る）。
【００１２】
いくつかの実施形態では、１つまたは複数のプロセッサによって実施される方法であってメッセージ交換スレッドのトランスクリプトでの表示のために第１のユーザにより提示される電子メッセージを受信することを含む方法が提供される。電子メッセージは、第１のユーザのクライアントデバイスを介して第１のユーザにより提供されるユーザインタフェース入力に応答して提示される。メッセージ交換スレッドは、第１のユーザの第１のメッセージ交換クライアントおよび第２のユーザの第２のメッセージ交換クライアントを介して少なくとも第１のユーザと第２のユーザとの間にある。方法は、電子メッセージからエンティティを特定するステップと、エンティティのコンテキストインジケータを決定するステップと、コンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定するステップとをさらに含む。方法はさらに、エンティティが使用可能であるとの判定に応答して、エンティティに関する提案を第１のメッセージ交換クライアントおよび第２のメッセージ交換クライアントの少なくとも１つを介して表示するために提供するステップを含む。
【００１３】
これらの実施形態および他の実施形態は、任意選択的に、以下の特徴のうちの１つまたは複数を含み得る。
いくつかの実施形態では、エンティティが使用可能であるとの判定に応答して、第２のメッセージ交換クライアントを介して第２のユーザに表示するために提案が提供されるが、第１のユーザには提供されない。これらの実施形態のうちのいくつかでは、方法は、第２のメッセージ交換クライアントを介した第２のユーザによる提案の肯定的な選択を受信するステップと、肯定的な選択に応答して、第１のメッセージ交換クライアントを介して第１のユーザに表示するために、提案に基づくコンテンツを提供するステップとを含む。これらの実施形態のいくつかのバージョンでは、提案に基づくコンテンツが提案自体である。したがって、これらの実施形態のいくつかは、最初に、メッセージ交換スレッドの参加者の一部に提案を提示し、一部の参加者（複数可）による提案の肯定的な選択に応答して、その提案に基づくコンテンツを一部ではない他の参加者（複数可）に提示する。これにより、肯定的な選択が提供されない状況での提案および／またはコンテンツの供給を防止することによって、一部ではない他の参加者（複数可）のクライアントデバイスの様々な計算リソースの消費を防止し得る。
【００１４】
いくつかの実施形態では、エンティティが使用可能であるとの判定に応答して提案はメッセージ交換スレッドのトランスクリプトに組み込まれることなく表示のために提供される。これらの実施形態のうちのいくつかでは、方法は、提案の肯定的選択を受信するステップと、肯定的な選択に応答して、提案に基づくコンテンツをメッセージ交換スレッドのトランスクリプトに組み込むステップとを更に含む。したがって、これらの実施形態のうちのいくつかは、提案の肯定的な選択に応答して提案に基づくコンテンツのみをメッセージ交換スレッドのトランスクリプトに組み込む。これは、メッセージ交換スレッドにおいてコンテンツを提供および／またはレンダリングするために必要とされるリソース、および／またはトランスクリプトを格納するために必要とされるリソースなど、様々な計算リソースの消費を防止し得る。
【００１５】
いくつかの実施形態では、エンティティが使用可能であるとの判定に応答して提案はメッセージ交換スレッドのトランスクリプトに組み込まれることなく表示のために提供され、提案は、肯定的インタフェース要素と否定的インタフェース要素とを含む。これらの実施形態のうちのいくつかでは、方法は、肯定的インタフェース要素または否定的インタフェース要素のいずれかの選択をモニタするステップと、肯定的インタフェース要素の選択にのみ応答して、提案に基づくコンテンツをメッセージ交換スレッドのトランスクリプトに組み込むステップとを更に含む。したがって、これらの実施形態のうちのいくつかは、提案の肯定的な選択に応答して提案に基づくコンテンツのみをメッセージ交換スレッドのトランスクリプトに組み込む。これは、メッセージ交換スレッドにおいてコンテンツを提供および／またはレンダリングするために必要とされるリソース、および／またはトランスクリプトを格納するために必要とされるリソースなど、様々な計算リソースの消費を防止し得る。
【００１６】
いくつかの実施形態では、方法は、エンティティが使用可能であるとの判定に応答してエンティティをサードパーティサーバに送信するステップと、エンティティの送信に応答してサードパーティサーバから提案を受信するステップとを更に含む。
【００１７】
いくつかの実施形態において、コンテキストインジケータの決定は、第１のユーザおよび第２のユーザのうちの少なくとも一方を含む別の以前のメッセージ交換スレッドに基づいて少なくとも１つのコンテキストインジケータを決定することを含む。それらの実施形態のいくつかでは、少なくとも１つのコンテキストインジケータは、以前のメッセージ交換スレッドのうちの１つまたは複数の以前のメッセージにおいて第１のユーザおよび第２のユーザの少なくとも一方により表現された感情に基づく。これらの実施形態のいくつかのバージョンにおいて、感情はエンティティに向けられたものであり、少なくとも１つのコンテキストインジケータの決定は、エンティティに向けられた感情に基づいて少なくとも１つのコンテキストインジケータを決定することを含む。
【００１８】
いくつかの実施形態において、コンテキストインジケータの決定は、第１のユーザまたは第２のユーザの以前のメッセージを感情分析することに基づいて少なくとも１つのコンテキストインジケータを決定することを含む。以前のメッセージは、メッセージ交換スレッド内にあるか、あるいは以前のメッセージ交換スレッド内にある。それらの実施形態のいくつかでは、感情分析は、以前のメッセージに含まれる非テキストのグラフィック要素に少なくとも部分的に基づいて行われる。これらの実施形態のいくつかのバージョンにおいて、以前のメッセージは以前のメッセージ交換スレッド内にあり、少なくとも１つのコンテキストインジケータは、以前のメッセージにおいてエンティティに向けられた感情に基づいて選択される。
【００１９】
いくつかの実施形態では、提案は第２のユーザへの表示のために提供され、コンテキストインジケータは第１のユーザの以前のメッセージに基づく。これらの実施形態のいくつかでは、以前のメッセージは、第２のユーザに関係しない以前のメッセージ交換スレッドにおいて第１のユーザにより提示されたものである。
【００２０】
いくつかの実施形態では、方法は、機械学習モデルに基づいて少なくとも１つの電子メッセージに対して自然言語分析を実行するステップを更に含み、自然言語分析に基づいて、電子メッセージから使用可能なエンティティを特定し、かつ、エンティティのコンテキストインジケータを決定する。
【００２１】
いくつかの実施形態では、方法は、メッセージ交換スレッドの各参加者からの会話フローを追跡して追跡情報を作成するステップと、追跡情報に基づいてコンテキストインジケータを生成するステップとを更に含む。
【００２２】
いくつかの実施形態では、方法は、トレーニングされた機械学習モデルおよびコンテキストインジケータを用いて提案を決定するステップを更に含む。それらの実施形態のうちのいくつかでは、方法は、エンティティに向けて提供された提案に対するユーザの反応を受信するステップと、コンテキストインジケータに基づくトレーニング例の入力およびユーザの反応に基づくトレーニング例の出力を用いてトレーニング例を生成するステップと、トレーニングされた機械学習モデルをトレーニング例に基づいてさらにトレーニングすることに基づいて、トレーニングされた機械学習モデルを修正するステップとを更に含む。
【００２３】
いくつかの実施形態では、方法は、コンテキストインジケータに基づいてメッセージ交換スレッドをコンピュータ可読媒体において索引付けするステップを更に含む。
他の実施形態では、これらの方法および他の方法は、対応するシステム、装置、およびコンピュータストレージ上に符号化された方法の動作を実行するように構成されたコンピュータプログラムを含み得る。
【００２４】
一般に、本開示に記載される主題の他の実施形態は、１つまたは複数のプロセッサを使用して、会話からの少なくとも１つの会話メッセージを受信するステップと、１つまたは複数のプロセッサを使用して、会話から使用可能とすることができるエンティティを特定するステップと、１つまたは複数のプロセッサを使用して、エンティティのコンテキストインジケータを決定するステップと、１つまたは複数のプロセッサを使用して、コンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定するステップと、エンティティが使用可能であることに応答して、ユーザがエンティティに対して動作を起こすための提案を提供するステップとを含む方法に具体化され得る。
【００２５】
これらの実施形態および他の実施形態は、それぞれ、任意選択的に以下の特徴のうちの１つまたは複数を含み得る。例えば、特徴は、機械学習モデルに基づいて少なくとも１つの会話メッセージに対して自然言語分析を実行するステップを含み、会話メッセージから使用可能なエンティティを特定すること、およびエンティティのコンテキストインジケータを決定するステップはその分析に基づく。特徴は、会話の各参加者からの会話フローを追跡し、追跡情報に基づいてコンテキストインジケータを洗練化することを含み得る。特徴は、機械学習モデルおよびコンテキストインジケータに基づいてユーザが動作を起こすための提案を決定することを含み得る。特徴は、エンティティを使用可能なものとしてマークする指示をユーザから受信すること、機械学習モデルにユーザ指示をトレーニング信号として送信すること、エンティティに関連する情報を検索すること、およびユーザに情報を提供することを含み得る。特徴は、クエリおよび文書検索を含む様々なソースからデータを受信すること、データから特徴を抽出すること、抽出された特徴に基づいて機械学習モデルを生成すること、ユーザ動作を受信すること、ユーザ動作に基づいて機械学習モジュールをトレーニングすることを含み得る。特徴は、会話の参加者を含むエンティティ情報をアプリケーションに供給すること、アプリケーションにより提案を生成すること、会話の参加者に提案を提供することを含み得る。特徴は、会話中のユーザのエンティティに関連する質問を検出すること、質問に対する可能性のあるユーザ回答を決定すること、可能性のあるユーザ回答をワンタップ形式でユーザに提供することを含む。特徴は、コンテキストインジケータに基づいて少なくとも１つの会話を編成し、少なくとも１つの会話を索引付けすることを含み得る。
【００２６】
他の実施形態では、これらの方法および他の方法は、対応するシステム、装置、およびコンピュータストレージ上に符号化された方法の動作を実行するように構成されたコンピュータプログラムを含むことができる。
【００２７】
上記の実施形態および／または他の実施形態のうちのいくつかは、いくつかの点で有利であり得る。例えば、経時的に学習して会話のセマンティクスを理解し、リアルタイム会話から意味を導き出す機械学習モデルに基づいて提案を生成することができ、したがって提案は効率的かつ正確である。提案はまた、感情分析および会話フローを含むコンテキスト分析に基づいて生成され得る。適切な提案が適切なコンテキスト条件の下で生成され、したがってインテリジェントである。たとえば、祝福メッセージは悲しんでいるユーザに送信されない。さらに、提案は、ユーザが動作を完了するために直接使用することができる豊富なコンテキストおよび次のステップ（複数可）を提供することができる。さらに、重要な提案および更新は、会話の全ての参加者に対して１つの場所で他のサービスによって提供され得る。また、編成と要約のメカニズムによって、ユーザは会話で共有された意味のある情報を簡単に振り返ることができる。
【００２８】
しかしながら、上記の特徴および利点は、全てを網羅するものではなく、多くの追加の特徴および利点が企図され、かつ本開示の範囲内に含まれることを理解されたい。さらに、本開示で使用される言語は、主に、読みやすさおよび教示目的のために選択されたものであり、本明細書に開示される主題の範囲を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００２９】
本明細書は、同様の参照番号が同様の構成要素を示すように使用される添付図面の図において限定ではなく例として示されている。
【図１】図１は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成する例示的なシステムを示すブロック図である。
【図２】図２は、提案アプリケーションの例を示すブロック図である。
【図３】図３は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成する例示的な方法のフローチャートである。
【図４】図４は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成する特定の例示的な方法のフローチャートである。
【図５】図５は、会話から使用可能なエンティティを手動で決定するための例示的な方法のフローチャートである。
【図６】図６は、機械学習モデルを生成および更新するための例示的な方法のフローチャートである。
【図７】図７は、第１のアプリケーションから第２のアプリケーションにエンティティ情報を供給して提案を生成するための例示的な方法のフローチャートである。
【図８】図８は、会話中の可能性のあるユーザ回答を予測するための例示的な方法のフローチャートである。
【図９】図９は、検索要求に応答して会話および／または会話メッセージを選択的に取得するための例示的な方法のフローチャートである。
【図１０】図１０は、提案を示す例示的な会話インタフェースのグラフィック表示を含む。
【図１１Ａ】図１１Ａは、第１のアプリケーションによって生成された会話を示す例示的な会話インタフェースのグラフィック表示である。
【図１１Ｂ】図１１Ｂは、第２のアプリケーションによって生成された提案を示す例示的な会話インタフェースのグラフィック表示である。
【図１２】図１２は、ワンタップ回答を示す例示的な会話インタフェースのグラフィック表示である。
【図１３】図１３は、会話レポートを示す例示的な会話インタフェースのグラフィック表示である。
【図１４】図１４は、会話の要約を示す例示的な会話インタフェースのグラフィック表示である。
【図１５】図１５は、提案の一連の表示を示す例示的な会話インタフェースのグラフィック表示を含む。
【発明を実施するための形態】
【００３０】
自動提案生成のためのシステム、方法およびインタフェースが開示される。いくつかの実施形態では、自動提案生成のためのシステム、方法、およびインタフェースは会話分析に基づく。ユーザが会話においてメッセージを送信すると、メッセージが分析されて、ユーザが動作を起こすことができる１つまたは複数のエンティティが決定される。会話の他のメッセージ、または会話のユーザおよび／または他の参加者（複数可）を含む他の会話であっても、分析されて、コンテキストインジケータが決定される。提案は、コンテキストインジケータに基づいて生成される。たとえば、２人のユーザがストアで会うことを望む場合、ユーザをストアに誘導してミーティング時間を設定するためのマップおよびカレンダーを提案することができる。コンテキストインジケータに基づいて、マップは両方のユーザに近い特定のストアへの道順を示し、カレンダーは両方のユーザの空いている時間を強調表示し得る。いくつかの例では、提案は動作の次のステップを提示する。
【００３１】
提案生成プロセスは、多くの態様で自動化されている。例えば、本開示の実施形態は、提案を生成するかどうか、およびいつおよび会話内のどこに提案を挿入するか、かつ／または会話への可能性のある組み込みに関していつ１人または複数の参加者に提案を推奨するかを決定する。たとえば、ユーザＡからユーザＢへの「コーヒーハウスで会いますか？」という質問に関して、ユーザＢが質問に対して「素晴らしい！」と答えた場合、２人のユーザの一方または両方にコーヒーハウスを含むマップが提案され得、ユーザＢが「行きたいのですが．．．．．．」と答えた場合、２人のユーザのどちらにもマップ提案は提供されない。いくつかの実施形態では、第１のユーザの現在位置からのコーヒーハウスへの道順と共に第１のユーザに提供される第１のバージョンと、第２のユーザの現在位置からのコーヒーハウスへの道順と共に第２のユーザに提供される第２のバージョン等の異なるバージョンの提案マップが各ユーザに提供され得る。本開示の実施形態はまた、コンテキストインジケータに基づいて、どのような提案が適切であるか、および／またはどの時期に提案を提供することが適切であるかを決定する。例えば、ユーザが（例えば、ユーザの別の会話の分析に基づいて決定されるような）悪いニュースをちょうど受け取った場合、会話中にユーザに祝福の提案を提供することが不適切であると決定され得る。別の例として、ユーザが（例えば、会話および／または以前の会話においてそのようなことについてユーザによって表現された感情に基づいて）何かを嫌っていると決定された場合、会話中にユーザにそのようなことの提案を提供することが適切ではないと決定され得る。
【００３２】
本開示のシステム、方法、およびインタフェースは、クライアント−サーバシステムの状況において説明されるが、システム、方法、およびインタフェースは、ネットワークを介して動作可能に接続された単一のクライアント−サーバシステム以外のシステムに適用することができる。例えば、提案アプリケーションが格納されているクライアントデバイス、サードパーティサーバ、電子メールサーバ、および／またはサーバは、本明細書に記載された機能の一部または全部を提供し、そのような機能を提供するためにサーバのクラスタを使用し得る。追加の例として、クライアントハードウェアは、携帯電話またはタブレットデバイスであり得る。
【００３３】
ここで図面を参照すると、図１は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成するためのシステム１００のブロック図を示す。図示されたシステム１００は、ユーザ１０４ａ、１０４ｎによってアクセスされるクライアントデバイス１０２ａ、１０２ｎ、サーバ１０６、電子メールサーバ１０８、サードパーティサーバ１１０および検索サーバ１１２を含む。図示した例では、これらのエンティティは、ネットワーク１１４を介して通信可能に結合されている。図１および残りの図において、参照番号の後の文字、例えば「１０２ａ」は、特定の参照番号を有する構成要素への参照である。例えば、「１０２」の後に文字を含まないテキスト中の参照番号は、参照番号を有する構成要素の個々の例に対する一般的な参照である。２つのクライアントデバイス１０２ａ、１０２ｎのみが図示されているが、当業者であれば、任意の数のクライアントデバイス１０２ｎが任意の数のユーザ１０４ｎに対して使用可能であることを認識するであろう。
【００３４】
ネットワーク１１４は、従来型、有線または無線であってよく、スター構成、トークンリング構成または他の構成を含む多数の異なる構成を有し得る。さらに、ネットワーク１１４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えば、インターネット）、および／または複数のデバイスが通信し得る他の相互接続されたデータパスを含み得る。いくつかの例では、ネットワーク１１４はピアツーピアネットワークであり得る。ネットワーク１１４はまた、様々な異なる通信プロトコルでデータを送信するための通信ネットワークの一部に結合されるか、またはその一部を含み得る。いくつかの他の例では、ネットワーク１１４は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ダイレクトデータ接続、ワイヤレスアプリケーションプロトコル（ＷＡＰ）、電子メール他を介してデータを送受信するためのＢｌｕｅｔｏｏｔｈ（登録商標）通信ネットワークまたはセルラー通信ネットワークを含む。図１は、クライアントデバイス１０２ａ、１０２ｎ、電子メールサーバ１０８、サードパーティサーバ１１０、および検索サーバ１１２に結合された１つのネットワーク１１４を示しているが、実際には、１つまたは複数のネットワーク１１４がこれらのエンティティに接続することができる。
【００３５】
図１のクライアントデバイス１０２ａ、１０２ｎは、一例として使用される。図示された実施形態では、２つのクライアントデバイス１０２のみが図示されているが、本開示は、任意の数のクライアントデバイス１０２を有するシステムアーキテクチャに適用される。図示した実施形態では、ユーザ１０４ａ、１０４ｎは、それぞれ信号線１１６ａ、１１６ｎを介してクライアントデバイス１０２ａ、１０２ｎとインタラクションする。クライアントデバイス１０２ａ、１０２ｎは、それぞれ信号線１２０ａ、１２０ｎを介してネットワーク１１４に通信可能に接続され、サーバ１０６、電子メールサーバ１０８、サードパーティサーバ１１０、および検索サーバ１１２と情報を交換する。例えば、クライアントデバイス１０２ａは、会話メッセージ（本明細書では「電子メッセージ」とも称される）をサーバ１０６に送信する。サーバ１０６は、会話メッセージを処理し、会話メッセージに基づいて提案を生成する。いくつかの例では、サーバ１０６は、１つまたは複数の会話メッセージを受信し、１つまたは複数の会話メッセージに基づいて提案を生成する。他の例では、サーバ１０６は、他の入力（例えば、以前のユーザ活動、ユーザプロフィール情報など）も使用して提案を生成する。認証は、ユーザの任意のプロフィール情報または個人情報の使用前に取得される。クライアントデバイス１０２ａは、サーバ１０６から予期しない遅延のない提案を受信する。例えば、クライアントデバイス１０２は、「ジョンの飛行機は到着しましたか？」というメッセージを送信した直後の到着時刻及びフライト状況を含む提案を受信する。いくつかの例では、例えば、提案が、会話の将来の時間に最も適合する場合、または、サーバ１０６が状況および確認に関する１つまたは複数の会話メッセージを待って提案を送信する場合など、遅延が望ましいことがあり得る。例えば、クライアントデバイス１０２ａが、「コーヒーを飲みに行こう」というメッセージをクライアントデバイス１０２ｎに送信した場合、コーヒーショップのマップを即座に提案するのではなく、サーバ１０６は、提案を生成および／または提供する前にクライアントデバイス１０２ｎからのメッセージ（例えば、「私はコーヒーが嫌いです」）を待つ。
【００３６】
いくつかの例では、クライアントデバイス１０２は、メモリおよびプロセッサを含む任意のコンピューティングデバイスとすることができる。例えば、クライアントデバイス１０２は、埋め込まれるか、または結合された１つまたは複数のプロセッサを有するラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、携帯電話、パーソナルデジタルアシスタント、モバイル電子メールデバイス、携帯型ゲームプレーヤ、携帯型音楽プレーヤ、またはネットワーク１１４にアクセスすることができる任意の他の電子デバイス、その他とすることができる。
【００３７】
サーバ１０６は、プロセッサ、メモリ、及びネットワーク通信能力を含むハードウェアサーバとすることができる。サーバ１０６は、信号線１２２を介してネットワーク１１４に通信可能に接続される。いくつかの例では、サーバ１０６は、クライアントデバイス１０２、電子メールサーバ１０８、サードパーティサーバ１１０および検索サーバ１１２の１つまたは複数とネットワーク１１４を介してデータを送受信する。サーバ１０６は、任意選択的にソーシャルネットワークアプリケーション１２４を含む。
【００３８】
ソーシャルネットワークは、ユーザが共通の特徴（複数可）によって接続されているネットワークとすることができる。共通の特徴は、例えば、友人、家族、仕事、趣味などの関係／つながりを含み得る。共通の特徴（複数可）は、明示的に定義された関係および他のオンラインユーザとの社会的なつながりによって暗示される関係を含み、関係がソーシャルグラフを形成する１つまたは複数のソーシャルネットワーキングシステムによって提供され得る。いくつかの例では、ソーシャルグラフは、これらのユーザのマッピングおよびそれらのユーザがどのように関係しているのかを反映することができる。サーバ１０６内のソーシャルネットワークアプリケーション１２４は、ユーザの登録、コンテンツ（例えば、投稿、コメント、写真、リンク、チェックインなど）の発行、マルチユーザ通信セッションのホスティング、グループの管理、個々の共有レベルの管理、ソーシャルグラフの更新などを処理することによってソーシャルネットワークを管理する。ソーシャルネットワークアプリケーション１２４は、ユーザ名およびパスワードなどの情報を受信することによってユーザを登録し、ユーザに関連付けられ、かつソーシャルグラフの一部として格納されるユーザプロフィールを生成する。いくつかの例では、ユーザプロフィールは、趣味（例えば、サッカー、読書、飲食、購読など）、活動（例えば、検索履歴、承認の表示、投稿、コメント、マルチユーザ通信セッションなど）、人口統計（例えば、年齢、民族、場所など）、プロフィールの評価および評判（例えば、情報評価、ユーモアの評価など）を含むユーザに関する追加情報を含む。システム１００は、従来型のソーシャルネットワークサーバ、電子メールサーバ、マイクロブログサーバ、ブログサーバ、フォーラムサーバ、メッセージサーバなどを含む複数のサーバ１０６を含み得る。
【００３９】
さらに、サーバ１０６およびソーシャルネットワークアプリケーション１２４は、１つのソーシャルネットワークの代表とすることができる。複数のソーシャルネットワークがネットワーク１１４に結合されてもよく、各ソーシャルネットワークが自己のサーバ、アプリケーション、およびソーシャルグラフを有する。たとえば、第１のソーシャルネットワークはビジネスネットワーキングに関し、第２のソーシャルネットワークは大学に関し、または中心に配置され、第３のソーシャルネットワークはローカルビジネスに関する。
【００４０】
電子メールサーバ１０８は、プロセッサ、メモリ、及びネットワーク通信能力を含むハードウェアサーバとすることができる。電子メールサーバ１０８は、信号線１２６を介してネットワーク１１４に通信可能に接続される。いくつかの例では、電子メールサーバ１０８は、サーバ１０６がユーザデータに基づいて会話メッセージ内でエンティティに対する提案を生成することができるようにユーザデータをサーバ１０６と交換する。例えば、ユーザが会話内で玩具を購入することについて話している場合、サーバ１０６は、電子メールサーバ１０８と通信して、（例えば、電子メール内の玩具の購入レシートから）ユーザの購入履歴を取得し、購入履歴に少なくとも部分的に基づいて提案を決定する。認証は、ユーザの購入履歴またはその他の個人情報を使用する前に取得される。
【００４１】
サードパーティのサーバ１１０は、プロセッサ、メモリ、およびネットワーク通信能力を含むコンピューティングデバイスとすることができる。サードパーティサーバ１１０は、信号線１２８を介してネットワーク１１４に接続される。サードパーティサーバ１１０は、ネットワーク１１４を介してシステム１００のクライアントデバイス１０２、サーバ１０６、および検索サーバ１１２との間でデータを送受信する。サードパーティサーバ１１０は、異なるアプリケーションを格納し得る。例えば、サーバ１０６は、サードパーティサーバ１１０に格納された会話アプリケーションから会話メッセージを受信することができる。別の例では、サーバ１０６は、（例えば、サードパーティサーバ１１０のアプリケーションプログラミングインタフェース（ＡＰＩ）を介して）サードパーティサーバ１１０に格納されたアプリケーションにエンティティ情報を提供して、アプリケーションがエンティティ情報に基づいて提案を生成できるようにする。複数のサードパーティサーバが提供され、サーバ１０６は、様々な因子に基づいて（エンティティ情報を提供し、応答提案を受信するための）適切なサードパーティサーバを選択してもよい。例えば、会話においてエンティティに関連して言及されたエンティティのセマンティックタイプ（ｓｅｍａｎｔｉｃ  ｔｙｐｅ）および／または動作（複数可）が、他の使用可能なサードパーティサーバの代わりに任意のサードパーティサーバを選択するために利用されてもよい。例えば、サードパーティサーバ１１０は、レストラン予約の提案を提供することができ、かつ「レストラン」のセマンティックタイプであるエンティティに基づいて、および／またはエンティティに関連して言及されている「確保する」、「予約する」、および／または他の「確保」の用語に基づいて選択することができる。さらに、いくつかの実施形態では、本明細書に記載されたコンテキストインジケータを利用してエンティティが使用可能であるかどうかを決定し、サーバ１０６は、エンティティが使用可能であると判定された場合にのみ、エンティティ情報をサードパーティサーバに任意選択的に提供し得る。これは、エンティティが使用可能であるとみなされないときに、エンティティに関するエンティティ情報がサードパーティサーバに送信されるのを防止することによって、ネットワークトラフィックを削減し得る。
【００４２】
検索サーバ１１２は、プロセッサ、メモリ、およびネットワーク通信能力を含むコンピューティングデバイスとすることができる。検索サーバ１１２は、信号線１３０を介してネットワーク１１４に接続される。検索サーバ１１２は、ユーザからの検索要求に応答してユーザに検索結果を提供する検索エンジンを含む。いくつかの例では、サーバ１０６は、検索サーバ１１２と通信して、エンティティに関連する情報を検索し、検索に応答して検索サーバ１１２によって返信された情報に基づいて、エンティティに対して動作を起こすための提案を生成する。
【００４３】
いくつかの例において、サーバ１０６は提案アプリケーション１３２ｂを含む。他の例では、提案アプリケーション１３２ｂは、クライアントデバイス１０２上に追加的または代替的に格納され得る。例えば、提案アプリケーション１３２ｂは、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成するためのクライアントデバイス１０２上の提案アプリケーション１３２ｂの一部およびサーバ１０６上の提案アプリケーション１３２ｂを含むシンクライアントアプリケーションであり得る。
【００４４】
提案アプリケーション１３２ｂは、会話から少なくとも１つの会話メッセージを受信し、会話メッセージからエンティティを特定する。エンティティは、会話メッセージの一部、例えば、会話メッセージ内の人物または対象とすることができる。いくつかの例では、提案アプリケーション１３２ｂは、会話メッセージの文法構成要素を分析することに基づいて会話メッセージを解析し、解析された会話メッセージから１つまたは複数のエンティティを特定する。例えば、提案アプリケーション１３２ｂは、メッセージを解析することに基づいて「素晴らしい天気！」というメッセージが、「素晴らしい」、「天気」、および「！」を含んでいると特定し、メッセージから第１のエンティティ「素晴らしい」および第２のエンティティ「天気」を決定する。
【００４５】
いくつかの実施形態では、提案アプリケーション１３２ｂは、分析を全体の会話または他の会話（例えば、以前の会話、サードパーティアプリケーションからの会話）にさらに拡張して、コンテキストインジケータを決定する。たとえば、「ＡＢＣコーヒーショップで会いましょうか？」というメッセージおよびユーザプロフィール情報から、提案アプリケーション１３２ｂは、エンティティ「ＡＢＣコーヒーショップ」がユーザのオフィスの近くにあると判定する。認証は、ユーザの任意のプロフィール情報または個人情報の使用前に取得される。他のコンテキストインジケータは、感情インジケータ、会話フロー、メッセージの時制、メッセージの最新性、メッセージが送信された日および／または時間、エンティティに関連する日および／または時間、会話メタデータなどを含む。
【００４６】
いくつかの実施形態では、提案アプリケーション１３２ｂは、ユーザがエンティティに対して動作を起こそうとしている会話のコンテキストにエンティティがあるかどうかを決定することに基づいてエンティティが使用可能かどうかをさらに決定する。例えば、提案アプリケーション１３２ｂは、メッセージ「私はＡが好きです」におけるＡエンティティは使用可能でないと決定するが、メッセージ「私はＡを購入するつもりです」におけるＡエンティティが使用可能であると決定する。提案アプリケーション１３２ｂは、会話フロー、時制、感情インジケータ（例えば、感情記号に基づく）、メッセージに使用される動詞を含むコンテキストインジケータに基づいてエンティティが使用可能かどうか、メッセージ、会話メタデータ、その他において質問があったかどうかを決定する。ユーザＡがユーザＢに「ＸＹＺで会う？」と尋ねた場合、提案アプリケーション１３２ｂは、会話フローにおいてユーザＢの肯定的な回答を受信した後に、場所「ＸＹＺ」が使用可能であると決定するのみである。
【００４７】
いくつかの実施形態では、提案アプリケーション１３２ｂは、コンテキストインジケータに基づいて使用可能なエンティティに対する提案を生成する。例えば、提案アプリケーション１３２ｂは、第２のユーザが第１のユーザにディナーを招待したときの提案Ｂを決定するために、第１のユーザからのメッセージ「私はＡレストランが嫌い」、「私はＢレストランが好き」、「Ｃレストランは大丈夫」をコンテキストインジケータとして使用する。例えば、メッセージ中のそれらの各エンティティに関して表現された対応する感情に基づいて、提案が、Ａレストランではなく、Ｂレストランおよび／またはＣレストランに関するものとなり得る。本明細書で説明されるように、メッセージは、第２のユーザが第１のユーザをディナーに招待する会話からのものであってもよく、かつ／または第２のユーザを含むか、または含まない他の会話からのものであってもよい。さらに、本明細書で説明するように、第１のユーザのメッセージに基づいて決定された提案Ｂは、第１のユーザおよび／または第２のユーザに表示するために提供されてもよい（適切な認証が得られた場合）。換言すれば、いくつかの実施形態では、提案Ｂは、第１のユーザのメッセージに基づいて生成され、第２のユーザへの表示のために提供されてもよい。それらの実施形態のいくつかでは、第１のユーザのメッセージに基づく提案は、第１のユーザのメッセージが第２のユーザも含む会話（複数可）からのものであると判定された場合にのみ、第２のユーザにのみ提供される。いくつかの他の実施形態では、第１のユーザのメッセージのうちの１つまたは複数が第２のユーザを含まない会話（複数可）からのものであっても、第１のユーザのメッセージに基づく提案が第２のユーザに提供されてもよい。
【００４８】
さらに、いくつかの実施形態では、提案アプリケーション１３２ｂは、エンティティ情報を（例えば、サードパーティサーバ１１０によってホストされる）別のアプリケーションに供給し、それに応答して、別のアプリケーションから提案を得ることができる。エンティティ情報を別のアプリケーションに供給することは、１つまたは複数のネットワークを利用して別のアプリケーションにエンティティ情報を送信すること、および任意選択で別のアプリケーションのＡＰＩを利用することを含み得る。エンティティ情報を供給することに応答して提案を受信することは、エンティティ情報を送信することに応答して１つまたは複数のネットワークを介して提案を受信することを含み得、かつ任意選択的にＡＰＩ（例えば、エンティティ情報を送信する際に利用されるのと同じＡＰＩ）を使用し得る。
【００４９】
一例として、ユーザが他のユーザとの会話で天気について言及した場合、気象サービスは、ユーザに毎時の天気予報を送信し得る。例えば、毎時の天気予報は、全てのユーザが見るために会話のトランスクリプトに組み込まれ得、かつ／または会話に関与するために利用されるメッセージ交換クライアント／アプリケーション以外の別のアプリケーションを介してユーザに提供され得る。このようにして、提案アプリケーション１３２ｂは、ユーザが別のアプリケーションをクライアントデバイスに手動でインストールすることなく、ユーザを別のアプリケーションと接続し、かつ会話の全ての参加者に表示するための場所に（例えば、会話のトランスクリプトに）重要な提案を提供する。いくつかの例では、提案アプリケーション１３２ｂは、追加的または代替的に、ユーザが会話の質問に答える可能性のある回答を予測し、ユーザ時間を節約する。他の例では、提案アプリケーション１３２ｂは、追加的または代替的に、ユーザが会話において所望する任意の情報を容易に参照することができるように会話の情報を編成する。提案アプリケーション１３２ｂの様々な実施形態が、例えば、図２を参照して本明細書でさらに詳細に説明される。
【００５０】
ここで図２を参照すると、提案アプリケーション１３２ｂの一例がより詳細に示されている。図２は、いくつかの実施形態による、プロセッサ２０２、メモリ２０４、通信ユニット２０８、ストレージ２１０、および提案アプリケーション１３２ｂを含むコンピューティングデバイス２００のブロック図である。いくつかの例では、コンピューティングデバイス２００はサーバ１０６である。他の例では、コンピューティングデバイスはクライアントデバイス１０２である。さらに他の例では、コンピューティングデバイスは、サーバ１０６およびクライアントデバイス１０２の両方で動作するような分散型コンピューティングデバイスである。コンピューティングデバイス２００のコンポーネントは、バス２０６によって通信可能に結合されているものとして図２に示されている。
【００５１】
プロセッサ２０２は、演算を実行してディスプレイデバイスに電子ディスプレイ信号を提供するために、演算論理装置、マイクロプロセッサ、汎用コントローラまたはその他のプロセッサアレイの一部または全部を含む。プロセッサ２０２は、他のコンポーネントとの通信のためにバス２０６に結合される。プロセッサ２０２は、データ信号を処理し、かつ複合命令セットコンピュータ（ＣＩＳＣ）アーキテクチャ、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャ、または命令セットの組合せを実装するアーキテクチャを含む様々なコンピューティングアーキテクチャを含み得る。図２には単一のプロセッサが含まれているが、複数のプロセッサを含むようにしてもよい。処理能力は、画像の表示および画像の捕捉および送信をサポートすることに限定され得る。処理能力は、様々なタイプの特徴抽出およびサンプリングを含むより複雑なタスクを実行するのに十分であり得る。当業者には、他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ及び物理的構成が可能であることは明らかであろう。
【００５２】
メモリ２０４は、プロセッサ２０２によって実行され得る命令および／またはデータを記憶する。メモリ２０４は、他のコンポーネントとの通信のためにバス２０６に結合される。命令および／またはデータは、本明細書に記載の技術のいずれか、および／または全てを実行するためのコードを含み得る。メモリ２０４は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、または当該技術分野で既知のいくつかの他のメモリデバイスであってもよい。いくつかの例では、メモリ２０４は、不揮発性メモリまたは同様の永久ストレージおよび媒体、例えば、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための当該技術分野で既知のいくつかの他の大容量ストレージをも含むことができる。
【００５３】
通信ユニット２０８は、クライアントデバイス１０２、サーバ１０６、電子メールサーバ１０８、サードパーティサーバ１１０、および検索サーバ１１２のうちの少なくとも１つとの間でデータを送受信する。通信ユニット２０８は、バス２０６に接続されている。例えば、通信ユニット２０８は、クライアントデバイス１０２から会話メッセージを含むデータを受信し、サーバ１０６にデータを送信する。サーバ１０６は、サーバ１０６に格納されて提案アプリケーション１３２ｂを使用して会話メッセージに基づいて提案を生成し、その提案をクライアントデバイス１０２に送信する。
【００５４】
いくつかの例では、通信ユニット２０８は、クライアントデバイス２０６または別の通信チャネルに物理的に直接接続するためのポートを含む。例えば、通信ユニット２０８は、クライアントデバイス２０６と有線通信するためのＲＪ４５ポートまたは同様のポートを含む。他の例では、通信ユニット２０８は、ＩＥＥＥ  １５０２．１１、ＩＥＥＥ  １５０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）または他の適切な無線通信方法などの１つまたは複数の無線通信方法を使用してクライアントデバイス２０６または任意の他の通信チャネルとデータを交換するための無線トランシーバ（図示せず）を含む。
【００５５】
いくつかの他の例では、通信ユニット２０８は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ダイレクトデータ接続、無線アプリケーションプロトコル（ＷＡＰ）、電子メールまたは他の適切なタイプの電子通信などのようなセルラー通信ネットワークを介してデータを送受信するためのセルラー通信トランシーバを含む。さらに別の例では、通信ユニット２０８は、有線ポートおよび無線トランシーバを含む。通信ユニット２０８はまた、当業者に理解されるような、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＨＴＴＰＳおよびＳＭＴＰなどの標準的なネットワークプロトコルを使用して、ファイルおよび／またはメディアオブジェクトの配信のためのネットワーク１１４への他の従来の接続を提供する。
【００５６】
ストレージ２１０は、本明細書に記載の機能を提供するためのデータを記憶する非一時的メモリである。ストレージ２１０は、バス２０６に接続される。ストレージ２１０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ、またはいくつかの他のメモリデバイスであってもよい。いくつかの例では、ストレージ２１０は、不揮発性メモリまたはハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、ＤＶＤ−ＲＯＭデバイス、ＤＶＤ−ＲＡＭデバイス、ＤＶＤ−ＲＷデバイス、フラッシュメモリデバイス、またはより永続的に情報を記憶するための他の大容量ストレージを含む同様の永久ストレージおよび媒体をも含む。
【００５７】
いくつかの例では、ストレージ２１０は、ソーシャルネットワーク内のユーザに関連するソーシャルネットワークプロフィール、会話内の会話メッセージ、会話から特定された使用可能なエンティティ、会話および／または他の会話から決定されたコンテキストインジケータ、会話の使用可能なエンティティに基づいて生成された提案などを記憶する。
【００５８】
いくつかの例では、提案アプリケーション１３２ｂは、コントローラ２２０、会話管理モジュール２２２、モデルビルダー２２４、会話アナライザ２２６、決定エンジン２２８、提案ジェネレータ２３０、およびユーザインタフェースエンジン２３６を備える。
【００５９】
コントローラ２２０は、データを受信してデータを適切なコンポーネントに送信するためのコードおよびルーチンとすることができる。いくつかの例では、コントローラ２２０は、データを受信して送信するために以下に説明する機能を提供するためにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、コントローラ２２０は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、コントローラ２２０は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００６０】
いくつかの例では、コントローラ２２０は、通信ユニット２０８を介してデータを受信し、そのデータを提案アプリケーション１３２の適切なモジュールに送信する。例えば、コントローラ２２０は、通信ユニット２０８を介してクライアントデバイス１０２からユーザ情報を受信し、ユーザ情報をモデルビルダー２２４に送信して、機械学習モデルを構築および更新する。別の例では、コントローラ２２０は、会話アナライザ２２６からの会話中のエンティティのコンテキストインジケータと、決定エンジン２２８からのエンティティが使用可能であるという判定とを受け取り、ユーザがエンティティに対して動作を起こすための提案を生成するために使用可能なエンティティのコンテキストインジケータを提案ジェネレータ２３０に送信する。
【００６１】
会話管理モジュール２２２は、会話セッションを生成および管理するためのコードおよびルーチンとすることができる。いくつかの例では、会話管理モジュール２２２は、会話セッションを生成および管理するために以下に説明する機能を提供するためにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、会話管理モジュール２２２は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能および使用可能とすることができる。いくつかの例では、会話管理モジュール２２２は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００６２】
いくつかの例では、会話管理モジュール２２２は会話セッションを生成して、会話インタフェースに会話セッションを表示するためのグラフィックデータを生成するようにユーザインタフェースエンジン２３６に指示する。会話セッションまたは会話は、ビデオ会議、オーディオ会議、インスタントメッセージングのうちの少なくとも１つを含むマルチユーザ通信セッションである。会話は、少なくとも１つの会話メッセージを含む。会話メッセージは、ビデオメッセージ、オーディオメッセージ、テキストメッセージ、写真、ハイパーリンクなどを含み得る。いくつかの例では、会話管理モジュール２２２は、クライアントデバイス１０２のオーディオおよびビデオキャプチャデバイスとインタラクションすることによって会話を生成して、ユーザ１０４のリアルタイムオーディオ−ビデオ同期通信データストリームを取得する。例えば、会話管理モジュール２２２は、クライアントデバイス１０２に含まれるマイクロフォンおよびビデオカメラ（例えば、ウェブカメラまたは前向きカメラ）の機能を制御する、クライアントデバイス１０２に格納されたソフトウェアドライバとインタフェースして、クライアントデバイス１０２によってキャプチャされたオーディオ−ビデオデータに基づいて会話を生成する。オーディオ−ビデオデータは、様々なオーディオコーデックおよびビデオコーデックを使用して符号化することができる。他の例では、会話管理モジュール２２２は、会話に参加するユーザが文書、スクラッチパッド、および／またはコンピューティングデバイスの画面を互いに共有することを可能にする会話を生成する。
【００６３】
いくつかの例では、会話管理モジュール２２２は、会話の会話メッセージに基づいて提案ジェネレータ２３０によって自動的に生成された提案を受信し、ユーザインタフェースエンジン２３６と通信して、会話中の会話メッセージとともに提案を表示するためのグラフィックデータを生成する。他の例では、会話管理モジュール２２２は、会話内の１つまたは複数のアプリケーションまたはサービスを提供し、ユーザが１つまたは複数のアプリケーションまたはサービスとインタラクションするための１つまたは複数のツールを会話インタフェース内に生成するようにユーザインタフェースエンジン２３６に指示する。例えば、会話管理モジュール２２２は、ユーザがトピック、時間などに基づいて会話を検索するために、会話インタフェース内に検索ボックスを生成するようにユーザインタフェースエンジン２３６に指示する。
【００６４】
いくつかの例では、会話管理モジュール２２２は、通信ユニット２０８を介して他のサーバ（例えば、サードパーティサーバ１１０）と通信して、他の会話から会話メッセージを受信する。他の会話は、他のサーバ上の他のアプリケーションによって生成され得る。会話管理モジュール２２２は、会話メッセージを提案アプリケーション１３２ｂの他のコンポーネント（例えば、２２４−２３６）に転送して、提案を生成する。いくつかの例では、会話管理モジュール２２２はまた、会話メッセージをストレージ２１０に記憶する。
【００６５】
モデルビルダー２２４は、機械学習モデルを生成および／または更新するためのコードおよびルーチンとすることができる。いくつかの例では、モデルビルダー２２４は、機械学習モデルを生成および／または更新するために以下に説明する機能を提供するためにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、モデルビルダー２２４は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能および実行可能とすることができる。いくつかの例では、モデルビルダー２２４は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００６６】
モデルビルダー２２４は、会話管理モジュール２２２によって生成されかつ受信された会話から情報を受信し、情報から特徴を抽出し、抽出された特徴に基づいてモデルを生成する。モデルは、場所、趣味のリストなどの、ユーザに関連する項目を含む。趣味は、好きなことのユーザの表示から明らかにすることができる。趣味は、ユーザの活動から推測される情報とすることもできる。例えば、ユーザがいくつかの会話でハイキング器具について話す場合、モデルビルダー２２４は、ユーザが屋外活動に興味があると推測する。いくつかの例では、モデルビルダー２２４は、例えば、クエリ、文書検索、ユーザインタラクション、電子メールなどを含む様々なソースからユーザ情報を受信し、その情報に基づいてモデルを構築する。例えば、モデルビルダー２２４は、ユーザの検索履歴をモデルに含むようにする。別の例では、クエリに対して返信された文書群と、各文書に関連付けられたランク付けとを受けると、モデルビルダー２２４は、文書とクエリとの間の関連性を示すランクを含むようにモデルを構築する。
【００６７】
いくつかの例では、モデルビルダー２２４は、ユーザ統計およびユーザ行動パターンデータ（例えば、ユーザが会話に参加する頻度、ユーザが会話の中で最も話す相手、ユーザが他人と会話することを好む時間、ユーザが会話で写真を共有することを好むかどうか、ユーザがどのような写真を共有することを好むかなど）を含むようにモデルを生成する。他の例では、モデルビルダー２２４は、ユーザ動作に関する予測を行うために使用される一連の重みおよび乗数を含むようにモデルを生成する。いくつかの例では、モデルビルダー２２４は、ユーザ間の社会的関係に基づいて重みおよび乗数を決定する。例えば、モデルビルダー２２４は、会話管理モジュール２２２から会話メッセージを受信する。会話メッセージは、会話で提起された質問と、質問に対する第１のユーザおよび第２のユーザの回答とを含む。モデルビルダー２２４は、ソーシャルネットワークアプリケーション１２４と通信して、第１のユーザが第３のユーザの親しい友人であり、第２のユーザがソーシャルネットワークアプリケーション１２４によって管理されるソーシャルグラフに基づいて第３のユーザを個人的に知らないと決定する。モデルビルダー２２４は、第２のユーザよりも第１のユーザに高い重みを割り当てる。後に、モデルが同様のユーザの動作に基づいてユーザの行動を予測するために使用される場合、第１のユーザの回答は、第３のユーザの質問に対する可能性のある回答を予測する際により重み付けされる。他の例では、モデルビルダー２２４は、会話メッセージの最新性に基づいて重みおよび乗数を決定する。例えば、ユーザが先月の会話でゲームＡについて話し、今月の会話でゲームＢについて話したとすると、モデルビルダー２２４は、ユーザがどのゲームフォーラムを購読するかを予測する際にゲームＡよりもゲームＢにより高い重みを決定する。いくつかの他の例では、モデルビルダー２２４は、ユーザが会話に参加する頻度、ユーザが他人と会話することを好む時間などを含む他の因子に基づいて重みおよび乗数を決定する。
【００６８】
いくつかの例では、モデルビルダー２２４はモデルを生成し、そのモデルに基づいて１つまたは複数のカテゴリにユーザをマッピングする。カテゴリは、以下に記載するように、会話アナライザ２２６によって特定されたエンティティとすることができる。例えば、モデルビルダー２２４は、ユーザがバスケットボールをしたいと判定し、ユーザをカテゴリ「スポーツマン」およびカテゴリ「バスケットボール」に分類する。あるいは、モデルビルダー２２４は、毎日他のユーザと話しているユーザをカテゴリ「話し手」に分類する。
【００６９】
いくつかの実施形態では、モデルビルダー２２４は機械学習モデルを生成する。モデルビルダー２２４は、少なくとも１つの会話を含む様々なソースからデータを収集し、機械学習アルゴリズムを使用して、収集されたデータから特定の特性を学習する。機械学習アルゴリズムは、回帰技術、インスタンスベースのアルゴリズム、決定木、ベイジアンアルゴリズム、カーネル法、クラスタリング法、相関ルール学習、人工ニューラルネットワークなどを含み得るが、これらに限定されない。モデルビルダー２２４は、経時的にモデルをトレーニングして会話のセマンティクスを理解し、リアルタイムの会話から意味を導き出す。モデルが進化するにつれて、提案作成、行動予測などにおいてモデルを使用する効率および精度が向上する。
【００７０】
モデルビルダー２２４は、ユーザ動作をトレーニング信号として使用してモデルをトレーニングする。いくつかの例では、モデルビルダー２２４は、以前の会話におけるユーザの動作を追跡し、それらのユーザ動作から学習するようにモデルをトレーニングする。例えば、モデルビルダー２２４は、ユーザが購入ツールを有する会話インタフェースで提供されたものを決して購入しないことを学習するか、または２人のユーザが２人の間の以前の会話から会議スポットとして特定のコーヒーハウスを常に選択することを学習する。他の例では、モデルビルダー２２４は、ユーザの非チャット動作を追跡し、非チャット動作から学習するようにモデルをトレーニングする。例えば、モデルビルダー２２４は、ユーザの購入履歴からユーザの好みのチョコレート銘柄を学習する。モデルによって学習したことに基づいて、ユーザに対して提案を行うことができる。例えば、会話の中で休暇についてフロリダに飛行機で行くことについてユーザが話している場合、モデルビルダー２２４は、ユーザがこの航空会社が好みであり、かつ以前のユーザ動作からその時期の近くにフライトを頻繁に利用していることを学習しているので、フライト日程（例えば、時間および航空会社）の提案をユーザに行うことができる。いくつかの例では、モデルビルダー２２４は、会話中にユーザに提供された提案に対するユーザ反応を受け取り、次いで、その反応（および会話からの他のデータ）をトレーニング信号として使用して、モデルをトレーニングする（例えば、さらなるトレーニングを通してモデルを洗練化するために使用されるトレーニング例を生成する）。上記の例を続けると、会話中にユーザがフライト日程の提案を削除するか、また航空会社を嫌うことを明示的に主張すると（例えば、「私はこの航空会社が好きではない」など）、モデルビルダー２２４は、この否定的反応をモデルをトレーニングするための信号として取り扱う。その結果、今後、別の航空会社がユーザに提案され得る。
【００７１】
いくつかの例では、モデルビルダー２２４は、要求を受信したときにモデルを更新する。例えば、提案ジェネレータ２３０は、モデルを使用して提案を生成するときにモデルを更新するようにモデルビルダー２２４に要求する。他の例では、モデルビルダー２２４は、定期的に（１時間に１回、１日に１回、１週間に１回など）および／または非定期的にデータおよび／または非周期的データをモデルを更新するための様々なソースから受信し、モデルをそれに応じて更新する。いくつかの他の例では、モデルビルダー２２４は、会話中のユーザ動作、非チャット動作、またはユーザ反応を受信すると、モデルを更新する。
【００７２】
会話アナライザ２２６は、会話を分析して、会話メッセージからユーザが動作を起こし得るエンティティを特定し、会話中のエンティティのコンテキストインジケータを決定するためのコードおよびルーチンとすることができる。いくつかの例では、会話アナライザ２２６は、会話を分析して、会話メッセージからユーザが動作を起こし得るエンティティを特定し、会話中のエンティティのコンテキストインジケータを決定するための以下に説明する機能を提供するプロセッサ２０２によって実行可能な一組の命令とのセットとすることができる。他の例では、会話アナライザ２２６は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、会話アナライザ２２６は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００７３】
会話アナライザ２２６は、モデルビルダー２２４によって生成された機械学習モデルに基づいて、会話管理モジュール２２２から受信した会話の１つまたは複数の会話メッセージを処理する。いくつかの例では、会話アナライザ２２６は、自然言語処理（ＮＬＰ）技術を使用して各会話メッセージを分析する。いくつかの例では、会話アナライザ２２６は、会話メッセージを解析し、解析された会話メッセージにＮＬＰエンティティ抽出を実施して、エンティティを取得する。エンティティは、会話メッセージの一部（例えば、会話中の人物または対象）とすることができ、エンティティは、様々な粒度レベル（例えば、レストラン、イタリアンレストラン、特定のイタリアンレストラン）とすることができる。いくつかの例では、ＮＬＰエンティティ抽出は、機械学習モデルで動作するテキスト（ＳＡＦＴ）ライブラリの意味情報付与（ｓｅｍａｎｔｉｃ  ａｎｎｏｔａｔｉｏｎ）に基づいている。例えば、モデルビルダー２２４は、フライト番号を受信し、フライト番号の一般的なフォーマットに基づいて会話内のフライト番号を認識するためにモデルにアノテータを組み込み、アノテータをトレーニングする。このフライト番号が会話メッセージに言及されている場合、会話アナライザ２２６はモデルビルダー２２４と通信してアノテータを使用して、会話メッセージ中の１つのエンティティがフライト番号であると決定する。別の例では、会話アナライザ２２６は、会話メッセージからエンティティ「美しい」、「天気」および「ストアＡ」を解析し抽出する。そして、会話アナライザ２２６は、ＳＡＦＴライブラリを使用した言語意味解析に基づいて、「美しい」が形容詞、「天気」が名詞、「ストアＡ」が場所及び名詞であると決定する。会話アナライザ２２６によって特定されるエンティティは、ユーザが動作を起こすことができるかどうかに応じて、使用可能または使用可能でないとすることができうる。エンティティが使用可能であるか使用可能でないかの判定は、決定エンジン２２８を参照してより詳細に説明される。
【００７４】
エンティティを特定することと組み合わせて（例えば、前、後および／または間）、会話アナライザ２２６は、会話中のエンティティのコンテキストインジケータを決定する。例えば、場所エンティティの場合、会話アナライザ２２６は、会話内で場所が言及された時期、会話内の場所を言及した人、会話のどのコンテンツに場所が含まれていたか、どのような種類のコンテンツが会話の場所に続いているか、および／または他のコンテキストインジケータを決定する。いくつかの例では、会話アナライザ２２６は、複数の会話（例えば、以前の会話、他のアプリケーションによって生成された会話）を分析して、会話中のエンティティのコンテキストインジケータを決定する。
【００７５】
特定の実施形態では、会話アナライザ２２６は、ＮＬＰを実行して、会話中のエンティティのコンテキストインジケータを決定する。いくつかのそれらの実施形態では、ＮＬＰは、モデルビルダー２２４によって生成された機械学習モデルに基づいており、かつ多くの面で従来のＮＬＰよりも洗練化されたものであり得る。いくつかの例では、会話アナライザ２２６は、会話中の１人または複数人のユーザのユーザ情報と組み合わせたパターンマッチングに基づいてＮＬＰを実行する。例えば、会話アナライザ２２６は、パターンマッチングに基づいて会話メッセージから「バジルタイレストラン」というフレーズを検出し、１人または複数人のユーザのユーザ情報（例えば、ユーザ（複数可）の場所（複数可）に最も近い「バジルタイ」のレストラン（複数可））に基づいてそのフレーズを「バジルタイ」という名前の１つまたは複数の特定のレストランにマッチングさせることができる。別の例として、会話アナライザ２２６は、ユーザ情報と組み合わせたパターンマッチングに基づいて会話メッセージからユーザＡの近くの特定の「コーヒーハウス」を検出することができる。いくつかの実施形態では、１つまたは複数の特定のエンティティを選択するためにユーザ情報を使用することにより、改善された提案が得られる可能性がある。例えば、ユーザ情報のない「バジルタイレストラン」に基づいて、「バジルタイ」という名前の３つのレストランが特定され得、会話の参加者（複数可）に道案内が提案された場合、その提案は、３つの「バジルタイレストラン」への３つのマップを含み得る。参加者は、どのマップが適切で正確であるかを選択する必要がある。一方、ユーザ情報が利用される場合、「バジルタイレストラン」への１つの関連した正確な道案内（例えば、会話の全ての参加者にとって最も便利なもの、および／または参加者（複数可）が最も頻繁に訪問したもの）のみが提供され得る。
【００７６】
2019508820.tif 000003
特定の例では、会話アナライザ２２６は、分析のために１つ以上の会話メッセージを取得することによってコンテキストインジケータを決定する。標準的かつ従来の会話セマンティクスが生成され、例えば、ある会話における「アメリカの大統領は誰ですか？」という質問に対して「バラク・オバマ」、同じ会話における「バラク・オバマの妻は誰ですか？」という質問に対して「ミシェル・オバマ」という会話セマンティクスが生成される。後に会話で「彼」および「彼女」が言及されると、会話アナライザ２２６は、共参照解析（ｃｏｒｅｆｅｒｅｎｃｅ  ｒｅｓｏｌｕｔｉｏｎ）を用いて彼を「バラク・オバマ」と参照し、彼女を「ミシェル・オバマ」と参照する。会話型ＮＬＰは、いくつかの実施形態において、従来の会話セマンティクスと同様であってもよい。従来の会話セマンティクスと会話型ＮＬＰの両方は、個々のメッセージの意味解析に基づいていてもよい。会話アナライザ２２６は、単一のメッセージのみを分析するのではなく、会話内の連続メッセージおよび／または非連続メッセージをさらに分析し得る。いくつかの例では、会話アナライザ２２６は、複数の会話メッセージを分析して、会話の各参加者からの会話フローを追跡する。会話アナライザ２２６は、会話の可能性のある参加者に関してユーザを追跡し、会話フロー、すなわち、どの参加者がどのメッセージをどのような順序で送るかを決定する。会話アナライザ２２６は、追跡情報に基づいてコンテキストインジケータを洗練化する。例えば、会話アナライザ２２６は、会話の「会いましょうか？」、「ＡＢＣはどう？」という２つの連続したメッセージを分析し得る。会話アナライザ２２６は、会話の参加者を追跡し、第１の参加者が第１のメッセージを送信し、第２の参加者が第２のメッセージを送信したと決定する。さらに、会話アナライザ２２６は、第１の参加者からの質問に応答するために、第２の参加者によって場所エンティティ「ＡＢＣ」が提案されたと決定する。他の例では、会話アナライザ２２６は、複数の会話から追跡された情報に基づいてコンテキストインジケータを洗練化する。会話アナライザ２２６は、複数の会話で発生した共通の用語に基づいてコンテキストインジケータを洗練化し得る。例えば、会話アナライザ２２６は、当日ユーザＢと話すときにユーザＡから送信される「ハイキングに行きたいですか？」というメッセージからエンティティ「ハイキング」を特定する。会話アナライザ２２６は、会話フローを追跡して、以前の会話においてユーザＢからの「ハイキングよりも釣りが好き」というメッセージを、エンティティ「ハイキング」のコンテキストインジケータとして使用することを決定する。会話アナライザ２２６は、複数の会話で発生した用語の概念クラスタリングに基づいてコンテキストインジケータを洗練化し得る。例えば、会話アナライザ２２６は、複数の会話からの「マウンテンバイク」、「バックパック」、「キャンプ」を含むメッセージを、進行中の会話で受信した「ハイキングに行きたいですか」というメッセージに対するコンテキストインジケータとして使用することができると決定する。その理由は、「マウンテンバイク」、「バックパック」、「キャンプ」、「ハイキング���は、概念クラスタリングに基づいて「屋外活動」というクラスタに分類できるからである。
【００７７】
いくつかの例では、会話アナライザ２２６は、会話を分析して、時制（例えば、会話メッセージが過去時制にあるかどうか）、最新性（例えば、会話メッセージが新規であるかどうか、新旧の会話をどのように重み付けするか）、その他を決定する。会話アナライザ２２６は、さらに、ユーザプロフィール情報（例えば、年齢、性別）、会話メタデータ（例えば、会話の開始時間および終了時間、会話の参加者、各会話メッセージに関連するタイムスタンプ）を収集し、収集されたデータをコンテキストインジケータとして使用する。認証は、任意のプロフィール情報またはユーザの個人情報の使用前に取得される。
【００７８】
決定エンジン２２８は、エンティティが使用可能であるかどうかを決定するためのコードおよびルーチンとすることができる。いくつかの例では、決定エンジン２２８は、エンティティが使用可能であるかどうかを決定するための本明細書で説明される機能を提供するために、プロセッサ２０２によって使用可能な一組の命令とすることができる。他の例では、決定エンジン２２８は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、決定エンジン２２８は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００７９】
会話アナライザ２２６は、会話の会話メッセージからエンティティを特定して、会話内のエンティティのコンテキストインジケータを決定するが、決定エンジン２２８は、決定されたエンティティが使用可能かどうかを決定する。エンティティは、ユーザがエンティティに対して動作を起こす可能性が高い場合に使用可能である。決定エンジン２２８は、エンティティが会話のコンテキスト内にあり、ユーザがエンティティについて動作を起こす可能性が高い場合に、エンティティが使用可能エンティティであると決定する。本明細書で説明されるように、ユーザがエンティティに対して動作を起こす可能性が高いかどうかは、決定エンジン２２８が様々な技術のうちの１つまたは複数を利用することにより、かつ本明細書に記載される１つまたは複数のコンテキストパラメータに基づいて決定される。いくつかの例では、決定エンジン２２８は、１つまたは複数の動作動詞、１つまたは複数の動詞および関連するコンテキストの主語および／または目的語を検出し、検出された情報に基づいて使用可能なエンティティを決定する。動作動詞は、歩く、読む、望む、考える、その他の身体的または精神的な動作を表現する動詞である。例えば、会話アナライザ２２６が、会話中のユーザＡとユーザＢとの間の「スーパーマーケットＣで会いましょう」というメッセージから場所エンティティ「スーパーマーケットＣ」を特定すると、決定エンジン２２８は動作動詞「合う」、動詞「合う」の目的語「スーパーマーケットＣ」を検出して、ユーザＡおよびＢはその場所で会う可能性があるので、場所エンティティ「スーパーマーケットＣ」は使用可能であると決定する。しかしながら、ユーザＡが会話中に「スーパーマーケットＣはすごく良い」とコメントしていることで会話アナライザ２２６が場所エンティティ「スーパーマーケットＣ」を特定した場合、決定エンジン２２８は、動作動詞および関連する目的語／主語の検出に失敗する。結果として、決定エンジン２２８は、動作が検出されないので、場所エンティティ「スーパーマーケットＣ」が使用可能であると決定しないことがある。エンティティが会話内に現れる毎に、決定エンジン２２８は、エンティティを使用可能または使用可能でないと分類する。エンティティが使用可能であるとして分類されると、決定エンジン２２８は、本明細書で説明されるような１つまたは複数の他のコンポーネントによる使用のために、使用可能なエンティティをハイライトまたは他に注釈を付ける。
【００８０】
いくつかの例では、会話アナライザ２２６は、会話内の全ての会話メッセージを分析して、会話の会話メッセージから特定されたエンティティのコンテキストインジケータを決定する。決定エンジン２２８は、コンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定する。いくつかの例では、決定エンジン２２８は、会話フローに基づいてエンティティが使用可能であるかどうかを決定する。例えば、ユーザＡは「ＡＢＣで会いますか？」という質問を入力する。特定の例では、決定エンジン２２８は、会話フローにおいてユーザＢの回答を受信するまで、場所「ＡＢＣ」が使用可能であるかどうかを決定しなくてもよい。ユーザＢが「もちろん」と言うと、決定エンジン２２８は、「ＡＢＣ」が使用可能であると決定する。そうでない場合、決定エンジンは、「ＡＢＣ」を使用可能でないと決定し得る。別の例では、ユーザＡからの「どこで会いましょうか？」という第１のメッセージ、ユーザＢからの「ＡＢＣはどう？」という第２のメッセージ、ユーザＡからの「ＤＥＦの方が良い」という第３のメッセージ、ユーザＢからの「ＤＥＦが良いね」という第４のメッセージが会話フローに含まれている場合、決定エンジン２２８は、「ＡＢＣ」ではなく「ＤＥＦ」を使用可能なエンティティとして決定する。他の例では、決定エンジン２２８は、エンティティがメッセージの時制に基づいて使用可能かどうかを決定する。例えば、決定エンジン２２８は、「ニューヨークへは１２３４を利用していた」というメッセージにおけるフライト番号１２３４は、メッセージが過去時制にあるので、使用可能でないと決定し得る。いくつかの他の例では、決定エンジン２２８は、感情インジケータに基づいてエンティティが使用可能であるかどうかを決定する。例えば、決定エンジン２２８は、ユーザＡからの「ディナーにパスタを食べたい？」およびユーザＢからの「パスタは嫌い」というメッセージに基づいて、「パスタ」が使用可能でないと決定する。しかしながら、決定エンジン２２８は、依然として、「ディナー」が使用可能であると決定することができる。より詳細な情報を提供するか、または動作（例えば、ピザレストラン）を達成する提案は、依然としてユーザＡに提供され得る。決定エンジン２２８は、会話アナライザ２２６によって決定された他のコンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定する。
【００８１】
決定エンジン２２８は、コンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定するが、これは、本開示がいくつかのアプローチとは異なり、かつ従って利点があり得る。例えば、従来のアプローチでは、アリスと彼女の友人との間の以前の会話に基づいて本日がアリスの誕生日であると決定し、誕生日を祝うための「ハッピーバースデー」メッセージとファンビデオクリップを自動的に送信し得る。本開示の実施形態は、コンテキスト条件が適切であると決定された場合にのみ、そのような自動祝福メッセージをアリスに送信する。アリスが数時間前に「私の家が燃えてしまった」と言った場合、決定エンジン２２８は、メッセージがアリスに対する迷惑なスパムに過ぎないので、アリスに祝福メッセージを送らないことを決定する。別の例として、ユーザＡが以前の会話で「コーヒーショップＡが大好き」というメッセージを提供し、現在の会話では、ユーザＢに「コーヒーを飲みに行きたい」というメッセージを提供した場合、「コーヒーショップＡ」に関する提案が、現在の会話に組み込むためにユーザＢに提供され得る。提案は、「コーヒーショップＡ」に関するユーザＡの肯定的感情の表現に基づいて提供されてもよく、かつユーザＢが前の会話に関与していなくても任意選択的に提供されてもよい。
【００８２】
いくつかの実施形態では、会話中のコンテキストインジケータに基づいて使用可能なエンティティを自動的に決定することに加えて、決定エンジン２２８は、ユーザが、どのエンティティが使用可能であるかを手動で決定することも可能にする。決定エンジン２２８が、エンティティが使用可能であることを検出しなくても、決定エンジン２２８は、ユーザがエンティティを使用可能とすることができるようにする。その結果、会話内の任意のメッセージを使用可能にすることができる。いくつかの例では、決定エンジン２２８は、会話メッセージ中のエンティティを使用可能なものとしてマークするようにユーザから指示を受け取り、エンティティに関連する情報をユーザに返す。例えば、ユーザは、会話メッセージ中に「パンダ」と言及する。ユーザ（または他のユーザ）は、この単語がメッセージ内で最も重要なエンティティであることを決定し、（例えば、「タップ・オン」または単語の他の選択などのユーザインタフェース入力を介して単語にラベルを付けることにより）この単語が使用可能であることを指示する。この指示を受信することに応答して、決定エンジン２２８は、「パンダ」に関する情報（例えば、検索サーバ１１２からの第１の検索結果）をユーザに対して取得するために、他のサーバまたはアプリケーション（例えば、検索サーバ１１２および／またはサードパーティサーバ１１０）と通信する。いくつかの例では、ユーザがエンティティに対して動作を起こすことを所望するという指示を受け取ったことに応答して、決定エンジン２２８は、その指示に基づいて機械学習モデルをトレーニングするために、その指示をモデルビルダー２２４にトレーニング信号として送信する。例えば、モデルビルダー２２４は、指示に基づいて、使用可能エンティティを示すトレーニング例出力と、指示がなされたメッセージ、指示の焦点であった単語（複数可）、および／または会話に関連するコンテキストインジケータに基づくトレーニング例入力とを有する正のトレーニング例を生成する。モデルビルダー２２４は、正のトレーニング例に基づいてモデルをさらにトレーニングすることによって、機械学習モデルを洗練化することができる。
【００８３】
提案ジェネレータ２３０は、ユーザがエンティティに対して動作を起こすようにするための提案を生成するためのコードおよびルーチンとすることができる。いくつかの例では、提案ジェネレータ２３０は、ユーザがエンティティに対して動作を起こすための提案を生成するための本明細書で説明する機能を提供するようにプロセッサ２０２によって使用可能な一組の命令とすることができる。他の例では、提案ジェネレータ２３０は、コンピューティングデバイス２００のメモリ２０４に格納することができ、プロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、提案ジェネレータ２３０を、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００８４】
決定エンジン２２８から使用可能なエンティティを受信することに応答して、提案ジェネレータ２３０は、より豊富なコンテキストおよび次のステップを提示するために使用可能なエンティティに対する提案を生成する。提案は、エンティティをユーザに対してより使用可能なものとしたり、ユーザの動作を達成するのに有用な情報である。例えば、ユーザがレストランで打ち合わせを提案すると、提案ジェネレータ２３０は、レストランについてのより詳細な情報を提供し、テーブルを予約することを提案することができる。ユーザが映画を鑑賞することについて話すとき、提案ジェネレータ２３０は、上映時間または映画ストリームへのリンクを提供することができる。ユーザがウェブサイトからビデオクリップについて言及する場合、提案ジェネレータ２３０は、会話中にユーザがビデオクリップを再生できるようにすることができる。いくつかの例では、提案ジェネレータ２３０は、リアルタイムの提案を生成する。例えば、ユーザがレストランでランチについて話しているとき、提案ジェネレータ２３０は、ユーザをレストランに案内するためのマップをリアルタイムで生成する。
【００８５】
いくつかの例では、提案ジェネレータ２３０は、少なくとも１つの提案ツールを会話インタフェースに組み込むようにユーザインタフェースエンジン２３６に指示する。提案ジェネレータ２３０は、提案ツールを使用して提案を表示し、その提案とのユーザインタラクションを受信する。例えば、提案ジェネレータ２３０は、ユーザの閲覧および選択のためのマップを表示し、ユーザの閲覧およびスケジューリングのためのカレンダーを表示し、連絡先情報を見つけて共有し、ファイルを共有し、リマインダを設定し、ビデオを表示するか、またはビデオ通話を開始し、ステッカーを共有し、気象情報を表示し、スポーツスコアを表示し、製品またはサービス（例えば、衣服、映画、医療サービス）の購入情報を表示し、フライト情報を表示し、交通データを提供し、地域のイベント情報を提供し、地域の商店情報（例えば、レストラン、映画館）を提供し、ユーザステータス（例えば、ドライブ中、自転車走行中、ランニング中）を共有し、製品（例えば、モバイルアプリケーション、ゲーム）を見つけて共有し、製品またはサービスの支払いを行うか、または受け取る等を行うための少なくとも１つの提案ツールを生成するようにユーザインタフェースエンジン２３６に指示する。当業者は、他のタイプの提案が可能であることを認識するであろう。
【００８６】
いくつかの実施形態では、提案ジェネレータ２３０によって提供される提案は、選択可能な提案である。それらの実施形態のうちのいくつかでは、会話の参加者による提案の選択に応答して、提案ジェネレータは、提案（および／または関連するコンテンツ）を会話のトランスクリプトに組み込まれ得る。例えば、提案ジェネレータ２３０は、提案の選択に応答して、提案を会話の全ての参加者に対するトランスクリプトに静的に表示させ得る。例えば、提案は最初に、非静的グラフィカル要素（例えば、インタフェース内に表示されるが、トランスクリプトに完全に組み込まれないもの）として、対応する会話インタフェース内の１人または複数人の受信者に表示するためにユーザインタフェースエンジン２３６に提供され得る。次に、１つまたは複数の参加者による提案の選択に応答して、提案（および／または関連するコンテンツ）が会話のトランスクリプトに静的に組み込まれ得る。提案が選択可能ないくつかの実施形態では、提案は肯定的インタフェース要素と否定的インタフェース要素とを含むことができる。肯定的インタフェース要素の選択（複数可）に応答して、その提案はトランスクリプトに組み込まれ、肯定的インタフェース要素の選択（複数可）に応答して、その提案はトランスクリプトへの提案の静的な組込みなしに破棄され得る。
【００８７】
いくつかの例では、提案ジェネレータ２３０は、モデルビルダー２２４からの機械学習モデルがユーザの動作から学習するものに基づいて提案を生成する。いくつかの例では、モデルビルダー２２４は、ユーザの非チャット動作から学習するために機械学習モデルをトレーニングし、提案ジェネレータ２３０は、機械学習モデルに基づいて提案を生成する。例えば、ユーザが次の週末にラスベガスへのフライトについて話している場合、決定エンジン２２８は、使用可能なエンティティ「フライト」を決定し、提案ジェネレータ２３０は、機械学習モデルで学習したユーザの以前の購入履歴に基づいてフライトスケジュール（例えば、時間および航空会社）の提案を提示する。他の例では、モデルビルダー２２４は、機械学習モデルをトレーニングして、ユーザの以前の提案に対する反応から学習し、提案ジェネレータ２３０は、機械学習モデルに基づいて提案を生成する。提案ジェネレータ２３０は、ユーザインタフェースエンジン２３６と通信して、会話インタフェースで提示された以前の提案ツールに対して行ったユーザ動作に基づいて、会話インタフェース内の新たな提案ツールをカスタマイズし得る。例えば、モデルビルダー２２４は、機械学習モデルをトレーニングして、ユーザに対して表示された会話インタフェースで以前に提示された購入ツールをユーザが使用して一度も購入していないことを学習する。その結果、提案ジェネレータ２３０は、もはや会話インタフェースに購入ツールを組み込むことを決定しない。同様に、提案ジェネレータ２３０は、交通マップツールおよび公共交通機関ツールをユーザに提供するように使用される。提案ジェネレータ２３０は、機械学習モデルから、ユーザが常に公共交通機関ツールとインタラクションしたことを学習し、したがって、将来、公共交通機関ツールのみを生成してユーザに提供することを決定する。別の例では、ユーザＡおよびユーザＢは、常に会合スポットとしてコーヒーハウスを話題にするか、または選択する。ユーザＡがユーザＢに「今日会いますか？」と尋ねると、提案ジェネレータ２３０はマップ提案を生成し、かつマップツールを含むとともに、マップツール内の近くのコーヒーハウスを強調表示するようにユーザインタフェースエンジン２３６に指示する。
【００８８】
他の例では、提案ジェネレータ２３０は、インタラクション分析（例えば、ＮＬＰ）および会話アナライザ２２６から決定されたコンテキストインジケータに基づいて提案を生成する。提案ジェネレータ２３０は、感情分析に基づいて提案を生成する。例えば、ユーザＡが「コーヒーハウス、明日の午前８時？」と尋ね、ユーザＢが「本当？、日曜の早朝に？」と答える。提案ジェネレータ２３０は、使用可能なエンティティ「コーヒーハウス」に対するマップ及びカレンダーを生成する場合、感情分析に基づいてカレンダーの正午前後の使用可能な時間を強調表示し得る。提案ジェネレータ２３０は、会話中に伝達されたユーザ情報に基づいて提案を生成する。例えば、ユーザＡが「明日、会いましょう」と言い、ユーザＢが「最高、私はサンフランシスコにいるでしょう」と言った場合、提案ジェネレータ２３０は、会話が生じたときにユーザがサンフランシスコにいなかったとしてもユーザＡおよびユーザＢにサンフランシスコのマップを提供し得る。提案ジェネレータ２３０は、ユーザプロフィール情報に基づいて提案を生成する。認証は、プロフィール情報またはユーザの個人情報の使用前に取得される。
【００８９】
いくつかの例では、提案ジェネレータ２３０は、検索エンジンおよび／または他のアプリケーションからのデータを会話に引き出すことによって提案を生成する。例えば、提案ジェネレータ２３０は、会話内のマップサービスから場所周辺のマップデータを受信し、使用可能な場所エンティティに対するマップ提案を生成する。提案を含む例示的な会話インタフェースが図１０に示されている。他の例では、提案ジェネレータ２３０は、ユーザがエンティティに対して動作を起こすための提案を自身が生成する代わりに、エンティティ情報を他のアプリケーションおよびサービスに供給する。他のアプリケーションおよびサービス自体が、任意選択的に、ユーザがエンティティに対して動作を起こすための提案を直接提供し得る。例えば、会話内にフライト番号が言及されている場合、提案ジェネレータ２３０は、（例えば、それらのフライトフィードを会話のトランスクリプトに組み込むことによりおよび／または別のアプリケーションを介して提供される通知を介して）会話中の１人または複数人の参加者にフライトフィード（例えば、遅延情報）を提供するようサードパーティサーバに通知する。ユーザが会話中にユーザが好意をもつ友人について言及する場合、提案ジェネレータ２３０は、広告アプリケーションと通信して、この情報を使用してユーザを広告のターゲットとする。ユーザが会話中にスポーツゲームについて言及する場合、提案ジェネレータ２３０はサードパーティサービスと通信して、スポーツゲームのスポーツスコアをユーザに提供する。異なるアプリケーションによって提供される提案を含む例示的な会話インタフェースが、図１１Ａおよび図１１Ｂに示されている。
【００９０】
いくつかの例では、エンティティ情報は、エンティティが特定される会話の参加者を含む。提案ジェネレータ２３０がエンティティ情報を他のサービスに送信する場合、他のサービスは、会話の全ての参加者（または一部の参加者）に提案を提供し得る。例えば、ユーザＡがユーザＢおよびユーザＣとの会話で天気について言及した場合、気象サービスは、提案ジェネレータ２３０から「天気」のエンティティ情報を受信した後、ユーザＡ、ＢおよびＣに天気予報を毎時に送信し得る。別の例において、提案ジェネレータ２３０がエンティティ情報を他のサービスに供給するとき、提案ジェネレータ２３０はまた、会話管理モジュール２２２およびユーザインタフェースエンジン２３６と通信して、会話インタフェース内のライブ会話を開始する。他のサービスは、ユーザがライブ会話中のエンティティに対して動作を起こすための提案を提供する。上記の例では、他のサービスは、他のサービスによって提供されるインタフェース、または会話管理モジュール２２２およびユーザインタフェースエンジン２３６によって提供されるライブ会話のいずれかにおいて、毎時の天気予報を提供し得る。
【００９１】
会話のコンテキストを理解し、ユーザを他のサービスと接続することによって、提案ジェネレータ２３０は、よりスマートで、関連性が高く、より取得可能な提案をユーザに提供することができ、このため、より有用で効果的である。提案ジェネレータ２３０はさらなるステップに踏み出して、個人的な支援スペースを開拓する。ユーザの質問「サンフランシスコでの今週のショーはお勧めですか？火曜日の朝、シアトルへのフライトを予約できますか？」を受け取り、複数のアプリケーション、検索、比較、およびフォーム記入に基づいて質問に答える代わりに、提案ジェネレータ２３０は、ユーザのために質問し、ユーザの代わりに質問に回答する。チャットがユーザのスマートフォン上の最初に選択するアプリケーションになるにつれて、他のモジュールおよびエンジンを組み込んでいる提案ジェネレータ２３０は、チャットから情報を引き出して関連する更新を提供することによって、この領域に良好に収まるようになる。特に、提案ジェネレータ２３０は、他のサービスと通信して、全ての参加者について１か所で重要な更新を提供する。提案ジェネレータ２３０によって他のサービスとユーザを接続することにより、ユーザが別のサービスのために別のモバイルアプリケーションをダウンロードする必要がないので、ユーザを他のサービスにより推進することもできる。さらに、提案ジェネレータ２３０は、ユーザの会話を、例えば音声コマンドやウェアラブル機器などの動作に変換し理解することを含む、異なるタイプのサービスを構築するためのデベロッパーコンポーネントを提示する。
【００９２】
いくつかの例では、提案ジェネレータ２３０は、応答予測器２３２とレポートモジュール２３４とを備える。
応答予測器２３２は、会話中のユーザに対する質問を検出し、その質問に対する可能性のあるユーザの回答を決定するためのコードおよびルーチンとすることができる。いくつかの例では、応答予測器２３２は、会話中のユーザの質問を検出し、その質問に対する可能性のあるユーザの回答を決定するために以下に説明する機能を提供するようにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、応答予測器２３２は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、応答予測器２３２は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００９３】
ユーザは、クライアントデバイスのタッチスクリーン上で特に困難なタイプ入力、またはユーザが回答を見つけた他の場所からコピーしてペーストすることによって、質問に対して回答する。応答予測器２３２は、ユーザの可能性のある回答を予測し、次の応答をユーザに提供する。これは、入力またはコピーペーストよりも優れている。例えば、ユーザが自分のフライトが着陸しようとしているときに会話中にユーザに尋ねられた場合、応答予測器２３２は、使用可能なエンティティ「フライト」に対する回答としてフライト情報を使用可能にすることができる。
【００９４】
いくつかの例では、応答予測器２３２は、コンテキストインジケータおよび会話アナライザ２２６からの会話分析およびモデルビルダー２２４からの機械学習モデルに基づいて、ユーザが質問に対してどのように回答することを所望しているかを予測する。例えば、応答予測器２３２は、機械学習モデルが会話履歴から学習したことに基づいて、ユーザが特定のタイプの質問にどのように回答する傾向にあるかを決定し、次いで、ユーザに対して１つまたは複数の可能性のある回答を提供する。応答予測器２３２は、人々が機械学習モデルから質問に対して３０％の人がＡと応答し、７０％の人がＢと応答することを学習する場合、応答予測器２３２は、同じ質問に対して回答しようとしているユーザに対して回答Ｂを提供し得る。応答予測器２３２は、会話アナライザ２２６から受け取ったコンテキストインジケータおよび会話分析により特に有利である。ユーザの場所、コンテキストおよび他の個人情報を知ることにより、応答予測器２３２はより簡単におよび／正確に回答を予測し得る。例えば、応答予測器２３２は、前回の会話でユーザＡから「コーヒーは嫌いです」および「Ｘ通りの紅茶専門店が一番良い」とのメッセージがあったとすると、ユーザＢがユーザＡに「好きなコーヒーや紅茶の店はどこですか？」と尋ねた場合に、応答予測器２３２は、「Ｘ通りの紅茶専門店」の住所をユーザＡの可能性のある回答として簡単に提供することができる。
【００９５】
他の例では、応答予測器２３２はまた、質問のタイプに基づいて回答のタイプを決定する。応答予測器２３２は、会話アナライザ２２６からの文章構造の把握に基づいて質問のタイプを決定する。例えば、応答予測器２３２は、質問が「ＡまたはＢ？」である場合、可能性のある回答としてＡおよびＢを提供する。または、応答予測器２３２は、質問が「Ａは好きですか？」である場合、可能性のある回答として「はい」および「いいえ」を提供する。応答予測器２３２はまた、会話アナライザ２２６によって決定された他のコンテキストインジケータに基づいて質問のタイプを決定する。例えば、ユーザＡが「明日、ロサンゼルスにいますか？」と尋ねる。前の会話が、ユーザＡがロサンゼルスへのチケットを持っていることを示している場合、応答予測器２３２は、質問がイエスまたはノー質問であると決定し、ユーザＡの可能性のある回答として「はい」または「いいえ」を提供する。しかしながら、ユーザＡがチケットを予約したが、数日後でないと確認番号を受け取らないことを示す場合、応答予測器２３２は、質問がイエスまたはノー質問であると考えず、代わりに可能性のある回答として「わかりません」を提供する。
【００９６】
いくつかの例では、応答予測器２３２は、ワンタップ形式および／または他の単一選択形式で可能性のあるユーザ回答を提供する。たとえば、「あなたの連絡先情報を送信できますか？」という質問があるとする。この質問は、使用可能なエンティティ「連絡先情報」を含む。さらに、以前の会話が「あなたの」連絡先情報を含むものとする。応答予測器２３２は、ワンタップの連絡先情報を回答として提供し得る。会話のコンテキストに基づいて応答予測器２３２によって提供されるワンタップの提案は、多くの点（例えば、時間、安全性）でユーザにとって都合がよい。例えば、ユーザＡがユーザＢにチャット会話を送信すると、応答予測器２３２は、「運転中です」と言うワンタップの提案を送信するか、またはユーザＢがユーザＡに応答するために「２０分後に家に着きます」と送信することもできる。ユーザＢが搭乗中で携帯電話をオンにしていない場合、応答予測器２３２は、カレンダーに基づいてユーザＢに対して「４時間後に使用可能となります」と自動的に回答することができる。ワンタップ回答を示す例示的なインタフェースが図１０に示されている。
【００９７】
レポートモジュール２３４は、会話を編成することに基づいて会話に関連する１つまたは複数のレポートを生成するコードおよびルーチンとすることができる。いくつかの例では、レポートモジュール２３４は、会話を編成することに基づいて会話に関連する１つまたは複数のレポートを生成するために以下に説明する機能を提供するようにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、レポートモジュール２３４は、コンピューティングデバイス２００のメモリ２０４に格納することができ、かつプロセッサ２０２によってアクセス可能かつ実行可能とすることができる。いくつかの例では、レポートモジュール２３４は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【００９８】
ユーザは、会話で共有しているものを追跡するのを忘れる。会話は容易に検索できない場合がある。たとえば、ユーザが実際に必要とする情報を見つけるために多数の検索結果を上下にスクロールする必要があり得る。レポートモジュール２３４は、会話全体に亘って情報を集約し、会話を編成し、会話をトピック、対象、および／または他のメタデータによって容易に検索可能にする。
【００９９】
レポートモジュール２３４は、会話アナライザ２２６によって会話から決定された会話およびコンテキストインジケータを受信し、コンテキストインジケータに基づいて会話を編成する。いくつかの例では、レポートモジュール２３４は、コンテンツに基づいて会話を編成する。例えば、レポートモジュール２３４は、会話を編成して、映画について話す会話または場所について言及する会話を見つける。他の例では、レポートモジュール２３４は、タイムラインに基づいて会話を編成する。例えば、レポートモジュール２３４は、降順の時間順で場所を言及する会話を編成する。他の例では、レポートモジュール２３４は、会話フローに基づいて会話を編成する。例えば、レポートモジュール２３４は、会話からの場所を含む会話メッセージを取得し、メッセージを送信した特定のユーザに各メッセージを関連づけ、会話メッセージを降順の時間順に並べる。別の例では、ユーザが「検索ボックスをクリックする」と言った場合、レポートモジュール２３４は、会話フロー内の次のメッセージが、ユーザが検索ボックスで特定した単語であると決定し、会話をこの順序で編成し得る。他の例では、レポートモジュール２３４は、感情および／または他の特徴（複数可）に基づいて会話を編成する。例えば、レポートモジュール２３４は、人々を電子ブックリーダーまたはペーパーブックリーダーとして分類することに基づいて会話を編成する。本開示の利益を受ける当業者は、レポートモジュール２３４が他のコンテキストインジケータに基づいて会話を編成することができることを理解するであろう。
【０１００】
いくつかの例では、レポートモジュール２３４はまた、後のフォローアップのために重要なメッセージ（例えば、使用可能なエンティティ）にラベルを付ける。ラベルは、フラグ、星などとすることができる。ユーザがこのメッセージを言及するか、またはメッセージを検索するとき、レポートモジュール２３４は、それを容易に取得することができる。レポートモジュール２３４は、メッセージにラベルを付けることによって、例えば、このメッセージがどのくらい頻繁に言及されたか、ユーザがこのメッセージを言及した時期など、追加情報を得る。
【０１０１】
レポートモジュール２３４は、会話を編成することに基づいて会話（例えば、ストレージ２１０に記憶されたデータベース内の）を索引付けする。レポートモジュール２３４が会話の検索要求を受信すると、レポートモジュール２３４は、インデックスを使用して会話を検索し、レポートを生成し、そのレポートをユーザに返す。例えば、映画について話す会話に対する検索要求を受信したことに応答して、レポートモジュール２３４は、映画に関する会話コンテンツを検索する。レポートモジュール２３４は、会話のタイムラインに従って会話を順序付けし、会話中の各会話メッセージをユーザおよび時間と関連付けし、重要なエンティティ（例えば、映画名、劇場の名前、上映時間他）を強調表示し、インデックスに基づいて以前の会話に戻す参照を提供することに基づいて検索結果を編成する。レポートモジュール２３４は、会話を編成することに基づいてユーザのためのレポートを生成する。会話レポートを示す例示的な会話インタフェースが図１３に示されている。いくつかの例では、レポートモジュール２３４はまた、ある期間内に会話を編成し要約することによって要約を生成する。例えば、レポートモジュール２３４は、ユーザが週に何回会話に参加したか、週に誰と会話したか、週にどのような話題を話したか、週に何枚の写真をユーザが共有したかについての要約を生成する。会話要約を示す例示的な会話インタフェースが図１４に示されている。
【０１０２】
レポートモジュール２３４が行うことは、人が行うことができる簡単な会話検索または簡単な会話要約作成以上のことである。レポートモジュール２３４は、ユーザが会話の逐語的なトランスクリプトを全体に亘って探り、かつ／またはスクロールすることを必要とすることなく、ユーザに対して詳細を取得することができる。レポートモジュール２３４はまた、ユーザの会話で議論されたトピック（例えば、ゲームのスコアまたはショー）についての更新を得る。いくつかの実施形態では、レポートモジュール２３４は、ユーザがイベント、場所、人々に基づいて共有された重要な手がかりの情報を振り返ることができるため、検索結果を提供するだけではない。また、レポートモジュール２３４は、過去数ヶ月間に話した全てのレストランのリストなど、ユーザが共有したり話したことのあるものの集合とインタラクションすることを可能にする。さらに、レポートモジュール２３４は、会話からの洞察を得る方法、コンテキスト、感情、および／または他の特徴を測定する方法を提供する。例えば、レポートモジュール２３４は、特定のブランドに対する感情を測定し、トレンドのトピックを特定するための価値のある洞察を得ることができる。
【０１０３】
ユーザインタフェースエンジン２３６は、会話メッセージおよび会話の提案を表示する会話インタフェースを生成するためのコードおよびルーチンとすることができる。いくつかの例では、ユーザインタフェースエンジン２３６は、会話メッセージおよび会話の提案を表示するユーザインタフェースを生成するために以下で説明する機能を提供するようにプロセッサ２０２によって実行可能な一組の命令とすることができる。他の例では、ユーザインタフェースエンジン２３６は、コンピューティングデバイス２００のメモリ２０４に格納され、プロセッサ２０２によってアクセス可能かつ実行可能とすることができる。ユーザインタフェースエンジン２３６は、プロセッサ２０２およびコンピューティングデバイス２００の他のコンポーネントと協働および通信するように適合することができる。
【０１０４】
いくつかの例では、会話管理モジュール２２２は、会話インタフェース内に会話および会話メッセージを表示するためのグラフィックデータを生成するようにユーザインタフェースエンジン２３６に指示する。他の例では、提案ジェネレータ２３０は、会話内の使用可能なエンティティに対する提案を生成する。会話管理モジュール２２２は、会話インタフェース内に会話メッセージとともに提案を表示するためのグラフィックデータを生成するようにユーザインタフェースエンジン２３６に指示する。いくつかの例では、ユーザインタフェースエンジン２３６は、１つまたは複数の提案を表示し、その提案（複数可）とのユーザインタラクションを受信するための複数の提案ツールを会話インタフェース内に生成する。
【０１０５】
提案は、ユーザがエンティティに対して動作を起こすための情報を含む。いくつかの例では、ユーザインタフェースエンジン２３６は、エンティティを含むメッセージと並列に提案を表示するための複数の提案ツールを生成する。例えば、ユーザインタフェースエンジン２３６は、スキー場のマップツールおよび雪のレポートを同じ画面上の「スキーに行く」というメッセージとともに表示する。ユーザはマップツールを使用してマップを表示して選択することができる。あるいは、ユーザインタフェースエンジン２３６は、２人のユーザのための２つのカレンダーツールを、翌日に会うことを話しているメッセージとともに示し得る。ユーザは、カレンダーツールを使用してカレンダーを見てスケジュールを決めることができる。あるいは、ユーザインタフェースエンジン２３６は、有名人の衣装について話すメッセージと共に、ドレスおよび靴のための個々の購入ツールを示し得る。あるいは、ユーザインタフェースエンジン２３６は、翌日に２人のユーザが空いている時間を強調表示するカレンダーツールを示し、かつ「翌日会ってコーヒーを飲みませんか？」というメッセージと共に、両方のユーザの住所の近くのコーヒーショップを強調表示するマップツールを示し得る。あるいは、ユーザインタフェースエンジン２３６は、「ＡからＢへ行く」というメッセージと共に、交通マップツールおよび公共交通機関ツールを示し得る。いくつかの例では、提案ツールが画面（例えば、スマートフォンの小さな画面）に収まらない場合、ユーザインタフェースエンジン２３６はツールオプションを最初に複数のツールとして表示する。
【０１０６】
他の例では、ユーザインタフェースエンジン２３６は、１つまたは複数の提案を連続的に表示するための複数の提案ツールを生成する。例えば、「会って食事する」というメッセージを受信すると、ユーザインタフェースエンジン２３６は、ランチまたはディナーのオプションを示す。ユーザがランチを選択すると、ユーザインタフェースエンジン２３６は、ランチで開いているレストランを示す。あるいは、「翌日会ってコーヒーを飲む」というメッセージを受信すると、ユーザインタフェースエンジン２３６は、まずカレンダーツールを表示する。ユーザインタフェースエンジン２３６はまた、全てのユーザが都合の良い時間をカレンダー上に強調表示し得る。いったん時間が選択されると、ユーザインタフェースエンジン２３６は、その時間で開いているコーヒーショップのマップを示す。あるいは、「ロサンゼルスでスキー用品を購入する」というメッセージを受信すると、ユーザインタフェースエンジン２３６は、まずロサンゼルスのスポーツストアのマップを示す。ストアが選択された後、ユーザインタフェースエンジン２３６は、そのストア内の用品用の購入ツールを示す。提案の連続表示を示す例示的な会話インタフェースが図１５に示される。
【０１０７】
上記および以下の説明では、説明の目的で、明細書の全体の理解を提供するために多数の具体的な詳細が述べられている。しかしながら、本開示の利益を享受する当業者には、これらの特定の詳細なしに技術を実施することができることは明らかであろう。他の例では、説明を不明瞭にすることを避けるために、構造およびデバイスがブロック図の形式で示されている。例えば、明細書は、ユーザインタフェースおよび特定のハードウェアを参照して上記のいくつかの例で説明される。しかしながら、この説明は、データおよびコマンドを受信することができる任意のタイプのコンピューティングデバイス、およびサービスを提供する任意の周辺デバイスに適用される。
【０１０８】
図３は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成する例示的な方法３００のフローチャートを含む。方法３００は、会話から少なくとも１つの会話メッセージを受信することによって開始する（３０２）。会話メッセージは、ビデオメッセージ、オーディオメッセージ、テキストメッセージなどを含み得る。次いで、方法３００は、会話メッセージから使用可能とすることができるエンティティを特定し（３０４）、エンティティのコンテキストインジケータを決定する（３０６）。エンティティは、会話メッセージ内の人物、会話メッセージ内の対象などとすることができる。一例では、図２を参照する上記の更なる詳細で説明した会話アナライザ２２６は、エンティティを特定して、コンテキストインジケータを決定し得る。例えば、会話アナライザ２２６は、会話メッセージから場所エンティティを特定し、場所エンティティのコンテキストインジケータを決定し得る。例えば、場所エンティティの場合、会話アナライザ２２６は、いつ場所が言及されたのか、誰が会話内で場所を言及したのか、会話のどの内容が場所であると気付かせたのか、どのような内容が会話内で場所の後に続いているのか、以前の会話内のエンティティおよび／または関係するエンティティに対して表現された以前の感情等に基づいてコンテキストインジケータを決定し得る。
【０１０９】
方法３００は次に、コンテキストインジケータに基づいてエンティティが使用可能かどうかを決定する（３０８）。一例では、図２を参照する更なる詳細で説明した決定エンジン２２８は、使用可能なエンティティを決定し得る。例えば、会話アナライザ２２６が、会話中にユーザＡとユーザＢとの間の「スーパーマーケットＣで会いましょう」というメッセージから場所エンティティ「スーパーＣ」を特定すると、決定エンジン２２８は、ユーザＡとＢがその場所で会うため、この場所エンティティ「スーパーマーケットＣ」が使用可能であると決定する。エンティティが使用可能であると決定エンジン２２８が決定すると、方法３００はステップ３１０に移行する。そうでない場合、方法３００は終了する。方法３００は、ユーザがエンティティに対して動作を起こすための提案を提供する（３１０）。一例では、図２を参照する上記の更なる詳細で説明した提案ジェネレータ２３０は、提案を提供し得る。例えば、提案ジェネレータ２３０は、「スーパーマーケットＣ」へのマップと、ユーザが「スーパーマーケットＣ」にどのようにして到達できるかを指示する公共交通機関ツールを提供する。いくつかの実施形態では、提案は会話の全ての参加者に提供される。いくつかの他の実施形態では、提案は、会話の参加者の一部に提供される。さらに、いくつかの実施形態では、提案は、会話のトランスクリプトに提案を即時に組み込むことなく１人または複数の参加者に最初に提供されてもよい。これらの実施形態のうちのいくつかでは、提案は、その提案に関する「肯定的な」ユーザインタフェース入力を提供する１つまたは複数（例えば、少なくとも閾値の量の）にのみ応答してトランスクリプトに組み込まれ得る。
【０１１０】
図４は、会話からエンティティを特定し、ユーザがエンティティに対して動作を起こすための提案を生成するための特定の例示的な方法４００のフローチャートである。方法４００は、会話から少なくとも１つの会話メッセージを受信する（４０２）。次に、方法は、機械学習モデルに基づいて少なくとも１つの会話メッセージに対して自然言語分析（ＮＬＰ）を実行し（４０４）、分析に基づいて会話メッセージから使用可能とすることができるエンティティを特定する（４０６）。例えば、会話アナライザ２２６は、構文解析、抽出、およびパターンマッチングによって会話メッセージからエンティティ「美しい」、「天気」および「ストアＡ」を決定する。次に、会話アナライザ２２６は、ＳＡＦＴライブラリを用いた言語意味解析に基づいて「美しい」が形容詞、「天気」が名詞、「ストアＡ」が場所であると決定する。会話アナライザ２２６によって特定されたエンティティは、ユーザが動作を起こすことができると判定されたかどうかに応じて、使用可能とするか、または使用可能でないとすることができる。
【０１１１】
次に、方法４００は、分析に基づいてエンティティのコンテキストインジケータを決定する（４０８）。例えば、会話アナライザ２２６は、ユーザ情報と組み合わせたパターンマッチングに基づいてＮＬＰを実行する。例えば、会話アナライザ２２６は、ユーザＡのユーザ情報と組み合わせたパターンマッチングに基づいて市街地の任意の「コーヒーハウス」の代わりに、会話メッセージからユーザＡの近くの「コーヒーハウス」を検出することができる。追加的または代替的に、会話アナライザ２２６は、会話メッセージに対する感情分析を実行し、会話メッセージに重みを関連付けることによってコンテキストインジケータを決定し得る。例えば、会話アナライザ２２６は、ユーザＡからの「私はコーヒーが嫌いです」「紅茶は大丈夫です」「コーラは好きです」というメッセージを受信し、最も好意的な重みから最低の好意的な重みをコーラ、紅茶、コーヒーに関連づける。重みは、ユーザＡの飲み物の好みを示す。追加的または代替的に、会話アナライザ２２６は、会話メッセージを分析して、時制（例えば、会話メッセージが過去時制にあるかどうか）、および／または会話メッセージの最新性（例えば、会話メッセージが新規であるかどうか、新旧の会話メッセージをどのように重み付けるか）を決定し、かつ／またはユーザプロフィール情報（例えば、年齢、性別）および／または会話メタデータ（例えば、会話の開始時間および終了時間、会話の参加者、各会話メッセージに関連するタイムスタンプ）をコンテキストインジケータとして収集し得る。
【０１１２】
方法４００は、さらに、会話の各参加者からの会話フローを追跡し（４１０）、追跡情報に基づいてコンテキストインジケータを洗練化する（４１２）。例えば、会話アナライザ２２６は、会話の可能性のある参加者についてユーザを追跡し、どの参加者がどの順番でどのメッセージを送っているかを決定する。例えば、会話アナライザ２２６は、当日ユーザＢと話すときにユーザＡから送信される「ハイキングに行きたいですか？」というメッセージからエンティティ「ハイキング」を特定する。会話アナライザ２２６は、会話フローを追跡して、以前の会話においてユーザＢからの「ハイキングよりも釣りが好き」というメッセージを、エンティティ「ハイキング」のコンテキストインジケータとして使用すべきであることを決定する。
【０１１３】
方法４００は、コンテキストインジケータに基づいてエンティティが使用可能かどうかを決定する（４１４）。決定エンジン２２８は、エンティティが会話フローに基づいて使用可能であるかどうかを決定する。例えば、ユーザＡは「ＡＢＣで会いますか？」という質問を入力する。決定エンジン２２８は、会話フローにおいてユーザＢの回答を受信するまで、場所「ＡＢＣ」が使用可能であるか否かを決定しない。決定エンジン２２８は、エンティティがメッセージの時制に基づいて使用可能かどうかを決定する。例えば、決定エンジン２２８は、過去時制メッセージにおけるエンティティが使用可能でないと決定し得る。決定エンジン２２８はまた、感情インジケータおよび他のコンテキストインジケータに基づいてエンティティが使用可能であるかどうかを決定する。エンティティが使用可能であると決定エンジン２２８が決定した場合、方法４００はステップ４１６に移行する。そうでない場合、方法４００は終了する。
【０１１４】
方法４００は、機械学習モデルおよびコンテキストインジケータに基づいてエンティティに対してユーザが動作をとるための提案を決定する（４１６）。例えば、ユーザが次の週末のラスベガスへのフライトについて話している場合、決定エンジン２２８は、使用可能なエンティティ「フライト」を決定し、提案ジェネレータ２３０は、機械学習モデルで学習したユーザの以前の購入履歴に基づいてフライトスケジュール（例えば、時間および航空会社）の提案を提示する。方法４００は、エンティティに対してユーザが動作を起こすための提案を提示する（４１８）。
【０１１５】
図５は、会話から使用可能なエンティティを手動で決定するための例示的な方法のフローチャート５００である。方法５００は、会話メッセージ中のエンティティを使用可能なものとしてマークする指示を受信する（５０２）。いくつかの例では、（例えば、エンティティに対応する会話メッセージ内の用語を指示するユーザインタフェース入力に基づいて）会話メッセージ内のエンティティを使用可能なものとしてマークする指示がユーザから受信される。方法５００は、ユーザ指示、および任意選択的に追加データ（例えば、会話メッセージ、コンテキストインジケータ）をトレーニング信号として機械学習モデルに送信する（５０４）。方法５００は、エンティティに関連する情報を検索し（５０６）、その情報をユーザに提供する（５０８）。たとえば、ユーザは「グリーンパークミュージアム」がメッセージの中で最も重要な単語であると決定し、その単語にフラグを立てることにより、この単語が使用可能であることを指示する。この指示を受信することに応答して、決定エンジン２２８は、「グリーンパークミュージアム」に関連する情報を検索し、ユーザに対する上位５つの結果を取得する。決定エンジン２２８はまた、機械学習モデルをトレーニングするために、指示をトレーニング信号として送信する。
【０１１６】
図６は、機械学習モデルを生成し更新するための例示的な方法のフローチャート６００である。一例では、図２を参照する上記の更なる詳細で説明したモデルビルダー２２４は、機械学習モデルを生成し更新し得る。方法６００は、クエリおよび文書検索を含む様々なソースからデータを受信し（６０２）、データから特徴を抽出し（６０４）、抽出された特徴に基づいて機械学習モデルを生成する（６０６）。例えば、モデルビルダー２２４は、ユーザの検索履歴をモデルに含むようにする。別の例では、クエリに対して返信された文書群と、各文書に関連付けられたランク付けとを受けると、モデルビルダー２２４は、文書とクエリとの間の関連性を示すランクを含むようにモデルを構築する。モデルビルダー２２４はまた、ユーザの動作に関する予測を行うために使用されるユーザ統計、ユーザ行動パターンデータ、一連の重みおよび乗数を含むようにモデルを生成し得る。モデルビルダー２２４は、機械学習モデルを生成し、経時的にモデルをトレーニングして、会話のセマンティクスを理解し、リアルタイムの会話から意味を導き出す。モデルが進化するにつれて、提案作成、行動予測などにおいてモデルを使用する効率および精度が向上する。
【０１１７】
方法６００は、エンティティに向けて提供された提案に対する反応を含むユーザ動作を受信し（６０８）、ユーザ動作に基づいて機械学習モデルをトレーニングする（６１０）。これは、ユーザ動作および他の関連データに基づいてトレーニング例を生成すること、およびトレーニング例に基づいて機械学習モデルをトレーニングすることを含み得る。例えば、モデルビルダー２２４は、ユーザが購入ツールを用いて会話インタフェースで提供されたものを一度も購入していないことを学習する。別の例では、モデルビルダー２２４は、フライト日程の提案に関して「この航空会社が好きではない」というコメントを受け取る。モデルビルダー２２４は、この否定的反応をモデルをトレーニングするための信号として取り扱う。その結果、今後、別の航空会社がユーザに提案され得る。
【０１１８】
図７は、提案を生成するために、第１のアプリケーションから第２のアプリケーションにエンティティ情報を供給するための例示的な方法のフローチャート７００である。方法７００は、第１のアプリケーションによってホストされた会話から少なくとも１つの会話メッセージを受信し（７０２）、会話メッセージ中のエンティティが使用可能であると決定する（７０４）。方法７００は、第１のアプリケーションにおける会話の参加者を含むエンティティ情報を第２のアプリケーションに供給する（７０６）。次に、方法はステップ７０８に移行し、第２のアプリケーションは、エンティティに対してユーザが動作を起こすための提案を生成する。例えば、会話内にフライト番号について言及された場合、提案ジェネレータ２３０は、フライトフィード（例えば、遅延情報）をユーザに提供するようサードパーティサーバに通知する。ユーザが会話中にユーザが好きな友人について言及した場合、提案ジェネレータ２３０は広告アプリケーションと通信して、この情報を使用してユーザを広告のターゲットとする。方法７００は、第１のアプリケーションにおける会話の参加者に提案を提供する（７１０）。例えば、ユーザＡ、ユーザＢおよびユーザＣとの会話で天気について言及した場合、気象サービスは、提案ジェネレータ２３０から「天気」のエンティティ情報を受信した後、ユーザＡ、ＢおよびＣに天気予報を毎時に送信し得る。
【０１１９】
図８は、会話中の可能性のあるユーザ回答を予測するための例示的な方法のフローチャート８００である。方法８００は、会話から少なくとも１つの会話メッセージを受信し（８０２）、会話メッセージ中のエンティティが使用可能であると決定する（８０４）。次に、方法８００は、会話中のユーザに対するエンティティに関連する質問を検出し（８０６）、その質問に対する可能性のあるユーザ回答を決定する（８０８）。一例では、図２を参照する以下の更なる詳細で説明する応答予測器２３２は、質問を検出し、可能性のあるユーザ回答を決定し得る。例えば、応答予測器２３２が、質問に対して３０％の人がＡと回答し、７０％の人がＢと回答することを学習する場合、応答予測器２３２は、同じ質問に対して回答しようとしているユーザに対して回答Ｂを供給し得る。また、応答予測器２３２は、コンテキストインジケータ（例えば、ユーザの場所、コンテキスト、および他の個人情報）に基づいて可能性のある回答を決定する。例えば、応答予測器２３２は、前回の会話でユーザＡから「コーヒーは嫌いです」および「Ｘ通りの紅茶専門店が一番良い」とのメッセージがあったとすると、ユーザＢがユーザＡに「好きなコーヒーや紅茶の店はどこですか？」と尋ねた場合に、応答予測器２３２は、「Ｘ通りの紅茶専門店」の住所をユーザＡの可能性のある回答として簡単に提供することができる。
【０１２０】
方法８００は、可能性のあるユーザ回答をワンタップ形式でユーザに提供する（８１０）。例えば、ユーザＡがユーザＢにチャット会話を送信すると、応答予測器２３２は、「運転中です」と言うワンタップの提案を送信するか、またはユーザＢがユーザＡに応答するために「２０分後に家に着きます」と送信することもできる。ワンタップの提案のワンタップ選択に応答して、その提案はチャット会話のトランスクリプトに組み込まれ得る。ユーザＢが搭乗中で携帯電話をオンにしていないとき、応答予測器２３２はカレンダーに基づいてユーザＢに対して「４時間後に使用可能になります」と自動的に回答することができる。
【０１２１】
図９は、検索要求に応答して会話および／または会話メッセージを選択的に取得するための例示的な方法のフローチャート９００である。方法９００は、少なくとも１つの会話を受信し（９０２）、少なくとも１つの会話からコンテキストインジケータを決定する（９０４）。方法９００は、コンテキストインジケータに基づいて少なくとも１つの会話を編成し（９０６）、少なくとも１つの会話を索引付けする（９０８）。一例では、図２を参照する上記の更なる詳細で説明したレポートモジュール２３４は、会話を編成および索引付けし得る。レポートモジュール２３４は、参加者の身元、会話内で参照されるエンティティ、会話メッセージの時間、他の会話コンテンツなどに基づいて会話を編成し得る。一例では、レポートモジュール２３４は、また降順の時間順で場所について言及する会話を編成し得る。レポートモジュール２３４は、会話フローに基づいて会話を編成し得る。例えば、ユーザが「それを検索します」と言うと、レポートモジュール２３４は、会話フローにおける次のメッセージが、ユーザが検索ボックスで指定した単語であると決定し、この順番で会話を編成し得る。レポートモジュール２３４はまた、感情および他のコンテキストインジケータに基づいて会話を編成および索引付けし得る。
【０１２２】
方法９００は、少なくとも１つの会話に対する検索要求を受信し（９１０）、少なくとも１つの会話の索引付けに基づいて、少なくとも１つの会話の一部を検索する（９１２）。例えば、レポートモジュール２３４は、映画について話す会話に対する検索要求を受信したことに応答して、映画に関する会話コンテンツを検索し、会話のタイムラインに従って会話を順序付けし、会話中の各会話メッセージをユーザおよび時間と関連付けし、重要なエンティティ（例えば、映画名、劇場の名前、上映時間他）を強調表示し、インデックスに基づいて以前の会話に戻す参照を提供することによって会話を編成することに基づいてレポートを生成する。
【０１２３】
図１０は、提案を示す例示的な会話インタフェースのグラフィック表示を含む。図示の例では、会話インタフェース１０００，１０５０がアーロンのモバイル画面に表示されている。アーロンは「パーク・チャウで食事したいですか？」というメッセージ１００２をボブから受け取る。図１および図２を参照して上述した提案アプリケーション１３２ｂは、場所「パーク・チャウ」が使用可能であると決定する。したがって、アーロンとボブがその場所で動作を起こすための提案を生成することができる。この例では、提案アプリケーション１３２ｂは、アーロンおよび／またはボブ用の場所「パーク・チャウ」のマップ１００４を生成する。アーロンおよび／またはボブは、マップ１００４を閲覧したり、共有ボタン１００６を使用してマップ１００４を共有したりすることができる。このシナリオでは、マップ１００４は、アーロンがメッセージ１００２に応答して「もちろん」というメッセージ１００８を送信する前と送信した後に２回表示される。別のシナリオでは、決定エンジン２２８は、アーロンが例えば「もちろん」というメッセージ１００８で質問１００２に肯定的に答えた場合にのみ、場所「パーク・チャウ」が使用可能であると決定する。結果として、場所提案（例えば、マップ１００４）は、アーロンがメッセージ１００８を送信した後に１回だけ表示される。換言すれば、アーロンが肯定的なインタラクション要素「もちろん」を伴うインタラクションを介してメッセージ１００８を送信するまで、場所提案は、会話のトランスクリプトに組み込まれない。マップがユーザの所望する提案ではないか、マップが間違っているか、または他の否定的な反応であることを示すためにアーロンとボブは、「うーん、いいえ」オプション１０１０を代替的に選択し得る。そのような状況では、会話のトランスクリプトへの静的な組み込みは行わずに、提案は廃棄され得る。図１０では、提案アプリケーション生成プロセス全体が提案アプリケーション１３２によって処理される。
【０１２４】
図１１Ａは、会話サービスによって生成された会話を示す例示的な会話インタフェースのグラフィック表示である。ユーザのメリッサ  ジー．、アリス  ゼット．、クリス  ビー．の間での進行中の会話は、会話インタフェース１１００上に表示される。ユーザのメリッサ  ジー．、アリス  ゼット．、クリス  ビー．は、この非限定的な例においてソーシャルネットワークのメンバーであり得る。ユーザ間の会話セッションは、ソーシャルネットワーク内の第１のアプリケーション（例えば、提案アプリケーション１３２）によって生成され、管理される。会話インタフェース１１００は、メリッサのコンピュータスクリーン上に表示することができる。この例では、その夜の計画について会話をしており、メリッサは買い物に興味があることを示し、「ドレスファクトリーはいいわよ。今は割引があるかしら。」と話している。提案アプリケーション１３２ｂは、このメッセージの重要なエンティティが「ドレスファクトリー」および「割引」であると特定すると、提案アプリケーション１３２ｂは、これらの重要なエンティティに基づいて提案を生成する。しかしながら、図１０のように提案アプリケーション１３２ｂによって提案を生成する代わりに、提案アプリケーション１３２ｂは、「ドレスファクトリー」および「割引」の情報を別のサービス（例えばサードパーティプロモーションサービス）に供給する。
【０１２５】
図１１Ｂを参照すると、図１１Ｂは、サードパーティのプロモーションサービスによって生成された提案を示す例示的な会話インタフェースのグラフィック表示である。図示された例では、会話インタフェース１１５０は、メリッサのモバイル画面上に表示される。会話インタフェース１１５０は、「ドレスファクトリーはドレスとジュエリーが５月３０日まで２０％オフです。」という提案１１５２を含む。プロモーションサービスは、提案アプリケーション１３２ｂによって特定されたエンティティ「ドレスファクトリー」および「割引」に基づいて、（例えば、会話を処理する別のサーバによってその情報が供給された後）図１１Ａにおいて提案１１５２を生成する。一例では、プロモーションサービスは、インターネット上のエンティティに関する検索を実行して、提案１１５２を生成し得る。提案ジェネレータ１３２ｂは、提案１１５２を受信し、提案１１５２を図１１Ａにおける会話の参加者の全員または一部（例えば、メリッサ  ジー．、アリス  ゼット．および／またはクリス  ビー．）に提供する。図１１Ｂは、アリスまたはクリスに示された提案と同一の、メリッサのモバイルスクリーン上の提案１１５２を示す。
【０１２６】
図１２は、ワンタップ回答を示す例示的な会話インタフェースのグラフィック表示である。図示された図１２では、会話インタフェース１２００がアーロンのモバイル画面に表示されている。「ママの飛行機の到着予定時刻は？」というボブからの質問１２０２に応答して、提案アプリケーション１３２ｂは、アーロンの以前のユーザ動作（例えば、購入履歴）に基づいて、アーロンからの可能性のある回答を予測し、アーロン用のワンタップ回答１２０４を生成し得る。自動回答１００４は、フライト番号、到着時間、およびフライト状況をリストアップする。したがって、アーロンはボブへの回答を入力する時間を節約する。同様に、ボブが「ママを空港で出迎えるの？」という別の質問１２０６を送信すると、提案アプリケーション１３２ｂはこれがイエスまたはノー質問であると決定し、アーロンが選択するための２つのオプション「はい」または「いいえ」を含むワンタップ自動回答１００８を生成する。
【０１２７】
図１３は、会話レポートを示す例示的な会話インタフェースのグラフィック表示である。会話インタフェース１３００は、参加者の名前、トピック、時間、それらの組み合わせなどに基づいて会話を検索することができる検索ボックス１３０２を含む。図１３において図示された例では、ユーザは映画「スターウォーズ」についての会話を検索した。提案アプリケーション１３２ｂは、ユーザからの検索要求に応答して、レポートを生成し得る。特定の例では、レポートは、ユーザが会話の他の参加者とトピックについて議論したときの（例えば、メリッサ、アリス、ジェニーが水曜日の７時１０分から７時３０分の間に「スターウォーズ」について議論したときの）要約１３０４から始まる。レポートは、各参加者からの時間順の会話メッセージを含み得る。レポートはまた、ユーザによって検索されたキーワード「スターウォーズ」１３０６を強調表示し得る。さらに、レポートは、ユーザがエンティティに関するさらなる情報（例えば、バイオグラフィー、写真）を取得することを可能にするために、特定のエンティティ（例えば、俳優「ＡＡ」１１０８および「ＢＢ」１３１０）を強調表示し得る。強調表示され、かつ特定された各エンティティは、ユーザがインターネット上のエンティティの検索を実行することを可能にするハイパーリンクに関連付けられ得る。
【０１２８】
図１４は、会話の要約を示す例示的な会話インタフェースのグラフィック表示である。図示の例では、会話インタフェース１４００は、ユーザが１週間の間に参加した会話を要約する、提案アプリケーション１３２ｂによって生成されたユーザのための会話の要約１４０２を含む。会話の要約は、２つの例示的な部分１４０２および１４０４を含み得る。第１の部分１４０２において、要約は、過去１週間の間にユーザが参加した会話の数、および会話に関するいくつかの基本情報（例えば、時刻、日付、他の参加者の識別情報など）を含み得る。第１の部分１４０２はまた、各参加者からの会話メッセージ、各メッセージが送信された時刻などを含む各会話に関するさらなる詳細を提供する各会話の詳細オプション１４０６を含み得る。第２の部分１４０４は、例えば、会話で議論されたトピック（任意選択的に、会話中の各トピックのパーセンテージを記述する円グラフ１４０８）と、会話内で共有されたオーディオ／ビジュアルコンテンツ（任意選択的に、コンテンツを再生するためのリンク１４１０）と、２つの会話で共有された写真１４１２とを含む、過去１週間の間に行われた会話に関する顕著な情報を含み得る。
【０１２９】
図１５は、提案の連続した表示を示す例示的な会話インタフェースのグラフィック表示を含む。図示された図１５において、会話インタフェース１５００は、ユーザのモバイル画面上に表示される。「会って食事しませんか？」というメッセージ１５０２の受信に応答して、提案アプリケーション１３２ｂは、「ランチ」、「ディナー」、「ブランチ」などのオプション１５０４を生成して表示する。ユーザは、ユーザに最初に提案されたオプション１５０４のうちの１つを選択し、生成される第２の提案をトリガし得る。図１５は、オプション１５０６に示すようにユーザ選択を受信したことに応答して生成された会話インタフェース１５５０を示す。オプション１５０６にユーザのランチの選択が現れると、提案アプリケーション１３２ｂは、ランチ用の開いている特定のレストランを生成して表示する。特定の実施形態では、提案アプリケーション１３２ｂは、会話における参加者の全ての特定の距離範囲内にあるレストランのみを表示し得る。いくつかの例では、レストラン情報１５０８は、レストラン名、レストランタイプ、レビューおよび価格を含み得る。
【０１３０】
特定の実施形態では、表示されたレストラン情報を選択可能かつ使用可能とすることができる。一例では、ユーザは、特定のレストランを選択し、それを会話の他の参加者に例えばレストラン名を含むメッセージとして、レストラン名および会話に適した事前設定されたデフォルトワード（例えば、．．．で会いましょう）を含むメッセージとして表示し得る。別の例では、ユーザは、特定のレストランを選択して、インターネット上でレストランの検索を実行し、ウェブサイトから店舗情報を取得し、レストランの場所のマップを取得する等し得る。次いで、ユーザは、例えば、レストランの場所のマップを会話インタフェースに挿入することによって、取得した情報を会話の他の参加者に表示するように選択し得る。
【０１３１】
本明細書において、「いくつかの例」または「ある実施形態」への参照は、実施形態に関連して説明した特定の特徴、構造、または特性が、その説明の少なくともいくつかの例に含まれることを意味する。本明細書の様々な箇所における「いくつかの例では」という記載の出現は、必ずしも全てが同じ実施形態を参照しているとは限らない。
【０１３２】
詳細な説明のいくつかの箇所は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現に関して提示されている。これらのアルゴリズム記述および表現は、データ処理分野の当業者が、それらの研究の内容を当業者に最も効果的に伝えるために使用される手段である。アルゴリズムは、本明細書では、一般的に、所望の結果を導くステップの自己一貫したシーケンスであると考えられる。これらのステップは、物理量の物理的操作を必要とするものである。通常、必ずしも必要ではないが、これらの量は、記憶、転送、結合、比較、およびその他の操作が可能な電気信号または磁気信号の形式をとる。これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことは、主に一般的な使用のために、時には便利であることが証明されている。
【０１３３】
しかしながら、これらの用語および類似の用語は全て、適切な物理量に関連し、かつこれらの量に適用される便利なラベルに過ぎないことに留意すべきである。以下の説明から明らかなように特に明記しない限り、「処理する」、「算出する」、「計算する」、「決定する」、または「表示する」などの用語を利用する説明は、記載を通して、コンピュータシステムのレジスタおよびメモリ内の物理（電子）量として表されるデータを、コンピュータシステムメモリまたはレジスタまたは他のそのような情報記憶、転送または表示デバイス内の物理量として同様に表される他のデータに処理および変換するコンピュータシステムまたは類似の電子コンピューティングデバイスの動作およびプロセスを指す。
【０１３４】
本明細書はまた、本明細書の動作を実行するための装置に関する。この装置は、必要な目的のために特別に構成され得、またこの装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再構成された汎用コンピュータを含み得る。このようなコンピュータプログラムは、限定されないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、磁気または光カード、それぞれコンピュータシステムバスに結合され、不揮発性メモリを有するＵＳＢキーまたは電子命令を格納するのに適した任意のタイプの媒体を含むフラッシュメモリ等の非一時的なコンピュータ可読記憶媒体に格納され得る。
【０１３５】
本明細書は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素の両方を含む実施形態の形態を取ることができる。いくつかの例では、本明細書は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これに限定されないソフトウェアで実施される。
【０１３６】
さらに、この説明は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、非一時的なコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。この説明のために、非一時的なコンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを含む、格納する、通信する、伝播する、または転送することができる任意の装置とすることができる。
【０１３７】
プログラムコードを記憶及び／又は実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的又は間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラムコードの実際の実行中に使用されるローカルメモリ、大容量ストレージ、および実行中に大容量ストレージからコードを取得しなければならない回数を減らすために少なくともいくつかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。
【０１３８】
入出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティングデバイスなどを含むが、これに限定されない）は、システムに直接または介在するＩ／Ｏコントローラを介して結合することができる。
【０１３９】
ネットワークアダプタは、データ処理システムが介在するプライベートネットワークまたはパブリックネットワークを介して他のデータ処理システムまたはリモートプリンタまたはソーシャルネットワークデータストアに結合されることを可能にするシステムに結合され得る。モデム、ケーブルモデム、およびイーサネットカードは、現在使用可能なタイプのネットワークアダプタのほんのいくつかである。
【０１４０】
最後に、本明細書で提示されるアルゴリズムおよびディスプレイは、特定のコンピュータまたは他の装置に本質的に関連するものではない。様々な汎用目的のシステムを、本明細書の教示に従ってプログラムと共に使用することができ、または必要な方法のステップを実行するためにより特殊化した装置を構築することが好都合であることがわかる。様々なこれらのシステムに必要な構造は、以下の説明から明らかになるであろう。さらに、本明細書は、特定のプログラミング言語を参照して記載されていない。本明細書に記載されるような明細書の教示を実施するために様々なプログラミング言語が使用されてもよいことは理解されよう。
【０１４１】
本明細書で説明するシステムがユーザに関する個人情報を収集したり、個人情報を使用したりする状況では、ユーザにプログラムまたは機能がユーザ情報（ユーザのソーシャルネットワーク、ソーシャルアクションまたは活動、職業、ユーザの嗜好、またはユーザの現在の場所に関する情報）を収集するかどうかを制御したり、コンテンツサーバからユーザに関連性の高いコンテンツを受信するかどうか、および／または受信する方法を制御する機会がユーザに与えられ得る。さらに、特定のデータは、保管または使用される前に１つまたは複数の方法で処理されて、個人識別可能な情報が削除されるようにし得る。例えば、ユーザの身元は、そのユーザについて個人識別可能な情報を判定することができないように処理され得、またはユーザの地理的位置は、位置情報が得られる場所（都市、郵便番号、または州レベルなど）に一般化されて、ユーザの特定の場所を特定することができないようにされる。したがって、ユーザは、ユーザに関する情報がどのように収集され、システムの様々なコンポーネントによってどのように使用されるかを制御し得る。
【０１４２】
本明細書の実施形態の前述の説明は、例示および説明のために提示されたものである。包括的であること、または明細書を開示された正確な形式に限定することを意図するものではない。上記教示に照らして、多くの修正および変形が可能である。本開示の範囲は、この詳細な説明によってではなく、本出願の特許請求の範囲によって限定されることが意図される。当業者には理解されるように、本明細書は、その技術思想または本質的な特徴から逸脱することなく、他の特定の形態で具体化されてもよい。同様に、モジュール、ルーチン、特徴、属性、方法および他の側面の特定の命名および分割は必須でも重要でもなく、明細書またはその特徴を実施するメカニズムは異なる名前、部分および／またはフォーマットを有することができる。さらに、当業者には明らかなように、本開示のモジュール、ルーチン、特徴、属性、方法および他の態様は、ソフトウェア、ハードウェア、ファームウェア、またはこれら３つの任意の組み合わせとして実施することができる。また、モジュールの一例である明細書のコンポーネントがソフトウェアとして実施される場合、コンポーネントは、スタンドアロンプログラムとして、より大きなプログラムの一部として、複数の別個のプログラムとして、静的または動的にリンクされたライブラリとして、カーネルロード可能モジュールとして、デバイスドライバとして実施し、かつ／またはコンピュータプログラムの分野の当業者に現在既知であるか、または将来既知となるあらゆる方法で実施することができる。さらに、本開示は決して特定のプログラミング言語による実施に限定されず、任意の特定のオペレーティングシステムまたは環境に限定されるものでもない。従って、本開示は、以下の特許請求の範囲に記載されている本明細書の範囲を例示するものであって、限定するものではない。
【図１】
2019508820.tif 000004
【図２】
2019508820.tif 000005
【図３】
2019508820.tif 000006
【図４】
2019508820.tif 000007
【図５】
2019508820.tif 000008
【図６】
2019508820.tif 000009
【図７】
2019508820.tif 000010
【図８】
2019508820.tif 000011
【図９】
2019508820.tif 000012
【図１０】
2019508820.tif 000013
【図１１Ａ】
2019508820.tif 000014
【図１１Ｂ】
2019508820.tif 000015
【図１２】
2019508820.tif 000016
【図１３】
2019508820.tif 000017
【図１４】
2019508820.tif 000018
【図１５】
2019508820.tif 000019
【国際調査報告】
2019508820.tif 000020
2019508820.tif 000021