(57)【要約】  会話サンプルに基づいて自然言語機械学習を使用してユーザ要求に応答する技術を説明する。一実施形態では、装置は、ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信するように動作可能なボットアプリケーションインタフェースコンポーネントと、対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するように動作可能な対話処理コンポーネントとを含み、対話サンプルリポジトリを提示することに応答して、自然言語機械学習コンポーネントからシーケンスモデルを受信し、シーケンスモデルに基づいてユーザ対ボット会話を実行することができる。他の実施形態が記載され請求される。
2019518292.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信するステップと、
前記対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するステップと、
前記対話サンプルリポジトリを提示することに応答して、前記自然言語機械学習コンポーネントからシーケンスモデルを受信するステップと、
前記シーケンスモデルに基づいてユーザ対ボット対話を実行するステップと、を含むコンピュータ実装方法。
【請求項２】
前記ユーザ対ボット会話を実行するステップは、前記シーケンスモデルを、ユーザ要求コンテキスト、ユーザ対ボット会話履歴、および１以上のユーザメッセージの意味分析情報に適用することを含む、請求項１に記載の方法。
【請求項３】
前記ユーザ対ボット会話を実行するステップは、クライアントデバイスからユーザメッセージを受信し、前記ユーザメッセージおよび前記シーケンスモデルに基づいて、ボットアクションを含むボット応答を生成するステップを含み、
前記ボットアクションをボットアプリケーションに送信するステップであって、前記ボットアクションは、ユーザ要求コンテキストに関連して前記ボットアプリケーションに送信されるステップと、
前記ボットアプリケーションから更新されたユーザ要求コンテキストを受信するステップとを更に含む、請求項１に記載の方法。
【請求項４】
前記ユーザ対ボット会話を実行するステップは、クライアントデバイスからユーザメッセージを受信し、前記ユーザメッセージおよび前記シーケンスモデルに基づいてボット応答を生成するステップを含み、前記方法は、
現在のユーザ要求コンテキストに関連して前記シーケンスモデルを用いて前記ユーザメッセージを処理することに基づいて更新されたユーザ要求コンテキストを生成するステップを更に含む、請求項１に記載の方法。
【請求項５】
前記ユーザ対ボット会話を実行するステップは、メッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換してユーザ要求コンテキストおよび推論されたユーザ要求アクションを生成するステップを含み、推論された前記ユーザ要求アクションが、アプリケーションプログラムインタフェース呼出しに基づいて定義され、前記アプリケーションプログラムインタフェース呼出しの１以上のパラメータが、前記ユーザ要求コンテキストに基づいて定義される、請求項１に記載の方法。
【請求項６】
前記ユーザ対ボット対話のサンプルの１以上は、開発者が起草したユーザ対ボット仮想対話を含み、前記方法は、
開発者コンソールを介して、開発者が起草した前記１以上のユーザ対ボット対話を受信するステップを更に含む、請求項１に記載の方法。
【請求項７】
前記ユーザ対ボット対話のサンプルの１以上は、使用ベースのユーザ対ボット対話を含み、前記方法は、
製造段階で実行されたユーザ対ボット会話から生成された１以上の製造ユーザ対ボット対話を受信するステップと、
開発者コンソールを介して前記１以上の製造ユーザ対ボット対話を表示するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボットの対話に関する開発者による１以上修正を受信して、前記使用ベースのユーザ対ボット対話を生成するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による検証を受信して、前記使用ベースのユーザ対ボット対話を生成するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による１以上の注釈を受信して、前記使用ベースのユーザ対ボット対話を生成するステップであって、開発者による前記１以上の注釈はコンテキスト更新注釈を含む、ステップと、
前記１以上の使用ベースのユーザ対ボット対話の前記開発者による検証を受信することに応答して、前記１以上の使用ベースのユーザ対ボット対話を前記対話サンプルリポジトリに含めるステップと、
開発者による前記１以上の注釈を、前記１以上の使用ベースのユーザ対ボット対話とともに前記対話サンプルリポジトリに含めるステップとを更に含む、請求項１に記載の方法。
【請求項８】
前記ユーザ対ボット会話を実行するステップは、
抽出された教師なし情報を１以上の推奨ボット応答に組み込むステップを含む、請求項１に記載の方法。
【請求項９】
プロセッサ回路と、
ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するように前記プロセッサ回路上で動作し、前記対話サンプルリポジトリを提示することに応答して、前記自然言語機械学習コンポーネントからシーケンスモデルを受信する対話処理コンポーネントと、
ユーザクライアントとのユーザメッセージ交換を実行して、前記シーケンスモデルに基づいてユーザ対ボット会話を実行するように動作可能なクライアント通信コンポーネントと、
ボットアプリケーションから前記対話サンプルリポジトリを受信しかつ前記ボットアプリケーションとのボット情報交換を実行して、前記シーケンスモデルに基づいて前記ユーザ対ボット会話を実行するように動作可能なボットアプリケーションインタフェースコンポーネントとを含み、
前記シーケンスモデルに基づいて前記ユーザ対ボット会話を実行することが、前記シーケンスモデルを、ユーザ要求コンテキスト、ユーザ対ボット会話履歴、１以上のユーザメッセージの意味分析情報、および前記１以上のユーザメッセージの抽出された教師なし情報に適用することを含む、装置。
【請求項１０】
前記ユーザクライアントとの前記ユーザメッセージ交換は、クライアントデバイスからユーザメッセージを受信することを含み、前記ユーザ対ボット会話は、前記ユーザメッセージおよび前記シーケンスモデルに基づくボット応答を含み、前記ボット応答は、ボットアクションを含み、
前記ボットアプリケーションインタフェースコンポーネントが前記ボットアクションを前記ボットアプリケーションに送信するように動作し、前記ボットアクションがユーザ要求コンテキストに関連して前記ボットアプリケーションに送信され、前記ボットアプリケーションから更新されたユーザ要求コンテキストを受信することを更に含む、請求項９に記載の装置。
【請求項１１】
前記ユーザ対ボット会話を実行することは、クライアントデバイスからユーザメッセージを受信し、前記ユーザメッセージおよび前記シーケンスモデルに基づいてボット応答を生成することを含み、
前記対話処理コンポーネントは、現在のユーザ要求コンテキストに関連して前記シーケンスモデルを用いて前記ユーザメッセージを処理することに基づいて、更新されたユーザ要求コンテキストを生成するように動作可能であることを更に含む、請求項９に記載の装置。
【請求項１２】
前記ユーザ対ボット会話を実行することは、メッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換して前記ユーザ要求コンテキストおよび推論されたユーザ要求アクションを生成することを含み、推論された前記ユーザ要求アクションが、アプリケーションプログラムインタフェース呼出しに基づいて定義され、前記アプリケーションプログラムインタフェース呼出しの１以上のパラメータが、前記ユーザ要求コンテキストに基づいて定義される、請求項９に記載の装置。
【請求項１３】
前記ユーザ対ボット対話のサンプルの１以上は、開発者が起草したユーザ対ボット仮想対話を含み、
開発者が起草した前記１以上のユーザ対ボット対話を受信するように動作可能な開発者コンソールを更に含む、請求項９に記載の装置。
【請求項１４】
前記ユーザ対ボット対話のサンプルの１以上は、使用ベースのユーザ対ボット対話を含み、
製造段階で実行されたユーザ対ボット会話から生成された１以上の製造ユーザ対ボット対話を受信し、開発者コンソールを介して前記１以上の製造ユーザ対ボット対話を表示し、前記開発者コンソールを介して、前記１以上の製造ユーザ対ボットの対話に関する開発者による１以上の修正を受信して、前記使用ベースのユーザ対ボット対話を生成し、前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による検証を受信して、前記使用ベースのユーザ対ボット対話を生成し、前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による１以上の注釈を受信して、前記使用ベースのユーザ対ボット対話を生成し、開発者による前記１以上の注釈はコンテキスト更新注釈を含むように動作可能な開発者コンソールと、
前記１以上の使用ベースのユーザ対ボット対話の前記開発者による検証を受信することに応答して、前記１以上の使用ベースのユーザ対ボット対話を前記対話サンプルリポジトリに含め、開発者による前記１以上の注釈を、前記１以上の使用ベースのユーザ対ボット対話とともに前記対話サンプルリポジトリに含めるように動作可能な対話処理コンポーネントとを更に含む、請求項９に記載の装置。
【請求項１５】
命令を含む少なくとも１つのコンピュータ可読記録媒体であって、前記命令が実行されるとシステムに、
ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信するステップと、
前記対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するステップと、
前記対話サンプルリポジトリを提示することに応答して、前記自然言語機械学習コンポーネントからシーケンスモデルを受信するステップと、
前記シーケンスモデルに基づいてユーザ対ボット会話を実行するステップであって、前記シーケンスモデルを、ユーザ要求コンテキスト、ユーザ対ボット会話履歴、１以上のユーザメッセージの意味分析情報、および前記１以上のユーザメッセージの抽出された教師なし情報に適用することを含むステップと、を行わせる、コンピュータ可読記録媒体。
【請求項１６】
前記ユーザ対ボット会話を実行するステップは、クライアントデバイスからユーザメッセージを受信し、前記ユーザメッセージおよび前記シーケンスモデルに基づいて、ボットアクションを含むボット応答を生成すステップを含み、前記命令が実行されるとシステムに、
前記ボットアクションをボットアプリケーションに送信するステップであって、前記ボットアクションは、ユーザ要求コンテキストに関連して前記ボットアプリケーションに送信されるステップと、
前記ボットアプリケーションから更新されたユーザ要求コンテキストを受信するステップとを更に行わせる、請求項１５に記載のコンピュータ可読記録媒体。
【請求項１７】
前記ユーザ対ボット会話を実行するステップは、クライアントデバイスからユーザメッセージを受信し、前記ユーザメッセージおよび前記シーケンスモデルに基づいてボット応答を生成するステップを含み、前記命令が実行されるとシステムに、
現在のユーザ要求コンテキストに関連して前記シーケンスモデルを用いて前記ユーザメッセージを処理することに基づいて更新されたユーザ要求コンテキストを生成するステップを更に行わせる、請求項１５に記載のコンピュータ可読記録媒体。
【請求項１８】
前記ユーザ対ボット会話を実行するステップは、メッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換して前記ユーザ要求コンテキストおよび推論されたユーザ要求アクションを生成するステップを含み、推論された前記ユーザ要求アクションが、アプリケーションプログラムインタフェース呼出しに基づいて定義され、前記アプリケーションプログラムインタフェース呼出しの１以上のパラメータが、前記ユーザ要求コンテキストに基づいて定義される、請求項１５に記載のコンピュータ可読記録媒体。
【請求項１９】
前記ユーザ対ボット対話のサンプルの１以上は、開発者が起草したユーザ対ボット仮想対話を含み、前記命令が実行されるとシステムに、開発者コンソールを介して、開発者が起草した前記１以上のユーザ対ボット対話を受信するステップを行わせる、請求項１５に記載のコンピュータ可読記録媒体。
【請求項２０】
前記ユーザ対ボット対話のサンプルの１以上は、使用ベースのユーザ対ボット対話を含み、前記命令が実行されるとシステムに、
製造段階で実行されたユーザ対ボット会話から生成された１以上の製造ユーザ対ボット対話を受信するステップと、
開発者コンソールを介して前記１以上の製造ユーザ対ボット対話を表示するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボットの対話に関する開発者による１以上の修正を受信して、前記使用ベースのユーザ対ボット対話を生成するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による検証を受信して、前記使用ベースのユーザ対ボット対話を生成するステップと、
前記開発者コンソールを介して前記１以上の製造ユーザ対ボット対話の開発者による１以上の注釈を受信して、前記使用ベースのユーザ対ボット対話を生成するステップであって、開発者による前記１以上の注釈はコンテキスト更新注釈を含む、ステップと、
前記１以上の使用ベースのユーザ対ボット対話の前記開発者による検証を受信することに応答して、前記１以上の使用ベースのユーザ対ボット対話を前記対話サンプルリポジトリに含めるステップと、
開発者による前記１以上の注釈を、前記１以上の使用ベースのユーザ対ボット対話とともに前記対話サンプルリポジトリに含めるステップとを更に行わせる、請求項１５に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、会話サンプルに基づいて自然言語機械学習を使用してユーザ要求に応答する技術に関する。
【背景技術】
【０００２】
ユーザは、メッセージングシステムにおいて、２人以上のユーザ間でテキストベースの会話で互いにメッセージをやりとりしながら互いに対話することができる。ユーザは、メッセージングシステムにおいて自身に関連付けられたユーザアカウントを有してもよく、ユーザアカウントは、ユーザのオンライン識別情報、ユーザに向けられたメッセージの宛先を提供し、一般にメッセージングシステムへのユーザのアクセスとその使用を調整する。ユーザは、モバイルデバイス（例えば、携帯電話）、デスクトップコンピュータ、ウェブブラウザ、専用のメッセージングアプリケーションなどを含む多様なエンドポイントからメッセージングシステムにアクセスすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ネットワーク接続されたコンピューティングデバイスは、人に対するコミュニケーションに参加するこれまでにない能力をユーザに提供することができる。人々は、自分の友達、家族、同僚、および他の仲間とのメッセージングのやりとりに参加することができる。その者達の連絡先とのユーザのメッセージ交換は、それぞれ異なるメッセージスレッド内で維持され得る。
【０００４】
これらのネットワーク接続されたコンピューティングデバイスは、そのデバイスのユーザにネットワークアクセス可能なサービスへのアクセスを提供することもできる。例えば、交通サービス、食事サービス、娯楽サービス、および他のサービスは、ウェブサイト、ウェブアプリケーション、クライアントアプリケーション、または他のネットワークアクセス技術を使用して、人々がクライアントデバイスを使用してサービスに参加できるようにすることが可能である。いくつかの娯楽またはメディアサービスのようないくつかの場合には、クライアントデバイスを介してサービスを手配するとともに配信することができる。例えば、音楽をクライアントデバイスを介して購入し、再生のためにクライアントデバイスに配信し得る。交通、食事、および個人的娯楽などの他の場合には、サービスは、クライアントデバイスを介して手配し得るが、クライアントデバイスの外部で実行される。例えば、同乗サービスは、クライアントデバイスを介して手配し得るが、車両およびドライバがユーザに同乗を提供することによって実行される。
【０００５】
場合によっては、ネットワークアクセス可能なサービスの使用は、複数の人物に関連し得る。特に、サービスへのユーザのアクセスが、メッセージングにも使用するクライアントデバイスである場合、ユーザは、メッセージングクライアント内のネットワークアクセス可能なサービスへの参加を、サービスが関係する他のユーザと共有することにより利益を得ることができる。したがって、メッセージスレッドは、他のユーザの連絡先とのユーザのオンラインソーシャル関係のハブとして作用することができ、メッセージスレッドは、メッセージングに使用される同じクライアントを介して要求、監視、または参加するサービスを組み込んでいる。
【０００６】
ユーザがメッセージングコンテキストを介してサービスと対話するのを助けるために、サービスは、メッセージングシステム内のメッセージングボットとしての役割を果たすことができる。メッセージングボットは、メッセージスレッドの参加者としての役割を果たすことができるネットワークアクセス可能なサービスへの自動化されたフロントエンドであり得る。場合によっては、メッセージングボットは、特定のユーザとメッセージングボットとの間の一対一メッセージスレッドなどの、メッセージングボットを明示的に含むメッセージスレッドに対応し得る。他の場合に、メッセージングボットは、メッセージングボットが正規の参加者ではないメッセージスレッドに対応してもよく、メッセージングボットは、サービスと対話するためにメッセージスレッド内の一時的な参加者であってもよい。メッセージングボットは、２人のユーザ間の一対一のスレッドであろうと、複数のユーザ間のグループスレッドであろうと、任意の他のスレッドに一時的な参加者として含め得る。
【０００７】
したがって、ユーザは、メッセージングクライアントになじみがある体験の中でネットワークサービスに参加することができる。更に、メッセージングクライアントを使用することによって、ユーザは、他の人々を含めることができるように、メッセージングコンテキスト内でネットワークサービスに参加することができる。場合によっては、このことは単に、友達や家族に交通の詳細を知らせるなど、サービスに関してその他の人々に知らせるのみであり得る。他の場合に、このことは夕食、乗り物、娯楽、または他のサービスが複数の人々の使用のために手配される場合などで、複数の人々にサービスの実行を可能にし得る。結果として、これらの実施形態は、ネットワークアクセス可能なサービスを使用する体験を向上させることができ、ネットワークアクセス可能なサービスの範囲をメッセージングシステムのユーザにまで広げることができる。
【０００８】
メッセージングボットの開発は、自然言語処理（ＮＬＰ）システムを生成することの困難さによって制約される可能性がある。したがって、メッセージングシステムは、メッセージング会話の分析を実行するＮＬＰシステムであって、メッセージングボットを実装したボットアプリケーションにメッセージングボットによるサービスの実行に関連するＮＬＰ情報を提供するＮＬＰシステムを提供することができる。
【０００９】
自動ボットを生成するための１つの可能な手法は、規則の特定によるものである。自動ボットが様々な状況にどのように対応すべきかについて、開発者が不可避の命令を与える場合がある。規則を使用した開発は初期において単純となる可能性があって、２つの規則を有する自動ボットは機能が非常に制限され得るが、制限された範囲内でその機能は役割を果たし得る。しかし、新たな状況、新たな機能、または他の新たな要素に適応するために、規則に追加の規則が補充される。事前コーディングされた推論の連鎖は、より長く、より複雑になるため、規則間で矛盾することなく一貫して維持することがより困難となる。
【００１０】
したがって、機械学習が規則ベースのボットと比較して望ましい場合がある。しかし、訓練データセットに基づく機械学習は、開発者に、訓練データセットを生成または収集する負担をかける。このことは、主要リソースを有する大規模開発者を単一のプロジェクトに専念させ得るが、小規模開発者や、妥当な予算および時間枠内で様々なサービスを導入しようとする大規模開発者にとっては実用的でない。
【００１１】
したがって、ボットプラットフォームは、豊富なボットコミュニティを生成するのに十分な程度の量の時間およびリソースを使用して、開発者が機械学習ベースのボットを作成することを可能にする機械学習フレームワークを提供することにより、利益を生じ得る。開発者が機械学習を使用して経時的に改善できるボットを効率的に開発できるようにするボットプラットフォームは、ボットの作成を促進し、これによりボットプラットフォームの消費者にサービスを提供することを促進する。
【課題を解決するための手段】
【００１２】
メッセージングボットがそのサービスの実行に関連する情報をどのように収集すべきかの構造を指定する自然な方法を提供することによって、開発者を支援し得る。ボットプラットフォームは、開発者がストーリを使用して開発者のボットの動作を定義できるようにするボットエンジンを提供し得る。ストーリは会話サンプルである。ストーリは、ユーザメッセージおよびボットメッセージに加えて、ボットが提供するサービスを実行するボットアクションを含んでもよい。ストーリに、ユーザメッセージからボットが抽出している情報のサンプルを用いて注釈付けすることにより、ボットに何を学習させ、どのように学習させるかを教えてもよい。
【００１３】
開発者は、情報収集プロセスがどのように機能し得るかを示す、仮想ユーザとメッセージングボットとの間の注釈付き会話サンプルを提供することによって、情報収集プロセスを構成することができる。開発者は、各会話がメッセージングボットのシナリオを表す、複数の会話サンプルを起草することができる。これらの会話サンプルには、ユーザから受信した各メッセージについて、要求されたサービスのコンテキストを構築するためにメッセージングボットがどのような情報を抽出すべきかを示すように、注釈付けをし得る。会話サンプルはボットアプリケーションへのアプリケーションプログラムインタフェース（ＡＰＩ）呼出しに対し構築することができ、ＡＰＩ呼出しが会話サンプルを通じて構築されたコンテキストを使用する。
【００１４】
ボットを作成するときに、開発者は、最も可能性の高い会話経路を記述するいくつかのストーリから開始することができる。その段階において、ボットエンジンは、意図的にストーリデータセットに過剰適合する機械学習モデルを構築することができる。これにより、開発者は、いくつかの会話サンプルの特定を通じて、機能的なメッセージングボットを作成することができる。ただし、限られたサンプルに起因して、これらの会話サンプルに基づくメッセージングボットは、開発者が検討および例示したもの以外の状況には十分に適応しない可能性がある。実際には、そのことは、ストーリが予期しない状況への応答において柔軟性を有さず、または限られた柔軟性しか有さずに、ほぼ規則どおりに動作することを意味する。これは、規則ベースのＮＬＰシステムが直面する困難、すなわちＮＬＰシステムは、現実世界のユーザが規則の構造において暗黙的なユーザ行動について想定外に行動する場合に障害を起こしやすいということに、ある程度相当し得る。
【００１５】
これにより、開発者はごく少数のストーリを生成した後にボットの試験を開始することができる。この試験では、非公開でまたは生の環境でも、会話が作成されることとなる。開発者は、試験または実際の会話を追加のストーリに変えることができ、ボットの既存のストーリに追加されたこれらの追加のストーリは、ボットエンジンにフィードされて、更新および改善された機械学習モデルを生成する。規則によるものとは異なり、ボットエンジンは、ストーリが互いに対立する状況を解決することができる。規定ではなく例として、ボットエンジンが矛盾したストーリを無視できるならば、新たなユースケースが発見された場合に、開発者が以前のすべてのストーリを考慮する必要性を伴わずに追加のストーリを追加することができる。したがって、本手法によって、規則ベースの開発の初期開発を、ストーリデータセットが増大する際の機械学習の複雑さを首尾よく管理する柔軟性と拡張された能力とを備えて、迅速で効率的にすることができる。開発者は矛盾があっても解決を模索する必要がない、またはあるストーリが他のストーリにどのように関連するかを指定する必要がないため、各ストーリの追加自体を開発者にとって単純なアクションであるとして、単純なシステムを複雑なシステムに合わせて調整し得る。したがって、複雑化への調整は、開発者にとって単純な、したがって管理しやすいプロセスであり得る。
【００１６】
したがって、規則ベースの手法の初期の欠点は、開発者によって作成された最初のサンプルのみでなく、生の製造環境または開始前の生の試験環境において、メッセージングボットによる現実世界の対話から生成された追加のサンプルも含むように、対話サンプルのリポジトリを拡張することによって修正され得る。メッセージングシステムは、ユーザとの会話を記録し、これらの会話を、開発者または他の管理者による編集および検証に提示し得る。メッセージングボットが動作に成功した生のサンプルに注釈付けをし、今後、メッセージングボットのサンプルとして使用し得る。失敗に終わった生のサンプルを編集してメッセージングボットがどのように動作すべきであったかを示し、次いで注釈付けをし、メッセージングボットのサンプルとして使用し得る。成功または失敗のいずれでも、新たなサンプルを生成し、そのサンプルを、メッセージングボットの自然言語を処理する方法を学習するＮＬＰシステムに利用可能に拡張し得る。このことは、メッセージングボットの動作が、規則ベースのシステムと同じ厳密さに基づく失敗に陥ることを脱して、より抽象的なシステムの適合性を享受することに移行するように作用し得る。
【００１７】
この移行は実際に発生する問題に基づいて起こり得るため、開発者を改良の最重要領域に専心させながら、重大な何度も経験した問題にこの上なく早く対処し得る。同様に、この移行は実際にボットを使用している実際のユーザに応答して生じるため、ボットは、ユーザが実際にサービスに対して寄せている期待に合わせて洗練および拡張され得る。更に、この移行がメッセージングボットの存続期間に亘って起こるため、開発者は、機能的な製品でサービスを開始して市場と関わることにより、収益を享受して、経時的に開発者のサービスを向上させるようにする。結果として、メッセージングシステムによって提供される学習ＮＬＰシステムは、開発者にＮＬＰベースのサービスを提供する実用性を向上させ得る。
【図面の簡単な説明】
【００１８】
【図１】一実施形態のユーザ要求通信システムを示す図。
【図２Ａ】一実施形態のユーザクライアント用のユーザインタフェースを示す図。
【図２Ｂ】一実施形態のユーザクライアント用のユーザインタフェースを示す図。
【図３Ａ】一実施形態の、ボットメッセージサンプルを使用して会話サンプルを構成する開発者コンソール用のユーザインタフェースを示す図。
【図３Ｂ】一実施形態の、ボットアクションサンプルを用いて会話サンプルを構成する開発者コンソール用のユーザインタフェースを示す図。
【図３Ｃ】一実施形態の開発者コンソール用のユーザインタフェースを示す図。
【図４】一実施形態の図１のシステムに関する分岐論理フローを示す図。
【図５】ユーザ要求通信システムによってユーザ対ボット会話を実行する一実施形態を示す図。
【図６】一実施形態の図１のシステムに関する論理フローを示す図。
【図７】一実施形態の図１のシステムに関する集中型システムを示す図。
【図８】一実施形態の図１のシステムに関する分散型システムを示す図。
【図９】一実施形態のコンピューティングアーキテクチャを示す図。
【図１０】一実施形態の通信アーキテクチャを示す図。
【図１１】一実施形態の無線デバイスアーキテクチャを示す図。
【発明を実施するための形態】
【００１９】
以下は、本明細書に記載されるいくつかの新規の実施形態の基本的な理解を提供するために、簡単な概要を提示する。この概要は、包括的な概観ではなく、本発明の主要／重要要素を指定することも、本発明の範囲を画定することも意図していない。後に提示されるより詳細な説明への前置きとして、いくつかの概念を簡単な形態で提示する。
【００２０】
様々な実施形態は、一般に、会話サンプルに基づいて自然言語機械学習を使用してユーザ要求に応答する技術に向けられている。いくつかの実施形態は、特に、ユーザサービス要求の達成のための会話サンプルに基づいて自然言語機械学習を使用してユーザ要求に応答する技術に向けられている。１つの実施形態では、例えば、装置は、ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信するように動作可能なボットアプリケーションインタフェースコンポーネントと、対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するように動作可能な対話処理コンポーネントとを含み、対話サンプルリポジトリを提示することに応答して、自然言語機械学習コンポーネントからシーケンスモデルを受信し、シーケンスモデルに基づいてユーザ対ボット会話を実行することができる。他の実施形態が記載され請求される。
【００２１】
上記の、および関連する目的を達成するために、ある特定の例示的な態様が、以下の説明および添付の図面に関連して本明細書において記載される。これらの態様は、本明細書において開示される原理を実行することができる様々な方法を示し、全ての態様およびその均等物が、特許請求される主題の範囲内にあることが意図される。他の利点および新規の特徴は、以下の詳細な説明を図面と併せて検討することにより明らかとなるであろう。
【００２２】
以下では図面を参照し、図面では、類似の要素には全体を通して同様の参照符号を用いる。以下の説明では、その完全な理解を与えるため、説明を目的として、様々な具体的詳細について記載している。しかしながら、これら特定の詳細を省いても、新規な実施形態を実施できることは明らかであろう。一方で、周知の構造およびデバイスについては、その説明を容易とするために、ブロック図の形式で示している。その意図は、特許請求される主題に矛盾しないあらゆる変更、均等物、および代替案を包括することである。
【００２３】
本明細書で使用される「ａ」および「ｂ」および「ｃ」および同様の記号は、任意の正の整数を表す変数であることを意図していることに留意されたい。したがって、例えば、実施においてａ＝５の値が設定される場合、コンポーネント１２２−１〜１２２−ａとして示される全一式のコンポーネント１２２は、コンポーネント１２２−１、１２２−２、１２２−３、１２２−４、および１２２−５を含む。実施形態は、これに限定されない。
【００２４】
図１は、ユーザ要求通信システム１００のブロック図を示す。１つの実施形態では、ユーザ要求通信システム１００は、１つまたは複数のコンポーネントを含むソフトウェアアプリケーションを有するコンピュータ実装システムを含み得る。図１に示すユーザ要求通信システム１００は、特定のトポロジにおいて限定された数の要素を有するが、ユーザ要求通信システム１００は、所与の実施に関して所望されるように、代替トポロジにおいてより多くの、またはより少ない要素を含むことができることが理解されるであろう。
【００２５】
ボットアプリケーション、場合によって複数のボットアプリケーションは、メッセージおよび他の情報の交換を可能にするメッセージングシステムを含むネットワーク環境内で動作し得る。ボットアプリケーション１９０は、コンピュータシステム上で実行されるソフトウェアアプリケーションを含み得る。ボットアプリケーション１９０は、メッセージングシステムを使用して、ユーザメッセージおよびボットメッセージを含むメッセージを交換し得る。ユーザメッセージは、ユーザ要求と、ユーザ要求を明確にし、指定するメッセージとを含み得る。ボットメッセージは、ユーザ要求に関連する情報とユーザ要求に関連する実行情報との要求を明確にすることができる。場合によっては、メッセージングシステムは、他のメッセージにも使用される一般的なメッセージングシステムを含み得る。他の場合には、メッセージングシステムは、ボットアプリケーションと通信するのに専用のメッセージングシステムを含み得る。
【００２６】
メッセージングサーバ１１０は、ユーザ要求通信システム１００の一部としてメッセージングシステムによって操作される１つまたは複数のメッセージングサーバを含み得る。メッセージングサーバは、インターネットアクセス可能なサーバを備え、ネットワーク１２０は、少なくとも一部にインターネットを含むユーザ要求通信システム１００の様々なデバイスを接続する。
【００２７】
ユーザは、スマートフォンデバイス１５０を所有し、操作し得る。スマートフォンデバイス１５０には、ｉＰｈｏｎｅ（登録商標）デバイス、Ａｎｄｒｏｉｄ（登録商標）デバイス、Ｂｌａｃｋｂｅｒｒｙ（登録商標）デバイス、またはスマートフォン方式に準拠した他の任意のモバイルコンピューティングデバイスが含まれ得る。スマートフォンデバイス１５０は、セルラー信号１３５を用いてセルシステム１３０を介してネットワーク１２０に接続することが可能なセルラーデバイスであり得る。いくつかの実施形態では、場合によっては、スマートフォンデバイス１５０は、Ｗｉ−Ｆｉまたは他のネットワーク接続技術を追加的または代替的に使用して、ネットワーク１２０に接続し得る。スマートフォンデバイス１５０は、メッセージングクライアント、ウェブブラウザ、または他のローカルアプリケーションを実行してメッセージングサーバ１１０にアクセスし得る。
【００２８】
同じユーザが、タブレットデバイス１６０を所有し、操作し得る。タブレットデバイス１６０には、ｉＰａｄ（登録商標）デバイス、Ａｎｄｒｏｉｄ（登録商標）タブレットデバイス、Ｋｉｎｄｌｅ  Ｆｉｒｅ（登録商標）デバイス、またはタブレット方式に準拠した任意の他のモバイルコンピューティングデバイスが含まれ得る。タブレットデバイス１６０は、Ｗｉ−Ｆｉ信号１４５用いてＷｉ−Ｆｉアクセスポイント１４０を介してネットワーク１２０に接続することが可能なＷｉ−Ｆｉデバイスであり得る。いくつかの実施形態では、場合によっては、タブレットデバイス１６０は、セルラーまたは他のネットワーク接続技術を追加的または代替的に使用して、ネットワーク１２０に接続し得る。タブレットデバイス１６０は、メッセージングクライアント、ウェブブラウザ、または他のローカルアプリケーションを実行してメッセージングサーバ１１０にアクセスし得る。
【００２９】
同じユーザが、パーソナルコンピュータデバイス１８０を所有し、操作し得る。パーソナルコンピュータデバイス１８０には、Ｍａｃ  ＯＳ（登録商標）デバイス、Ｗｉｎｄｏｗｓ（登録商標）デバイス、Ｌｉｎｕｘ（登録商標）デバイス、または別のオペレーティングシステムを実行する他のコンピュータデバイスが含まれ得る。パーソナルコンピュータデバイス１８０は、イーサネット（登録商標）接続を介してネットワーク１２０に接続することが可能なイーサネットデバイスであり得る。いくつかの実施形態では、場合によっては、パーソナルコンピュータデバイス１８０は、セルラー、Ｗｉ−Ｆｉ、または他のネットワーク接続技術をネットワーク１２０に追加的または代替的に使用してもよい。パーソナルコンピュータデバイス１８０は、メッセージングクライアント、ウェブブラウザ１７０、または他のローカルアプリケーションを実行してメッセージングサーバ１１０にアクセスし得る。
【００３０】
メッセージングクライアントは、専用のメッセージングクライアントとすることができる。専用のメッセージングクライアントは、メッセージングサーバ１１０を含むメッセージングシステムを管理するメッセージングプロバイダに特に関連付けられ得る。専用メッセージングクライアントは、メッセージングサーバ１１０を含むメッセージングシステムを管理するメッセージングプロバイダを含む複数の異なるメッセージングプロバイダと連携して動作可能な一般的なクライアントとすることができる。メッセージングクライアントは、ボットアプリケーションを、メッセージングサーバ１１０を介してアクセス可能な複数のエンドポイントおよび／またはサービスの１つとするなど、サービスの実行のためにボットアプリケーションへのアクセスを強化し得る。
【００３１】
メッセージングクライアントは、追加機能を提供するアプリケーションのコンポーネントとすることができる。例えば、ソーシャルネットワーキングサービスは、ソーシャルネットワーキングサービスにアクセスしてこれを使用するモバイルデバイス上での使用に供されるソーシャルネットワーキングアプリケーションを提供し得る。ソーシャルネットワーキングサービスは、メッセージングサーバ１１０によって提供され得るようなメッセージング機能を含み得る。メッセージングサーバ１１０は、ソーシャルネットワーキングサービスのためのコンピューティングデバイスの１つのコンポーネントであり得、コンピューティングデバイスは、ソーシャルネットワーキングサービスの追加機能を提供することが理解されるであろう。同様に、ソーシャルネットワーキングアプリケーションは、メッセージ機能と追加機能との両方を提供し得る。
【００３２】
場合によっては、メッセージングエンドポイントがユーザセッション間の状態を保持し、場合によっては、メッセージングエンドポイントがユーザセッション間の状態を放棄し得る。メッセージングエンドポイントは、ローカルストアを使用してメッセージ受信ボックスの現在の状態を保持し得る。このローカルストアは、例えば、ローカルアプリケーションが終了したり、またはそれ以外によってメモリから消去されたり、デバイスの電源が遮断されて再投入されたりする状況を含む、あるセッションと次のセッションとの間にその状態を取り出し得るように、持続的なストレージに保存され得る。これに代えて、メッセージングエンドポイントはメモリキャッシュを使用してメッセージ受信ボックスの現在の状態を保持するが、メッセージ受信ボックスの状態を持続的なストレージに留めないように自律し得る。
【００３３】
メッセージ受信ボックスの状態を保持するメッセージングエンドポイントは、専用メッセージングアプリケーション、またはソーシャルネットワーキングアプリケーションのような別のローカルアプリケーションに統合されたメッセージングユーティリティを含み得る。メッセージ受信ボックスの状態を放棄するメッセージングエンドポイントは、ウェブブラウザ内に実装されたメッセージングアクセスを含み得る。１つの実施形態では、パーソナルコンピュータデバイス１８０上で実行中のウェブブラウザ１７０などのウェブブラウザは、メッセージングサーバとインタラクトするＨＴＭＬ５コードを実行してユーザにメッセージング機能を提示し得る。
【００３４】
ユーザは、スマートフォンデバイス１５０、タブレットデバイス１６０、およびパーソナルコンピュータデバイス１８０を含む複数のデバイスからメッセージを送受信し得る。ユーザは、スマートフォンデバイス１５０上の第１のメッセージングアプリケーション、タブレットデバイス１６０上の第２のメッセージングアプリケーション、およびパーソナルコンピュータデバイス１８０上のウェブブラウザ１７０を使用し得る。異なるデバイス上のメッセージングアプリケーションは、両方のデバイス上に同じアプリケーションをインストールすることを含み得る。異なるデバイス上のメッセージングアプリケーションは、共通アプリケーションのスマートフォン仕様のバージョンおよびタブレット仕様のバージョンを含み得る。異なるデバイス上のメッセージングアプリケーションは、異なるアプリケーションを含み得る。
【００３５】
ユーザは、ユーザのメッセージ受信ボックスをユーザのデバイス間で一貫した状態に保つことによって利益を得ることができる。ユーザは、ユーザの留守中にセルシステム１３０上でユーザのスマートフォンデバイス１５０を使用して、セルシステム１３０を介してメッセージを送受信し得る。ユーザは、Ｗｉ−Ｆｉを提供するコーヒーショップまたは他の場所に立ち寄り、ユーザのタブレットデバイス１６０をＷｉ−Ｆｉアクセスポイント１４０に接続し得る。タブレットデバイス１６０は、メッセージ受信ボックスについての現在の既知の状態を受信し、スマートフォンデバイス１５０によって送信されたメッセージを含む、タブレットデバイス１６０がネットワークにアクセスした最後の時以降に生じた更新であって、ユーザがスマートフォンデバイス１５０を操作している間に受信している場合がある更新を受信し得る。その後、ユーザは、帰宅し、パーソナルコンピュータデバイス１８０上のウェブブラウザ１７０を使用してメッセージ受信ボックスにアクセスし得る。ウェブブラウザ１７０は、ウェブブラウザ１７０がメッセージ受信ボックスの現在の状態を保持していないか、あるいはその状態にアクセスしていないため、メッセージングサーバ１１０からメッセージ受信ボックスの現在の状態のスナップショットを受信し得る。次いで、ウェブブラウザ１７０は、メッセージングサーバ１１０とのユーザセッションを維持する限り、メッセージ受信ボックスの状態に対する新たな変化についての増分更新を受信し、ユーザによってウェブブラウザ１７０を閉じるときなどのセッションの終了時に、メッセージ受信ボックスについての既知の状態を破棄し得る。限定されないが、更新は、受信ボックスへのメッセージの追加、受信ボックスからのメッセージの削除、および開封確認メッセージに対応し得る。
【００３６】
ユーザ要求通信システム１００は、メッセージ受信ボックスを複数のメッセージを含むように定義することによって動作することができ、各メッセージは、２人以上の参加者間の通信の個々のトランザクション処理である。メッセージングサーバは、メッセージ受信ボックスのメッセージインデックスを保持することによって動作し得る。メッセージングサーバは、メッセージを受信し、そのメッセージをメッセージアーカイブに記憶することができ、そのメッセージアーカイブからメッセージインデックスを参照してメッセージを受信し得る。メッセージングクライアントは、メッセージングサーバに接続し、メッセージクライアントの最後の更新後にメッセージクライアントのメッセージアーカイブに追加されたメッセージを受信し得る。メッセージングクライアントは、メッセージアーカイブから、どのようなメッセージがメッセージアーカイブに記憶されているかを示すメッセージインデックスを受信し得る。メッセージングクライアントは、どのようなメッセージが欠落しているかを判断するためにメッセージングクライアントのメッセージアーカイブを現在の受信ボックスと比較し、次いでそれをメッセージアーカイブに要求し得る。メッセージングクライアントは受信ボックスに変更を加えることができ、その結果、メッセージアーカイブにメッセージ受信ボックス命令が送信され、メッセージアーカイブにメッセージアーカイブ上のメッセージ受信ボックスの表現を変更するように指示する。
【００３７】
メッセージングシステムによって媒介されるメッセージング対話は、メッセージスレッドとして知られる共有空間に編成され得る。メッセージスレッドは、特定のグループのユーザ間で共有されるメッセージをまとめて収集することができる。一対のユーザの間で個別に送信されたメッセージは、その対のユーザ間のプライベートメッセージングに一意に関連付けられた一対一のメッセージスレッドに収集されてもよい。３人以上のユーザのグループの間で送信されるメッセージは、そのメンバーシップによって一意に定義されない場合があり、いくつかの実施形態では、グループスレッドを一意に指定する識別子によって代わりに定義され得る。グループスレッドのメンバーシップは、いくつかの実施形態では、経時的に変化し、メンバーを追加し、および／または失うことがある。メッセージスレッドは、例えば、ユーザとメッセージングボットとの間のものとすることができ、ユーザは、要求を提示して要求に関する対話に参加するために、メッセージスレッドにアクセスしてメッセージングボットとのメッセージングに参加する。
【００３８】
ユーザ要求通信システム１００は、ユーザ間の対話から生じた知識を用いることができる。ユーザ要求通信システム１００は、ソーシャルネットワーキングシステムのコンポーネントを含むことができ、ソーシャルネットワーキングシステムのより広範な対話から生じた知識を用いることができる。したがって、ユーザ要求通信システム１００およびより大きなソーシャルネットワーキングシステムのユーザのプライバシーを保護するために、ユーザ要求通信システム１００は、ユーザのアクションをユーザ要求通信システム１００によって記録すること、または例えば適切なプライバシー設定を設定することによって他のシステム（例えば、第三者システム）と共有することの、開始または終了をユーザが選択できるようにする認証サーバ（または他の適切なコンポーネント）を含み得る。ユーザのプライバシー設定は、ユーザに関連するどのような情報が記録され得るか、ユーザに関連する情報がどのようにして記録され得るか、ユーザに関連する情報がいつ記録され得るか、ユーザに関連する情報を誰が記録し得るか、ユーザに関連する情報が誰と共有され得るか、およびどのような目的でユーザに関連する情報が記録または共有され得るかを決定することができる。認証サーバまたは他の認証コンポーネントを使用して、ブロッキング、データハッシング、匿名化、または適宜の他の適切な技術によって、ユーザ要求通信システム１００とソーシャルネットワーキングシステムの他の要素のユーザの１つまたは複数のプライバシー設定を実施し得る。
【００３９】
図２Ａは、ユーザクライアント用のユーザインタフェース２００の一実施形態を示す。
ユーザインタフェース２００は、クライアントデバイス２２０上に表示され得る。クライアントデバイス２２０は、限定されないが、スマートフォンデバイス１５０、パーソナルコンピュータデバイス１８０、タブレットデバイス１６０、または任意の他の形態のクライアントデバイスに対応し得る。ユーザインタフェース２００は、スマートフォンデバイス１５０、タブレットデバイス１６０、パーソナルコンピュータデバイス１８０、または他のデバイス上で実行し得るようなウェブブラウザを介して表示され得る。ユーザインタフェース２００は、スマートフォンデバイス１５０、タブレットデバイス１６０、パーソナルコンピュータデバイス１８０、または他のデバイス上で実行し得るようなメッセージングアプリケーションに表示され得る。ユーザインタフェース２００は、スマートフォンデバイス１５０、タブレットデバイス１６０、パーソナルコンピュータデバイス１８０、または他のデバイス上で実行し得るような自動ボットサービスアプリケーションに表示され得る。ユーザインタフェース２００は、ここに列挙された例に限定されることなく、様々な技術を使用して表示され得る。
【００４０】
ユーザインタフェース２００は、メッセージ対話表示２１０を含むことができる。メッセージ対話表示２１０は、クライアントデバイス２２０のユーザとボットアプリケーション１９０によって実装された自動ボットとの間で交換される一連のメッセージを含むことができる。メッセージ対話表示２１０は、複数のユーザメッセージのうちの１つのユーザメッセージ２１５を含むことができる。ユーザメッセージは、ユーザのアバタに関連付けられて表示され得る。メッセージ対話表示２１０は、複数のボットメッセージのうちの１つのボットメッセージ２１７を含むことができる。ボットメッセージは、ボットアプリケーション１９０に対応するようにボットのアバタに関連付けられて表示され得る。メッセージ対話表示２１０は、場合によっては、クライアントデバイス２２０の限られた画面スペースに起因するなどして、ユーザメッセージおよびボットメッセージの一部分を視覚的に含むのみであり得る。
【００４１】
クライアントデバイス２２０は、ユーザインタフェース２００を操作する制御部を含むことができる。制御部は、テキストベースのメッセージの構成に合わせてテキストを入力することを可能にするテキスト入力制御部２２２を含むことができる。制御部には、ハードウェア制御部が含まれ得る。いくつかの実施形態では、制御部はタッチスクリーン方式の制御部であり得る。
【００４２】
図２Ｂは、ユーザクライアント用のユーザインタフェース２２５の一実施形態を示す。
メッセージングクライアントは、メッセージングクライアントヘッダ２２７を表示することができる。メッセージングクライアントヘッダ２２７は、ユーザがメッセージスレッドを介して参加し得るメッセージングボットの名称などの、メッセージスレッドのタイトルを含むことができる。メッセージングクライアントヘッダ２２７は、ユーザをメッセージングクライアントの受信ボックスビューに戻す制御部を含むことができる。未読メッセージを含む複数の最近のメッセージスレッドで受信ボックスビュー制御部を拡張し得る。
【００４３】
ユーザインタフェース２２５は、メッセージ対話表示２３０を含むことができる。メッセージ対話表示２３０は、クライアントデバイス２２０のユーザと、ボットアプリケーション１９０によって実装された自動ボットとの間で交換される一連のメッセージを含むことができる。メッセージ対話表示２３０は、複数のユーザメッセージを含むことができる。ユーザメッセージは、ユーザが自分自身に指定される必要がないため、クライアントデバイス２２０のユーザのアバタを使用せずに表示され得る。メッセージ対話表示２３０は、複数のボットメッセージを含むことができる。ボットメッセージは、ボットアプリケーション１９０に対応するようにボットのアバタに関連付けられて表示され得る。メッセージ対話表示２３０は、場合によっては、クライアントデバイス２２０の限られた画面スペースに起因するなどして、ユーザメッセージおよびボットメッセージの一部分を視覚的に含むのみであり得る。メッセージ対話表示２３０は、いいね（サムズアップ）などのソーシャル賛同アイコンを表示するソーシャル賛同アイコン表示２３５を含むことができる。ソーシャル賛同アイコン表示２３５の送受信は、ソーシャル賛同アイコン表示２３５をメッセージ内に埋め込まれた要素とし、メッセージングシステムを使用してメッセージを送受信する特定の場合を含むことができる。メッセージ対話表示２３０は、下線で印を付けられることのある、テキストの実行可能な部分を示す検出されたイベント２４０を含むことができる。検出されたイベント２４０を選択することによって、検出されたイベント２４０をユーザのカレンダーに追加するインタフェースをインスタンス化し得る。
【００４４】
図３Ａは、ボットメッセージサンプル３１０を用いた会話サンプルを構成する開発者コンソール用のユーザインタフェース３００の一実施形態を示す。例示のユーザインタフェース３００は、スクロール可能なインタフェースに表示されることのある会話サンプルの一部のみを含むことができる。
【００４５】
メッセージングボットの開発者が開発者コンソールを使用して、ユーザへの１つまたは複数のサービスの実行のためにメッセージングボットを構成することができる。開発者コンソールを使用して、開発者が起草した会話サンプルを作成して注釈付けすることができる。開発者用コンソールを使用して、製造用に派生させた会話サンプルを編集して注釈付けをしてもよい。ユーザインタフェース３００は、これらの場合のいずれかに対応し得る。
【００４６】
開発者コンソールは、注釈付きのメッセージング会話を表示し、注釈付きのメッセージング会話の作成を可能にし得る。メッセージング会話サンプルは、メッセージングボットの予定された動作を例示するストーリからなり得る。ストーリは、予定されるのみでなく、実際の会話を含むこともできる。例えば、メッセージングボットが使用される際に、システムは実際の会話を収集し、その後にその会話を訓練用のストーリとして使用し得る。メッセージング会話サンプルは、生のユーザ対ボットメッセージング会話から生成された、またはメッセージングボットの開発者によって起草されたユーザメッセージサンプル３０５を含むことができる。メッセージング会話サンプルはボットメッセージサンプル３１０を含むことができ、ボットメッセージサンプル３１０は生のユーザ対ボットメッセージング会話に基づいて会話に配置されるか、またはメッセージングボットの開発者によって配置されている。ボットメッセージは、開発者によって起草されたサンプルから導出され得るので、生のユーザ対ボットメッセージング会話に基づいて会話に配置されたボットメッセージサンプル３１０は、ボット開発者による最初に草案作成されたままである可能性があることを理解されるであろう。
【００４７】
ユーザメッセージサンプルに、構造化データ抽出サンプルを用いて注釈付けすることができる。メッセージングボットは、ユーザ要求コンテキストの記憶のために、開発者によって定義された構造化データオブジェクトを有することができる。ユーザ要求コンテキストは、コンテキスト情報を複数のデータフィールドにカプセル化することができる。構造化データ抽出は、複数のデータフィールドの１つまたは複数に値を付与することができる。例えば、第１のユーザメッセージサンプル３０５は、対話に対する一般的なユーザの意図を表すもので、この場合、ピザの注文に構造化データ抽出サンプル３０７で注釈付けすることができ、構造化データ抽出サンプル３０７は、メッセージングボットが、ユーザメッセージサンプル３０５を、特定の構造化データフィールド、ここでは「ｗａｎｔｓ＿ｐｉｚｚａ」フィールドを真であるように設定するものと解釈すべきことを示す。第２のユーザメッセージサンプル３１５も同様である。この場合に、具体的にＬサイズのピザを要求することに構造化データ抽出サンプル３１７で注釈付けすることができ、構造化データ抽出サンプル３１７は、メッセージングボットが、ユーザメッセージサンプル３１５を、「Ｌサイズ」との語からなる、ユーザメッセージサンプル３１５から抽出された値に等しくなるように「ｐｉｚｚａ＿ｓｉｚｅ」フィールドを設定するものと解釈すべきことを示す。第１のメッセージからの抽出は、特定の値を抽出することなく、第１のメッセージ全体に対して全体論的であり得る。ただし、第２のメッセージからの抽出は、ユーザメッセージサンプル３１５内に含まれる特定の値に関し、その値は開発者コンソールに印を付けられて抽出される。いくつかの実施形態では、ユーザメッセージサンプル内の値とは異なり得る特定の値を構造化データ抽出サンプル３１７内において指定して、メッセージングボットに同義語などの、値の代替形態を認識することを期待する伝達を行ってもよい。
【００４８】
ボットメッセージサンプル３１０は、ユーザメッセージサンプル３０５に対するボット応答サンプルを含むことができる。指定されたテキストをメッセージングボットによってメッセージとして送信すべきであるという通知により、ボット応答エントリにおいてボットメッセージサンプル３１０を示してもよい。ボットメッセージサンプル３１０は、変数追加制御部３１２に関連付けられ得る。変数追加制御部３１２は、ボットメッセージサンプル３１０などの、ボット応答への変数の追加を可能にし得る。
【００４９】
図３Ｂは、ボットアクションサンプル３４０を用いた会話サンプルを構成する開発者コンソール用のユーザインタフェース３２５の一実施形態を示す。
ピザの上に一組のトッピングを希望するというユーザメッセージサンプル３３０においてユーザが指定する構造化データ抽出サンプル３３５は、ユーザメッセージから複数の値が抽出され得ることを示す。この場合に、これらの複数の値は、特定のデータフィールドのリストとして結合され得るが、他の場合には、単一のユーザメッセージから抽出された値が複数のデータフィールドに割り当てられ得る。
【００５０】
ユーザとボットとの間のメッセージング対話は、メッセージングボットによるユーザへのサービスの遂行を構築し得るが、そのアクションはユーザとボットとの間の会話の終了を表さない場合がある。ボットアクションサンプル３４０は、開発者コンソールにおいて指定され得る。ボットアクションサンプル３４０は、開発者によって付与されるボットアプリケーション１９０へのボットＡＰＩ呼出しの観点から定義され得る。ボットＡＰＩ呼出しは、ユーザ要求コンテキストおよびユーザ要求エンティティを入力として受け入れ得る。ユーザ要求コンテキストは、ＮＬＰシステムによって抽出された値を含む構造化データオブジェクトを含むことができる。ユーザ要求エンティティは、ＮＬＰシステムによるユーザ入力の意味分析の出力を含むことができる。ユーザ要求エンティティは、限定されないが、会話中のすべてのユーザメッセージについての最新のユーザメッセージ、または他の任意のユーザメッセージセットの意味分析の出力を含むことができる。
【００５１】
ボットＡＰＩ呼出しは、開発者によってボットアプリケーション１９０に実装することができ、ＮＬＰシステムは、メッセージングボットに対して指定され得る複数のボットＡＰＩ呼出しのうちから行うべき特定のボットＡＰＩ呼出しを決定する。ボットＡＰＩ呼出しは、ユーザ要求コンテキストを更新する１つまたは複数の値を返し得る。例示の実施形態では、ユーザ要求コンテキストの「ｄｅｌｉｖｅｒｙ＿ｔｉｍｅ」フィールドは、ボットＡＰＩ呼出しに基づいて更新される。ボットアプリケーション１９０は、ピザの注文を実行して、配達時間をユーザ要求コンテキストの構造化データオブジェクトの「ｄｅｌｉｖｅｒｙ＿ｔｉｍｅ」フィールドの値として返すように、開発者によって実装され得る。コンテキスト更新追加制御部３４３を使用してさらなるコンテキスト更新を追加することができる。
【００５２】
ユーザメッセージサンプルに対する複数のボット応答を、開発者コンソールに示すことができ、したがって、メッセージングボットによって実行することができる。例えば、ボットは、アクションを実行し、その後メッセージを介してそのアクションをユーザに報告するするとパターン化されるこができる。ボットメッセージサンプル３４５は、会話サンプルにおいて指定され得る。変数追加制御部３４７を使用して、ユーザ要求コンテキストの構造化データオブジェクトからのフィールドなどの、特定の変数の値をボットメッセージサンプル３４５に追加することができる。例示の実施形態では、以前のボットアクションの実行中に指定された値が、その後に、以降のボットメッセージサンプル３４５に含められる。いくつかの実施形態では、ボットアクションおよびボットメッセージなどの複数のボット応答は、ユニットとして定義され、したがって、不可分なユニットとしてメッセージングボットにより訓練および再現される。場合によっては、ボットアクションは、開発者システム上のボットアプリケーションによって実行される任意のアクションに加えて、ボットアプリケーションからの応答において受信した、更新されたユーザ要求コンテキストとともに、現在のユーザ要求コンテキストを開発者システムによって実行されるボットアプリケーションに渡すことを含むことができる。
【００５３】
図３Ｃは、開発者コンソール用のユーザインタフェース３５０の一実施形態を示す。いくつかの実施形態では、開発者コンソールは、ユーザ要求通信システム１００によってホストされる開発者コンソールを用いて、ユーザ要求通信システム１００のウェブサイトにアクセスするウェブブラウザに表示され得る。
【００５４】
開発者コンソールは、ストーリセクションを含む複数のセクションを含むことができる。ストーリセクションは、ストーリ選択制御部３５５を選択することによって選択され得る。ストーリセクションを使用して、自然言語機械学習コンポーネントにメッセージングボットの所望の動作を教える際に使用するストーリを構成し得る。開発者コンソールは、（メッセージングボットに関連するメッセージを受信する）受信ボックスセクション、（メッセージングボットによる実行に供されるボットアクションを設定する）アクションセクション、（メッセージング対話のユーザコンテキストを記憶する際に使用される構造化データオブジェクトを構成する）エンティティセクション、（追加のストーリを生成するために使用され得るようなメッセージングボットのメッセージング対話のログを見るための）ログセクション、および（メッセージングボットの設定を構成する）設定セクションを含むことができる。他の、または代替のセクションを使用することができる。
【００５５】
場合によっては、ストーリセクションには、ログセクションを介して到達することができる。ログセクションは、メッセージングボットが参加している会話の一部またはすべてのログを表示し得る。開発者は、これらの会話を検討して、メッセージングボットに望まれる追加機能、メッセージングボットが処理できる追加要求、メッセージングボットが理解できる追加のステートメント、およびメッセージングボットに適した一般に追加される訓練を指定し得る。場合によっては、開発者はストーリセクションに移行することを選び、ストーリを作成して追加の訓練を与え得る。場合によっては、開発者は、記録された会話をストーリセクションにコピーすることを選び、記録された会話を編集および注釈付けをしてストーリを生成し得る。
【００５６】
開発者コンソールは、ストーリ作成制御部３５９を含むことができる。ストーリ作成制御部３５９は、メッセージングボットを構成する際に使用する追加のストーリの作成を可能にし得る。
【００５７】
開発者コンソールは、再試行保存制御部３５８を含むことができる。再試行保存制御部３５８を使用して、保存操作を開始し、および／または保存操作を再試行し得る。
開発者コンソールは、削除制御部３５７を含むことができる。削除制御部３５７は、開発者コンソールにおいて編集されている現在のストーリの削除を許可することができる。
【００５８】
開発者コンソールは、ユーザメッセージサンプル３６０を含むことができる。ユーザメッセージサンプル３６０は、メッセージングボットとの対話に対して予測される、または起こり得るユーザメッセージを示すように開発者コンソールを介して開発者により構成された、テキストセグメントを含み得る。
【００５９】
開発者コンソールは、エンティティ名指定部３６４を含むことができる。エンティティ名指定部３６４は、構造化データオブジェクト内に構成されたエンティティの名称を指定し得る。このエンティティのこの指定部は、エンティティを、ユーザメッセージサンプル３６０に現れるものとして指定する。
【００６０】
開発者コンソールは、構造化データ抽出サンプル３６６を含むことができる。構造化データ抽出サンプル３６６は、エンティティ名指定部３６４に関連付けられたユーザメッセージサンプル３６０の部分を、類似サンプルから抽出するためにメッセージングボットを訓練すべきであると指定し得る。構造化データ抽出サンプル３６６は、ドロップダウンメニューを介して指定することができ、ドロップダウンメニューは、ユーザメッセージサンプル３６０内のテキストセグメントの各々を含む。
【００６１】
いくつかのエンティティは、予め定義されたエンティティ指定部３６８を介して指定され得る。予め定義されたエンティティ指定部３６８は、ユーザ要求通信システム１００を用いて事前に定義されたタイプのエンティティに対応し得る。事前に定義されたエンティティタイプには、限定されないが、地名タイプ、住所タイプ、人名タイプ、電話番号タイプ、電子メールアドレスタイプ、またはメッセージング対話においてそれらに共通に出現するものに基づいてユーザ要求通信システム１００を用いて事前に定義された任意の他のタイプが含まれ得る。
【００６２】
開発者コンソールは、ボットメッセージサンプル３７０を含むことができる。ユーザメッセージサンプル３７０は、ユーザとの対話について予測される、または起こり得るボットメッセージを示すように、開発者コンソールを介して開発者により構成されたテキストセグメントを含むことができる。
【００６３】
開発者コンソールは、変数追加制御部３７２を含むことができる。変数追加制御部３７４は、変数要素の値が、ユーザに送信されるとボットメッセージサンプル３７０に含められるように、ボットメッセージサンプル３７０に変数要素を追加することを可能にし得る。
【００６４】
図４は、図１のユーザ要求通信システム１００の分岐論理フロー４００の一実施形態を示す。論理フロー４００は、本明細書で説明する１つまたは複数の実施形態によって実行される動作の一部または全部を表し得る。
【００６５】
図４に示す例示の実施形態において、論理フロー４００は、ブロック４０５においてユーザメッセージを受信することができる。この論理フロー４００は、一般に、ユーザメッセージの受信、したがって論理フロー４００のプロセスで開始することができる。論理フロー４００は、ブロック４１０に進むことができる。
【００６６】
論理フロー４００は、ブロック４１０においてユーザ要求コンテキストを更新することができる。ユーザ要求コンテキストを更新することは、受信したユーザメッセージから１つまたは複数の値を抽出し、１つまたは複数の値を構造化データオブジェクトに記憶することを含むことができる。論理フロー４００は、次にブロック４１５に進むことができる。
【００６７】
論理フロー４００は、ブロック４１５において、受信したユーザメッセージに対する１つまたは複数のボット応答を生成することができる。１つまたは複数のボット応答を生成することは、複数のボット応答オプションを生成することと、ユーザメッセージに応答して、使用する特定の１つまたは複数を選択することとを含むことができる。論理フロー４００は、次にブロック４２０に進むことができる。
【００６８】
論理フロー４００は、ブロック４２０において、実行されないボット応答が利用可能であるか否かに基づいて分岐することができる。ボット応答を順序付けることができ、したがって次の利用可能なボット応答が存在し得ることは理解されるであろう。次の利用可能なボット応答がボットアクションである場合、論理フロー４００はブロック４３０に進むことができる。次の利用可能なボット応答がボット応答メッセージである場合、論理フロー４００はブロック４５０に進むことができる。利用可能なボット応答がない場合、論理フロー４００はブロック４６０に進むことができる。
【００６９】
論理フロー４００は、ブロック４３０において、ＡＰＩ情報を取得することができる。ボットアクションは、１つまたは複数の入力を用いてボットアプリケーション１９０へのＡＰＩ呼出しを実行することによって実行され得る。ＡＰＩ呼出しへの入力に関する情報を取得して利用可能にすることができる。論理フロー４００は次にブロック４３５に進むことができる。
【００７０】
論理フロー４００は、ブロック４３５において、ボットＡＰＩ呼出しを実行することができる。ボットＡＰＩ呼出しを実行することは、ボットアプリケーション１９０へのＡＰＩ呼出しに関与することを含むことができる。いくつかのボットアプリケーションは、論理フロー４００を実行しているコンピュータによってローカルに実行され得る、したがって、ＡＰＩ呼出しはローカルＡＰＩ呼出しであり得る。いつかのボットアプリケーションは、論理フロー４００を実行しているコンピュータシステムとは異なるコンピュータシステムによってリモートに実行され得る、したがって、ＡＰＩ呼出しはボットアプリケーション１９０へのネットワークアクセスを使用するリモートＡＰＩ呼出しであり得る。論理フロー４００は、次にブロック４４０に進むことができる。
【００７１】
論理フロー４００は、ブロック４４０において、ボットＡＰＩ呼出しに基づいてユーザ要求コンテキストを更新することができる。場合によっては、ボットＡＰＩ呼出しがユーザ要求コンテキストの値を返し得る。いくつかの実施形態では、戻り値がボットＡＰＩ呼出しへの戻り値として提供され得る。他の場合には、ユーザ要求コンテキストを具現化する構造化データオブジェクトを、ボットアプリケーション１９０によって変更し、変更された構造化データオブジェクトとして返し、返された変更後の構造化データオブジェクトが、ＮＬＰシステムによって使用された以前の構造化データオブジェクトを置換し得る。論理フロー４００は、次いで、ブロック４２０にループバックするように進むことができる。
【００７２】
論理フロー４００は、ブロック４５０において、ボット応答メッセージのための変数を取得することができる。場合によっては、ボット応答メッセージは静的メッセージであり、ボット応答メッセージのすべての要素が静的に指定され得る。他の場合には、ボット応答メッセージが、実行時に特定の値で埋められる１つまたは複数の変数エントリを含み得る。論理フロー４００は、これらの値を取得して、ユーザ要求コンテキストに基づいて変数を指定することができる。論理フロー４００は、ブロック４５５に進むことができる。
【００７３】
論理フロー４００は、ブロック４５５において、ボット応答メッセージを送信することができる。ボット応答メッセージを送信することは、メッセージングシステムを介してユーザのクライアントデバイスにメッセージを送信することを含むことができる。ボット応答メッセージは、送信前に取得した値に設定される１つまたは複数の変数を有することができる。論理フロー４００は、次いで、ブロック４２０にループバックするように進むことができる。
【００７４】
論理フロー４００は、ブロック４６０において、会話履歴を更新することができる。会話履歴は、受信したユーザメッセージと、任意の実行されたボットアクションおよび送信されたボットメッセージとを含むように更新することができる。いくつかの実施形態では、任意のユーザメッセージの受信後、任意のボットアクションの実行後、および任意のボットメッセージの送信後に、会話履歴を直ちに更新することができることが理解されるであろう。論理フロー４００は、次いで、ブロック４０５にループバックするように進むことができる。
【００７５】
論理フロー４００は、会話の終了まで継続することができる。場合によっては、ユーザに対する実行に関する情報の提供と、任意のユーザフィードバックの受信とを含んで、ユーザ要求の実行が成功すると会話を完了し得る。場合によっては、ユーザ要求を満たすことに失敗すると会話を完了し得る。場合によっては、ユーザがユーザメッセージを提示することを停止すると会話を完了し得る。場合によっては、会話が終了し、ユーザ要求コンテキストおよび会話履歴がクリアされ、論理フロー４００が後続の会話でユーザメッセージを受信するために引き続き利用可能である。
【００７６】
図５は、ユーザ要求通信システム１００によって実行されるユーザ対ボット会話の一実施形態を示す。
ユーザ対ボット会話は、ボットサーバ５２５によって仲介され得る。ボットサーバ５２５は、メッセージングシステム用のメッセージングサーバ１１０に結合され得る。メッセージングサーバ１１０は、ボットサーバ５２５とユーザクライアント５２０との間でメッセージの送受信を行うことができる。メッセージングサーバ１１０は、ボットサーバ５２５とボットアプリケーション１９０との間で情報の送受信を行うことができ、またはボットアプリケーションフロントエンドを使用することができる。
【００７７】
ユーザクライアント５２０には、メッセージングクライアント、ボットアプリケーション１９０または複数のボットアプリケーション１９０へのアクセスのための専用クライアント、またはメッセージング機能を含む任意の他のクライアントが含まれ得る。ユーザクライアント５２０は、クライアントデバイス上で実行することができる。ユーザクライアント５２０は、クライアント通信コンポーネント５４０を使用してボットサーバ５２５とのユーザメッセージ交換５３０に参加することができる。クライアント通信コンポーネント５４０は、メッセージングシステムによるメッセージの送信によって仲介され得るクライアントフロントエンドをボットサーバ５２５に設けることができる。ユーザメッセージ交換５３０は、ユーザクライアント５２０からボットサーバ５２５へのユーザ作成メッセージの送信と、ボットサーバ５２５からユーザクライアント５２０へのボットメッセージの送信とを含むことができる。
【００７８】
ボットアプリケーション１９０は、開発者コンピュータシステム上で実行することができるようなソフトウェアプログラムを含むことができ、またはユーザ要求通信システム１００によってホストされ得る。ボットアプリケーション１９０は、ボットアプリケーションインタフェースコンポーネント５８０を介してボットサーバ５２５とのボット情報交換５９０に参加することができる。ボットアプリケーションインタフェースコンポーネント５８０は、ボットアプリケーション用のボットサーバ５２５および／またはメッセージングシステムのフロントエンドとして動作することができる。ボット情報交換５９０は、ボットサーバ５２５への会話サンプルの提示と、ボットアプリケーション１９０に対するボットアプリケーションインタフェースコンポーネント５８０によるボットＡＰＩ呼出しの実行とを含むことができる。
【００７９】
対話処理コンポーネント５６０は、自然言語機械学習（ＮＬＭＬ）コンポーネント５５０とインタフェース接続して、シーケンスモデル５１０を生成することができる。対話処理コンポーネント５６０は、シーケンスモデル５１０を使用して、ボットメッセージおよびボットアクションを含むボット応答を生成することができる。対話処理コンポーネント５６０は、クライアント通信コンポーネント５４０とボットアプリケーションインタフェースコンポーネント５８０との間の仲介者として作用することができる。ＮＬＭＬコンポーネント５５０は、既知の自然言語処理（ＮＬＰ）および機械学習（ＭＬ）技術を使用して実装することができる。
【００８０】
対話処理コンポーネント５６０は、対話サンプルリポジトリ５７０を受信することができ、対話サンプルリポジトリ５７０は、ユーザ対ボット対話の複数のサンプルを含む。対話処理コンポーネント５６０は、ボット情報交換５９０の一部としてのボットアプリケーションインタフェースコンポーネント５８０を介して、ボットアプリケーションから対話サンプルリポジトリ５７０にアクセスすることができる。対話処理コンポーネント５６０は、対話サンプルリポジトリ５７０を自然言語機械学習コンポーネント５５０に提示し、対話サンプルリポジトリ５７０を提示することに応答して、自然言語機械学習コンポーネント５５０からシーケンスモデル５１０を受信することができる。クライアント通信コンポーネント５４０、対話処理コンポーネント５６０、およびボットアプリケーションインタフェースコンポーネント５８０を含むボットサーバ５２５は、シーケンスモデル５１０に基づいてユーザ対ボット会話を実行することができる。
【００８１】
ユーザ対ボット会話（すなわち、ストーリ）は、メッセージングセッションに従って描写することができる。いくつかの実施形態では、ボットアプリケーション１９０は、メッセージセッションの中断を検出し、メッセージセッションの中断がボット情報交換５９０の一部として発生したことをボットサーバ５２５に通知する役割を果たすことができる。いくつかの実施形態では、対話処理コンポーネント５６０は、会話の意味分析および／または会話中の時間間隔の長さに依存し得る会話中断技術を使用して、メッセージングセッションの中断を検出することができる。
【００８２】
シーケンスモデル５１０に基づいてユーザ対ボット会話を実行することは、シーケンスモデル５１０をユーザ要求コンテキスト、ユーザ対ボット会話履歴、および１つまたは複数のユーザメッセージに関する意味分析情報に適用することを含むことができる。ユーザ要求コンテキストは、開発者が定義した構造化データオブジェクトに従って記憶することができ、開発者が定義した構造化データオブジェクトは、複数のフィールドを含む。これらのフィールドは、ユーザ対ボット会話中のユーザメッセージから抽出された意味分析情報に基づいて、ユーザ対ボット会話の長さにわたって反復的に決定されてもよい。ユーザ対ボット会話履歴は、ユーザ対ボット会話のためのボットアクションに加えて、ユーザメッセージおよびボットメッセージの完全な交換を含むことができる。シーケンスモデル５１０は、他の可能な用途の中で特に、メッセージとアクションとの重複を避けるために、ユーザ対ボット会話履歴を順に組み込むことができる。意味分析情報は、ＮＬＭＬコンポーネント５５０によるユーザメッセージからの意図および他の意味情報の抽出を含むことができる。
【００８３】
ユーザ対ボット会話を実行することは、クライアントデバイスからユーザメッセージを受信すること、および、ユーザメッセージおよびシーケンスモデル５１０に基づいてボット応答を生成することを含むことができる。ボット応答はボット応答メッセージを含むことができ、クライアント通信コンポーネント５４０がボット応答メッセージをクライアントデバイスに送信する。あるいは、ボット応答はボットアクションを含むことができる。いくつかの実施形態では、ボットサーバ５２５は、ホストされたメッセージングボットのボットアクションを実行することができる。他の実施形態では、ボットアプリケーションインタフェースコンポーネント５８０が、ボットアプリケーションをボットアプリケーション１９０に送信することができる。ボットアクションをボットアプリケーション１９０に送信することは、ボットＡＰＩ呼出しを実行することを含むことができる。
【００８４】
ボットアクションは、開発者サーバ上のボットアプリケーション１９０によって実行され、ボットアクションの実行の開発において開発者を解放することができる。開発者が開発者のシステムで実装して実行できる任意のアクションを、メッセージングボットを介してサービスとしてユーザに提供することができる。これにより、どのようなプラットフォーム上で実行するか、どのようなプラットフォームを用いて開発するか、ボットの実行の範囲（例えば、実行に対してボットに利用可能なリソース）、使用するプログラミング言語、どのようなＡＰＩをボットが呼び出し得るかなどにおける、開発者の制約を取り除き得る。
【００８５】
ユーザメッセージおよびシーケンスモデル５１０に基づいてボット応答を生成することは、ユーザメッセージに関する意味分析情報を生成することと、意味分析情報にシーケンスモデル５１０を適用することに基づいてボット応答を生成することとを含むことができる。意味分析情報は、ＮＬＰ技術を使用してユーザメッセージからの意図を抽出するものであってもよい。
【００８６】
ユーザ要求コンテキストは、メッセージングボットによるユーザとの会話に従って更新することができる。対話処理コンポーネント５６０は、現在のユーザ要求コンテキストに関連してシーケンスモデルを用いてユーザメッセージを処理することに基づいて、更新されたユーザ要求コンテキストを生成することができる。いくつかの実施形態では、ユーザ要求コンテキストの更新は、ボットアプリケーション１９０によって実行されてもよい。対話処理コンポーネント５６０は、現在のユーザ要求コンテキストに関連してシーケンスモデル５１０を用いてユーザメッセージを処理することに基づいて、ユーザ要求コンテキスト更新を生成することができる。ボットアプリケーションインタフェースコンポーネント５８０は、ボットアプリケーション１９０にユーザ要求コンテキスト更新を送信し、応答するボットアプリケーション１９０から更新されたユーザ要求コンテキストを受信することができる。対話処理コンポーネント５６０は、将来のユーザメッセージを処理する際に使用するために、更新されたユーザ要求コンテキストを記憶することができる。
【００８７】
開発者システム上のボットアクションの実行と同様に、開発者システム上でのコンテキストの更新は、ボットアクションに基づいてコンテキストがどのように更新されるかという点で開発者を解放することができる。更に、アクションの実行とコンテキストへの更新とを組み合わせることにより、機械学習は、ＮＬＭＬコンポーネント５５０が単一のアクションとして動作することを学習することができるユニットにロジックの一部をカプセル化することによって、１つまたは複数のＡＰＩ呼出し、１つまたは複数の計算、コンテキストに対する１つまたは複数の変更などの単一のボットアクションの一部として生じ得る複数のサブアクションを１つにまとめなければならないのとは異なって、より実用的となり得る。これにより、単一のボットアクションにカプセル化され得る別々のステップをつなげてまとめるようにボットを訓練するのに使用され得る何百ものストーリが存在しない機能モデルをＮＬＭＬコンポーネント５５０が学習することが、より実用的になり得る。
【００８８】
ボット応答の生成は、シーケンスモデル５１０を使用して起こり得るボット応答の集合を生成するために、ユーザ対ボット会話の現在の状態を処理することを含むことができる。シーケンスモデル５１０は、ユーザ対ボット対話の複数のサンプルの表現を含むことができる。シーケンスモデル５１０を使用してユーザ対ボット会話の現在の状態を処理することにより、現在の状態に適合する次のステップにシーケンスモデル５１０が最もよく対応することを示す、ユーザ対ボット対話の複数のサンプルからの複数のボット応答を選択する結果が得られる。
【００８９】
ただし、場合によっては、これらの選択されたボット応答の一部が不適切であることがある。したがって、ボット応答を生成することは、各々が応答ランク付けスコアに関連する複数の推奨ボット応答を受信することと、複数の推奨ボット応答の１つまたは複数の無効なボット応答を除外して複数の後処理された推奨ボット応答を生成することと、ボット応答を、応答ランク付けスコアが最も高いポスト処理された推奨ボット応答のうちの推奨ボット応答として選択することとを含む。
【００９０】
場合によっては、１つまたは複数の無効なボット応答を、推奨ボットアクションに対する完全なコンテキストの欠如に基づいて除外し得る。ボットアプリケーション１９０によってサポートされる各ボットアクションは、ユーザ要求コンテキストを記憶する構造化データオブジェクトのフィールドに記憶された情報を使用することができる。ユーザ要求通信システム１００に対するメッセージングボットの登録は、サポートされたボット動作の指定を含むことができる。サポートされるボットアクションの指定は、ボットアプリケーションインタフェースコンポーネント５８０がＡＰＩ呼出しを使用して、ボットアプリケーション１９０を用いたボットアクションと、ＡＰＩ呼出しを行う前に指定されなければならないこととなっているボットアクションを実行する際に使用される構造化データオブジェクトのフィールドとをインスタンス化することを含むことができる。シーケンスモデル５１０は、これらの制限を組み込んでいない可能性があり、従って、ボットアクションに対応する推奨ボット応答を、構造化データオブジェクトの指定されたフィールドのすべてがそのフィールドに対する入力値を有していたのではないとの対話処理コンポーネント５６０による決定に基づいて、対話処理コンポーネント５６０により、後処理ステップにおいて除外し得る。
【００９１】
いくつかの実施形態では、ユーザ要求通信システム１００は、一貫した会話の意味構造をモデル化する一貫性モデルを含むことができる。この一貫性モデルは、複数の一貫したチャット会話を含む一貫したチャット会話リポジトリに基づいて生成され得る。これらの一貫したチャット会話は、ユーザ要求通信システム１００の人間のオペレータによって選択され得る。一貫性モデルは、人間が自然であるとみなす受け答えに対応する人間の会話の一貫した流れをモデル化するように構築され得る。例えば、一貫性モデルは、現在のトピックの解決を伴わずに会話を次のトピックに移動させないようにすることができる。一貫性モデルは、サービス要求情報（例えば、要求されたサービス、要求されたサービスオプション）からサービス性能情報（例えば、ピックアップ／配信アドレス、連絡先電話番号など）を決めるように、ユーザ対ボット会話を導くことができる。例えば、ピザを注文するためのメッセージングボットは、ピザをどのようにどこに配達すべきかの設定を決める前または後に、連続した一連の質問でピザの構成を決めるよう案内され得る。
【００９２】
対話処理コンポーネント５６０が一貫性モデルを使用して、複数の推奨ボット応答のそれぞれについて一貫性スコアを生成し得る。一貫性スコアは、複数の推奨ボット応答のそれぞれがユーザ対ボット会話の既存の履歴とどの程度一貫性があるかの、０と１との間の評価からなり得る。一貫性スコアは、複数の推奨ボット応答のそれぞれの追加があると、ユーザ対ボット会話がどの程度一貫性があるかの、０と１との間の評価からなり得る。したがって、複数の推奨ボット応答のそれぞれについての応答ランク付けスコアは、複数の推奨ボット応答のそれぞれについての一貫性スコアに基づいて決定され、最高の応答ランク付けスコアを有する推奨ボット応答が使用に選択される。
【００９３】
ユーザ対ボット会話を実行することは、シーケンスモデル５１０に基づいてユーザ要求コンテキストの反復的な更新をすることを含むことができる。ユーザ要求コンテキストを反復的に更新して、ボットアクションの実行のためにユーザ要求コンテキスト内の特定の情報の可用性に依存するボットアクションを用いて、メッセージングボットに参加するユーザの意図および嗜好を決定し得る。ユーザ対ボット会話は、ボットメッセージの送信およびユーザメッセージの受信を介してユーザからこの情報を収集する試みであり得る。したがって、ユーザ対ボット会話を実行することは、メッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換してユーザ要求コンテキストを生成することを含むことができる。
【００９４】
ユーザ対ボット会話を実行することは、メッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換して推論されたユーザ要求アクションを生成することを含むことができる。この推論されたユーザ要求アクションは、シーケンスモデル５１０に基づいて生成された１つまたは複数のボット動作を含むことができる。次に、ボットアプリケーションインタフェースコンポーネント５８０は、ユーザ要求コンテキストに基づいて、推論されたユーザ要求アクションを実行することができる。推論されたユーザ要求アクションはＡＰＩ呼出しに基づいて定義することができ、ＡＰＩ呼出しの１つまたは複数のパラメータはユーザ要求コンテキストに基づいて定義される。
【００９５】
対話サンプルリポジトリ５７０の場合、ユーザ対ボット対話のサンプルのうちの１つまたは複数は、開発者が起草したユーザ対ボット仮想対話を含むことができる。これらの開発者が起草したユーザ対ボット仮想対話は、メッセージングボットの優先動作を記述するために開発者によって生成され得る。ボットアプリケーションインタフェースコンポーネント５８０は、開発者コンソールを介して、開発者が起草した１つまたは複数のユーザ対ボット対話を受信することができる。
【００９６】
対話サンプルリポジトリ５７０の場合、ユーザ対ボット対話の１つまたは複数は、使用ベースのユーザ対ボット対話を含むことができる。これらの、使用ベースのユーザ対ボット対話は、開発者がスクリプトを作成するのではなく、ユーザに対するメッセージングボットの実行から開発され得る。ただし、開発者は、ユーザに対するメッセージングボットの会話を、サンプルとして展開する前に編集することができる。
【００９７】
ボットアプリケーションインタフェースコンポーネント５８０は、製造段間で実行されたユーザ対ボット対話から生成された１つまたは複数の製造ユーザ対ボット対話を受信し得る。開発者コンソールは、１つまたは複数の製造ユーザ対ボット対話を表示し、１つまたは複数の製造ユーザ対ボット対話の開発者による検証を受信して、使用ベースのユーザ対ボット対話を生成することができる。対話処理コンポーネント５６０は、１つまたは複数の使用ベースのユーザ対ボット対話の開発者による検証を受信することに応答して、対話サンプルリポジトリ５７０に１つまたは複数の使用ベースのユーザ対ボット対話を含めることができる。
【００９８】
場合によっては、開発者は、製造ユーザ対ボット対話を編集してから、それを使用ベースのユーザ対ボット対話として検証して、対話サンプルリポジトリ５７０に含めてもよい。開発者コンソールは、１つまたは複数の製造ユーザ対ボット対話のための１つまたは複数の開発者による修正を受信して、使用ベースのユーザ対ボット対話を生成することができる。したがって、対話サンプルリポジトリ５７０に含まれるユーザ対ボットの対話のバージョンは、開発者による修正を含むことができる。場合によっては、これらの開発者による修正を行って、個人情報からなる記録されたユーザ対ボット対話を削除し得る。ユーザのプライバシーを保護するために、個人情報を除外し得る。要求特定情報を保持し、しかもユーザ要求コンテキストを決定する基となるユーザ対ボット対話の部分を示すように注釈付けをし得る。
【００９９】
いくつかの実施形態では、ＮＬＭＬコンポーネント５５０は、ユーザ対ボット対話の注釈に依存して、ユーザ要求コンテキストに追加するためにユーザメッセージから抽出すべき情報を決定してもよい。開発者コンソールは、１つまたは複数の製造ユーザ対ボット対話の１つまたは複数の開発者による注釈を受信し、使用ベースのユーザ対ボット対話を生成することができる。対話処理コンポーネント５６０は、対話サンプルリポジトリ５７０に、１つまたは複数の使用ベースのユーザ対ボット対話とともに、１つまたは複数の開発者による注釈を含めることができる。１つまたは複数の開発者による注釈は、コンテキスト更新注釈を含むことができる。
【０１００】
いくつかの実施形態では、意味情報の抽出は、構造化データオブジェクトのフィールドの値の決定を対象としてもよい。したがって、意味情報の抽出は、教師付き情報抽出であり、管理は、自然言語処理をこれらのフィールドの値の決定のみに制限することに基づいている。このため、対話サンプルリポジトリ５７０、したがってシーケンスモデル５１０に表される異なるボット応答を区別することは、構造化データオブジェクトのフィールドに基づいてのみ実行され得る。
【０１０１】
ただし、他の実施形態では、非構造化意味情報の教師なし情報抽出を使用してもよい。対話処理コンポーネント５６０がシーケンスモデル５１０に基づいてユーザ対ボット会話を実行することは、抽出された教師なし情報を１つまたは複数の推奨ボット応答に組み込むことを含むことができる。ＮＬＭＬコンポーネント５５０および対話処理コンポーネント５６０は、教師なし情報を抽出し、教師なし情報を使用して、構造化意味情報の教師付き情報抽出のみに基づいて区別されない可能性がある異なるボット応答を区別することができる。推奨ボット応答の選択、または推奨ボット応答のランク付けのいずれかは、この教師なし情報を使用し得る。非構造化意味情報は、ユーザ対ボット会話を実行するためのシーケンスモデル５１０への追加の入力を含むことができる。したがって、シーケンスモデル５１０に基づいてユーザ対ボット会話を実行することは、シーケンスモデル５１０をユーザ要求コンテキスト、ユーザ対ボット会話履歴、１つまたは複数のユーザメッセージの意味分析情報、最新のユーザメッセージから抽出された教師なし情報に適用することを含むことができる。
【０１０２】
例えば、ユーザの丁寧な開始発言に対して、ボット応答メッセージサンプル内の丁寧さの含意の非構造化検出に対するユーザの開始発言からの丁寧さの意図の非構造化抽出によって、メッセージングボットによる丁寧な開始応答をマッチングさせることができる。一般に、ボット応答を分析して、ボット応答のための教師なし意味情報を決定し得る。ユーザメッセージを分析して、ユーザメッセージの教師なし意味情報を決定し得る。教師なし意味情報を比較および使用して、ボット応答を選択および／またはランク付けし得る。種々のランク付けスコア、またはランク付け重みの数学的組み合わせなどによって、種々のランク付け基準を組み合わせ得る。
【０１０３】
クロスメッセンジャボット学習を利用してもよい。ユーザ対ボット会話の一部は、メッセージングボットによって提供される特定のサービスに依存しなくてよい。例えば、会話の開始時または終了時のフレンドリーな冗談は、複数のボット間に共通であり得る。いくつかの実施形態では、あるメッセージングボットのシーケンスモデル５１０は、他のメッセージングボットの会話サンプルに基づいて生成されたサービスに依存しないボット応答を組み込み得る。代替的または追加的に、いくつかの実施形態では、同様のサービスに関してクロスメッセンジャボット学習を利用することができ、サービス固有のボット応答は、別のメッセージングボットのシーケンスモデル５１０を生成するときに含められる、あるメッセージングボットの会話サンプルに基づいて生成される。
【０１０４】
いくつかの実施形態では、同じサービスまたは異なるサービスのいずれかについての複数のメッセージングボットの会話サンプルをまとめて結合して、シーケンスモデル５１０を生成することができる。複数のメッセージングボットが同一または類似のサービスを提供する場合の会話サンプルを結合してまとめる場合に、得られたシーケンスモデル５１０を展開することにより、一メッセージングボットの単一の会話サンプルセットの場合に提供されるものを超えて、そのサービスに対するユーザ要求通信システム１００の品質を向上させることができる。複数のメッセージングボットが異なるサービスを提供する場合の会話サンプルを結合してまとめる場合に、得られたシーケンスモデル５１０を展開することにより、単一のメッセージング会話における異なるタイプのサービス要求に応答する際のユーザ要求通信システム１００の柔軟性を向上させることができる。複数のメッセージングボットの会話サンプルを結合してまとめる場合に、ボットアクションは、特定のメッセージングボット、したがってボットアプリケーションに依然として固有であり、ボットアプリケーションは、使用されている選択されたボットアクションの特定のボットＡＰＩ呼出しに対応し得る。
【０１０５】
本明細書では、開示されるアーキテクチャの新規な態様を実施するための例示的な方法を示す一式のフローチャートを記載している。本明細書で示す１つまたは複数の方法は、説明を簡単にするために、例えばフローチャートまたはフロー図の形式で、一連の動作として図示および記載しているが、それらの方法は、その動作の順序に限定されるものではなく、本発明によるいくつかの動作は、本明細書で図示および記載しているのとは異なる順序で、かつ／または他の動作と同時に実施してよいことは、理解および認識されるべきである。例えば、方法は、代替的に、状態図のような一連の相関した状態または事象として表すことができることは、当業者であれば理解および認識できるであろう。また、新規な実施のために、方法に示すすべての動作が必要であるとは限らない。
【０１０６】
図６は、論理フロー６００の１つの実施形態を示す。論理フロー６００は、本明細書で説明する１つまたは複数の実施形態によって実行される一部または全部の動作を表す。
図６に示される図示の実施形態では、論理フロー６００は、ブロック６０２においてユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信することができる。
【０１０７】
論理フロー６００は、ブロック６０４において、対話サンプルリポジトリを自然言語機械学習コンポーネントに提示することができる。
論理フロー６００は、ブロック６０６において対話サンプルリポジトリを提示することに応答して、自然言語機械学習コンポーネントからシーケンスモデルを受信することができる。
【０１０８】
論理フロー６００は、ブロック６０８において、シーケンスモデルに基づいてユーザ対ボット会話を実行することができる。
実施形態はこの例に限定されない。
【０１０９】
図７は、集中型システム７００のブロック図を示す。集中型システム７００は、単一集中型サーバデバイス７２０の全範囲などの、単一の計算エンティティ内のユーザ要求通信システム１００のための構造および／または動作のうちのいくつかまたは全てを実装することができる。
【０１１０】
集中型サーバデバイス７２０は、ユーザ要求通信システム１００のための情報を受信し、処理し、送信することができる任意の電子デバイスを含むことができる。電子デバイスの例は、限定ではないが、ウルトラモバイルデバイス、モバイルデバイス、携帯情報端末（ＰＤＡ）、モバイルコンピューティングデバイス、スマートフォン、電話、デジタル電話、携帯電話、電子書籍リーダ、ハンドセット、ワンウェイページャ、ツーウェイページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家庭用電子機器、プログラム可能な家庭用電子機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、無線アクセスポイント、基地局、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはそれらの組合せを含むことができる。実施形態は、これに限定されない。
【０１１１】
集中型サーバデバイス７２０は、処理コンポーネント７３０を使用して、ユーザ要求通信システム１００のための処理動作またはロジックを実行することができる。処理コンポーネント７３０は、様々なハードウェア要素、ソフトウェア要素、または双方の組合せを含むことができる。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含むことができる。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、単語、値、シンボル、またはそれらの任意の組合せを含むことができる。実施形態がハードウェア要素を用いて実装されるか、かつ／またはソフトウェア要素を用いて実装されるかを判断することは、所望の計算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度および他の設計または性能の制約等の任意の数の要因に従って、所与の実施態様にとって望ましいとおりに変動することができる。
【０１１２】
集中型サーバデバイス７２０は、通信コンポーネント７４０を使用して、ユーザ要求通信システム１００のための通信動作またはロジックを実行することができる。通信コンポーネント７４０は、パケット交換ネットワーク（例えば、インターネット等の公衆ネットワーク、社内イントラネット等のプライベートネットワーク等）、回路交換網（例えば、公衆交換電話網）、またはパケット交換ネットワークおよび回路交換網の（適切なゲートウェイおよび変換器を用いた）組合せ等と共に用いるのに適した技法等の、任意周知の通信技法およびプロトコルを実施することができる。通信コンポーネント７４０は、１つまたは複数の通信インタフェース、ネットワークインタフェース、ネットワークインタフェースカード（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）、無線通信デバイス、無線送信機／無線受信機（トランシーバ）、有線および／または無線通信媒体、物理的コネクタ等の様々なタイプの標準的な通信要素を含むことができる。限定ではないが、例として、通信媒体７１２は、有線通信媒体および無線通信媒体を含む。有線通信媒体の例は、有線、ケーブル、金属導線、プリント回路基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ、伝搬信号等を含むことができる。無線通信媒体の例は、音響、無線周波数（ＲＦ）スペクトル、赤外線および他の無線媒体を含むことができる。
【０１１３】
集中型サーバデバイス７２０は、通信コンポーネント７４０により通信信号７１４を使用して通信媒体７１２を介して他のデバイスと通信することができる。デバイスは、所与の実施に関して所望されるように集中型サーバデバイス７２０の内部または外部に存在し得る。集中型サーバデバイス７２０は、ボットサーバ５２５、自然言語機械学習コンポーネント５５０、およびボットアプリケーション１９０を実装することができる。このことは、メッセージングシステムによってボットアプリケーション１９０を実行する実施形態を含むことができる。いくつかの実施形態では、集中型サーバデバイス７２０を、ボットプロバイダによって実行されるボットアプリケーション１９０とともに使用することができる。集中型サーバデバイス７２０は、それぞれがユーザクライアント５２０を実行する複数のユーザクライアントデバイス７２５と通信することができる。
【０１１４】
図８は、分散型システム８００のブロック図を示している。分散型システム８００は、ユーザ要求通信システム１００について、その構造および／またはオペレーションの部分を複数のコンピューティングエンティティに分散させることができる。分散型システム８００の例として、限定するものではないが、クライアントサーバアーキテクチャ、三層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散型システムを含むことができる。実施形態は、これに限定されない。
【０１１５】
分散型システム８００は、複数のメッセージングサーバデバイス８１０、ボットサーバデバイス８５０、および自然言語機械学習サーバデバイス８６０を備えることができる。概して、サーバデバイス８１０、８５０、および８６０は、図８を参照して説明したような集中型サーバデバイス８２０と同じまたは類似したものであり得る。例えば、サーバデバイス８１０、８５０、および８６０は、それぞれ、処理コンポーネント８３０および通信コンポーネント８４０を有することができ、それらは、図８を参照して説明したような処理コンポーネント８３０および通信コンポーネント８４０とそれぞれ同じまたは類似したものである。他の例では、サーバデバイス８１０、８５０、および８６０は、通信コンポーネント８４０を介して、通信信号８１４を用いて通信媒体８１２を通して通信することができる。
【０１１６】
サーバデバイス８１０は、記載された実施形態に従って様々な方法を実行するように動作する１つまたは複数のプログラムを備えるかまたは使用することができる。１つの実施形態では、例えば、メッセージングサーバデバイス８１０は、複数のボットサーバ５２５を実装することができる。
【０１１７】
ボットサーバデバイス８５０は、記載された実施形態に従って様々な方法を実行するように動作する１つまたは複数のプログラムを備えるかまたは使用することができる。１つの実施形態では、例えば、ボットサーバデバイス８５０は、複数の自然言語機械学習コンポーネント５５０を実装することができる。
【０１１８】
自然言語機械学習（ＮＬＭＬ）サーバデバイス８６０は、記載された実施形態に従って様々な方法を実行するように動作する１つまたは複数のサーバプログラムを備えるかまたは使用することができる。１つの実施形態では、例えば、自然言語機械学習サーバデバイス８６０は、複数のメッセージングサーバ８１５を実装することができる。
【０１１９】
サーバデバイス８１０、８５０、および８６０は、複数のボットアプリケーション８９０と通信することができる。複数のボットアプリケーション８９０の各々は、異なる自動サービスを提供することができるが、競争を提供するなどの自動サービスの複製もあり得る。サーバデバイス８１０、８５０、および８６０は、それぞれがユーザクライアント５２０を実行する複数のユーザクライアントデバイス８２５と通信することができる。
【０１２０】
図９は、上記に記載の様々な実施形態を実施するのに適した例示的なコンピューティングアーキテクチャ９００の一実施形態を示す。１つの実施形態では、コンピューティングアーキテクチャ９００は、電子デバイスを備えるか、電子デバイスの一部として実施されることが可能である。電子デバイスの例は、中でも、図７、８を参照して説明したものを含むことができる。実施形態は、これに限定されない。
【０１２１】
本出願において用いられるとき、「システム」および「コンポーネント」という語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータに関係したエンティティを指すことを意図され、それらの例が、例示的なコンピューティングアーキテクチャ９００によって提供される。例えば、コンポーネントは、限定ではないが、プロセッサにおいて実行されるプロセス、プロセッサ、ハードディスクドライブ、（光学および／または磁気記録媒体の）マルチ記録ドライブ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび／またはコンピュータであり得る。例示のために、サーバ上で実行されるアプリケーションおよびサーバの双方がコンポーネントであり得る。１つまたは複数のコンポーネントがプロセスおよび／または実行スレッド内に常駐することができ、コンポーネントは、１つのコンピュータ上に局在することができ、および／または２つ以上のコンピュータ間で分散され得る。更に、コンポーネントは、動作を協調させるように、様々なタイプの通信媒体によって互いに通信可能に結合され得る。協調は、情報の一方向または双方向の交換を含むことができる。例えば、コンポーネントは、通信媒体により通信される信号の形態で情報を通信することができる。情報は、様々な信号線に割り当てられる信号として実施され得る。そのような割り当てにおいて、各メッセージは信号である。一方、更なる実施形態は、代替的にデータメッセージを用いることができる。そのようなデータメッセージは、様々な接続にわたって送信され得る。例示的な接続は、パラレルインタフェース、シリアルインタフェースおよびバスインタフェースを含む。
【０１２２】
コンピューティングアーキテクチャ９００は、１つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インタフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント、電源等の様々な一般的なコンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ９００による実施に限定されない。
【０１２３】
図９に示すように、コンピューティングアーキテクチャ９００は、処理ユニット９０４、システムメモリ９０６、およびシステムバス９０８を備える。処理ユニット９０４は、限定ではないが、ＡＭＤ（登録商標）プロセッサ、Ａｔｈｌｏｎ（登録商標）プロセッサ、Ｄｕｒｏｎ（登録商標）プロセッサおよびＯｐｔｅｒｏｎ（登録商標）プロセッサ；ＡＲＭ（登録商標）のアプリケーションプロセッサ、組込み型プロセッサおよびセキュアプロセッサ；ＩＢＭ（登録商標）およびＭｏｔｏｒｏｌａ（登録商標）のＤｒａｇｏｎＢａｌｌ（登録商標）プロセッサおよびＰｏｗｅｒＰＣ（登録商標）プロセッサ；ＩＢＭおよびＳｏｎｙ（登録商標）のセルプロセッサ；Ｉｎｔｅｌ（登録商標）のＣｅｌｅｒｏｎ（登録商標）プロセッサ、Ｃｏｒｅ（２）Ｄｕｏ（登録商標）プロセッサ、Ｉｔａｎｉｕｍ（登録商標）プロセッサ、Ｐｅｎｔｉｕｍ（登録商標）プロセッサ、Ｘｅｏｎ（登録商標）プロセッサおよびＸＳｃａｌｅ（登録商標）プロセッサ；ならびに同様なプロセッサを含む様々な市販のプロセッサのうちの任意のものであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサ、および他のマルチプロセッサアーキテクチャも処理ユニット９０４として用いられることが可能である。
【０１２４】
システムバス９０８は、限定ではないがシステムメモリ９０６を含むシステムコンポーネントのためのインタフェースを処理ユニット９０４に提供する。システムバス９０８は、多岐にわたる市販のバスアーキテクチャのうちの任意のものを用いてメモリバス（メモリコントローラを有するかまたは有しない）、周辺バス、およびローカルバスに更に相互接続することができるいくつかのタイプのバス構造のうちの任意のものとすることができる。インタフェースアダプタは、スロットアーキテクチャを介してシステムバス９０８に接続することができる。例示的なスロットアーキテクチャは、限定ではないが、アクセラレーテッドグラフィックスポート（ＡＧＰ）、カードバス、（拡張）業界標準アーキテクチャ（（Ｅ）ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＣＡ）、ＮｕＢｕｓ、周辺コンポーネント相互接続（拡張）（ＰＣＩ（Ｘ））、ＰＣＩエクスプレス、パーソナルコンピュータメモリカード国際組織（ＰＣＭＣＩＡ）等を含むことができる。
【０１２５】
コンピューティングアーキテクチャ９００は、様々な製造品を含むかまたは実装することができる。製造品は、ロジックを記憶するためのコンピュータ可読記録媒体を含むことができる。コンピュータ可読記録媒体の例は、揮発性メモリまたは不揮発性メモリ、取外し可能または非取外し可能メモリ、消去可能または非消去可能メモリ、書き込み可能または書き換え可能メモリ等を含む、電子データを記憶することが可能な任意の有形媒体を含むことができる。ロジックの例は、ソースコード、コンパイルされたコード、解釈実行されたコード、実行可能コード、スタティックコード、ダイナミックコード、オブジェクト指向コード、視覚コード等の任意の適切なタイプのコードを用いて実施される実行可能なコンピュータプログラム命令を含むことができる。実施形態はまた、１つまたは複数のプロセッサによって読出しおよび実行されて、本明細書に記載の動作の実行を可能にすることができる、非一時的コンピュータ可読媒体に含まれるかまたは非一時的コンピュータ可読媒体上にある命令として少なくとも部分的に実施されることが可能である。
【０１２６】
システムメモリ９０６は、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリ等のポリマーメモリ、オーボニックメモリ（ｏｖｏｎｉｃ  ｍｅｍｏｒｙ）、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ）メモリ、磁気カードまたは光カード、独立ディスクの冗長アレイ（ＲＡＩＤ）ドライブ等のデバイスのアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ）および情報を記憶するのに適した任意の他のタイプの記録媒体等の１つまたは複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読記録媒体を含むことができる。図９に示す例示される実施形態では、システムメモリ９０６は、不揮発性メモリ９１０および／または揮発性メモリ９１２を含むことができる。基本入出力システム（ＢＩＯＳ：Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）を不揮発性メモリ９１０に記憶することができる。
【０１２７】
コンピュータ９０２は、内部（または外部）ハードディスクドライブ（ＨＤＤ）９１４、取外し可能な磁気ディスク９１８に対し読出しまたは書き込みを行うための磁気フロッピー（登録商標）ディスクドライブ（ＦＤＤ）９１６、および取外し可能な光ディスク９２２（例えば、ＣＤ−ＲＯＭまたはＤＶＤ）に対し読出しまたは書き込みを行うための光ディスクドライブ９２０を含む１つまたは複数の低速メモリユニットの形態で様々なタイプのコンピュータ可読記録媒体を備えることができる。ＨＤＤ９１４、ＦＤＤ９１６および光ディスクドライブ９２０は、それぞれＨＤＤインタフェース９２４、ＦＤＤインタフェース９２６、および光ドライブインタフェース９２８によってシステムバス９０８に接続されることが可能である。外部ドライブ実装のためのＨＤＤインタフェース９２４は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ１３９４インタフェース技術の少なくとも一方または双方を含むことができる。
【０１２８】
ドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令等の揮発性記録および／または不揮発性記録を提供する。例えば、オペレーティングシステム９３０、１つまたは複数のアプリケーションプログラム９３２、他のプログラムモジュール９３４およびプログラムデータ９３６を含む複数のプログラムモジュールがドライブおよびメモリユニット９１０、９１２に記憶され得る。１つの実施形態では、１つまたは複数のアプリケーションプログラム９３２、他のプログラムモジュール９３４、およびプログラムデータ９３６は、例えば、ユーザ要求通信システム１００の様々なアプリケーションおよび／またはコンポーネントを含むことができる。
【０１２９】
ユーザは、１つまたは複数の有線／無線入力デバイス、例えば、キーボード９３８、およびマウス９４０等のポインティングデバイスを通じてコンピュータ９０２にコマンドおよび情報を入力することができる。他の入力デバイスは、マイクロフォン、赤外線（ＩＲ）リモートコントロール、無線周波数（ＲＦ）リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン（例えば、容量型、抵抗型等）、トラックボール、トラックパッド、センサ、スタイラス等を含むことができる。これらのおよび他の入力デバイスは、多くの場合に、システムバス９０８に結合された入力デバイスインタフェース９４２を通じて処理ユニット９０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインタフェース等の他のインタフェースによって接続されてもよい。
【０１３０】
モニタ９４４または他のタイプの表示デバイスも、ビデオアダプタ９４６等のインタフェースを介してシステムバス９０８に接続される。モニタ９４４は、コンピュータ９０２に対し内部または外部にあり得る。モニタ９４４に加えて、コンピュータは通常、スピーカ、プリンタ等の他の周辺出力デバイスを備える。
【０１３１】
コンピュータ９０２は、リモートコンピュータ９４８等の１つまたは複数のリモートコンピュータへの有線および／または無線通信を介して論理接続を用いてネットワーク化された環境において動作することができる。リモートコンピュータ９４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサに基づく娯楽機器、ピアデバイス、または他の共通ネットワークノードであり得、通常、コンピュータ９０２について記載した要素のうちの多くまたは全てを備えるが、簡潔にするために、メモリ／記録デバイス９５０のみが示されている。描かれる論理接続は、ローカルエリアネットワーク（ＬＡＮ）９５２および／またはより大きなネットワーク、例えば広域ネットワーク（ＷＡＮ）９５４への有線／無線接続を含む。そのようなＬＡＮおよびＷＡＮネットワーキング環境は、事務所および会社において一般的であり、イントラネット等の、企業規模のコンピュータネットワークを容易にする。これらは全て、グローバル通信ネットワーク、例えばインターネットに接続することができる。
【０１３２】
ＬＡＮネットワーキング環境において用いられるとき、コンピュータ９０２は、有線および／または無線通信ネットワークインタフェースまたはアダプタ９５６を通じてＬＡＮ９５２に接続される。アダプタ９５６は、アダプタ９５６の無線機能と通信するためにアダプタ９５６上に配置された無線アクセスポイントを含んでもよいＬＡＮ９５２への有線および／または無線通信を容易にすることができる。
【０１３３】
ＷＡＮネットワーキング環境で使用される場合、コンピュータ９０２は、モデム９５８を含むことができ、またはＷＡＮ９５４上の通信サーバに接続され得るか、またはインターネットなどによってＷＡＮ９５４上で通信を確立するための他の手段を有する。内部または外部の、有線および／または無線デバイスであり得るモデム９５８は、入力デバイスインタフェース９４２を介してシステムバス９０８に接続する。ネットワーク化された環境では、コンピュータ９０２について述べられたプログラムモジュールまたはその一部分をリモートメモリ／記録デバイス９５０に記憶することができる。示されるネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段が用いられてもよいことが理解されるであろう。
【０１３４】
コンピュータ９０２は、ＩＥＥＥ８０２系規格を用いて、無線通信（例えば、ＩＥＥＥ８０２．１１オーバーザエアー変調技法）において動作可能に配置される無線デバイス等の、有線および無線デバイスまたはエンティティと通信するように動作可能である。これは、少なくとも、中でも、Ｗｉ−Ｆｉ（または無線フィデリティ）、ＷｉＭａｘおよびＢｌｕｅｔｏｏｔｈ（登録商標）の無線通信技術を含む。このため、この通信は従来のネットワークと同じように予め定義された通信構造であり得るか、または、単に少なくとも２つのデバイスの間におけるアドホック通信であり得る。Ｗｉ−Ｆｉネットワークは、安全で、信頼性が高く、高速な無線接続を提供するＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇ、ｎ等）と称される無線技術を用いる。Ｗｉ−Ｆｉネットワークはコンピュータを互いに、インターネットに、および有線ネットワーク（ＩＥＥＥ８０２．３関連の媒体および機能を用いる）に接続するのに用いられ得る。
【０１３５】
図１０は、上記の様々な実施形態を実施するのに適した例示的な通信アーキテクチャ１０００のブロック図を示す。この通信アーキテクチャ１０００は、トランスミッタ、レシーバ、トランシーバ、無線通信デバイス、ネットワークインタフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源等の様々な一般的な通信要素を含む。しかしながら、本発明の実施形態は通信アーキテクチャ１０００による実施に限定されない。
【０１３６】
図１０に示されるように、通信アーキテクチャ１０００は１つまたは複数のクライアント１００２およびサーバ１００４を含む。クライアント１００２は、１つまたは複数のユーザクライアント５２０および／または１つまたは複数のボットアプリケーション１９０を実装することができる。サーバ１００４は、１つまたは複数のボットサーバ５２５、１つまたは複数の自然言語機械学習コンポーネント５５０、および／または１つまたは複数のメッセージングサーバ８１５を実装することができる。クライアント１００２およびサーバ１００４は、１つまたは複数のそれぞれのクライアントデータストア１００８およびサーバデータストア１０１０に動作可能に接続されている。これらは、クッキーおよび／または関連付けられたコンテキスト情報等のそれぞれのクライアント１００２およびサーバ１００４にローカルな情報を記憶するために利用されることが可能である。
【０１３７】
クライアント１００２およびサーバ１００４は通信フレームワーク１００６を用いて互いの間で情報を通信することができる。通信フレームワーク１００６は任意の既知の通信技法およびプロトコルを実装することができる。通信フレームワーク１００６は、パケット交換網（例えば、インターネット等の公衆ネットワーク、社内イントラネット等のプライベートネットワーク等）、回線交換網（例えば、公衆交換電話網）、またはパケット交換網と回線交換網との組合せ（適切なゲートウェイおよび変換器を備える）として実装されることが可能である。
【０１３８】
通信フレームワーク１００６は、通信ネットワークを受け入れ、通信ネットワークと通信し、通信ネットワークに接続するように構成される様々なネットワークインタフェースを実施することができる。ネットワークインタフェースは、特殊な形態の入出力インタフェースと見なされ得る。ネットワークインタフェースは、限定ではないが、直接接続、イーサネット（例えば、シック、シン、ツイストペア１０／１００／１０００ＢａｓｅＴ等）、トークンリング、無線ネットワークインタフェース、セルラーネットワークインタフェース、ＩＥＥＥ８０２．１１ａ−ｘネットワークインタフェース、ＩＥＥＥ８０２．１６ネットワークインタフェース、ＩＥＥＥ８０２．２０ネットワークインタフェース等を含む接続プロトコルを用いることができる。更に、様々な通信ネットワークタイプと関わるために複数のネットワークインタフェースが用いられ得る。例えば、ブロードキャスト、マルチキャストおよびユニキャストネットワークによる通信を可能にするために、複数のネットワークインタフェースが用いられることが可能である。処理要件がより高い速度およびより多くの容量を指示する場合、クライアント１００２およびサーバ１００４によって必要とされる通信帯域幅をプールし、負荷分散し、他の形で増大させるために、分散ネットワークコントローラアーキテクチャが同様に利用されることが可能である。通信ネットワークは、限定ではないが、直接相互接続、セキュア化されたカスタム接続、プライベートネットワーク（例えば、社内イントラネット）、公衆ネットワーク（例えば、インターネット）、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネット上のノードとして動作しているミッション（ＯＭＮＩ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク、セルラーネットワークおよび他の通信ネットワークを含む有線および／または無線ネットワークのうちの任意の１つまたはそれらの組合せであり得る。
【０１３９】
図１１は、ユーザ要求通信システム１００のようなマルチキャリアＯＦＤＭシステムで使用するためのデバイス１１００の一実施形態を示している。デバイス１１００は、例えば、ユーザ要求通信システム１００を参照して説明したようなソフトウェアコンポーネント１１６０、および／または論理回路１１３５を実装することができる。論理回路１１３５は、ユーザ要求通信システム１００について説明したオペレーションを実行するための物理回路を含み得る。図１１に示すように、デバイス１１００は、無線インタフェース１１１０と、ベースバンド回路１１２０と、コンピューティングプラットフォーム１１３０とを備え得るが、ただし実施形態は、この構成に限定されない。
【０１４０】
デバイス１１００は、完全に単一のデバイス内にあるなどの単一のコンピューティングエンティティにおいて、ユーザ要求通信システム１００および／または論理回路１１３５について、その構造および／またはオペレーションの一部またはすべてを具体化することができる。あるいは、デバイス１１００は、クライアントサーバアーキテクチャ、三層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散型システムのような分散システムアーキテクチャを用いて、ユーザ要求通信システム１００および／または論理回路１１３５について、その構造および／またはオペレーションの部分を複数のコンピューティングエンティティに分散させることができる。実施形態は、これに限定されない。
【０１４１】
１つの実施形態では、無線インタフェース１１１０は、（例えば、相補型符号変調（ＣＣＫ）および／または直交周波数分割多重（ＯＦＤＭ）シンボルを含む）シングルキャリアまたはマルチキャリア変調信号を送信および／または受信するように構成されたコンポーネントもしくはコンポーネントの組み合わせを有し得るが、ただし実施形態は、いずれかの特定の空中（ｏｖｅｒ−ｔｈｅ−ａｉｒ）インタフェースまたは変調方式に限定されない。無線インタフェース１１１０は、例えば、受信機１１１２、送信機１１１６、および／または周波数シンセサイザ１１１４を有し得る。無線インタフェース１１１０は、バイアスコントロール、水晶発振器、および／または１つまたは複数のアンテナ１１１８を有し得る。他の実施形態では、無線インタフェース１１１０は、必要に応じて、外部の電圧制御発振器（ＶＣＯ）、弾性表面波フィルタ、中間周波数（ＩＦ）フィルタ、および／またはＲＦフィルタを使用することができる。可能なＲＦインタフェース構成は多様であるため、その広範な説明は省略する。
【０１４２】
ベースバンド回路１１２０は、受信信号および／または送信信号を処理するために無線インタフェース１１１０と通信することができ、例えば、受信信号をダウンコンバートするためのアナログデジタル変換器１１２２、信号を送信用にアップコンバートするためのデジタルアナログ変換器１１２４を有し得る。更に、ベースバンド回路１１２０は、個々の受信／送信信号のＰＨＹリンク層処理のためのベースバンドまたは物理層（ＰＨＹ）処理回路１１５６を有し得る。ベースバンド回路１１２０は、例えば、メディアアクセス制御（ＭＡＣ）／データリンク層処理のための処理回路１１２８を有し得る。ベースバンド回路１１２０は、例えば、１つまたは複数のインタフェース１１３４を介した処理回路１１２８および／またはコンピューティングプラットフォーム１１３０による通信のためのメモリコントローラ１１３２を有し得る。
【０１４３】
いくつかの実施形態では、ＰＨＹ処理回路１１２６は、無線フレームのような通信フレームを構築および／または分解するために、バッファメモリのような追加回路と組み合わせて、フレーム構築および／または検出モジュールを含み得る。代替的または追加的に、ＭＡＣ処理回路１１２８は、これらの機能のうちのいくつかの処理を共有するか、またはこれらのプロセスをＰＨＹ処理回路１１２６とは独立に実行することができる。いくつかの実施形態では、ＭＡＣおよびＰＨＹ処理を単一の回路に統合することができる。
【０１４４】
コンピューティングプラットフォーム１１３０は、デバイス１１００にコンピューティング機能を提供し得る。図示のように、コンピューティングプラットフォーム１１３０は、処理コンポーネント１１４０を有し得る。デバイス１１００は、ベースバンド回路１１２０に対して追加的または代替的に、処理コンポーネント１１４０を用いて、ユーザ要求通信システム１００および論理回路１１３５について、その処理オペレーションまたはロジックを実行することができる。処理コンポーネント１１４０（および／またはＰＨＹ  １１２６および／またはＭＡＣ  １１２８）は、各種ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを含み得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含むことができる。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、単語、値、シンボル、またはそれらの任意の組合せを含むことができる。実施形態がハードウェア要素を用いて実施されるか、かつ／またはソフトウェア要素を用いて実施されるかを判断することは、所望の計算速度、パワーレベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度および他の設計または性能の制約等の任意の数の要因に従って、所与の実施態様にとって望ましいとおりに変動することができる。
【０１４５】
コンピューティングプラットフォーム１１３０は、更に、他のプラットフォームコンポーネント１１５０を有し得る。他のプラットフォームコンポーネント１１５０は、１つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インタフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力／出力（Ｉ／Ｏ）コンポーネント（例えば、デジタルディスプレイ）、パワーサプライなどのような、一般的な計算要素を含む。メモリユニットの例として、限定するものではないが、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリのようなポリマーメモリ、オーボニックメモリ（ｏｖｏｎｉｃ  ｍｅｍｏｒｙ）、相変化または強誘電体メモリ、シリコン／酸化膜／窒化膜／酸化膜／シリコン（ＳＯＮＯＳ）メモリ、磁気または光カード、独立ディスクの冗長アレイ（ＲＡＩＤ）ドライブのようなデバイスアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、および情報を保存するのに適した他の任意のタイプの記憶媒体のような、１つまたは複数のより高速のメモリユニットの形態の各種タイプのコンピュータ可読およびマシン可読記憶媒体を含むことができる。
【０１４６】
デバイス１１００は、例えば、ウルトラモバイルデバイス、モバイルデバイス、固定デバイス、マシンツーマシン（Ｍ２Ｍ）デバイス、携帯情報端末（ＰＤＡ）、モバイルコンピューティングデバイス、スマートフォン、電話、デジタル電話、携帯電話、ユーザデバイス、電子書籍リーダ、ハンドセット、ワンウェイページャ、ツーウェイページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家庭用電子機器、プログラム可能な家庭用電子機器、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、無線アクセスポイント、基地局、ノードＢ、発展型ノードＢ（ｅＮＢ）、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはその組み合わせであり得る。従って、本明細書に記載のデバイス１１００の機能および／または具体的な構成は、要求に応じて適宜、デバイス１１００の種々の実施形態に含むことも、または省くこともできる。いくつかの実施形態では、デバイス１１００は、３ＧＰＰ  ＬＴＥ仕様および／またはＷＭＡＮ用のＩＥＥＥ１１０２．１６規格および／または本明細書で引用される他の広帯域無線ネットワークの１つまたは複数に関連したプロトコルおよび周波数に準拠するように構成することができるが、実施形態は、この点に関して限定されない。
【０１４７】
デバイス１１００の実施形態は、単入力単出力（ＳＩＳＯ）アーキテクチャを用いて実現することができる。一方、いくつかの実現形態では、ビームフォーミングまたは空間分割多重アクセス（ＳＤＭＡ）のための適応アンテナ技術、および／またはＭＩＭＯ通信技術を用いた送信および／または受信用のマルチアンテナ（例えば、アンテナ１１１８）を備えることができる。
【０１４８】
デバイス１１００のコンポーネントおよび機能は、ディスクリート回路、特定用途向け集積回路（ＡＳＩＣ）、論理ゲート、および／またはシングルチップアーキテクチャの任意の組み合わせを用いて実装することができる。更に、デバイス１１００の機能は、必要に応じて適宜、マイクロコントローラ、プログラマブルロジックアレイ、および／またはマイクロプロセッサ、またはその任意の組み合わせを用いて実装することができる。なお、本明細書において、ハードウェア、ファームウェア、および／またはソフトウェア要素を、「ロジック」または「回路」と総称または個称する場合があるということに留意すべきである。
【０１４９】
図１１のブロック図に示す例示的なデバイス１１００は、多くの可能性のある実現形態の１つの機能的説明例を表し得るということは理解されるべきである。従って、添付の図面に示す機能ブロックの分割、欠落、または組み込みは、必ずしも、実施形態における、それらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェア、および／または要素の分割、欠落、または組み込みを推測させるものではない。
【０１５０】
コンピュータ実装方法は、ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを受信するステップと、対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するステップと、対話サンプルリポジトリを提示することに応答して、自然言語機械学習コンポーネントからシーケンスモデルを受信するステップと、シーケンスモデルに基づいてユーザ対ボット会話を実行するステップと、を含むことができる。
【０１５１】
コンピュータ実施方法は、ユーザ対ボット会話がメッセージングセッションに従って描写され、メッセージングセッションの中断を検出するステップを更に含むことができる。
コンピュータ実装方法は、ユーザ対ボット会話を実行するステップが、シーケンスモデルをユーザ要求コンテキスト、ユーザ対ボット会話履歴、および１以上のユーザメッセージの意味分析情報に適用するステップを含むことを更に含むことができる。
【０１５２】
コンピュータ実装方法は、ユーザ対ボット会話を実行するステップを更に含み、ユーザ対ボット会話を実行するステップはクライアントデバイスからユーザメッセージを受信するステップと、ユーザメッセージおよびシーケンスモデルに基づいてボット応答を生成するステップとを含むことができる。
【０１５３】
コンピュータ実装方法は、ボット応答メッセージを含むボット応答を更に含み、ボット応答メッセージをクライアントデバイスに送信するステップを更に含むことができる。
コンピュータ実装方法は、ボットアクションを含むボット応答を更に含み、ボットアクションを実行するステップを更に含むことができる。
【０１５４】
コンピュータ実装方法は、ボットアクションを含むボット応答を更に含み、ボットアクションをボットアプリケーションに送信するステップであって、ボットアクションは、ユーザ要求コンテキストに関連してボットアプリケーションに送信されるステップと、ボットアプリケーションから更新されたユーザ要求コンテキストを受信するステップとを更に含むことができる。
【０１５５】
コンピュータ実行方法は、ユーザメッセージおよびシーケンスモデルに基づいてボット応答を生成するステップを更に含み、ボット応答を生成するステップはユーザメッセージに関する意味分析情報を生成するステップと、意味分析情報にシーケンスモデルを適用することに基づいてボット応答を生成するステップとを含むことができる。
【０１５６】
コンピュータ実装方法は、現在のユーザ要求コンテキストに関連してシーケンスモデルを用いてユーザメッセージを処理することに基づいて、更新されたユーザ要求コンテキストを生成するステップを更に含むことができる。
【０１５７】
コンピュータ実装方法は、現在のユーザ要求コンテキストに関連してシーケンスモデルを用いてユーザメッセージを処理することに基づいてユーザ要求コンテキスト更新を生成するステップと、ボットアプリケーションにユーザ要求コンテキスト更新を送信するステップと、ボットアプリケーションから更新されたユーザ要求コンテキストを受信するステップとを更に含むことができる。
【０１５８】
コンピュータ実装方法は、ボット応答を生成することを更に含み、ボット応答を生成するステップは複数の推奨ボット応答を受信し、複数の推奨ボット応答のそれぞれが応答ランク付けスコアに関連するステップと、複数の推奨ボット応答の１以上の無効なボット応答を除外して、複数の後処理された推奨ボット応答を生成するステップと、ボット応答を、応答ランク付けスコアが最も高い後処理ボット応答の推奨ボット応答として選択するステップとを含むことができる。
【０１５９】
コンピュータ実装方法は、推奨ボットアクションの完全なコンテキストの欠如に基づいて除外された１以上の無効なボット応答を更に含むことができる。
コンピュータ実装方法は、複数の推奨ボット応答のそれぞれについての一貫性スコアに基づいて決定された複数の推奨ボット応答のそれぞれについての応答ランク付けスコアを更に含むことができる。
【０１６０】
コンピュータ実装方法は、一貫性モデルに基づいて決定された複数の推奨ボット応答のそれぞれに対する一貫性スコアを更に含むことができ、一貫したチャット会話リポジトリに基づいて一貫性モデルを生成するステップを更に含むことができる。
【０１６１】
コンピュータ実装方法は、ユーザ対ボット会話を実行するステップが、シーケンスモデルに基づいてユーザ要求コンテキストの反復的な更新をするステップを含むことを更に含むことができる。
【０１６２】
コンピュータ実装方法は、開発者が定義した構造化データオブジェクトに従って記憶されたユーザ要求コンテキストを更に含むことができる。
コンピュータ実施方法は、ユーザ対ボット会話を実行するステップが、ユーザ要求コンテキストを生成するためにメッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換するステップを含むことを更に含むことができる。
【０１６３】
コンピュータ実行方法は、ユーザ対ボット会話を実行するステップが、推論されたユーザ要求アクションを生成するためにメッセージングシステムを介して一連のユーザメッセージおよびボットメッセージを交換するステップを含むことを更に含むことができる。
【０１６４】
コンピュータ実装方法は、ユーザ要求コンテキストに基づいて推論されたユーザ要求アクションを実行するステップを更に含むことができる。
コンピュータ実装方法は、アプリケーションプログラムインタフェース呼出しに基づいて定義された推論されたユーザ要求アクションを更に含むことができ、アプリケーションプログラムインタフェース呼出しの１以上のパラメータがユーザ要求コンテキストに基づいて定義される。
【０１６５】
コンピュータ実装方法は、ユーザ対ボット対話のサンプルの１以上が、開発者が起草したユーザ対ボット仮想対話を含み、開発者コンソールを介して開発者が起草した１以上のユーザ対ボット対話を受信するステップを更に含むことができる。
【０１６６】
コンピュータ実施方法は、ユーザ対ボット対話のサンプルの１以上が、使用ベースのユーザ対ボット対話を含むことを更に含むことができる。
コンピュータ実装方法は、製造段階で実行されたユーザ対ボット会話から生成された１以上の製造ユーザ対ボット対話を受信するステップと、開発者コンソールを介して１以上の製造ユーザ対ボット対話を表示するステップと、開発者コンソールを介して１以上の製造ユーザ対ボット対話の開発者による検証を受信して使用ベースのユーザ対ボット対話を生成するステップと、１以上の使用ベースのユーザ対ボット対話の開発者による検証を受信することに応答して、１以上の使用ベースのユーザ対ボット対話を対話サンプルリポジトリに含めるステップと、を含むことができる。
【０１６７】
コンピュータ実装方法は、開発者コンソールを介して１以上の製造ユーザ対ボット対話の開発者による１以上の修正を受信して、使用ベースのユーザ対ボット対話を生成するステップを更に含むことができる。
【０１６８】
コンピュータ実装方法は、開発者コンソールを介して１以上の製造ユーザ対ボット対話の開発者による１以上の注釈を受信して、使用ベースのユーザ対ボット対話を生成するステップと、開発者による１以上の注釈を１以上の使用ベースのユーザ対ボット対話とともに対話サンプルリポジトリに含めるステップとを更に含むことができる。
【０１６９】
コンピュータ実装方法は、コンテキスト更新注釈を含む開発者による１以上の注釈を更に含むことができる。
コンピュータ実装方法は、抽出された教師なし情報を１以上の推奨ボット応答に組み込むことを含むシーケンスモデルに基づいてユーザ対ボット会話を実行するステップを更に含むことができる。
【０１７０】
装置は、プロセッサ回路と、ユーザ対ボット対話の複数のサンプルを含む対話サンプルリポジトリを自然言語機械学習コンポーネントに提示するようにプロセッサ回路上で動作し、対話サンプルリポジトリを提示することに応答して、自然言語機械学習コンポーネントからのシーケンスモデルを受信する対話処理コンポーネントと、ユーザクライアントとのユーザメッセージ交換を実行してシーケンスモデルに基づいてユーザ対ボット会話を実行するように動作可能なクライアント通信コンポーネントと、ボットアプリケーションから対話サンプルリポジトリを受信しかつボットアプリケーションとのボット情報交換を実行してシーケンスモデルに基づいてユーザ対ボット会話を実行するように動作可能なボットアプリケーションインタフェースコンポーネントとを含むことができ、シーケンスモデルに基づいてユーザ対ボット会話を実行することが、シーケンスモデルを、ユーザ要求コンテキスト、ユーザ対ボット会話履歴、１以上のユーザメッセージの意味分析情報、および１以上のユーザメッセージの抽出された教師なし情報に適用することを含む。この装置は、本明細書に記載のコンピュータ実装方法のいずれかを実施するように動作可能であり得る。
【０１７１】
少なくとも１つのコンピュータ可読記録媒体は、実行されると、本明細書に記載のコンピュータ実装方法のいずれかをシステムに実行させる命令を含むことができる。
いくつかの実施形態は、「１つの実施形態」または「実施形態」という表現と、それらの派生語とを用いて説明され得る。これらの用語は、実施形態に関して説明される特定の特徴、構造または特性が少なくとも１つの実施形態に含まれることを意味している。本明細書の様々な箇所に現れる「１つの実施形態において」というフレーズは、必ずしも全てが同じ実施形態を指しているわけではない。更に、いくつかの実施形態は、「結合された」および「接続された」という表現と、それらの派生語とを用いて説明され得る。これらの表現は必ずしも互いの同義語として意図されているわけではない。例えば、いくつかの実施形態は、「接続された」および／または「結合された」という表現を用いることにより、２つ以上の要素が直接物理的にまたは電気的に相互接触していることを示すように説明され得る。一方、「結合された」という用語は、２つ以上の要素が互いに直接接触していないが、それでも互いに協働または相互作用していることを意味する場合もある。
【０１７２】
本明細書において用いられる表記および専門用語を全体的に参照すると、本明細書における詳細な説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラムプロシージャの観点で表され得る。これらのプロシージャに関する記載および表現は、当業者によって、その技術分野における他の当業者に自身の研究の本質を最も効果的に伝えるために用いられている。
【０１７３】
プロシージャとは、ここでは、また一般的に、所望の結果をもたらすオペレーションの首尾一貫したシーケンスであると考えられる。これらのオペレーションは、物理的量の物理的操作を必要とするものである。必須ではないが通例、これらの量は、記憶、転送、組合せ、比較および他の形で操作されることが可能な電気信号、磁気信号または光信号の形態をとる。場合によっては、主に一般的用法の理由から、これらの信号を、ビット、値、要素、シンボル、文字、語、数等と呼ぶことが好都合であることがわかっている。しかしながら、これらの用語および同様の用語は全て適切な物理的量に関連付けられ、これらの量に適用される好都合なラベルにすぎないことに留意されたい。
【０１７４】
更に、実行される操作は、多くの場合、人間のオペレータによって実行される知的オペレーションに一般的に関連付けられる、追加または比較等の用語で参照される。１つまたは複数の実施形態の一部を形成する、本明細書に説明されるオペレーションのいずれにおいても、人間のオペレータのそのような能力は必要でないか、ほとんどの場合に望ましくない。むしろ、オペレーションは機械オペレーションである。様々な実施形態のオペレーションを実行するための有用な機械は、汎用デジタルコンピュータまたは同様のデバイスを含む。
【０１７５】
様々な実施形態は、これらのオペレーションを実行するための装置またはシステムにも関する。この装置は、必要とされる目的のために特に構築されることが可能であるか、またはコンピュータに記憶されるコンピュータプログラムによって選択的にアクティベートまたは再構成される汎用コンピュータを含むことができる。本明細書において提示されるプロシージャは、特定のコンピュータまたは他の装置に本質的に関係しない。様々な汎用機械は、本明細書における教示に関連して書かれたプログラムと共に用いられ得るか、または、必要とされる方法ステップを実行する、より特殊な装置を構築することが好都合であるとわかる場合がある。様々なこれらの機械のために必要とされる構造は、与えられる説明から明らかとなるであろう。
【０１７６】
本開示の要約書は、読み手が技術的開示の本質を迅速に理解できるようにするために提供されていることを強調しておく。本要約書は、特許請求の範囲の範囲又は意味を解釈又は限定するために使用するものではないとの理解に基づいて提出されている。更に、上記した「発明を実施するための形態」においては、開示を効率化するために様々な特徴がまとめて単一の実施形態にされていることを見てとることができる。このような開示方法は、特許請求される実施形態が各請求項に明示的に記された特徴以外のものを必要とする意図を表していると解釈されるべきではない。むしろ、以下の特許請求の範囲が表しているように、本発明の主題は、開示されている単一の実施形態の全特徴よりも少ない特徴にある。このため、以下の特許請求の範囲は本明細書において「発明を実施するための形態」に組み込まれ、各請求項は独立した１つの実施形態に基づく。添付の特許請求の範囲において、用語「含む（ｉｎｃｌｕｄｉｎｇ）」および「において（ｉｎ  ｗｈｉｃｈ）」は、それぞれの用語「含む（ｃｏｍｐｒｉｓｉｎｇ）」および「において（ｗｈｅｒｅｉｎ）」の平易な英語の同義語として用いられる。「第１の」、「第２の」、「第３の」等の用語は単にラベルとして用いられており、それらの対象物に数的限定を課すことを意図したものではない。
【０１７７】
上記で説明したものは、開示されているアーキテクチャの例を含む。当然ながら、コンポーネントおよび／または方法の全ての考え得る組合せを記載することは不可能であるが、当業者であれば、多くの更なる組合せおよび置き換えが可能であることを認識することができる。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内にある全ての変化、変更および変形を包含することが意図される。
【図１】
2019518292.tif 000003
【図２Ａ】
2019518292.tif 000004
【図２Ｂ】
2019518292.tif 000005
【図３Ａ】
2019518292.tif 000006
【図３Ｂ】
2019518292.tif 000007
【図３Ｃ】
2019518292.tif 000008
【図４】
2019518292.tif 000009
【図５】
2019518292.tif 000010
【図６】
2019518292.tif 000011
【図７】
2019518292.tif 000012
【図８】
2019518292.tif 000013
【図９】
2019518292.tif 000014
【図１０】
2019518292.tif 000015
【図１１】
2019518292.tif 000016
【国際調査報告】
2019518292.tif 000017
2019518292.tif 000018