IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7448573特定の子ノード状態におけるダイアログプロセスのインスタンス化
<>
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図1A
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図1B
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図2
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図3A
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図3B
  • 特許-特定の子ノード状態におけるダイアログプロセスのインスタンス化 図3C
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】特定の子ノード状態におけるダイアログプロセスのインスタンス化
(51)【国際特許分類】
   G06F 16/90 20190101AFI20240305BHJP
   G06F 16/28 20190101ALI20240305BHJP
   G06F 16/9035 20190101ALI20240305BHJP
   H04L 51/04 20220101ALI20240305BHJP
   H04L 67/00 20220101ALI20240305BHJP
【FI】
G06F16/90 100
G06F16/28
G06F16/9035
H04L51/04
H04L67/00
【請求項の数】 13
【外国語出願】
(21)【出願番号】P 2022007951
(22)【出願日】2022-01-21
(62)【分割の表示】P 2019558465の分割
【原出願日】2017-12-20
(65)【公開番号】P2022062097
(43)【公開日】2022-04-19
【審査請求日】2022-02-18
(31)【優先権主張番号】15/497,843
(32)【優先日】2017-04-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】アレックス・ダニエル・ジェイコブソン
【審査官】成瀬 博之
(56)【参考文献】
【文献】特表2015-526799(JP,A)
【文献】特開2002-073887(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
H04L 51/04
H04L 67/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のプロセッサによって実装される方法であって、前記方法は、
ダイアログプロセスについてのダイアログマップを自動的に生成するステップであって、
前記ダイアログプロセスは、複数のノード状態を定義し、
前記ノード状態は、ルートノード状態および子ノード状態を含み、
各子ノード状態は、他の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
前記ダイアログマップは、前記ダイアログプロセスの階層を記述し、
前記階層は、前記ダイアログプロセス内の前記複数のノード状態の関係を表す、ステップと、
前記ダイアログマップを自動的に生成するステップに続き、
サーバコンピュータにおいて、ユーザのユーザデバイスから、前記ダイアログプロセスの前記子ノード状態の特定の子ノード状態を指定しインデックスのインデックスキー値を含む要求を受信するステップと、
記要求を受信したことに応答して、
前記サーバコンピュータによって、前記ルートノード状態において前記ダイアログプロセスをインスタンス化するステップと、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップであって、
前記特定の子ノード状態へトラバースする前に、前記子ノード状態の中間子ノード状態に到達するために前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とすることなく、前記中間子ノード状態へトラバースすることであって、前記特定の子ノード状態は、前記中間子ノード状態から下りる、ことと、
前記特定の子ノード状態に到達するために、前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とせずに、前記中間子ノード状態から前記特定の子ノード状態へトラバースすることと、を含む、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップと、
前記サーバコンピュータによって、前記ユーザデバイスへ、前記ユーザへの提示のために、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提示するステップと、
前記ダイアログマップに基づいて前記インデックスを生成するステップであって、
前記インデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、ステップとを含み、
前記ダイアログマップを自動的に生成するステップは、
前記ノード状態の各々に対する入力要求を解釈するため、および前記ダイアログプロセスに入力応答を提供するために仮想マシンを使用することを含み、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップは、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースする際に、前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスし、前記インデックスから前記入力応答のセットを取り出し、前記ダイアログプロセスに前記入力応答のセットを提供すること
を含む、方法。
【請求項2】
各ノード状態は、前記ダイアログプロセスによって出力された入力要求、および前記入力要求に応答して受信された入力応答を処理するための入力応答処理ルールを指定する、請求項1に記載の方法。
【請求項3】
前記入力応答処理ルールは、前記受信された入力応答を前記ノード状態がどのように処理するかを決定し、前記入力応答に基づいて、前記入力応答に応じて前記ノード状態から下りる前記子ノード状態のうちの1つを選択する、請求項2に記載の方法。
【請求項4】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴に部分的に基づいて前記ユーザの興味を決定するスコアリングアルゴリズムによって生成される、請求項1に記載の方法。
【請求項5】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ閲覧履歴に部分的に基づいて前記ユーザの興味を決定するスコアリングアルゴリズムによって生成される、請求項1に記載の方法。
【請求項6】
前記中間子ノード状態から前記特定の子ノード状態へトラバースするステップは、
前記ダイアログプロセスに、前記要求において指定される前記特定の子ノード状態に基づいて選択される特定の入力応答を提供することを含む、
請求項1に記載の方法。
【請求項7】
データ処理装置と、
前記データ処理装置によって実行可能であり、そのような実行時に、前記データ処理装置に、
ダイアログプロセスについてのダイアログマップを自動的に生成するステップであって、
前記ダイアログプロセスは、複数のノード状態を定義し、
前記ノード状態は、ルートノード状態および子ノード状態を含み、
各子ノード状態は、他の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
前記ダイアログマップは、前記ダイアログプロセスの階層を記述し、
前記階層は、前記ダイアログプロセス内の前記複数のノード状態の関係を表す、
ステップと、
前記ダイアログマップを自動的に生成するステップに続き、
ユーザのユーザデバイスから、前記ダイアログプロセスの前記子ノード状態の特定の子ノード状態を指定しインデックスのインデックスキー値を含む要求を受信するステップと、
記要求を受信したことに応答して、
前記ルートノード状態において前記ダイアログプロセスをインスタンス化するステップと、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップであって、
前記特定の子ノード状態へトラバースする前に、前記子ノード状態の中間子ノード状態に到達するために前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とすることなく、前記中間子ノード状態へトラバースすることであって、前記特定の子ノード状態は、前記中間子ノード状態から下りる、ことと、
前記特定の子ノード状態に到達するために、前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とせずに、前記中間子ノード状態から前記特定の子ノード状態へトラバースすることと、を含む、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップと、
前記ユーザデバイスへ、前記ユーザへの提示のために、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提示するステップと、
前記ダイアログマップに基づいて前記インデックスを生成するステップであって、
前記インデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、ステップと、
を含み、
前記ダイアログマップを自動的に生成するステップは、
前記ノード状態の各々に対する入力要求を解釈するため、および前記ダイアログプロセスに入力応答を提供するために仮想マシンを使用することを含み、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップは、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースする際に、前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスし、前記インデックスから前記入力応答のセットを取り出し、前記ダイアログプロセスに前記入力応答のセットを提供することを含む動作を実施させる命令を記憶するコンピュータ可読媒体と
を備えるシステム。
【請求項8】
各ノード状態は、前記ダイアログプロセスによって出力された入力要求、および前記入力要求に応答して受信された入力応答を処理するための入力応答処理ルールを指定する、請求項7に記載のシステム。
【請求項9】
前記入力応答処理ルールは、前記受信された入力応答を前記ノード状態がどのように処理するかを決定し、前記入力応答に基づいて、前記入力応答に応じて前記ノード状態から下りる前記子ノード状態のうちの1つを選択する、請求項8に記載のシステム。
【請求項10】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ検索履歴に部分的に基づいて前記ユーザの興味を決定するスコアリングアルゴリズムによって生成される、請求項7に記載のシステム。
【請求項11】
前記ダイアログプロセスの特定の子ノード状態を指定する前記要求は、ユーザ閲覧履歴に部分的に基づいて前記ユーザの興味を決定するスコアリングアルゴリズムによって生成される、請求項7に記載のシステム。
【請求項12】
前記中間子ノード状態から前記特定の子ノード状態へトラバースするステップは、
前記ダイアログプロセスに、前記要求において指定される前記特定の子ノード状態に基づいて選択される特定の入力応答を提供することを含む、請求項7に記載のシステム。
【請求項13】
データ処理装置によって実行可能であり、そのような実行時に、前記データ処理装置に、
ダイアログプロセスについてのダイアログマップを自動的に生成するステップであって、
前記ダイアログマップは、前記ダイアログプロセスの階層を記述し、
前記ダイアログプロセスは、複数のノード状態を定義し、
前記ノード状態は、ルートノード状態および子ノード状態を含み、
各子ノード状態は、他の子ノード状態または前記ルートノード状態のうちの少なくとも1つから下り、
前記ダイアログマップは、前記ダイアログプロセスの階層を記述し、
前記階層は、前記ダイアログプロセス内の前記複数のノード状態の関係を表す、
ステップと、
前記ダイアログマップを自動的に生成するステップに続き、
サーバコンピュータにおいて、ユーザのユーザデバイスから、前記ダイアログプロセスの前記子ノード状態の特定の子ノード状態を指定しインデックスのインデックスキー値を含む要求を受信するステップと、
記要求を受信したことに応答して、
前記サーバコンピュータによって、前記ルートノード状態において前記ダイアログプロセスをインスタンス化するステップと、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップであって、
前記特定の子ノード状態へトラバースする前に、前記子ノード状態の中間子ノード状態に到達するために前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とすることなく、前記中間子ノード状態へトラバースすることであって、前記特定の子ノード状態は、前記中間子ノード状態から下りる、ことと、
前記特定の子ノード状態に到達するために、前記ユーザデバイスの前記ユーザから前記要求以外にいかなるユーザ入力も必要とせずに、前記中間子ノード状態から前記特定の子ノード状態へトラバースすることと、を含む、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップと、
前記サーバコンピュータによって、前記ユーザデバイスへ、前記ユーザへの提示のために、前記ユーザデバイスに前記特定の子ノード状態における前記ダイアログプロセスを提示させるデータを提示するステップと、
前記ダイアログマップに基づいて前記インデックスを生成するステップであって、
前記インデックスは、各インデックスエントリについて、
それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、
前記ダイアログプロセスに前記ルートノード状態から前記特定の子ノード状態にトラバースさせる入力応答のセットと
を指定する、ステップとを含み、
前記ダイアログマップを自動的に生成するステップは、
前記ノード状態の各々に対する入力要求を解釈するため、および前記ダイアログプロセスに入力応答を提供するために仮想マシンを使用することを含み、
前記ダイアログマップに基づいて、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースするステップは、前記ルートノード状態から前記特定の子ノード状態へ自動的にトラバースする際に、前記要求の前記インデックスキー値によってインデックス付けされた前記特定の子ノード状態エントリにアクセスし、前記インデックスから前記入力応答のセットを取り出し、前記ダイアログプロセスに前記入力応答のセットを提供する、こと
を含む動作を実施させる命令を記憶するコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特定の子ノード状態におけるダイアログプロセスのインスタンス化に関する。
【背景技術】
【0002】
ダイアログプロセスは、コンピュータデバイスによって実行されると、人間のユーザとの会話をシミュレートするコンピュータプログラム、スクリプト、または任意の他の命令のセットである。これらのシミュレートされた会話を通じて、ダイアログプロセスは広範囲の自動化された支援をユーザに提供する。ダイアログプロセスは、しばしば、複数のノード状態を有する状態機械またはグラフプロセスによって実装される。各状態は、ユーザからの1つまたは複数の入力を求め、入力に応じて、別のノード状態にトラバースするかまたは特定のアクションを取る。
【0003】
「チャットボット」と呼ばれることもあるダイアログプロセスは、メッセージングプラットフォーム、エンターテインメントウェブサイトの一部として、また顧客サービスのために広く使用されている。しばしば、ダイアログプロセス開発者は、ユーザがダイアログプロセスの特定のノード状態に導かれることを望む場合がある。たとえば、ユーザが旅行の計画を立てるのを助けるチャットボットを書いた開発者が、ユーザがホテルの部屋の予約を比較するのを助ける新しい機能をチャットボットに追加したと仮定する。開発者は、ユーザをこの機能に触れさせたいと思う。しかしながら、そうするためには、ユーザは、新しい機能に触れるために、初期状態から1つまたは複数のチャットボット状態をトラバースしなければならない。したがって、ユーザが、新しい機能に触れられる特定のノード状態に達するために必要な応答を手動で入力するように指示され(次いで、指示に従い、実際に必要な応答を手動で入力し)ない限り、または、開発者が、新しい機能を強調する新しいチャットボット(これは顧客のコードベースを増加させ、ユーザを失うリスクがある)を作成しない限り、ユーザの多くは新しい機能に触れることがない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本明細書は、チャットボットなどのダイアログプロセスの特定のサブルーチンへのディープリンクをユーザに提供することに関する技術について説明する(「ディープリンク」とは、特定のサブルーチンに向けられたリンクである)。
【課題を解決するための手段】
【0005】
一般に、本明細書で説明される主題の1つの革新的な態様は、サーバコンピュータにおいて、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するアクションであって、ダイアログプロセスは複数のノード状態を定義し、ノード状態はルートノード状態および子ノード状態を含み、各子ノード状態は別の子ノード状態またはルートノード状態のうちの少なくとも1つから下り、各ノード状態は、入力要求と、入力要求に応答して受信された入力応答を処理し、入力応答に基づいて、ノード状態から下りる子ノード状態のうちの1つを選択するための入力応答処理ルールとを指定する、アクションを含む方法において具現化され得る。サーバコンピュータは、特定の子ノード状態を指定する要求に応答して、ルートノード状態におけるダイアログプロセスをインスタンス化する。ダイアログプロセスへの複数の入力応答が提供され、各入力応答は入力要求に対する応答であり、提供された入力応答のうちの最初の入力応答が、ルートノード状態の入力要求に対して提供され、提供された入力応答のうちの最後の入力応答が、特定の子ノード状態の親であるノード状態の入力要求に対して提供され、ダイアログプロセスに特定の子ノード状態を選択させる。次いで、サーバコンピュータは、ユーザデバイスに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセスを提示させるデータを提供する。この態様の他の実施形態は、対応するシステムと、装置と、コンピュータ記憶デバイス上に符号化された、方法のアクションを実施するように構成されたコンピュータプログラムとを含む。たとえば、本明細書で説明される主題の別の革新的な態様は、1つまたは複数のサーバコンピュータを有するデータ処理装置によって実行可能であり、そのような実行時に、データ処理装置に本明細書で説明される主題の任意の態様または実装形態による方法を含む動作を実施させる命令を記憶するコンピュータ記憶媒体(非一時的コンピュータ記憶媒体であり得るが、この態様はこれに限定されない)において具現化され得る。
【0006】
本明細書で説明される主題の別の革新的な態様は、ユーザデバイスから、ダイアログプロセスの特定の子ノード状態を指定する要求を受信するサーバコンピュータを含むシステムにおいて具現化され得、ダイアログプロセスは複数のノード状態を定義し、ノード状態はルートノード状態および子ノード状態を含み、各子ノード状態は別の子ノード状態またはルートノード状態のうちの少なくとも1つから下り、各ノード状態は、入力要求と、入力要求に応答して受信された入力応答を処理するための入力応答処理ルールとを指定し、入力応答に基づいて、ノード状態から下りる子ノード状態のうちの1つを選択する。システムは、特定の子ノード状態を指定する要求に応答して、ルートノード状態におけるダイアログプロセスをインスタンス化するための手段と、サーバコンピュータによって、ダイアログプロセスに、ダイアログプロセスへの複数の入力応答を提供するための(または、サーバコンピュータに、ダイアログプロセスに提供するようにユーザデバイスなどの別のデバイスに命令させるための)手段であって、各入力応答は入力要求への応答として提供され、提供された入力応答のうちの最初の入力応答が、ルートノード状態の入力要求に対して提供され、提供された入力応答のうちの最後の入力応答が、特定の子ノード状態の親であるノード状態の入力要求に対して提供され、ダイアログプロセスに特定の子ノード状態を選択させる、手段とを含む。サーバコンピュータは、ユーザデバイスに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセスを提示させるデータを提供する。本明細書で説明される主題の別の革新的な態様は、データ処理装置と、データ処理装置によって実行可能であり、そのような実行時に、データ処理装置に、本明細書で説明される主題の任意の態様または実装形態による方法を含む動作を実施させる命令を記憶するコンピュータ可読媒体(非一時的コンピュータ記憶媒体であり得るが、この態様はこれに限定されない)とを備えるシステムにおいて具現化され得る。
【0007】
これらの実施形態および他の実施形態はそれぞれ、以下の特徴のうちの1つまたは複数を任意選択で含むことができる。いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ダイアログプロセスインデックスのインデックスキー値を含み、ダイアログプロセスインデックスは、各インデックスエントリについて、それぞれのインデックスキー値によってインデックス付けされた特定の子ノード状態エントリと、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる入力応答のセットとを指定する。ダイアログプロセスへの複数の入力応答を提供することは、要求のインデックスキー値によってインデックス付けされた特定の子ノード状態エントリにアクセスすることと、ダイアログプロセスインデックスから入力応答のセットを取り出すことと、次いで、ダイアログプロセスに入力応答のセットを提供することとを含むことができる。
【0008】
いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる複数の入力応答を含む。要求は、クエリパラメータとしての入力応答のセットを含むユニフォームリソースロケータによって指定され得る。
【0009】
いくつかの実装形態では、要求は、ダイアログプロセスにルートノード状態から特定の子ノード状態にトラバースさせる命令を含むリソースを参照する特定のユニフォームリソース識別子によって指定され、命令は、複数の入力応答を指定することができる。
【0010】
いくつかの実装形態では、複数の入力応答のうちの各入力応答は、ダイアログプロセスに別のノード状態にトラバースさせる入力応答を含む。
【0011】
いくつかの実装形態では、ダイアログプロセスの特定の子ノード状態を指定する要求は、ユーザ検索履歴に部分的に基づく。ダイアログプロセスの特定の子ノード状態を指定する要求は、ユーザ閲覧履歴に部分的に基づき得る。
【0012】
本明細書で説明される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装され得る。ユーザは、ダイアログプロセスの特定の子ノード状態へのダイレクトリンク(たとえば、ユニフォームリソース識別子)を提供される。リンクの選択により、ダイアログプロセスがルートノード状態においてインスタンス化する。さらに、リンクは、ダイアログプロセスのルートノード状態から特定の子ノード状態にトラバースするために必要な情報のすべてを含む方法でダイアログプロセスを呼び出させる。ダイアログプロセスに特定の子ノード状態にトラバースさせる情報をダイアログプロセスに提供することによって、システムおよび方法は、特定の子ノード状態に達するためにユーザが任意の応答を入力することを必要とすることなしに、ユーザを特定の子ノード状態の機能に触れさせることを保証する。ユーザが任意の応答を入力する必要、およびダイアログプロセスが入力要求をユーザに提供する必要をなくすことは、ユーザが特定の子ノード状態にリンクするために必要とされるネットワークトラフィックを低減し、かつ/またはユーザが特定の子ノード状態にリンクするのにかかる時間を低減するので、よりリソース効率的なプロセスを提供する。さらに、ダイアログプロセスのためのカスタムコードの必要性がなくなり、その結果、ダイアログプロセスは、ダイアログプロセスの特定の子ノード状態への所望の露出ごとの再プログラミングを必要としない。これは、開発者コードベースを簡略化し、各ダイアログプロセスの特別なコーディングを必要とするシステムに対する柔軟性の追加を実現する。
【0013】
本明細書で説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0014】
図1A】ユーザデバイスのための特定の子ノード状態においてダイアログプロセスが呼び出され得る例示的な環境のブロック図である。
図1B】ダイアログプロセス内のルートノード状態から下りる子ノード状態のサブセットのグラフである。
図2】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための例示的なプロセスの流れ図である。
図3A】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
図3B】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
図3C】特定の子ノード状態におけるダイアログプロセスをインスタンス化するための様々な例示的なシステムプロセスフローのブロック図である。
【発明を実施するための形態】
【0015】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0016】
概要
以下で説明されるのは、たとえば、チャットボットまたは人工会話エンティティといったダイアログプロセスの特定の子ノード状態へのディープリンクをユーザに提供するためのシステムおよび方法である。リンクの選択は、ダイアログプロセスをルートノード状態においてインスタンス化させる。リンクは、ダイアログプロセスをダイアログプロセスの特定の子ノード状態にトラバースするために必要な情報のすべてを含む方法でダイアログプロセスを呼び出させる。ダイアログプロセスを特定の子ノード状態にトラバースするための情報の提供は、いくつかの異なる方法で行われ得る。1つの方法は、たとえば、クエリパラメータの形態の情報でユニフォームリソース識別子を符号化することであり、ダイアログプロセスが呼び出されると、ダイアログプロセスが情報を消費する。別の方法は、情報を含むインデックスを付けるトークンでユニフォームリソース識別子を符号化することによるものであり、情報は呼び出し時にインデックスからフェッチされ、ダイアログプロセスに提供される。また別の方法は、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供するようにプログラムされたスクリプトなどのプロセスにリンクすることによるものである。コンピュータサーバは、ユーザデバイスのユーザによってリンクが選択されることに応答して、ユーザデバイスから特定の子ノード状態におけるダイアログプロセスに対する要求を受信する。
【0017】
ダイアログプロセスは、ルートノード状態および子ノード状態を含む複数のノード状態を有する。ダイアログプロセスの各子ノード状態は、ダイアログプロセスの少なくとも別の子ノード状態またはルートノード状態から下りる。各ノード状態は入力要求および入力応答処理ルールを含み、入力応答処理ルールは、受信された入力応答をノード状態がどのように処理するかを決定し、入力応答に応答して、ノード状態から下りる子ノード状態を選択する。
【0018】
本明細書の態様によれば、特定の子ノード状態におけるダイアログプロセスに対する各要求について、ダイアログプロセスはダイアログプロセスのルートノード状態においてインスタンス化される。リンクの選択に応答して、複数の入力応答がダイアログプロセスに提供される。いくつかの実装形態では、応答はサーバコンピュータによって提供され得るが、他の実装形態では、応答はユーザデバイスによって提供され得る。
【0019】
各入力応答は、入力要求に応答してダイアログプロセスに提供される。たとえば、最初の入力応答は、ダイアログプロセスのルートノード状態の入力要求に対して(それに応答して)提供され、最後の入力応答は、リンクされている先の特定の子ノード状態の親であるノード状態の入力要求に対して(それに応答して)提供される。ルートノード状態に対して提供される応答と特定の子ノード状態の親であるノード状態に対して提供される応答との間に、特定の子ノード状態の深さに応じて、ゼロ以上の中間応答が提供され得る。最後の入力応答を受信すると、ダイアログプロセスは特定の子ノード状態を選択する。
【0020】
いくつかの実装形態では、次いで、ダイアログプロセスは、特定の子ノード状態に達すると、ユーザデバイスにおいて提示される。他の実装形態では、入力応答の各々がダイアログプロセスに提供されると、ダイアログプロセスがユーザデバイスにおいて提示されてもよく、その結果、ユーザは、ダイアログプロセスに特定の子ノード状態にトラバースさせた質問および応答を見ることができる。
【0021】
これらの特徴および追加の特徴は、以下でより詳細に説明される。
【0022】
例示的な動作環境
図1Aは、ユーザデバイスのための特定の子ノード状態においてダイアログプロセスが呼び出され得る例示的な環境100のブロック図である。ローカルエリアネットワーク(LAN)、インターネット、またはそれらの組合せなどのコンピュータネットワーク102は、1つまたは複数のダイアログプロセス106を含むサーバコンピュータ104と、ユーザデバイス108とを接続する。サーバコンピュータ104は、図1Aでは単一のエンティティとして表されるが、直接またはネットワーク102を介して通信している複数の異なるサーバを含むことができる。
【0023】
ユーザデバイス108は、ネットワーク102を介してダイアログプロセス106を要求および受信することが可能な電子デバイスである。例示的なユーザデバイス108は、パーソナルコンピュータと、モバイル通信デバイスと、ネットワーク102を介してデータを送信および受信することができる他のデバイスとを含む。ユーザデバイス108は、典型的には、ネットワーク102を介したダイアログプロセス106を含むデータの送信および受信を容易にするために、ウェブブラウザなどのユーザアプリケーションを含む。ウェブブラウザは、ユーザが、典型的にはワールドワイドウェブまたはローカルエリアネットワーク上のウェブサイトにおけるウェブページ上に配置されたテキスト、画像、ビデオ、音楽および他の情報を表示し、それらと対話することを可能にすることができる。
【0024】
ダイアログプロセスのインスタンス化
ユーザデバイス108は、ダイアログプロセスの特定の子ノード状態へのリンク114(または何らかの他の要求命令114)を含むユーザ環境107を表示してもよい。ユーザ環境107は、たとえば、ウェブページ、ネイティブアプリケーション内のユーザインターフェース、テキストメッセージ環境、または、選択されると、ユーザデバイス108に要求をサーバに送信させる命令が提供され得る任意の他の環境であってもよい。ユーザデバイス108上のユーザは、たとえば、要求命令114を選択することによって、サーバ104からの特定の子ノード状態におけるダイアログプロセス106の提示を要求することができる。各ダイアログプロセス106は、ルートノード状態および子ノード状態を含む複数のノード状態{N1, N2,...NN}を有する。ダイアログプロセス106の各子ノード状態は、別の子ノード状態またはルートノード状態から下りる。各ノード状態は、入力要求(たとえば、質問)と、入力応答(たとえば、答え)を処理するための入力応答処理ルールとを含む。ノード状態の入力要求に応答して提供される特定の入力応答について、ノード状態は、ノード状態から下りる子ノード状態のうちの1つを選択する。
【0025】
ダイアログプロセス内のノード状態の関係が図1Bに例示されており、図1Bはダイアログプロセス内のルートノードN0から下りるノード状態のサブセットのグラフである。ルートノードN0は、入力要求{質問0}と、入力応答を処理するためのルールとを含む。図1Bに示されるように、ルールは2つの決定、すなわち、子ノードN11にトラバースするA01および子ノードN12にトラバースするA02に解決する。たとえば、質問が「新しいホテルの予約を取りたいですか、それとも既存の予約を再検討したいですか?」であると仮定する。A01の分岐は「予約する」に解決する任意の応答または入力であってもよく、A02の分岐は「再検討する」に解決する任意の応答または入力であってもよい。簡潔にするために、また混雑を招くことを避けるために、架空の分岐によって示される他のノード状態は図面から省略されている。
【0026】
子ノード状態N33にトラバースするためには、ダイアログプロセスは、ルートノードN0における質問0に対してA02に解決する入力、子ノードN12における質問12に対してA121に解決する入力、子ノードN23における質問23に対してA231に解決する入力を受信しなければならない。以下で説明されるシステムおよび方法は、ダイアログプロセスがルートノード状態においてインスタンス化し、ルートノード状態から特定の子ノード状態に自動的にトラバースすることを可能にする。
【0027】
上記で説明されたように、ダイアログプロセスにルートノード状態においてインスタンス化させ、特定の子ノード状態に自動的にトラバースさせる3つの例示的な方法が提供される。第1の方法は、情報でユニフォームリソース識別子を符号化することであり、図3Aを参照してより詳細に説明される。第2の方法は、情報を含むインデックスを付けるトークンでユニフォームリソース識別子を符号化することによるものであり、図3Bを参照して説明される。第3の方法は、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供するようにプログラムされたスクリプトなどのプロセスにリンクすることによるものであり、図3Cを参照して説明される。これらの例は網羅的なものではなく、ダイアログプロセスにルートノード状態においてインスタンス化させ、ルートノード状態から特定の子ノード状態に自動的にトラバースさせる他の適切な方法も使用され得る。
【0028】
図2は、特定の子ノード状態におけるダイアログプロセス106aをインスタンス化するための例示的なプロセス200の流れ図である。プロセス200は、サーバコンピュータ104などのコンピュータシステムによって実施され得る。
【0029】
サーバ104は、特定の子ノード状態におけるダイアログプロセス106aをユーザデバイス108に提供するための要求114を受信する(202)。要求は、ユニフォームリソースロケータ(URL)などのユニフォームリソース識別子を選択することによって生成されてもよい。リンクにおいて符号化されるものおよび得られる要求は、ルートノード状態におけるダイアログプロセスをインスタンス化し、ルートノード状態から特定の子ノード状態に自動的にトラバースするためにシステムが使用するインスタンス化プロセスに依存し得る。たとえば、要求114は、クエリパラメータとしての入力応答を含んでもよい。代替的に、要求114はダイアログプロセスインデックス110のインデックスキー値への参照を含んでもよく、インデックスキー値は特定の子ノード状態に対するインデックスエントリおよび入力応答のセットを参照する。また別の代替では、要求はリソースを指してもよく、リソース112(たとえば、ウェブページ)は入力応答のセットに関する命令および情報を含む。これらの異なる要求タイプは、それぞれ、以下の図3A図3Cを参照して説明される。
【0030】
要求114を受信した後、サーバ104はダイアログプロセスのルートノード状態におけるダイアログプロセス106aをインスタンス化する(204)。ダイアログプロセス106aはユーザデバイス108とは別個のサーバ104上の環境でインスタンス化されるが、いくつかの実装形態では、ダイアログプロセス106aは代わりに、たとえば、ユーザデバイス108上の環境でインスタンス化されてもよい。
【0031】
サーバ104は複数の入力応答をダイアログプロセスに提供し、各入力応答は入力要求に応答して提供される(206)。応答の提供は要求タイプに従って行われてもよく、その例は以下の図3A図3Cを参照して説明される。特定の入力応答のセットをダイアログプロセス106aに提供することによって、ダイアログプロセス106aはルートノード状態から特定の子ノード状態にトラバースする。たとえば、航空券予約ダイアログプロセスは、ルートノード状態における入力要求「今日は飛行機でどこに行きますか?」に、対応する入力応答「ホノルル、ハワイ」を提供してもよい。次いで、ダイアログプロセス106aは、入力要求が「搭乗手続きをしたいですか?」であり、考えられる入力応答が「はい」である、子孫の子ノード状態を選択してもよく、特定の子ノード状態に達するまで以下同様である。
【0032】
より具体的には、図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)」であってもよい。
【0033】
ノード状態へのトラバースのための入力応答は、ダイアログプロセスオーサーによって提供されてもよく、または機械学習技法によって発見されてもよい。前者の場合、ダイアログプロセスオーサーは、文字列区切りの応答を特定のノード状態に、たとえば、図1Aのダイアログプロセスに提供してもよく、ノードN33にトラバースするための文字列は{A01};{A121};{A231}であってもよく、ノードに対する任意の{・}は、ノードのためのダイアログプロセス処理ルールに、特定の子ノード状態へのトラバースにおいて必要とされる状態を選択させる英数字値である。後者の場合、仮想マシンが、ダイアログプロセスの各ノード状態に対する入力要求を解釈し、入力応答をダイアログプロセスに提供し、ダイアログプロセスの階層を記述する(サイトマップに類似した)ダイアログプロセス「ダイアログマップ」を学習するようにプログラムされてもよい。
【0034】
ダイアログプロセス106aが特定の子ノード状態にトラバースした後、サーバ104は、ユーザデバイス108に特定の子ノード状態におけるダイアログプロセス106aを提示させるデータをユーザデバイスに提供する(208)。ダイアログプロセス106aは、アプリケーション環境内の新しいウィンドウの形態でユーザデバイス108に提示されてもよく、ダイアログプロセス106aに関連する追加の情報とともに提示されてもよい。
【0035】
リンクにおける入力応答の符号化
図1A図1Bおよび図2を参照して説明されたように、特定の子ノード状態におけるダイアログプロセスをユーザデバイスに提供するために様々な方法が実装され得る。図3Aは、特定の子ノード状態302におけるダイアログプロセスをインスタンス化するための例示的なプロセス300のブロック図である。図3Aでは、要求304は、クエリパラメータとしての入力応答のセットを含むURLから生成される。ダイアログプロセスが呼び出されると、ダイアログプロセスはクエリパラメータに含まれる情報を消費する。
【0036】
たとえば、図3Aでは、入力応答(たとえば、{A1, A2,...AN})はクエリパラメータとしてURLに含まれる。URLは、要求、たとえば、www.example/com/chatbotに応答してダイアログプロセスが呼び出され得るロケーションにリンクする。サーバ306は、URLの選択から生成された要求304を受信し、それに応答して、ダイアログプロセス308のインスタンス化を行う。
【0037】
要求304とともに提供されるクエリパラメータとしての入力応答のセットは、ダイアログプロセス308に提供される。次に、入力応答のセットのうちの各入力応答が、ダイアログプロセス308からの入力要求に応答して提供される。ダイアログプロセス308は、入力要求が呼び出し時にコマンド引き数として提供されるかどうかを決定し、それに応じて、入力要求を処理するようにプログラムされ得る。入力要求が提供されない場合、ダイアログプロセスはI/Oデバイスからの入力を待つ。たとえば、URL304の選択によって生成された要求に応答して、最初の入力応答「A1」が入力要求「Q1」に応答して提供され、2番目の応答が入力要求「Q2」に応答して提供され、最後の入力応答「AN」が入力要求「QN」に応答して提供されるまで以下同様である。ダイアログプロセスが入力応答「AN」を受信すると、ダイアログプロセスは特定の子ノード状態「M」である子孫ノード状態を選択する。
【0038】
次いで、特定の子ノード状態「M」におけるダイアログプロセス302をユーザデバイスにおいて表示させるデータがユーザデバイス108に提供される。いくつかの実装形態では、ダイアログプロセス302のルートノード状態から特定の子ノード状態にトラバースするためにダイアログプロセスに提供される入力要求および/または入力応答のセット310も、ユーザデバイス108のユーザに提供される。このことは、ルートノード状態から子ノード状態への完全な会話コンテキストをユーザに表示することを可能にする。たとえば、ユーザデバイス108上のダイアログプロセス302内のまたはダイアログプロセス302とともに含まれるテキスト表示および/またはグラフ表示310は、ルートノード状態から特定の子ノード状態(たとえば、「QM」)にトラバースされたノード状態に対応する、入力要求のセット(たとえば、ダイアログプロセスからユーザへの質問)と、それぞれの入力応答(たとえば、サーバによってダイアログプロセスに提供される答え)とを提示し得る。他の実装形態では、子ノード状態の入力要求のみがユーザデバイスに提供される。
【0039】
いくつかの実装形態では、入力要求および/入力応答のセット310を提供することは、ユーザデバイス108上で、入力要求および/または入力応答のセット310の概要を表示することを含み得る。概要は、特定の子ノード状態におけるダイアログプロセス302とともにまたはその一部として提供される関連情報をユーザデバイス108のユーザに提示することを含むことができる。たとえば、入力要求「飛行機でどこに行きたいですか」、「目的地でホテルを予約する必要がありますか」、および「目的地でレンタカーを予約したいですか」、ならびに提供される対応する入力応答のセット「ハワイ」、「はい」、および「はい」の場合、この情報の概要は「ハワイに行くための航空券を購入し、滞在中にホテルの部屋とレンタカーを予約したいですか?」である。入力要求および/または入力応答のセットに関連する情報を(たとえば、テキストでまたはグラフで)表示する他の方法が使用されてもよい。
【0040】
インデックス付けされた応答セットからの入力応答
図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}を含む。
【0041】
いくつかの実装形態では、要求324は、サーバ328上に記憶された、ダイアログプロセスインデックス326に対応するインデックスキー値を含む、ダイアログプロセスの特定の子ノード状態を指定する参照を含み得る。たとえば、ダイアログプロセスの特定の子ノード状態「M」(たとえば、ノード状態M(NSM))に対するインデックスエントリは、インデックスキー値「IKM」と、ダイアログプロセス332にルートノード状態から特定の子ノード状態「M」にトラバースさせることになる入力応答のセット330{A1, A2,...ANN}とを含み得る。より具体的には、ダイアログプロセス内の各ノードは、インデックスエントリに対応してもよく、記録された値は、インデックスエントリによってインデックス付けされた、ルートノード状態から特定の子ノード状態にトラバースするための応答であってもよい。たとえば、図1Aの階層の場合、ノードN12に対するインデックスエントリは値{A01}を含んでもよい。同様に、ノードN23に対するインデックスエントリの場合、値は{A01};{A121}であってもよく、以下同様である。
【0042】
ダイアログプロセスインデックス326は、ダイアログプロセスオーサーによって提供されてもよく、または自動化されたプロセスによって生成されてもよい。たとえば、上記で説明されたように、仮想マシンは、「ダイアログマップ」を生成するようにプログラムされてもよい。次いで、ダイアログマップは、インデックスを生成するために使用されてもよい。
【0043】
サーバ328は、要求324を受信し、ダイアログプロセスインデックス326からインデックスキー値を使用することによって、インデックスキー値によって表される特定の子ノード状態インデックスエントリにアクセスする。インデックスエントリNSMから、サーバは入力応答のセット330を取り出し得る。たとえば、インデックスキー値「IKM」の場合、入力応答のセット330{A1, A2,...ANN}がサーバ328によって取り出され得る。
【0044】
次いで、サーバ328は、図3Aを参照して論じられた方法と同様の方法で、ルートノード状態におけるダイアログプロセス332をインスタンス化し、ダイアログプロセス332にルートノード状態から特定の子ノード状態「M」にトラバースさせる入力応答のセット330をダイアログプロセス332に提供し得る。次いで、特定の子ノード状態「M」におけるダイアログプロセス322をユーザデバイスにおいて表示させるデータがユーザデバイス108に提供される。
【0045】
リソース命令からの入力応答
いくつかの実装形態では、図1A図1Bを参照して論じられたように、要求114はリソース112への参照を含むURLを含んでもよく、リソース(たとえば、ウェブページ)は、実行されると、ダイアログプロセスの呼び出し時に情報をダイアログプロセスに提供する情報および命令、たとえば、スクリプトを含む。図3Cは、命令348を含むリソース346を参照する要求344によって特定の子ノード状態におけるダイアログプロセス342をインスタンス化するための例示的なプロセス340のブロック図である。リソースに含まれる情報348は、特定の子ノード状態に達するまで別のノード状態にトラバースするためにダイアログプロセスの入力要求に応答して提供され得る複数の入力応答を含み得る。特定の子ノード状態が達成されると、サーバは、スクリプトによって命令されたとおりに、ユーザデバイスに特定の子ノード状態におけるダイアログプロセス342を提示させるデータを提供する。
【0046】
いくつかの実装形態では、情報348は、タスクの実行を自動化するランタイム環境用に書かれたスクリプトである。スクリプトは、スクリプト言語(たとえば、PerlまたはPython)を使用して書かれてもよい。たとえば、情報348は、ルートノード状態における新しいダイアログプロセスを生成することと、ダイアログプロセスの入力要求(たとえば、{Q1, Q2,...QN})に応答して、入力応答のセット(たとえば、{A1, A2,...ANN})をダイアログプロセスに提供することとを含む、実行可能タスクを含んでもよい。
【0047】
いくつかの実装形態では、ダイアログプロセスの各ノード状態に対して異なるURLが使用され、各要求344の情報348は、ダイアログプロセスにダイアログプロセスの特定の子ノード状態にトラバースさせる命令でカスタマイズされる。たとえば、特定の子ノード状態「M」に対する要求344は、情報348を含むリソースへのURL参照から生成されてもよく、情報348は、ダイアログプロセスにルートノード状態から特定の子ノード状態「M」にトラバースさせるスクリプトである。特定の子ノード状態「Q」に対する異なる要求344は、ダイアログプロセスにルートノード状態から特定の子ノード状態「Q」にトラバースさせる異なる情報を含む異なるリソースへの異なるURL参照から生成されてもよい。
【0048】
ノード状態の選択
ダイアログプロセスオーナーがダイアログプロセスを用いてユーザを特定のフィーチャに触れさせることを望むとき、ダイアログプロセスオーナーは、選択されると、ルートノード状態におけるダイアログプロセスをインスタンス化し、ダイアログプロセスにルートノード状態から特定の子ノード状態に自動的にトラバースさせるリンクを有するリソースを作成してもよい。
【0049】
他の実装形態では、ダイアログプロセスの特定の子ノード状態に対する要求は、ユーザ検索履歴および/またはユーザデバイス108のユーザの閲覧履歴に部分的に基づく。たとえば、サーバは、たとえば、キーワードおよびトピックに基づいて現在のユーザの興味を決定するために、ユーザデバイスの現在のセッションデータを使用してもよい。たとえば、旅行代理店のウェブサイトは、ユーザがハワイへ旅行することに興味があると決定し、旅行代理店のチャットボットをインスタンス化するためのコンテンツアイテムをサービスしてもよい。しかしながら、ハワイに固有のチャットボット、たとえば、「ハワイ向けの特別旅行があります。これらについて知りたいですか?」におけるノード状態に到達するためにユーザが複数の応答を入力することを必要とする代わりに、チャットボットは、上記で説明されたプロセスのうちの1つ(または複数)を使用することによって、ルートノード状態においてインスタンス化され、この特定の子ノード状態に自動的にトラバースさせられる。例示するために、図1Aがチャットボットのためのインデックス内の情報を示し、所望の子ノード状態がN33であると仮定する。レコードは以下の形態であり得る。
【0050】
【表1】
【0051】
ユーザの興味がハワイへ国内旅行することであると決定されたとすると、ユーザは、ハワイへの国内旅行がユーザの現在の興味であることを示す興味ベクトルを有する可能性がある。したがって、チャットボットのすべての他のノードよりも高い関連度スコアを有するものとしてノードN33が選択され得る。関連度スコアは、ユーザの現在の興味ベクトルの単語に対する質問フィールドおよび応答パスフィールドの単語のコサイン類似度によってなど、任意の適切なスコアリングアルゴリズムによって決定され得る。したがって、チャットボット用に生成され、ユーザデバイスにサービスされるリンクは、リンクがユーザによって選択された場合にインスタンス化されると、チャットボットに、以下の質問に対する以下の応答を入力として消費させる。
【0052】
【表2】
【0053】
次いで、ユーザが「予約する」、「国内」、および「ハワイ」の応答を入力する必要なしに、特定の子ノード状態におけるダイアログプロセスがユーザデバイスにおいて提示される。
【0054】
追加の実装形態の詳細
ここで論じられるシステムがユーザについての個人情報を収集するか、または個人情報を利用し得る状況において、ユーザは、アプリケーションまたはフィーチャがユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの選好、またはユーザの現在のロケーションについての情報)を収集するかどうかを制御する機会、あるいはユーザにより関連があり得るコンテンツを受信するかどうかおよび/またはそのコンテンツをどのように受信するかを制御する機会を提供され得る。加えて、一定のデータは、個人を特定できる情報が削除されるように、記憶されるかまたは使用される前に1つまたは複数の方法で取り扱われてもよい。たとえば、ユーザの識別情報は、ユーザについて個人を特定できる情報を割り出すことができないように取り扱われてもよく、またはユーザの地理的ロケーションは、ユーザの特定のロケーションを割り出すことができないように、ロケーション情報が取得される場合に(都市、ZIPコード、または州レベルなどに)一般化されてもよい。したがって、ユーザは、どのようにユーザについての情報が収集され、コンテンツサーバによって使用されるかを制御することができる。
【0055】
本明細書で説明される主題および動作の実施形態は、デジタル電子回路において、または本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。
【0056】
コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号において符号化されたコンピュータプログラム命令の送信元または宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
【0057】
本明細書で説明される動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたデータまたは他の送信元から受信されたデータに対してデータ処理装置によって実施される動作として実装され得る。
【0058】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記のうちの複数もしくはそれらの組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0059】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれ得、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分に、当該のプログラムに専用の単一のファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に配置されるか、もしくは複数の場所にわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【0060】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによってアクションを実施するために1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラマブルプロセッサによって実施され得る。プロセスおよび論理フローはまた、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施され得、装置はまた、それらとして実装され得る。
【0061】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、あるいはそれらからデータを受信するかもしくはそれらにデータを転送するかまたはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスクと、光磁気ディスクと、CD ROMディスクおよびDVD-ROMディスクとを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはその中に組み込まれ得る。
【0062】
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタと、ユーザが入力をコンピュータに提供することができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールとを有するコンピュータ上で実装され得る。ユーザとの対話を提供するために、他の種類のデバイスも使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ユーザのユーザデバイス上のウェブブラウザから受信された要求に応答して、そのウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【0063】
本明細書で説明される主題の実施形態は、たとえば、データサーバとしてのバックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、たとえば、ユーザが本明細書で説明される主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するユーザコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0064】
コンピューティングシステムは、ユーザおよびサーバを含むことができる。ユーザおよびサーバは、一般に互いから離れており、典型的には通信ネットワークを通じて対話する。ユーザとサーバの関係は、それぞれのコンピュータ上で動作し、互いとのユーザ-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、データをユーザデバイスに表示し、ユーザデバイスと対話するユーザからのユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてユーザデバイスから受信され得る。
【0065】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、特許請求され得るものの任意の特徴の範囲に対する制限として解釈されるべきではなく、むしろ特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明される一定の特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々にまたは任意の適切な副組合せで実装され得る。さらに、特徴は一定の組合せで機能するものとして上記で説明され、最初はそのように特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されることがあり、特許請求される組合せは、副組合せまたは副組合せの変形形態を対象としてもよい。
【0066】
同様に、動作は特定の順序で図面に示されているが、これは、そのような動作が示された特定の順序でまたは逐次的な順序で実施されること、または望ましい結果を達成するためにすべての例示された動作が実施されることを必要とするものとして理解されるべきではない。一定の状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上記で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージされ得ることが理解されるべきである。
【0067】
このようにして、主題の特定の実施形態について説明した。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲において列挙されるアクションは、異なる順序で実施され、依然として望ましい結果を達成することができる。加えて、添付の図に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。一定の実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0068】
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 命令、情報
図1A
図1B
図2
図3A
図3B
図3C