(58)【調査した分野】(Int.Cl.,DB名)
自動メッセージングシステムに関連する1つまたは複数のプロセッサによって、ユーザの現在のロケーションと少なくとも1つのタスクの各々にとっての基準との間の適合に基づいて、前記ユーザに関する前記少なくとも1つのタスクを識別するステップであって、前記タスクが、少なくとも1つのアクション、および前記アクションに関連する少なくとも1つのエンティティを示す、ステップと、
前記ユーザの前記現在のロケーションが前記エンティティのロケーションに対応することに基づいて、前記プロセッサのうちの1つまたは複数によって、前記自動メッセージングシステムおよび/または他のシステムとのユーザ対話を使用するとともに自然言語処理を用いて、前記タスクに合ったメッセージを生成するステップと、
前記メッセージを生成するステップに基づいて、前記プロセッサのうちの1つまたは複数によって、前記タスクに関係する前記ユーザとのダイアログを起動するステップであって、前記自動メッセージングシステムを介し、
前記ユーザのコンピューティングデバイスのユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記メッセージを提供するステップを備える、ステップと、
前記提供に応答して、前記ダイアログを存続させるとともに前記コンピューティングデバイスのユーザインターフェース入力デバイスを介して前記ユーザによって生成された、自由形式自然言語入力を、前記プロセッサのうちの1つまたは複数によって受け取るステップと、
前記タスクに合った、前記自由形式自然言語入力に基づく、追加メッセージを、前記プロセッサのうちの1つまたは複数によって生成するステップと、
前記ユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記ダイアログの存続中に前記プロセッサのうちの1つまたは複数によって前記追加メッセージを提供するステップと
を備える方法。
前記アクションによって示される前記エンティティがサービスエンティティであり、前記自由形式自然言語入力に含まれる第1の自然言語入力および第2の自然言語入力が両方とも前記ユーザのネイティブ言語におけるものであり、
前記メッセージを生成するステップが、
前記プロセッサのうちの1つまたは複数によって、前記サービスエンティティにとって好ましい言語を識別するステップと、
前記プロセッサのうちの1つまたは複数によって、前記第1の自然言語入力および前記第2の自然言語入力のうちの少なくともいくつかを前記ネイティブ言語から前記好ましい言語に翻訳するステップと、
前記プロセッサのうちの1つまたは複数によって、前記翻訳された自然言語入力を前記サービスエンティティに提供するステップと
を備える請求項1に記載の方法。
前記自動メッセージングシステムが、前記ユーザの前記コンピューティングデバイスから遠隔にある1つまたは複数のコンピューティングデバイス上に少なくとも部分的に実装される、請求項15に記載の方法。
メモリおよび1つまたは複数のプロセッサを備えるシステムであって、前記メモリが命令を記憶し、前記命令は、前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
ユーザの現在のロケーションと少なくとも1つのタスクの各々にとっての基準との間の適合に基づいて、前記ユーザに関する前記少なくとも1つのタスクを識別することであって、前記タスクが、少なくとも1つのアクション、および前記アクションに関連する少なくとも1つのエンティティを示す、ことと、
前記ユーザの前記現在のロケーションが前記エンティティのロケーションに対応することに基づいて、自動メッセージングシステムおよび/または他のシステムとのユーザ対話を使用するとともに自然言語処理を用いて、前記タスクに合ったメッセージを生成することと、
前記メッセージを生成することに基づいて、前記タスクに関係する前記ユーザとのダイアログを起動することであって、前記ダイアログを起動する際に、前記1つまたは複数のプロセッサが、前記ユーザのコンピューティングデバイスのユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記メッセージを提供するように構成される、ことと、
前記提供に応答して、前記ダイアログを存続させるとともに前記コンピューティングデバイスのユーザインターフェース入力デバイスを介して前記ユーザによって生成された、自由形式自然言語入力を受け取ることと、
前記タスクに合った、前記自由形式自然言語入力に基づく、追加メッセージを生成することと、
前記ユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記ダイアログの存続中に前記追加メッセージを提供することと
をさせる、システム。
命令を備える少なくとも1つのコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、以下の動作、すなわち、
ユーザの現在のロケーションと少なくとも1つのタスクの各々にとっての基準との間の適合に基づいて、前記ユーザに関する前記少なくとも1つのタスクを識別することであって、前記タスクが、少なくとも1つのアクション、および前記アクションに関連する少なくとも1つのエンティティを示す、ことと、
前記ユーザの前記現在のロケーションが前記エンティティのロケーションに対応することに基づいて、自動メッセージングシステムおよび/または他のシステムとのユーザ対話を使用するとともに自然言語処理を用いて、前記タスクに合ったメッセージを生成することと、
前記メッセージを生成することに基づいて、前記タスクに関係する前記ユーザとのダイアログを起動することであって、前記ダイアログを起動する際に、前記1つまたは複数のプロセッサが、前記ユーザのコンピューティングデバイスのユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記メッセージを提供するように構成される、ことと、
前記提供に応答して、前記ダイアログを存続させるとともに前記コンピューティングデバイスのユーザインターフェース入力デバイスを介して前記ユーザによって生成された、自由形式自然言語入力を受け取ることと、
前記タスクに合った、前記自由形式自然言語入力に基づく、追加メッセージを生成することと、
前記ユーザインターフェース出力デバイスを介して前記ユーザに提示するために、前記ダイアログの存続中に前記追加メッセージを提供することと
を実行させる、少なくとも1つのコンピュータ可読記憶媒体。
1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、請求項2から17のいずれか一項に記載の方法を実行させる命令をさらに備える、請求項22に記載の少なくとも1つのコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0023】
本明細書の実装形態は、少なくとも1人のユーザとのダイアログを起動しかつ/または適合させるために、自動メッセージングシステムを利用することを対象とし、ここで、ダイアログは、ユーザのコンピューティングデバイスのユーザインターフェース入力および出力デバイスを介して出現する。それらの実装形態のうちのいくつかでは、自動メッセージングシステムは、ユーザに関連する少なくとも1つのタスク(たとえば、少なくとも1つのアクションおよびアクションに関連する少なくとも1つのエンティティ(たとえば、サービスエンティティ)を示すタスク)を識別し、タスクを識別することに基づいてユーザとのダイアログを起動する。自動メッセージングシステムは、タスクに関係する追加情報をユーザに提供するための、かつ/またはダイアログ中に提供されるユーザ入力に基づいて、タスクの1つまたは複数のパラメータに対する値を決定するための、ダイアログを起動し得る。いくつかの実装形態では、自動メッセージングシステムは、ダイアログ中に決定されるパラメータの値を利用してタスクの実行をさらに起動し得る。
【0024】
いくつかの実装形態では、自動メッセージングシステムは、特定の情報をユーザに要請する質問または他のプロンプトをダイアログ中に生成し得、ダイアログ中にユーザによって提供されるユーザインターフェース入力に基づいてプロンプトを自発的に適合させ得る。それらの実装形態のうちのいくつかでは、ユーザとのダイアログ中に自動メッセージングシステムによって生成されるプロンプトは、タスク用の必要なかつ/または所望のパラメータに対する値をユーザから抽出するように構成されてよく、ダイアログ中でのユーザの応答に基づいてダイアログ中に適合されてよい。
【0025】
いくつかの実装形態では、ユーザとのダイアログに関与する際に、自動メッセージングシステムは、1つまたは複数のサービスエンティティに対して構成された1つまたは複数のプロトコルに基づいて、かつ/またはローカル言語データベースの1つまたは複数のエントリに基づいて、1つまたは複数のプロンプトを生成し得る。
【0026】
様々な実装形態では、ユーザに提示するためのコンテンツを生成する際に、自動メッセージングシステムは、タスクに関係しソース言語でのコンテンツを識別し得、そのコンテンツをユーザの言語である異なる言語に翻訳し得、翻訳されたコンテンツをユーザに提示するために提供し得る。また、様々な実装形態では、ユーザとのダイアログの中でユーザから受け取られるユーザ入力は、ユーザの言語におけるものであってよく、自動メッセージングシステムは、入力を、タスクに関連するサービスエンティティの好ましい言語に翻訳し得る。
【0027】
次に
図1を参照すると、本明細書で開示する技法が実施され得る例示的な環境が図示される。例示的な環境は、複数のクライアントコンピューティングデバイス106
1〜Nおよび自動メッセージングシステム120を含む。自動メッセージングシステム120はクライアントコンピューティングデバイス106
1〜Nとは別個として
図1に示されるが、いくつかの実装形態では、自動メッセージングシステム120の態様のすべてが、クライアントコンピューティングデバイス106
1〜Nのうちの1つまたは複数によって実施され得る。たとえば、クライアントデバイス106
1が、自動メッセージングシステム120の1つのインスタンスまたはより多くの態様を実施してよく、クライアントデバイス106
Nも、自動メッセージングシステム120のそれらの1つまたは複数の態様の別個のインスタンスを実施してよい。自動メッセージングシステム120の1つまたは複数の態様が、クライアントコンピューティングデバイス106
1〜Nから遠隔の1つまたは複数のコンピューティングデバイスによって実施される実装形態では、クライアントコンピューティングデバイス106
1〜N、および自動メッセージングシステム120のそれらの態様は、ローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)(たとえば、インターネット)などの、1つまたは複数のネットワークを介して通信し得る。
【0028】
クライアントコンピューティングデバイス106
1〜Nは、たとえば、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車両内通信システム、車両内エンターテインメントシステム、車両内ナビゲーションシステム)、またはコンピューティングデバイスを含むユーザの装着型装置(たとえば、コンピューティングデバイスを有するユーザの時計、コンピューティングデバイスを有するユーザの眼鏡、仮想現実もしくは拡張現実コンピューティングデバイス)のうちの、1つまたは複数を含み得る。追加および/または代替のクライアントコンピューティングデバイスが提供されてよい。いくつかの実装形態では、所与のユーザは、コンピューティングデバイスの協調された「エコシステム」を集合的に形成する複数のクライアントコンピューティングデバイスを利用して、自動メッセージングシステム120と通信し得る。しかしながら、簡潔のために、本開示で説明する例は、ユーザが単一のクライアントコンピューティングデバイス106を操作することに焦点を当てる。
【0029】
クライアントコンピューティングデバイス106
1〜Nの各々は、メッセージ交換クライアント107
1〜Nのうちの対応するメッセージ交換クライアントなどの、様々な異なるアプリケーションを動作させ得る。メッセージ交換クライアント107
1〜Nは、様々な形式をなして届くことがあり、クライアントコンピューティングデバイス106
1〜Nにわたって形式が変わることがあり、かつ/またはクライアントコンピューティングデバイス106
1〜Nのうちの単一のクライアントコンピューティングデバイス上で複数の形式が動作させられることがある。いくつかの実装形態では、メッセージ交換クライアント107
1〜Nのうちの1つまたは複数は、ショートメッセージングサービス(「SMS」)および/またはマルチメディアメッセージングサービス(「MMS」)クライアント、オンラインチャットクライアント(たとえば、インスタントメッセンジャー、インターネット中継チャット、すなわち「IRC」など)、ソーシャルネットワークに関連するメッセージングアプリケーション、自動メッセージングシステム120との会話に専用のパーソナルアシスタントメッセージングサービスなどという形式をなして届くことがある。いくつかの実装形態では、メッセージ交換クライアント107
1〜Nのうちの1つまたは複数は、クライアントコンピューティングデバイスのウェブブラウザ(図示せず)または他のアプリケーションによってレンダリングされたウェブページまたは他のリソースを介して実施され得る。
【0030】
より詳細に本明細書で説明するように、様々な実装形態では、自動メッセージングシステム120は、クライアントコンピューティングデバイス106
1〜Nのうちの1つのユーザに関連するタスクを識別し、クライアントコンピューティングデバイスを介してユーザに提示するためにタスクに合ったコンテンツを提供することによって、タスクに関係するユーザとのダイアログを起動する。自動メッセージングシステム120によるタスクに関係するダイアログの「起動」とは、システム120とのいかなるダイアログにもユーザが関与されなかったこと、および/またはシステム120にダイアログを起動させたいかなる入力もユーザが提供しなかったことを、必ずしも意味するとは限らない。むしろ、そのことは、タスクに関係するダイアログの、システムによる起動の前に、自動メッセージングシステム120とのいかなる進行中のダイアログも、タスクを明示的には対象としなかったことを意味する。たとえば、ユーザは、その日のニュース、天気などにおける更新を入手するために、自動メッセージングシステムとのダイアログに関与されることがあり-システム120は、タスクに関係するダイアログをそのような関与の間に起動し得る。いくつかの実装形態では、タスクに関係するいかなる入力(たとえば、システム120との以前のダイアログにおける自然言語入力)もユーザがこれまでに自動メッセージングシステム120に直接提供していることなく、自動メッセージングシステム120は、タスクに関係するユーザとのダイアログを起動し得る。たとえば、自動メッセージングシステム120は、他のシステム(たとえば、電子メールシステム、検索エンジン、カレンダーシステム、および/または自動メッセージングシステム120とは別個の他のシステム)とのユーザ対話に基づく、ユーザの現在および/または過去のロケーションに基づいて、ダイアログを起動し得る。
【0031】
クライアントコンピューティングデバイス106
1〜Nの各々および自動メッセージングシステム120は、データおよびソフトウェアアプリケーションを記憶するための1つまたは複数のメモリ、データにアクセスするとともにアプリケーションを実行するための1つまたは複数のプロセッサ、ならびにネットワークを介して通信を容易にする他の構成要素を含み得る。クライアントコンピューティングデバイス106
1〜Nのうちの1つもしくは複数によって、かつ/または自動メッセージングシステム120によって実行される動作は、複数のコンピュータシステムにわたって分散されてよい。自動メッセージングシステム120は、たとえば、ネットワークを通じて互いに結合されている、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上で実行するコンピュータプログラムとして実装され得る。
【0032】
自動メッセージングシステム120は、自然言語プロセッサ122、ユーザ属性エンジン124、タスクエンジン126、翻訳エンジン128、メッセージ生成エンジン130、およびタスクパラメータモジュール132を含み得る。いくつかの実装形態では、エンジン122、124、126、128、130、および/またはモジュール132のうちの1つまたは複数が省略されてよい。いくつかの実装形態では、エンジン122、124、126、128、130、および/またはモジュール132のうちの1つまたは複数のすべてまたは態様が組み合わせられてよい。いくつかの実装形態では、エンジン122、124、126、128、130、および/またはモジュール132のうちの1つまたは複数が、自動メッセージングシステム120とは別個の構成要素の中に実装されてよい。たとえば、122、124、126、128、130、および/または132のうちの1つまたは複数、あるいはそれらの任意の動作可能部分が、クライアントコンピューティングデバイス106
1〜Nによって実行される構成要素の中に実装されてよい。
【0033】
自然言語プロセッサ122は、クライアントコンピューティングデバイス106
1〜Nを介してユーザによって生成された自然言語入力を処理し、自動メッセージングシステム120の1つまたは複数の他の構成要素によって使用するために注釈付き出力を生成する。たとえば、自然言語プロセッサ122は、クライアントデバイス106
1の1つまたは複数のユーザインターフェース入力デバイスを介してユーザによって生成される自然言語自由形式入力を処理し得る。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈、および随意に自然言語入力の用語のうちの1つまたは複数(たとえば、すべて)を含む。
【0034】
いくつかの実装形態では、自然言語プロセッサ122は、自然言語入力における文法的な情報の様々なタイプを識別し注釈を付けるように構成される。たとえば、自然言語プロセッサ122は、それらの文法的な役割を用いて用語に注釈を付けるように構成された発話タガー(speech tagger)の部分を含み得る。たとえば、発話タガーの部分は、各用語に、「名詞」、「動詞」、「形容詞」、「代名詞」などの、発話のその部分を用いてタグ付けし得る。また、たとえば、いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、自然言語入力における用語間の構文関係を決定するように構成された依存関係パーサ(dependency parser)を含み得る。たとえば、依存関係パーサは、どの用語が他の用語を修飾するのか、文の主語および動詞など(たとえば、構文解析木)を決定し得、-そのような依存関係の注釈を作成し得る。
【0035】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、人、組織、ロケーションなどへの参照などの、1つまたは複数のセグメントの中でのエンティティ参照に注釈を付けるように構成されたエンティティタガー(entity tagger)を含み得る。エンティティタガーは、(たとえば、人などのエンティティクラスへのすべての参照の識別を可能にするための)高レベルの粒度、および/または(たとえば、特定の人物などの特定のエンティティへのすべての参照の識別を可能にするための)低レベルの粒度において、エンティティへの参照に注釈を付け得る。エンティティタガーは、特定のエンティティを転換するために自然言語入力のコンテンツに依拠し得、かつ/または特定のエンティティを転換するために知識グラフもしくは他のエンティティデータベースと随意に通信し得る。
【0036】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、同じエンティティへの参照を1つまたは複数のコンテキストキューに基づいてグループ化すなわち「クラスタ化」するように構成された同一指示レゾルバ(coreference resolver)を含み得る。たとえば、同一指示レゾルバは、自然言語入力「私はAsia Villageを希望します。それを登録してください。」において用語「それ」を「Asia Village」に転換するために利用されてよい。
【0037】
いくつかの実装形態では、自然言語プロセッサ122の1つまたは複数の構成要素は、自然言語プロセッサ122の1つまたは複数の他の構成要素からの注釈に依拠し得る。たとえば、いくつかの実装形態では、固有表現タガー(named entity tagger)は、特定のエンティティへのすべての言及に注釈を付ける際に、同一指示レゾルバおよび/または依存関係パーサからの注釈に依拠し得る。また、たとえば、いくつかの実装形態では、同一指示レゾルバは、同じエンティティへの参照をクラスタ化する際に、依存関係パーサからの注釈に依拠し得る。いくつかの実装形態では、特定の自然言語入力を処理する際に、自然言語プロセッサ122の1つまたは複数の構成要素は、以前の関連入力、および/または特定の自然言語入力の外部の他の関連データを使用して、1つまたは複数の注釈を決定し得る。たとえば、自動アシスタントとのダイアログにおけるユーザの最初のメッセージが「彼らは明日の正午に関してアポイントメントがありますか」であってよく、ユーザの後続のメッセージが「その時に関してそれを登録してください」であってよい。「その時に関してそれを登録してください」を処理する際に、同一指示レゾルバは、「彼らは明日の正午に関してアポイントメントがありますか」という、以前の入力を利用して、「それ」を「アポイントメント」に転換し得、「その時」を「明日の正午」に転換し得る。
【0038】
ユーザ属性エンジン124は、自動メッセージングシステム120とのダイアログに関与されかつ/または自動メッセージングシステム120がその人とのダイアログを起動し得るユーザの、1つまたは複数の属性を決定し、自動メッセージングシステム120の1つまたは複数の他の構成要素にそれらの属性を提供する。たとえば、ユーザに割り当てるべきタスクを決定する際に、タスク用の1つまたは複数のパラメータに対する値を決定する際に、ユーザとのダイアログをいつ起動すべきかを決定する際に、1人もしくは複数のユーザとのダイアログのための出力を生成する際に、かつ/またはユーザに提供された自然言語出力を翻訳すべきかどうかを決定する際に、自動メッセージングシステム120の他の構成要素によって属性が利用され得る。ユーザ属性エンジン124は、1つまたは複数のユーザ属性を記憶し得るユーザ属性データベース152と通信している。様々な実装形態では、ユーザ属性エンジン124および/またはユーザ属性データベース152は、クライアントコンピューティングデバイス106
1〜N上に全体的にまたは部分的に実装されてよく、かつ/またはクライアントコンピューティングデバイス106
1〜Nによって提供されたデータに基づいて1つまたは複数のユーザ属性を決定し得る。ユーザ属性エンジン124によって決定され得るユーザ属性のいくつかの例は、(たとえば、GPSまたは他のロケーションデータに基づく)ユーザの現在のロケーション、ユーザの過去のロケーション(たとえば、ユーザの「自宅」、ユーザによって以前に訪問されたロケーション)、ユーザの言語、(たとえば、ユーザの電子カレンダーに基づく)ユーザの時間制約、および(たとえば、複数のインターネットサービスにわたるユーザ活動に基づく)ユーザのユーザプロファイルを含む。
【0039】
タスクエンジン126は、ユーザのためのタスクを識別し、そのタスクに関係する情報(たとえば、タスクのためのアクションおよび/または1つもしくは複数のサービスエンティティの識別子、タスク用のパラメータの1つまたは複数の所定の値)をメッセージ生成エンジン130に提供し、エンジン130がユーザとのタスク関連ダイアログをいつ起動するのが適切であるかという表示を、メッセージ生成エンジン130に随意に提供する。タスクエンジン126は、タスクデータベース154、ユーザ属性エンジン124によって提供されるユーザ属性、および/またはユーザによって自動メッセージングシステム120に提供された過去の自然言語入力などの、様々なリソースのうちの1つまたは複数を利用して、ユーザのためのタスクを決定し得る。
【0040】
タスクデータベース154は、1つまたは複数の非一時的コンピュータ可読媒体上に設けられてよく、各々が少なくとも1つのアクションおよびアクションに関連する少なくとも1つのエンティティを示す、複数のタスクを規定し得る。タスクのいくつかの例は、政府機関とのアポイントメントをスケジュールすること、企業にサービスを要求すること、企業に製品を注文すること、レストランにおいて食べ物を注文すること、タクシーによる輸送を取得すること、顧客と会うこと、用役提供をセットアップすること、映画チケットを買うことなどを含む。タスクは、タスクデータベース154の中で様々なレベルの粒度を用いて規定され得る。たとえば、タスクは、「任意の政府機関との任意のアポイントメントをスケジュールする」として、またはより狭く「特定の政府機関とのアポイントメントをスケジュールする」もしくは「特定の政府機関との特定のタイプのアポイントメントをスケジュールする」として規定されてよい。いくつかの実装形態では、タスクデータベース154の1つまたは複数のタスクは各々、1人または複数の特定のユーザに関連付けられてよく、かつ/あるいはタスクデータベース154の1つまたは複数のタスクは、タスクをインスタンス化し得る1つまたは複数の特定の基準に関連付けられてよい。いくつかの実装形態では、タスクデータベース154のすべてまたは態様は、クライアントコンピューティングデバイス106
1〜Nのうちの1つまたは複数の一部として組み込まれてよい。
【0041】
いくつかの実装形態では、タスクエンジン126は、ユーザのためのタスクを、そのタスクがすでにタスクデータベース154の中でユーザに関連付けられていることに基づいて識別し得る。たとえば、タスクデータベース154は、ユーザにとって特有であり、ユーザによって利用されるクライアントコンピューティングデバイス106
1〜Nのうちの1つまたは複数を介してユーザによって実行される1つまたは複数のアクションなどの、ユーザによるものでありかつ/またはユーザを対象とする、1つまたは複数のコンピューティングベースアクションに応答して作成され得る、1つまたは複数のエントリを含み得る。たとえば、タスクデータベース154は、1つまたは複数のカレンダーエントリ、リマインダエントリ、および/またはユーザにとって個人的であり(たとえば、ユーザの許可なく他のユーザにとってアクセス可能でなく)、コンピューティングデバイスの1つまたは複数のアプリケーション(たとえば、カレンダーアプリケーション)とのユーザによる対話を介してユーザによって故意に作成され得る、他のエントリを含み得る。
【0042】
また、たとえば、タスクデータベース154は、ユーザによって故意には作成されないが、クライアントコンピューティングデバイス106
1〜Nのうちの1つまたは複数を介してユーザによって実行される1つまたは複数のアクションに基づいて、1つまたは複数のコンピューティングデバイスによって推論的に作成される、1つまたは複数のエントリを含み得る。たとえば、「私はどのようにして古い家具を処分すべきか」、「だれが家具を集荷するのか」、および「家具撤去」という検索などの、古い家具を撤去することに関係する複数のインターネット検索をユーザが実行したと想定する。そのような例では、家具撤去タスクのためのエントリが、ユーザがエントリを故意に作成することなく、タスクデータベース154の中でユーザに対して随意に作成され得る。また別の事例として、タスクデータベース154は、ユーザによって故意には作成されないが、電子メール、テキストメッセージ、またはユーザへ送られた他の通信の内容に基づいてなど、ユーザを対象とする1つまたは複数のコンピューティングアクションに基づいて作成される、1つまたは複数のエントリを含み得る。
【0043】
いくつかの実装形態では、タスクエンジン126は、タスクがタスクデータベース154の中でユーザにすでに関連付けられていることなく、ユーザのためのタスクを識別し得る。たとえば、いくつかの実装形態では、タスクデータベース154は、タスクをインスタンス化し得る1つまたは複数の基準に関連付けられているタスクを含み得る。タスクエンジン126は、それらの基準とユーザ属性エンジン124によって提供されるユーザ属性との間の適合に基づいて、それらのタスクのうちの1つをユーザのためのタスクとして決定し得る。たとえば、タスクデータベース154は、レストランにいること、およびユーザによって発話される言語でなくかつ/またはユーザの1次言語でない、1次言語を伴うロケーションにいることという基準に関連付けられている、「食べ物を注文すること」というタスクを含み得る。タスクエンジン126は、ユーザ属性エンジン124によって提供されるユーザ属性が、ユーザの現在のロケーションがレストランの中であることと、現在のロケーションがユーザによって発話されない言語を伴う地理的エリアの中であることとを示すことに基づいて、ユーザに対して「食べ物を注文すること」タスクを識別し得る。別の例として、タスクデータベース154は、特定の都市への新たな移転者であるという基準に関連付けられている、無料廃品撤去をその特定の都市にスケジュールするというタスクを含み得る。タスクエンジン126は、ユーザ属性エンジン124によって提供されるユーザ属性が、ユーザがその特定の都市に最近移転したことを示すことに基づいて、「無料廃品撤去をスケジュールすること」タスクを識別し得る。また別の例として、タスクデータベース154は、その特定の都市への新たな訪問者であるという基準に関連付けられている、特定の都市の中で地下鉄チケットを購入するというタスクを含み得る。タスクエンジン126は、ユーザ属性エンジン124によって提供されるユーザ属性が、ユーザが特定の都市の中に存在するとともに特定の都市を以前に訪問していないことを示すことに基づいて、「地下鉄チケットを購入する」タスクを識別し得る。
【0044】
翻訳エンジン128は、ユーザによって提供された自然言語入力を別の言語に翻訳し得、かつ/またはメッセージ生成エンジン130によって生成された自然言語出力を、出力の受け手ユーザによって発話される言語(たとえば、受け手ユーザのネイティブ言語)に翻訳し得る。いくつかの実装形態では、翻訳エンジン128は、ユーザ属性エンジン124によって提供される1つまたは複数のユーザ属性を利用して、ユーザのネイティブ言語などの、ユーザによって発話される言語を決定し得る。
【0045】
いくつかの実装形態では、メッセージ生成エンジン130は、ユーザの関連するクライアントコンピューティングデバイスを介して、ユーザとのタスク関連ダイアログを起動し、タスクがユーザに割り当てられることを識別することに基づいてダイアログを起動する。たとえば、メッセージ生成エンジン130は、タスクエンジン126によって提供される出力が、タスクがユーザのタスクであることを示すことに基づいて、タスクに関係するダイアログを起動し得る。翻訳エンジン128に関して説明したように、様々な実装形態では、メッセージ生成エンジン130は、翻訳エンジン128を介してユーザとのダイアログに関与し得る。たとえば、エンジン128は、メッセージ生成エンジン130によって生成された自然言語出力を、それがユーザに提示される前に翻訳し得、かつ/またはユーザによって定式化された自然言語入力を、それがメッセージ生成エンジン130に提供される前に、かつ/もしくはタスクを起動するためのサービスエンティティとの通信の一部としてそれがサービスエンティティに提供される前に翻訳し得る。
【0046】
メッセージ生成エンジン130は、タスクに関係する追加情報をユーザに提供するための、かつ/またはダイアログ中に提供されるユーザ入力に基づいてタスクの1つもしくは複数のパラメータに対する値を決定するための、タスク関連ダイアログを起動し得る。いくつかの実装形態では、メッセージ生成エンジン130は、タスク用の必要なかつ/または所望のパラメータに対する値をユーザから抽出するように構成されるとともに、ダイアログ中でのユーザの応答に基づいてダイアログ中に適合され得る、質問または他のプロンプトをダイアログ中に生成し得る。
【0047】
メッセージ生成エンジン130は、ユーザに情報を要請するための質問または他のプロンプトを生成する際に、1つまたは複数のリソースを利用する。たとえば、メッセージ生成エンジン130は、ダイアログ中でのユーザの現在および/または過去の自然言語入力、自然言語プロセッサ122によって提供されるその入力の注釈、ユーザ属性エンジン124によって提供されるユーザ属性、タスクエンジン126によって提供されるタスクパラメータまたは他のタスク情報に対する値、エンティティプロトコルデータベース156のエンティティプロトコル、ならびに/あるいはローカル言語データベース158の1つまたは複数のエントリを利用し得る。メッセージ生成エンジン130は、ダイアログ中にユーザによって提供される自然言語入力によって、タスク用のどんなパラメータが有効に指定されているのかを決定するとともに、タスクに関連するそれらのパラメータに対する値を記憶する、タスクパラメータモジュール132を含み得る。メッセージ生成エンジン130は、そのような記憶された値を利用して、そのタスクに対してすでに有効に指定されている、タスク用の任意のパラメータを指定するようにユーザを促す自然言語出力の生成を防止し得る。タスクパラメータモジュール132は、タスクおよびタスク用のパラメータの値(タスクエンジン126によって決定されかつ/またはダイアログ中に決定される、パラメータに対する値)を、タスクの実行を起動すべき1つまたは複数の他のコンピューティングシステムにさらに通信し得る。
【0048】
エンティティプロトコルデータベース156は、1つまたは複数の非一時的コンピュータ可読媒体上に設けられてよく、各々がタスクの1つもしくは複数のエンティティおよび/または1つもしくは複数のアクションにとって適用可能な複数のプロトコルを規定する。各プロトコルは、タスクの関連するアクションを実行するための、かつ/または関連する1つもしくは複数のサービスエンティティとともに関連するアクションを実行するための、1つまたは複数の必要なかつ/または所望のパラメータを規定する。たとえば、第1のプロトコルは、レストラン予約アクションに関連する概略的プロトコルであってよく、予約を採用するすべてのレストランに関連付けられてよい。第1のプロトコルは、予約の日付、予約の時刻、および予約のための人数などの、アクションにとって必要なパラメータを規定し得る。また、たとえば、第2のプロトコルは、レストラン予約アクションに関連する第2のプロトコルであってよく、特定のレストランなどの、予約を採用するレストランのサブセットに関連付けられてよい。第2のプロトコルは、ユーザが屋内座席を要望するのかそれとも屋外座席を要望するのか、ブースかそれともテーブルか、ユーザは食事制限があるのかどうかなどの、特定のレストランにとって必要なかつ/または所望のパラメータを規定し得る。
【0049】
ローカル言語データベース158は、1つまたは複数の非一時的コンピュータ可読媒体上に設けられてよく、1つまたは複数の地理的領域および/または言語の各々に対して、その地理的領域および/または言語において会話的に利用される言語セグメント(たとえば、文、句、および/または用語)、ならびに随意に、それらの言語セグメントに関連付けられているタスクを規定する、エントリを含む。たとえば、米国内の地理的領域に対するエントリは、タクシー運転手から輸送を取得するというタスクなどの1つまたは複数のタスクにすべてが関連する、「私は[ロケーション]まで乗車したい」、「[ロケーション]までの推定料金はいくらか」、「ご乗車ありがとうございます」というエントリを含み得る。また、たとえば、米国内の地理的領域に対するエントリは、レストランを訪問するタスク、食べ物を注文するタスク、および/または他のタスクに関連付けられている、「私は[食べ物]を注文したい」というエントリ、レストランを訪問するタスク、サービスエンティティを訪問するタスク、および/または他のタスクに関連付けられている、「トイレがどこにあるのかを私に教えて頂けますか」というエントリなどのエントリを含み得る。先行する例における括弧「[]」の中の語が、そのクラスの説明を用いてかつ/またはそのクラスのメンバーである特定の語を用いて、メッセージ生成エンジン130によって「記入され」得るとともに、ユーザによって提供される自然言語入力に基づいて決定され得る、語のクラスを示すことに留意されたい。ローカル言語データベース158の言語セグメントは、テキストセグメントを含んでよく、「.wav」ファイル、「.mp3」ファイル、「.mpeg」ファイルなどの可聴ファイルおよび/もしくは可聴ファイルへのリンク、ならびに/またはコンピューティングデバイスによって実行されたとき、対応する音響出力をコンピューティングデバイスに生成させる他のフォーマットでのファイルも含んでよい。
【0050】
メッセージ生成エンジン130は、タスクに関係するダイアログを起動しかつ/または存続させる際にユーザに提供すべきコンテンツを決定する際に、ローカル言語データベース158のエントリを利用し得る。たとえば、より詳細に本明細書で説明するように、ユーザの所与のタスクに対して、メッセージ生成エンジン130は、データベース158の中でそのタスクに関連付けられているとともに、ユーザの現在のロケーションに関連付けられておりかつ/またはユーザの現在のロケーションにおける言語に関連付けられている、1つまたは複数の言語セグメントを識別し得る。メッセージ生成エンジン130は、タスクに関係するユーザとのダイアログを起動する際に提供されるコンテンツの一部として、かつ/またはユーザとのタスク関連ダイアログの存続中に提供される追加コンテンツの一部として、それらの言語セグメントを可聴的かつ/または視覚的にユーザに提示し得る。
【0051】
次に
図2Aおよび
図2Bを参照すると、自動メッセージングシステム120およびメッセージ交換クライアント107
1の様々な構成要素の追加説明が提供される。
図2Aおよび
図2Bのいくつかの説明が、
図3Aからの例を用いて提供される。
図3Aは、本明細書で説明する実装形態による、クライアントコンピューティングデバイス106
1のユーザと自動メッセージングシステム120との間に出現し得るダイアログの一例を表示スクリーン140が表示している、
図1のコンピューティングデバイス106
1を示す。詳細には、ダイアログは、各々が本明細書で説明する実装形態による自動メッセージングシステム120によって生成され得るタスク関連コンテンツ390A、390B、390C、および390Dを含み、ユーザ入力380Aおよび380Bを含む。表示スクリーン140は、仮想キーボードを介してユーザ入力を生成するためにユーザが選択し得るテキスト応答インターフェース要素384、およびマイクロフォンを介してユーザ入力を生成するためにユーザが選択し得る音声応答インターフェース要素385をさらに含む。表示スクリーン140はまた、コンピューティングデバイス106
1に1つまたは複数のアクションを実行させるためにユーザによって対話され得るシステムインターフェース要素381、382、383を含む。
【0052】
図2Aは、ユーザのタスク202に基づいて、ユーザのメッセージ交換クライアント107
1にタスク関連コンテンツ203Aを提供して、メッセージ交換クライアント107
1を介したユーザとのダイアログを起動することの一例を示す。
【0053】
図2Aにおいて、タスクエンジン126は、タスクデータベース154に基づいて、かつ/またはユーザ属性エンジン124によって提供される1つもしくは複数のユーザ属性201に基づいて、ユーザのタスク202を識別する。タスクエンジン126は、タスク202をメッセージ生成エンジン130に提供する。
【0054】
実施例として、タスクエンジン126が、「家具を撤去すること」というアクションを示すとともにアクションのための「サニーベール市(the city of Sunnyvale)」という特定のサービスエンティティを示す、「古い家具を撤去すること」というタスク202を決定することを想定する。実施例のいくつかの実装形態では、タスクエンジン126は、それがタスクデータベース154の中でユーザに関連付けられていることに基づいて、かつ/またはユーザ属性エンジン124によって提供されるユーザ属性201に基づいて、タスクを識別し得る。
【0055】
たとえば、ユーザが、「私はどのようにして家具を処分すべきか」、「だれが家具を集荷するのか」、および「家具撤去」という検索などの、家具を撤去することに関係する複数の検索を、別個の検索エンジンにサブミットしたと想定する。そのような例では、概略的な家具撤去タスクは、それらの検索に基づいて、タスクデータベース154の中でユーザに随意に関連付けられ得る。実施例のいくつかの実装形態では、タスクエンジン126は、ユーザ属性エンジン124によって提供されるユーザ属性201に基づいて、サニーベール市を家具撤去タスクのための特定のサービスエンティティとして識別し得る。たとえば、タスクエンジン126は、ユーザがサニーベール市の居住者であることを、ユーザ属性201に基づいて決定し得、サニーベール市に対する家具撤去タスクが、その特定の都市の居住者であるという必須の基準に関連付けられていることを、タスクデータベース154および/または他のリソースに基づいてさらに決定し得る。また、たとえば、タスクエンジン126は、ユーザがサニーベール市への新たな移転者であることを、ユーザ属性201に基づいて決定し得、サニーベール市に対する家具撤去タスクが、その特定の都市への新たな移転者であるという随意の基準に関連付けられていることを(たとえば、新たな移転者はまだ都市のサービスをよく知らないことがあるので)、タスクデータベース154および/または他のリソースに基づいてさらに決定し得る。ユーザ属性201と、サニーベール市に対する家具撤去タスクにとっての基準との間の適合に基づいて、タスクエンジン126は、タスクをユーザのためのタスクとして識別し得る。
【0056】
メッセージ生成エンジン130は、タスク202を利用して、タスク関連コンテンツ203Aを生成する際に使用するための、エンティティプロトコルデータベース156からのエンティティプロトコル、および/またはローカル言語データベース158からの言語セグメントを識別する。いくつかの実装形態では、タスク関連コンテンツ203Aは、ユーザがタスクを実行する際に助けを希望するかどうかを決定する際に(たとえば、「あなたは[タスク]を実行する必要があるようです。私がお手伝いすることを希望しますか」という自然言語出力)、かつ/またはタスク202用の必要なかつ/もしくは所望のパラメータを決定する際に(たとえば、「あなたは[タスク]を実行する必要があるようです。私がお手伝いできます。その場合、[タスクパラメータ]を私に知らせてください」という自然言語出力)、使用するためのユーザインターフェース入力をユーザに要請するためのプロンプトである自然言語出力などの、自然言語出力である。
【0057】
タスク関連コンテンツ203Aは、クライアントコンピューティングデバイス106
1のユーザインターフェース出力デバイスを介して可聴的かつ/または視覚的にユーザに提示するために、メッセージ交換クライアント107
1に提供される。いくつかの実装形態では、タスク関連コンテンツ203Aは自然言語出力であり、その出力は翻訳エンジン128によってメッセージ交換クライアント107
1のユーザの言語に翻訳される。それらの実装形態では、翻訳された出力が、メッセージ交換クライアント107
1に提供される。いくつかの他の実装形態では、メッセージ交換クライアント107
1は、翻訳エンジン128を組み込んでよく、翻訳を実行し得る。
【0058】
いくつかの実装形態では、メッセージ生成エンジン130は、タスク202によって示されるアクションおよび/またはエンティティを利用して、自動メッセージを生成する際に利用するためのエンティティプロトコルを決定する。たとえば、レストラン候補エンティティに対するレストラン予約アクションを示す「レストラン予約を行うこと」タスクに対して、エンジン130は、予約を行うためにすべてのレストランにとって適用可能な概略的エンティティプロトコルを識別し得る。概略的エンティティプロトコルは、それがエンティティプロトコルデータベース156の中で「レストラン予約を行うこと」アクションおよび/または「レストラン」エンティティに割り当てられていることに基づいて、識別され得る。概略的エンティティプロトコルは、予約の日付、予約の時刻、予約のための人数、および予約のためのレストランなどの、タスクを実行するための1つまたは複数の必要なかつ/または所望のパラメータを規定し得る。エンジン130は、それらのパラメータのうちの1つまたは複数に関する情報を要請するためのタスク関連コンテンツ203Aを生成し得る。いくつかの実装形態では、概略的エンティティプロトコルおよび/または他のプロトコルのパラメータのうちの1つまたは複数は、それらのパラメータに対するプロンプトに含めるためのテキストを含み得るか、または別の方法で示し得る。たとえば、予約のための人数に関係するパラメータは、「いくつに対して」または「何名」などのテキストを含み得る。
【0059】
いくつかの実装形態では、メッセージ生成エンジン130は、もしあれば、どんなパラメータがタスク202によってすでに指定されているのかを決定する、タスクパラメータモジュール132を含む。たとえば、タスク202の実行のための特定のサービスエンティティなどの、すでに指定された1つまたは複数のパラメータに対する値を用いて、タスクエンジン126によってタスク202が提供され得る。メッセージ生成エンジン130は、すでに指定されたパラメータを利用して、すでに指定されたパラメータを指定するようにユーザを促すタスク関連コンテンツ203Aの生成を防止し得る。
【0060】
実施例を続けると、メッセージ生成エンジン130は、「古い家具を撤去すること」というタスク202に応答して、「家具を撤去すること」というアクションを示すとともにアクションのための「サニーベール市」という特定のサービスエンティティを示す、
図3Aのタスク関連コンテンツ390Aを生成し得る。いくつかの実装形態では、メッセージ生成エンジン130は、エンティティプロトコルデータベース156のプロトコルに基づいてコンテンツ390Aを生成し得る。たとえば、データベース156は、「家具を撤去すること」というアクションに関連付けられるとともに「サニーベール市」という特定のサービスエンティティに関連付けられた、特定のエンティティプロトコルを含み得る。それらの実装形態のうちのいくつかでは、プロトコルは、コンテンツ390Aの自然言語テキストの一部または全部、およびユーザとのダイアログを起動するためにタスクに関係するテキストが提供されるべきであるという表示を含み得る。コンテンツ390Aは
図3Aにおいて英語で示されるが、いくつかの実装形態では、コンテンツ390Aは翻訳エンジン128によって別の言語に翻訳されてよく、翻訳がコンテンツ390Aとしてユーザに提供される。
【0061】
図2Bは、タスク202(
図2A)に基づいて(たとえば、タスクに基づいて選択されるエンティティプロトコルに基づいて)、かつダイアログの存続中にユーザによって提供される自然言語入力204に基づいて、追加タスク関連コンテンツ203Bを生成することによって、
図2Aにおいて起動されたダイアログを存続させることの一例を示す。追加タスク関連コンテンツ203Bは、視覚的かつ/または可聴的にユーザに提示するために、メッセージ交換クライアント107
1に提供される。
【0062】
図2Bにおいて、
図2Aのタスク関連コンテンツ203Aに応答して、ユーザは、コンピューティングデバイス106
1の1つまたは複数のユーザインターフェース入力デバイスを利用して、応答性自然言語入力204をメッセージ交換クライアント107
1に提供し、メッセージ交換クライアント107
1は、自然言語入力204を自然言語プロセッサ122へ送信する。自然言語入力204は、本明細書で説明するような自由形式入力であってよく、たとえば、コンピューティングデバイスの物理キーボードもしくは仮想キーボードを介してユーザによって提供されるタイプ入力、またはユーザによってコンピューティングデバイスのマイクロフォンに提供される発話入力であってよい。自然言語入力204が発話入力である実装形態では、自然言語入力204は、コンピューティングデバイスによってかつ/または自然言語プロセッサ122によって、テキスト入力に随意に転写され得る。
【0063】
実施例を続けると、自然言語入力204は、
図3Aのユーザ入力380Aによって図示したような「もちろん。2脚のソファと4脚の椅子があります。」であってよく、-タスク関連コンテンツ390Aを提供することによってメッセージ生成エンジン130によって起動されたダイアログの存続中に、ユーザによって提供され得る。
【0064】
自然言語プロセッサ122は、自然言語入力204を処理し、自然言語入力の様々な注釈を生成する。自然言語プロセッサ122は、注釈付き出力(たとえば、自然言語入力204の用語および生成された注釈)205をメッセージ生成エンジン130に提供する。
【0065】
実施例を続けると、自然言語入力204は、
図3Aのユーザ入力380Aによって図示したような「もちろん。2脚のソファと4脚の椅子があります。」であってよく、自然言語プロセッサ122は、「もちろん。」に肯定的応答として注釈を付けてよく、「ソファ」および「椅子」に家具エンティティとして注釈を付けてよく、「2」に「ソファ」に関連する数量として、かつ「4」に「椅子」に関連する別個の数量として注釈を付けてよい。自然言語プロセッサ122は、注釈付き入力205として、それらの用語および/または注釈のうちの1つまたは複数を提供し得る。
【0066】
メッセージ生成エンジン130は、注釈付き入力205、およびエンティティプロトコルデータベース156からのエンティティプロトコル、ならびに/または追加タスク関連コンテンツ203Bを生成する際に使用するためのローカル言語データベース158からの言語セグメントを利用する。たとえば、メッセージ生成エンジン130は、注釈付き入力205を分析して、注釈付き入力205がさらなるタスク関連コンテンツに対するユーザの要望を示すかどうかを決定し得る。たとえば、入力205がさらなるタスク関連コンテンツに対する要望を示す場合、メッセージ生成エンジン130は、
図2Aにおいて利用されたエンティティプロトコルを利用して、エンティティプロトコルによって規定される1つまたは複数の所望のかつ/または必要なパラメータに対する値を提供するようにユーザを促す追加タスク関連コンテンツ203Bを生成し得る。本明細書で説明するように、タスクパラメータモジュール132はまた、もしあれば、アクション用のどんなパラメータが自然言語入力204によって有効に指定されているのか(かつ/またはタスク202によってすでに指定されたのか)を決定し得、それらのパラメータに対する指定された値を記憶し得る。メッセージ生成エンジン130は、モジュール132の決定を利用して、それらのパラメータを再び指定するようにユーザを促す追加タスク関連コンテンツ203Bの生成を防止し得る。たとえば、メッセージ生成エンジン130が、「アポイントメントの日付」に対するパラメータを含むパラメータを規定するプロトコルを利用する場合、モジュール132は、特定の日付、および特定の日付がそのパラメータにとって有効であることを自然言語入力204が示す場合、そのパラメータに対してその特定の日付を割り当ててよい。割当てに基づいて、そのパラメータはエンジン130によって無視されてよく、代わりに追加タスク関連コンテンツ203Bが他のパラメータに基づいて生成されてもよい。
【0067】
実施例を続けると、「もちろん。2脚のソファと4脚の椅子があります。」という受け取られた自然言語入力204に応答して、メッセージ生成エンジン130は、「申し訳ありませんが収集ごとに2つの物品のみ可能です。」という追加タスク関連コンテンツ203Bを生成し得る。いくつかの実装形態では、エンジン130は、タスクパラメータモジュール132によって提供される入力に基づいてコンテンツ203Bを生成し得る。たとえば、モジュール132は、注釈付き入力205を利用して、2つの家具物品という最大値を有する(
図2Aにおいて利用されたプロトコルの)パラメータに対して、6つの家具物品が自然言語入力204において指定されると決定し得、-パラメータに対する指定された値が有効でないという表示をメッセージ生成エンジン130に提供し得る。メッセージ生成エンジン130は、プロトコル用のパラメータに基づいて、かつプロトコルにおけるそのパラメータに対して指定された最大値に基づいて、コンテンツ390Bを生成し得る。
【0068】
追加タスク関連コンテンツ203Bは、クライアントコンピューティングデバイス106
1のユーザインターフェース出力デバイスを介して可聴的かつ/または視覚的にユーザに提示するために、メッセージ交換クライアント107
1に提供される。いくつかの実装形態では、追加タスク関連コンテンツ203Bは自然言語出力であり、その出力は翻訳エンジン128によってメッセージ交換クライアント107
1のユーザの言語に翻訳される。それらの実装形態では、翻訳された出力は、メッセージ交換クライアント107
1に提供される。
【0069】
実施例を続けると、メッセージ生成エンジン130が追加タスク関連コンテンツ390Bを提供した後、
図2Bの例の別の事例が行われると想定する。詳細には、「わかりました。まずは2脚のソファにします。」を示す、
図3Aのさらなる追加ユーザ入力380Bをユーザが提供すると想定する。それらの実装形態のうちのいくつかでは、メッセージ生成エンジン130は、
図3Aのさらなる追加タスク関連コンテンツ390Cを生成し得る。たとえば、タスクパラメータモジュール132は、ユーザ入力380Bがプロトコルの家具物品パラメータの数量に対する有効な値(2つ)を示すと決定し得、メッセージ生成エンジン130は、割り当てられた有効な値をまだ有していない、プロトコルの「アポイントメント日付」パラメータに対するユーザ入力を要請するための、
図3Aの追加タスク関連コンテンツ390Cを生成し得る。
【0070】
追加タスク関連コンテンツ390Cは、プロトコルにおいて決定(たとえば、規定)され得るアポイントメント日付パラメータに関係する情報(たとえば、「あなたは在宅している必要があります。」)を含み、プロンプト(「どの日付を希望しますか。」)を含み、アポイントメント日付パラメータに対する有効な値(日付)としての選択可能な3つのオプションを含む。いくつかの実装形態では、メッセージ生成エンジン130は、サニーベール市に対する利用可能なサービス日付を反映するように更新される1つまたは複数のデータベースを参照することによって、サニーベール市に関連付けられたコンピューティングシステム、および/または人物へ通信を送るとともにそれに応答して日付を受信することによって、かつ/または他の技法を利用することによって、選択可能なオプションに対する日付を決定し得る。
【0071】
ユーザは、その対応するグラフィカル要素との対話を通じて(たとえば、グラフィカル要素をタップすることによって)、かつ/または「6月19日でお願いします」などのさらなる自然言語入力によって、選択可能なオプションのうちの1つを選択し得る。たとえば、
図3Aで示されるように、「6/19」を含むグラフィカル要素をユーザが「タップする」かまたは別の方法で選択すると想定する。そのさらなる入力は、メッセージ生成エンジン130に提供され得、メッセージ生成エンジン130は、タスク用のすべてのパラメータが有効な値を用いて指定されていることを、タスクパラメータモジュール132を介して決定し得る。それに応答して、メッセージ生成エンジン130は、タスクが起動されていること(「6月19日に関して予約しました」)を示し、タスクに関係するさらなる情報(「確認書が...受信箱」)を提供する、さらなる追加タスク関連コンテンツ390Dを提供し得る。いくつかの実装形態では、タスクパラメータモジュール132は、タスク用のパラメータとしての指定された値を1つまたは複数の他のコンピューティングシステム(たとえば、サニーベール市によって制御される)へ通信することによってタスクを起動して、それらのコンピューティングシステムによってかつ/またはそれらのコンピューティングシステムからユーザインターフェース出力を受け取る1人もしくは複数の人間によって、アクションの実行を起動し得る。
【0072】
図3Bは、本明細書で説明する実装形態による、クライアントコンピューティングデバイス106
1のユーザと自動メッセージングシステム120との間に出現し得るダイアログの別の例を表示スクリーン140が表示している、
図1のコンピューティングデバイス106
1を示す。詳細には、
図3Bは、
図3Aに示すものとは異なる自然言語ユーザインターフェース入力のユーザによる提供に応答して、
図3Aのダイアログがどのように異なっていることがあるのかという一例を示す。言い換えれば、それは、自動メッセージングシステム120が、ダイアログ中に提供されるユーザインターフェース入力に基づいてどのようにダイアログを適合させ得るのかという一例を示す。
【0073】
図3Bにおいて、自動メッセージングシステム120は、
図3Aのタスク関連コンテンツ390Aと同じであるタスク関連コンテンツ390Eを有するダイアログを起動する。
図3Bにおいて、ユーザは、「もちろん。」しか含まず
図3Aの入力380Bのような物品の数量を指定しない入力380Cを用いて応答する。自動メッセージングシステム120は、ユーザが
図3Aの入力380Bにおいて指定したように入力380Cでは無効な数量パラメータをユーザが指定しなかったので、
図3Aにおけるようなプロトコルの家具物品パラメータの数量に基づいて生成され得るが異なるコンテンツを含む、さらなるタスク関連コンテンツ390Fを提供する。
【0074】
図3Bにおいて、ユーザは、「1脚のソファと1台のテレビです。」という入力380Dを用いて応答する。メッセージ生成エンジン130は、「申し訳ありませんがテレビはお受けできません。ソファだけにしますか、それとも別の物品を追加しますか。」というさらなるタスク関連コンテンツ390Gを用いて応答する。この応答は、撤去に対してテレビが利用可能でないことを指定する、プロトコルのさらなるパラメータに基づいてよい。
【0075】
図3Bのダイアログは、さらなるユーザ入力380E、およびさらなるユーザ入力380Eに合ったさらなるタスク関連コンテンツ390Dに続く。
【0076】
次に
図4を参照すると、タスク関連コンテンツを生成するためにローカル言語データベース158を利用するメッセージ生成エンジン130のさらなる例が提供される。
図4は、本明細書で説明する実装形態による、クライアントコンピューティングデバイス106
1のユーザと自動メッセージングシステム120との間に出現し得るダイアログのまた別の例を表示スクリーン140が表示している、
図1のコンピューティングデバイス106
1を示す。
図4における表示スクリーン140は、仮想キーボードを介してユーザ入力を生成するためにユーザが選択し得るテキスト応答インターフェース要素484、およびマイクロフォンを介してユーザ入力を生成するためにユーザが選択し得る音声応答インターフェース要素485をさらに含む。表示スクリーン140はまた、コンピューティングデバイス106
1に1つまたは複数のアクションを実行させるためにユーザによって対話され得るシステムインターフェース要素481、482、483を含む。
【0077】
図4において、タスクエンジン126は、「食べ物を注文すること」というアクションを示すとともにアクションのための「レストラン」というサービスエンティティを示す、「レストランにおいて食べ物を注文すること」というタスクを識別している。いくつかの実装形態では、タスクエンジン126は、ユーザ属性エンジン124によって提供される、ユーザの1つまたは複数のユーザ属性が、そのタスクにとっての1つまたは複数の基準に適合すると決定することに基づいて、「レストランにおいて食べ物を注文すること」タスクを識別し得る。たとえば、「レストランにおいて食べ物を注文すること」タスクが、レストランにいることおよびユーザの言語(たとえば、ユーザの1次言語)とは異なる1次言語を伴う地理的領域にいることという、基準を含むと想定する。ユーザがレストランにいること、およびその1次言語がユーザのためのいかなる言語とも異なる地理的領域にレストランがあることを、ユーザのユーザ属性が示すとさらに想定する。たとえば、ユーザがスペイン語を話す国にいること、およびユーザによって発話される唯一の言語が英語であることを想定する。タスクエンジン126は、ユーザ属性とタスクにとっての基準との間のそのような適合に基づいて、「レストランにおいて食べ物を注文すること」タスクを識別し得る。
【0078】
メッセージ生成エンジン130は、「レストランにおいて食べ物を注文すること」というタスクを利用して、ユーザがタスクを実行する助けを希望することになるのかどうかを促すタスク関連コンテンツ490A(「注文するお手伝いを希望しますか。」)を生成する。
【0079】
図4のタスク関連コンテンツ490Aに応答して、ユーザは、コンピューティングデバイス106
1の1つまたは複数のユーザインターフェース入力デバイスを利用して、「はい、チキンを注文したいのです。」という応答性自然言語入力480Aを提供する。
【0080】
メッセージ生成エンジン130は、タスクおよび(ユーザ属性によって示されるような)ユーザの現在のロケーションを使用して、ローカル言語データベース158から「Me gustaria [食べ物] favor」という自然言語エントリを識別する。たとえば、その自然言語エントリは、それがデータベース158の中で「食べ物を注文すること」というタスクに関連付けられていること、およびユーザの現在のロケーションに対応する地理的領域に関連付けられていることに基づいて識別され得る。メッセージ生成エンジン130は、自然言語エントリに基づく自然言語出力を含むとともに、「pollo」が入力480Aで示された「チキン」の翻訳であることに基づいてプレースホルダー「[食べ物]」と置き換えられた「pollo」を含む、コンテンツ490Bを生成する。
【0081】
コンテンツ490Bは、ユーザによって選択されると「Me gustaria pollo favor」をコンピューティングデバイス106
1のスピーカーを介して可聴的にユーザに提示させる、選択可能なグラフィカル要素(「クリックして例を聞く」)をさらに含む。いくつかの実装形態では、「Me gustaria pollo favor」は、「Me gustaria pollo favor」という表示の代わりにまたはそれに加えて、自動的に可聴的にユーザに提示され得る。
【0082】
コンテンツ490Cは、ユーザによって選択されるとユーザによって提供される発話入力をコンピューティングデバイス106
1のマイクロフォンによってキャプチャさせる、選択可能なグラフィカル要素(「ここをクリックしてそれを言ってみる」)をさらに含む。発話入力は、それが「Me gustaria pollo favor」と一致するかどうかを決定するために、自動メッセージングシステム120および/または他の構成要素によって分析され得る。それが一致する場合、自動メッセージングシステム120は、さらなるタスク関連コンテンツ(図示せず)を介して、ユーザが正しく言語セグメントを復唱したことを示すフィードバックをユーザに提供し得る。それが一致しない場合、自動メッセージングは、さらなるタスク関連コンテンツ(図示せず)を介して、ユーザが言語セグメントを正しく復唱しなかったことを示し、正しく復唱されなかった用語を示し、かつ/もしくはその句を可聴的にユーザに提供し、かつ/またはその句を聞くための別の機会をユーザに与えるフィードバックをユーザに提供し得る。
【0083】
ローカル言語データベース158からのエントリを利用する特定の例が
図4に示されるが、多くの変形形態が企図される。たとえば、いくつかの実装形態では、ユーザのタスクの識別に応答して、自動メッセージングシステム120は、それらの句が提供されることをユーザが希望していることを確認するように最初にユーザを促すことなく、1つまたは複数のコンテキスト的に適切な「外国語」句を提供することによって、ダイアログを起動し得る。たとえば、
図4のダイアログの起動は、「あなたはレストランにいるようです。あなたが食べ物を注文したい場合、「Me gustaria, [あなたが希望する食べ物], favor」と言ってください。たとえば、チキンを注文するには「Me gustaria pollo favor」と言ってください。」であってよい。ダイアログの起動は、さらに随意に、少なくともいくつかのコンテンツを自動的に可聴的に提示してよく、かつ/またはコンテンツのうちの少なくともいくつかを復唱するためのユーザの試行を自動的に聞き取ってよい。
【0084】
別の例として、ユーザの1次言語とは異なる1次言語を伴う地理的領域の中のレストランにユーザがいることに基づいて(または、ユーザのカレンダーエントリが、ユーザがまもなくそのようなレストランにいることを示すことに基づいて)、タスクエンジン126は、「レストランの中で通信する」というもっと概略的なタスクを識別し得る。さらに、メッセージ生成エンジン130は、「gracias」(ありがとうございます)、「donde esta el bano」(トイレはどこですか)、「Me gustaria, [あなたが希望する食べ物], favor」(わたしは[あなたが希望する食べ物]を希望するのでお願いします)という言語セグメントなどの、そのタスクに関係する複数の言語セグメントをローカル言語データベース158から識別し得る。メッセージ生成エンジン130は、「レストランにおいて使用するための役に立つ現地語の句を聞きたいかどうかを知らせてください」というコンテンツを有するダイアログを起動してよい。肯定的ユーザ入力に応答して、メッセージ生成エンジン130は、識別された言語セグメント(たとえば、最も一般的なN個の言語セグメント)のうちの1つまたは複数を、それらの言語セグメントの英語の説明と一緒にユーザに提示してよい。
【0085】
ダイアログに関与するためのグラフィカルユーザインターフェースが
図3A、
図3B、および
図4に示され、本明細書におけるいくつかの他の例で説明されている。しかしながら、いくつかの実装形態では、自動メッセージングシステム120によって提供されるプロンプトは、必ずしもそれらのプロンプトを表示することなく、(ユーザのコンピューティングデバイスのスピーカーを介して)可聴的にユーザに伝達されてよい。その上、それらの実装形態のいくつかのバージョンでは、ユーザ入力は、ユーザが言語的ユーザインターフェース入力を提供することを介して提供されてよい。特定の一例として、いくつかの実装形態では、ユーザは、いかなるディスプレイも含まないコンピューティングデバイスを利用する自動メッセージングシステムとのダイアログに関与してよい。
【0086】
図5は、ユーザのタスクに基づいてユーザとのダイアログを起動すること、ダイアログ中にユーザによって提供される自然言語入力に基づいてダイアログを適合させること、およびダイアログ中に転換された1つまたは複数のパラメータを用いてタスクの実行を随意に起動することの、例示的な方法500を示すフローチャートである。便宜上、フローチャートの動作は、動作を実行するシステムを参照しながら説明される。このシステムは、自動メッセージングシステム120などの、様々なコンピュータシステムの様々な構成要素を含み得る。その上、方法500の動作は特定の順序で示されるが、このことは限定的であることを意図しない。1つまたは複数の動作が、並べ替えられてよく、省略されてよく、または追加されてよい。
【0087】
ブロック552において、システムは、ユーザのタスクを識別する。
【0088】
ブロック554において、システムは、ユーザのコンピューティングデバイスのユーザインターフェース出力デバイスを介してユーザに提示するためにタスクに合ったコンテンツを提供することによって、ユーザとのダイアログを起動する。いくつかの実装形態では、システムは、タスクに関連付けられている(たとえば、タスクによって示されるアクションおよび/またはエンティティに関連付けられている)プロトコルを識別し得、プロトコルに基づいてコンテンツを生成し得る。いくつかの実装形態では、システムは、タスクに関連付けられている1つまたは複数の言語セグメントを識別し得、言語セグメントに基づいてコンテンツを生成し得、かつ/またはユーザが言語セグメントに関係する追加タスクコンテンツを希望することになるのかどうかを決定するためのコンテンツを生成し得る。
【0089】
ブロック556において、システムは、ブロック554におけるコンテンツの提供に応答して、ユーザのコンピューティングデバイスの(または、ユーザの別のコンピューティングデバイスの)ユーザインターフェース入力デバイスを介してユーザによって定式化されている自然言語入力を受け取る。いくつかの実装形態では、自然言語入力は、ユーザインターフェース入力デバイスを介してユーザによって定式化された自由形式入力である。
【0090】
ブロック558において、システムは、タスクに合った、ブロック556において受け取られた自然言語入力に基づく、追加コンテンツを生成する。いくつかの実装形態では、システムは、ブロック554において随意に識別されたプロトコルなどの、タスクに関連付けられたプロトコルに基づいて、追加コンテンツを生成し得る。たとえば、システムは、プロトコルにおいて規定されたタスクパラメータに関係するユーザ入力を要請するための追加コンテンツを生成し得る。そのような例では、システムは、タスクに関係する追加コンテンツをユーザが要望することを示す、ブロック556において受け取られた自然言語入力に基づいて、追加コンテンツを生成し得、かつ/またはブロック556において受け取られた自然言語入力によって規定される有効な値を有しなかったタスクパラメータに基づいて、追加コンテンツを生成し得る。いくつかの実装形態では、ブロック554のコンテンツは、タスクに関連付けられた言語セグメントを含み、ブロック556の入力は、言語セグメントを口頭で発話するためのユーザによる試行であり、ブロック558の追加コンテンツは、ブロック556の入力の分析に基づく、試行を対象とするフィードバックである。
【0091】
ブロック560において、システムは、ユーザのコンピューティングデバイスのユーザインターフェース出力デバイスを介してユーザに提示するために、追加コンテンツを提供する。
【0092】
随意のブロック562において、システムは、追加コンテンツの提供に応答して、ユーザインターフェース入力デバイスを介してユーザによって定式化されたさらなる自然言語入力を受け取る。
【0093】
随意のブロック564において、システムは、ブロック552のタスク用の1つまたは複数のタスクパラメータ(たとえば、すべてのタスクパラメータまたはすべての必要なタスクパラメータ)が、ブロック552におけるタスクを用いて提供された値、ならびに/またはブロック556および/もしくは562においてユーザによって提供された自然言語入力に基づいて決定された値によって、転換されているかどうかを決定する。たとえば、システムは、タスクのためのプロトコルにおいて規定されるすべての必要なタスクパラメータに対して値が規定されているかどうかを決定してよい。
【0094】
タスクパラメータのすべてが転換されていないとシステムが決定する場合、システムは、ブロック566に進み、転換されていないタスクパラメータを転換するためのさらなる追加コンテンツを生成する。いくつかの実装形態では、追加コンテンツは、ブロック554および/または558において随意に決定されたプロトコルに基づく。たとえば、システムは、それらの特定のパラメータがブロック556および562において受け取られた入力によって指定されないことに鑑みて、ブロック554において決定されたプロトコル用の1つまたは複数の特定のパラメータを要請するための追加プロンプトを生成してよい。
【0095】
ブロック566において追加プロンプトを生成した後、システムは、次いで、ブロック560および562に進み、次いで、ブロック564において、ブロック552のタスク用の1つまたは複数のタスクパラメータ(たとえば、すべてのタスクパラメータまたはすべての必要なタスクパラメータ)が転換されているかどうかを、ブロック562の第2の反復において受け取られているまたさらなる入力に基づいて再び決定する。
【0096】
ブロック564において(ブロック564の第1の反復または後続の反復のいずれかにおいて)タスクパラメータが転換され得るとシステムが決定する場合、システムは随意のブロック568に進み、ここで、システムはタスクの実行を起動する。いくつかの実装形態では、システムは、1つまたは複数の転換済みパラメータに対する値と一緒に1つまたは複数の他のコンピューティングシステムへタスクを通信して、それらのコンピューティングシステムによってかつ/またはそれらのコンピューティングシステムからユーザインターフェース出力を受け取る1人もしくは複数の人間によって、タスクの実行を起動し得る。
【0097】
図6は、本明細書で説明する技法の1つまたは複数の態様を実行するために随意に利用され得る例示的なコンピューティングデバイス610のブロック図である。いくつかの実装形態では、クライアントコンピューティングデバイス160
1〜N、自動メッセージングシステム120、および/または他の構成要素のうちの1つまたは複数は、例示的なコンピューティングデバイス610の1つまたは複数の構成要素を備え得る。
【0098】
コンピューティングデバイス610は、通常、バスサブシステム612を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ614を含む。これらの周辺デバイスは、たとえば、メモリサブシステム625およびファイル記憶サブシステム626を含む、記憶サブシステム624、ユーザインターフェース出力デバイス620、ユーザインターフェース入力デバイス622、ならびにネットワークインターフェースサブシステム616を含み得る。入力および出力デバイスは、コンピューティングデバイス610とのユーザ対話を可能にする。ネットワークインターフェースサブシステム616は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイスの中の対応するインターフェースデバイスに結合されている。
【0099】
ユーザインターフェース入力デバイス622は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイの中に組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどの音響入力デバイス、および/または他のタイプの入力デバイスを含み得る。概して、「入力デバイス」という用語の使用は、コンピューティングデバイス610の中にまたは通信ネットワーク上に情報を入力するための、すべての可能なタイプのデバイスおよび方法を含むものとする。
【0100】
ユーザインターフェース出力デバイス620は、表示サブシステム、プリンタ、ファックス機械、または音響出力デバイスなどの非視覚的ディスプレイを含み得る。表示サブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または認識可能な画像を作成するためのいくつかの他のメカニズムを含み得る。表示サブシステムはまた、音響出力デバイスなどを介した非視覚的表示を提供し得る。概して、「出力デバイス」という用語の使用は、コンピューティングデバイス610からユーザまたは別の機械もしくはコンピューティングデバイスに情報を出力するための、すべての可能なタイプのデバイスおよび方法を含むものとする。
【0101】
記憶サブシステム624は、本明細書で説明するモジュールの一部または全部の機能性を提供するプログラミングおよびデータ構造を記憶する。たとえば、記憶サブシステム624は、
図5の方法の選択された態様を実行するための論理を含んでよい。
【0102】
これらのソフトウェアモジュールは、概して、プロセッサ614によって単独で、または他のプロセッサとの組合せで実行される。記憶サブシステム624の中で使用されるメモリ625は、プログラム実行中に命令およびデータを記憶するためのメインランダムアクセスメモリ(RAM)630、ならびに固定された命令が記憶される読取り専用メモリ(ROM)632を含む、いくつかのメモリを含むことができる。ファイル記憶サブシステム626は、プログラムおよびデータファイルのための永続的な記憶を提供することができ、ハードディスクドライブ、関連するリムーバブル媒体と一緒のフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、またはリムーバブル媒体カートリッジを含んでよい。いくつかの実装形態の機能を実施するモジュールは、記憶サブシステム624の中でまたはプロセッサ614によってアクセス可能な他の機械の中で、ファイル記憶サブシステム626によって記憶され得る。
【0103】
バスサブシステム612は、コンピューティングデバイス610の様々な構成要素およびサブシステムに、意図に応じて互いに通信させるためのメカニズムを提供する。バスサブシステム612は単一のバスとして概略的に示されるが、バスサブシステムの代替実装形態は複数のバスを使用してよい。
【0104】
コンピューティングデバイス610は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、様々なタイプのものであってよい。コンピュータおよびネットワークの絶え間なく変化する性質に起因して、
図6に示すコンピューティングデバイス610の説明は、いくつかの実装形態を示すための具体例としてのみ意図される。コンピューティングデバイス610の多くの他の構成が、
図6に示すコンピューティングデバイスよりも多数または少数の構成要素を有することが可能である。
【0105】
本明細書で説明するシステムがユーザについての個人情報を収集するかまたは個人情報を利用し得る状況では、ユーザは、プログラムまたは機能が、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的行為もしくは社会的活動、職業、ユーザの選好、またはユーザの現在の地理的ロケーションについての情報)を収集するかどうかを制御するための、またはユーザにとってより関連があり得るコンテンツをコンテンツサーバから受け取るべきかどうか、かつ/もしくはどのように受け取るべきかを制御するための、機会が提供され得る。また、いくつかのデータは、個人が特定できる情報が除去されるように、それが記憶または使用される前に1つまたは複数の方法で処置されてよい。たとえば、ユーザの識別情報は、個人が特定できる情報がユーザに対して決定できないように処置されてよく、またはユーザの地理的ロケーションは、ユーザの特定の地理的ロケーションが決定できないように、地理的ロケーション情報が取得される場所で(都市、郵便番号、または州レベルなどに)一般化されてよい。したがって、ユーザは、情報がユーザについてどのように収集および/または使用されるのかを制する制御を有してよい。
【0106】
いくつかの実装形態が本明細書で説明および図示されているが、機能を実行しかつ/または結果を取得するための様々な他の手段および/もしくは構造、ならびに/または本明細書で説明する利点のうちの1つまたは複数が利用されてよく、そのような変形形態および/または修正形態の各々は、本明細書で説明する実装形態の範囲内にあるものと見なされる。より一般的には、本明細書で説明するすべてのパラメータ、寸法、材料、および構成は、例示的であること、ならびに実際のパラメータ、寸法、材料、および/または構成が、教示が使用されるべき1つまたは複数の特定の適用例によって決まることを意図する。当業者は、慣例にすぎない実験を使用して、本明細書で説明する特定の実装形態の多くの均等物を認識し、または把握することができる。したがって、上記の実装形態が例としてのみ提示されること、ならびに添付の特許請求の範囲およびそれらの均等物の範囲内で、実装形態が特に説明および特許請求されるものとは別の方法で実践され得ることを理解されたい。本開示の実装形態は、本明細書で説明する各個々の特徴、システム、物品、材料、キット、および/または方法を対象とする。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が互いに矛盾しない場合、本開示の範囲内に含まれる。