以下は、コンピュータネットワークを介してパケット化されたアクションをルーティングする方法、装置、およびシステムに関連する様々な概念、およびそれらの実装形態のより詳細な説明である。上記で紹介し、以下でより詳細に論じる様々な概念は、多数の方法のいずれかにおいて実装されてもよい。
本開示は、全体として、異種のコンピューティングリソースを介する情報送信および処理の効率および有効性を改善することを対象とする。異種のコンピューティングリソースにとって、音声ベースのコンピューティング環境においてオーディオベースのコンテンツアイテムを効率的に処理し、一貫して正確に提供することは、困難である。例えば、異種のコンピューティングリソースは、同じ音声モデルにアクセスできない場合があり、または、オーディオベースのコンテンツアイテムを正確かつ一貫して提供することを困難にする可能性がある、旧式のもしくは同期されていない音声モデルにアクセスする場合がある。さらに、コンピューティングリソースは、再利用され得るコンテンツアイテムを選択するために冗長処理を実行してもよく、それによって、プロセッサ利用と、処理リソースおよび電力の浪費とを低減する。
本開示のシステムおよび方法は、全体として、ネットワークを介してコンピューティングプログラム出力を修正するデータ処理システムを対象とする。データ処理システムは、チャットボットを備えるコンピューティングプログラムを介して、提供されるべきコンテンツに対する要求を受信することができる。チャットボット、または人工会話エンティティは、聴覚、視覚、またはテキスト技法を介して会話を行うコンピュータプログラムを指す。
本解決策は、エンドユーザからの音声ベースの指示を構文解析し、パラメータ化されたコンテンツアイテムを選択または再利用し、対話データ構造を用いてパラメータ化されたコンテンツアイテムをルーティングすることによって、リソース消費、プロセッサ利用、バッテリ消費、帯域幅利用、オーディオファイルのサイズ、またはスピーカによって消費される時間量を低減することができる。
例えば、本解決策は、動的なデジタル製品の配置を通して、自動化されたネイティブコンテンツアイテムをチャットボットに提供することができる。解決策は、チャットボットがコンテンツ選択プロセスを開始または要求すること、ならびに、選択されたコンテンツアイテムを対話データ構造内に挿入することを可能にするアプリケーションプログラミングインターフェースの構成を提供することができる。例えば、チャットボットは、レシピチャットボットであり得る。レシピチャットボットは、例えば、ネイティブ音声において、材料のリストを提供することができる。本解決策は、材料リスト内のプレースホルダを識別し、プレースホルダに対するコンテンツ選択プロセスを介してコンテンツアイテムを選択し、プレースホルダ内に挿入するためのコンテンツアイテムを提供することができる。コンテンツ選択プロセスは、例えば、チャットボットが起動または実行された後、プレースホルダを有する対話データ構造の一部を再生する前に、リアルタイムで発生することができる。システムは、プレースホルダがレンダリングされるときに近接してコンテンツ選択プロセスを実行することができる。さらに、アプリケーションプログラミングインターフェースは、ネイティブ音声を使用するコンテンツアイテムを提供するために、パラメータ的に駆動されるテキスト読み上げ技法を使用することができる。
本解決策は、データ処理を低減するために、セッションを合併、再開、または再確立することができる。例えば、技法は、セッションが再開されるべきであると判定し、セッションにおける中断後、第2の対話データ構造内に供給するために前のセッションにおいて選択されたコンテンツアイテムを使用することができる。例えば、レシピチャットボットは、材料のリストを提供し、コンテンツ選択プロセスを介して選択される材料のブランド名を挿入することができる。システムは、次いで、セッションにおける中断を検出することができる。システムは、例えば、材料を購入するために店に行くユーザに基づいて、中断を検出することができる。ユーザが帰宅すると、レシピチャットボットは、セッションを再確立し、同じ材料の異なるブランド名とは異なり、以前に選択されたブランド名を使用することができる。同じブランド名を使用することによって、システムは、コンテンツ選択プロセスを実行することに関連する重要な処理を実行することを回避するので、システムは、より効率的である。
システムは、同じチャットボットとのセッションを再開するか、または複数のチャットボットにわたってセッションをまたがらせることができる。システムは、冗長な処理の量を回避または低減することによってプロセッサ利用を低減するために、複数のチャットボット間でデータを集約することができ、または複数のチャットボット間をインターフェースすることができる。例えば、レシピチャットボットは、ブランド名のソーダを識別することができる。その後、コンピューティングデバイスが動画チャットボットを呼び出すことができる。動画チャットボットは、ソーダのブランド名についてレシピチャットボットにポーリングまたは問い合わせることができ、動画チャットボットは、レシピチャットボットと比較して同じネイティブ音声または異なるネイティブ音声を使用して、ソーダの同じブランド名を挿入することができる。
システムは、検証技法を使用してチャットボットプラットフォームを検証することができる。例えば、データ処理システムは、コンテンツアイテムを対話データ構造内への挿入のためにチャットボットに転送する指示により、コンテンツアイテムをサードパーティのチャットボットサーバに提供することができる。データ処理システムは、次いで、コンテンツアイテムについてチャットボットにpingを送り、チャットボットからの応答を、サードパーティチャットボットプラットフォームに最初に提供されたコンテンツ項目と、これらが一致するかどうか、またはサードチャットボットプラットフォームがコンテンツアイテムを修正したかどうかを判定するために比較することができる。
図1は、コンピュータネットワークを介してコンピュータプログラム出力を修正する例示的なシステム100を示す。システム100は、コンテンツ選択インフラストラクチャを含むことができる。システム100は、データ処理システム102を含むことができる。データ処理システム102は、ネットワーク105を介して、コンテンツプロバイダコンピューティングデバイス106、チャットボットプロバイダデバイス108、サードパーティチャットボットプラットフォームサーバ146、またはクライアントコンピューティングデバイス104のうちの1つまたは複数と通信することができる。ネットワーク105は、インターネット、ローカル、ワイド、メトロ、または他のエリアネットワークのようなコンピュータネットワークと、音声またはデータモバイル電話ネットワークのような他の通信ネットワークとを含むことができる。ネットワーク105は、ラップトップ、デスクトップ、タブレット、携帯情報端末、スマートフォン、ポータブルコンピュータ、またはスピーカのような少なくとも1つのコンピューティングデバイス104上で提示、出力、レンダリング、または表示され得るウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータのような情報リソースにアクセスするために使用され得る。例えば、ネットワーク105を介して、コンピューティングデバイス104のユーザは、チャットボットプロバイダ108またはコンテンツプロバイダコンピューティングデバイス106によって提供される情報またはデータにアクセスすることができる。コンピューティングデバイス104は、ディスプレイを含んでも含まなくてもよく、例えば、コンピューティングデバイスは、マイクロフォンおよびスピーカのような限定されたタイプのユーザインターフェースを含んでもよい。場合によっては、コンピューティングデバイス104の主要なユーザインターフェースは、マイクロフォンおよびスピーカであってもよい。
ネットワーク105は、ディスプレイネットワーク、例えば、コンテンツ配置もしくは検索エンジン結果システムに関連付けられた、または、コンテンツアイテム配置キャンペーンの一部としてサードパーティコンテンツアイテムを含むのに適格な、インターネット上で利用可能な情報リソースのサブセットを含むかまたは構成することができる。ネットワーク105は、クライアントコンピューティングデバイス104によって提示、出力、レンダリング、または表示され得るウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータのような情報リソースにアクセスするためにデータ処理システム102によって使用され得る。例えば、ネットワーク105を介して、クライアントコンピューティングデバイス104のユーザは、コンテンツプロバイダコンピューティングデバイス106またはチャットボットプロバイダコンピューティングデバイス108によって提供される情報またはデータにアクセスすることができる。
ネットワーク105は、ネットワークのいずれかのタイプもしくは形式であり、以下、すなわち、ポイントツーポイントネットワーク、ブロードキャストネットワーク、ワイドエリアネットワーク、ローカルエリアネットワーク、電気通信ネットワーク、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)、SDH(同期デジタル階層)ネットワーク、ワイヤレスネットワーク、および有線ネットワークのうちのいずれかを含み得る。ネットワーク105は、赤外線チャネルまたは衛星帯域のようなワイヤレスリンクを含んでもよい。ネットワーク105のトポロジーは、バス、スター、またはリングネットワークトポロジーを含んでもよい。ネットワークは、高度モバイル電話プロトコル(「AMPS(advanced mobile phone protocol)」)、時分割多元接続(「TDMA(time division multiple access)」)、符号分割多元接続(「CDMA(登録商標)(code-division multiple access)」)、モバイル通信用グローバルシステム(「GSM(登録商標)(global system for mobile communication)」)、汎用パケット無線サービス(「GPRS(general packet radio services)」)、またはユニバーサルモバイルテレコミュニケーションズシステム(「UMTS(universal mobile telecommunications system)」)を含む、モバイルデバイス間で通信するために使用される任意のプロトコルを使用するモバイル電話ネットワークを含んでもよい。異なるプロトコルを介して異なるタイプのデータが送信されてもよく、または、異なるプロトコルを介して同じタイプのデータが送信されてもよい。
システム100は、少なくとも1つのデータ処理システム102を含むことができる。データ処理システム102は、ネットワーク105を介して、例えば、コンピューティングデバイス104、コンテンツプロバイダデバイス106(コンテンツプロバイダコンピューティングデバイス106)、またはチャットボットプロバイダデバイス108(またはチャットボットプロバイダ108)と通信するために、プロセッサを有するコンピューティングデバイスのような少なくとも1つの論理デバイスを含むことができる。データ処理システム102は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを含むことができる。例えば、データ処理システム102は、少なくとも1つのデータセンタ内に配置された複数の計算リソースまたはサーバを含むことができる。データ処理システム102は、複数の論理的にグループ化されたサーバを含み、分散コンピューティング技法を促進することができる。サーバの論理グループは、データセンタ、サーバファーム、またはマシンファームと呼ばれる場合がある。サーバはまた、地理的に分散され得る。データセンタまたはマシンファームは、単一のエンティティとして管理されてもよく、または、マシンファームは、複数のマシンファームを含むことができる。各サーバファーム内のサーバは、異種であり得、サーバまたはマシンのうちの1つまたはそれ以上は、1つまたは複数のタイプのオペレーティングシステムプラットフォームに従って動作することができる。
マシンファーム内のサーバは、関連する記憶システムとともに高密度ラックシステム内に格納され得、企業データセンタ内に配置され得る。例えば、このようにサーバを統合することは、局所的な高性能ネットワーク上にサーバと高性能記憶システムとを配置することによって、システム管理性、システムの物理的セキュリティ、およびシステム性能を改善する場合がある。サーバおよび記憶システムのデータ処理システム102の構成要素のすべてまたはいくつかの集中化、ならびに、それらを高度なシステム管理ツールと結合することは、サーバリソースのより効率的な使用を可能にし、それは、電力および処理要件を節約し、帯域幅の利用を低減する。
システム100は、少なくとも1つのチャットボットプロバイダデバイス108を含むか、それにアクセスするか、またはそれと他の方法で対話することができる。チャットボットプロバイダデバイス108は、ネットワーク150を介して、例えば、コンピューティングデバイス104、データ処理システム102、またはコンテンツプロバイダコンピューティングデバイス106と通信するために、プロセッサを有するコンピューティングデバイスのような少なくとも1つの論理デバイスを含むことができる。チャットボットプロバイダデバイス108は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを含むことができる。例えば、チャットボットプロバイダデバイス108は、少なくとも1つのセンタ内に配置された複数の計算リソースまたはサーバを含むことができる。チャットボットプロバイダデバイス108は、データ処理システム102の1つまたは複数の構成要素または機能を含むことができる。
チャットボットプロバイダデバイス108は、1つまたは複数のチャットボットを形成または提供するコンピュータプログラムを設計、開発、管理、または維持するエンティティのようなチャットボット開発者を含むか、またはそれを指すことができる。チャットボットは、聴覚、画像、またはテキストの方法を介して会話を行うコンピュータプログラムを含むことができる。チャットボットは、人間が会話パートナーとしてどのように振る舞うかをシミュレートするように設計され得る。チャットボットは、顧客サービスまたは情報取得のための対話システム内で使用され得る。チャットボットは、自然言語処理システム(例えば、自然言語プロセッサ構成要素112)を含むかまたは使用することができる。チャットボットは、入力内のキーワードをスキャンし、次いで、データベースから最も一致するキーワードまたは最も類似する言葉遣いパターンを有する返事を引き出すことができる。チャットボットは、事前定義された対話データ構造を検索するためにパターンマッチングを利用する手順を用いてプログラムされ得る。チャットボットは、入力の文法と構文とを識別するため、入力をトークン化するため、または、応答を決定するために入力を他の方法で処理するために、自然言語処理技法を用いてプログラムされ得る。
コンテンツプロバイダコンピューティングデバイス106は、オーディオ出力コンテンツアイテムとしてクライアントコンピューティングデバイス104によって表示するためのオーディオベースのコンテンツアイテムを提供することができる。コンテンツアイテムは、デジタル構成要素であるかまたはそれを含むことができる。コンテンツアイテムは、デジタルオブジェクトであるかまたはそれを含むことができる。コンテンツアイテムは、商品またはサービスのブランド名または会社名を含むことができる。コンテンツアイテムは、パラメータ的に駆動されるテキスト読み上げ技法のために構成され得る。コンテンツアイテムは、通常の言語テキストをスピーチに変換するテキスト読み上げ(TTS)実装形態のために構成され得る。コンテンツアイテムは、テキストを様々な言語、アクセント、および音声における自然に聞こえるスピーチに合成するためにスピーチ合成能力を利用するアプリケーションプログラミングインターフェースに入力され得る。コンテンツアイテムは、プレーンテキストまたはスピーチ合成マークアップ言語(SSML)としてコーディングされる。SSMLは、音声の音響指紋またはネイティブ音声を形成することができる発音、音量、ピッチ、レートのような、スピーチの態様を制御するために設定され得るパラメータを含むことができる。
例えば、チャットボットは、「チキンウィングの材料は、黒砂糖1カップ、<placeholder>のコーラ1缶、中玉ねぎ2個、およびにんにく2片です。」のような対話データ構造を識別することができる。コンテンツプロバイダコンピューティングデバイス106は、コーラのブランド名のような、対話データ構造内の<placeholder>に挿入されるべきコンテンツアイテムを提供することができる。コンテンツプロバイダコンピューティングデバイス106は、コンテンツ選択プロセスを容易にするために、値、キーワード、概念、または他のメタデータもしくは情報のようなコンテンツ選択基準を提供することができる。コンテンツプロバイダコンピューティングデバイス106は、オーディオベースのコンテンツアイテム(または他のコンテンツアイテム)をデータ処理システム102に提供することもでき、そこでそれらは、データリポジトリ124内に記憶され得る。データ処理システム102は、オーディオコンテンツアイテム(または、パラメータ的に駆動される、テキスト、画像、またはビデオからスピーチへの技法のために構成されたコンテンツアイテム)を選択し、オーディオコンテンツアイテムをクライアントコンピューティングデバイス104に提供する(または、提供するようにコンテンツプロバイダコンピューティングデバイス106に指示する)ことができる。オーディオベースのコンテンツアイテムは、オーディオのみであり得、または、テキスト、画像、もしくはビデオデータと組み合わされ得る。
コンテンツプロバイダコンピューティングデバイス106は、コンテンツデータデータ構造130におけるデータリポジトリ124内に記憶するために、コンテンツアイテムをデータ処理システム102に提供することができる。データ処理システム102は、コンテンツに対する要求に応答してコンテンツアイテムを検索することができ、またはコンテンツアイテムを提供することを他の方法で決定する。
チャットボットプロバイダデバイス108は、少なくとも1つのチャットボットプロバイダ自然言語プロセッサ構成要素142およびチャットボットプロバイダインターフェース144を含むか、それらとインターフェースするか、またはそれらと他の方法で通信することができる。チャットボットプロバイダコンピューティングデバイス108は、少なくとも1つのチャットボットプロバイダ自然言語プロセッサ(NLP)構成要素142と、少なくとも1つのチャットボットプロバイダインターフェース144とを含むことができる。チャットボットプロバイダNLP構成要素142(または、チャットボットプロバイダコンピューティングデバイス108またはチャットボットプラットフォーム146のような他の構成要素)は、クライアントコンピューティングデバイス104とチャットボットプロバイダコンピューティングデバイス108との間の往復のリアルタイムの音声またはオーディオベースの会話(例えば、セッション)を作成するために、(データ処理システム102を介して、またはデータ処理システム102をバイパスして)クライアントコンピューティングデバイス104と連動することができる。チャットボットプロバイダNLP142は、データ処理システム102のNLP構成要素112として1つまたは複数の機能または特徴を含むことができる。例えば、チャットボットプロバイダインターフェース144は、データ処理システム102のインターフェース110へのメッセージを受信または提供することができる。チャットボットプロバイダコンピューティングデバイス108およびコンテンツプロバイダコンピューティングデバイス106は、同じエンティティに関連付けられ得る。例えば、コンテンツプロバイダコンピューティングデバイス106は、チャットボットのためのコンテンツアイテムを作成、記憶、または利用可能にすることができ、チャットボットプロバイダコンピューティングデバイス108は、クライアントコンピューティングデバイス104を介してチャットボットを介して通信するために、クライアントコンピューティングデバイス106とのセッションを確立することができる。データ処理システム102は、インターフェース110、チャットボット構成要素114、セッションハンドラ構成要素120、または他の構成要素を介して、チャット
ボットプロバイダコンピューティングデバイス104またはサードパーティチャットボットプラットフォーム146を含むまたはバイパスするクライアントコンピューティングデバイス104とのセッションを確立することもできる。
サードパーティチャットボットプラットフォーム146は、データ処理システム102を管理または提供するエンティティとは異なるエンティティの1つまたは複数のサーバを指すことができる。サードパーティチャットボットプラットフォーム146は、チャットボットプロバイダデバイス108からチャットボットのためのコンピュータプログラムを受信することができる。サードパーティチャットボットプラットフォーム146は、自然言語処理および他の機能を提供することができる。サードパーティチャットボットプラットフォーム146は、チャットボット機能を提供するコンピューティングデバイス104とインターフェースまたは通信することができる。例えば、サードパーティチャットボットプラットフォーム146は、コンピューティングデバイス104のユーザとの変換に従事するために、チャットボットプロバイダデバイス108によって提供されるチャットボットを実行することができる。サードパーティチャットボットプラットフォーム146は、データ処理システム102およびコンピューティングデバイス104から離れたサーバ上で実行することができる。場合によっては、サードパーティチャットボットプラットフォーム146は、コンピューティングデバイス上で(例えば、プリプロセッサ140の一部として)少なくとも部分的に実行することができる。
コンピューティングデバイス104は、少なくとも1つのセンサ134、トランスデューサ136、オーディオドライバ138、またはプリプロセッサ140を含むか、それらとインターフェースするか、または他の方法で通信することができる。センサ134は、例えば、カメラ、周囲光センサ、近接センサ、温度センサ、加速度計、ジャイロスコープ、動き検出器、GPSセンサ、位置センサ、マイクロフォン、ビデオ、画像検出、またはタッチセンサを含むことができる。トランスデューサ136は、スピーカまたはマイクロフォンを含むか、またはその一部であり得る。オーディオドライバ138は、ハードウェアトランスデューサ136へのソフトウェアインターフェースを提供することができる。オーディオドライバは、対応する音響波または音波を生成するようにトランスデューサ136を制御するためにデータ処理システム102によって提供されるオーディオファイルまたは他の命令を実行することができる。プリプロセッサ140は、キーワードを検出し、キーワードに基づいてアクションを実行することができる。プリプロセッサ140は、さらなる処理のためにデータ処理システム102に用語を送信する前に1つまたは複数の用語を除去するか、または用語を修正することができる。プリプロセッサ140は、マイクロフォンによって検出されたアナログオーディオ信号をデジタルオーディオ信号に変換し、デジタルオーディオ信号を搬送する1つまたは複数のデータパケットを、ネットワーク105を介してデータ処理システム102に送信することができる。場合によっては、プリプロセッサ140は、そのような送信を実行する命令を検出することに応答して、入力オーディオ信号の一部またはすべてを搬送するデータパケットを送信することができる。命令は、例えば、入力オーディオ信号を含むデータパケットをデータ処理システム102に送信するトリガキーワードまたは他のキーワードまたは承認を含むことができる。
クライアントコンピューティングデバイス104は、オーディオ入力として音声クエリをクライアントコンピューティングデバイス104に(センサ134を介して)入力し、トランスデューサ136(例えば、スピーカ)から出力されるデータ処理システム102(または、コンテンツプロバイダコンピューティングデバイス106またはチャットボットプロバイダコンピューティングデバイス108)からクライアントコンピューティングデバイス104に提供され得るコンピュータ生成音声の形態においてオーディオ出力を受信するエンドユーザに関連付けられ得る。コンピュータ生成音声は、実際の人物またはコンピュータ生成言語からの録音を含むことができる。
クライアントコンピューティングデバイス104は、(センサ134を介して)クライアントコンピューティングデバイス104への入力としてクエリを示すことができる画像またはビデオを提供し、トランスデューサ136(例えば、スピーカ)から出力されるデータ処理システム102(または、コンテンツプロバイダコンピューティングデバイス106またはチャットボットプロバイダコンピューティングデバイス108)からクライアントコンピューティングデバイス104に提供され得るコンピュータ生成音声の形態においてオーディオ出力を受信するエンドユーザに関連付けられ得る。1つまたは複数のセンサ134によって検出される入力は、オーディオ入力(例えば、音響信号)、視覚入力(例えば、画像またはビデオデータ)、動き入力、または他の入力のうちの1つまたは複数を含むことができる。コンピューティングデバイス104への入力(オーディオ、画像、視覚、または動き入力のうちの1つまたは複数)は、デジタルファイルに変換され、さらなる処理のためまたはアクションを生成するためにデータ処理システム102に提供され得る。例えば、コンピューティングデバイス104への入力(オーディオ、画像、視覚、または動き入力のうちの1つまたは複数)は、チャットボットを備えるコンピュータプログラムの選択をトリガし、チャットボットに入力されるべきクエリの生成をトリガすることができ、チャットボットは、生成されたクエリに応答する、または入力(オーディオ、画像、視覚、または動き入力のうちの1つまたは複数)に対応する出力をコンピューティングデバイス104に提供することができる。
データリポジトリ124は、1つまたは複数のローカルデータベースまたは分散データベースを含むことができ、データベース管理システムを含むことができる。データリポジトリ124は、コンピュータストレージまたはメモリを含むことができ、数あるデータの中で、1つもしくは複数のプロファイル126、1つもしくは複数のインデックス128、コンテンツデータ130、またはチャットボットデータ132を記憶することができる。プロファイル126は、コンピューティングデバイス104またはコンピューティングデバイス104に関連付けられたアカウントに関する情報を含むことができる。プロファイル126は、コンピューティングデバイス104に関連する履歴ネットワークアクティビティ、コンピューティングデバイス104によって利用されるチャットボットの識別子、コンピューティングデバイス104の構成、デバイス機能、選好、または、コンテンツ選択を容易にすることができるコンピューティングデバイス104に関連付けられた他の情報を含むことができる。インデックス128は、コンテンツアイテムの再利用を容易にするために、以前に選択されたコンテンツアイテムを、セッション識別子、コンピューティングデバイス識別子、対話データ構造識別子にマッピングすることができる。コンテンツデータ130は、オーディオ出力または関連するメタデータに関するコンテンツアイテム、ならびに、クライアントコンピューティングデバイス104との1つまたは複数の通信セッションの一部であり得る入力オーディオメッセージを含むことができる。チャットボットデータ132は、チャットボットに関する識別子、チャットボットのタイプに関する情報(例えば、カテゴリ、制限、またはトピック)を含むことができる。
データ処理システム102は、少なくとも1つの計算リソースまたはサーバを有するコンテンツ配置システムを含むことができる。データ処理システム102は、少なくとも1つのインターフェース110を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つの自然言語プロセッサ構成要素112を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのチャットボット構成要素114を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのプレースホルダ生成構成要素116を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのコンテンツセレクタ構成要素118を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのセッションハンドラ構成要素120を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つの検証構成要素122を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのデータリポジトリ124を含むか、それとインターフェースするか、または他の方法で通信することができる。少なくとも1つのデータリポジトリ124は、1つまたは複数のデータ構造またはデータベースにおいて、プロファイル126、インデックス128、コンテンツデータ130、またはチャットボットデータ132を含むかまたは記憶することができる。コンテンツデータ130は、例えば、コンテンツキャンペーン情報、コンテンツグループ、コンテンツ選択基準、コンテンツアイテムオブジェクト、または、コンテンツプロバイダコンピューティングデバイス106によって提供されるか、もしくは、コンテンツ選択を容易にするためにデータ処理システムによって取得もしくは決定される他の情報を含むことができる。コンテンツデータ130は、例えば、コンテンツキャンペーンの履歴的なパフォーマンスを含むことができる。
インターフェース110、自然言語プロセッサ構成要素112、チャットボット構成要素114、プレースホルダ生成構成要素116、コンテンツセレクタ構成要素118、セッションハンドラ構成要素120、または検証構成要素122は、各々、プログラマブル論理アレイエンジン、またはデータベースリポジトリまたはデータベース124と通信するように構成されたモジュールのような、少なくとも1つの処理ユニットまたは他の論理デバイスを含むことができる。インターフェース110、自然言語プロセッサ構成要素112、チャットボット構成要素114、プレースホルダ生成構成要素116、コンテンツセレクタ構成要素118、セッションハンドラ構成要素120、検証構成要素122、およびデータリポジトリ124は、別個の構成要素、単一の構成要素、またはデータ処理システム102の一部であり得る。データ処理システム102のようなシステム100およびその構成要素は、1つまたは複数のプロセッサ、論理デバイス、または回路のようなハードウェア要素を含むことができる。
データ処理システム102は、複数のコンピューティングデバイス104に関連付けられた匿名のコンピュータネットワークアクティビティ情報を取得することができる。コンピューティングデバイス104のユーザは、データ処理システム102が、ユーザのコンピューティングデバイス104に対応するネットワークアクティビティ情報を取得することを肯定的に承認することができる。例えば、データ処理システム102は、コンピューティングデバイス104のユーザに1つまたは複数のタイプのネットワークアクティビティ情報を取得するための同意を促すことができる。コンピューティングデバイス104のユーザの識別情報は、匿名のままであり得、コンピューティングデバイス104は、一意の識別子(例えば、データ処理システムまたはコンピューティングデバイスのユーザによって提供されるユーザまたはコンピューティングデバイスの一意の識別子)と関連付けられ得る。データ処理システムは、各観測を対応する一意の識別子に関連付けることができる。
コンテンツプロバイダコンピューティングデバイス106は、電子コンテンツキャンペーンを確立することができる。電子コンテンツキャンペーンは、データリポジトリ124内にコンテンツデータ130として記憶され得る。電子コンテンツキャンペーンは、共通のテーマに対応する1つまたは複数のコンテンツグループを指すことができる。コンテンツキャンペーンは、コンテンツグループと、コンテンツアイテムデータオブジェクト(例えば、デジタル構成要素またはデジタルオブジェクト)と、コンテンツ選択基準とを含むことができる。コンテンツキャンペーンを作成するために、コンテンツプロバイダコンピューティングデバイス106は、コンテンツキャンペーンのキャンペーンレベルパラメータの値を指定することができる。キャンペーンレベルパラメータは、例えば、キャンペーン名、コンテンツアイテムオブジェクトを配置するための好ましいコンテンツネットワーク、コンテンツキャンペーンのために使用されるべきリソースの値、コンテンツキャンペーンの開始日および終了日、コンテンツキャンペーンの持続時間、コンテンツアイテムオブジェクトの配置のスケジュール、言語、地理的位置、コンテンツアイテムオブジェクトを提供するコンピューティングデバイスのタイプを含むことができる。場合によっては、インプレッションは、コンテンツアイテムがそのソース(例えば、データ処理システム102またはコンテンツプロバイダコンピューティングデバイス106)からフェッチされるときを指すことができ、カウント可能である。場合によっては、クリック詐欺の可能性のため、ロボットアクティビティは、インプレッションとしてフィルタリングされ、除外され得る。したがって、場合によっては、インプレッションは、ブラウザからのページ要求に対するウェブサーバからの応答の尺度を指すことができ、それは、ロボットアクティビティおよびエラーコードからフィルタリングされ、コンピューティングデバイス104における表示のためにコンテンツアイテムをレンダリングする機会にできるだけ近い時点で記録される。場合によっては、インプレッションは、可視または可聴のインプレッションを指すことができ、例えば、コンテンツアイテムオブジェクトまたはデジタル構成要素は、クライアントコンピューティングデバイス104のディスプレイデバイスにおいて少なくとも部分的に(例えば、20%、30%、40%、50%、60%、70%、またはそれよりも上)見ることが可能であり、または、コンピューティングデバイス104のスピーカ136を介して可聴である。クリックまたは選択は、可聴インプレッションへの音声応答、マウスクリック、タッチインタラクション、ジェスチャ、シェイク、オーディオインタラクション、またはキーワードクリックのような、コンテンツアイテムオブジェクトとのユーザインタラクションを指すことができる。コンバージョンは、ユーザがコンテンツアイテムオブジェクションに関して所望のアクションを行うこと、例えば、製品もしくはサービスを購入すること、調査を完了すること、コンテンツアイテムに対応する実店舗を訪問すること、または電子取引を完了することを指すことができる。
コンテンツプロバイダコンピューティングデバイス106は、コンテンツキャンペーンのための1つまたは複数のコンテンツグループをさらに確立することができる。コンテンツグループは、1つまたは複数のコンテンツアイテムオブジェクトと、キーワード、単語、用語、フレーズ、地理的位置、コンピューティングデバイスのタイプ、時刻、関心、トピック、またはバーティカルのような、対応するコンテンツ選択基準とを含む。同じコンテンツキャンペーンの下のコンテンツグループは、同じキャンペーンレベルパラメータを共有することができるが、キーワード、除外キーワード(例えば、除外キーワードが存在するときにメインコンテンツにおけるコンテンツアイテムの配置をブロックする)、キーワードの入札(bid)、または、入札もしくはコンテンツキャンペーンに関連付けられたパラメータのようなコンテンツグループレベルパラメータに合うように仕様を調整していてもよい。
新しいコンテンツグループを作成するために、コンテンツプロバイダコンピューティングデバイス106は、コンテンツグループのコンテンツグループレベルパラメータに関する値を提供することができる。コンテンツグループレベルパラメータは、例えば、コンテンツグループ名またはコンテンツグループテーマと、異なるコンテンツ配置の機会(例えば、自動配置または管理された配置)または結果(例えば、クリック、インプレッション、またはコンバージョン)に関する入札とを含む。コンテンツグループ名またはコンテンツグループテーマは、コンテンツプロバイダが、コンテンツグループのコンテンツアイテムオブジェクトが表示のために選択されるべきトピックまたは主題を取り込むために使用することができる1つまたは複数の用語であり得る。例えば、飲食品会社は、それが取り扱う食品または飲料品の各ブランドについて異なるコンテンツグループを作成することができ、それを運ぶ車両のモデルごとに異なるコンテンツグループをさらに作成してもよい。飲食品会社が使用することができるコンテンツグループテーマの例は、「ブランドAコーラ」、「ブランドBジンジャーエール」、「ブランドCオレンジジュース」、「ブランドDスポーツドリンク」、または「ブランドE精製水」を含む。コンテンツキャンペーンテーマの例は、「ソーダ」であり得、例えば、「ブランドAコーラ」と「ブランドBジンジャーエール」の両方に関するコンテンツグループを含むことができる。コンテンツアイテム(またはコンテンツアイテムオブジェクトもしくはデジタル構成要素)は、「ブランドA」、「ブランドB」、「ブランドC」、「ブランドD」、または「ブランドE」を含むことができる。コンテンツアイテムオブジェクトまたはデジタル構成要素は、パラメータ的に駆動されるテキスト読み上げ技法のために構成されたコンテンツアイテムを指すことができる。
コンテンツプロバイダコンピューティングデバイス106は、1つまたは複数のキーワードおよびコンテンツアイテムオブジェクトを各コンテンツグループに提供することができる。キーワードは、コンテンツアイテムオブジェクトに関連付けられるかまたはそれによって識別される製品またはサービスに関連する用語を含むことができる。キーワードは、1つまたは複数の用語またはフレーズを含むことができる。例えば、飲食品会社は、ブランドが提供する商品またはサービスを記述することができるコンテンツグループまたはコンテンツキャンペーンのためのキーワードとして、「ソーダ」、「コーラ」、「ソフトドリンク」を含むことができる。場合によっては、特定の用語またはキーワードにおけるコンテンツの配置を回避、防止、ブロック、または無効にするために、コンテンツプロバイダによって除外キーワードが指定され得る。コンテンツプロバイダは、コンテンツアイテムオブジェクトを選択するために使用される、完全一致、フレーズ一致、または部分一致のような、マッチングのタイプを指定することができる。
コンテンツプロバイダコンピューティングデバイス106は、コンテンツプロバイダコンピューティングデバイス106によって提供されるコンテンツアイテムオブジェクトを選択するためにデータ処理システム102によって使用されるべき1つまたは複数のキーワードを提供することができる。コンテンツプロバイダコンピューティングデバイス106は、入札する1つまたは複数のキーワードを識別し、様々なキーワードの入札額をさらに提供することができる。コンテンツプロバイダコンピューティングデバイス106は、コンテンツアイテムオブジェクトを選択するためにデータ処理システム102によって使用されるべき追加のコンテンツ選択基準を提供することができる。複数のコンテンツプロバイダ106は、同じまたは異なるキーワードに入札することができ、データ処理システム102は、電子メッセージのキーワードの指示の受信に応答してコンテンツ選択プロセスまたは広告オークションを実行することができる。
コンテンツプロバイダコンピューティングデバイス106は、データ処理システム102による選択のために1つまたは複数のコンテンツアイテムオブジェクトを提供することができる。データ処理システム102は、リソース割り当て、コンテンツスケジュール、最大入札、キーワード、および、コンテンツグループについて指定された他の選択基準に一致するコンテンツ配置機会が利用可能になると、(例えば、コンテンツセレクタ構成要素118を介して)コンテンツアイテムオブジェクトを選択することができる。音声コンテンツアイテム、オーディオコンテンツアイテム、テキストコンテンツアイテム、画像コンテンツアイテム、ビデオコンテンツアイテム、マルチメディアコンテンツアイテム、またはコンテンツアイテムリンクのような様々なタイプのコンテンツアイテムオブジェクトがコンテンツグループ内に含まれ得る。コンテンツアイテムを選択すると、データ処理システム102は、コンピューティングデバイス104またはコンピューティングデバイス104のディスプレイデバイスにおいてレンダリングするためにコンテンツアイテムオブジェクトを送信することができる。レンダリングすることは、ディスプレイデバイスにおいてコンテンツアイテムを表示すること、または、コンピューティングデバイス104のスピーカを介してコンテンツアイテムを再生することを含むことができる。データ処理システム102は、コンテンツアイテムオブジェクトを提示するために、コンピューティングデバイス104もしくはチャットボット構成要素114、またはサードパーティチャットボットプラットフォーム146に命令を提供することができる。データ処理システム102は、オーディオ信号または音響波を生成するようにコンピューティングデバイス104またはコンピューティングデバイス104のオーディオドライバ138に命令することができる。
データ処理システム102は、例えば、データパケットを使用して情報を受信および送信するように設計された、構成された、構築された、または動作可能なインターフェース構成要素110を含むことができる。インターフェース110は、ネットワークプロトコルのような1つまたは複数のプロトコルを使用して情報を受信および送信することができる。インターフェース110は、ハードウェアインターフェース、ソフトウェアインターフェース、有線インターフェース、またはワイヤレスインターフェースを含むことができる。インターフェース110は、データをあるフォーマットから別のフォーマットに変換またはフォーマットすることを容易にすることができる。例えば、インターフェース110は、ソフトウェア構成要素のような様々な構成要素間で通信するための定義を含むアプリケーションプログラミングインターフェースを含むことができる。
データ処理システム102は、入力オーディオ信号をデータ処理システム102のインターフェース110に通信して、出力オーディオ信号をレンダリングするためにクライアントコンピューティングデバイスの構成要素を駆動するアプリケーションのような、クライアントコンピューティングデバイス104においてインストールされたアプリケーション、スクリプト、またはプログラムを含むことができる。データ処理システム102は、データパケット、デジタルファイル、または、オーディオ入力信号を含むかまたは識別する他の信号を受信することができる。コンピューティングデバイス104は、トランスデューサ136を介してオーディオ信号を検出し、アナログデジタル変換器を介してアナログオーディオ信号をデジタルファイルに変換することができる。例えば、オーディオドライバ138は、アナログデジタル変換器構成要素を含むことができる。
データ処理システム102は、オーディオ信号を含むデジタルファイルを受信または取得し、オーディオ信号を構文解析するために、NLP構成要素112を実行することができる。例えば、NLP構成要素112は、人間とコンピュータとの間の対話を提供することができる。NLP構成要素112は、自然言語を理解し、データ処理システム102が人間または自然言語入力から意味を導出することを可能にするための技法を用いて構成され得る。NLP構成要素112は、統計的機械学習のような機械学習に基づく技法を含むか、またはそれを用いて構成され得る。NLP構成要素112は、入力オーディオ信号を構文解析するために、決定木、統計モデル、または確率モデルを利用することができる。NLP構成要素112は、例えば、名前付きエンティティ認識(例えば、テキストのストリームが与えられた場合、テキスト内のどのアイテムが人または場所のような適切な名前にマッピングされるか、および各々のそのような名前が人、場所、組織のようなどんなタイプであるかを判定する)、自然言語生成(例えば、コンピュータデータベースまたは意味論的意図(semantic intent)からの情報を理解可能な人間の言語に変換する)、自然言語理解(例えば、テキストを、コンピュータモジュールが操作することができる1階論理(first-order logic)構造のようなより正式な表現に変換する)、機械翻訳(例えば、ある人間の言語から別の人間の言語に自動的に翻訳する)、形態論的分割(morphological segmentation)(例えば、単語を個々の形態素に分離し、形態素のクラスを識別し、これは、考慮されている言語の形態論の複雑さおよび単語の構造に基づいて困難になる可能性がある)、質問応答(例えば、明確なまたは自由回答であり得る人間の言語の質問への回答を決定する)、意味処理(例えば、単語を識別し、識別された単語を同様の意味を有する他の単語に関連付けるためにその意味を符号化した後に生じ得る処理)のような機能を実行することができる。
NLP構成要素112は、入力信号を(例えば、データリポジトリ124内の)記憶されたオーディオ波形の代表的なセットと比較し、最も近い一致を選択することによって、オーディオ入力信号を認識されたテキストに変換する。オーディオ波形のセットは、データリポジトリ124、または、データ処理システム102にアクセス可能な他のデータベース内に記憶され得る。代表的な波形は、ユーザの大規模なセット全体で生成され、次いで、ユーザからの音声サンプルで補強されてもよい。オーディオ信号が認識されたテキストに変換された後、NLP構成要素112は、例えば、ユーザ全体のトレーニングを介してまたは手動の仕様を介してデータ処理システム102が提供することができるアクションに関連付けられた単語にテキストを一致させる。NLP構成要素112は、画像またはビデオ入力をテキストまたはデジタルファイルに変換することができる。NLP構成要素112は、アクションを実行するため、要求を生成するため、またはデータ構造を選択もしくは識別するために、画像またはビデオ入力を処理、分析、または解釈することができる。
オーディオ入力信号は、クライアントコンピューティングデバイス104のセンサ134またはトランスデューサ136(例えば、マイクロフォン)によって検出され得る。トランスデューサ136、オーディオドライバ138、または他の構成要素を介して、クライアントコンピューティングデバイス104は、オーディオ入力信号を(例えば、ネットワーク105を介して)データ処理システム102に提供し、そこで、オーディオ入力信号は、デジタルファイルまたはデジタルフォーマットとして(例えば、インターフェース110によって)受信され、NLP構成要素112に提供されるか、データリポジトリ124内に記憶され得る。場合によっては、データ処理システム102は、入力音響信号に加えて、またはその代わりに、画像またはビデオ入力信号を受信することができる。データ処理システム102は、例えば、画像解釈技法、コンピュータビジョン、機械学習エンジン、または、画像またはビデオをデジタルファイルに変換するために画像またはビデオを認識または解釈する他の技法を使用して、画像またはビデオ入力信号を処理することができる。1つまたは複数の画像解釈技法、コンピュータビジョン技法、機械学習技法は、画像技法と総称され得る。データ処理システム102(例えば、NLP構成要素112)は、オーディオ処理技法に加えて、またはその代わりに、画像技法を用いて構成され得る。
NLP構成要素112は、入力オーディオ信号を取得することができる。入力オーディオ信号から、NLP構成要素112は、少なくとも1つの要求または要求に対応する少なくとも1つのトリガキーワードを識別することができる、要求は、入力オーディオ信号の意図または主題を示すことができる。トリガキーワードは、とられる可能性が高いアクションのタイプを示すことができる。例えば、NLP構成要素112は、夕食および映画に行くために夕方に家を出るための少なくとも1つの要求を識別するために入力オーディオ信号を構文解析することができる。トリガキーワードは、とるべきアクションを示す少なくとも1つの単語、フレーズ、基語もしくは部分単語、または派生語を含むことができる。例えば、入力オーディオ信号からのトリガキーワード「行く」または「〜に行くために」は、移動の必要性を示すことができる。この例において、入力オーディオ信号(または識別された要求)は、移動の意図を直接表現していないが、トリガキーワードは、移動が要求によって示される少なくとも1つの他のアクションへの付随的なアクションであることを示す。
NLP構成要素112は、要求およびトリガキーワードを識別、決定、検索、または他の方法で取得するために、入力オーディオ信号を構文解析することができる。例えば、NLP構成要素112は、トリガキーワードまたは要求を識別するために、入力オーディオ信号に意味論的処理技法を適用することができる。NLP構成要素112は、第1のトリガキーワードおよび第2のトリガキーワードのような1つまたは複数のトリガキーワードを含むトリガフレーズを識別するために、入力オーディオ信号に意味論的処理技法を適用することができる。例えば、入力オーディオ信号は、「I need a recipe for chicken wings.」という文を含むことができる。NLP構成要素112は、「need」、「recipe」、および「chicken wings」というトリガフレーズを識別するために、文を含むデータパケットに意味論的処理技法、または他の自然言語処理技法を適用することができる。NLP構成要素112は、need、recipe、およびchicken wingsのような複数のトリガキーワードをさらに識別することができる。例えば、NLP構成要素112は、トリガフレーズがトリガキーワードと第2のトリガキーワードとを含むと判定することができる。
NLP構成要素112は、トリガキーワードを識別するために入力オーディオ信号をフィルタリングすることができる。例えば、入力オーディオ信号を搬送するデータパケットは、「It would be great if I could get help with a recipe for chicken wings」を含むことができ、その場合、NLP構成要素は、以下の、「it」、「would」、「be」、「great」、「if」、「I」、「could」、「get」、または「help」のように1つまたは複数の用語を除去することができる。これらの用語を除去することによって、NLP構成要素112は、「recipe for chicken wings」のようなトリガキーワードをより正確かつ確実に識別し、これがレシピチャットボットを起動する要求であると判定することができる。
場合によっては、NLP構成要素は、入力オーディオ信号を搬送するデータパケットが1つまたは複数の要求を含むと判定することができる。例えば、入力オーディオ信号は、「I need some help with making chicken wings and movie show times」という文を含むことができる。NLP構成要素112は、これがチキンのレシピおよび映画の上演時間に対する要求であると判定することができる。NLP構成要素112は、これがレシピと映画の上演時間の両方を提供することができるチャットボットに対する単一の要求であると判定することができる。NLP構成要素112は、これが2つの要求、すなわち、レシピを提供するチャットボットに対する第1の要求と、映画の時間を提供するチャットボットに対する第2の要求とであると判定することができる。場合によっては、NLP構成要素112は、複数の判定された要求を単一の要求に結合し、単一の要求をチャットボット構成要素114またはサードパーティチャットボットプラットフォーム146に送信することができる。場合によっては、NLP構成要素112は、個々の要求をそれぞれのチャットボットプロバイダデバイス108に送信するか、または両方の要求を同じチャットボットプロバイダデバイス108に送信することができる。
したがって、データ処理システム102は、コンピューティングデバイス104のトランスデューサ136によって検出された音声コンテンツを搬送する第1の音響信号に対応するデジタルファイルを受信することができる。第1の音響信号は、コンピューティングデバイス104のアナログデジタル変換器(例えば、オーディオドライバ138)によってデジタルファイルに変換され得る。データ処理システム102は、チャットボットを備えるコンピュータプログラムを選択するためにデジタルファイルを構文解析することができる。例えば、データ処理システム102は、デジタルファイルに応答して、データ処理システム102またはコンピューティングデバイス104またはサードパーティチャットボットプラットフォーム146による実行のためのチャットボットを含むコンピュータプログラムを選択するように設計され構築されたチャットボット構成要素114を含むことができる。
チャットボット構成要素114は、デジタルファイル内のキーワード、トークン、用語、概念、または他の情報を識別することができる。チャットボット構成要素114は、デジタルファイル内のキーワード、トークン、用語、概念、または他の情報を識別するために、自然言語プロセッサ構成要素112を利用することができる。自然言語プロセッサ構成要素112は、構文解析されたキーワード、トークン、用語、または概念をチャットボット構成要素114に提供することができる。チャットボット構成要素114は、デジタルファイルのキーワードまたは概念に応答するチャットボットを選択することができる。
例えば、データ処理システム102は、第1のデジタルファイルがレシピチャットボットに対する要求を含むと判定することができる。チャットボット構成要素114は、レシピを提供することができるチャットボットを識別するためにチャットボットデータ構造132における探索を実行することができる。例えば、チャットボットデータ構造132は、チャットボットごとにチャットボットが提供することができる商品、サービス、または機能を記述するキーワードまたは他の情報を含むことができる。チャットボット構成要素114は、対応するチャットボットを起動、開始、実行、または他の方法でアクティブにするために、チャットボットデータ構造132を介して決定される識別子を使用することができる。場合によっては、識別子は、ファイル名もしくはファイルパス、ポインタ、ウェブアドレス、インターネットプロトコルアドレス、ユニフォームリソースロケータ、またはチャットボットを識別するための他のものを含むか、またはそれに関連付けられ得る。例えば、データ処理システム102は、レシピチャットボットがサードパーティチャットボットプラットフォーム146を介して提供されると判定し、サードパーティチャットボットプラットフォーム146に、レシピチャットボットを起動し、直接またはデータ処理システム102を介して(例えば、チャットボット構成要素114を介して)コンピューティングデバイス104と連動するように指示することができる。
チャットボットの起動または起動もしくは実行を引き起こす前に、データ処理システム102は、コンピューティングデバイス104がチャットボットにアクセスする許可を与えられるかどうかを判定することができる。データ処理システム102は、コンピューティングデバイス104がチャットボットを備えるコンピュータプログラムにアクセスする許可を与えられるかどうかを判定するために、コンピューティングデバイス104の識別子を用いて(例えば、チャットボット構成要素114を介して)データリポジトリ124(例えば、プロファイルデータ構造126)内を探索することができる。許可は、サブスクリプション、計画、制限、リソース要件、バージョン管理、またはデバイス機能に基づくことができる。例えば、データ処理システム102は、データ処理システム102は、コンピューティングデバイス104がオペレーティングシステムの事前定義されたバージョンを用いて構成されている場合、コンピューティングデバイス104にチャットボットへのアクセスを許すことができる。別の例において、データ処理システム102は、コンピューティングデバイス104が有効なアカウントまたはプロファイルに関連付けられている場合、コンピューティングデバイス104にチャットボットへのアクセスを許すことができる。場合によっては、データ処理システム102が、コンピューティングデバイス104がチャットボットへのアクセスを許可されていないと判定した場合、データ処理システム102は、スレッドを終了するか、ユーザに促すか、または、コンピューティングデバイス104がアクセスを許可されている別のチャットボットを識別することができる。したがって、データ処理システム102は、コンピューティングデバイス104がチャットボットへのアクセスを許可されているとの判定に応答してチャットボットを選択することができる。
インターフェース110は、チャットボット自体を起動することができ、または、サードパーティチャットボットプラットフォーム146に、チャットボットに関連付けられた会話アプリケーションプログラミングインターフェース(例えば、NLP構成要素142)を呼び出させ、データ処理システム102またはサードパーティチャットボットプラットフォーム146とクライアントコンピューティングデバイス104との間の通信セッションを確立させるようにサードパーティチャットボットプラットフォーム146に命令を送信することができる。データ処理システム102またはサードパーティチャットボットプラットフォーム146とクライアントコンピューティングデバイス104との間の通信セッションを確立することに応答して、データ処理システム102は、ネットワーク105を介してクライアントコンピューティングデバイス104にデータパケットを直接送信することができる。場合によっては、サードパーティチャットボットプラットフォーム146は、データ処理システム102およびネットワーク105を介してクライアントコンピューティングデバイス104にデータパケットを送信することができる。
場合によっては、チャットボットプロバイダデバイス108、チャットボット、またはサードパーティチャットボットプラットフォーム146は、会話API142の少なくとも一部を実行することができる。例えば、サードパーティチャットボットプラットフォーム146は、通信セッションの特定の態様またはクエリのタイプを処理することができる。サードパーティチャットボットプラットフォームは、通信セッションに関連するオーディオ信号を処理することと、クエリに対する応答を生成することとを容易にするために、データ処理システム102によって実行されるNLP構成要素112を活用してもよい。場合によっては、データ処理システム102は、サードパーティチャットボットプラットフォーム146のために構成された会話API142を含むことができる。場合によっては、データ処理システムは、通信セッションを確立するためにクライアントコンピューティングデバイスとサードパーティプロバイダデバイスとの間でデータパケットをルーティングする。データ処理システム102は、サードパーティチャットボットプラットフォーム146から、サードパーティデバイスがクライアントデバイス104との通信セッションを確立したという指示を受信することができる。指示は、クライアントコンピューティングデバイス104の識別子、通信セッションが確立されたときに対応するタイムスタンプ、または、通信セッションに関連付けられたデータ構造のような、通信セッションに関連付けられた他の情報を含むことができる。
会話APIは、第1のNLP112の1つまたは複数の構成要素または機能を含む第2のNLPであり得る。第2のNLP142は、第1のNLP112と対話するか、またはそれを活用することができる。場合によっては、システム100は、データ処理システム102によって実行される単一のNLP112を含むことができる。単一のNLP112は、データ処理システム102とチャットボットの両方をサポートすることができる。場合によっては、インターフェース110は、サービスを実行することを容易にするためにデータ構造を生成または構築し、会話APIは、エンドユーザとの通信セッションを進めるために、または、エンドユーザの体験もしくはサービスのパフォーマンスを改善または強化するために追加の情報を取得するために、応答またはクエリを生成する。
チャットボットを備えるコンピュータプログラムは、データ処理システム102、チャットボットプロバイダデバイス108、またはサードパーティチャットボットプラットフォーム146において実行することができる。チャットボットは、応答を決定するために、1つもしくは複数のデジタルファイルまたは1つもしくは複数のデジタルファイルの一部を受信して処理することができる。例えば、チャットボットは、データ処理システム102上のチャットボット構成要素114として実行することができる。
チャットボットは、実行時に、デジタルファイルに応答する対話データ構造を識別することができる。例えば、デジタルファイルは、「I need a recipe for chicken wings.」の音声入力に応答することができる。レシピチャットボットのようなチャットボットは、自然言語処理技法、検索エンジン技法、パターンマッチング技法、または意味解析技法を使用して、クエリに応答する対話データ構造を識別することができる。例えば、対話データ構造は、チキンウィングの材料を含むことができる。対話データ構造は、プレースホルダ領域を含むことができる。プレースホルダ領域には、コンテンツアイテムが入力され得る。プレースホルダ領域は、コンテンツに対する要求をトリガするタグまたは指示として機能することができる。
チャットボットの開発者は、チャットボットのためのコンピュータプログラムまたはクエリに対する応答の一部としてプレースホルダ領域を含めることができる。チャットボットの開発者は、アプリケーションプログラミングインターフェース、スクリプト、タグ、マークアップ言語、または、チャットボットがプレースホルダ領域を識別し、コンテンツを要求し、プレースホルダ領域に選択されたコンテンツアイテムを入力することを可能にする他のメカニズムを使用して、プレースホルダ領域をプログラムすることができる。プレースホルダ領域は、対話データ構造に関連し、プレースホルダへの挿入に適したコンテンツアイテムを選択するために使用され得るコンテンツ選択基準を提供するメタデータに関連付けられ得る。例えば、対話データ構造が材料のリストであり、プレースホルダが「コーラ」という用語の前にあり、それを修正する場合、メタデータまたはコンテンツ選択基準は、ブランド名またはコーラを販売する会社を含むコンテンツアイテムを選択することを示すことができる。
場合によっては、対話データ構造は、プレースホルダ領域を含まなくてもよい。データ処理システム102は、識別された対話データ構造を受信または傍受することができる。データ処理システム102は、プレースホルダ領域を挿入する対話データ構造の一部分を識別するように設計されて構成されたプレースホルダ生成構成要素116を含むことができる。プレースホルダ生成構成要素116は、対話データ構造を処理し、プレースホルダ領域を挿入する部分を識別するために、自然言語処理構成要素112を使用するか、またはそれと対話することができる。プレースホルダ生成構成要素116は、対話データ構造内のキーワードまたは用語に基づいて部分を識別することができる。プレースホルダ生成構成要素116は、利用可能なコンテンツアイテムに基づいて部分を識別することができる。例えば、プレースホルダ生成構成要素116は、対話データ構造内の「コーラ」というキーワードを識別し、「コーラ」という用語の前にプレースホルダ領域が存在するとさらに判定することができる。プレースホルダ生成構成要素116は、コンテンツデータデータ構造130が「コーラ」というキーワードに関連付けられたコンテンツアイテムを含むと判定することができる。プレースホルダ生成構成要素116は、「コーラ」というキーワードに対するコンテンツ選択プロセスを開始することを決定し、選択されたコンテンツアイテムを対話データ構造内の「コーラ」という用語に隣接して挿入することができる。
プレースホルダ生成構成要素116は、(例えば、自然言語プロセッサ構成要素112を介して)自然言語処理技法を使用して、プレースホルダ領域もしくはそのコンテンツアイテムを挿入するかどうか、およびどこに挿入するかを決定することができる。例えば、プレースホルダ生成構成要素116は、対話データ構造の文法および構文ならびにデータ構造のキーワードを識別するためにNLP構成要素112を使用することができる。キーワード、文法、および構文に基づいて、プレースホルダ生成構成要素116は、プレースホルダ領域をどこに挿入するのかを決定することができる。文法は、所与の言語における規則のセットを指すことができる。構文は、文の構造を指すことができる。対話データ構造の文法および構文に基づいて、プレースホルダ生成構成要素116は、プレースホルダ領域の適切な位置を決定することができる。例えば、プレースホルダ生成構成要素116は、対話データ構造内の名詞に隣接して名詞の前にプレースホルダ領域を配置することを決定することができる。プレースホルダ生成構成要素116は、対話データ構造の最初、中間、または最後において配置される対話データ構造内の名詞に隣接して名詞の前にプレースホルダ領域を配置することを決定することができる。プレースホルダ生成構成要素116は、動詞、代名詞、形容詞、または副詞に隣接してプレースホルダ領域を配置しないことを決定してもよい。場合によっては、プレースホルダ生成構成要素116は、対話データ構造内にプレースホルダ領域を挿入しないことを決定してもよい。例えば、対話データ構造内の唯一の名詞は、対話データ構造内の第1の用語であってもよく、プレースホルダ生成構成要素116は、対話データ構造内に第1の用語としてコンテンツアイテムを挿入しないように構成され得る。
したがって、データ処理システム102は、プレースホルダ領域を対話データ構造内に自動的に挿入し、プレースホルダ領域にコンテンツアイテムを入力することができる。プレースホルダ領域を自動的に生成することによって、開発者は、各対話データ構造内にプレースホルダ領域を含めなくてもよいので、チャットボットコンピュータプログラムは、より少ないメモリを占有するか、またはより複雑でなくエラーが生じにくいコードを有することができる。
チャットボットは、プレースホルダ領域を識別すると、コンテンツに対する要求を送信することができる。場合によっては、プレースホルダ生成構成要素116は、プレースホルダ領域を挿入することを決定すると、対話データ構造をチャットボットに戻すことなく、コンテンツセレクタ構成要素118を介してコンテンツ選択プロセスをトリガすることができる。
データ処理システム102は、自然言語プロセッサによって識別されたトリガキーワードを受信し、トリガキーワードに基づいて、リアルタイムコンテンツ選択プロセスを介してコンテンツアイテムを選択するために、コンテンツセレクタ構成要素118を含むか、実行するか、または他の方法でそれと通信することができる。コンテンツ選択プロセスは、サードパーティコンテンツプロバイダによって提供されるスポンサー付きコンテンツアイテムオブジェクトを選択することを指すか、または含むことができる。リアルタイムコンテンツ選択プロセスは、コンピューティングデバイス104に提供する1つまたは複数のコンテンツアイテムを選択するために、複数のコンテンツプロバイダによって提供されるコンテンツアイテムが、構文解析、処理、重み付け、またはマッチングされるサービスを含むことができる。コンテンツセレクタ構文解析118は、リアルタイムでコンテンツ選択プロセスを実行することができる。リアルタイムでコンテンツ選択プロセスを実行することは、クライアントコンピューティングデバイス104を介して受信されるコンテンツに対する要求に応答してコンテンツ選択プロセスを実行することを指すことができる。リアルタイムコンテンツ選択プロセスは、要求を受信する時間間隔(例えば、5秒、10秒、20秒、30秒、1分、2分、3分、5分、10分、または20分)内に実行(例えば、開始または完了)され得る。リアルタイムコンテンツ選択プロセスは、クライアントコンピューティングデバイス104との通信セッション中に、または、通信セッションが終了した後の時間間隔内で実行され得る。
例えば、データ処理システム102は、コンテンツアイテムオブジェクトを選択するように設計された、構築された、構成された、または動作可能なコンテンツセレクタ構成要素118を含むことができる。コンテンツセレクタ構成要素118は、画像処理技法、文字認識技法、自然言語処理技法、またはデータベース検索を使用して、候補コンテンツアイテムの音声、オーディオ、用語、テキスト、記号、または画像を識別、分析、または認識することができる。候補コンテンツアイテムは、候補コンテンツアイテムの主題を示すメタデータを含むことができ、その場合、コンテンツセレクタ構成要素118は、候補コンテンツアイテムの主題が入力オーディオ信号に対応するかどうかを判定するためにメタデータを処理することができる。
コンテンツプロバイダ106は、コンテンツアイテムを含むコンテンツキャンペーンを設定するときに追加のインジケータを提供することができる。コンテンツプロバイダコンピューティングデバイス106は、コンテンツセレクタ構成要素118が候補コンテンツアイテムに関する情報を使用して検索を実行することができるコンテンツキャンペーンまたはコンテンツグループレベルにおいて情報を提供することができる。例えば、候補コンテンツアイテムは、コンテンツグループ、コンテンツキャンペーン、またはコンテンツプロバイダにマッピングすることができる一意の識別子を含んでもよい。コンテンツセレクタ構成要素118は、データリポジトリ124内のコンテンツキャンペーンデータ構造内に記憶された情報に基づいて、コンテンツプロバイダコンピューティングデバイス106に関する情報を判定することができる。
データ処理システム102は、コンピューティングデバイス104を介して提供するためのコンテンツに対する要求を受信することができる。要求は、デバイスタイプ、場所、および要求に関連付けられたキーワードのような、要求の選択基準を含むことができる。要求は、対話データ構造を含むことができる。
要求に応答して、データ処理システム102は、データリポジトリ124、またはコンテンツプロバイダコンピューティングデバイス106に関連付けられたデータベースからコンテンツアイテムオブジェクトを選択し、ネットワーク105を介して、コンピューティングデバイス104を介して提示するためのコンテンツアイテムを提供することができる。コンテンツアイテムオブジェクトは、チャットボットプロバイダデバイス108とは異なるコンテンツプロバイダデバイス106によって提供され得る。コンピューティングデバイス104は、コンテンツアイテムオブジェクトと対話することができる。コンピューティングデバイス104は、コンテンツアイテムに対するオーディオ応答を受信することができる。コンピューティングデバイス104は、コンピューティングデバイス104が、コンテンツプロバイダコンピューティングデバイス106を識別し、コンテンツプロバイダコンピューティングデバイス106からのサービスを要求し、サービスを実行するようにコンテンツプロバイダコンピューティングデバイス106に指示し、情報をコンテンツプロバイダコンピューティングデバイス106に送信し、または、コンテンツプロバイダコンピューティングデバイス106に関連付けられた商品もしくはサービスを他の方法で識別することを行わせるかまたは許可するコンテンツアイテムオブジェクトに関連付けられたハイパーリンクまたは他のボタンを選択するための指示を受信することができる。
コンテンツに対する要求は、コンテンツのフォーマット、キーワード、概念、プロファイル情報、または、コンテンツ選択を容易にすることができる他の情報を含むことができる。コンテンツ選択コンポーネント118は、リアルタイムコンテンツ選択プロセスを実行することができる。リアルタイムコンテンツ選択は、コンテンツに対する要求に応答してコンテンツ選択を実行することを指すことができる。コンテンツに対する要求は、チャットボットが音声入力に応答する対話データ構造を識別した後に生成されるか、送信されるか、または他の方法で提供され得る。
コンテンツセレクタ構成要素118は、テキスト読み上げシステムによって処理され得るテキスト、文字列、または文字を含むコンテンツアイテムを選択することができる。コンテンツセレクタ構成要素118は、パラメータ的に駆動されるテキスト読み上げ技法のために構成されたパラメータ化フォーマットであるコンテンツアイテムを選択することができる。場合によっては、対話データ構造は、SSMLフォーマットであるか、または音声パラメータを用いて構成され得る。データ処理システム102は、データ処理システム102は、コンテンツアイテムがネイティブ音声、画像、または音響指紋を用いてコンピューティングデバイス104のユーザに提供され得る(例えば、コンテンツアイテムがコンテンツアイテムなしの対話データ構造と比較して同じまたは類似の音響特性を有する)ように、チャットボットによって識別された対話データ構造の音声パラメータと一致するようにコンテンツアイテムの音声パラメータを構成することができる。
コンテンツセレクタ構成要素118は、オーディオファイルフォーマットであるコンテンツアイテムの代わりに、テキスト読み上げのために構成されたパラメータ化フォーマットであるコンテンツアイテムを選択することができる。例えば、すでにオーディオファイルフォーマットであるコンテンツアイテムは、チャットボットコンピュータプログラムによって識別された対話データ構造のプレースホルダ領域にシームレスに挿入されるように構成されていない場合があるので、コンテンツセレクタ構成要素118は、.WAV、.AIFF、または.AUのようなオーディオファイルフォーマットまたはオーディオコーディングフォーマットであるオーディオファイル内のコンテンツアイテムを選択しなくてもよい。オーディオファイルフォーマットにおけるコンテンツアイテムは、コンピューティングデバイスのネイティブ音声、またはチャットボットのための音響指紋セットと比較して、異なる音響指紋を有する場合がある。コンテンツアイテムオーディオファイルがチャットボットまたは対話データ構造のネイティブ音声または音響指紋と比較して異なる音響指紋を有する(例えば、単語が異なるレートにおいて、異なる周波数、異なるピッチ、異なるトーン、異なる音量、または異なるアクセントにおいて話される)場合、コンテンツアイテムオーディオファイルを対話データ構造内のプレースホルダ領域に挿入または統合することは、シームレス、スムーズ、または連続的ではない場合がある。例えば、異なる音響指紋を有するコンテンツアイテムオーディオファイルは、ぎこちない遷移または不均衡の表示を引き起こす可能性がある。したがって、チャットボットまたはコンピューティングデバイスがチャットボットまたはコンピューティングデバイスの音響指紋またはネイティブ音声に対応する方法でコンテンツアイテムを再生することができるテキスト読み上げ技法のために構成されたコンテンツアイテムを提供することによって、データ処理システム102は、チャットボットコンピュータプログラム出力のシームレスな修正の提供を容易にすることができる。
コンテンツセレクタ構成要素118は、選択されたコンテンツアイテムを用いて修正された対話データ構造に対応する音響信号を生成するためにテキスト読み上げ技法をコンピューティングデバイスに実行させるために、選択されたコンテンツアイテムをチャットボットに提供することができる。場合によっては、データ処理システム102は、コンテンツアイテムに対応するデータパケットを送信することができる。データ処理システム102は、コンテンツアイテムを用いて修正された対話データ構造に対応するデータパケットを送信することができる。
データ処理システム102は、セッションを確立するために、セッションハンドラ構成要素120を含むか、実行するか、それにアクセスするか、または他の方法で通信することができる。セッションハンドラ構成要素120は、第1のデジタルファイルに応答してセッションを確立することができる。例えば、セッションハンドラ構成要素120は、クライアントデバイス104とデータ処理システム102との間の通信セッションを確立することができる。通信セッションは、クライアントデバイス104と、クライアントデバイス104のセンサ134によって検出される入力オーディオ信号とデータ処理システム102によってクライアントデバイス104に送信される出力信号とに対応するデジタルファイルを含むデータ処理システム102との間の1つまたは複数のデータ送信を指すことができる。データ処理システム102は、(例えば、セッションハンドラ構成要素120を介して)入力オーディオ信号を受信することに応答して通信セッションを確立することができる。データ処理システム102は、通信セッションに関する持続時間を設定することができる。データ処理システム102は、通信セッションについて設定された持続時間に対してタイマまたはカウンタを設定することができる。タイマの満了に応答して、データ処理システム102は、通信セッションを終了することができる。
セッションハンドラ構成要素120は、時間閾値、位置閾値、または自然言語処理のうちの1つまたは複数に基づいて、セッションの中断、一時停止、または終了を決定することができる。時間閾値は、例えば、5分、10分、15分、20分、30分、1時間、2時間、6時間、またはそれより長いもののような時間間隔を含むことができる。位置閾値は、セッションが確立された時点におけるコンピューティングデバイス104の位置と、コンピューティングデバイス104の現在の位置との間の距離を指すことができる。距離閾値は、0.5マイル、1マイル、2マイル、3マイル、5マイル、10マイル、20マイル、50マイル、またはそれよりも大きいものであり得る。時間閾値および位置閾値は、時刻、地理的位置、人口密度、履歴プロファイル情報、チャットボットのタイプ、またはセッションに関連付けられた他の情報に基づいて変化する動的閾値であり得る。例えば、旅行休暇を予約するプロセスは、数日にわたる可能性があるので、チャットボットがコーヒーショップを見つけることに関連している場合、旅行休暇を予約することを容易にするチャットボットと比較して、時間閾値および距離は、より短い場合がある。自然言語処理は、会話のトピックまたはカテゴリにおける変化に基づいて中断を示すことができる。
通信セッションは、クライアントデバイス104がセッションを確立するために認証情報または資格証明書を提供するネットワークベースの通信セッションを指すことができる。場合によっては、通信セッションは、セッション中にデータパケットによって搬送されるオーディオ信号のチャットボット、トピック、またはコンテキストを指す。例えば、第1の通信セッションは、クライアントデバイス104とデータ処理システム102との間で送信される、レシピに関連する(例えば、キーワード、対話データ構造、チャットボット、またはコンテンツアイテムオブジェクトを含む)オーディオ信号を指すことができ、第2の通信セッションは、クライアントデバイス104と、映画チケットに関連するデータ処理システム102との間で送信されるオーディオ信号を指すことができる。この例において、データ処理システム102は、(例えば、NLP構成要素112を介して)オーディオ信号のコンテキストが異なることを決定し、オーディオ信号の2つのセットを異なる通信セッションに分離することができる。セッションハンドラ114は、映画チケットに関連する1つまたは複数の信号を識別することに応答して、レシピに関連する第1のセッションを終了することができる。したがって、データ処理システム102は、オーディオ信号のコンテキストを検出することに応答して、映画チケットに関連するオーディオ信号に関する第2のセッションを開始または確立することができる。
セッションハンドラ構成要素120は、対話データ構造を提供するために(for provision with)以前に選択されたコンテンツアイテムの再利用を可能にするように設計および構築される。セッションハンドラ構成要素120は、以前に選択されたコンテンツアイテムを再利用することをセッションハンドラ構成要素120が決定したことに応答して、コンテンツセレクタ構成要素118による第2のコンテンツ選択プロセスを防止、ブロック、無効化、またはキャンセルすることができる。冗長コンテンツ選択プロセスを回避するか、またはコンテンツ選択プロセスを他の方法で排除することによって、セッションハンドラ構成要素120は、データ処理システム102によるプロセッサおよび他の計算リソースの利用を低減することができる。
データ処理システム102は、同じセッション中に、または、セッション中断を決定し、前のセッションを再開するために次のセッションを前のセッションとマージすることを決定した後、コンテンツアイテムを再利用するかまたは再び現れさせることができる。データ処理システム102は、セッションにおける中断を決定した後にセッションを再開することができる。データ処理システム102は、後続のデジタルファイル、音声入力、意味入力、または、後続のデジタルファイルもしくは音声入力に関連付けられた他の情報が、現在の音声入力が以前のセッションに対応するかまたは関連することを示す場合、セッションを再開することができる。例えば、セッションハンドラ120は、自然言語プロセッサ構成要素112を介して、セッション中断後に受信された第2のデジタルファイルと、セッション中断前に受信された第1のデジタルファイルとを、それらが同じトピック、カテゴリ、タスクフロー、チャットボット、コンピューティングデバイス、または対話データ構造に関連すると判定するために比較することができる。例えば、コンピューティングデバイス104は、セッションの中断後に同じチャットボットを呼び出すことができ、データ処理システム102は、前のセッションを再開することを決定することができる。
再利用するコンテンツアイテムを識別するために、データ処理システム102は、以前に選択されたコンテンツアイテムをインデックスデータ構造128内の値に関連付けることができる。値は、コンテンツアイテムの選択に関連するチャットボットの第1の識別子と、コンテンツアイテムが提供された第1の対話データ構造に関する第2の識別子と、コンテンツアイテムの提供に関連するコンピューティングデバイス104に関する第3の識別子とに基づいて生成され得る。セッションハンドラ構成要素120が、コンテンツアイテムに対する後続の要求が同じ値に関連付けられていると判定した場合、セッションハンドラ構成要素120は、以前に選択されたコンテンツアイテムを再利用することを決定することができる。
例えば、選択された「ブランドA」というコンテンツアイテムは、コンピューティングデバイス104を介して、以下のチャットボットによって識別される「材料:ブランドAコーラ」のように「材料:<プレースホルダ>コーラ」を含む対話データ構造を最初に提供された可能性がある。第1、第2、および第3の識別子は、第1の識別子:chatbot_123、第2の識別子:dialog_data_structure_123、第3の識別子:computing_device_123のような、英数字の識別子であり得る。対話データ構造の識別子は、対話データ構造のトピック、概念、カテゴリ、または正確なフレーズに対応することができる。例えば、第2の識別子dialog_data_structure_123は、チキンウィングレシピを提供するすべての対話データ構造に対応することができる。別の例において、第2の識別子dialog_data_structure_123は、コーラを用いるチキンウィングレシピを提供するすべての対話データ構造に対応することができる。別の例において、第2の識別子dialog_data_structure_123は、「コーラ」という用語の直前にプレースホルダ領域を有する、コーラを用いるチキンウィングレシピを提供するすべての対話データ構造に対応することができる。インデックス値は、これらの3つのタプル、または別の数のタプルで構成され得る。インデックス値は、第1、第2、および第3の識別子を含むタプルをハッシュするハッシュ関数を使用して形成され得る。インデックス値は、ハッシュ値を指すことができ、ハッシュテーブル(例えば、インデックスデータ構造128)内に記憶され得る。インデックス値は、数値、英数字であり得、または、記号もしくは他の識別子を含む。インデックス値は、テーブル内の行および列、または多次元テーブル内のエントリに対応することができる。インデックス値は、index_value{first_identifier, second identifier, third identifier}のようなデータ構造内の領域に対応することができる。
データ処理システム102は、コンテンツアイテムをインデックスデータ構造128内の生成されたインデックス値に関連付けることができる。データ処理システム102は、関連付けのための追加のパラメータまたは条件を関連付けるか、割り当てるか、または設定することができる。データ処理システム102は、コンテンツアイテムと生成されたインデックス値との間の関連付けに関する持続時間、関連付けに関する地理的条件、または意味論的条件を設定することができる。例えば、セッションの持続時間が時間間隔(例えば、5分、10分、20分、30分、1時間、2時間、6時間、12時間、またはそれよりも長い時間)を超えた場合、データ処理システム102は、コンテンツアイテムとインデックス値との間の関連付けを終結、中断、または終了することができる。コンテンツアイテムとインデックス値との間の関連付けが作成されたときにコンピューティングデバイス104が位置していた場所からコンピューティングデバイス104がある距離(例えば、0.5マイル、1マイル、2マイル、3マイル、5マイル、10マイル、20マイル、30、マイル、またはそれよりも長い距離)よりも長く進んだまたは移動した場合、データ処理システム102は、関連付けを終結、中断、または終了することができる。
データ処理システム102は、第2の対話データ構造内のコンテンツアイテムを再利用するために、コンテンツアイテムとインデックス値との間の関連付けを利用することができる。例えば、データ処理システム102は、コンピューティングデバイス104上のマイクロフォンによって検出された音声コンテンツを搬送する別の音響信号に対応する第2のデジタルファイルを受信することができる。データ処理システム102は、第2のデジタルファイルの第2の音声コンテンツに応答して、第1の識別子: chatbot_123に対応するチャットボットを備えるコンピュータプログラムを選択することができる。チャットボットは、第2のプレースホルダ領域を含む第2の対話データ構造を識別することができる。チャットボットは、第2の対話データ構造が第1の対話データ構造の第2の識別子に対応する第4の識別子を有すると判定することができる。例えば、第2の対話データ構造および第1の対話データ構造は、両方とも、チキンウィングのレシピに関連し、したがって、同じ識別子に対応することができる。第2の対話データ構造が同じチャットボット、コンピューティングデバイス、および対話データ構造識別子に関連付けられているので、データ処理システム102は、第2の対話データ構造内のプレースホルダ領域に対して以前に選択されたコンテンツアイテムを再利用することを決定することができる。データ処理システム102は、第2の対話データ構造からの識別子を用いてインデックス値を生成し、インデックスデータ構造128内の同じインデックス値に関連付けられているコンテンツアイテムを選択し、チャットボットまたはコンピューティングデバイスに同じコンテンツアイテムを用いて修正された第2の対話データ構造に対応する音響信号を生成させるために、同じコンテンツアイテムに第2の対話データ構造を提供することができる。
例えば、コンテンツアイテムを有する第1の対話データ構造は、「チキンウィングの材料は、ブランドAのコーラを含む」であり得る。再利用されたコンテンツアイテムを有する第2の対話データ構造は、「キャセロール内で、ブランドAのコーラ1缶と、玉ねぎ、にんにく、および黒砂糖とを混ぜ合わせる。」であり得る。したがって、「ブランドA」というコンテンツアイテムは、第2の対話データ構造内で再利用され、それによって、第2のコンテンツ選択プロセスを排除し、コンテンツセレクタ構成要素118によるコンピューティングリソース利用を低減する。
場合によっては、データ処理システム102は、異なるチャットボットにわたってコンテンツアイテムを再利用することができる。例えば、コンテンツアイテムは、レシピチャットボットのような第1のチャットボットによって識別された対話データ構造内に挿入するために選択され得る。コンテンツアイテムへの第1のチャットボットの第1の対話データ構造の提供に続いて、第2のチャットボットがコンピューティングデバイス104を介して呼び出され得る。第2のチャットボットは、コンピューティングデバイス104を介して受信された第2のデジタルファイルに基づいて呼び出され得る。第2のチャットボットは、第2のデジタルファイルに応答して第2の対話データ構造を識別することができる。例えば、第2のデジタルファイルは、映画の時間に対する要求に応答することができ、第2のチャットボットは、映画チャットボットであり得、第2の対話データ構造は、「映画Aは、今日、午後6時、午後7時30分、および午後9時においてローカルシアターにおいて上映している。」のような、1つまたは複数の映画の時間のリストであり得る。第2のチャットボットおよび第2の対話データ構造の識別子は、第1のチャットボットおよび第1の対話データ構造とは異なっている場合があるので、データ処理システム102は、第1のチャットボットについて生成されるインデックス値と比較して、第2のチャットボットについて同じインデックス値を生成しない場合がある。しかしながら、データ処理システム102は、コンテンツアイテムを再利用することを決定するために異なる識別子または技法を利用することができる。例えば、データ処理システム102は、第2の対話データ構造内の第2のチャットボットによって識別された映画館が、第1の対話データ構造を提供するために選択されたコンテンツアイテムに対応する商品またはサービスを提供すると判定することができる。データ処理システム102は、次いで、コンテンツアイテムに関連付けられた製品の識別子、またはコンテンツアイテムに関連付けられたキーワードが、第2のチャットボットによって識別されたローカル映画館に関連付けられたメタデータに一致または対応すると判定することができる。したがって、データ処理システム102は、以下の「映画Aは、今日、午後6時、午後7時30分、および午後9時において
、ブランドAのコーラを売っているローカルシアターにおいて上映している。」のような第2の対話データ構造でコンテンツアイテムを再利用することを決定することができる。
データ処理システム102は、プレースホルダを第2の対話データ構造内に自動的に挿入してもよく、または、第2の対話データ構造は、プレースホルダを伴って構成されてもよい。例えば、第2の対話データ構造は、以下の「映画Aは、今日、午後6時、午後7時30分、および午後9時においてローカルシアターにおいて上映している。上映の前に<第2のプレースホルダ>を取得するのに間に合うようにそこに着いてください。」のように第2のプレースホルダを含むことができる。この場合、第2のプレースホルダには、ソーダ、キャンディ、ポップコーン、アイスクリーム、ピザ、または他の製品のような、ブランド名の製品が入力され得る。第2のプレースホルダは、コンテンツ選択プロセスがコンテンツアイテムを識別するためにソーダ、キャンディ、ポップコーン、アイスクリーム、ピザというキーワードを使用することができることを示すコンテンツ選択基準またはメタデータに関連付けられ得る。データ処理システム102は、第2のプレースホルダに関するコンテンツアイテムを識別するために第2のコンテンツ選択プロセスを実行するか、または計算リソース利用を低減するために以前に選択されたコンテンツアイテムを再利用することを決定することができる。場合によっては、データ処理システム102は、データ処理システム102における現在の負荷、履歴負荷パターン、またはコンピューティングデバイス104の帯域幅利用可能性に基づいて、リソース消費を低減するためにコンテンツアイテムを再利用することを決定することができる。例えば、時刻がデータ処理システム102のピーク負荷に対応する場合、データ処理システム102は、新しいコンテンツ選択プロセスを実行する代わりに第1のコンテンツアイテムを再利用することを決定することができる。
データ処理システム102は、類似性を判定するために第2のプレースホルダ領域を第1のプレースホルダ領域と比較することに基づいて、再利用するコンテンツアイテムを識別することができる。例えば、第1のプレースホルダ領域は、「コーラ」というキーワードを有する可能性があり、第2のプレースホルダ領域も「コーラ」というキーワードを有する可能性がある。場合によっては、第1および第2のプレースホルダ領域は、コーラのブランドに関するプレースホルダ領域のような同じプレースホルダ領域であり得、同じ識別子を有することができる。場合によっては、プレースホルダ領域の識別子は、プレースホルダ領域に関連付けられた1つもしくは複数のキーワードまたはコンテンツ選択基準を指すことができる。複数のチャットボットにわたるコンテンツアイテムの再利用のために生成されるインデックス値は、第1のプレースホルダ領域の識別子とコンピューティングデバイスの識別子のハッシュを使用して生成され得、第1のプレースホルダ領域の識別子は、プレースホルダ領域のキーワードまたはトピックを含むことができる。コンテンツアイテムが入力されるプレースホルダ領域について複数のキーワードが存在する場合、コンテンツアイテムは、複数のインデックス値に関連付けられ得る。コンテンツアイテムの再利用は、計算またはエネルギーリソース利用におけるさらなる最適化または低減を提供するために、複数のチャットボットにクロスオーバすることができる。
第2のチャットボットによって識別される第2の対話データ構造は、第2のプレースホルダ領域を含まなくてもよく、その場合、データ処理システム102は、プレースホルダ生成構成要素116を介して、第2の対話データ構造内の位置において第2のプレースホルダ領域を挿入し、第2のプレースホルダ領域に再利用されるコンテンツアイテムを入力することができる。例えば、データ処理システム102は、第2の対話データ構造に関連付けられたメタデータまたはキーワードがコンテンツアイテムに関連付けられたキーワードに対応すると判定し、この関連性または一致に基づいて、第2のプレースホルダを挿入し、第2のプレースホルダにコンテンツアイテムを入力することを決定することができる。場合によっては、データ処理システム102は、以前に選択されたコンテンツアイテムが(例えば、幅広い、フレーズの、または正確な一致のような、1つまたは複数のキーワード一致に基づいて)第2の対話データ構造に関連するまたは対応すると判定することに基づいて、プレースホルダを挿入することを決定することができる。
場合によっては、第2のチャットボットは、以前に選択されたコンテンツアイテムに基づいて第2の対話データ構造を識別することができる。例えば、データ処理システム102は、コンテンツアイテムを有する第2のプレースホルダ領域の挿入を可能にする文法および構文を有する第2の対話データ構造を選択することができる。候補の第2の対話データ構造は、異なる位置においてプレースホルダ領域を含むことができ、データ処理システム102は、第1のチャットボットを介して識別された第1の対話データ構造を備えるコンテンツアイテムに関連付けられたパラメータに基づいて第2の対話データ構造を選択することができる。例えば、コンテンツアイテムは、開始部分、文の最初の3単語内、文の最後の3単語内、中間の3単語内、名詞に隣接してその前に、または、適切な名詞、形容詞、もしくは動詞に隣接せずにもしくは先行せずに、のような、対話データ構造内の位置要件を示してもよい。データ処理システム102または第2のチャットボットは、したがって、コンテンツアイテムを再利用するためにコンテンツアイテムの基準を満たす第2の対話データ構造を選択することができる。例えば、第2のチャットボットは、第2対話データ構造に関する複数の構造もしくは構成、または複数の候補の第2の対話データ構造を識別することができ、データ処理システム102は、コンテンツアイテムに基づいて第2の対話データ構造を選択することができる。
第1および第2のチャットボットは、同じまたは異なる音響指紋または音声を有することができる。コンテンツアイテムは、パラメータ的に駆動されるテキスト読み上げ技法のために構成されるか、または他の方法で音声に変換され得るので、第1および第2のチャットボットは、それぞれの対話データ構造を提供するためにネイティブ音声パラメータをコンテンツアイテムに割り当てることができる。したがって、コンテンツアイテムは、第1のチャットボットによって識別される第1の対話データ構造の音声と一致するように第1の音声において提示され、後に、第2のチャットボットによって識別される第2の対話データ構造の音声と一致する異なる音声において再生される。コンテンツアイテムは、対応するチャットボットまたは対話データ構造のネイティブ音声であるように現れることができる。
データ処理システム102は、同じセッションにおいて、複数のセッションにわたって、またはセッション中断を再開した後に、複数のチャットボットを用いてコンテンツアイテムを再利用することができる。例えば、データ処理システム102は、時間閾値または位置閾値に基づいてセッション中断を識別子、続いて受信されたデジタルファイル(例えば、一致するキーワード、トピック、またはカテゴリ)に基づいてセッションを再開することと、次いでコンテンツアイテムを再利用することとを決定することができる。場合によっては、第2のチャットボットは、第1のチャットボットによって使用されるコンテンツアイテムを識別するために第1のチャットボットに問い合わせることができ、そのコンテンツアイテムは、チャットボットデータデータ構造132内またはサードパーティチャットボットプラットフォーム146上に記憶され得る。
データ処理システム102は、検証技法を使用してサードパーティチャットボットプラットフォームを検証するように設計され、構築され、動作可能な検証構成要素122を含むことができる。検証は、対話データ構造に含めるためにデータ処理システム102によって選択されたコンテンツアイテムが、サードパーティチャットボットプラットフォーム146が実際にチャットボットに提供したコンテンツアイテムであったかどうかを判定することを指すことができる。データ処理システム102は、サードパーティチャットボットプラットフォーム146が選択されたコンテンツアイテムをチャットボットに正確かつ確実に転送したかどうかを判定するために検証を実行することができる。例えば、サードパーティチャットボットプラットフォーム146は、エラー、バグ、障害、または、誤ったコンテンツアイテムがチャットボットに転送されることにつながる他の技術的問題を含む場合がある。サードパーティチャットボットプラットフォーム146を検証することによって、データ処理システム102は、コンテンツアイテムの提供を無効にするか、または、さもなければ、サードパーティチャットボットプラットフォーム146もしくはチャットボットプロバイダデバイス108もしくはコンテンツプロバイダデバイス106に警告することを決定することができる。
例えば、データ処理システム102は、対話データ構造内への挿入のためにコンテンツアイテムをチャットボットに転送する指示とともに、コンテンツアイテムをサードパーティチャットボットサーバに提供することができる。データ処理システム102は次いで、(例えば、検証構成要素122を介して)、コンテンツアイテムについてチャットボットにpingを送り、チャットボットからの応答を、サードパーティチャットボットプラットフォームに最初に提供されたコンテンツ項目と、これらが一致するかどうか、またはサードチャットボットプラットフォームがコンテンツアイテムを修正したかどうかを判定するために比較することができる。
対話データ構造を備えるコンテンツアイテムの送信に続いて、検証構成要素122は、コンテンツアイテムについてチャットボットにpingを送ることができる。データ処理システム102は、チャットボットもしくはチャットボットを実行するコンピューティングデバイス104、またはサードパーティチャットボットプラットフォーム146にpingを送ることができる。データ処理システム102は、コンテンツアイテムに関連する情報を記憶してもよいチャットボットプロバイダデバイス108にpingを送ることができる。データ処理システム102は、コンテンツアイテムの提示に関連付けられたネットワークアクティビティについてコンテンツプロバイダデバイス106にpingを送ることができる。データ処理システム102は、時間間隔に基づいてチャットボットにpingを送ることができる。時間間隔は、コンテンツアイテムの提供に続く時間間隔を含むか、またはタイミング関数に基づくことができる。タイミング関数は、コンテンツアイテムの送信後5分、コンテンツアイテムの送信後10分、コンテンツアイテムの送信後30分、コンテンツアイテムの送信後5秒、コンテンツアイテムの送信の10秒と5分との間、コンテンツアイテムの送信の1分と30分との間、または他の範囲のような、ある範囲内のランダムな時間間隔を生成することができる。ランダムまたは疑似ランダム(例えば、乱数発生器を使用して決定される)であり得るタイミング関数を使用することによって、データ処理システム102は、サードパーティチャットボットプラットフォームの詐欺または悪意のある行為を軽減することができる。
データ処理システム102は、チャットボットから、pingに応答するコンテンツアイテムの指示を受信することができる。指示は、コンテンツアイテムの識別子を含むことができる。指示は、チャットボットの識別子、プレースホルダ領域、キーワード、タイムスタンプ、またはコンピューティングデバイス104のような、コンテンツアイテムがどのように提示されたかに関する情報を含むことができる。データ処理システム102は、受信された指示を、データ処理システム102によって提供されるコンテンツアイテムに関連付けられた情報と比較することができる。例えば、データ処理システム102は、データ処理システム102がコンテンツアイテムをサードパーティチャットボットプラットフォームに送信した第1のタイムスタンプを、チャットボットがコンテンツアイテムを挿入または提示した第2のタイムスタンプと比較することができる。データ処理システムは、第1のタイムスタンプと第2のタイムスタンプとの間の差に基づいて検証パラメータを設定することができる。例えば、時間差が30秒、1分、2分、5分、10分、またはそれよりも長い場合、データ処理システム102は、遅延が技術的問題(例えば、高ネットワークレイテンシ、高プロセッサレイテンシ、またはプラットフォームコードもしくはチャットボットプログラムによる問題)の指標であると判定することができる。データ処理システム102は、サードパーティチャットボットプラットフォーム146に提供されるコンテンツアイテムの識別子と、チャットボットから受信されるコンテンツアイテムの識別子との比較に基づいて検証パラメータを設定することができる。
データ処理システム102は、コンテンツアイテムの受信された指示と、データ処理システム102によって選択されたコンテンツアイテムの識別子との比較に基づいて検証パラメータを設定することができる。データ処理システム102が、比較に基づいて、コンテンツアイテムが一致しない(例えば、チャットボットがチャットボットのためにデータ処理システム102によって選択された同じコンテンツアイテムを受信しなかった)と判定した場合、データ処理システム102は、無効性(例えば、0、N、または、無効性、詐欺、もしくは悪意のある行為を示す他の英数字値もしくは記号)を示すように検証パラメータを設定することができる。データ処理システム102が、コンテンツアイテムが一致すると判定した場合、データ処理システム102は、サードパーティチャットボットプラットフォーム146が有効であることを示すように検証パラメータを設定することができる。
データ処理システム102は、サードパーティチャットボットプラットフォーム146によって提供される1つまたは複数のチャットボットへの複数のpingの統計分析に基づいて検証パラメータを設定することができる。例えば、pingが閾値パーセンテージ(0.1%、0.5%、1%、2%、5%、10%、15%、20%、またはそれよりも大きい)よりも大きいことが、データ処理システム102によって提供されるコンテンツアイテムと、サードパーティチャットボットプラットフォーム146に転送されるコンテンツアイテムとの間の不一致を判定することになる場合、データ処理システム102は、サードパーティチャットボットプラットフォーム146について無効としてフラグを立てるかまたは検証パラメータを設定することができる。
場合によっては、データ処理システム102は、検証パラメータが無効であることに応答して、サードパーティチャットボットプラットフォーム146によって提供されるチャットボットへのコンテンツアイテムの提供を無効にすることができる。例えば、データ処理システム102は、サードパーティチャットボットプラットフォーム146からのコンテンツに対する要求を無視する、または関知せずとすることができ、それによって、悪意のある行為者であるか、または、誤ったコンテンツアイテムの提示もしくはコンテンツアイテムの遅延した提示をもたらす技術的問題を有する可能性があるサードパーティチャットボットプラットフォーム146に対するコンテンツ選択プロセスを実行することによってプロセッサおよびメモリの利用を浪費しないことによって、計算リソースの利用を低減する。
データ処理システム102は、コンテンツアイテムとの相互作用の指示を受信することができる。コンテンツアイテムとの相互作用は、コンピューティングデバイス104のインターフェースまたは構成要素を介して起こり得る。データ処理システム102は、コンテンツアイテムとの相互作用と、相互作用に関するまたは相互作用に関連付けられた情報とを記録、記憶、または他の方法で監視および追跡することができる。データ処理システム102は、サードパーティチャットボットプラットフォーム146への検証技法の適用に基づいて、相互作用を有効であるとしてさらに記録、記憶、または他の方法でタグ付けすることができる。例えば、データ処理システム102が、データ処理システムによって選択されてサードパーティチャットボットプラットフォーム146に提供されるコンテンツアイテムがチャットボットによって提示されるコンテンツアイテムと一致すると判定した場合、データ処理システム102は、コンピューティングデバイス104を介するコンテンツアイテムとのその後の相互作用を有効な相互作用であるとして記録することができる。しかしながら、データ処理システム102が、コンテンツアイテムが一致しないと判定した場合、データ処理システム102は、相互作用を無効としてマークするかまたはフラグを立てることができる。データ処理システム102は、無効な相互作用を検出することに応答して警報を生成してコンテンツプロバイダデバイス106に送信することができる。コンテンツプロバイダデバイス106は、データ処理システム102によって選択されたコンテンツプロバイダデバイスのプロバイダに対応することができ、それは、チャットボットに実際に提供され提示されたコンテンツアイテムのプロバイダとは異なり得る。
場合によっては、データ処理システム102は、コンテンツアイテムをサードパーティチャットボットプラットフォーム146に送信する前にコンテンツアイテムを暗号化することができる。チャットボットは、コンテンツアイテムを提示する間にコンテンツアイテムを復号するための鍵を含むことができる。コンテンツアイテムを暗号化することによって、データ処理システム102は、コンテンツアイテムが中間デバイスによって操作されることなく、コンテンツアイテムを安全に送信することができる。
暗号化技法は、ハッシュ関数を含むことができる。暗号化技法は、コンテンツアイテムをソルトとハッシュすることを含むことができる。ソルトは、コンテンツアイテムをハッシュする機能への追加入力として使用され得るデータ(例えば、サードパーティチャットボットプラットフォーム146に知られていないランダムデータまたは所定のデータ)を指すことができる。データ処理システム102は、ハッシュ関数およびソルトを用いて暗号化されたコンテンツアイテムを記憶することができる。データ処理システム102は、チャットボットへの転送のために暗号化されたコンテンツアイテムをサードパーティチャットボットプラットフォーム146に提供することができる。チャットボットは、コンテンツアイテムが回復され提示され得るように、ハッシュ関数およびソルトを用いて暗号化されたコンテンツアイテムを復号する復号技術を用いて構成され得る。サードパーティチャットボットプラットフォーム146は、暗号化関数、ハッシュ関数、またはソルトにアクセスできないので、サードパーティチャットボットプラットフォーム146によってチャットボットに提供される不正なまたは誤ったコンテンツアイテムは、チャットボットによって適切に復号され表示されないことになる。したがって、暗号化技法は、チャットボットによるコンテンツアイテムの不正なまたは誤った提示を防止するために使用され得る。
図2は、ネットワークを介してコンピュータプログラム出力を修正するシステム200の動作の図である。ACT202において、クライアントコンピューティングデバイス104は、音声入力(または画像もしくはビデオ入力のような他の非テキスト入力)を受信することができる。音声入力は、コンピューティングデバイス104のユーザによって話され得る。コンピューティングデバイス104は、音声入力を(例えば、トランスデューサまたはマイクロフォンによって検出されるような)アナログフォーマットからデジタルフォーマットに変換することができる。コンピューティングデバイス104は、ACT204においてデジタルファイルにおいて音声入力のデジタルフォーマットをデータ処理システム102に送信することができる。
場合によっては、入力202は、音声入力に加えて、またはその代わりに、画像またはビデオ入力を含むことができる。コンピューティングデバイス104は、画像を処理または分析し、画像をデジタルファイルに変化するために、1つまたは複数の画像化技法(例えば、コンピュータビジョン、機械学習、画像認識、または画像解釈)を使用することができる。場合によっては、コンピューティングデバイス104は、画像をさらに処理、分析、または解釈するために画像化技法を実行することなく、画像またはビデオ入力をデジタルファイルに変換することができる。代わりに、コンピューティングデバイス104は、さらなる画像処理のために入力画像またはビデオに対応するデジタルファイルをデータ処理システムに転送または送信することができる。画像およびビデオ入力は、コンピューティングデバイス104によって感知もしくは検出され、デジタルファイルに変換され得、または、コンピューティングデバイス104は、データリポジトリ、外部記憶デバイス、ネットワークを介するサードパーティデータ記憶ユニット、もしくは他のコンピューティングデバイスから画像またはデータを取得することができる。画像およびビデオ入力は、音声入力202が処理または構文解析されるときに取得されるのと同じタイプの情報を取得するために処理または構文解析され得る。
データ処理システム102は、ACT206においてデジタルファイルを処理し、チャットボットを呼び出すことができる。データ処理システム102は、デジタルファイルのトリガキーワードまたは意味論的処理に基づいてチャットボットを呼び出すことができる。ACT208において、例えば、データ処理システム102によって呼び出するレシピチャットボットは、ACT202において音声入力によって要求されるレシピを識別することができる。例えば、識別されるレシピは、チキンウィング用であり得る。レシピは、対話データ構造内に記憶され得る。対話データ構造は、テキストを含むことができる。例えば、テキストは、チャットボットのための識別されたレシピ内の材料であり得る。テキストは、チキンウィングを作るために材料をどのように準備するかに関する指示、または、チキンウィングの準備を容易にすることができる他の情報も含むことができる。
レシピチャットボットは、ACT208において対話データ構造内のプレースホルダ領域をさらに識別することができる。例えば、プレースホルダ領域を有する対話データ構造は、「材料:黒砂糖1カップ、<プレースホルダ>コーラ1缶、中玉ねぎ2個、にんにく2片」210であり得る。<プレースホルダ>利用を識別することに応答して、データ処理システム102は、ACT212においてコンテンツに対する要求を受信することができる。チャットボットは、要求を生成することができ、サードパーティチャットボットプラットフォームは、要求を生成することができ、コンピューティングデバイスは、要求を生成することができ、または、データ処理システムは、要求を生成することができる。データ処理システム102は、要求を受信し、コンテンツアイテムを選択することができる。データ処理システム102は、ACT214において、選択されたコンテンツアイテムを提供することができる。データ処理システム102は、コンテンツアイテムをチャットボットに、クライアントコンピューティングデバイス104、サードパーティチャットボットプラットフォーム、または他のエンティティに提供することができる。データ処理システム102は、場合によっては、コンテンツアイテムを対話データ構造に統合または埋め込むことができる。例えば、データ処理システム102が対話データ構造210を受信するかまたはそれにアクセスした場合、データ処理システム102は、コンテンツアイテムを対話データ構造210内に埋め込み、コンテンツアイテムを含む修正された対話データ構造をクライアントコンピューティングデバイス104に提供することができる。クライアントコンピューティングデバイス104は、ACT216において、以下の「材料:黒砂糖1カップ、Brand_Nameコーラ1缶、中玉ねぎ2個、にんにく2片」218のように、修正された対話データ構造を出力することができる。
データ処理システム102は、ACT202〜218がセッション1に対応すると決定することができる。データ処理システムは、次いで、セッション中断を決定することができる。例えば、データ処理システム102は、位置情報、タイマ情報、身体活動情報、音声入力、または、使用の休止状態を示す感覚入力の欠如のような、中断を示すセンサ入力220を受信することができる。ACT222において、データ処理システム102は、センサ入力220(またはその欠如)に基づいてセッション中断を検出し、後のセッションにおいてまたはセッションの再開時においてコンテンツアイテムを潜在的に再利用するために選択されたアイテムに関するインデックス値を生成し、メモリ224内にインデックス値に関連してコンテンツアイテムを記憶することができる。
図3は、セッションに基づいてコンピュータプログラム出力の修正のためのデータ要求のバランスをとるシステム300の動作の図である。ACT302において、コンピューティングデバイス104は、音声入力(または、画像もしくはビデオのような他の非テキスト入力)を受信する。ACT304において、クライアントコンピューティングデバイスは、受信された音声入力に対応するデジタルファイルをデータ処理システム120に送信することができる。データ処理システム102は、図2に示すように、音声入力が前のセッション1に対応することを判定するためにデジタルファイルを処理することができる。例えば、音声入力は、料理を準備するために210において提示された材料を準備する方法に対応することができる。
場合によっては、入力302は、音声入力に加えて、またはその代わりに、画像またはビデオ入力を含むことができる。コンピューティングデバイス104は、画像を処理または分析し、画像をデジタルファイルに変化するために、1つまたは複数の画像化技法(例えば、コンピュータビジョン、機械学習、画像認識、または画像解釈)を使用することができる。場合によっては、コンピューティングデバイス104は、画像をさらに処理、分析、または解釈するために画像化技法を実行することなく、画像またはビデオ入力をデジタルファイルに変換することができる。代わりに、コンピューティングデバイス104は、さらなる画像処理のために入力画像またはビデオに対応するデジタルファイルをデータ処理システムに転送または送信することができる。データ処理システム102は、入力302が前のセッション1に対応することを判定するために、画像またはビデオ入力に対応するデジタルファイルを処理することができる。画像およびビデオ入力は、音声入力302が処理または構文解析されるときに取得されるのと同じタイプの情報を取得するために処理または構文解析され得る。
ACT306において、データ処理システム102は、同じレシピ308と、以下の「鍋の中で、黒砂糖1カップ、<プレースホルダ>コーラ1缶、中玉ねぎ2個、にんにく2片を混ぜ合わせる」310のようにレシピを準備させる指示とを識別することができる同じレシピチャットボットとのセッションを再開することができる。準備指示は、第2の対話データ構造の形態であり得る。第2の対話データ構造は、第2のプレースホルダ領域を含むことができる。チャットボット、または他の関連するデバイスもしくはシステムは、ACT312において、コンテンツに対する要求をデータ処理システム102に送信することができる。データ処理システム102は、要求に応答して、セッション1の間に以前にACT214において提供された同じコンテンツアイテムを選択することができる。データ処理システム102は、識別子と、メモリ内のコンテンツアイテムに関連付けられた生成されたインデックス値とに基づいて同じコンテンツを選択することができる。ACT314において、データ処理システム102は、セッション1からの同じコンテンツアイテムをクライアントコンピューティングデバイス104に提供することができる。ACT316において、クライアントコンピューティングデバイスは、以下の「鍋の中で、黒砂糖1カップ、Brand_Nameコーラ1缶、中玉ねぎ2個、にんにく2片を混ぜ合わせる」318のようにコンテンツアイテムを用いて修正された対話データ構造を出力することができる。
ACT320において、データ処理システムは、(例えば、コンピューティングデバイス104からの)センサ入力を受信し、ACT322においてセッション中断を検出する。データ処理システム102は、メモリ324内のコンテンツアイテムの第2の提示に関連付けられたインデックス値をメモリ内に記憶することができる。データ処理システム102は、以前に生成されたインデックス値に加えて、第2のインデックス値を記憶することができる。インデックス値は、同じであってもよく、または、コンテンツアイテムに関連付けられた追加のインデックス値が生成され得る。例えば、第2の対話データ構造は、第1の対話データ構造と比較して追加の識別子またはキーワードに関連付けられてもよい。
図4は、セッションに基づいてコンピュータプログラム出力の修正のためのデータ要求のバランスをとるシステム400の動作の図である。ACT402において、クライアントコンピューティングデバイス104は、音声入力(または、画像、ビデオ、もしくは他の非テキスト入力のような他の入力)を受信することができる。ACT404において、クライアントコンピューティングデバイスは、音声入力に対応するデジタルファイルをデータ処理システム102に送信する。データ処理システム102は、デジタルファイルを処理し、チャットボットを選択することができる。データ処理システム102は、以前のセッション1を再開するとさらに決定することができる。例えば、データ処理システム102(または、サードパーティチャットボットプロバイダプラットフォーム146)が新しいチャットボットを呼び出しても、データ処理システム102は、データファイルに関連付けられた他の属性(例えば、同じコンピューティングデバイス104、時間情報、位置情報、意味論的分析、同じコンテンツアイテムの挿入の機会、または、セッション1において提示されたコンテンツアイテムとの相互作用を示す履歴ネットワークアクティビティ)に基づいて以前のセッション1を再開すると決定することができる。
場合によっては、入力402は、音声入力に加えて、またはその代わりに、画像またはビデオ入力を含むことができる。コンピューティングデバイス104は、画像を処理または分析し、画像をデジタルファイルに変換するために、1つまたは複数の画像化技術(例えば、コンピュータビジョン、機械学習、画像認識、または画像解釈)を使用することができる。場合によっては、コンピューティングデバイス104は、画像をさらに処理、分析、または解釈するために画像化技術を実行することなく、画像またはビデオ入力をデジタルファイルに変換することができる。代わりに、コンピューティングデバイス104は、さらなる画像処理のために入力画像またはビデオに対応するデジタルファイルをデータ処理システムに転送または送信することができる。データ処理システム102は、入力302が前のセッション1に対応することを判定するために、画像またはビデオ入力に対応するデジタルファイルを処理することができる。画像およびビデオは、音声入力402が処理または構文解析されるときに取得されるのと同じタイプの情報を取得するために処理または構文解析され得る。
ACT406において、データ処理システム102は、第2のチャットボットを用いてセッション1を再開する。第2のチャットボットは、例えば、映画チャットボットであり得る。映画チャットボットは、デジタルファイル404内の要求またはクエリに基づいて、映画館および上映時間情報のための対話データ構造408を識別することができる。しかしながら、この例において、映画館および上映時間対話データ構造は、以下の「午後8時においてローカルシアターにおいて上映するアクション映画」410のように、プレースホルダを含まなくてもよい。
ACT412において、チャットボット(または他のエンティティ)は、識別された対話データ構造410をデータ処理システム102に提供することができる。場合によっては、データ処理システム102は、対話データ構造310を傍受することができる。例えば、データ処理システム102は、コンピューティングデバイスおよびサードパーティチャットボットプラットフォーム146の仲介であり得る。データ処理システム102は、第2の対話データ構造を構文解析するかまたは他の方法で処理し、(例えば、プレースホルダ生成構成要素を介して)対話データ構造にプレースホルダを挿入するか、またはコンテンツアイテムを直接挿入すると決定することができる。データ処理システム102は、ACT414において、セッション1から選択された同じコンテンツアイテムを用いて修正された対話データ構造をクライアントコンピューティングデバイスに提供することができる。ACT416において、以下の「Brand_Nameコーラも提供する、午後8時においてローカルシアターにおいて上映するアクション映画」418のように、コンテンツアイテムを有する対話データ構造を出力することができる。この例において、データ処理システム102は、プレースホルダ領域の存在しないところにコンテンツアイテムを挿入しているので、データ処理システムは、「Brand_Name」というコンテンツアイテムを対話データ構造に統合するためにフレーズを追加することができる。データ処理システム102は、コンテンツアイテムを統合するために対話データ構造の文法または構文を修正することができる。データ処理システム102は、対話データ構造の文法または構文を修正することと、対話データ構造の文法または構文を修正するために使用するテンプレートを識別することとを容易にするために、パターンを用いて事前に構成され得る。
図5は、ネットワークを介してコンピュータプログラム出力の修正を検証するシステム500の動作の図である。ACT502において、サードパーティチャットボットプラットフォーム146からコンテンツに対する要求を受信することができる。ACT504において、データ処理システム102は、コンテンツ選択プロセスを実行し、コンテンツアイテムをサードパーティチャットボットプラットフォーム146に提供することができる。ACT506において、サードパーティチャットボットプラットフォーム146は、コンテンツアイテムをチャットボット508に提供することができる。チャットボット508は、サードパーティチャットボットプラットフォーム146またはクライアントコンピューティングデバイス104上で実行されるコンピュータプログラムであり得る。ACT510において、チャットボット508は、クライアントコンピューティングデバイス104に、コンテンツアイテムを用いて修正された対話データ構造を提供することができる。ACT510においてコンピューティングデバイス104に提供されるコンテンツアイテムがACT504においてデータ処理システム102によってサードパーティチャットボットプラットフォーム146に提供されるのと同じコンテンツアイテムであるかどうかを判定するために、データ処理システム102は、ACT512においてチャットボット508に検証pingを送信することができる。検証ping512は、ACT510においてコンピューティングデバイス104に提供されるコンテンツアイテムの指示を要求することができる。ACT514において、チャットボット508は、コンテンツアイテム識別子、コンテンツアイテムのキーワード、コンテンツアイテムのタイムスタンプ、またはコンテンツの提示を示す他の情報のような、コンテンツアイテムの指示を用いて検証pingに応答することができる。
データ処理システム102は、検証パラメータ516を設定するために、ACT514において受信されたコンテンツアイテムの指示をACT5045において提供されたコンテンツアイテムと比較することができる。例えば、コンテンツアイテムが一致する場合、データ処理システム102は、サードパーティチャットボットプラットフォーム146を有効にすることができる。コンテンツアイテムが一致しない場合、データ処理システム102は、サードパーティチャットボットプラットフォーム146を無効にするか、または警報もしくは通知を生成することができる。データ処理システム102は、コンテンツアイテムがACT504においてプラットフォーム146に提供されたときと、コンテンツアイテムがACT506においてチャットボットに、またはACT510においてコンピューティングデバイス104に提供されたときとの間の遅延に用いて、プラットフォーム146をさらに有効または無効にすることができる。
図2〜図5に示すシステムまたは動作フロー200、300、400、および500は、図1に示すシステム100の1つまたは複数の構成要素または機能を含むことができる。例えば、システムまたは動作フロー200、300、400、および500は、データ処理システム102、クライアントコンピューティングデバイス104、サードパーティチャットボットプロバイダデバイス146、またはコンテンツプロバイダデバイス106を含むか、またはそれらによって実行され得る。
図6は、コンピュータネットワークを介してコンピュータプログラム出力を修正する方法の図である。方法600は、例えば、システム100、データ処理システム102、コンピューティングデバイス104、サードパーティチャットボットプラットフォームプロバイダ146、チャットボットプロバイダデバイス108、またはコンテンツプロバイダコンピューティングデバイス106を含む、図1〜図5に示す1つまたは複数の構成要素またはシステムによって実行され得る。ACT602において、データ処理システムは、デジタルファイルを受信することができる。データ処理システムは、コンピューティングデバイスまたはサードパーティチャットボットプラットフォームからデジタルファイルを受信することができる。デジタルファイルは、コンピューティングデバイスのマイクロフォンによって検出された音声入力に対応することができる。デジタルファイルは、アナログ音声入力のデジタル化表現を含むことができる。
ACT604において、データ処理システムまたはサードパーティチャットボットプラットフォームは、チャットボットを備えるコンピュータプログラムを選択し、チャットボットを呼び出すことができる。場合によっては、データ処理システム102は、チャットボットを選択して呼び出すことができ、サードパーティチャットボットプラットフォームは、チャットボットを選択して呼び出すことができ、またはコンピューティングデバイスは、チャットボットを選択して呼び出すことができる。チャットボットは、デジタルファイルをデータ処理システムに送信する前に選択されて呼び出され得る。
ACT606において、対話データ構造内のプレースホルダ領域が識別され得る。ACT608において、プレースホルダ領域を識別したことに応答して、コンテンツに対する要求が生成され、データ処理システムに送信され得る。場合によっては、データ処理システムは、音響信号に対応するデジタルファイルを受信しない場合がある。例えば、データ処理システムは、デジタルファイルの代わりに、コンテンツ選択を容易にするためにコンテンツに対する要求と情報とを受信することができる。データ処理システムは、サードパーティチャットボットプラットフォーム、チャットボット、またはコンピューティングデバイスからコンテンツに対する要求を受信することができる。
ACT610において、データ処理システムは、要求に応答してコンテンツアイテムを選択し、コンテンツアイテムを提供することができる。データ処理システムは、選択されたコンテンツアイテムを、サードパーティチャットボットプラットフォーム、コンピューティングデバイス、または、コンテンツアイテムを要求した他のエンティティに提供することができる。データ処理システムは、コンテンツアイテムを対話データ構造に挿入し、コンピューティングデバイスを介する提示のために、修正された対話データ構造を提供することができる。
データ処理システムは、対話データ構造への挿入のためのプレースホルダ領域を自動的に生成することができる。データ処理システムは、プレースホルダを対話データ構造に挿入するかどうかと、プレースホルダを対話データ構造内のどこに挿入するかとを判定するために、テンプレート、パターン、意味論的分析、ポリシー、またはルールを使用することができる。場合によっては、チャットボット開発者は、対話データ構造内のどこにプレースホルダ領域を挿入するかを決定するようにデータ処理システムに要求することができる。意味論的分析に基づくポリシーまたはルールは、対話データ構造内の名詞を識別し、名詞に基づいてキーワードを生成し、次いで、対話データ構造内の名詞に一致するか、または他の方法関連する可能性があるコンテンツプロバイダによって提供されるコンテンツアイテムが存在するかどうかを判定するためにコンテンツ選択プロセスを実行するためにキーワードを使用するデータ処理システムを含むことができる。例えば、名詞は、「ソーダ」であり得る。データ処理システムは、「ソーダ」、「ドリンク」、「ソフトドリンク」、「コーラ」、「ポップ」、または「ソーダポップ」のような1つまたは複数のキーワードを生成するために「ソーダ」を構文解析することができる。データ処理システムは、コンテンツアイテムを識別するためにキーワードを使用することができる。データ処理システムは、プレースホルダ領域を挿入すると決定することができる。プレースホルダ領域は、キーワード、メタデータ、測位情報、または対話データ構造に関連付けられた他の情報に関連付けられ得る。プレースホルダは、プレースホルダ領域の識別子に関連付けられ得る。場合によっては、データ処理システムは、対話データ構造内の名詞に関する閾値よりも大きい関連性スコアを有する少なくとも1つのコンテンツを識別することに応答してプレースホルダ領域を挿入すると決定することができる。
したがって、データ処理システムは、第2の対話データ構造のための第2のプレースホルダ領域を生成し、比較に基づいて、パラメータ化されたフォーマットにおいて第2のコンテンツに対する第2の要求を生成するかどうかを決定するために、第2のプレースホルダ領域を第1の対話データ構造の第2のプレースホルダ領域と比較することができる。例えば、データ処理システムは、プレースホルダ領域の識別子、プレースホルダ領域のキーワード、メタデータ、または位置情報(例えば、対話データ構造の最初の3ワード、または最後の3ワード内)を比較することができる。データ処理システムは、プレースホルダ領域の比較に基づいて、プレースホルダ領域間に類似性(例えば、類似したまたは同じキーワード)が存在することを判定することができる。例えば、両方のプレースホルダ領域は、ソーダのブランド用であり得、その場合、データ処理システムは、第1のプレースホルダ領域からのコンテンツアイテムを再利用することができる。データ処理システムは、第2の対話データ構造の第2のプレースホルダ領域への挿入のために第1のプレースホルダ領域について選択されたコンテンツアイテムを再利用することができるので、データ処理システムは、比較に基づいて、第2の対話データ構造の第2のプレースホルダ領域のための第2のコンテンツアイテムを要求しないと決定することができる。
しかしながら、データ処理システムが、比較に基づいて、プレースホルダ領域が類似しているかまたは異なる(例えば、異なるキーワード、またはキーワードが一致しない)と判定した場合、データ処理システムは、新しい第2のコンテンツアイテムを選択すると決定することができる。例えば、第1のプレースホルダ領域(または第1の対話データ構造)は、ソーダのためのキーワードに関連付けられ得、第2のプレースホルダ領域(または第2の対話データ構造)は、高級車のためのキーワードに関連付けられ得る。
図7は、コンピュータネットワークを介してコンピュータプログラム出力を修正するためにデータ要求のバランスをとる方法の図である。方法700は、例えば、システム100、データ処理システム102、コンピューティングデバイス104、サードパーティチャットボットプラットフォームプロバイダ146、チャットボットプロバイダデバイス108、またはコンテンツプロバイダコンピューティングデバイス106を含む、図1〜図5に示す1つまたは複数の構成要素またはシステムによって実行され得る。ACT702において、データ処理システムは、デジタルファイルを受信することができる。データ処理システムは、コンピューティングデバイスまたはサードパーティチャットボットプラットフォームからデジタルファイルを受信することができる。デジタルファイルは、コンピューティングデバイスのマイクロフォンによって検出された音声入力に対応することができる。デジタルファイルは、アナログ音声入力のデジタル化表現を含むことができる。デジタルファイルは、音声入力に関連付けられたキーワードまたはトークンを含むために前処理され得る。場合によっては、データ処理システムは、デジタルファイルを受信せず、代わりに、コンテンツ選択を容易にすることができるデジタルファイルに関する情報とともにコンテンツに対する要求を受信してもよい。
ACT704において、データ処理システムまたはサードパーティチャットボットプラットフォームは、チャットボットを備えるコンピュータプログラムを選択し、チャットボットを呼び出すことができる。場合によっては、データ処理システム102は、チャットボットを選択して呼び出すことができ、サードパーティチャットボットプラットフォームは、チャットボットを選択して呼び出すことができ、またはコンピューティングデバイスは、チャットボットを選択して呼び出すことができる。チャットボットは、デジタルファイルをデータ処理システムに送信する前に選択されて呼び出され得る。
ACT706は、対話データ構造内のプレースホルダ領域が識別され得る。ACT708において、データ処理システムは、コンテンツアイテムを選択し、供給することができる。データ処理システムは、選択されたコンテンツアイテムをサードパーティチャットボットプラットフォーム、コンピューティングデバイス、またはコンテンツアイテムを要求した他のエンティティに提供することができる。データ処理システムは、コンテンツアイテムを対話データ構造に挿入し、コンピューティングデバイスを介する提示のために、修正された対話データ構造を提供することができる。
ACT710において、データ処理システムは、コンテンツアイテムをメモリ内に記憶することによって、コンピューティングリソースの利用を低減することを促進することができる。データ処理システムは、コンテンツアイテムの提示に関連付けられた情報に基づいて、コンテンツアイテムをインデックス値に関連付けることができる。例えば、インデックス値は、コンテンツアイテム、コンピューティングデバイス、チャットボット、対話データ構造、キーワード、トピック、または位置に関連付けられた1つまたは複数の識別子に基づいて生成され得る。インデックス値は、セッションに関連し、セッションを再開するかどうかを決定するため、どのセッションを開始するかを識別するため、または新しいセッションを開始するために使用され得る識別子に基づいて生成され得る。
ACT712において、データ処理システムは、コンテンツ選択を容易にするための情報とともに、第2のデジタルファイル、またはコンテンツに対する第2の要求を受信することができる。ACT714において、データ処理システムは、ACT704において呼び出されたのと同じチャットボットを選択または呼び出すことができる。デバイスまたはエンティティがチャットボットを選択または呼び出す場合について、データ処理システムは、ACT714において、アクティブなチャットボットの指示を受信することができる。
ACT716において、データ処理システムは、ACT708において提供されたのと同じコンテンツアイテムを提供すると決定することができる。データ処理システムは、例えば、同じコンテンツアイテムが第2の対話データ構造に関連していると判定することができる。
データ処理システムは、音声入力に基づいてコンテンツアイテムを再利用すると決定するか、または、音声入力と以前の音声入力との比較に基づいてコンテンツアイテムを再利用すると決定することができる。例えば、キーワード、コンテンツ、コンテキスト、または他のパラメータに関して、後に受信された音声入力が以前に受信された音声入力と異なる場合、データ処理システムは、コンテンツアイテムを再利用しないと決定することができる。場合によっては、データ処理システムは、異なるセッションからのコンテンツアイテムを再利用しないと決定することができる。2つのセッションは、例えば、それらが閾値よりも大きく時間的に離れている場合、異なるエンドユーザに対応する場合、異なる音響指紋を有する異なる音声入力を有する場合、または異なる地理的位置である場合、異なる可能性がある。
例えば、データ処理システムは、コンピューティングデバイス上のマイクロフォンによって検出された第3のまたは後続の音声コンテンツを搬送する第5のまたは後続の音響信号に対応する第3のまたは後続のデジタルファイルを受信することができる。データ処理システムは、第3のデジタルファイルの第3の音声コンテンツに応答して、チャットボットを備えるコンピュータプログラムを選択することができる。データ処理システムは、第3のデジタルファイルの第3の音声コンテンツに基づいてチャットボットを介して、第3のプレースホルダ領域を備える第3のまたは後続の対話データ構造を識別することができる。データ処理システムは、第1の識別子、第3の識別子、または第3の対話データ構造の第5の識別子の組合せに基づいて、第2のまたは新しいインデックス値を生成することができる。データ処理システムは、インデックス値と第2のインデックス値との比較に基づいて、コンテンツアイテムを再利用しないと決定することができる。データ処理システムは、第3のプレースホルダの識別に応答して、チャットボットの第1の識別子、コンピューティングデバイスの第3の識別子、および第3の対話データ構造の第5の識別子の組合せに基づいて、第2のコンテンツアイテムを用いて修正された第3の対話データ構造に対応する第6のまたは後続の音響信号を生成するために、パラメータ的に駆動されるテキスト読み上げ技法をコンピューティングデバイスに実行させるためにコンピューティングデバイスに供給するための第2のコンテンツアイテムを選択することができる。
図8は、コンピュータネットワークを介してコンピュータプログラム出力を修正するためにデータ要求のバランスをとる方法の図である。方法800は、例えば、システム100、データ処理システム102、コンピューティングデバイス104、サードパーティチャットボットプラットフォームプロバイダ146、チャットボットプロバイダデバイス108、またはコンテンツプロバイダコンピューティングデバイス106を含む、図1〜図5に示す1つまたは複数の構成要素またはシステムによって実行され得る。ACT802において、データ処理システムは、デジタルファイルを受信することができる。データ処理システムは、コンピューティングデバイスまたはサードパーティチャットボットプラットフォームからデジタルファイルを受信することができる。デジタルファイルは、コンピューティングデバイスのマイクロフォンによって検出された音声入力に対応することができる。デジタルファイルは、アナログ音声入力のデジタル化表現を含むことができる。デジタルファイルは、音声入力に関連付けられたキーワードまたはトークンを含むために前処理され得る。場合によっては、データ処理システムは、デジタルファイルを受信せず、代わりに、コンテンツ選択を容易にすることができるデジタルファイルに関する情報とともにコンテンツに対する要求を受信してもよい。
ACT804において、データ処理システムまたはサードパーティチャットボットプラットフォームは、チャットボットを備えるコンピュータプログラムを選択し、チャットボットを呼び出すことができる。場合によっては、データ処理システム102は、チャットボットを選択して呼び出すことができ、サードパーティチャットボットプラットフォームは、チャットボットを選択して呼び出すことができ、またはコンピューティングデバイスは、チャットボットを選択して呼び出すことができる。チャットボットは、デジタルファイルをデータ処理システムに送信する前に選択されて呼び出され得る。
ACT806は、対話データ構造内のプレースホルダ領域が識別され得る。ACT808において、データ処理システムは、コンテンツアイテムを選択し、供給することができる。データ処理システムは、選択されたコンテンツアイテムをサードパーティチャットボットプラットフォーム、コンピューティングデバイス、またはコンテンツアイテムを要求した他のエンティティに提供することができる。データ処理システムは、コンテンツアイテムを対話データ構造に挿入し、コンピューティングデバイスを介する提示のために、修正された対話データ構造を提供することができる。
ACT810において、データ処理システムは、コンテンツアイテムをメモリ内に記憶することによって、コンピューティングリソースの利用を低減することを促進することができる。データ処理システムは、コンテンツアイテムの提示に関連付けられた情報に基づいて、コンテンツアイテムをインデックス値に関連付けることができる。例えば、インデックス値は、コンテンツアイテム、コンピューティングデバイス、チャットボット、対話データ構造、キーワード、トピック、または位置に関連付けられた1つまたは複数の識別子に基づいて生成され得る。インデックス値は、セッションに関連し、セッションを再開するかどうかを決定するため、どのセッションを開始するかを識別するため、または新しいセッションを開始するために使用され得る識別子に基づいて生成され得る。
ACT812において、データ処理システムは、コンテンツ選択を容易にするための情報とともに、第2のデジタルファイル、またはコンテンツに対する第2の要求を受信することができる。ACT814において、データ処理システムは、ACT804において以前に呼び出されたチャットボットとは異なる第2のチャットボットを備える第2のコンピュータプログラムを選択することができる。データ処理システムは、サードパーティによって選択され得る第2のチャットボットの指示を受信することができる。ACT816において、データ処理システムは、ACT808において以前に選択されたコンテンツアイテムが第2のチャットボットによって提供されている第2の対話データ構造に関連すると判定し、リソース利用を低減するために同じコンテンツアイテムを再利用すると決定することができる。
図9は、コンピュータネットワークを介してコンピュータプログラム出力を検証するほう法の図である。方法900は、例えば、システム100、データ処理システム102、コンピューティングデバイス104、サードパーティチャットボットプラットフォームプロバイダ146、チャットボットプロバイダデバイス108、またはコンテンツプロバイダコンピューティングデバイス106を含む、図1〜図5に示す1つまたは複数の構成要素またはシステムによって実行され得る。ACT802において、データ処理システムは、データ処理システムは、サードパーティチャットボットプラットフォームのサーバとの通信チャネルを確立することができる。通信チャネルは、例えば、暗号鍵法を利用することによって安全にされ得る。データ処理システムは、通信チャネルを確立するためにハンドシェイクプロトコルを使用することができる。
ACT904において、データ処理システムは、サードパーティサーバからコンテンツに対する要求を受信することができる。コンテンツに対する要求は、チャットボットによってトリガされ得る。コンテンツに対する要求は、チャットボットがクエリを生成することに応答することができる。ACT906において、データ処理システムは、コンテンツアイテムを選択し、コンテンツアイテムをサードパーティチャットボットプラットフォームのサードパーティサーバに提供することができる。サードパーティサーバは、コンピューティングデバイスのユーザへの提示のためにコンテンツアイテムをチャットボットに転送するように指示され得る。
ACT908において、データ処理システムは、チャットボットからコンテンツアイテムの指示を受信することができる。例えば、データ処理システムは、コンテンツアイテムの指示についてチャットボットにpingを送ることができる。ACT910において、データ処理システムは、コンテンツアイテムの指示と、データ処理システムによってサードパーティチャットボットプラットフォームのサードパーティサーバに提供された選択されたコンテンツアイテムとの比較に基づいて、検証パラメータを設定することができる。検証パラメータは、コンテンツアイテムが一致するかどうか、またはコンテンツアイテムがチャットボットにタイムリーに提供されたかどうかを示すことができる。
図10は、例示的なコンピュータシステム1000のブロック図である。コンピュータシステムまたはコンピューティングデバイス1000は、システム1000、またはデータ処理システム102のようなその構成要素を含むことができ、またはそれらを実装するために使用され得る。データ処理システム102は、インテリジェントパーソナルアシスタントまたは音声ベースのデジタルアシスタントを含むことができる。コンピューティングシステム1000は、情報を通信するためのバス1005または他の通信構成要素と、情報を処理するためにバス1005に結合された処理回路とを含む。コンピューティングシステム1000は、情報を処理するためにバスに結合された1つまたは複数のプロセッサ1010または処理回路も含むことができる。コンピューティングシステム1000は、情報と、プロセッサによって実行されるべき命令とを記憶するためにバス1005に結合された、ランダムアクセスメモリ(RAM)または他のダイナミック記憶デバイスのようなメインメモリ1015も含む。メインメモリ1015は、データリポジトリ145であるか、またはそれを含むことができる。メインメモリ1015は、プロセッサ1010による命令の実行中に、位置情報、一時変数、または他の中間情報を記憶するためにも使用され得る。コンピューティングシステム1000は、プロセッサ1010のための静的情報および命令を記憶するためにバス1005に結合された読み出し専用メモリ(ROM)1020または他のスタティック記憶デバイスをさらに含んでもよい。ソリッドステートデバイス、磁気ディスク、または光ディスクのような記憶デバイス1025が、情報および命令を永続的に記憶するためにバス1005に結合され得る。記憶デバイス1025は、データリポジトリ145を含むか、またはその一部であり得る。
コンピューティングシステム1000は、バス1005を介して、ユーザに情報を表示するための液晶ディスプレイまたはアクティブマトリクスディスプレイのようなディスプレイ1035に結合されてもよい。英数字と他のキーとを含むキーボードのような入力デバイス1030が、情報およびコマンドの選択をプロセッサ1010に通信するためにバス1005に結合されてもよい。入力デバイス1030は、タッチスクリーンディスプレイ1035を含むことができる。入力デバイス1030は、方向情報およびコマンドの選択をプロセッサ1010に通信するため、ならびにディスプレイ1035上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方法キーのようなカーソル制御も含むことができる。ディスプレイ1035は、例えば、データ処理システム102、クライアントコンピューティングデバイス150、または図1の他の構成要素の一部であり得る。
本明細書で説明するプロセス、システム、および方法は、プロセッサ1010がメインメモリ1015内に含まれる命令の配列を実行することに応答してコンピューティングシステム1000によって実施され得る。そのような命令は、記憶デバイス1025のような別のコンピュータ可読媒体からメインメモリ1015に読み込まれ得る。メインメモリ1015内に含まれる命令の配列の実行は、コンピューティングシステム1000に本明細書で説明される例示的なプロセスを実行させる。メインメモリ1015内に含まれる命令を実行するために、マルチプロセッシング構成における1つまたは複数のプロセッサが使用されてもよい。ハードワイヤード回路が、本明細書で説明されるシステムおよび方法とともに、ソフトウェア命令の代わりに、またはそれと組み合わせて使用され得る。本明細書で説明されるシステムおよび方法は、ハードウェア回路およびソフトウェアのいかなる特定の組合せにも限定されない。
例示的なコンピューティングシステムが図10において説明されているが、本明細書で説明される動作を含む主題は、他のタイプのデジタル電子回路において、または、本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実施され得る。
本明細書で開示されるシステムがユーザに関する個人情報を収集するか、または個人情報を使用する場合がある状況について、ユーザは、プログラムもしくは機能が個人情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、ユーザの好み、またはユーザの場所に関する情報)を収集してもよいかどうかを制御する機会、または、ユーザにより関連する可能性があるコンテンツサーバまたは他のデータ処理システムからのコンテンツを受信するかどうかもしくはその方法を制御する機会が提供されてもよい。加えて、パラメータを生成するときに個人を特定できる情報が除去されるように、特定のデータが、記憶または使用される前に、1つまたは複数の方法で匿名化されてもよい。例えば、個人を特定できる情報がユーザについて決定され得ないように、ユーザの身元が匿名化されてもよく、または、ユーザの特定の位置が決定され得ないように、ユーザの地理的位置が取得されるユーザの地理的位置が(都市、郵便番号、または州レベルのように)一般化されてもよい。したがって、ユーザは、情報がどのように自分に関して収集され、コンテンツサーバによって使用されるかについて制御してもよい。
本明細書で説明される主題および動作は、デジタル電子回路において、または、本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実施され得る。本明細書で説明される主題は、データ処理装置による実行のため、またはデータ処理装置の動作を制御するために1つまたは複数のコンピュータ記憶媒体上に符号化された1つまたは複数のコンピュータプログラム、例えば、コンピュータプログラム命令の1つまたは複数の回路として実装され得る。代替的には、または加えて、プログラム命令は、データ処理装置による実行のために適切な受信機装置への送信のために情報を符号化するために生成される人工的に生成された信号、例えば、機械的に生成された電気、光、または電磁信号上に符号化され得る、コンピュータ記憶媒体が、コンピュータ可読記憶媒体、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つまたは複数の組合せであるか、またはそれらの中に含まれ得る。コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内に符号化されたコンピュータプログラム命令の発信元または宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の構成要素または媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)であるか、またはそれに含まれ得る。本明細書で説明される動作は、1つまたは複数のコンピュータ可読記憶媒体上に記憶されるか、または他のソースから受信されるデータに対してデータ処理装置によって実行され動作として実施され得る。
「データ処理システム」、「コンピューティングデバイス」、「構成要素」、または「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、またはそれらのうちの複数もしくは組合せを含む、様々な装置、デバイス、およびマシンを包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャのような、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。例えば、インターフェース110、コンテンツセレクタ構成要素118、またはNLP構成要素112、および他のデータ処理システム102の構成要素は、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むかまたは共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとしても知られる)は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む任意の形式のプログラミング言語において書かれ得、スタンドアロンプログラムとして、または、モジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとしてを含む、任意の形態において展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応することができる。コンピュータプログラムは、他のプログラムもしくはデータ(例えば、マークアップ言語文書内に記憶された1つまたは複数のスクリプト)を保持するファイルの一部内に、問題のプログラム専用の単一のファイル内に、または、複数の連携ファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトにおいて配置されるか、もしくは複数のサイトにわたって分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明されるプロセスおよび論理フローは、入力データに対して動作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラム(例えば、データ処理システム102の構成要素)を実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行され得、装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実装され得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体デバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびに、CD ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得、またはその中に組み込まれ得る。
本明細書で説明される主題は、バックエンド構成要素を、例えば、データサーバとして含む、または、ミドルウェア構成要素、例えば、アプリケーションサーバを含む、または、フロントエンド構成要素、例えば、ユーザが本明細書で説明される主題の実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または、1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、およびピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
システム100またはシステム1000のようなコンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に互いに離れており、典型的には通信ネットワーク(例えば、ネットワーク165)を介して対話する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実装形態において、サーバは、データ(例えば、コンテンツアイテムを表すデータパケット)をクライアントデバイスに(例えば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的のために)送信する。クライアントデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)が、サーバにおいてクライアントデバイスから受信(例えば、コンピューティングデバイス150またはクライアントプロバイダコンピューティングデバイス155またはチャットボットプロバイダコンピューティングデバイス160からデータ処理システム102によって受信)され得る。
動作が特定の順序において図面中に描かれているが、そのような動作は、図示された特定の順序において、または連続した順序において実行される必要はなく、すべての図示された動作が実行される必要はない。本明細書で説明されるアクションは、異なる順序において実行され得る。
様々なシステム構成要素の分離は、すべての実装形態において分離を必要とせず、説明されたプログラム構成要素は、単一のハードウェアまたはソフトウェア製品内に含まれ得る。例えば、NLP構成要素112またはコンテンツセレクタ構成要素118は、単一の構成要素、アプリ、もしくはプログラム、または、1つもしくは複数の処理回路を有する論理デバイス、または、データ処理システム102の1つまたは複数のサーバの一部であり得る。
ここで、いくつかの例示的な実装形態について説明してきたが、上記は、例示であり、限定ではなく、例として提示されたことは、明らかである。具体的には、本明細書で提示される例の多くは、方法の行為またはシステムの要素の特定の組合せを含むが、それらの行為およびそれらの要素は、同じ目的を達成するために他の方法において組み合わされてもよい。1つの実装形態に関連して論じられた行為、要素、および特徴は、他の実装形態または実施形態における同様の役割から除外されることを意図していない。
本明細書で使用される表現法および用語法は、説明の目的のためのものであり、限定とみなされるべきではない。本明細書における「含む」、「備える」、「有する」、「含有する」、「伴う」、「によって特徴付けられる」、「ことを特徴とする」、およびそれらの変形の使用は、その後に列挙されたアイテム、その等価物、および追加のアイテムを、排他的にその後に列挙されたアイテムからなる代替の実装形態と同様に包含することを意味する。一実装形態では、本明細書で説明されるシステムおよび方法は、説明されている要素、行為、または構成要素のうちの1つ、2つ以上の各組合せ、またはすべてからなる。
単数形において言及される本明細書におけるシステムおよび方法の実装形態または要素または行為への任意の参照は、複数のこれらの要素を含む実装形態も包含してもよく、本明細書における任意の実装形態または要素または行為への複数形における任意の言及は、単一の要素のみを含む実装形態も包含してもよい。単数形または複数形における言及は、現在開示されているシステムまたは方法、それらの構成要素、行為、または要素を単数形または複数形に限定することを意図していない。任意の情報、行為、または要素に基づく任意の行為または要素への言及は、行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装形態を含んでもよい。
本明細書で開示される任意の実装形態は、任意の他の実装形態または実施形態と組み合わされてもよく、「実装形態」、「いくつかの実装形態」、「1つの実装形態」などへの言及は、必ずしも相互に排他的ではなく、実装形態に関連して本明細書で説明される特定の特徴、構造、または特性が少なくとも1つの実装形態または実施形態内に含まれてもよいことを示すことを意図している。本明細書で使用されるそのような用語は、必ずしもすべてが同じ実装形態を指すというわけではない。任意の実装形態は、本明細書で開示される態様および実装形態と一致する任意の方法において、包括的または排他的に任意の他の実装形態と組み合わされてもよい。
「または」への言及は、「または」を使用して説明される任意の用語が説明される用語のうちの1つ、2つ以上、およびすべてのいずれかを示してもよいように、包括的と解釈されてもよい。例えば、「「A」および「B」のうちの少なくとも1つ」は、「A」のみ、「B」のみ、ならびに「A」と「B」の両方を含むことができる。「備える」または他の開いた用語法(open terminology)と組み合わせて使用されるそのような言及は、追加のアイテムを含むことができる。
図面、詳細な説明、または任意の請求項における技術的特徴の後に参照符号が続く場合、参照符号は、図面、詳細な説明、および特許請求の範囲の明瞭さを高めるために含まれている。したがって、参照符号もそれらの不在も、どのようなクレーム要素の範囲に対しても何ら限定的な影響を持たない。
本明細書で説明されるシステムおよび方法は、その特徴から逸脱することなく、他の特定の形態において具体化されてもよい。例えば、データ処理システム102は、第2のアクション210が完了したかまたはまもなく開始することを示す第2のアクション210からのデータのような、スレッド200のアクションのシーケンス内の前のアクションからのデータに部分的に基づいて、後続のアクションのための(例えば、第3のアクション215のための)コンテンツアイテムを選択することができる。前述の実装形態は、説明されたシステムおよび方法を制限するのではなくて例示的である。したがって、説明されたシステムおよび方法の範囲は、前述の説明ではなく、添付の特許請求の範囲によって示され、特許請求の範囲と同等の意味および範囲内に入る変更は、その中に取り入れられる。