(57)【要約】  特定の子ノード状態におけるダイアログプロセスをインスタンス化するための、コンピュータ記憶媒体上で符号化されたコンピュータプログラムを含む、方法、システム、および装置。一態様では、方法は、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップと、ルートノード状態におけるダイアログプロセスをインスタンス化するステップと、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる入力応答をダイアログプロセスに提供するステップであって、各入力応答が入力要求に応答して提供される、ステップと、ユーザデバイスに特定の子ノード状態におけるダイアログプロセスを提示させるデータを提供するステップとを含む。
2020518075.tif 000002
【特許請求の範囲】
【請求項１】
サーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記ダイアログプロセスは複数のノード状態を定義し、前記ノード状態はルートノード状態および子ノード状態を含み、
各子ノード状態は別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態は、入力要求と、前記入力要求に応答して受信された入力応答を処理し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択するための入力応答処理ルールとを指定する、ステップと、
前記サーバコンピュータによって、前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記サーバコンピュータによって、前記ダイアログプロセスに、前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答は入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記サーバコンピュータによって、前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含むコンピュータ実装方法。
【請求項２】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、ダイアログプロセスインデックスのインデックスキー値を含み、前記ダイアログプロセスインデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記ダイアログプロセスへの前記複数の入力応答を提供するステップは、
前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスするステップと、
前記ダイアログプロセスインデックスから前記入力応答のセットを取り出すステップと、
前記ダイアログプロセスに前記入力応答のセットを提供するステップと
を含む、請求項2に記載のコンピュータ方法。
【請求項４】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる前記複数の入力応答を含む、請求項1に記載のコンピュータ方法。
【請求項５】
前記入力要求は、クエリパラメータとしての前記入力応答のセットを含むユニフォームリソースロケータによって指定される、請求項4に記載のコンピュータ方法。
【請求項６】
前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定される、請求項1に記載のコンピュータ方法。
【請求項７】
前記命令は、前記複数の入力応答を指定する、請求項6に記載の方法。
【請求項８】
前記複数の入力応答のうちの各入力応答は、前記ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む、請求項1から7のいずれか一項に記載のコンピュータ方法。
【請求項９】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴に部分的に基づく、請求項1から8のいずれか一項に記載のコンピュータ方法。
【請求項１０】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ閲覧履歴に部分的に基づく、請求項1から9のいずれか一項に記載のコンピュータ方法。
【請求項１１】
データ処理装置と、
前記データ処理装置によって実行可能であり、そのような実行時に、前記データ処理装置に、
ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記ダイアログプロセスが複数のノード状態を定義し、前記ノード状態がルートノード状態および子ノード状態を含み、
各子ノード状態は、別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態は、入力要求と、前記入力要求に応答して受信された入力応答を処理し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択するための入力応答処理ルールとを指定する、ステップと、
前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記ダイアログプロセスに、前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答は入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含む動作を実施させる命令を記憶するコンピュータ可読媒体と
を備えるシステム。
【請求項１２】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、ダイアログプロセスインデックスのインデックスキー値を含み、前記ダイアログプロセスインデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、請求項11に記載のシステム。
【請求項１３】
前記ダイアログプロセスへの前記複数の入力応答を提供するステップは、
前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスするステップと、
前記ダイアログプロセスインデックスから前記入力応答のセットを取り出すステップと
前記ダイアログプロセスに前記入力応答のセットを提供するステップと
を含む、請求項12に記載のシステム。
【請求項１４】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる前記複数の入力応答を含む、請求項11に記載のシステム。
【請求項１５】
前記要求は、クエリパラメータとしての前記入力応答のセットを含むユニフォームリソースロケータによって指定される、請求項14に記載のシステム。
【請求項１６】
前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定される、請求項11に記載のシステム。
【請求項１７】
前記命令は、前記複数の入力応答を指定する、請求項16に記載のシステム。
【請求項１８】
前記複数の入力応答のうちの各入力応答は、前記ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む、請求項11から17のいずれか一項に記載のシステム。
【請求項１９】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴および/またはユーザ閲覧履歴に部分的に基づく、請求項11から18のいずれか一項に記載のシステム。
【請求項２０】
データ処理装置によって実行可能であり、そのような実行時に、1つまたは複数のサーバコンピュータに、
前記1つまたは複数のサーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記ダイアログプロセスが複数のノード状態を定義し、前記ノード状態がルートノード状態および子ノード状態を含み、
各子ノード状態は別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態は、入力要求と、前記入力要求に応答して受信された入力応答を処理し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択するための入力応答処理ルールとを指定する、ステップと、
前記1つまたは複数のサーバコンピュータによって、前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記1つまたは複数のサーバコンピュータによって、前記ダイアログプロセスに、前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答は入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記1つまたは複数のサーバコンピュータによって、前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含む動作を実施させる命令を記憶するコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定の子ノード状態におけるダイアログプロセスのインスタンス化に関する。
【背景技術】
【０００２】
ダイアログプロセスは、コンピュータデバイスによって実行されると、人間のユーザとの会話をシミュレートするコンピュータプログラム、スクリプト、または任意の他の命令のセットである。これらのシミュレートされた会話を通じて、ダイアログプロセスは広範囲の自動化された支援をユーザに提供する。ダイアログプロセスは、しばしば、複数のノード状態を有する状態機械またはグラフプロセスによって実装される。各状態は、ユーザからの1つまたは複数の入力を求め、入力に応じて、別のノード状態にトラバースするかまたは特定のアクションを取る。
【０００３】
「チャットボット」と呼ばれることもあるダイアログプロセスは、メッセージングプラットフォーム、エンターテインメントウェブサイトの一部として、また顧客サービスのために広く使用されている。しばしば、ダイアログプロセス開発者は、ユーザがダイアログプロセスの特定のノード状態に導かれることを望む場合がある。たとえば、ユーザが旅行の計画を立てるのを助けるチャットボットを書いた開発者が、ユーザがホテルの部屋の予約を比較するのを助ける新しい機能をチャットボットに追加したと仮定する。開発者は、ユーザをこの機能に触れさせたいと思う。しかしながら、そうするためには、ユーザは、新しい機能に触れるために、初期状態から1つまたは複数のチャットボット状態をトラバースしなければならない。したがって、ユーザが、新しい機能に触れられる特定のノード状態に達するために必要な応答を手動で入力するように指示され(次いで、指示に従い、実際に必要な応答を手動で入力し)ない限り、または、開発者が、新しい機能を強調する新しいチャットボット(これは顧客のコードベースを増加させ、ユーザを失うリスクがある)を作成しない限り、ユーザの多くは新しい機能に触れることがない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書は、チャットボットなどのダイアログプロセスの特定のサブルーチンへのディープリンクをユーザに提供することに関する技術について説明する(「ディープリンク」とは、特定のサブルーチンに向けられたリンクである)。
【課題を解決するための手段】
【０００５】
一般に、本明細書で説明される主題の1つの革新的な態様は、サーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するアクションであって、ダイアログプロセスは複数のノード状態を定義し、ノード状態はルートノード状態および子ノード状態を含み、各子ノード状態は別の子ノード状態またはルートノード状態のうちの少なくとも1つから下り、各ノード状態は、入力要求と、入力要求に応答して受信された入力応答を処理し、入力応答に基づいて、ノード状態から下りる子ノード状態のうちの1つを選択するための入力応答処理ルールとを指定する、アクションを含む方法において具現化され得る。サーバコンピュータは、特定の子ノード状態を指定する要求に応答して、ルートノード状態におけるダイアログプロセスをインスタンス化する。ダイアログプロセスへの複数の入力応答が提供され、各入力応答は入力要求に対する応答であり、提供された入力応答のうちの最初の入力応答が、ルートノード状態の入力要求に対して提供され、提供された入力応答のうちの最後の入力応答が、特定の子ノード状態の親であるノード状態の入力要求に対して提供され、ダイアログプロセスに特定の子ノード状態を選択させる。次いで、サーバコンピュータは、ユーザデバイスに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセスを提示させるデータを提供する。この態様の他の実施形態は、対応するシステムと、装置と、コンピュータ記憶デバイス上に符号化された、方法のアクションを実施するように構成されたコンピュータプログラムとを含む。たとえば、本明細書で説明される主題の別の革新的な態様は、1つまたは複数のサーバコンピュータを有するデータ処理装置によって実行可能であり、そのような実行時に、データ処理装置に本明細書で説明される主題の任意の態様または実装形態による方法を含む動作を実施させる命令を記憶するコンピュータ記憶媒体(非一時的コンピュータ記憶媒体であり得るが、この態様はこれに限定されない)において具現化され得る。
【０００６】
本明細書で説明される主題の別の革新的な態様は、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するサーバコンピュータを含むシステムにおいて具現化され得、ダイアログプロセスは複数のノード状態を定義し、ノード状態はルートノード状態および子ノード状態を含み、各子ノード状態は別の子ノード状態またはルートノード状態のうちの少なくとも1つから下り、各ノード状態は、入力要求と、入力要求に応答して受信された入力応答を処理するための入力応答処理ルールとを指定し、入力応答に基づいて、ノード状態から下りる子ノード状態のうちの1つを選択する。システムは、特定の子ノード状態を指定する要求に応答して、ルートノード状態におけるダイアログプロセスをインスタンス化するための手段と、サーバコンピュータによって、ダイアログプロセスに、ダイアログプロセスへの複数の入力応答を提供するための(または、サーバコンピュータに、ダイアログプロセスに提供するようにユーザデバイスなどの別のデバイスに命令させるための)手段であって、各入力応答は入力要求への応答として提供され、提供された入力応答のうちの最初の入力応答が、ルートノード状態の入力要求に対して提供され、提供された入力応答のうちの最後の入力応答が、特定の子ノード状態の親であるノード状態の入力要求に対して提供され、ダイアログプロセスに特定の子ノード状態を選択させる、手段とを含む。サーバコンピュータは、ユーザデバイスに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセスを提示させるデータを提供する。本明細書で説明される主題の別の革新的な態様は、データ処理装置と、データ処理装置によって実行可能であり、そのような実行時に、データ処理装置に、本明細書で説明される主題の任意の態様または実装形態による方法を含む動作を実施させる命令を記憶するコンピュータ可読媒体(非一時的コンピュータ記憶媒体であり得るが、この態様はこれに限定されない)とを備えるシステムにおいて具現化され得る。
【０００７】
これらの実施形態および他の実施形態はそれぞれ、以下の特徴のうちの1つまたは複数を任意選択で含むことができる。いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ダイアログプロセスインデックスのインデックスキー値を含み、ダイアログプロセスインデックスは、各インデックスエントリについて、それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる入力応答のセットとを指定する。ダイアログプロセスへの複数の入力応答を提供することは、要求のインデックスキー値によってインデックス付けされた特定の子ノード状態エントリにアクセスすることと、ダイアログプロセスインデックスから入力応答のセットを取り出すことと、次いで、ダイアログプロセスに入力応答のセットを提供することとを含むことができる。
【０００８】
いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる複数の入力応答を含む。要求は、クエリパラメータとしての入力応答のセットを含むユニフォームリソースロケータによって指定され得る。
【０００９】
いくつかの実装形態では、要求は、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定され、命令は、複数の入力応答を指定することができる。
【００１０】
いくつかの実装形態では、複数の入力応答のうちの各入力応答は、ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む。
【００１１】
いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ユーザ検索履歴に部分的に基づく。ダイアログプロセスの特定の子ノード状態を指定する要求は、ユーザ閲覧履歴に部分的に基づき得る。
【００１２】
本明細書で説明される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装され得る。ユーザは、ダイアログプロセスの特定の子ノード状態へのダイレクトリンク(たとえば、ユニフォームリソース識別子)を提供される。リンクの選択により、ダイアログプロセスがルートノード状態においてインスタンス化する。さらに、リンクは、ダイアログプロセスのルートノード状態から特定の子ノード状態にトラバースするために必要な情報のすべてを含む方法でダイアログプロセスを呼び出させる。ダイアログプロセスに特定の子ノード状態にトラバースさせる情報をダイアログプロセスに提供することによって、システムおよび方法は、特定の子ノード状態に達するためにユーザが任意の応答を入力することを必要とすることなしに、ユーザを特定の子ノード状態の機能に触れさせることを保証する。ユーザが任意の応答を入力する必要、およびダイアログプロセスが入力要求をユーザに提供する必要をなくすことは、ユーザが特定の子ノード状態にリンクするために必要とされるネットワークトラフィックを低減し、かつ/またはユーザが特定の子ノード状態にリンクするのにかかる時間を低減するので、よりリソース効率的なプロセスを提供する。さらに、ダイアログプロセスのためのカスタムコードの必要性がなくなり、その結果、ダイアログプロセスは、ダイアログプロセスの特定の子ノード状態への所望の露出ごとの再プログラミングを必要としない。これは、開発者コードベースを簡略化し、各ダイアログプロセスの特別なコーディングを必要とするシステムに対する柔軟性の追加を実現する。
【００１３】
本明細書で説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００１４】
【図１Ａ】ユーザデバイスのための特定の子ノード状態においてダイアログプロセスが呼び出され得る例示的な環境のブロック図である。
【図１Ｂ】ダイアログプロセス内のルートノード状態から下りる子ノード状態のサブセットのグラフである。
【図２】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための例示的なプロセスの流れ図である。
【図３Ａ】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
【図３Ｂ】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
【図３Ｃ】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
【発明を実施するための形態】
【００１５】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【００１６】
概要
以下で説明されるのは、たとえば、チャットボットまたは人工会話エンティティといったダイアログプロセスの特定の子ノード状態へのディープリンクをユーザに提供するためのシステムおよび方法である。リンクの選択は、ダイアログプロセスをルートノード状態においてインスタンス化させる。リンクは、ダイアログプロセスをダイアログプロセスの特定の子ノード状態にトラバースするために必要な情報のすべてを含む方法でダイアログプロセスを呼び出させる。ダイアログプロセスを特定の子ノード状態にトラバースするための情報の提供は、いくつかの異なる方法で行われ得る。1つの方法は、たとえば、クエリパラメータの形態の情報でユニフォームリソース識別子を符号化することであり、ダイアログプロセスが呼び出されると、ダイアログプロセスが情報を消費する。別の方法は、情報を含むインデックスを付けるトークンでユニフォームリソース識別子を符号化することによるものであり、情報は呼び出し時にインデックスからフェッチされ、ダイアログプロセスに提供される。また別の方法は、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供するようにプログラムされたスクリプトなどのプロセスにリンクすることによるものである。コンピュータサーバは、ユーザデバイスのユーザによってリンクが選択されることに応答して、ユーザデバイスから特定の子ノード状態におけるダイアログプロセスに対する要求を受信する。
【００１７】
ダイアログプロセスは、ルートノード状態および子ノード状態を含む複数のノード状態を有する。ダイアログプロセスの各子ノード状態は、ダイアログプロセスの少なくとも別の子ノード状態またはルートノード状態から下りる。各ノード状態は入力要求および入力応答処理ルールを含み、入力応答処理ルールは、受信された入力応答をノード状態がどのように処理するかを決定し、入力応答に応答して、ノード状態から下りる子ノード状態を選択する。
【００１８】
本明細書の態様によれば、特定の子ノード状態におけるダイアログプロセスに対する各要求について、ダイアログプロセスはダイアログプロセスのルートノード状態においてインスタンス化される。リンクの選択に応答して、複数の入力応答がダイアログプロセスに提供される。いくつかの実装形態では、応答はサーバコンピュータによって提供され得るが、他の実装形態では、応答はユーザデバイスによって提供され得る。
【００１９】
各入力応答は、入力要求に応答してダイアログプロセスに提供される。たとえば、最初の入力応答は、ダイアログプロセスのルートノード状態の入力要求に対して(それに応答して)提供され、最後の入力応答は、リンクされている先の特定の子ノード状態の親であるノード状態の入力要求に対して(それに応答して)提供される。ルートノード状態に対して提供される応答と特定の子ノード状態の親であるノード状態に対して提供される応答との間に、特定の子ノード状態の深さに応じて、ゼロ以上の中間応答が提供され得る。最後の入力応答を受信すると、ダイアログプロセスは特定の子ノード状態を選択する。
【００２０】
いくつかの実装形態では、次いで、ダイアログプロセスは、特定の子ノード状態に達すると、ユーザデバイスにおいて提示される。他の実装形態では、入力応答の各々がダイアログプロセスに提供されると、ダイアログプロセスがユーザデバイスにおいて提示されてもよく、その結果、ユーザは、ダイアログプロセスに特定の子ノード状態にトラバースさせた質問および応答を見ることができる。
【００２１】
これらの特徴および追加の特徴は、以下でより詳細に説明される。
【００２２】
例示的な動作環境
図1Aは、ユーザデバイスのための特定の子ノード状態においてダイアログプロセスが呼び出され得る例示的な環境100のブロック図である。ローカルエリアネットワーク(LAN)、インターネット、またはそれらの組合せなどのコンピュータネットワーク102は、1つまたは複数のダイアログプロセス106を含むサーバコンピュータ104と、ユーザデバイス108とを接続する。サーバコンピュータ104は、図1Aでは単一のエンティティとして表されるが、直接またはネットワーク102を介して通信している複数の異なるサーバを含むことができる。
【００２３】
ユーザデバイス108は、ネットワーク102を介してダイアログプロセス106を要求および受信することが可能な電子デバイスである。例示的なユーザデバイス108は、パーソナルコンピュータと、モバイル通信デバイスと、ネットワーク102を介してデータを送信および受信することができる他のデバイスとを含む。ユーザデバイス108は、典型的には、ネットワーク102を介したダイアログプロセス106を含むデータの送信および受信を容易にするために、ウェブブラウザなどのユーザアプリケーションを含む。ウェブブラウザは、ユーザが、典型的にはワールドワイドウェブまたはローカルエリアネットワーク上のウェブサイトにおけるウェブページ上に配置されたテキスト、画像、ビデオ、音楽および他の情報を表示し、それらと対話することを可能にすることができる。
【００２４】
ダイアログプロセスのインスタンス化
ユーザデバイス108は、ダイアログプロセスの特定の子ノード状態へのリンク114(または何らかの他の要求命令114)を含むユーザ環境107を表示してもよい。ユーザ環境107は、たとえば、ウェブページ、ネイティブアプリケーション内のユーザインターフェース、テキストメッセージ環境、または、選択されると、ユーザデバイス108に要求をサーバに送信させる命令が提供され得る任意の他の環境であってもよい。ユーザデバイス108上のユーザは、たとえば、要求命令114を選択することによって、サーバ104からの特定の子ノード状態におけるダイアログプロセス106の提示を要求することができる。各ダイアログプロセス106は、ルートノード状態および子ノード状態を含む複数のノード状態{N1, N2,...NN}を有する。ダイアログプロセス106の各子ノード状態は、別の子ノード状態またはルートノード状態から下りる。各ノード状態は、入力要求(たとえば、質問)と、入力応答(たとえば、答え)を処理するための入力応答処理ルールとを含む。ノード状態の入力要求に応答して提供される特定の入力応答について、ノード状態は、ノード状態から下りる子ノード状態のうちの1つを選択する。
【００２５】
ダイアログプロセス内のノード状態の関係が図1Bに例示されており、図1Bはダイアログプロセス内のルートノードN0から下りるノード状態のサブセットのグラフである。ルートノードN0は、入力要求{質問0}と、入力応答を処理するためのルールとを含む。図1Bに示されるように、ルールは2つの決定、すなわち、子ノードN11にトラバースするA01および子ノードN12にトラバースするA02に解決する。たとえば、質問が「新しいホテルの予約を取りたいですか、それとも既存の予約を再検討したいですか?」であると仮定する。A01の分岐は「予約する」に解決する任意の応答または入力であってもよく、A02の分岐は「再検討する」に解決する任意の応答または入力であってもよい。簡潔にするために、また混雑を招くことを避けるために、架空の分岐によって示される他のノード状態は図面から省略されている。
【００２６】
子ノード状態N33にトラバースするためには、ダイアログプロセスは、ルートノードN0における質問0に対してA02に解決する入力、子ノードN12における質問12に対してA121に解決する入力、子ノードN23における質問23に対してA231に解決する入力を受信しなければならない。以下で説明されるシステムおよび方法は、ダイアログプロセスがルートノード状態においてインスタンス化し、ルートノード状態から特定の子ノード状態に自動的にトラバースすることを可能にする。
【００２７】
上記で説明されたように、ダイアログプロセスにルートノード状態においてインスタンス化させ、特定の子ノード状態に自動的にトラバースさせる3つの例示的な方法が提供される。第1の方法は、情報でユニフォームリソース識別子を符号化することであり、図3Aを参照してより詳細に説明される。第2の方法は、情報を含むインデックスを付けるトークンでユニフォームリソース識別子を符号化することによるものであり、図3Bを参照して説明される。第3の方法は、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供するようにプログラムされたスクリプトなどのプロセスにリンクすることによるものであり、図3Cを参照して説明される。これらの例は網羅的なものではなく、ダイアログプロセスにルートノード状態においてインスタンス化させ、ルートノード状態から特定の子ノード状態に自動的にトラバースさせる他の適切な方法も使用され得る。
【００２８】
図2は、特定の子ノード状態におけるダイアログプロセス106aをインスタンス化するための例示的なプロセス200の流れ図である。プロセス200は、サーバコンピュータ104などのコンピュータシステムによって実施され得る。
【００２９】
サーバ104は、特定の子ノード状態におけるダイアログプロセス106aをユーザデバイス108に提供するための要求114を受信する(202)。要求は、ユニフォームリソースロケータ(URL)などのユニフォームリソース識別子を選択することによって生成されてもよい。リンクにおいて符号化されるものおよび得られる要求は、ルートノード状態におけるダイアログプロセスをインスタンス化し、ルートノード状態から特定の子ノード状態に自動的にトラバースするためにシステムが使用するインスタンス化プロセスに依存し得る。たとえば、要求114は、クエリパラメータとしての入力応答を含んでもよい。代替的に、要求114はダイアログプロセスインデックス110のインデックスキー値への参照を含んでもよく、インデックスキー値は特定の子ノード状態に対するインデックスエントリおよび入力応答のセットを参照する。また別の代替では、要求はリソースを指してもよく、リソース112(たとえば、ウェブページ)は入力応答のセットに関する命令および情報を含む。これらの異なる要求タイプは、それぞれ、以下の図3A〜図3Cを参照して説明される。
【００３０】
要求114を受信した後、サーバ104はダイアログプロセスのルートノード状態におけるダイアログプロセス106aをインスタンス化する(204)。ダイアログプロセス106aはユーザデバイス108とは別個のサーバ104上の環境でインスタンス化されるが、いくつかの実装形態では、ダイアログプロセス106aは代わりに、たとえば、ユーザデバイス108上の環境でインスタンス化されてもよい。
【００３１】
サーバ104は複数の入力応答をダイアログプロセスに提供し、各入力応答は入力要求に応答して提供される(206)。応答の提供は要求タイプに従って行われてもよく、その例は以下の図3A〜図3Cを参照して説明される。特定の入力応答のセットをダイアログプロセス106aに提供することによって、ダイアログプロセス106aはルートノード状態から特定の子ノード状態にトラバースする。たとえば、航空券予約ダイアログプロセスは、ルートノード状態における入力要求「今日は飛行機でどこに行きますか?」に、対応する入力応答「ホノルル、ハワイ」を提供してもよい。次いで、ダイアログプロセス106aは、入力要求が「搭乗手続きをしたいですか?」であり、考えられる入力応答が「はい」である、子孫の子ノード状態を選択してもよく、特定の子ノード状態に達するまで以下同様である。
【００３２】
より具体的には、図1Bを参照すると、A02，A121およびA231に解決する応答は、子ノード状態N33にトラバースするために提供され得る。たとえば、図1Bのダイアログプロセスを子ノード状態N33にトラバースするためには、サーバ104がルートノード状態N0におけるダイアログプロセスをインスタンス化した後、決定A02を生じさせるのに有効であった応答が、たとえば、サーバ104によって入力され、その結果、ダイアログプロセスが子ノード状態N12にトラバースする。ダイアログプロセスが、応答が入力されるようサーバ104に促してもよく、またはサーバが、ルートノード状態がインスタンス化された後に応答を自動的に入力してもよい。次に、子ノード状態N12において決定A121を生じさせるのに有効であった応答が入力されることになり、その結果、ダイアログプロセスが子ノード状態N23にトラバースし、その後に子ノード状態N23において決定A231を生じさせるのに有効であった応答が続き、ダイアログプロセスを特定の子ノード状態N33にトラバースさせる。各応答は、ある状態に解決するために必要とされるデータでありさえすれば十分である。たとえば、質問がそれぞれの子ノード状態1、2または3に解決するために1、2または3の数値入力を必要とする場合、「1」に解決する応答は数字「1」または語「one」であり得る、などである。ルールセットがセマンティックルールを含む場合、応答は、ある状態に解決するために必要とされるデータでありさえすれば十分である。たとえば、入力を求める質問が「フライトを予約したいか、予約を管理したいか、またはフライトをキャンセルしたいか教えてください」である場合、「フライトを予約する(book a flight)」に解決する入力は、「予約する(book)」、「飛行機を予約する(make a flight)」、または「チケットを買う(buy ticket)」のような語または句であり得る。これらの語または句のうちのいずれか1つがノード状態に対する入力応答として使用され得る。したがって、トラバースが、ノード状態が「フライトを予約する(book a flight)」に解決することを必要とする場合、入力応答は単に「予約する(book)」であってもよい。
【００３３】
ノード状態へのトラバースのための入力応答は、ダイアログプロセスオーサーによって提供されてもよく、または機械学習技法によって発見されてもよい。前者の場合、ダイアログプロセスオーサーは、文字列区切りの応答を特定のノード状態に、たとえば、図1Aのダイアログプロセスに提供してもよく、ノードN33にトラバースするための文字列は{A01};{A121};{A231}であってもよく、ノードに対する任意の{・}は、ノードのためのダイアログプロセス処理ルールに、特定の子ノード状態へのトラバースにおいて必要とされる状態を選択させる英数字値である。後者の場合、仮想マシンが、ダイアログプロセスの各ノード状態に対する入力要求を解釈し、入力応答をダイアログプロセスに提供し、ダイアログプロセスの階層を記述する(サイトマップに類似した)ダイアログプロセス「ダイアログマップ」を学習するようにプログラムされてもよい。
【００３４】
ダイアログプロセス106aが特定の子ノード状態にトラバースした後、サーバ104は、ユーザデバイス108に特定の子ノード状態におけるダイアログプロセス106aを提示させるデータをユーザデバイスに提供する(208)。ダイアログプロセス106aは、アプリケーション環境内の新しいウィンドウの形態でユーザデバイス108に提示されてもよく、ダイアログプロセス106aに関連する追加の情報とともに提示されてもよい。
【００３５】
リンクにおける入力応答の符号化
図1A〜図1Bおよび図2を参照して説明されたように、特定の子ノード状態におけるダイアログプロセスをユーザデバイスに提供するために様々な方法が実装され得る。図3Aは、特定の子ノード状態302におけるダイアログプロセスをインスタンス化するための例示的なプロセス300のブロック図である。図3Aでは、要求304は、クエリパラメータとしての入力応答のセットを含むURLから生成される。ダイアログプロセスが呼び出されると、ダイアログプロセスはクエリパラメータに含まれる情報を消費する。
【００３６】
たとえば、図3Aでは、入力応答(たとえば、{A1, A2,...AN})はクエリパラメータとしてURLに含まれる。URLは、要求、たとえば、www.example/com/chatbotに応答してダイアログプロセスが呼び出され得るロケーションにリンクする。サーバ306は、URLの選択から生成された要求304を受信し、それに応答して、ダイアログプロセス308のインスタンス化を行う。
【００３７】
要求304とともに提供されるクエリパラメータとしての入力応答のセットは、ダイアログプロセス308に提供される。次に、入力応答のセットのうちの各入力応答が、ダイアログプロセス308からの入力要求に応答して提供される。ダイアログプロセス308は、入力要求が呼び出し時にコマンド引き数として提供されるかどうかを決定し、それに応じて、入力要求を処理するようにプログラムされ得る。入力要求が提供されない場合、ダイアログプロセスはI/Oデバイスからの入力を待つ。たとえば、URL304の選択によって生成された要求に応答して、最初の入力応答「A1」が入力要求「Q1」に応答して提供され、2番目の応答が入力要求「Q2」に応答して提供され、最後の入力応答「AN」が入力要求「QN」に応答して提供されるまで以下同様である。ダイアログプロセスが入力応答「AN」を受信すると、ダイアログプロセスは特定の子ノード状態「M」である子孫ノード状態を選択する。
【００３８】
次いで、特定の子ノード状態「M」におけるダイアログプロセス302をユーザデバイスにおいて表示させるデータがユーザデバイス108に提供される。いくつかの実装形態では、ダイアログプロセス302のルートノード状態から特定の子ノード状態にトラバースするためにダイアログプロセスに提供される入力要求および/または入力応答のセット310も、ユーザデバイス108のユーザに提供される。このことは、ルートノード状態から子ノード状態への完全な会話コンテキストをユーザに表示することを可能にする。たとえば、ユーザデバイス108上のダイアログプロセス302内のまたはダイアログプロセス302とともに含まれるテキスト表示および/またはグラフ表示310は、ルートノード状態から特定の子ノード状態(たとえば、「QM」)にトラバースされたノード状態に対応する、入力要求のセット(たとえば、ダイアログプロセスからユーザへの質問)と、それぞれの入力応答(たとえば、サーバによってダイアログプロセスに提供される答え)とを提示し得る。他の実装形態では、子ノード状態の入力要求のみがユーザデバイスに提供される。
【００３９】
いくつかの実装形態では、入力要求および/入力応答のセット310を提供することは、ユーザデバイス108上で、入力要求および/または入力応答のセット310の概要を表示することを含み得る。概要は、特定の子ノード状態におけるダイアログプロセス302とともにまたはその一部として提供される関連情報をユーザデバイス108のユーザに提示することを含むことができる。たとえば、入力要求「飛行機でどこに行きたいですか」、「目的地でホテルを予約する必要がありますか」、および「目的地でレンタカーを予約したいですか」、ならびに提供される対応する入力応答のセット「ハワイ」、「はい」、および「はい」の場合、この情報の概要は「ハワイに行くための航空券を購入し、滞在中にホテルの部屋とレンタカーを予約したいですか?」である。入力要求および/または入力応答のセットに関連する情報を(たとえば、テキストでまたはグラフで)表示する他の方法が使用されてもよい。
【００４０】
インデックス付けされた応答セットからの入力応答
図1A〜図1Bを参照して上記で説明されたように、要求114はダイアログプロセスインデックス110のインデックスキー値への参照を含むURLを含んでもよく、インデックスキー値は、特定の子ノード状態に対するインデックスエントリおよび入力応答のセットを参照する。キー値を使用して、サーバは呼び出し時に、インデックスからの入力応答をフェッチし、応答をダイアログプロセスに提供する。図3Bは、要求324によって特定の子ノード状態におけるダイアログプロセス322をインスタンス化するための例示的なプロセス320のブロック図であり、要求324は、ダイアログプロセスインデックス326のインデックスキー値への参照を含む。いくつかの実装形態では、サーバ104がダイアログプロセスインデックス326を含む。ダイアログプロセスインデックス326は複数のインデックスエントリ(たとえば、NS1、NS2など)を含むことができ、各インデックスエントリは、それぞれのインデックスキー値(たとえば、IK1、IK2など)によってインデックス付けされた特定の子ノード状態と、ダイアログプロセス332にルートノード状態から特定の子ノード状態にトラバースさせる入力応答のセット(たとえば、{A1, A2...AN1}、{A1, A2...AN2}など)とを表す。たとえば、インデックスキーIK1によって表され、特定の子ノード状態NS1に対応するインデックスエントリは、入力応答のセット{A1, A2,...AN1}を含む。
【００４１】
いくつかの実装形態では、要求324は、サーバ328上に記憶された、ダイアログプロセスインデックス326に対応するインデックスキー値を含む、ダイアログプロセスの特定の子ノード状態を指定する参照を含み得る。たとえば、ダイアログプロセスの特定の子ノード状態「M」(たとえば、ノード状態M(NSM))に対するインデックスエントリは、インデックスキー値「IKM」と、ダイアログプロセス332にルートノード状態から特定の子ノード状態「M」にトラバースさせることになる入力応答のセット330{A1, A2,...ANN}とを含み得る。より具体的には、ダイアログプロセス内の各ノードは、インデックスエントリに対応してもよく、記録された値は、インデックスエントリによってインデックス付けされた、ルートノード状態から特定の子ノード状態にトラバースするための応答であってもよい。たとえば、図1Aの階層の場合、ノードN12に対するインデックスエントリは値{A01}を含んでもよい。同様に、ノードN23に対するインデックスエントリの場合、値は{A01};{A121}であってもよく、以下同様である。
【００４２】
ダイアログプロセスインデックス326は、ダイアログプロセスオーサーによって提供されてもよく、または自動化されたプロセスによって生成されてもよい。たとえば、上記で説明されたように、仮想マシンは、「ダイアログマップ」を生成するようにプログラムされてもよい。次いで、ダイアログマップは、インデックスを生成するために使用されてもよい。
【００４３】
サーバ328は、要求324を受信し、ダイアログプロセスインデックス326からインデックスキー値を使用することによって、インデックスキー値によって表される特定の子ノード状態インデックスエントリにアクセスする。インデックスエントリNSMから、サーバは入力応答のセット330を取り出し得る。たとえば、インデックスキー値「IKM」の場合、入力応答のセット330{A1, A2,...ANN}がサーバ328によって取り出され得る。
【００４４】
次いで、サーバ328は、図3Aを参照して論じられた方法と同様の方法で、ルートノード状態におけるダイアログプロセス332をインスタンス化し、ダイアログプロセス332にルートノード状態から特定の子ノード状態「M」にトラバースさせる入力応答のセット330をダイアログプロセス332に提供し得る。次いで、特定の子ノード状態「M」におけるダイアログプロセス322をユーザデバイスにおいて表示させるデータがユーザデバイス108に提供される。
【００４５】
リソース命令からの入力応答
いくつかの実装形態では、図1A〜図1Bを参照して論じられたように、要求114はリソース112への参照を含むURLを含んでもよく、リソース(たとえば、ウェブページ)は、実行されると、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供する情報および命令、たとえば、スクリプトを含む。図3Cは、命令348を含むリソース346を参照する要求344によって特定の子ノード状態におけるダイアログプロセス342をインスタンス化するための例示的なプロセス340のブロック図である。リソースに含まれる情報348は、特定の子ノード状態に達するまで別のノード状態にトラバースするためにダイアログプロセスの入力要求に応答して提供され得る複数の入力応答を含み得る。特定の子ノード状態が達成されると、サーバは、スクリプトによって命令されたとおりに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセス342を提示させるデータを提供する。
【００４６】
いくつかの実装形態では、情報348は、タスクの実行を自動化するランタイム環境用に書かれたスクリプトである。スクリプトは、スクリプト言語(たとえば、PerlまたはPython)を使用して書かれてもよい。たとえば、情報348は、ルートノード状態における新しいダイアログプロセスを生成することと、ダイアログプロセスの入力要求(たとえば、{Q1, Q2,...QN})に応答して、入力応答のセット(たとえば、{A1, A2,...ANN})をダイアログプロセスに提供することとを含む、実行可能タスクを含んでもよい。
【００４７】
いくつかの実装形態では、ダイアログプロセスの各ノード状態に対して異なるURLが使用され、各要求344の情報348は、ダイアログプロセスにダイアログプロセスの特定の子ノード状態にトラバースさせる命令でカスタマイズされる。たとえば、特定の子ノード状態「M」に対する要求344は、情報348を含むリソースへのURL参照から生成されてもよく、情報348は、ダイアログプロセスにルートノード状態から特定の子ノード状態「M」にトラバースさせるスクリプトである。特定の子ノード状態「Q」に対する異なる要求344は、ダイアログプロセスにルートノード状態から特定の子ノード状態「Q」にトラバースさせる異なる情報を含む異なるリソースへの異なるURL参照から生成されてもよい。
【００４８】
ノード状態の選択
ダイアログプロセスオーナーがダイアログプロセスを用いてユーザを特定のフィーチャに触れさせることを望むとき、ダイアログプロセスオーナーは、選択されると、ルートノード状態におけるダイアログプロセスをインスタンス化し、ダイアログプロセスにルートノード状態から特定の子ノード状態に自動的にトラバースさせるリンクを有するリソースを作成してもよい。
【００４９】
他の実装形態では、ダイアログプロセスの特定の子ノード状態に対する要求は、ユーザ検索履歴および/またはユーザデバイス108のユーザの閲覧履歴に部分的に基づく。たとえば、サーバは、たとえば、キーワードおよびトピックに基づいて現在のユーザの興味を決定するために、ユーザデバイスの現在のセッションデータを使用してもよい。たとえば、旅行代理店のウェブサイトは、ユーザがハワイへ旅行することに興味があると決定し、旅行代理店のチャットボットをインスタンス化するためのコンテンツアイテムをサービスしてもよい。しかしながら、ハワイに固有のチャットボット、たとえば、「ハワイ向けの特別旅行があります。これらについて知りたいですか?」におけるノード状態に到達するためにユーザが複数の応答を入力することを必要とする代わりに、チャットボットは、上記で説明されたプロセスのうちの1つ(または複数)を使用することによって、ルートノード状態においてインスタンス化され、この特定の子ノード状態に自動的にトラバースさせられる。例示するために、図1Aがチャットボットのためのインデックス内の情報を示し、所望の子ノード状態がN33であると仮定する。レコードは以下の形態であり得る。
【００５０】
【表１】
2020518075.tif 000003
【００５１】
ユーザの興味がハワイへ国内旅行することであると決定されたとすると、ユーザは、ハワイへの国内旅行がユーザの現在の興味であることを示す興味ベクトルを有する可能性がある。したがって、チャットボットのすべての他のノードよりも高い関連度スコアを有するものとしてノードN33が選択され得る。関連度スコアは、ユーザの現在の興味ベクトルの単語に対する質問フィールドおよび応答パスフィールドの単語のコサイン類似度によってなど、任意の適切なスコアリングアルゴリズムによって決定され得る。したがって、チャットボット用に生成され、ユーザデバイスにサービスされるリンクは、リンクがユーザによって選択された場合にインスタンス化されると、チャットボットに、以下の質問に対する以下の応答を入力として消費させる。
【００５２】
【表２】
2020518075.tif 000004
【００５３】
次いで、ユーザが「予約する」、「国内」、および「ハワイ」の応答を入力する必要なしに、特定の子ノード状態におけるダイアログプロセスがユーザデバイスにおいて提示される。
【００５４】
追加の実装形態の詳細
ここで論じられるシステムがユーザについての個人情報を収集するか、または個人情報を利用し得る状況において、ユーザは、アプリケーションまたはフィーチャがユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの選好、またはユーザの現在のロケーションについての情報)を収集するかどうかを制御する機会、あるいはユーザにより関連があり得るコンテンツを受信するかどうかおよび/またはそのコンテンツをどのように受信するかを制御する機会を提供され得る。加えて、一定のデータは、個人を特定できる情報が削除されるように、記憶されるかまたは使用される前に1つまたは複数の方法で取り扱われてもよい。たとえば、ユーザの識別情報は、ユーザについて個人を特定できる情報を割り出すことができないように取り扱われてもよく、またはユーザの地理的ロケーションは、ユーザの特定のロケーションを割り出すことができないように、ロケーション情報が取得される場合に(都市、ZIPコード、または州レベルなどに)一般化されてもよい。したがって、ユーザは、どのようにユーザについての情報が収集され、コンテンツサーバによって使用されるかを制御することができる。
【００５５】
本明細書で説明される主題および動作の実施形態は、デジタル電子回路において、または本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。
【００５６】
コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号において符号化されたコンピュータプログラム命令の送信元または宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
【００５７】
本明細書で説明される動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたデータまたは他の送信元から受信されたデータに対してデータ処理装置によって実施される動作として実装され得る。
【００５８】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記のうちの複数もしくはそれらの組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００５９】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれ得、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分に、当該のプログラムに専用の単一のファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に配置されるか、もしくは複数の場所にわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【００６０】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによってアクションを実施するために1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラマブルプロセッサによって実施され得る。プロセスおよび論理フローはまた、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施され得、装置はまた、それらとして実装され得る。
【００６１】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、あるいはそれらからデータを受信するかもしくはそれらにデータを転送するかまたはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスクと、光磁気ディスクと、CD ROMディスクおよびDVD-ROMディスクとを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはその中に組み込まれ得る。
【００６２】
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタと、ユーザが入力をコンピュータに提供することができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールとを有するコンピュータ上で実装され得る。ユーザとの対話を提供するために、他の種類のデバイスも使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ユーザのユーザデバイス上のウェブブラウザから受信された要求に応答して、そのウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【００６３】
本明細書で説明される主題の実施形態は、たとえば、データサーバとしてのバックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、たとえば、ユーザが本明細書で説明される主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するユーザコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【００６４】
コンピューティングシステムは、ユーザおよびサーバを含むことができる。ユーザおよびサーバは、一般に互いから離れており、典型的には通信ネットワークを通じて対話する。ユーザとサーバの関係は、それぞれのコンピュータ上で動作し、互いとのユーザ-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、データをユーザデバイスに表示し、ユーザデバイスと対話するユーザからのユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてユーザデバイスから受信され得る。
【００６５】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、特許請求され得るものの任意の特徴の範囲に対する制限として解釈されるべきではなく、むしろ特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明される一定の特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々にまたは任意の適切な副組合せで実装され得る。さらに、特徴は一定の組合せで機能するものとして上記で説明され、最初はそのように特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されることがあり、特許請求される組合せは、副組合せまたは副組合せの変形形態を対象としてもよい。
【００６６】
同様に、動作は特定の順序で図面に示されているが、これは、そのような動作が示された特定の順序でまたは逐次的な順序で実施されること、または望ましい結果を達成するためにすべての例示された動作が実施されることを必要とするものとして理解されるべきではない。一定の状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上記で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージされ得ることが理解されるべきである。
【００６７】
このようにして、主題の特定の実施形態について説明した。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲において列挙されるアクションは、異なる順序で実施され、依然として望ましい結果を達成することができる。加えて、添付の図に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。一定の実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００６８】
100  環境
102  コンピュータネットワーク、ネットワーク
104  サーバコンピュータ、サーバ
106  ダイアログプロセス
106a  ダイアログプロセス
107  ユーザ環境
108  ユーザデバイス
110  ダイアログプロセスインデックス
112  リソース
114  リンク、要求命令
200  プロセス
300  プロセス
302  特定の子ノード状態
304  要求、URL
306  サーバ
308  ダイアログプロセス
310  入力応答のセット、テキスト表示および/またはグラフ表示
320  プロセス
322  ダイアログプロセス
324  要求
326  ダイアログプロセスインデックス
328  サーバ
330  入力応答のセット
332  ダイアログプロセス
340  プロセス
342  ダイアログプロセス
344  要求
346  リソース
348  命令、情報
【図１Ａ】
2020518075.tif 000005
【図１Ｂ】
2020518075.tif 000006
【図２】
2020518075.tif 000007
【図３Ａ】
2020518075.tif 000008
【図３Ｂ】
2020518075.tif 000009
【図３Ｃ】
2020518075.tif 000010
【手続補正書】
【提出日】令和1年11月25日(2019.11.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記要求はリンクを選択することによって生成され、前記ダイアログプロセスは複数のノード状態を定義し、前記ノード状態はルートノード状態および子ノード状態を含み、
各子ノード状態は別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態は、入力要求と、前記入力要求に応答して受信された入力応答を処理するための入力応答処理ルールとを指定し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択する、ステップと、
前記サーバコンピュータによって、前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記サーバコンピュータによって、前記ダイアログプロセスに、前記選択されたリンクに基づいて前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答は入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記サーバコンピュータによって、前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含む、コンピュータ実装方法。
【請求項２】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、ダイアログプロセスインデックスのインデックスキー値を含み、前記ダイアログプロセスインデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記ダイアログプロセスへの前記複数の入力応答を提供するステップは、
前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスするステップと、
前記ダイアログプロセスインデックスから前記入力応答のセットを取り出すステップと、
前記ダイアログプロセスに前記入力応答のセットを提供するステップと
を含む、請求項2に記載のコンピュータ実装方法。
【請求項４】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる前記複数の入力応答を含む、請求項1に記載のコンピュータ実装方法。
【請求項５】
前記要求は、クエリパラメータとしての前記入力応答のセットを含むユニフォームリソースロケータによって指定される、請求項4に記載のコンピュータ実装方法。
【請求項６】
前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定される、請求項1に記載のコンピュータ実装方法。
【請求項７】
前記命令は、前記複数の入力応答を指定する、請求項6に記載のコンピュータ実装方法。
【請求項８】
前記複数の入力応答のうちの各入力応答は、前記ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴に部分的に基づく、請求項1から8のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ閲覧履歴に部分的に基づく、請求項1から9のいずれか一項に記載のコンピュータ実装方法。
【請求項１１】
データ処理装置と、
前記データ処理装置によって実行可能であり、実行時に、前記データ処理装置に、
ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記要求がリンクを選択することによって生成され、前記ダイアログプロセスが複数のノード状態を定義し、前記ノード状態がルートノード状態および子ノード状態を含み、
各子ノード状態が別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態が、入力要求と、前記入力要求に応答して受信された入力応答を処理するための入力応答処理ルールとを指定し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択する、ステップと、
前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記ダイアログプロセスに、前記選択されたリンクに基づいて前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答が入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含む動作を実施させる命令を記憶するコンピュータ可読媒体と
を備えるシステム。
【請求項１２】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、ダイアログプロセスインデックスのインデックスキー値を含み、前記ダイアログプロセスインデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、請求項11に記載のシステム。
【請求項１３】
前記ダイアログプロセスへの前記複数の入力応答を提供するステップは、
前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスするステップと、
前記ダイアログプロセスインデックスから前記入力応答のセットを取り出すステップと
前記ダイアログプロセスに前記入力応答のセットを提供するステップと
を含む、請求項12に記載のシステム。
【請求項１４】
前記ダイアログプロセスの前記特定の子ノード状態を指定する前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる前記複数の入力応答を含む、請求項11に記載のシステム。
【請求項１５】
前記要求は、クエリパラメータとしての前記入力応答のセットを含むユニフォームリソースロケータによって指定される、請求項14に記載のシステム。
【請求項１６】
前記要求は、前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定される、請求項11に記載のシステム。
【請求項１７】
前記命令は、前記複数の入力応答を指定する、請求項16に記載のシステム。
【請求項１８】
前記複数の入力応答のうちの各入力応答が、前記ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む、請求項11から17のいずれか一項に記載のシステム。
【請求項１９】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴および/またはユーザ閲覧履歴に部分的に基づく、請求項11から18のいずれか一項に記載のシステム。
【請求項２０】
1つまたは複数のサーバコンピュータによって実行可能であり、実行時に、前記1つまたは複数のサーバコンピュータに、
前記1つまたは複数のサーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するステップであって、前記要求がリンクを選択することによって生成され、前記ダイアログプロセスが複数のノード状態を定義し、前記ノード状態がルートノード状態および子ノード状態を含み、
各子ノード状態が別の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
各ノード状態が、入力要求と、前記入力要求に応答して受信された入力応答を処理するための入力応答処理ルールとを指定し、前記入力応答に基づいて、前記ノード状態から下りる前記子ノード状態のうちの1つを選択する、ステップと、
前記1つまたは複数のサーバコンピュータによって、前記特定の子ノード状態を指定する前記要求に応答して、前記ルートノード状態における前記ダイアログプロセスをインスタンス化するステップと、
前記1つまたは複数のサーバコンピュータによって、前記ダイアログプロセスに、前記選択されたリンクに基づいて前記ダイアログプロセスへの複数の入力応答を提供するステップであって、各入力応答が入力要求に応答して提供され、前記提供された入力応答のうちの最初の入力応答が、前記ルートノード状態の前記入力要求に対して提供され、前記提供された入力応答のうちの最後の入力応答が、前記特定の子ノード状態の親であるノード状態の前記入力要求に対して提供され、前記ダイアログプロセスに前記特定の子ノード状態を選択させる、ステップと、
前記1つまたは複数のサーバコンピュータによって、前記ユーザデバイスに、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提供するステップと
を含む動作を実施させる命令を記憶するコンピュータ記憶媒体。
【国際調査報告】
2020518075.tif 000011
2020518075.tif 000012