(57)【特許請求の範囲】
【請求項１】
ユーザと1つまたは複数のプロセッサによって動作する自動化アシスタントとの間の進行中の人間−コンピュータ間対話の一部として、前記ユーザからの自然言語入力を受信するステップと、
前記自然言語入力を構文解析するための1つまたは複数の文法を選択するステップであって、前記進行中の人間−コンピュータ間対話と関連付けられた文脈的データ構造の一部としてメモリに記憶された1つまたは複数の話題に基づき、前記文脈的データ構造の一部として前記メモリに記憶された各話題が、前記進行中の人間−コンピュータ間対話に対する前記話題の適合性の尺度と関連付けられ、前記文脈的データ構造が、複数のノードおよび前記複数のノードを接続する複数のエッジを含む無向グラフを含み、前記無向グラフの各ノードが、前記文脈的データ構造の一部として記憶された前記1つまたは複数の話題のうちの所与の話題、および前記所与の話題が最後に提起された以降の前記進行中の人間−コンピュータ間対話のやり取りの回数を表し、2つのノードを接続する各エッジが、前記2つのノードによってそれぞれ表される2つの話題間の関連性の尺度を表し、各話題と関連付けられた適合性の尺度が、前記やり取りの回数と前記関連性の尺度に少なくとも部分的に基づいて判定される、ステップと、
1つまたは複数の構文解析を生成するために、前記選択された1つまたは複数の文法に基づいて前記自然言語入力を構文解析するステップと、
前記構文解析の1つまたは複数に基づいて、自然言語応答を生成するステップと、
1つまたは複数の出力デバイスを使用して、前記自然言語応答を前記ユーザに出力するステップと、
前記構文解析の1つまたは複数あるいは前記自然言語応答によって提起された1つまたは複数の話題を識別するステップと、
前記識別された1つまたは複数の話題を前記文脈的データ構造に追加するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記1つまたは複数の文法が複数の文法から選択され、前記複数の文法のそれぞれが1つまたは複数の適用可能な話題と関連して記憶される、請求項1に記載のコンピュータ実施方法。
【請求項３】
前記進行中の人間−コンピュータ間対話中にもたらされた1つまたは複数のインタラクティブ音声プロセスを表す1つまたは複数のノードを有する対話ツリーを生成するステップであって、前記ノードの1つまたは複数が1つまたは複数の話題と関連付けられ、前記対話ツリーの前記ノードの1つまたは複数が、前記1つまたは複数の話題との関連性に基づいて生成される、ステップをさらに含む、請求項1または2に記載のコンピュータ実施方法。
【請求項４】
前記選択するステップが、前記1つまたは複数の話題と関連付けられた1つまたは複数の文法から前記1つまたは複数の文法を選択するステップを含む、請求項3に記載のコンピュータ実施方法。
【請求項５】
1つまたは複数のプロセッサ、および前記1つまたは複数のプロセッサと動作可能に結合されたメモリを備えるシステムであって、前記メモリが、1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
ユーザと1つまたは複数のプロセッサによって動作する自動化アシスタントとの間の進行中の人間−コンピュータ間対話の一部として、前記ユーザからの自然言語入力を受信することと、
前記自然言語入力を構文解析するための1つまたは複数の文法を選択することであって、前記進行中の人間−コンピュータ間対話と関連付けられた文脈的データ構造の一部としてメモリに記憶された1つまたは複数の話題に基づき、前記文脈的データ構造の一部として前記メモリに記憶された各話題が、前記進行中の人間−コンピュータ間対話に対する前記話題の適合性の尺度と関連付けられ、前記文脈的データ構造が、複数のノードおよび前記複数のノードを接続する複数のエッジを含む無向グラフを含み、前記無向グラフの各ノードが、前記文脈的データ構造の一部として記憶された前記1つまたは複数の話題のうちの所与の話題、および前記所与の話題が最後に提起された以降の前記進行中の人間−コンピュータ間対話のやり取りの回数を表し、2つのノードを接続する各エッジが、前記2つのノードによってそれぞれ表される2つの話題間の関連性の尺度を表し、各話題と関連付けられた適合性の尺度が、前記やり取りの回数と前記関連性の尺度に少なくとも部分的に基づいて判定される、選択することと、
1つまたは複数の構文解析を生成するために、前記選択された1つまたは複数の文法に基づいて前記自然言語入力を構文解析することと、
前記構文解析の1つまたは複数に基づいて、自然言語応答を生成することと、
1つまたは複数の出力デバイスを使用して、前記自然言語応答を前記ユーザに出力することと、
前記構文解析の1つまたは複数あるいは前記自然言語応答によって提起された1つまたは複数の話題を識別することと、
前記識別された1つまたは複数の話題を前記文脈的データ構造に追加することと
を行わせる命令を記憶する、システム。
【請求項６】
前記1つまたは複数の文法が複数の文法から選択され、前記複数の文法のそれぞれが1つまたは複数の適用可能な話題と関連して記憶される、請求項5に記載のシステム。
【請求項７】
1つまたは複数のプロセッサによる命令の実行に応答して、前記1つまたは複数のプロセッサに、
ユーザと1つまたは複数のプロセッサによって動作する自動化アシスタントとの間の進行中の人間−コンピュータ間対話の一部として、前記ユーザからの自然言語入力を受信することと、
前記自然言語入力を構文解析するための1つまたは複数の文法を選択することであって、前記進行中の人間−コンピュータ間対話と関連付けられた文脈的データ構造の一部としてメモリに記憶された1つまたは複数の話題に基づき、前記文脈的データ構造の一部として前記メモリに記憶された各話題が、前記進行中の人間−コンピュータ間対話に対する前記話題の適合性の尺度と関連付けられ、前記文脈的データ構造が、複数のノードおよび前記複数のノードを接続する複数のエッジを含む無向グラフを含み、前記無向グラフの各ノードが、前記文脈的データ構造の一部として記憶された前記1つまたは複数の話題のうちの所与の話題、および前記所与の話題が最後に提起された以降の前記進行中の人間−コンピュータ間対話のやり取りの回数を表し、2つのノードを接続する各エッジが、前記2つのノードによってそれぞれ表される2つの話題間の関連性の尺度を表し、各話題と関連付けられた適合性の尺度が、前記やり取りの回数と前記関連性の尺度に少なくとも部分的に基づいて判定される、選択することと、
1つまたは複数の構文解析を生成するために、前記選択された1つまたは複数の文法に基づいて前記自然言語入力を構文解析することと、
前記構文解析の1つまたは複数に基づいて、自然言語応答を生成することと、
1つまたは複数の出力デバイスを使用して、前記自然言語応答を前記ユーザに出力することと、
前記構文解析の1つまたは複数あるいは前記自然言語応答によって提起された1つまたは複数の話題を識別することと、
前記識別された1つまたは複数の話題を前記文脈的データ構造に追加することと
を含む動作を実行させる前記命令を含む、少なくとも1つの非一時的コンピュータ可読記憶媒体。
【請求項８】
コンピューティング機器によって実行されると、前記コンピューティング機器に請求項1から4のいずれか一項の方法を実行させる命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文脈を意識した人間−コンピュータ間対話に関する。
【背景技術】
【０００２】
ユーザは、たとえば本明細書で「人間−コンピュータ間対話」と呼ばれる自然言語を使用して、コンピュータとの対話をますますできるようになってきている。たとえば、スマートフォン、タブレット、スマートウォッチ、スタンドアロンのスマートスピーカなどといった、多くのモバイルコンピューティングデバイスは、(「インタラクティブアシスタントモジュール」、「モバイルアシスタント」などとしても知られる)「自動化アシスタント」と呼ばれるソフトウェアプログラムを含む。自動化アシスタントは、自然言語入力(たとえば、最初は話し言葉で次いでテキストに変換される、または最初にテキストとして受信される)を構文解析および解釈し、質問への回答、タスクの開始などといった応答的出力を提供するように構成してもよい。既存の自動化アシスタントでは、会話のドメイン間の切り替えが困難なことが多い。たとえば、ユーザと自動化アシスタントが、1つの話題またはドメイン(たとえば、ゲームを行う)のある主題について対話してきたが、次いでユーザが突然、会話を関連のないドメイン(たとえば、天候)の別の話題に向けた場合、自動化アシスタントは、完全には応答できない、および/または適切に応答するために追加的な対話を必要とする場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
ユーザが、人間−コンピュータ間対話を異なるドメイン間で突然移行させたとき、進行中の人間−コンピュータ間対話の文脈を使用して、自動化アシスタント(または、より一般的に、インタラクティブ音声応答"interactive voice response:IVR"コンポーネント)の機能を高めて解釈し応答するための技術が、本明細書に記載される。様々な実装形態において、いわゆる「文脈的データ構造」を使用して、進行中の人間−コンピュータ間対話に適切な様々な「話題」を持続させてもよい。こうした話題を使用して、たとえばユーザの自然言語入力を構文解析するために使用される1つまたは複数の文法を選択させてもよい。
【０００４】
選択された文法によって作成された構文解析に基づいて、およびいくつかのケースにおいては、進行中の人間−コンピュータ間対話を表す動的な対話ツリーにさらに基づいて、自動化アシスタントによって応答(たとえば、自然言語応答、タスクの開始など)が生成され、提供されてもよい。一方、ユーザ、および/または自動化アシスタントにより進行中の対話に追加された任意の新しい話題は文脈的データ構造に追加されてもよい。ある期間に言及されずまたは触れられなかった話題は削除される場合がある。このようにして、ユーザが、即時には当てはまらないが、進行中の対話の多少以前の話題に当てはまる自然言語入力を提供した場合、自動化アシスタントは、その以前の話題になめらかに戻ることができてもよい。このようにして、自動化アシスタントは、ユーザが所与の時間に言っていることをより良く理解することができ、このことにより明白な発言がない場合に、ユーザが必要とする情報またはサービスをより良く提供することができる。
【０００５】
いくつかの実装形態において、本明細書に記載の技術は、パーササブシステムおよび応答サブシステムを含むシステムに実装されてもよい。パーササブシステムは、自然言語入力を解釈し、応答サブシステムに解釈(たとえば、「構文解析(parse)」および/または話題)する責任があってもよい。応答サブシステムは、自然言語応答を生成し出力するにせよ、いくつかの他の応答行為(たとえば、特定のアプリケーションを開始する)を取るにせよ、解釈を受信し適切に応答する責任があってもよい。
【０００６】
いくつかの実装形態において、パーササブシステムは、進行中の人間−コンピュータ間対話に関連付けられた前述の文脈的データ構造に記憶された1つまたは複数の話題に基づいて、1つまたは複数の文法を選択し、受信された自然言語入力を構文解析するように構成されてもよい。たとえば、いくつかの実装形態において、複数の文法のそれぞれ(たとえば、潜在的には非常に大きい場合がある文法のライブラリ)は、1つまたは複数の適用可能な話題と関連して記憶されてもよい。文法は、その関連した話題の1つまたは複数が、人間−コンピュータ間対話に現在のところ当てはまる(および/または、十分当てはまる)場合に選択され/適用されてもよく、そうでない場合には適用されなくてもよい。したがって、ユーザが自然言語入力を提供すると、現在のところ当てはまる話題と関連付けられた文法のみが選択され、適用される。この技術はときとして本明細書において「文脈フィルタリング」と呼ばれる。文脈フィルタリングにより、会話の文脈において意味をなさず、したがって無意味な出力となる可能性がある文法を避けるという技術的な利点が得られる。いくつかのケースにおいて、これにより人間から受信された各自然言語入力に適用される文法の数を(各自然言語入力に対して、潜在的に巨大なライブラリのすべての文法を適用するのとは対照的に)減らしてもよい。適用される文法の数を減らすことにより、プロセッササイクル、メモリ、および/またはネットワーク帯域幅といったコンピューティングリソースの使用が削減される。これは人間−コンピュータ間対話に特に有益となる場合がある。というのは、自動化アシスタントの待ち時間を最小化すること(すなわち、ユーザ入力に対する自動化アシスタント応答をできるだけ速くすることを確実にする)は、ユーザにとって極めて重要となる場合があるからである。人間−コンピュータ間対話が開始されたばかりであり、したがって話題がまだ当てはまらない場合、パーササブシステムは、従来技術を使用して受信された自然言語入力を処理してもよい。次いで、パーササブシステムは、人間−コンピュータ間対話中に人間または自動化アシスタントによって提起された話題に基づいて、文脈的データ構造をポピュレートし始めてもよい。
【０００７】
パーササブシステムおよび応答サブシステムの両者との対話は、前述の文脈的データ構造である。文脈的データ構造は、メモリに記憶された様々な形式のデータ構造を取ってもよく、進行中の人間−コンピュータ間対話に適切な、または最近適切であった話題を保持するために使用されてもよい。ユーザまたは自動化アシスタントのどちらかにより、ある話題が提起されると、その話題は、たとえば応答サブシステムにより文脈的データ構造に追加されてもよい。文脈的データ構造にすでに保持されている話題が提起されると、その話題は「触れられ」て、たとえば再度、会話の先頭に置かれる場合がある。
【０００８】
この目的を達成するために、様々な実装形態において、文脈的データ構造に保持された各話題は、進行中の人間−コンピュータ間対話に対する話題の適合性の尺度と関連付けられてもよい。たとえば、いくつかの実装形態において、各話題と関連付けられた適合性の尺度は、その話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数に少なくとも部分的に基づいて判定されてもよい。その話題が提起された(たとえば、追加され、または触れられた)以降のやり取りが多いほど、その話題の適合性の尺度は低くなる。あるユーザが天候についての質問から人間−コンピュータ間対話を開始したとする(「天候」の話題が追加されることになる)、しかし、次いで対話は天候とは無関係な広範囲な話題に及んだ。天候の話題が提起された以降の対話のやり取りが多いほど、天候の話題と関連付けられた適合性のスコアは低くなる。いくつかの実装形態において、話題の適合性の尺度が閾値を下回る場合、その話題は文脈的データ構造から完全に削除される場合がある。「古い」話題を文脈的データ構造から削除することは、様々な技術的な利点をもたらす場合がある。パーササブシステムにより選択され(すなわち、上記のように文脈的にフィルタリングされる)、ユーザから受信された各自然言語入力に適用された文法が多いほど、コンピューティングリソースがより多く消費される。古い話題を削除することにより、パーササブシステムにより各自然言語入力に適用される文法の数を減らすことが可能となり、コンピューティングリソース消費を減らすことができる。さらに、パーササブシステムを、現在の人間−コンピュータ間対話に当てはまる話題と関連付けられた文法に集中させることにより、話題からそれた、またはそうでなければ無意味な構文解析が作成される(これにより自動化アシスタントが同じく無意味な出力を提供することがある)という可能性が低くなる。その結果、ユーザの特定の目標を達成するために必要な人間−コンピュータ間対話のやり取り(したがって、ユーザが提供した自然言語入力)の数を減らしてもよく、これにより多くの入力を提供するには限られた物理的または状況的能力を有するユーザの利益となる場合がある。
【０００９】
適合性の尺度はまた他の要素にも基づいてもよい。たとえば、いくつかの実装形態において、各話題と関連付けられた適合性の尺度は、文脈的データ構造におけるその話題と1つまたは複数の他の話題との間の関連性の尺度(たとえば、意味)に少なくとも部分的に基づいて判定されてもよい。第1の話題がしばらくの間提起されなかったが、意味的に関連する第2の話題がその後提起された場合、第1の話題の適合性の尺度を引き上げてもよい。
【００１０】
いくつかの実装形態において、文脈的データ構造は、複数のノードおよびその複数のノードを接続する複数のエッジを含む無向グラフの形式を取ってもよい。無向グラフの各ノードは、文脈的データ構造の一部として記憶された1つまたは複数の話題のうちの所与の話題を表してもよい。いくつかの実装形態において、各ノードはまた、所与の話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数を記憶してもよい。いくつかの実装形態において、2つのノードを接続する各エッジは、その2つのノードによってそれぞれ表される2つの話題間の関連性(たとえば、意味など)の尺度を表してもよい。もちろん、他のデータ構造が本明細書で考察される。
【００１１】
いくつかの実装形態において、各文法は、ある話題およびその話題に対する閾値適合性スコアの両者と関連付けられてもよい。話題が文脈的データ構造中に保持されているが、その適合性スコアが閾値を満たさない場合、文法が選択されない場合がある。これにより、文法がいつ適用されるか、およびいつ適用されないかの微調整が可能となる。
【００１２】
様々な実装形態において、応答サブシステムは、パーササブシステムによって選択され、適用された文法から解釈(または「構文解析」)を受信してもよい。いくつかの実装形態において、パーササブシステムは、応答サブシステムに、たとえば構文解析/解釈の一部として、および/または別個に話題を提供してもよい。いくつかの実装形態において、これらの話題は、文脈的データ構造中にすでに保持されていてもよく、適用されたそれと関連した文法によって触れられていたであってもよい。様々な実装形態において、応答サブシステムは、対話ツリーを使用して、一見したところ無関係の話題間に進行中の人間−コンピュータ間対話を導いてもよい。要するに、応答サブシステムは、パーササブシステムから1つまたは複数の構文解析(または解釈)および話題を受信し、その構文解析および話題に基づく対話ツリーに沿って会話を導く。
【００１３】
たとえば、いくつかの実装形態において、対話ツリーの各ノードは自然言語プロセスを表す。対話ツリーのルートノードは、(プロセスを開始することにより、またはユーザからの曖昧性除去を要求することにより)任意の自然言語入力を取り扱い、ユーザからの自然言語入力に応答して開始されたプロセスに対応する、1つまたは複数の子ノードを開始するように構成されてもよい。子プロセスは、自ら付加的な子プロセスを追加して、自己の内部の対話の様々な態様を取り扱ってもよい。各プロセスは、本明細書に記載の技術を実装するように構成されるモジュール式のプロセスとすることができるので、これによりコードの保守および再利用を単純化することができる。
【００１４】
応答サブシステムは、ユーザへの応答(たとえば、自然言語応答、応答行為またはタスクなど)を生成するたびに、任意の関連する話題を文脈的データ構造に追加してもよい。いくつかの実装形態において、対話ツリーの各ノードは、1つまたは複数の話題(これは、たとえばノードの基礎をなすプロセスの開発者によって選択されてもよい)と関連付けられてもよい。上記のように、各文法はまた、1つまたは複数の話題と関連付けられてもよい。したがって、このような話題を文脈的データ構造に追加することにより、応答サブシステムは、事実上、所与のどの時点においても、パーササブシステムによって適用可能な文法の個数を追加する。したがって、ユーザがある話題について会話し、話題を変え、次いで元の話題(または意味的に関連する話題)に戻ると、その元の話題と関連付けられた文法は、それらの関連した話題がなお文脈的データ構造中に保持されているので、依然として適用可能であってもよい。しかし、上記のように、人間−コンピュータ間対話が、かなり長い間所与の話題から脇道にそれた場合、いくつかの実装形態において、たとえばパーササブシステムが、過度の数の文法を各自然言語入力に適用する(上記のように、これは計算上高価になる可能性がある)のを防ぐために、この話題を文脈的データ構造から削除する場合がある。
【００１５】
一例として、ユーザが、「ゲームをしよう」という言葉で人間−コンピュータ間対話を開始すると仮定する。応答サブシステムは、ルートノードにおいて対話ツリーを開始させてもよい。パーササブシステムは、ユーザの自然言語入力を構文解析し/解釈し、応答サブシステムに構文解析/解釈、および任意の提起された話題(たとえばゲーム)を提供してもよい。受信された構文解析および話題に基づいて、応答サブシステムは、「了解しました。どんなゲームをしたいですか？」といった対話を提供し、ルートノードの下にあるゲーム子プロセスを開始してもよい。応答サブシステムはまた、「ゲーム」および「ゲーム選択」(これは受信された入力に基づくパーササブシステム、および/またはゲーム子プロセスと関連付けられた話題に基づく応答サブシステムによって判定されてもよい)といった話題を文脈的データ構造に追加してもよい。ゲーム子プロセスは、(たとえば、その開発者によって)1つまたは複数の話題と関連付けられてもよく、それらの話題のそれぞれは、「ゲーム」、「ゲーム選択」といったゲームに関連した1つまたは複数の話題と関連付けられてもよい。こうした話題と関連付けられてもよい1つの文法は、たとえばlist_available_games文法であってもよい。こうした話題と関連付けられた別の文法は、たとえば"number_of_players"文法であってもよい。ユーザが次に、「どんなゲームがありますか？」と言うと仮定する。パーササブシステムは、list_available_games文法を選択してもよい。というのはその話題(ゲーム、ゲーム選択)が、現在のところ比較的高い適合性の尺度で文脈的データ構造に存在するからである(その理由は、これらはつい最近提起されたためである)。list_available_games文法は、ユーザの発言を構文解析し、その解釈(たとえば、コマンド、"LIST GAMES")を応答サブシステムに提供してもよい。その結果、自動化アシスタントは(たとえば、応答サブシステムを介して)、「スポーツ雑学クイズゲームおよび歴史雑学クイズゲームがあります」といった利用可能なゲームを列挙してもよい。応答サブシステムはまた、「雑学クイズゲーム」、「スポーツ」および「歴史」といった話題を文脈的データ構造に追加し、スポーツ雑学クイズゲームおよび歴史雑学クイズゲームに対応した子プロセスノードを対話ツリーに追加してもよい。
【００１６】
次にユーザが、「今日の天気予報はどうなっているか？」と発言するなど主題を突然変更すると仮定する。文脈的データ構造に記憶された「天候」の話題に関連した話題は、現在のところ何もない場合がある。いくつかの実装形態において、パーササブシステムは、「天候」といったこの発言によって提起された各話題と関連付けられた、1つまたは複数の文法を識別(たとえば、大規模な文法のリポジトリから文脈的にフィルタリング)してもよい。パーササブシステムは、応答サブシステムに、1つまたは複数の識別された文法によって作成された1つまたは複数の構文解析、ならびに対応する話題を提供してもよい。応答サブシステムは、既存の対話ツリーノードを、パーササブシステムによって返報された構文解析/話題と関連付ける(たとえば、一致させる)ように試行してもよい。いくつかのケースにおいて、パーササブシステムによって提供された構文解析/話題は、(i)対話ツリーノードと関連付けられた話題が、構文解析/話題の話題と一致した場合、および(ii)対話ツリーノードが構文解析/話題の構文解析を取り扱うことができる場合に、対話ツリーノードと関連付けることができ(たとえば、一致し)てもよい。1つまたは2つの条件が満たされない場合、制御は、対話ツリーのルートノードに戻してもよい。これは本例ではありうるケースである。というのは、「天候」の話題は、すでに対話ツリーに追加された前述の話題のいずれもと一致しそうにないからである。したがって、応答サブシステムは、「天候」の話題と関連付けられた子プロセスノードをロードし、「曇り、雨の可能性３０％」といった応答を提供してもよい。応答サブシステムはまた、「天候」の話題を文脈的データ構造に追加してもよく、いくつかのケースにおいて、「ゲーム」、「ゲーム選択」、「雑学クイズゲーム」、「スポーツ」および「歴史」といった文脈的データ構造にすでに含まれている、天候に無関係な話題と関連付けられた適合性の尺度を低下させてもよい。
【００１７】
ユーザが次に「スポーツ雑学クイズゲーム」と発言すると仮定する。ユーザが、ごく最近に人間−コンピュータ間対話の主題を「天候」に変更したとしても、適合性の尺度がわずかに下がったにもかかわらず、「ゲーム」、「ゲーム選択」、「雑学クイズゲーム」、「スポーツ」および「歴史」の話題は、すべてなお文脈的データ構造に記憶されている。したがって、パーササブシステムはなお、こうした話題と関連付けられた1つまたは複数の文法を選択(たとえば、大規模な文法のリポジトリから文脈的にフィルタリング)してユーザの発言を構文解析してもよい。パーササブシステムは次いで、選択された文法を入力に適用し、結果として得られた構文解析および関連した話題を応答サブシステムに提供してもよい。応答サブシステムは次いで、制御を以前に対話ツリーに追加されたスポーツ雑学クイズゲーム子プロセスノードに渡してもよい。
【００１８】
本明細書に記載の技術は、すでに述べた利点を超える様々なさらなる技術的な利点をもたらすことができる。たとえば、本明細書に記載の技術により、主題の変更を取り扱うかなりのリソースを消費する個々の開発者(たとえば、個々のIVRプロセスの)を必要とせずに会話の主題を円滑に変更することができる。さらにまたは代替として、文法は、特定の話題が適切な(および、いくつかのケースにおいて、様々な閾値を満たす適合性の尺度を持たなければならない)ときにのみ適用可能であるので、本明細書に記載の技術を使用することによりまた、生成された構文解析/解釈の数を現在の対話文脈において意味をなすもののみに制限する。これにより、メモリ、プロセッササイクル、ネットワーク帯域幅などの計算リソースを節約することができる。
【００１９】
いくつかの実装形態において、本明細書に記載の技術により、自動化アシスタントによって実装されるIVR対話のモジュール設計が容易になる。こうしたモジュール設計(本明細書に記載の対話ツリーの階層構造を含む)により、保守がより容易になり、またコードの再利用が容易にできる。いくつかの実装形態のさらなる技術的利点は、本明細書に記載の対話ツリーにより、すべてのビジネスロジックを1つのプログラミング言語(C++など)で容易に開発可能なことである。その結果、いくつかのプログラミング言語を含むソリューションに比べて開発期間は短縮される。
【００２０】
いくつかの実装形態において、ユーザと1つまたは複数のプロセッサによって動作する自動化アシスタントとの間の、進行中の人間−コンピュータ間対話の一部として、ユーザからの自然言語入力を受信し、進行中の人間−コンピュータ間対話と関連付けられた文脈的データ構造の一部としてメモリに記憶された1つまたは複数の話題に基づいて、自然言語入力を構文解析するための1つまたは複数の文法を選択し、1つまたは複数の構文解析を生成するために、選択された1つまたは複数の文法に基づいて自然言語入力を構文解析し、構文解析の1つまたは複数に基づいて、自然言語応答を生成し、1つまたは複数の出力デバイスを使用して、自然言語応答をユーザに出力し、構文解析の1つまたは複数あるいは自然言語応答によって提起された1つまたは複数の話題を識別し、識別された1つまたは複数の話題を文脈的データ構造に追加することを含む、1つまたは複数のプロセッサによって実行される方法が提供される。
【００２１】
本明細書に開示された上記およびその他の技術の実装形態は、場合によっては以下の機能の1つまたは複数を含んでもよい。
【００２２】
様々な実装形態において、1つまたは複数の文法は複数の文法から選択されてもよく、その複数の文法のそれぞれは1つまたは複数の適用可能な話題と関連して記憶される。様々な実装形態において、文脈的データ構造の一部としてメモリに記憶された各話題は、進行中の人間−コンピュータ間対話に対する話題の適合性の尺度と関連付けられてもよい。様々な実装形態において、各話題と関連付けられた適合性の尺度は、その話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数に少なくとも部分的に基づいて判定されてもよい。
【００２３】
様々な実装形態において、各話題と関連付けられた適合性の尺度は、文脈的データ構造における話題と1つまたは複数の他の話題との間の関連性の尺度に少なくとも部分的に基づいて判定されてもよい。
【００２４】
様々な実装形態において、文脈的データ構造は、複数のノードおよび複数のノードを接続する複数のエッジを含む無向グラフを含んでもよい。様々な実装形態において、無向グラフの各ノードは、文脈的データ構造の一部として記憶された1つまたは複数の話題のうちの所与の話題、およびその所与の話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数を表してもよい。様々な実装形態において、2つのノードを接続する各エッジは、2つのノードによってそれぞれ表される2つの話題間の関連性の尺度を表してもよい。
【００２５】
様々な実装形態において、本方法は、進行中の人間−コンピュータ間対話中に呼び出された1つまたは複数のインタラクティブ音声プロセスを表す、1つまたは複数のノードを有する対話ツリーを生成することをさらに含んでもよい。様々な実装形態において、ノードの1つまたは複数は1つまたは複数の話題と関連付けられてもよい。様々な実装形態において、選択は、1つまたは複数の話題と関連付けられた1つまたは複数の文法から、1つまたは複数の文法を選択することを含んでもよい。
【００２６】
加えて、いくつかの実装形態では、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサが含まれ、1つまたは複数のプロセッサは、関連したメモリに記憶された命令を実行するように動作可能であり、命令は、前述の方法のうちの任意の方法を実行させるように構成される。いくつかの実装形態はまた、前述の方法のうちの任意の方法を実行する1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する、1つまたは複数の非一時的なコンピュータ可読記憶媒体を含む。
【００２７】
本明細書でより詳細に記載される前述のコンセプトおよび追加のコンセプトのあらゆる組合せは、本明細書で開示される発明の対象の一部であると考えられることを理解すべきである。たとえば、本開示の最後に記載の特許請求された発明の対象のあらゆる組合せは、本明細書で開示された発明の対象の一部であると考えられる。
【図面の簡単な説明】
【００２８】
【図１】本明細書で開示された実装形態を実装してもよい、例示の環境のブロック図である。
【図２】様々な実装形態による、人間−コンピュータ間対話中に適用してもよい例示の文法を示す図である。
【図３】様々な実装形態による、例示の文脈的データ構造を示す図である。
【図４】様々な実装形態による、例示の文脈的データ構造を示す図である。
【図５】様々な実装形態による、例示の文脈的データ構造を示す図である。
【図６】本明細書で開示された実装形態による、例示の対話ツリーを示す図である。
【図７Ａ】様々な実装形態による、例示のどのようにして対話ツリーが、人間−コンピュータ間対話中に動的に成長してもよいかを示す図である。
【図７Ｂ】様々な実装形態による、例示のどのようにして対話ツリーが、人間−コンピュータ間対話中に動的に成長してもよいかを示す図である。
【図７Ｃ】様々な実装形態による、例示のどのようにして対話ツリーが、人間−コンピュータ間対話中に動的に成長してもよいかを示す図である。
【図８】本明細書に記載の様々な技術を実施する例示のプロセスを示す図である。
【図９】コンピューティングデバイスの例示のアーキテクチャを示す図である。
【発明を実施するための形態】
【００２９】
次に図1を参照すると、本明細書で開示された技術を実装してもよい例示の環境が示される。例示の環境には、複数のクライアントコンピューティングデバイス1061-Nおよび自動化アシスタント120が含まれる。自動化アシスタント120は、クライアントコンピューティングデバイス1061-Nとは別個のものとして図1に示されるが、いくつかの実装形態において、自動化アシスタント120のすべてまたは諸態様は、クライアントコンピューティングデバイス1061-Nの1つまたは複数によって実装されてもよい。たとえば、クライアントデバイス1061は、自動化アシスタント120の1つのインスタンスまたは複数の態様を実装してもよく、クライアントデバイス106Nはまた、自動化アシスタント120のこれら1つまたは複数の態様の別個のインスタンスを実装してもよい。自動化アシスタント120の1つまたは複数の態様が、クライアントコンピューティングデバイス1061-Nから遠隔の、1つまたは複数のコンピューティングデバイスによって実装される実装形態において、クライアントコンピューティングデバイス1061-Nおよび自動化アシスタント120のこれらの態様は、ローカルエリアネットワーク(local area network:LAN)および/または広域ネットワーク(wide area network:WAN)(たとえば、インターネット)などの1つまたは複数のネットワークを介して通信してもよい。
【００３０】
クライアントデバイス1061-Nは、たとえばデスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車載通信システム、車載エンターテイメントシステム、車載ナビゲーションシステム)、および/またはコンピューティングデバイスを含むユーザのウェアラブル機器(たとえば、コンピューティングデバイスを有するユーザの時計、コンピューティングデバイスを有するユーザのメガネ、仮想現実または拡張現実コンピューティングデバイス)のうちの1つまたは複数を含んでもよい。追加のおよび/または代替のクライアントコンピューティングデバイスを備えてもよい。いくつかの実装形態において、所与のユーザは、コンピューティングデバイスの協調した「エコシステム」を集合的に形成する、複数のクライアントコンピューティングデバイスを利用して自動化アシスタント120と通信を行ってもよい。しかし、話を簡単にするために、本明細書に記載のいくつかの例では、ユーザが操作する単一のクライアントコンピューティングデバイス106に焦点を当てることにする。
【００３１】
各クライアントコンピューティングデバイス1061-Nは、メッセージ交換クライアント1071-Nのうちの対応する1つなどの様々な異なるアプリケーションを動作させてもよい。メッセージ交換クライアント1071-Nは、様々な形式を取ってもよく、その形式はクライアントコンピューティングデバイス1061-Nの全域にわたって変化してもよく、および/または多数の形式がクライアントコンピューティングデバイス1061-Nのうちの1つで動作してもよい。いくつかの実装形態において、メッセージ交換クライアント1071-Nの1つまたは複数は、ショートメッセージングサービス("short messaging service:SMS")および/またはマルチメディアメッセージングサービス("multimedia messaging service:MMS")クライアント、オンラインチャットクライアント(たとえば、インスタントメッセンジャ、インターネットリレーチャット、すなわち"Internet relay chat:IRC"など)、ソーシャルネットワークと関連付けられたメッセージングアプリケーション、自動化アシスタント120との会話専用のパーソナルアシスタントメッセージングサービスなどの形式を取ってもよい。いくつかの実装形態において、メッセージ交換クライアント1071-Nの1つまたは複数は、ウェブページ、またはウェブブラウザ(図示せず)もしくはクライアントコンピューティングデバイス106の他のアプリケーションによって供給される他のリソースを介して実装されてもよい。
【００３２】
本明細書でより詳細に記載されるように、自動化アシスタント120は、1つまたは複数のクライアントデバイス1061-Nのユーザインタフェース入力および出力デバイスを介して、1人または複数のユーザとの人間−コンピュータ間対話セッションに従事する。いくつかの実装形態において、自動化アシスタント120は、1つまたは複数のクライアントデバイス1061-Nの1つまたは複数のユーザインタフェース入力デバイスを介して、ユーザによって提供されるユーザインタフェース入力に応答して、ユーザとの対話セッションに従事してもよい。これらの実装形態のいくつかにおいて、ユーザインタフェース入力は、明白に自動化アシスタント120に向けられる。たとえば、メッセージ交換クライアント1071-Nの1つは、自動化アシスタント120との会話専用のパーソナルアシスタントメッセージングサービスであってもよく、そのパーソナルアシスタントメッセージングサービスを介して提供されるユーザインタフェース入力は、自動的に自動化アシスタント120に提供されてもよい。また、たとえばユーザインタフェース入力は、自動化アシスタント120が呼び出されることを示す特定のユーザインタフェース入力に基づいて、メッセージ交換クライアント1071-Nの1つまたは複数の中で、明白に自動化アシスタント120に向けられてもよい。たとえば、特定のユーザインタフェース入力は、1つまたは複数のタイプ入力された文字(たとえば、@AutomatedAssistant)、ハードウェアボタンおよび/または仮想ボタンとの間のユーザの対話操作(たとえば、タップ、長いタップ)、口頭コマンド(たとえば、「やあ、自動化アシスタント」)、および/または他の特定のユーザインタフェース入力であってもよい。いくつかの実装形態において、自動化アシスタント120は、ユーザインタフェース入力が自動化アシスタント120にたとえ明白に向けられていないときでさえ、そのユーザインタフェース入力に応答して対話セッションに従事してもよい。たとえば、自動化アシスタント120は、ユーザインタフェース入力の内容を調査して、ユーザインタフェース入力中に含まれる一定の用語に応答して、および/または他の手掛かりに基づいて対話セッションに従事してもよい。多くの実装形態において、自動化アシスタント120は、ユーザがコマンド、サーチ等を発言できるようにインタラクティブ音声応答("IVR")に関与してもよく、1つまたは複数の文法を利用して発言をテキストに変換し、それでテキストに応答してもよい。
【００３３】
各クライアントコンピューティングデバイス1061-Nおよび自動化アシスタント120は、データおよびソフトウェアアプリケーションを記憶するための1つまたは複数のメモリ、データにアクセスし、アプリケーションを実行するための1つまたは複数のプロセッサ、ならびにネットワークを介する通信を容易にする他のコンポーネントを含んでもよい。クライアントコンピューティングデバイス1061-Nの1つまたは複数、および/または自動化アシスタント120によって実行された動作は、多数のコンピュータシステムにわたって配付されてもよい。自動化アシスタント120は、たとえば互いにネットワークを通して結合された1つまたは複数の場所にある、1つまたは複数のコンピュータ上で動作するコンピュータプログラムとして実装されてもよい。
【００３４】
自動化アシスタント120は、パーササブシステム130、応答サブシステム140、対話文脈エンジン150、およびアプリケーションエンジン160を含んでもよい。いくつかの実装形態において、自動化アシスタント120のエンジンおよび/またはサブシステムの1つまたは複数は、自動化アシスタント120から切り離されたコンポーネント中で、省略され、結合され、および/または実装されてもよい。自動化アシスタント120は、関連したクライアントデバイス1061-Nを介して、1人または複数のユーザとの人間−コンピュータ間対話セッションに従事し、情報(たとえば、質問へ回答する、検索結果を取得するなど)を取得し、タスク(電話アプリケーション、カレンダアプリケーション、種々雑多のアプリケーションなど)を開始し、会話に取り組む等を行ってもよい。
【００３５】
本明細書で使用する「対話セッション」には、人間−コンピュータ間対話の一部としての、ユーザと自動化アシスタント120との間の論理的に自己完結した1つまたは複数のメッセージ交換を含んでもよい。自動化アシスタント120は、セッション間の時間の経過、セッション間のユーザ文脈(たとえば、場所、予定された会議の前/最中/後など)の変化、ユーザと自動化アシスタント間の対話以外のユーザとクライアントデバイス間の1つまたは複数の間に挟まれた対話の検出(たとえば、ユーザがアプリケーションをしばらくの間切り替える、ユーザが歩いて離れて行き、その後スタンドアロンの音声起動製品の元へ戻る)、セッション間にクライアントデバイスをロックし/スリープさせる、自動化アシスタント120の1つまたは複数のインスタンスとインタフェースを取るために使用されるクライアントデバイスを変更する等といった様々な信号に基づいて、ユーザとの間の多数の対話セッションを区別してもよい。
【００３６】
いくつかの実装形態において、自動化アシスタント120がユーザフィードバックを要請するプロンプトを提供するとき、自動化アシスタント120は、プロンプトに応答して受信されるユーザインタフェース入力を処理するように構成されるクライアントデバイスの1つまたは複数のコンポーネントを(そのプロンプトが提供されるデバイスを介して)先制して動作させてもよい。たとえば、ユーザインタフェース入力が、クライアントデバイス1061のマイクロフォンを介して提供される場合、自動化アシスタント120は、1つまたは複数のコマンドを提供して、マイクロフォンを先制して「開かせ」(これにより、インタフェース要素をヒットし、または「ホットワード」をしゃべってマイクロフォンを開かなくても済む)、クライアントデバイス1061のテキストプロセッサに対する局所スピーチを先制して動作させ、テキストプロセッサに対する、クライアントデバイス1061と遠隔スピーチ間の通信セッションを先制して確立させ、および/またはグラフィカルユーザインタフェースをクライアントデバイス1061 (たとえば、フィードバックを提供するために選択されてもよい1つまたは複数の選択可能な要素を含むインタフェース) に提供させてもよい。これにより、コンポーネントが先制して動作されない場合に比べて、ユーザインタフェース入力をより迅速に提供し、および/または処理することができる。
【００３７】
自動化アシスタント120のパーササブシステム130は、クライアントデバイス1061-Nを介してユーザによって生成された自然言語入力を処理してもよく、文脈フィルタリングを使用して選択された1つまたは複数の文法に基づいて、応答サブシステム140などの自動化アシスタント120の1つまたは複数の他のコンポーネントによって使用するための、「構文解析」または「解釈」を含むことができる注釈付きの出力を生成してもよい。たとえば、パーササブシステム130は、クライアントデバイス1061の1つまたは複数のユーザインタフェース入力デバイスを介して、ユーザによって生成された自然言語自由形式入力を処理してもよい。生成された注釈付き出力は、自然言語入力(たとえば、1つまたは複数の話題)の1つまたは複数の注釈を含み、場合によっては自然言語入力の1つまたは複数(たとえば、すべて)の用語を含む。
【００３８】
いくつかの実装形態において、パーササブシステム130は、自然言語入力中の様々なタイプの文法情報を識別し、注釈を付けるように構成されてもよい。たとえば、パーササブシステム130は、用語にその文法上の役割で注釈を付けるように構成されるスピーチタグ付け器の役割を含んでもよい。たとえば、スピーチタグ付け器の役割は、各用語に「名詞」、「動詞」、「形容詞」、「代名詞」といったスピーチの役割でタグを付けることができる。また、たとえばいくつかの実装形態において、パーササブシステム130は、追加的および/または代替的に自然言語入力中の用語間のシンタックス関係を判定するように構成される依存パーサを含んでもよい。たとえば、依存パーサは、どの用語が文章の他の用語、主語および動詞を修飾するかなど(たとえば、構文解析ツリー)を判定することができ、こうした依存関係の注釈を付けることができる。
【００３９】
いくつかの実装形態において、パーササブシステム130は、追加的および/または代替的に(たとえば、文学上の人物を含む)人間、組織、(現実の、および想像上の)場所、話題等に対する参照といった1つまたは複数のセグメント内のエンティティ参照に注釈を付けるように構成されるエンティティタグ付け器を含んでもよい。エンティティタグ付け器は、(たとえば、人間などの1つのエンティティクラスに対するすべての参照を識別することができる)高いレベルの精度で、および/または(たとえば、特定の個人などの特定のエンティティに対するすべての参照を識別することができる)低いレベルの精度であるエンティティに対する参照に注釈を付けることができる。エンティティタグ付け器は、自然言語入力の内容を頼りにして特定のエンティティもしくは話題を解明してもよく、および/または場合によっては知識グラフもしくは他のエンティティデータベースと通信して特定のエンティティおよび/または話題を解明してもよい。いくつかの実装形態において、パーササブシステム130は、追加的および/または代替的に1つまたは複数の文脈上の手掛かりに基づいて、参照事項を同一のエンティティに分類する、または「クラスタ化する」ように構成されるコヒーレンスレゾルバを含んでもよい。
【００４０】
いくつかの実装形態において、パーササブシステム130の1つまたは複数のコンポーネントは、パーササブシステム130の1つまたは複数の他のコンポーネントからの注釈に依拠してもよい。たとえば、いくつかの実装形態において、名前付きのエンティティタグ付け器は、すべての寸評を特定のエンティティに注釈付けする際に、コヒーレンスレゾルバ、および/または依存パーサからの注釈に依拠してもよい。また、たとえばいくつかの実装形態において、コヒーレンスレゾルバは、参照事項を同一のエンティティにクラスタ化する際に、依存パーサからの注釈に依拠してもよい。いくつかの実装形態において、特定の自然言語入力を処理する際に、パーササブシステム130の1つまたは複数のコンポーネントは、関連した以前の入力、および/または特定の自然言語入力以外の他の関連したデータ(たとえば、対話文脈エンジン150によって保持された話題)を使用して、1つまたは複数の注釈を決定してもよい。
【００４１】
様々な実装形態において、対話文脈エンジン150は、クライアントデバイス106のユーザと自動化アシスタント120との間の現在の人間−コンピュータ間対話セッション中に提起された1つまたは複数の話題を保持するように構成されてもよい。いくつかの実装形態において、対話文脈エンジン150は、コンピュータメモリにいわゆる「文脈的データ構造」152を保持してもよい。文脈的データ構造152は、メモリに記憶された様々な形式のデータ構造を取ることができ、進行中の人間−コンピュータ間対話セッションに適切なまたは最近継続して適切な話題を保持するために使用することができる。ユーザまたは自動化アシスタント120のどちらかによりある話題が提起されると、その話題は、たとえば対話文脈エンジン150または自動化アシスタント120の別のコンポーネントにより、文脈的データ構造152に追加することができる。文脈的データ構造152にすでに保持されている話題が提起されると、その話題は「触れられ」て、たとえば再度会話の先頭に事実上配置されてもよい。言い換えれば、文脈的データ構造152に保持された話題は、ユーザが、特定の人間−コンピュータ間対話セッション中に(または、いくつかの実装形態において、比較的最近時に発生した様々な人間−コンピュータ間セッションにわたって)、焦点を当てそうに思われる話題を表すことができる。こうした話題を文脈的データ構造152に少なくとも一時的に保持することにより、自動化アシスタント120は、最近時の議論の話題と無関係なユーザからの自然言語入力をより良く解釈することができ、したがって人間−コンピュータ間対話の主題を変更するユーザにより良く適合することができる。
【００４２】
この目的を達成するために、文脈的データ構造152に保持された各話題は、進行中の人間−コンピュータ間対話セッションに対する話題の適合性の尺度と関連付けられてもよい。たとえば、いくつかの実装形態において、各話題と関連付けられた適合性の尺度は、その話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数に少なくとも部分的に基づいて判定されてもよい。その話題が提起された(たとえば、追加されたまたは触れられた)以降のやり取りが多いほど、その話題の適合性の尺度は低くなる。あるユーザが天候についての質問で人間−コンピュータ間対話を開始したとする(「天候」の話題が追加されることになる)、しかし、次いで対話は天候とは無関係な広範囲な話題に及んだ。天候の話題が提起された以降の対話のやり取りが多いほど、天候の話題と関連付けられた適合性のスコアは低くなる。いくつかの実装形態において、話題の適合性の尺度が閾値を下回る場合、その話題は文脈的データ構造152から完全に削除される場合がある。
【００４３】
適合性の尺度はまた、他の要素に基づいてもよい。たとえば、いくつかの実装形態において、文脈的データ構造152中で各話題と関連付けられた適合性の尺度は、文脈的データ構造152におけるその話題と1つまたは複数の他の話題との間の関連性の尺度(たとえば、意味)に少なくとも部分的に基づいて判定されてもよい。第1の話題がしばらくの間提起されなかったが、意味的に関連する第2の話題がその後提起されると、第1の話題の適合性の尺度が引き上げられ、または増大されてもよい。
【００４４】
いくつかの実装形態において、文脈的データ構造152は、複数のノードおよびその複数のノードを接続する複数のエッジを含む無向グラフの形式を取ってもよい。無向グラフの各ノードは、文脈的データ構造152の一部として記憶された1つまたは複数の話題のうちの所与の話題を表してもよい。いくつかの実装形態において、各ノードはまた、所与の話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数を記憶してもよい。いくつかの実装形態において、2つのノードを接続する各エッジは、その2つのノードによってそれぞれ表される2つの話題間の関連性(たとえば、意味など)の尺度を表してもよい。もちろん、他のデータ構造が本明細書で考察される。
【００４５】
様々な実装形態において、パーササブシステム130は文法エンジン132を含んでもよい。文法エンジン132は、複数の文法を含む文法データベース134にアクセスしてもよい。様々な実装形態において、文法データベース134に記憶された各文法は、話題およびその話題の閾値関連スコアと関連付けられてもよい。話題が文脈的データ構造152に保持されているが、その適合性のスコアが閾値を満たさない場合、その文法はパーササブシステム130によって選択されなくてもよい。これにより、文法がいつ適用されるのか、およびいつ適用されないのかについての精密な調整が可能となる。
【００４６】
たとえば、以下の文法ルールが有効であると仮定する。
(allow_if (軽いゲーム))
(ルール $restart_game (ゲームを再開してください)
(=(event_name restart_game)))
(allow_if (高いgame_restart_confirmation))
(ルール $common_yes ($PT_Yes)
(=(event_name yes)))
こうした文法ルールは、ユーザがゲームを再開するために様々な形式の自然言語入力を使用することができる環境を規定してもよい。一番上のルールは、「ゲーム」の話題がわずかでも適切なことのみを必要とする。たとえば、一番上のルールは、「ゲーム」の話題が、いくつかの最低限の閾値(たとえば、>0)を満たす適合性の尺度を有する限り、効力を持ち続けてもよい。このことは、ユーザがゲームをしている間のどの時点においても当てはまってよく、同時にゲームはバックグラウンド等においてアクティブである。一番上の文法を満たす自然言語入力、即ち「ゲームを再開してください」が非常に注目される明白な表現であるので、一番上の文法が広く適用可能なことは当然である。
【００４７】
対照的に、一番下のルールは、"game_restart_confirmation"の話題が、たとえばいくつかの比較的厳しい閾値を満たす適合性の尺度を有することにより、非常に適切であることを必要とする。"game_restart_confirmation"の話題は、たとえばユーザが「ゲームを再開してください」、「多分、ゲームをリセットするだろう」、「もう一度やり直したい」等といった発言をするときにのみ提起されてもよい。したがって、一番下のルールは、ユーザが、ゲームを再開することに非常に集中した場合のみに、(たとえば、$PT_Yesは「はい(yes)」、「承知しました(OK)」、「もちろん(sure)」などを含んでもよい)様々な形式の単純な肯定的な応答を与えることによりゲームを再開することを可能とする。ユーザは、「ゲームを再開したいというのは確かですか？」といった自動化アシスタント120からの要請に応答して、このような肯定的な入力を与えてもよい。ユーザが、こうした話題を最初に提起せずに「はい」と発言した場合、自動化アシスタント120は、「すみませんが、できかねます」または「何をしたいのですか？」といった出力を与えてもよい。一般に、要求されない場合には、特定の文法により、より焦点を当てられた自然言語入力が期待されるほど、その文法と関連付けられた話題関連要求がより高くなる。
【００４８】
いくつかの実装形態において、文法データベース134に記憶された文法ルールは、たとえば様々な話題が現在の人間−コンピュータ間対話に適切なとき、様々な状況において適用することが可能である。たとえば、肯定的な応答(たとえば、「はい」、「承知しました」、「もちろん」、「間違いなく(definitely)」等)を解釈するための単純な文法ルールは、広範囲の状況において適用可能である。以下の文法ルールは、こうした文法ルールが適用可能ないくつかの例示のシナリオを示す。
(allow_if (高い pizza_order_confirmation))
(allow_if (高い quiz_quit_game_question))
(allow_if (高い quiz_add_player_question))
(allow_if (高い phone_call_retry_question))
(ルール $common_yes ($PT_Yes)
(=(event_name yes)))
こうした文法ルールに関して、"pizza_order_confirmation"、"quiz_quit_game_question"、"quiz_add_player_question"、または"phone_call_retry_question"といった任意の話題が、高い適合性の尺度を有するときはいつでも、ユーザは単純な肯定的な応答(たとえば、「はい」、「承知しました」、「イエイ(yeah)」「もちろん」等)を与えることができる。この文法では、適用可能となるためには話題が非常に集中される(すなわち、比較的高い適合性の尺度)ことが必要となる。これは、個々の話題は、自動化アシスタント120が単純なyesまたはnoの応答を求める質問をするときにのみ、提起されるからである。こうした話題の2つ以上が、任意の所与のシナリオにおいて適用可能となる十分に高い適合性の尺度を有することはありそうにはない。たとえ、こうした話題の2つ以上が、現在のところ文脈的データ構造152に保持されているであっても、ごく最近に提起された話題のみが、厳しい適合性の要件を満たす可能性が高い。
【００４９】
いくつかの実装形態において、文法データベース134に記憶された文法ルールは、多数の話題と関連付けられてもよい。たとえば、以下の文法ルールを採り上げよう。
(allow_if (中程度の人間)(中程度の人間))
(ルール $were_married (今まで結婚したことはあるか)
(=(event_name were_married)))
このルールは、多数の様々な人々が、少なくとも中程度の適合性の尺度を有するときに適用可能である。したがって、たとえば以下の人間−コンピュータ間対話が可能である。
ユーザ:  Iron Maidenのリードボーカリストは誰？
AA:      Bruce Dickinsonです。
ユーザ:  Paparazzi songを歌ったのは誰？
AA:      Lady Gagaでした
ユーザ:  彼らは今まで結婚したことがある？
AA:      いいえ、ありません。
「人間」という話題の2つの明確な例が提起された。1つの例は"Bruce Dickinson"で、別の例は"Lady Gaga"であった。したがって、ユーザが、「彼らは今まで結婚したことがある？」と質問したとき、自動化アシスタント120は、上の文法ルールを適用して、2人は実際に結婚していないということを示す情報を取得することができる。
【００５０】
いくつかの実装形態において、文法ルールを、ユーザまたは自動化アシスタント120以外のソースによって提起されてもよい話題に適用することができる。以下の文法ルールが有効であると仮定する。
(allow_if ((point_of_interest))
(ルール $who_built (google 誰がそれを建設したか)
(=(event_name who_built)))
この文法ルールは、どのくらい適合性の尺度が高かろうと低かろうと、どのような関心ごとでも現在文脈的データ構造152に保持されている場合に適用可能である。"point_of_interest"の話題が、ユーザまたは自動化アシスタント120によって追加されるかもしれない場合、それはまた位置座標センサ(全地球測位システム、すなわち"Global Positioning System:GPS")などのコンポーネントにより、ユーザによって携行されるコンピューティングデバイスに追加される場合がある。ユーザがエッフェル塔の前に立って("point_of_interest"の話題が文脈的データ構造152に追加される)、「誰がこれを建設したか？」と質問すると仮定する。自動化アシスタント120は、上の文法ルールを適用してユーザの自然言語入力を構文解析し、「エッフェル塔はGustave Eiffelによって建設された」と応答することができる。
【００５１】
応答サブシステム140は、パーササブシステム130によって選択され適用された文法から、構文解析および話題を受信してもよい。様々な実装形態において、応答サブシステム140は、対話ツリー144を使用して、一見したところ無関係の話題間で進行中の人間−コンピュータ間対話を導く対話エンジン142を含んでもよい。要するに、応答サブシステムは、パーササブシステムから1つまたは複数の構文解析(または解釈)および話題を受信し、構文解析および話題に基づく対話ツリーに沿って会話を導く。
【００５２】
たとえば、いくつかの実装形態において、対話ツリー144の各ノードは自然言語プロセスを表す。対話ツリー144のルートノードは、(プロセスを開始することにより、またはユーザから曖昧性除去を要求することにより)任意の自然言語入力を取り扱い、ユーザからの自然言語入力に応答して開始されたプロセスに対応する1つまたは複数の子ノードを開始するように構成されてもよい。子プロセスは、自ら付加的な子プロセスを追加して、自己の内部の対話の様々な態様を取り扱ってもよい。各プロセスは、本明細書に記載の技術を実装するように構成されるモジュール式のプロセスであってもよいので、これによりコードの保守および再利用を単純化することができる。
【００５３】
応答サブシステム140は、ユーザへの応答(たとえば、自然言語応答、応答行為またはタスクなど)を生成するたびに、任意の関連する話題を文脈的データ構造152に追加してもよい。いくつかの実装形態において、対話ツリーの各ノードを、1つまたは複数の話題(これは、たとえばノードの基礎をなすプロセスの開発者によって選択されてもよい)と関連付けられてもよい。上記のように、各文法はまた、1つまたは複数の話題と関連付けられてもよい。したがって、このような話題を文脈的データ構造に追加することにより、応答サブシステムは、事実上、所与のどの時点においても、パーササブシステム130によって適用可能な文法の個数を追加する。したがって、ユーザがある話題について会話し、話題を変え、次いで元の話題(または意味的に関連する話題)に戻ると、その元の話題と関連付けられた文法は、それらの関連付けられた話題がなお文脈的データ構造152中に保持されているので、依然として適用可能である。しかし、上記のように、人間−コンピュータ間対話が、かなり長い間所与の話題から脇道にそれた場合、いくつかの実装形態において、たとえばパーササブシステム130が、過度の数の文法を各自然言語入力に適用する(上記のように、これは計算上高価になりうる)のを防ぐために、この話題を文脈的データ構造152から削除する場合がある。
【００５４】
本明細書に記載の技術を使用して、ユーザと簡単に会話することに加えて、またはそれに代えて自動化アシスタント120はまた、ユーザによって提供された自然言語入力に基づいて、1つまたは複数のタスクを開始してもよい。したがって、アプリケーションエンジン160は、アプリケーションライブラリ162を保持、またはそうでない場合にはそれにアクセスしてもよい。アプリケーションライブラリ162中のアプリケーションは、1つまたは複数のクライアントデバイス106にインストールされてもよく、たとえばウェブプロセス、クラウドプロセスといった自動化アシスタント120に適用可能なプロセスであってもよく、および/または自動化アシスタント120に組み込まれたプロセスであってもよい。より一般的には、アプリケーションライブラリ162中のアプリケーションは、人間−コンピュータ間対話中に自動化アシスタント120に適用可能なプロセスであってもよい。
【００５５】
以下でより詳細に記載するように、応答サブシステム140は、たとえば対話ツリー144として人間−コンピュータ間対話セッション中に自動化アシスタント120によって開始され、および/またはアクセスされたインタラクティブ自然言語プロセスに対応したノードのグラフを保持してもよい。自動化アシスタント120は、新しいプロセスにアクセスするので、こうしたプロセスを表すノードは、子ノードとして前述のルートノードに追加されてもよい。いくつかの実装形態において、子ノードプロセスは、同様に、必要に応じて追加の子ノードプロセスを追加してもよい。
【００５６】
いくつかの実装形態において、各子ノードプロセスは、本明細書に記載の技術およびフレームワークと互換性を取ることができる。たとえば、各子ノードプロセスは、1つまたは複数の話題と関連付けられてもよい。こうした話題は、事実上、各子ノードを同じように同一の話題と関連付けられた文法と関連付けてもよい。ごく最近追加された子ノードプロセスを満たさない自然言語入力が受信された場合、すなわち自然言語入力がごく最近追加された子ノードプロセスのいかなる話題にも適用できない話題を提起する場合、他の、以前に追加された子ノードプロセスが、新たに提起された話題に適用可能な(たとえば、一致する)関連する話題を有することは可能である。こうした方法で、ユーザは、以前に提起された子ノードプロセスと関連付けられたステートマシンを遡って調べるための自動化アシスタント120を必ずしも必要とせずに、人間−コンピュータ間対話セッションの以前の話題に連続的に戻ることができる。
【００５７】
図2は、どのようにして1つまたは複数の文法270が、ユーザと自動化アシスタント120(図では"AA")との間の人間−コンピュータ間対話セッション272中に適用されるかの単純な例を示す。この例において、最上位の文法270は、「人間」の話題が、「高い」(たとえば、閾値を満たす)と考えられる適合性の尺度を有する場合に適用することができる。対話は、ユーザが、「この音楽は何？」(自動化アシスタント120により、または周囲のサウンドとして検出されることにより音楽が演奏されていると仮定)という質問形式の自然言語入力を提供することから始まる。太文字によって示すように、いくつかの実装形態において、ユーザの自然言語入力は、たとえばパーササブシステム130および/または対話文脈エンジン150によって分析され、「音楽」という話題を、文脈的データ構造152に現在保持されている話題に追加すべきであると判定してもよい。現時点では、「音楽」という話題と関連付けられた適合性の尺度は、その話題が追加されたばかりなので、比較的高い/強いものとなってもよい。
【００５８】
自動化アシスタント120は、「それは、ショパンのC Sharp Minorの作品です」と言うことによって応答する。自動化アシスタント120は、たとえば自動化アシスタント120それ自体が、音楽の再生を開始したので、あるいは1つまたは複数の音響特性に基づいて、音楽を識別するための様々なサウンド処理技術を利用することによりこの回答を決定することができる。太文字によって示すように、様々な実装形態において、「人間」、「芸術家」、「作曲家」および/または「ショパン」といった話題は、文脈的データ構造152に現在保持されている話題に追加することができる。現時点では、「人間」および/または「ショパン」という話題と関連付けられた適合性の尺度は、その話題が追加されたばかりなので、比較的高い/強いものとなってもよい。いくつかの実装形態において、「音楽」という以前に追加された話題と関連付けられた適合性の尺度は、たとえば音楽の話題が提起されて以降それが1つのやり取りをしているので、減少/弱くなっている場合がある。しかし、他の実装形態において、「ショパン」(作曲家)という話題は、「音楽」という話題と密接な意味的な関係があるので、「音楽」という話題と関連付けられた適合性の尺度は、「音楽」という話題が人間−コンピュータ間対話に依然として明らかに適切なため減少/弱くなることはないであろう。
【００５９】
次いで、ユーザはとりわけ、「彼はどこで生まれたか？」という質問を含む自然言語入力を提供する。「人間」という話題は、直近の先行するやり取りで提起されたばかりなので(その結果、文脈的データ構造152に追加された)、「人間」という話題は、依然として強いまたは高い適合性の尺度を有してもよい。したがって、たとえばパーササブシステム130によって文法270が適用されて、「彼はどこで生まれたか？」という自然言語入力は、"where_person_born"というイベントを引き起こさせるべきであると決定してもよい。このイベントは、パーササブシステム130に、構文解析および/または解釈を応答サブシステム140に提供させ、応答サブシステム140に対して、対話中の最近時に言及された人間(ショパン)の生誕地を決定させ、「彼はZelazowa Wolaで生まれた」との応答を返すようにさせる。一方、応答サブシステム140はまた、「都市」および/または"Zelazowa Wola"といった話題を、自ら、または対話エンジン150を使用して、文脈的データ構造152に追加させることができる。従来と同様に、前のやり取り中に提起された話題(たとえば、「音楽」、「人間」、「ショパン」)と関連付けられた適合性の尺度は、たとえばそれらが新たに追加された話題に意味的に関連しているかどうかに応じて、低下させてもさせなくてもよい。
【００６０】
次いで、ユーザは、「それはどこにありますか？」との質問をする自然言語入力を提供する。これは、こうした曖昧な質問をすることにより、ユーザに自動化アシスタント120との間で新しい人間−コンピュータ間対話セッションを開始させることになり、どのようなものであれ前の会話の文脈の利益なくしては、自動化アシスタント120は、ユーザからさらなる曖昧さを取り除いた情報を要請することなしにこの質問への応答を提供することはできなかったであろうことに留意されたい。しかし、「都市」の話題は、先行するやり取りで文脈的データ構造152に追加されたばかりであり、したがって比較的高い適合性の尺度を有するため、パーササブシステム130は、文法270の第2の文法をユーザの自然言語入力に適用することができる。パーササブシステム130は、任意の新しい適用可能な話題だけでなく、得られた構文解析または解釈(たとえば、event_name="where_city_located")を応答サブシステム140に提供してもよい。この構文解析(および話題)に基づいて、応答サブシステム140は、(たとえば、知識グラフ、検索可能な文書など様々なソースから)応答情報を取得し、「Zelazowa WolaはポーランドのMasovian地域にある都市です」という自然言語出力を提供することができる。前と同様に、「地域」、「国」および/または「ポーランド」といった話題を、たとえば応答サブシステム140および/または対話文脈エンジン150によって文脈的データ構造152に追加してもよい。
【００６１】
次いでユーザは、「国会議事堂からどのくらい離れていますか？」という質問をする自然言語入力を提供する。この場合も、前の文脈なしには、自動化アシスタント120は、ユーザから曖昧さを取り除いた情報を要請することなしに、こうした質問に答えることはできそうにない。しかし、"Zelazowa Wola"および「ポーランド」といった話題が、この特定の人間−コンピュータ間対話セッションにおいて、なお比較的「新鮮」(すなわち、なお比較的高い適合性の尺度を有する)であるので、自動化アシスタント120は、より直接的に質問に答えることができる。たとえば、パーササブシステム130は、第3の文法をユーザの自然言語入力に適用して、現在適切な国または地域(この例では、「ワルシャワ」)の国会議事堂を応答する"identify_capitol"というイベントを引き起こしてもよい。また、いくつかの実装形態において、「国会議事堂」といった話題を文脈的データ構造152に追加してもよい。次いで、パーササブシステム130は、第4の文法をユーザの自然言語入力と、識別された国会議事堂との組合せに適用してもよい。得られた構文解析または解釈(たとえば、event_name="distance_between_cities")は、応答サブシステム140に提供されてもよい。この構文解析に基づいて、応答サブシステム140は応答情報を取得し、「39マイル離れています」といった自然言語出力を提供してもよい。
【００６２】
次の2つの人間−コンピュータ間対話272のやり取りは、本明細書に記載された技術、すなわち会話のドメインを突然変更するという技術によって提供される1つの技術的な利点を特に強調する。ユーザは、「誰か似たような芸術家を知っていますか？」と尋ねる自然言語入力を提供する。上で述べたように、「芸術家」という話題は、人間−コンピュータ間対話272中に比較的早く文脈的データ構造152に追加され、多くの対話のやり取りでは提起されなかった。その結果、「芸術家」という話題と関連付けられた適合性の尺度は、かなり減少され/弱められたと言ってよい。それにもかかわらず、文法270のうちの基本的な文法は、たとえ「芸術家」という話題が比較的低い適合性の尺度と関連付けられたであっても、その文法はそれにもかかわらず適用可能であることを示す。したがって、パーササブシステム130は、その文法を適用して、応答サブシステム140のための構文解析を生成してもよい。構文解析に応答して、応答サブシステム140は次いで、他の似たような芸術家(たとえば、芸術的に似たようなアートを創造する、人口統計学的観点から似ている、似たような時期に活動したなど)を求める検索を開始する"find_similar_artists"というイベントを引き起こしてもよい。応答サブシステム140は次いで、「承知しました。フランツリスト、ルートヴィッヒフォンベートーベンまたはフランツシューベルトを推薦します」との自然言語出力を提供してもよい。
【００６３】
図3は、どのように文脈的データ構造152が論理的に実装されてもよいかの一例を示す。この例において、文脈的データ構造152は、複数のノードおよびその複数のノードを接続する複数のエッジを有する無向グラフ364として形成される。無向グラフ364の各ノードは、文脈的データ構造152の一部として保持された1つまたは複数の話題の所与の話題を表すことができる。いくつかの実装形態において、各ノードは、所与の話題が最後に提起された以降の進行中の人間−コンピュータ間対話のやり取りの回数を記憶してもよい。
【００６４】
無向グラフ364は、図2の人間−コンピュータ間対話272中に、文脈的データ構造152に追加されたかもしれない話題に対応したノードを含む。各話題の前の括弧は、その話題が最後に提起されたやり取りの回数を表し、これはまた図2に示される。したがって、たとえば「音楽」および「芸術家」といった話題は、最初の([0])やり取り中に提起された(これはユーザの自然言語入力、およびこれは必要ではないけれども自動化アシスタント120からの応答の両方を含む)。「都市」の話題は、自動化アシスタント120が"Zelazowa Wola"に言及した2回目の([1])やり取り中に提起された。「国」および「地域」の話題は、自動化アシスタント120がそれぞれ「ポーランド」および「Masovian地域」に言及した3回目の([2])やり取り中に提起された。「距離」および「都市」の話題は、ユーザが国会議事堂までの距離を要求した4回目の([3])やり取り中に提起された。「芸術家」の話題は、自動化アシスタント120がショパンに似た芸術家の3つの例を提供した5回目の([4])やり取り中に3回提起された。
【００６５】
いくつかの実装形態において、特定の適合性の尺度は、現在の対話のやり取りの数から関連するやり取りの数(その話題を表す多数のノードがある場合は、最新の対話のやり取りの数)を差し引くことによって簡単に決定されてもよい。その結果が小さいほど、現在の対話にとってその話題はより適切である。しかし上で述べたように、他の実装形態において、話題の関連性といった他の要素が考慮される。たとえば、いくつかの実装形態において、現在の対話のやり取りにおいて提起されている話題を表すノード(新たに追加されたものであれ更新されたものであれ)は、たとえばノードAとして識別されてもよい。所与の話題の適合性の尺度は、無向グラフ364の各ノードに対して、Aに属する任意のノードへの最短距離diを計算することにより現在の対話のやり取り中に決定されてもよい。さらに、現在の対話のやり取りの数とノードのやり取りの数の差aiも計算されてもよい。ノードの(したがって、話題の)適合性の尺度は、diおよびaiの最小値にセットされてもよい。
【００６６】
図4は、図3で示したものと同様な無向グラフ464を示す。この例では、図2で示した人間−コンピュータ間対話272が、現在6回目の([5])の対話のやり取りに入っており、網掛けノード(「芸術家」)が、現在の対話のやり取り([5])中に提起されていると仮定する。無向グラフ464の各ノードは、括弧の左側に、現在の対話のやり取りの数([5])とその話題が提起された最後の対話のやり取りの差diを含む。無向グラフ464の各ノードはまた、括弧の右側に、そのノードと新たに追加されたAのノード間の最短経路aiを含む。図5は、各ノード/話題に対して、diおよびaiの最小値に基づいて決定された適合性の尺度を示す。こうした方法で適合性の尺度を決定することは、特定の話題は最近言及されないものの、密接に関連した話題が最近言及されたというシナリオを説明してもよい。こうしたシナリオにおいて、その特定の話題はなお、少なくとも間接的に人間−コンピュータ間対話に適切であり、したがってその特定の話題と関連付けられた適合性の尺度をどの程度減少させるかを調整することは道理にかなうことと言えよう。
【００６７】
上記のように、応答サブシステム140は、たとえば対話エンジン142を介して、自動化アシスタント120が、ユーザとの間で人間−コンピュータ間対話にどのように参加するかを制御してもよい。いくつかの実装形態において、ユーザの自然言語入力の構文解析(または解釈)は、たとえば対話ツリー144を使用することにより、対話エンジン142によって実装される、階層的意思決定プロセスに提供されてもよい。階層的意思決定プロセスは、いくつかのケースにおいて、より大きなプロセスがいくつかのより小さなプロセスを制御するプロセスの階層(たとえば、対話ツリー144のルートおよび子プロセスノード)を含んでもよい。
【００６８】
図6は、人間−コンピュータ間対話670中に使用されてもよい対話ツリー644の簡単な例を図式的に示す。この例は、どれだけ利用できる文脈が多いほど(すなわち、文脈的データ構造152に保持される話題が多いほど)、いくつかの目標(たとえば、自動化アシスタント120から応答を取得する、自動化アシスタントにタスクを開始させるなど)を達成するためにユーザが発言する必要が少なくなるかを示す。この例では、以下の文法ルールは、雑学クイズゲームであってよいGAME Aのために規定されると仮定する。
(allow_always)
(ルール $play_game (私は3人のプレーヤとゲームAを行いたい)
(=(event_name play_game_A)(プレーヤ 3))
(allow_if (中程度のgame_A))
(ルール $player_choice (3人のプレーヤが欲しい)
(=(event_name player_choice)(数 3))
(allow_if (高いplayer_question))
(ルール $number ($PT_Number)
(=(event_name number)(値 3))
これらの文法ルールから、開始に際して、ユーザは常に、3人のプレーヤとGAME Aを行いたいと特に述べることができることが明らかである。こうした声明は、ゲームプレーを開始するためにGAME Aによって必要とされるすべてのパラメータを含む。"game_A"という話題が、少なくとも中位の適合性の尺度を有する場合(たとえば、プレーヤは「GAME Aを行いたい」と言ったが、追加の情報は提供しなかった)、プレーヤはゲームプレーを開始するために「私は<非ゼロ整数>プレーヤが欲しい」と言うことができる。自動化アシスタント120が「プレーヤは何人ですか？」とだけ尋ねた場合、"player_question"という話題は十分に高い適合性の尺度を有すると言ってよく、ユーザは数字の応答をするだけでよい。
【００６９】
人間−コンピュータ間対話672において、ユーザは、「私はGAME Aを行いたい」と述べることによって開始する。"game_A"という話題(および「ゲーム」など潜在的に他の話題)は文脈的データ構造152に追加されてもよく、GAME A子ノードはルートノードに追加される。GAME A子ノードは、GAME Aと関連付けられた子ノードプロセスを表してもよい。こうした子ノードプロセス(または、特定のアプリケーションに対して対話を指図する複数の子ノードプロセス)を開発するとき、開発者は、上で述べたような文法ルールを規定(および、いくつかの実装形態においては文法データベース134に記憶)してもよい。この例において、GAME Aは、GAME MODE(シングルモードまたはマルチプレーヤモードのどちらが実装されているかを制御する)、PLAYERS(マルチプレーヤモードが実装されている場合、プレーヤは何人かを制御する)、およびMULTIPLAYER LOOP(マルチプレーヤのゲームプレーを制御する)の3つの子ノードプロセスを含む。
【００７０】
GAME MODE子プロセスに従って、自動化アシスタント120は、「承知しました。シングルプレーヤですか、マルチプレーヤですか？」と応答する。プレーヤは「マルチプレーヤです」と返答する。いくつかの実装形態において、ノードGAME MODEと関連付けられた子プロセスは、(たとえば、GAME MODEノードと関連して提供された文法ルールを使用して)ユーザの入力を解釈して、構文解析/解釈をGAME Aノードによって表されたプロセスに提供してもよい。次いで、PLAYERSノードと関連付けられた子プロセスに従って、自動化アシスタント120は、「プレーヤは何人ですか？」と尋ねてもよい。プレーヤは「3人」と返答する。いくつかの実装形態において、ノードPLAYERSと関連付けられた子プロセスは、(たとえば、PLAYERSノードと関連して提供された文法ルールを使用して)ユーザの入力を解釈して、構文解析/解釈をGAME Aノードによって表されたプロセスに提供してもよい。GAME Aノードと関連付けられたプロセスは、いったんゲームモード(マルチプレーヤ)およびプレーヤの人数(3人)を知ると、次に制御をMULTIPLAYER LOOPノードに渡してもよい。このノードは、ゲームプレー中に対話を制御する。
【００７１】
いくつかの実装形態において、対話ツリーの各子ノードプロセスは、特定のユーザ解釈(すなわち、構文解析)を処理する、最も近い親ノードと通信する、および最も近い子ノードと通信する、の3つの機能を実行するように設計されてもよい。子ノードプロセスは、たとえば最近の文脈に適用可能な(たとえば、文脈的データ構造に記憶される)1つまたは複数の話題と関連付けられることにより、特定のユーザ解釈を処理する機能を実行してもよい。図6において、GAME Aと関連付けられたノードは、ゲームを行うのに必要なパラメータを、(たとえば、GAME Aノードと関連付けられた文法によって解釈される自然言語入力を提供するユーザにより)ユーザのディレクトリなどの多数のソースから、および/または1つまたは複数の子ノードから受信する(たとえば、GAME MODEノードからゲームプレーモードを受信する、PLAYERSノードからプレーヤの数を受信する)ことができてもよい。
【００７２】
図7A〜図7Cは、どのように対話ツリー744を以下の人間−コンピュータ間対話中に動的に生成することができるかを示す。
ユーザ:  私はGAME Aを行いたい。
AA:      承知いたしました。プレーヤは何人ですか？
ユーザ:  最初に時間を教えてください。
AA:    午後7時15分です。
ユーザ:  Game of Rosesは今日いつ放映されますか？
AA:      午後8時に45分間です。
ユーザ:  承知しました。3人のプレーヤが欲しいです。
AA:      承知いたしました。プレーしましょう。最初の質問・・・
上記のように、ユーザの最初の声明(「私はGAME Aを行いたい」)は、文脈的データ構造にまだ何も話題がないので、ルートノードによって解釈される。図7Aに示すように、ユーザの要求により、子ノードプロセスGAME A、およびいくつかの場合には、MULTIPLAYER LOOPノードを開始させてもよい。いくつかの実装形態において、自動化アシスタントの応答(「承知いたしました。プレーヤは何人ですか？」)により、PLAYERSといった1つまたは複数の追加の子ノードプロセスをノードGAME Aの下に追加させてもよい。
【００７３】
図7Bは、ユーザが「最初に時間を教えてください」と言うことにより、突然話題を変更した後の対話ツリー744を示す。ユーザがこの表現をするとき、「時間」という話題は文脈的データ構造152に追加されていない。したがって、制御はルートノードへ戻され、このルートノードは、任意のアクティブな子プロセスノードと関連付けられた話題が、新たに提起された話題に適用(たとえば、一致)できない場合に、自然言語入力を処理する。ルートノードは、ユーザの要求を解釈し、現在時間を応答するように構成されてもよいTIMEと呼ばれる別の子プロセスノードを開始させることができる。
【００７４】
図7Cは、ユーザが再度、突然話題を変更した後の対話ツリー744を示す。今回、ユーザは「Game of Rosesは今日いつ放映されますか？」と尋ねる。「テレビジョン」、「シリーズ」等といった潜在的に適用可能な話題は文脈的データ構造152には保持されていない。したがって、制御は再度ルートに戻され、このルートが、ユーザの自然言語入力を解釈して、「午後8時に45分間です」と返答する。次いで、ユーザは、主題をGAME Aに向け直し、「承知しました。3人のプレーヤが欲しいです」と言う。GAME Aという話題は、文脈的データ構造152に依然として保持されているので、GAME Aという話題と関連付けられた文法は、GAME A子ノードプロセスによって適用することができてもよい。
【００７５】
上記の説明および例から、いくつかの実装形態において、対話ツリー中の子ノードプロセスは、話題と関連付けられていることは明らかである。文脈的データ構造152中の話題の存在は、経時的に変化する進行中の人間−コンピュータ間対話の文脈によって決まる。したがって、対話ツリー中の子ノードプロセスの存在は、進行中の人間−コンピュータ間対話の文脈によって決まることがある。その結果、対話ツリーは、進行中の人間−コンピュータ間対話の文脈が変わるにつれて、動的に、経時的に変化する。
【００７６】
いくつかの実装形態において、子ノードプロセスは、様々なプログラミング言語(たとえば、C++、Java(登録商標)等)のクラスとして実装されてもよい。各子ノードプロセスは、その親および(もしあれば)子と情報を交換し、ユーザが提供した自然言語入力の構文解析/解釈に対応し、ある状況を保持し、およびいくつかのケースでは、天候、スポーツの得点、ニュース、テレビ番組、一般情報(たとえば、知識グラフ中のエンティティと関連付けられた情報)などのような情報を返答してもよい遠隔の手続き呼び出しといった遠隔のプロセスと通信するように構成されてもよい。
【００７７】
いくつかの実装形態において、子ノードプロセスは、静的に定義されたインタフェース方法を含んでもよい。単信通信においては、応答は期待されていない。以下のサンプルコードによって表すように、呼び出し先のみがインタフェースを公開する。
void SomeChildClass::set_difficulty(int level);
他方、二重通信においては、受信側は、結果を呼び出し元に返報できなければならない。したがって、両者ともインタフェースを公開してもよい。
void SomeChildClass::ask_for_game_settings();
void ParentClass::game_settings_callback(const GameSettings& settings);
テンプレートプログラミング(たとえば、C++で)が使用される場合、たとえば二重通信を可能とするために、子によって必要とされるインタフェースを、親プロセスが実装することを保証することが可能であってよい。その結果、呼び出し元と呼び出し先の間の通信プロトコルの不一致によっておこるバグは、コンパイル時に検出されてもよい。
【００７８】
こうした明確に定義された通信インタフェースにより、コードの再利用が容易になってもよい。たとえば、プロセスAが、プロセスBによって提供された論理を利用しようとすると仮定する。プロセスBが、いかなるデータもその親プロセスに戻さない場合、プロセスAは、子としてプロセスBを単純に追加してもよい。他方、プロセスBが、たとえばインタフェースIBを介して、その親プロセスにデータを戻すように構成される場合、プロセスAは、インタフェースIBを実装するように構成され、次いで子としてプロセスBを追加してもよい。
【００７９】
いくつかの実装形態において、プロセスを実装した各クラスは、ユーザから受信した自然言語入力の構文解析/解釈を処理する責任がある方法を実装してもよい。クラスインスタンスの状態は、そのクラスインスタンスと関連付けられた話題オブジェクト内に保持されてもよい。各クラスは、外の世界への様々な呼び出し(たとえば、遠隔手続き呼び出し)を行うためのインタフェースを提供する継承されたメンバへアクセスしてもよい。
【００８０】
図8は、本明細書に開示の実装形態による例示の方法800を示す流れ図である。便宜上、流れ図の動作は、その動作を実施するシステムを参照しながら記述されている。このシステムは、自動化アシスタント120の1つまたは複数のコンポーネントといった、様々なコンピュータシステムの様々なコンポーネントを含んでもよい。さらに、方法800の動作が特定の順序で示される場合、これに限られるということではない。1つまたは複数の動作の順序を入れ替え、削除し、または追加してもよい。
【００８１】
ブロック802において、システムは、ユーザから自然言語入力を受信してもよい。自然言語入力は、様々なタイプの入力デバイスを介して様々な形式で受信されてもよい。たとえば、いくつかの実装形態において、入力デバイスは、マイクロフォンであってよく、自然言語入力は、ユーザによって提供される可聴発話であってもよい。いくつかのこうした実装形態において、トークンおよび他の情報は、音声信号から抽出されてもよく、口頭入力に対応するテキストを生成するために使用されてもよい。他の実装形態において、自然言語入力は、たとえばユーザによって提供されたタイプ入力または口頭入力として、メッセージ交換クライアント107を使用したメッセージ交換スレッド内で受信されてもよい。
【００８２】
ブロック804において、システムは、自然言語入力を構文解析するための1つまたは複数の文法を選択してもよい。この選択は、文脈的データ構造152の一部として保持された1つもしくは複数の話題、および/またはこれらの話題と関連付けられた適合性の尺度に基づいてもよい。対話ツリーが、応答サブシステム140によって使用される実装形態において、文脈的データ構造152にまだ話題が保持されていない場合、または任意の子プロセスノードと現在関連付けられた話題が、最近時に提起された話題に適用(たとえば、一致)できない場合、制御をルートノードに渡してもよい。次いで、ルートノードは、自然言語入力を構文解析し、しかるべく反応する(たとえば、情報を取得し、自然言語応答を提供する、1つまたは複数のアプリケーション/プロセスを開始する、等)ことができる。ルートノードにおいて、ユーザの自然言語入力が理解されない場合、自動化アシスタント120は、ユーザに説明を求めてもよい。
【００８３】
ブロック806において、システムはブロック804において選択された文法に基づいて、ブロック802において受信された自然言語入力を構文解析してもよい。いくつかの実装形態において、多数の文法が適用可能であってよく、したがって自然言語入力の構文解析/解釈を生成してもよい。システムは、こうした多数の(潜在的に相反する)解釈から様々な方法で選択してもよい。いくつかの実装形態において、システムは、その関連した話題が最も集中される(たとえば、最も高い適合性の尺度と関連付けられた)ことを必要とする文法によって生成された構文解析を選択してもよい。たとえば、第1の文法は、「ゲーム」という話題と関連付けられるが、その「ゲーム」という話題は、中位またはほんのわずかな適合性の尺度を有することを必要とするのみであると仮定する。さらに、第2の文法も「ゲーム」という話題と関連付けられるが、比較的高い適合性の尺度を必要とすると仮定する。「ゲーム」という話題が、たとえば最近提起されたばかりであるか、または他の最近提起された話題に意味的に関連するという理由で、高い適合性の尺度と現在関連付けられる場合、両方の文法が適用可能であってよい。しかし、システムは、より高い集中閾値により、第2の文法によって生成された構文解析を選択するであろう。他の実装形態において、システムは、それぞれの構文解析がユーザの真の意図であるとの可能性といった他の手掛かりに基づいて、多数の構文解析/解釈から選択してもよい。たとえば、いくつかの実装形態において、ログ、適合性の尺度、または他の類似のデータポイントを使用して、多数の構文解析のそれぞれが、ユーザの真の意図と一致するという可能性を計算してもよい。多数の構文解析が、正しいといった類似の可能性を有するように思われる場合、システムは、ユーザから追加的な説明、および/または曖昧性除去を求めてもよい。
【００８４】
いくつかの実装形態において、ブロック808において、システムは、ブロック806において生成された1つまたは複数の構文解析に基づいて自然言語応答を生成してもよい。こうしたいくつかの実装形態において、自然言語応答は、上記の雑学クイズゲームといったいくつかのプロセスをまた開始させるシステムを随伴してもよい。例として上で説明した雑学クイズゲームが、自動化アシスタントと一体になっていると言及される(すなわち、それらが、進行中の人間−コンピュータ間対話に連続的に組み込まれるIVRアプリケーションとして説明される)が、このことは、これに限られるということではない。様々な実装形態において、システムは、アプリケーションを開くといった、IVRを含まないタスク(たとえば、電話アプリケーション、カレンダアプリケーション、ソーシャルネットワーキングアプリケーション、グラフィカルビデオゲーム、フィットネスアプリケーション等)を開始してもよい。このタスクは必ずしも、口頭またはタイプ入力の自然言語入力を使用して制御されるわけではない。ブロック810において、システムは、ブロック808において生成された自然言語応答を出力してもよい。たとえば、自動化アシスタントは、ユーザの質問に回答し、処理のための別のパラメータを捜索し、ユーザとの会話に従事し、自動化アシスタントが別のアプリケーションを開始していることを示す出力を提供するなどを行ってもよい。
【００８５】
ブロック812において、システムは、ブロック806において生成された構文解析、および/またはブロック808において生成された自然言語応答によって提起された話題を識別してもよい。ブロック814において、システムは、識別された話題に基づいて文脈上の構造を更新してもよい。話題が、まだ文脈的データ構造に追加されていない場合、話題は追加されてもよい。話題が文脈的データ構造の一部としてすでに保持されている場合、たとえばこうした話題に関連付けられた適合性の尺度を増加させることにより、話題は「触れる」ことができる。さらに、いくつかの実装形態において、新たに提起された話題に意味的に関連した文脈的データ構造152中の他の話題もまた、たとえば追加された話題と同程度に、またはいくつかのケースではより軽い程度に「触れる」ことができる。
【００８６】
図9は、本明細書に記載の技術の1つまたは複数の態様を実行するために、場合によっては利用されてよい例示のコンピューティングデバイス910のブロック図である。いくつかの実装形態において、クライアントコンピューティングデバイス、自動化アシスタント120、および/または他のコンポーネントの1つまたは複数は、例示のコンピューティングデバイス910の1つまたは複数のコンポーネントを含んでもよい。
【００８７】
コンピューティングデバイス910は通常、バスサブシステム912を介していくつかの周辺デバイスと通信する少なくとも一つのプロセッサ914を含む。これらの周辺デバイスは、たとえばメモリサブシステム925およびファイル記憶装置サブシステム926を含む記憶装置サブシステム924、ユーザインタフェース出力デバイス920、ユーザインタフェース入力デバイス922、ならびにネットワークインタフェースサブシステム916を含んでもよい。入力および出力デバイスにより、ユーザはコンピューティングデバイス910と対話できるようになる。ネットワークインタフェースサブシステム916は、外部のネットワークにインタフェースを提供し、他のコンピューティングデバイスの対応するインタフェース装置に結合される。
【００８８】
ユーザインタフェース入力デバイス922は、キーボード、マウス、トラックボール、タッチパッドもしくはグラフィックタブレットといったポインティングデバイス、スキャナ、表示装置に組み込まれたタッチスクリーン、音声認識システムなどの音声入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含んでもよい。一般に、「入力デバイス」という用語を使用する場合は、コンピューティングデバイス910または通信ネットワークに情報を入力するためのあらゆる可能なタイプのデバイスおよび方法を含むことを意図している。
【００８９】
ユーザインタフェース出力デバイス920は、表示装置サブシステム、プリンタ、ファックスマシン、または音声出力デバイスなどの非視覚的な表示装置を含んでもよい。表示装置サブシステムは、ブラウン管(cathode ray tube:CRT)、液晶表示装置(liquid crystal display:LCD)などの平面パネルデバイス、投射デバイス、または可視画像を作成するためのいくつかの他の機構を含んでもよい。表示装置サブシステムはまた、音声出力デバイスを経由するなどの非視覚的な表示装置を提供してもよい。一般に、「出力デバイス」という用語を使用する場合は、コンピューティングデバイス910からユーザまたは別のマシンもしくはコンピューティングデバイスに情報を出力するためのあらゆる可能なタイプのデバイスおよび方法を含むことを意図している。
【００９０】
記憶装置サブシステム924は、本明細書に記載の一部またはすべてのモジュールの機能を提供するプログラミングおよびデータ構成体を記憶する。たとえば、記憶装置サブシステム924は、図8の方法の選択された態様を実行し、および図1に示された様々なコンポーネントを実装するための論理を含んでもよい。
【００９１】
これらのソフトウェアモジュールは一般に、プロセッサ914により単独にまたは他のプロセッサと組み合わせて実行される。記憶装置サブシステム924中で使用されるメモリ925は、プログラム実行中に命令およびデータを記憶するための主ランダムアクセスメモリ(RAM)930、ならびに確定した命令を記憶するリードオンリメモリ(ROM)932を含む、いくつかのメモリを含んでもよい。ファイル記憶装置サブシステム926は、プログラムおよびデータファイルのための永続記憶装置を提供でき、ハードディスクドライブ、関連した着脱可能な媒体と協調したフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、または着脱可能な媒体カートリッジを含んでもよい。一定の実装形態の機能を実装するモジュールは、記憶装置サブシステム924中、またはプロセッサ914によってアクセス可能な他のマシン中のファイル記憶装置サブシステム926によって記憶されてもよい。
【００９２】
バスサブシステム912は、コンピューティングデバイス910の様々なコンポーネントおよびサブシステムに、相互に目的通りに通信させるための機構を提供する。バスサブシステム912は、単一バスとして概略的に示されるが、バスサブシステムの代替の実装形態では、多重バスを使用してもよい。
【００９３】
コンピューティングデバイス910は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、様々なタイプとすることができる。コンピュータおよびネットワークの絶えず変化する性質が原因で、図9に示したコンピューティングデバイス910の説明は、いくつかの実装形態を示すことが目的の特定の例としてのみ意図されている。コンピューティングデバイス910の多くの他の構成は、図9に示したコンピューティングデバイスに比べて、より多くのまたはより少ないコンポーネントを有するものとして可能である。
【００９４】
本明細書に記載の一定の実装形態が、ユーザについての個人情報(他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザの位置、ユーザの時間、ユーザの生体情報、ならびにユーザの活動および人口学的な情報)を収集または使用することができる状況において、ユーザは、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、およびユーザについての情報がどのように収集され、記憶され、使用されるかを制御する1つまたは複数の機会が提供される。すなわち、本明細書に記載のシステムおよび方法は、適切なユーザから、そうするための明白な許可を得たときのみ、ユーザの個人情報を収集し、記憶し、および/または使用する。たとえば、ユーザは、プログラムまたは機能のどちらが、その特定のユーザまたはそのプログラムまたは機能に適切な他のユーザについてのユーザ情報を収集するかに関する制御を提供される。個人情報が収集される各ユーザには、そのユーザに適切な情報収集に係る制御を可能とする、情報が収集されるかどうか、および情報のどの部分が収集されるかについての許可または承認を得るための1つまたは複数の選択権が付与される。たとえば、ユーザには、通信ネットワークを介して1つまたは複数のこうした制御選択権を提供することができる。さらに、一定のデータは、個人的に識別可能な情報は除去できるように、それが記憶され、使用される前に、1つまたは複数の方法で処理されてもよい。一例として、ユーザの識別情報は、個人的に識別可能な情報が判定されないように取り扱うことができる。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定されないように、より大きな地域にぼかされてもよい。
【００９５】
本明細書において、いくつかの実装形態を説明し図解してきたが、機能を実行しおよび/もしくは結果を取得するための様々な他の手段および/もしくは構造、ならびに/または、本明細書で説明した利点の1つまたは複数が使用されてもよく、こうした変形、および/または変更のそれぞれは、本明細書で説明した実装形態の範囲内にあると考えられる。より一般的に、本明細書で説明したすべてのパラメータ、寸法、材料、および構成は例示的なものであり、実際のパラメータ、寸法、材料、および/または構成は、その技術が使用される特定のアプリケーションまたは複数のアプリケーションによって決まるであろう。当業者であれば、せいぜい日常的な実験を使用して、本明細書で説明した特定の実装形態の多くの等価物を理解し、または確認することができるであろう。したがって、前述の実装形態は、ほんの例として提示されたものであり、添付の特許請求の範囲およびその同等物の範囲内において、実装形態は、特に記載され、特許請求されたものとは別のやり方で実施することができることを理解されたい。本開示の実装形態は、本明細書で説明したそれぞれ個々の機能、システム、物品、材料、キット、および/または方法を対象としている。さらに、こうした機能、システム、物品、材料、キット、および/または方法の2つ以上の任意の組合せは、こうした機能、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合には、本開示の範囲内に含まれる。
【符号の説明】
【００９６】
106  クライアントコンピューティングデバイス、クライアントデバイス
1061  クライアントデバイス
106N  クライアントデバイス
1061-N  クライアントコンピューティングデバイス
107  メッセージ交換クライアント
1071-N  メッセージ交換クライアント
120  自動化アシスタント
130  パーササブシステム
132  文法エンジン
134  文法データベース
140  応答サブシステム
142  対話エンジン
144  対話ツリー
150  対話文脈エンジン
152  文脈的データ構造
160  アプリケーションエンジン
162  アプリケーションライブラリ
270  文法
272  人間−コンピュータ間対話
364  無向グラフ
464  無向グラフ
644  対話ツリー
670  人間−コンピュータ間対話
672  人間−コンピュータ間対話
744  対話ツリー
800  方法
910  コンピューティングデバイス
912  バスサブシステム
914  プロセッサ
916  ネットワークインタフェースサブシステム
920  ユーザインタフェース出力デバイス
922  ユーザインタフェース入力デバイス
924  記憶装置サブシステム
925  メモリ、メモリサブシステム
926  ファイル記憶装置サブシステム
930  主ランダムアクセスメモリ(RAM)
932  リードオンリメモリ(ROM)
【図１】
0006912579.tif 000002
【図２】
0006912579.tif 000003
【図３】
0006912579.tif 000004
【図４】
0006912579.tif 000005
【図５】
0006912579.tif 000006
【図６】
0006912579.tif 000007
【図７Ａ】
0006912579.tif 000008
【図７Ｂ】
0006912579.tif 000009
【図７Ｃ】
0006912579.tif 000010
【図８】
0006912579.tif 000011
【図９】
0006912579.tif 000012