(57)【要約】  セキュリティゾーン内の1つまたは複数のリソースからプライベート情報を取得するために、セキュリティゾーン内で実装されるステートマシンを生成する/分散させることに関する技法について説明する。様々な実装形態では、セキュリティゾーン内のプロセッサによって実装された自動アシスタントクライアントは、セキュリティゾーン内のリソースから利用可能なプライベート情報を使用して回答可能である自由形式自然言語クエリ(“FFNLQ”)を受信してもよい。FFNLQを示すデータが、セキュリティゾーンの外部にある意味プロセッサに提供されてもよく、意味プロセッサは、セキュリティゾーン内のリソースからプライベート情報を取得するために、セキュリティゾーン内のプロセッサによって実装されるステートマシンを返してもよい。ステートマシンおよび取得されたプライベート情報に基づいて、FFNLQに応答する情報を伝えるために、自然言語出力が生成および提示されてもよい。
2021503647.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティゾーン内の1つまたは複数のプロセッサによって実施される方法であって、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信するステップであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、ステップと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供するステップであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、ステップと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信するステップであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、ステップと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために前記ステートマシンを実装するステップと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成するステップと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供するステップと
を含む、方法。
【請求項２】
前記ステートマシンが、前記自動アシスタントクライアントによって実行可能である命令を備える、請求項1に記載の方法。
【請求項３】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含む、請求項1または2に記載の方法。
【請求項４】
前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロットを備える、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記ステートマシンを実装するステップが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記セキュリティゾーンを管理するヘルスケア提供者に関連付けられた人々の集団についての医療情報を含む1つまたは複数のデータベースを含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
セキュリティゾーン内の1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサと動作可能に結合されるメモリとを備え、前記メモリが命令を記憶し、前記命令が、1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信することであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、受信することと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供することであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、提供することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信することであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、受信することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために前記ステートマシンを実装することと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成することと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供することと
の動作を実行させる、システム。
【請求項９】
前記ステートマシンが、前記自動アシスタントクライアントによって実行可能である命令を備える、請求項8に記載のシステム。
【請求項１０】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含む、請求項8または9に記載のシステム。
【請求項１１】
前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロットを備える、請求項8から10のいずれか一項に記載のシステム。
【請求項１２】
前記ステートマシンを実装することが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装することを含む、請求項8から11のいずれか一項に記載のシステム。
【請求項１３】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項8から12のいずれか一項に記載のシステム。
【請求項１４】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記セキュリティゾーンを管理するヘルスケア提供者に関連付けられた人々の集団についての医療情報を含む、1つまたは複数のデータベースを含む、請求項8から13のいずれか一項に記載のシステム。
【請求項１５】
命令を備える少なくとも1つの非一時的コンピュータ可読媒体であって、前記命令が、セキュリティゾーン内の1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信することであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、受信することと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供することであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、提供することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信することであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、受信することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために、前記ステートマシンを実装することと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成することと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供することと
の動作を実行させる、非一時的コンピュータ可読媒体。
【請求項１６】
前記ステートマシンが、前記自動アシスタントクライアントによって実行可能である命令を備える、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含む、請求項15または16に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロットを備える、請求項15から17のいずれか一項に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記ステートマシンを実装することが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装することを備える、請求項15から18のいずれか一項に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項15から19のいずれか一項に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライベートデータを保護するための自動アシスタントを用いたヒューマンコンピュータダイアログのための分散ステートマシンの使用に関する。
【背景技術】
【０００２】
人間は、本明細書で「自動アシスタント」と呼ばれる対話型ソフトウェアアプリケーション(「チャットボット」、「対話型パーソナルアシスタント」、「インテリジェントパーソナルアシスタント」、「パーソナル音声アシスタント」、「会話エージェント」などとも呼ばれる)とのヒューマンコンピュータダイアログに従事する場合がある。たとえば、人間(自動アシスタントと対話するとき、「ユーザ」と呼ばれる場合がある)は、テキストに変換され、次いで処理された音声発話でもよい自由形式自然言語入力を使用して、かつ/またはタイプされた自由形式自然言語入力によって、コマンド、クエリ、および/または要求(本明細書で「クエリ」と総称される)を提供してもよい。
【０００３】
多くの場合、自動アシスタントの論理インスタンスは、複数のコンピューティングデバイスにわたって実装されてもよい。たとえば、自動アシスタントの論理インスタンスは、ユーザのモバイルフォン上にインストールされた自動アシスタントクライアントと、1つまたは複数のクラウドベース自動アシスタントコンポーネントとを含んでもよい。自動アシスタントクライアントは、ユーザが自動アシスタントとのヒューマンコンピュータダイアログに従事するために操作することができる自動アシスタントインターフェースをユーザに提供するように構成されてもよい。ただし、ヒューマンコンピュータダイアログに関連する重労働の多くは、クラウドベース自動アシスタントコンポーネントによって実行されることが多く、クラウドベース自動アシスタントコンポーネントは、自然言語クエリの意味処理を実行するためにクラウドの実質的に無限のリソースを活用することが可能である。
【０００４】
ユーザは、情報の検索、タスクの実行などの様々な理由のために自動アシスタントとのヒューマンコンピュータダイアログに従事する場合がある。時々、ユーザが自動アシスタントと対話するとき、ユーザは、極秘またはプライベートであるか、あるいは極秘またはプライベートである情報に依存する情報を求める場合がある。この潜在的な極秘情報またはプライベート情報は、ユーザによって操作された1つもしくは複数のコンピューティングデバイス上に、および/またはユーザのユーザプロファイルに関連してクラウド上に記憶されている場合がある。そのようなユーザにより制御されたリソースへのクラウドベース自動アシスタントコンポーネントアクセスを許可することは可能であるが、そうすることによって、ユーザが情報へのアクセスを提供することを望まないサードパーティに、プライベートまたは極秘情報が潜在的に公開される場合がある。また、いくつかのシナリオでは、ユーザは、クラウドベース自動アシスタントコンポーネントが極秘情報またはプライベート情報へのアクセスを有することさえ望まない場合がある。その上、クラウドベース自動アシスタントコンポーネントは、たとえば1つまたは複数のファイアウォールの後ろにある企業ネットワークなどの保護された「セキュリティゾーン」内にあるリソース(たとえば、コンピューティングデバイス)において記憶されているいくつかの情報へのアクセスを有していない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
セキュリティゾーン内の1つまたは複数のリソースからプライベート情報を取得するために、たとえばセキュリティゾーン内のコンピューティングデバイス上で動作している自動アシスタントクライアントによって、セキュリティゾーン内で実行可能であるステートマシンを生成し、かつ/または分散させるための技法について、本明細書で説明する。様々な実装形態では、ユーザは、ユーザが操作するクライアントデバイス(たとえば、スタンドアロンの対話型スピーカー、スマートフォンなど)上で実行している自動アシスタントクライアントによって提供された自動アシスタントインターフェースに、自由形式自然言語クエリを提供してもよい。クエリは、セキュリティゾーン内の1つまたは複数のリソースにおいて利用可能であり、クラウドベース自動アシスタントコンポーネントにとって利用可能ではない、プライベート情報に基づいて回答可能でもよい。
【０００６】
いくつかの実装形態では、セキュリティゾーンは、ユーザのクライアントデバイスが接続され、かつ/あるいは1つまたは複数のファイアウォールによって保護される、1つまたは複数のローカルエリアネットワーク("LAN")および/あるいは1つまたは複数の企業ネットワークなどの1つまたは複数のネットワークと一致してもよい。他の実装形態では、セキュリティゾーンは、たとえばユーザのユーザプロファイルに関連する、ユーザによって操作されたクライアントデバイスの協調「エコシステム」の1つまたは複数のクライアントデバイスと一致してもよい。一般に、「セキュリティゾーン」は、一般にセキュリティゾーンの外部でアクセス可能ではないデータを含む、1つまたは複数のコンピューティングリソースを指す場合がある。
【０００７】
セキュリティゾーンの外部の意味プロセッサにこのプライベート情報へのアクセスを提供することは、セキュリティリスクをもたらし、かつ/またはユーザを不快にさせる場合があり、そうするのではなく、様々な実装形態では、セキュリティゾーンの外部の意味プロセッサに、いかなるプライベートデータも満たされることのない自由形式自然言語クエリを示すデータが提供されてもよい。クエリを示すデータに基づいて、意味プロセッサは、1つまたは複数のステートマシンを生成し、かつ/または、たとえばセキュリティゾーン内の1つまたは複数のコンピューティングデバイスによって実装可能である既存のステートマシンのライブラリから選択してもよい。これらのステートマシンは、たとえばセキュリティゾーン内のリソースを通してのみ利用可能であるプライベート情報から取られた値で満たされることになるスロットを含んでもよい。いくつかの実装形態では、ステートマシンは、ステートマシンスロットを値で満たすために、セキュリティゾーン内の1つまたは複数のコンピューティングデバイスによって実装可能である論理(たとえば、状態および状態間の遷移、if/elseステートメントなど)を含んでもよい。たとえば、いくつかの実装形態では、ステートマシンは、セキュリティゾーン内のコンピューティングデバイス上で実行している自動アシスタントクライアントによって実装されてもよい。
【０００８】
いくつかの実装形態では、ステートマシンは、たとえば特定の自由形式自然言語クエリに応答して、オンザフライで(たとえば、クラウドにおいて)生成されてもよい。追加または代替として、いくつかの実装形態では、ステートマシンは、既存のステートマシンのライブラリから選択されてもよい。たとえば、ユーザが「私は糖尿病ですか」と尋ねる場合、そのクエリは、糖尿病に関連付けられた(すなわち、それを証明する)データポイント(たとえば、血糖値、H1Cレベル、BMIなど)のためのスロットを含む1つまたは複数のステートマシンにマッピングされてもよい。ステートマシンは、要求するユーザのセキュリティゾーン内のコンポーネントに提供され、セキュリティゾーン内のコンピューティングリソースから、または(たとえば、その情報についてユーザにプロンプトを出すことによって)ユーザからのいずれかで、これらのスロット値のうちの1つまたは複数を取得するために、そのコンポーネントによって実装されてもよい。ステートマシンは、どのような値が収集され、スロットを満たすために使用されるかに応じて、「はい、あなたは糖尿病である可能性が高いです」または「いいえ、あなたは健康なようです」などの出力が提供されることを引き起こす論理(たとえばif/thenステートメントなど)を含んでもよい。
【０００９】
本明細書で説明する技法は、いくつかの技術的利点を生じる。汎用オンライン意味プロセッサ−クラウドベース自動アシスタントコンポーネントを含んでもよい−は、自由に使えるクラウドの実質的に無限のリソースが提供されると、多種多様な自由形式自然言語クエリを意味的に処理する能力が高い場合がある。これらのクラウドベースリソースは、たとえば様々な領域に関するリソース(たとえば、データベース)を含んでもよい。そのようなロバストなリソースを用いて、オンライン意味プロセッサ(または、別のコンポーネント)は、セキュリティゾーン内で実装される場合がある比較的複雑なステートマシンを選択および/または生成することが可能でもよい。したがって、リソース制約のあるクライアントデバイス上で動作している自動アシスタントクライアントなどの比較的リソース制約のあるコンポーネントによって次いで実装可能であるステートマシンを生成するために、比較的ロバストなオンライン意味プロセッサを活用することが可能である。
【００１０】
たとえば、ユーザが、ユーザが特定の健康状態を有するかどうかを自動アシスタントに尋ねると仮定する。オンライン意味プロセッサは、ユーザがその健康状態を有するかどうかを決定するために使用することができる様々なデータポイント(たとえば、健康パラメータ、症状など)をスロット値として取得するように設計されるステートマシンを選択および/または生成することが可能でもよい。次いで、このステートマシンは、データを取得するためにユーザのクライアントデバイス上で動作している自動アシスタントクライアントなどのユーザのセキュリティゾーン内の1つまたは複数のコンポーネントに伝送され、実装されてもよい。この例では、スロット値は、たとえばユーザのクライアントデバイスのメモリから(たとえば、クライアントデバイスがバイタルサインセンサーを有する場合、バイタルサイン読取りのログがアクセスされてもよい)、および/または、セキュリティゾーン内の他のリソース(たとえば、セキュリティゾーンの内部または外部にある医療リソースへの安全なアクセスをすでに有するコンピューティングデバイスおよび/またはアプリケーション)から取得されてもよい。
【００１１】
したがって、本明細書で説明する技法は、汎用オンライン意味プロセッサによる潜在的にプライベートおよび/または極秘の情報へのアクセスを可能にすることによって生じる場合があるプライバシーおよびセキュリティの問題を回避する。代わりに、オンライン意味プロセッサは、プライベート情報をクラウドに公開することなしにプライベート情報に安全にアクセスすることができるローカルで実装可能なステートマシンを生成するために活用される。これによって、セキュリティ構成が簡略化され、セキュリティゾーン内のコンピューティングデバイスと、セキュリティゾーンの外部のコンピューティングデバイスとの間のネットワークトラフィックが低減される。
【００１２】
また、ヒューマンコンピュータダイアログの会話の態様(すなわち、クエリ構文解析、ユーザの意図の解決、コンテキスト的質問についての会話の履歴の追跡など)を処理するオンライン意味プロセッサなどのコンポーネントは、極秘データへのアクセスが制限されるか、またはアクセスができない。代わりに、セキュリティゾーン内で、たとえばユーザのクライアントデバイス上でさえも、応答のすべてがコンパイルされる。また、これにより自動アシスタント−特にそれらのクラウドベースコンポーネント−がユーザの識別情報について、もし何かあればその多くを知る必要も軽減され、その理由は、オンライン意味プロセッサがローカルで実装可能なステートマシンを生成するそのタスクをすでに履行した後、ユーザの識別情報がセキュリティゾーン内で使用されてもよいからである。また、これにより特に極秘環境における許可および/または認証も簡略化され、その理由は、自動アシスタントがアクセス制御リストなどに固有の複雑さに対処する必要がないからである。
【００１３】
本明細書で説明する技法の別の技術的利点は、自動アシスタントバックエンドシステム(たとえば、オンライン意味プロセッサを形成してもよいクラウドベース自動アシスタントコンポーネント)と、潜在的に極秘のデータを記憶するシステムとの間の直接的な統合の必要が低減されるか、またはさらにはその必要がなくなることである。また別の技術的利点は、レイテンシが改善される場合があることである。たとえば、極秘データは、多くの場合、そのローカルメモリ内を含む、ユーザのクライアントデバイスの比較的近くに記憶される場合がある。リモートのオンライン意味プロセッサに、このデータを取り出す試みをさせるのではなく、その取出しは、多くの場合に(たとえば、ネットワークホップにおいて)所望のデータにより近くなるセキュリティゾーン内の1つまたは複数のコンピューティングデバイスに委ねられてもよい。また別の技術的利点は、本明細書で説明する技法が簡略化された監査を容易にすることである。自動アシスタントが複数の異なるソースから比較的アドホックな方法でデータをフェッチするのではなく、フェッチされるデータは、オンライン意味プロセッサによって提供されたステートマシンデータから明白である場合がある。
【００１４】
いくつかの実装形態では、1つまたは複数のプロセッサによって実行される方法が提供され、本方法は、セキュリティゾーン内のプロセッサのうちの1つまたは複数によって実装された(たとえば、実行されたか、またはそうでなければ処理された)自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信するステップであって、自由形式自然言語クエリが、セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、ステップと、意味プロセッサに、自由形式自然言語クエリを示す第1のデータを提供するステップであって、意味プロセッサがセキュリティゾーンの外部にある、ステップと、セキュリティゾーン内のプロセッサのうちの1つまたは複数によって、意味プロセッサから、ステートマシンを示す第2のデータを受信するステップであって、ステートマシンが、セキュリティゾーン内のリソースのうちの1つまたは複数からプライベート情報を取得するために実装可能(たとえば、実行可能、またはそうでなければ処理可能)である、ステップと、セキュリティゾーン内のプロセッサのうちの1つまたは複数によって、セキュリティゾーン内のリソースのうちの1つまたは複数からプライベート情報を取得するために、ステートマシンを実装する(たとえば、実行する、またはそうでなければ処理する)ステップと、ステートマシンおよび取得されたプライベート情報に基づいて、自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成するステップと、自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、自然言語出力を提供するステップとを含む。
【００１５】
本明細書で開示する技術のこれらおよび他の実装形態は、場合によっては、以下の特徴のうちの1つまたは複数を含んでもよい。
【００１６】
様々な実装形態では、ステートマシンは、自動アシスタントクライアントによって実行可能である命令を含んでもよい。様々な実装形態では、セキュリティゾーン内の1つまたは複数のリソースは、自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含んでもよい。様々な実装形態では、ステートマシンは、セキュリティゾーン内のリソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロットを含んでもよい。
【００１７】
様々な実装形態では、ルーチンを実行するためにステートマシンを実装するステップは、ステートマシンを形成するバイトコードを実行するために、インタープリタを実装するステップを含んでもよい。様々な実装形態では、セキュリティゾーンは、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含んでもよい。様々な実装形態では、セキュリティゾーン内の1つまたは複数のリソースは、セキュリティゾーンを管理するヘルスケア提供者に関連付けられた人々の集団についての医療情報を含む、1つまたは複数のデータベースを含んでもよい。
【００１８】
追加として、いくつかの実装形態は、1つまたは複数のコンピューティングデバイスの1つまたは複数のプロセッサを含み、そこで、1つまたは複数のプロセッサが、関連付けられたメモリ内に記憶された命令を実行するように動作可能であり、命令が、上述の方法のいずれかの実行を引き起こすように構成される。いくつかの実装形態はまた、上述の方法のいずれかを実行するために、1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶する、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。他の実装形態は、上述の方法のいずれかを実行するために、1つまたは複数のプロセッサによって実行可能なコンピュータ命令を記憶または具現化する、1つまたは複数の一時的コンピュータ可読記憶媒体(たとえば、光信号、電気信号、または電磁信号などの信号)を含む。
【００１９】
本明細書でより詳細に説明する上記の概念および追加の概念のすべての組合せが、本明細書で開示する主題の一部であるとして企図されることを了解されたい。たとえば、本開示の最後に現れる請求される主題のすべての組合せが、本明細書で開示する主題の一部であるとして企図される。
【図面の簡単な説明】
【００２０】
【図１】本明細書で開示する実装形態が実装されてもよい例示的な環境のブロック図である。
【図２】様々な実装形態による、本明細書で説明する技法が様々なコンポーネントにわたってどのように採用される場合があるかの一例を示す図である。
【図３】様々な実装形態による、ステートマシンデータの一例を明示する図である。
【図４】本明細書で開示する実装形態による例示的な方法を示すフローチャートである。
【図５】コンピューティングデバイスの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００２１】
次に図1を参照すると、本明細書で開示する技法が実装されてもよい例示的な環境が示される。例示的な環境は、1つまたは複数のクライアントコンピューティングデバイス1061〜Nを含む。各クライアントデバイス106は、自動アシスタントクライアント118のそれぞれのインスタンスを実行してもよい。自然言語プロセッサ122などの1つまたは複数のクラウドベース自動アシスタントコンポーネント119は、全体として110に示される1つまたは複数のローカルエリアネットワークおよび/またはワイドエリアネットワーク(たとえば、インターネット)を介して、クライアントデバイス1061〜Nに通信可能に結合される、1つまたは複数のコンピューティングシステム(「クラウド」コンピューティングシステムと総称される)上に実装されてもよい。
【００２２】
様々な実装形態では、自動アシスタントクライアント118のインスタンスは、1つまたは複数のクラウドベース自動アシスタントコンポーネント119とのその対話を通して、ユーザの観点から自動アシスタント120の論理インスタンスであるように見えるものを形成してもよい。ユーザは、ヒューマンコンピュータダイアログにおいて、自動アシスタント120のこの論理インスタンスを用いて従事してもよい。そのような自動アシスタント120の2つのインスタンスが、図1に示される。一点鎖線によって囲まれた第1の自動アシスタント120Aは、第1のクライアントデバイス1061を操作する第1のユーザ(図示せず)にサービスし、自動アシスタントクライアント1181と、1つまたは複数のクラウドベース自動アシスタントコンポーネント119とを含む。一点二鎖線(dash-dash-dot line)によって囲まれた第2の自動アシスタント120Bは、別のクライアントデバイス106Nを操作する第2のユーザ(図示せず)にサービスし、自動アシスタントクライアント118Nと、1つまたは複数のクラウドベース自動アシスタントコンポーネント119とを含む。したがって、いくつかの実装形態では、クライアントデバイス106上で実行している自動アシスタントクライアント118を用いて従事する各ユーザは、実際には、自動アシスタント120の自分自身の論理インスタンスを用いて従事してもよいことを理解されたい。簡潔および簡単のために、特定のユーザに「サービスする」として本明細書で使用する「自動アシスタント」という用語は、ユーザによって操作されたクライアントデバイス106上で実行している自動アシスタントクライアント118と、(複数の自動アシスタントクライアント118の間で共有されてもよい)1つまたは複数のクラウドベース自動アシスタントコンポーネント119との組合せを指すことになる。また、いくつかの実装形態では、自動アシスタント120が、ユーザが自動アシスタント120のその特定のインスタンスによって実際に「サービスされる」かどうかにかかわらず、任意のユーザからの要求に応答してもよいことも理解されたい。
【００２３】
クライアントデバイス1061〜Nは、たとえばデスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車載通信システム、車載エンターテインメントシステム、車載ナビゲーションシステム)、スタンドアロンの対話型スピーカー、スマートテレビなどのスマートアプライアンス、および/またはコンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの腕時計、コンピューティングデバイスを有するユーザの眼鏡、仮想または拡張現実コンピューティングデバイス)のうちの1つまたは複数を含んでもよい。追加および/または代替のクライアントコンピューティングデバイスが提供されてもよい。
【００２４】
様々な実装形態では、クライアントコンピューティングデバイス1061〜Nの各々は、複数のメッセージ交換クライアント1071〜Nのうちの対応する1つなどの様々な異なるアプリケーションを動作させてもよい。メッセージ交換クライアント1071〜Nは、様々な形態でもよく、それらの形態は、クライアントコンピューティングデバイス1061〜Nにわたって変動してもよく、かつ/または複数の形態が、クライアントコンピューティングデバイス1061〜Nのうちの単一のものにおいて動作されてもよい。いくつかの実装形態では、メッセージ交換クライアント1071〜Nのうちの1つまたは複数は、ショートメッセージングサービス("SMS")および/またはマルチメディアメッセージングサービス("MMS")クライアント、オンラインチャットクライアント(たとえば、インスタントメッセンジャー、インターネットリレーチャット、すなわち"IRC"など)、ソーシャルネットワークに関連付けられたメッセージングアプリケーション、自動アシスタント120との会話専用のパーソナルアシスタントメッセージングサービスなどの形態でもよい。いくつかの実装形態では、メッセージ交換クライアント1071〜Nのうちの1つまたは複数は、クライアントコンピューティングデバイス106のウェブブラウザ(図示せず)または他のアプリケーションによってレンダリングされた、ウェブページまたは他のリソースを介して実装されてもよい。
【００２５】
本明細書でより詳細に説明するように、自動アシスタント120は、1つまたは複数のクライアントデバイス1061〜Nのユーザインターフェース入力および出力デバイスを介して、1人または複数のユーザとのヒューマンコンピュータダイアログセッションに従事する。いくつかの実装形態では、自動アシスタント120は、クライアントデバイス1061〜Nのうちの1つの1つまたは複数のユーザインターフェース入力デバイスを介して、ユーザによって提供されたユーザインターフェース入力に応答して、ユーザとのヒューマンコンピュータダイアログセッションに従事してもよい。それらの実装形態のうちのいくつかでは、ユーザインターフェース入力が、明示的に自動アシスタント120に向けられる。たとえば、メッセージ交換クライアント1071〜Nのうちの1つは、自動アシスタント120との会話専用のパーソナルアシスタントメッセージングサービスでもよく、そのパーソナルアシスタントメッセージングサービスを介して提供されたユーザインターフェース入力が、自動アシスタント120に自動的に提供されてもよい。また、たとえばユーザインターフェース入力は、呼び出されることになる自動アシスタント120を示す特定のユーザインターフェース入力に基づいて、メッセージ交換クライアント1071〜Nのうちの1つまたは複数における自動アシスタント120に明示的に向けられてもよい。たとえば、特定のユーザインターフェース入力は、1つもしくは複数のタイプされた文字(たとえば、@AutomatedAssistant)、ハードウェアボタンおよび/もしくは仮想ボタン(たとえば、タップ、ロングタップ)を用いたユーザ対話、口頭のコマンド(たとえば、「ヘイ、自動アシスタント」)、ならびに/または他の特定のユーザインターフェース入力でもよい。
【００２６】
いくつかの実装形態では、自動アシスタント120は、ユーザインターフェース入力が自動アシスタント120に明示的に向けられないときでも、そのユーザインターフェース入力に応答して、ダイアログセッションに従事してもよい。たとえば、自動アシスタント120は、ユーザインターフェース入力の内容を調べ、ユーザインターフェース入力において提示されるいくつかの用語に応答して、かつ/または他の手掛かりに基づいてダイアログセッションに従事してもよい。いくつかの実装形態では、自動アシスタント120は、ユーザがコマンド、検索などを発話することができるように、対話型音声応答("IVR")を従事させてもよく、自動アシスタントは、自然言語処理および/または1つもしくは複数の文法を利用して、発話をテキストに変換し、それに応じてテキストに応答してもよい。いくつかの実装形態では、自動アシスタント120は、追加または代替として、発話をテキストに変換することなしに発話に応答することができる。たとえば、自動アシスタント120は、音声入力を埋め込みに、(音声入力において存在する1つまたは複数のエンティティを示す)エンティティ表現に、かつ/または他の「非テキスト」表現に変換し、そのような非テキスト表現において動作することができる。したがって、音声入力から変換されたテキストに基づいて動作するとして、本明細書で説明する実装形態は、追加および/または代替として、音声入力において直接、かつ/または音声入力の他の非テキスト表現において動作してもよい。
【００２７】
クライアントコンピューティングデバイス1061〜N、およびクラウドベース自動アシスタントコンポーネント119を動作させるコンピューティングデバイスの各々は、データおよびソフトウェアアプリケーションの記憶のための1つまたは複数のメモリと、データにアクセスし、アプリケーションを実行するための1つまたは複数のプロセッサと、ネットワーク上での通信を容易にする他のコンポーネントとを含んでもよい。クライアントコンピューティングデバイス1061〜Nのうちの1つもしくは複数によって、および/または自動アシスタント120によって実行される動作は、複数のコンピュータシステムにわたって分散されてもよい。自動アシスタント120は、たとえばネットワークを通して互いに結合された1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上で実行しているコンピュータプログラムとして実装されてもよい。
【００２８】
上述のように、様々な実装形態では、クライアントコンピューティングデバイス1061〜Nの各々は、自動アシスタントクライアント118を動作させてもよい。様々な実装形態では、各自動アシスタントクライアント118は、対応するスピーチ取り込み/テキストトゥスピーチ("TTS")/スピーチトゥテキスト("STT")モジュール114を含んでもよい。他の実装形態では、スピーチ取り込み/TTS/STTモジュール114の1つまたは複数の態様は、自動アシスタントクライアント118とは別個に実装されてもよい。
【００２９】
各スピーチ取り込み/TTS/STTモジュール114は、1つまたは複数の機能、すなわちユーザのスピーチを、たとえば(場合によっては、プレゼンスセンサー105を備えてもよい)マイクロフォンを介して取り込むこと、その取り込まれたオーディオをテキストに(および/または、他の表現もしくは埋め込みに)変換すること、および/またはテキストをスピーチに変換することを実行するように構成されてもよい。たとえば、いくつかの実装形態では、クライアントデバイス106が、コンピューティングリソース(たとえば、プロセッササイクル、メモリ、バッテリーなど)に関して比較的制約される場合があるので、各クライアントデバイス106のローカルにあるスピーチ取り込み/TTS/STTモジュール114は、有限数の異なる話されたフレーズ-特に、自動アシスタント120を呼び出すフレーズ-をテキストに(または、より低次元の埋め込みなどの他の形式に)変換するように構成されてもよい。他のスピーチ入力は、クラウドベース自動アシスタントコンポーネント119に送信されてもよく、クラウドベース自動アシスタントコンポーネント119は、クラウドベースTTSモジュール116および/またはクラウドベースSTTモジュール117を含んでもよい。
【００３０】
クラウドベースSTTモジュール117は、クラウドの実質的に無限のリソースを活用して、スピーチ取り込み/TTS/STTモジュール114によって取り込まれたオーディオデータをテキスト(次いで、自然言語プロセッサ122に提供されてもよい)に変換するように構成されてもよい。クラウドベースTTSモジュール116は、クラウドの実質的に無限のリソースを活用して、テキストデータ(たとえば、自動アシスタント120によって定式化された自然言語応答)を、コンピュータにより生成されたスピーチ出力に変換するように構成されてもよい。いくつかの実装形態では、TTSモジュール116は、コンピュータにより生成されたスピーチ出力を、たとえば1つまたは複数のスピーカーを使用して直接出力されるようにクライアントデバイス106に提供してもよい。他の実装形態では、自動アシスタント120によって生成されたテキストデータ(たとえば、自然言語応答)は、スピーチ取り込み/TTS/STTモジュール114に提供されてもよく、次いでスピーチ取り込み/TTS/STTモジュール114は、テキストデータを、ローカルで出力されるコンピュータにより生成されたスピーチに変換してもよい。
【００３１】
自動アシスタント120(および特に、クラウドベース自動アシスタントコンポーネント119)は、自然言語プロセッサ122と、上述のTTSモジュール116と、上述のSTTモジュール117と、ダイアログ状態トラッカー124と、ダイアログマネージャ126と、自然言語生成器128(いくつかの実装形態では、TTSモジュール116と結合されてもよい)と、本開示に特に関連性のあるステートマシンエンジン130とを含んでもよい。いくつかの実装形態では、自動アシスタント120のエンジンおよび/またはモジュールのうちの1つまたは複数は、省略、結合、かつ/または自動アシスタント120とは別個であるコンポーネントにおいて実装されてもよい。
【００３２】
いくつかの実装形態では、自動アシスタント120は、自動アシスタント120とのヒューマンコンピュータダイアログセッションの間に、クライアントデバイス1061〜Nのうちの1つのユーザによって生成された様々な入力に応答して応答内容を生成する。自動アシスタント120は、ダイアログセッションの一部としてユーザに提示するために、(たとえば、ユーザのクライアントデバイスとは別個であるとき、1つまたは複数のネットワーク上で)応答内容を提供してもよい。たとえば、自動アシスタント120は、クライアントデバイス1061〜Nのうちの1つを介して提供された自由形式自然言語入力に応答して、応答内容を生成してもよい。本明細書で使用する自由形式入力は、ユーザによって定式化され、ユーザによる選択のために提示されたオプションのグループに制約されない入力である。
【００３３】
本明細書で使用する「ダイアログセッション」は、ユーザと自動アシスタント120(および場合によっては、他の人間の参加者)との間の1つもしくは複数のメッセージの論理的に独立した交換、および/または自動アシスタント120による1つもしくは複数の応答アクションの実行を含んでもよい。自動アシスタント120は、セッション間の時間の経過、セッション間のユーザコンテキストの変化(たとえば、ロケーション、スケジュールされたミーティングの前/間/後など)、ユーザと自動アシスタントとの間のダイアログ以外の、ユーザとクライアントデバイスとの間の1つまたは複数の介在する対話の検出(たとえば、ユーザがしばらくの間にアプリケーションを切り替える、ユーザがスタンドアロンの音声起動の製品から立ち去り、次いで後に戻る)、セッション間のクライアントデバイスのロック/スリープ、自動アシスタント120の1つまたは複数のインスタンスとインターフェースするために使用されるクライアントデバイスの変更などの様々な信号に基づいてユーザとの複数のダイアログセッションを区別してもよい。
【００３４】
自動アシスタント120の自然言語プロセッサ122(代替的に「自然言語理解エンジン」と呼ばれる)は、ユーザによってクライアントデバイス1061〜Nを介して生成された自由形式自然言語入力を処理し、いくつかの実装形態では、自動アシスタント120の1つまたは複数の他のコンポーネントによる使用のために、注釈付き出力を生成してもよい。たとえば、自然言語プロセッサ122は、ユーザによってクライアントデバイス1061の1つまたは複数のユーザインターフェース入力デバイスを介して生成される自然言語自由形式入力を処理してもよい。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈と、場合によっては自然言語入力の用語のうちの1つまたは複数(たとえば、全部)とを含んでもよい。
【００３５】
いくつかの実装形態では、自然言語プロセッサ122は、自然言語入力における様々なタイプの文法情報を識別し、注釈を付けるように構成される。たとえば、自然言語プロセッサ122は、用語の文法的役割を用いて用語に注釈を付けるように構成された品詞タグ付け器(図示せず)を含んでもよい。たとえば、品詞タグ付け器は、「名詞」、「動詞」、「形容詞」「代名詞」などのその品詞を用いて各用語にタグ付けしてもよい。また、たとえばいくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、自然言語入力における用語間の構文関係を決定するように構成された係り受け解析器(図示せず)を含んでもよい。たとえば、係り受け解析器は、どの用語が他の用語を修飾するか、文の主語および動詞など(たとえば、構文解析木)を決定してもよく−また、そのような係り受けの注釈を作成してもよい。
【００３６】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、(たとえば、文学の登場人物、有名人、公人などを含む)人々、組織、(現実および想像上の)ロケーションなどへの参照などの1つまたは複数の区分におけるエンティティ参照に注釈を付けるように構成された、エンティティタグ付け器(図示せず)を含んでもよい。いくつかの実装形態では、エンティティについてのデータは、ナレッジグラフ(図示せず)内などの1つまたは複数のデータベース内に記憶されてもよい。いくつかの実装形態では、ナレッジグラフは、知られているエンティティ(および場合によっては、エンティティ属性)を表すノード、ならびに、ノードを接続し、エンティティ間の関係を表すエッジを含んでもよい。たとえば、「バナナ」ノードは、(たとえば、子として)「フルーツ」ノードに接続されてもよく、「フルーツ」ノードは、今度は(たとえば、子として)「生産」および/または「食品」ノードに接続されてもよい。別の例として、"Hypothetical Cafe"と呼ばれるレストランは、その住所、出される食品のタイプ、営業時間、連絡先情報などの属性をも含む、ノードによって表されてもよい。"Hypothetical Cafe"ノードは、いくつかの実装形態では、(たとえば、子と親の関係を表す)エッジによって、「レストラン」ノード、「ビジネス」ノード、レストランが位置する市および/または州を表すノードなどの1つまたは複数の他のノードに接続されてもよい。
【００３７】
自然言語プロセッサ122のエンティティタグ付け器は、(たとえば、人々などのエンティティクラスへのすべての参照の識別を可能にするために)高レベルの粒度において、および/または(たとえば、特定の人物などの特定のエンティティへのすべての参照の識別を可能にするために)より低レベルの粒度において、エンティティへの参照に注釈を付けてもよい。エンティティタグ付け器は、特定のエンティティを解決するために、自然言語入力の内容に依拠してもよく、かつ/または場合によっては、特定のエンティティを解決するために、ナレッジグラフもしくは他のエンティティデータベースと通信してもよい。
【００３８】
いくつかの実装形態では、自然言語プロセッサ122は、追加および/または代替として、1つまたは複数のコンテキスト上の手掛かりに基づいて、同じエンティティへの参照をグループ化または「クラスタ化」するように構成された、同一指示レゾルバ(図示せず)を含んでもよい。たとえば、同一指示レゾルバは、「私は、前回に私たちがそこで食事をしたHypothetical Cafeが気に入りました」という自然言語入力における「そこで」という用語が"Hypothetical Cafe"であると解決するために利用されてもよい。
【００３９】
いくつかの実装形態では、自然言語プロセッサ122の1つまたは複数のコンポーネントは、自然言語プロセッサ122の1つまたは複数の他のコンポーネントからの注釈に依拠してもよい。たとえば、いくつかの実装形態では、名前付きエンティティタグ付け器は、特定のエンティティへのすべての言及に注釈を付ける際に、同一指示レゾルバおよび/または係り受け解析器からの注釈に依拠してもよい。また、たとえばいくつかの実装形態では、同一指示レゾルバは、同じエンティティへの参照をクラスタ化する際に、係り受け解析器からの注釈に依拠してもよい。いくつかの実装形態では、特定の自然言語入力を処理する際に、自然言語プロセッサ122の1つまたは複数のコンポーネントは、1つまたは複数の注釈を決定するために、関係する以前の入力および/または特定の自然言語入力以外の他の関係するデータを使用してもよい。
【００４０】
いくつかの実装形態では、ダイアログ状態トラッカー124は、たとえばヒューマンコンピュータダイアログセッションの間の複数のダイアログセッションにわたる、および/または会議ダイアログセッション中の1人または複数のユーザの目的(または「意図」)の信念状態を含む「ダイアログ状態」を追跡するように構成されてもよい。ダイアログ状態を決定する際に、いくつかのダイアログ状態トラッカーは、ダイアログセッションにおけるユーザおよびシステム発話に基づいて、ダイアログにおいてインスタンス化されるスロットのための最も可能性の高い値を決定しようと努めてもよい。いくつかの技法は、スロットのセット、およびそれらのスロットに関連付けられた値のセットを定義する固定されたオントロジーを利用する。いくつかの技法は、追加または代替として、個々のスロットおよび/または領域に合わせて調整されてもよい。たとえば、いくつかの技法は、各領域における各スロットタイプのためのモデルをトレーニングすることを必要としてもよい。
【００４１】
ダイアログマネージャ126は、たとえばダイアログ状態トラッカー124によって提供された現在のダイアログ状態を、次いで自動アシスタント120によって実行される複数の候補応答アクションのうちの1つまたは複数の「応答アクション」にマッピングするように構成されてもよい。応答アクションは、現在のダイアログ状態に応じて、様々な形態でもよい。たとえば、最後の順番(たとえば、最終的にユーザが所望するタスクが実行されるとき)より前に発生するダイアログセッションの順番に対応する、初期のダイアログ状態および途中のダイアログ状態は、自動アシスタント120が追加の自然言語ダイアログを出力することを含む、様々な応答アクションにマッピングされてもよい。この応答ダイアログは、たとえばユーザが実行することを意図するとダイアログ状態トラッカー124が信じる何らかのアクションのためのパラメータを、ユーザが提供する(すなわち、スロットを満たす)ことの要求を含んでもよい。いくつかの実装形態では、応答アクションは、「要求」(たとえば、スロットを満たすためのパラメータを求める)、「提供」(たとえば、ユーザのためのアクションまたは一連のアクションを提案する)、「選択」、「知らせる」(たとえば、要求された情報をユーザに提供する)、「一致なし」(たとえば、ユーザの最後の入力が理解されないことをユーザに通知する)などのアクションを含んでもよい。
【００４２】
図1では、クライアントデバイス1061〜Nは、本明細書で「セキュリティゾーン」112と呼ばれるものの中に含まれる。セキュリティゾーン112は、それに対するアクセスが1人もしくは複数の人々によって何らかの形で保護されるか、または1人もしくは複数の人々に制限される(たとえば、1人もしくは複数の人々によって制御される)、1つまたは複数のクライアントデバイス106および/または他のコンピューティングリソース(たとえば、以下で説明するリソース134)を含んでもよい。いくつかの実装形態では、セキュリティゾーン112は、1つまたは複数のルータおよび/またはファイアウォールを介して、インターネットなどの1つまたは複数のワイドエリアネットワーク("WAN")に接続される、1つまたは複数の相互接続されたローカルエリアネットワーク("LAN")の形態をとってもよい。たとえば、企業および会社などの多数の組織は、1つまたは複数のファイアウォールなどの1つまたは複数のセキュリティ機構から外側のコンピューティング世界から保護される、企業ネットワークを有する。
【００４３】
ただし、セキュリティゾーン112は、企業ネットワークに限定されない。たとえば、個々の家庭は、1つまたは複数のルータを通して、インターネットアクセスを有する場合があり、それらのルータまたは別個のデバイスもまた、たとえばセキュリティゾーンを有効に定義するWi-Fi LANを提供してもよい。追加または代替として、セキュリティゾーン112は、個人、家族、同僚、部門などの1人または複数の人々によって操作されるクライアントデバイスの協調「エコシステム」の一部を形成する、1つまたは複数のクライアントデバイス106を含んでもよい。いくつかの実装形態では、セキュリティゾーン112は、会計専用の1つまたは複数のネットワーク、人材専用の1つまたは複数のネットワーク、研究および開発("R&D")専用の1つまたは複数のネットワークなどの複数のサブセキュリティゾーンを有してもよい。いくつかのそのような実装形態では、たとえば会計担当者がR&Dコンピューティングリソースにアクセスすることができないように、かつ/またはその逆も同様であるように、これらのサブセキュリティゾーンが互いから保護されてもよい。ヘルスケアのコンテキストでは、セキュリティゾーン112は、たとえば医療保険の携行と責任に関する法律("HIPAA")によって保護される場合がある患者データなどのヘルスケアに関する情報を含む、1つまたは複数のコンピューティングデバイスおよび/またはコンピューティングリソース(たとえば、134)を含んでもよい。
【００４４】
リソース134は、セキュリティゾーン112内で利用可能(たとえば、アクセス可能)であるが、セキュリティゾーン112の外部にあるコンピューティングデバイスにとって一般に利用可能ではない情報を含む、1つまたは複数のデータベース、または他の同様のデータソースを含んでもよい。図1では、リソース134は、クライアントデバイス106とは別個である単一のデータベースとして示されるが、これは限定となるものではない。いくつかの実装形態では、個人ユーザのコンテキストにおいてなどの別個のリソースがなくてもよい。代わりに、すべての保護されたデータが、ユーザによって制御されるクライアントデバイス106上に含まれてもよく、したがって、保護されたデータは、ユーザのクライアントデバイス106の外部から容易にアクセス可能ではない場合がある。
【００４５】
追加または代替として、いくつかの実装形態では、極秘または安全な情報は、セキュリティゾーン112の外部で記憶されてもよいが、セキュリティゾーン112内の1つまたは複数のクライアントデバイス106からアクセス可能でもよい。たとえば、1つまたは複数のクライアントデバイス106は、極秘データを含む、セキュリティゾーン112の外部の1つまたは複数のコンピューティングリソースとともに、仮想プライベートネットワーク("VPN")を確立/維持するように構成されてもよい。極秘データがセキュリティゾーン112内のコンピューティングデバイス上に記憶されていないとしても、それにもかかわらず、その極秘データは、セキュリティゾーン112の外部から、たとえばまったく、または少なくともいくつかのクレデンシャルなしでは、容易にアクセス可能ではない場合がある。したがって、本明細書で説明する技法は、セキュリティゾーン112内のコンピューティングリソースが、セキュリティゾーン112の外部の1つまたは複数のリソースからの極秘情報にアクセスすることを容易にしてもよい。
【００４６】
ユーザが非機密情報を求めて、自動アシスタント120を従事させるとき、応答情報を取得することが簡単である場合がある。1つまたは複数のクラウドベース自動アシスタントコンポーネント119を含んでもよい「オンライン意味プロセッサ」は、ユーザの要求を構文的および/または意味的に処理して、ユーザの意図を決定し、ならびに、ユーザの要求を履行するために満たされるべきである任意のスロットを決定してもよい。たとえば、ユーザが「明日は今日よりも暑くなりますか?」と尋ねると仮定する。この天候に関する要求は、極秘ではなく公的に利用可能な情報を求める。オンライン意味プロセッサは、ユーザの要求を処理して、ユーザの意図(たとえば、外気温比較)と、比較のために使用されるべきスロット値、すなわち「今日」および「明日」とを決定してもよい。オンライン意味プロセッサは、今日の気温(たとえば、高温)と明日の予想気温とを求める1つまたは複数の検索クエリを定式化してもよく、それらの検索クエリを1つまたは複数の汎用検索エンジン、天候ベースの検索エンジンなどに提出してもよい。応答情報を受信すると、オンライン意味プロセッサは(たとえば、自然言語生成器128などのコンポーネントからの支援を受けて)、「明日は今日よりも暑くなるでしょう、摂氏25度ではなく摂氏28度です」などの自然言語応答を定式化してもよい。次いで、この自然言語応答が、1つまたは複数のクライアントデバイス106の1つまたは複数の出力デバイス(たとえば、スピーカー)において出力されてもよい。
【００４７】
対照的に、ユーザが、機密、秘密、極秘、またはそうでなければプライベート情報について、あるいはセキュリティゾーン112の外部のコンピューティングリソースから単に容易に利用可能ではない(したがって、たとえば汎用検索エンジンにとって利用可能ではない)情報についてさえ、自動アシスタント120を従事させるとき、自動アシスタント120は、応答を定式化することが可能ではない場合がある。本明細書で説明する技法は、この状況に対処するように努める。
【００４８】
様々な実装形態では、クラウドベース自動アシスタントコンポーネント119は、上述のステートマシンエンジン130を含んでもよく、ステートマシンエンジン130は、セキュリティゾーン内の1つまたは複数のリソースからプライベート情報(たとえば、秘密情報、極秘データ、セキュリティゾーン112内からのみ利用可能であるデータ)を取得するために、たとえばセキュリティゾーン112内のクライアントデバイス106上で動作している、自動アシスタントクライアント118および/または「ステートマシンインタープリタ」132によって、セキュリティゾーン112内で実行可能であるステートマシンを生成し、かつ/または提供するように構成されてもよい。本明細書で使用するセキュリティゾーン112内の「リソース」は、ユーザによって操作されるクライアントデバイス106、サーバ、データベース(たとえば、134)などのセキュリティゾーン内の任意のコンピューティングデバイスを指す場合がある。
【００４９】
「ステートマシン」は、何らかのアクションを実行するためにコンピューティングデバイスによって実装可能(たとえば、実行可能、またはそうでなければ処理可能)である、任意のルーチンを示すデータを指す場合がある。ステートマシンは、様々な形態において、本明細書で説明する技法に従って分散されてもよい。いくつかの実装形態では、ステートマシンは、拡張マークアップ言語("XML")、ステートチャートXML("SCXML")、ハイパーテキストマークアップ言語("HTML")、統一モデリング言語("UML")、仕様および記述言語("SDL:specification and description language")などのマークアップ言語を使用して記述されたファイルにおいて分散されてもよい。追加または代替として、いくつかの実装形態では、ステートマシンは、たとえば「ジャストインタイム」コンパイルおよび/または解釈を使用して、インタープリタソフトウェア(たとえば、ステートマシンインタープリタ132)によって実行可能である命令として分散されてもよい。たとえば、いくつかの実装形態では、ステートマシンインタープリタ132は、Java仮想マシン(または、別の仮想マシン)のインスタンスでもよく、ステートマシンは、バイトコードの形式において、ステートマシンインタープリタ132に分散され、ステートマシンインタープリタ132によって実装されてもよい。追加または代替として、いくつかの実装形態では、ステートマシンは、コンパイルされたマシンコード、コンパイルされていないソースコード(セキュリティゾーン112内でコンパイルされてもよい)、アセンブリコードなどとして分散されてもよい。
【００５０】
ステートマシンエンジン130は、公的に利用可能ではなく、代わりにセキュリティゾーン112内の1つまたは複数のリソースから/を通してのみ利用可能でもよいデータの要求を、ユーザが自動アシスタント120に提供したシナリオを含む、様々なシナリオにおいて、ステートマシンを生成/選択してもよい。様々な実装形態では、自動アシスタントクライアント118は、ユーザから自由形式自然言語クエリを受信してもよい。自由形式自然言語クエリは、セキュリティゾーン112内の1つまたは複数のリソースから/を通して利用可能であり、セキュリティゾーン112の外部のいかなるコンピューティングリソースからも(たとえば、容易に)アクセス可能ではない場合があるプライベート情報に基づいて回答可能でもよい。
【００５１】
様々な実装形態では、自由形式自然言語入力を示す第1のデータが、1つまたは複数のクラウドベース自動アシスタントコンポーネント119などのセキュリティゾーン112の外部のオンライン意味プロセッサに提供されてもよい。次いで、意味プロセッサは、たとえばステートマシンエンジン130を通して、ステートマシンを示すデータ(「ステートマシンデータ」)を生成/取り出し、セキュリティゾーン112内の1つまたは複数のリソースにステートマシンデータを提供してもよい。前述のように、ステートマシンは、セキュリティゾーン112内の1つまたは複数のリソースからユーザによって求められたプライベート情報を取得するように実行可能でもよい。ステートマシンデータの非限定的な一例について、以下で説明する。
【００５２】
クライアントデバイス106、または別のコンピューティングデバイス(たとえば、ローカルサーバ)などのセキュリティゾーン112内の1つまたは複数のコンピューティングデバイスは、セキュリティゾーン112内のリソースのうちの1つまたは複数から、ユーザによって要求されたプライベート情報を取得するために、ステートマシンエンジン130から受信されたステートマシンを実装してもよい。いくつかの実装形態では、ステートマシンは、ユーザが自動アシスタント120を用いて従事するために操作する同じクライアントデバイス106上で動作しているステートマシンインタープリタ132によって実装されてもよいが、これは必要ではない。
【００５３】
セキュリティゾーン112内のどのコンピューティングリソースがステートマシンを実装しても、ステートマシンの実装によって、コンピューティングリソースがプライベートデータを取得することが可能になる場合がある。たとえば、プライベートデータが、自動アシスタント120を用いて従事するためにユーザによって操作されたクライアントデバイス1061のメモリ内で利用可能であると仮定する。いくつかのそのような実装形態では、ステートマシンインタープリタ1321のローカルインスタンスは、ローカルメモリにアクセスし、プライベートデータを取得するためにステートマシンを実行してもよい。追加または代替として、プライベートデータが、セキュリティゾーン内の異なるコンピューティングリソース(たとえば、134)上で利用可能であると仮定する。ステートマシンインタープリタ1321のローカルインスタンス、またはセキュリティゾーン112内の他の場所で実行している別のインスタンスは、異なるコンピューティングリソースからプライベートデータを取り出してもよい。追加または代替として、プライベートデータが、(たとえば、VPN接続、または別の以前に認証された通信チャネルを介して)セキュリティゾーン112内のコンピューティングリソースにとってセキュリティゾーン112の外部で利用可能であると仮定する。ステートマシンインタープリタ1321のローカルインスタンス、またはセキュリティゾーン112内の他の場所で実行している別のインスタンスは、以前に認証された通信チャネルを使用して外部リソースからプライベートデータを取り出してもよい。
【００５４】
プライベートデータが取り出されると、いくつかの実装形態では、ステートマシンは、データを用いて何らかのアクションがとられることを指示してもよい。たとえば、ユーザが「私の血圧は、過去6か月間で下がりましたか、または上がりましたか?」と尋ねると仮定する。過去6か月間のユーザの血圧データ-たとえば、クライアントデバイス1061のメモリ内に存在する、プライベートデータでもよい−が、取り出されてもよい。次いで、if/elseステートメント、条件ステートメント、switchステートメント、ループなどのステートマシンエンジン130によってステートマシンに織り込まれている論理が、自然言語出力を生成するために、たとえばステートマシンインタープリタ132によって、取り出されたプライベートデータをスロット値として使用して実装されてもよい。この自然言語出力は、ユーザの元の自由形式自然言語クエリに応答する情報を伝えてもよい。血圧の例では、自然言語出力は、「あなたの血圧は上がりました」もしくは「あなたの血圧は下がりました」、または「あなたの血圧は変わっていません」とすることさえ可能である。
【００５５】
図2は、ユーザ202が、スタンドアロンの対話型スピーカーの形態をとるクライアントデバイス206上で少なくとも部分的に実行する自動アシスタント120(図2に図示せず)を用いて従事する例示的なシナリオを示す。この例では、クライアントデバイス206を含む、セキュリティゾーン112が存在する。上述のように、セキュリティゾーン112は、たとえば1つまたは複数のファイアウォールの後ろにある、1つまたは複数の企業ネットワークでもよく、あるいは単にユーザ202によって操作されるクライアントデバイスの協調エコシステムの1つまたは複数のクライアントデバイス(206を含む)に限定されてもよい。
【００５６】
図2では、ユーザ202は、「OK、アシスタント、私のパスワードは何ですか?」という質問を尋ねる。自動アシスタント120は、たとえばファイアウォールおよび/またはルータ240を通して、オンライン意味プロセッサ242に「質問データ」を提供してもよく、オンライン意味プロセッサ242は、上述のように、1つまたは複数のクラウドベース自動アシスタントコンポーネント119を含んでもよい。他の実装形態では、この質問データは、単にユーザの発話の録音を含むデータでもよい。いくつかの実装形態では、この質問データは、ユーザの発話の低次元埋め込み(reduced dimensionality embedding)、および/またはユーザの発話の注釈付きバージョンを含んでもよい。
【００５７】
いずれの場合でも、ファイアウォール/ルータ240は、質問データをオンライン意味プロセッサ242に転送してもよい。オンライン意味プロセッサ242は、たとえばステートマシンエンジン130(図2に図示せず)を通して、ステートマシンを示すデータを生成/選択し、ファイアウォール/ルータ240に提供してもよい。次いで、このステートマシンデータは、たとえばファイアウォール/ルータ240によって、セキュリティゾーン112内のステートマシンインタープリタ132を実行しているコンピューティングリソースに提供されてもよい。いくつかの実装形態では、ステートマシンインタープリタ132は、クライアントデバイス206上で実行中でもよいが、これは必要ではない。
【００５８】
ステートマシンインタープリタ132は、セキュリティゾーン112内の1つまたは複数のリソースからプライベートデータを取り出すために、(たとえば、バイトコードを実行する仮想マシンとして)ステートマシンを実装してもよい。たとえば、ステートマシンインタープリタ132は、たとえばVPNなどの事前認証された通信チャネルを通して、パスワード(“PW”)データベース244への事前認証されたアクセスを有する、コンピューティングデバイス(たとえば、クライアントデバイス206)上で実装されてもよい。対照的に、オンライン意味プロセッサ242、および/またはオンライン意味プロセッサ242にとって利用可能な検索エンジンは、PWデータベース244へのアクセスを有していない場合がある。そのような例では、ステートマシンインタープリタ132は、たとえば事前認証された通信チャネルを使用して、PWデータベース244からスロット値を要求してもよく、PWデータベース244は、要求されたスロット値をステートマシンインタープリタ132に返してもよい。次いで、ステートマシンインタープリタ132は、返されたスロット値を使用して、ユーザ202に提示するための自然言語出力を生成してもよい。たとえば、図2では、クライアントデバイス206は、「あなたのパスワードはN409d*$dsです」という可聴自然言語出力を提供する。
【００５９】
プライベートデータは、セキュリティゾーン112の外部のリソース(PWデータベース244)から最終的に取得されたが、重要なことは、ステートマシンインタープリタ132が、セキュリティゾーン112内のコンピューティングデバイス上のその動作を通して、データを取り出すことができたということである。他の実装形態では、プライベートデータは、セキュリティゾーン112内から利用可能でもよい。たとえば、セキュリティゾーン112がヘルスケアエンティティの内部ネットワークを表す場合、プライベートヘルスケアデータについての自動アシスタント120へのユーザ要求は、セキュリティゾーン112内の1つまたは複数のリソースから履行されてもよい。
【００６０】
図3は、様々な実装形態による、たとえばステートマシンエンジン130によって生成され、かつ/または提供されてもよいステートマシンデータの非限定的な一例を示す。この例では、自動アシスタント120を用いて従事するユーザが、たとえば開発者が1つまたは複数のアプリを調達のためにリストしているオンラインアプリリポジトリから情報を取得することを望む、開発者であると仮定する。開発者のアプリのダウンロード、インストール、または他のメトリックについての情報は、たとえば開発者がオンラインアプリリポジトリで有する管理アカウントにログインする場合のみ、開発者にとって利用可能でもよい。その情報は、他の場合には利用可能ではない、少なくとも公的に利用可能ではない場合がある。開発者が、たとえば自動アシスタント120に、次の要求、すなわち「私のインストールは、4月中よりも5月中の方が多かったですか?」を提供すると仮定する。
【００６１】
図3は、そのような要求に応答して、たとえばステートマシンエンジン130によって生成されてもよい、ステートマシンデータの一例を示す。この例では、コードは明示的なものにすぎず、したがって、一般的に<code>...</code>として示される。4月中のインストールおよび5月中のインストールという2つの値が、開発者によって(少なくとも暗黙的に)求められている。したがって、2つのスロット値であるvalue1およびvalue2が満たされている。第1のスロット値であるvalue1は、METRIC=INSTALLS、from=2017-04-01、およびto=2017-04-30(すなわち、2017年の4月中のインストールの数)というパラメータを満足するデータで満たされる。同様に、第2のスロット値であるvalue2は、METRIC=INSTALLS、from=2017-05-01、およびto=2017-05-30(すなわち、2017年の5月中のインストールの数)というパラメータを満足するデータで満たされる。
【００６２】
図3のステートマシンデータはまた、if/elseステートメントの形式における論理、ならびに、2か月間のインストールの割合の差を決定するために使用されてもよい数式を含む。この論理は、たとえばステートマシンインタープリタ132によって実装可能でもよい。この例では、論理は、value2がvalue1よりも大きい(すなわち、4月中よりも5月中のインストールの方が多い)場合、自然言語出力が「はい。あなたには、5月中に$value2、4月中に$value1があり、"+percentage((value2-value1)/value1) "%の増加です」という形式において生成されてもよいことを指示する。したがって、たとえば5月中に150回のインストール、および4月中に125回のインストールがあった場合、ステートマシンインタープリタ132は、次の自然言語出力、すなわち「はい。あなたには、5月中に150、4月中に125があり、20%の増加です」を生成してもよい。一方、value2がvalue1よりも大きくない(たとえば、4月中よりも5月中のインストールの方が少ない)場合、ステートマシンインタープリタ132によって生成される自然言語出力は、単に「残念ながら、違います。」または何かその趣旨のものでもよい。
【００６３】
上述のように、図3に示されたものなどのステートマシンは、たとえば特定の自由形式自然言語クエリに応答して、オンザフライで(たとえば、クラウドにおいて)生成されてもよい。追加または代替として、いくつかの実装形態では、ステートマシンは、既存のステートマシンのライブラリから選択されてもよい。たとえば、ユーザが「私は糖尿病ですか」と尋ねる場合、そのクエリは、糖尿病に関連付けられた(すなわち、それを証明する)データポイント(たとえば、血糖値、H1Cレベル、BMIなど)のためのスロットを含む、1つまたは複数のステートマシンにマッピングされてもよい。ステートマシンは、要求するユーザのセキュリティゾーン112内のコンポーネント(たとえば、132)に提供され、セキュリティゾーン内のコンピューティングリソースから、または(たとえば、その情報についてユーザにプロンプトを出すことによって)ユーザからのいずれかで、これらのスロット値のうちの1つまたは複数を取得するために、そのコンポーネントによって実装されてもよい。図3に明示されるように、ステートマシンは、どのような値がフェッチされ、スロットを満たすために使用されるかに応じて、「はい、あなたは糖尿病である可能性が高いです」または「いいえ、あなたは健康なようです」などの出力が提供されることを引き起こす、論理(たとえば、if/thenステートメントなど)を含んでもよい。
【００６４】
ヘルスケアに関する例を含む、本明細書で説明する例に加えて、本明細書で説明する技法は、多種多様な他のコンテキストにおいて適用可能でもよい。たとえば、汎用オンライン意味プロセッサおよび/またはカスタムオンライン(たとえば、企業内環境)意味プロセッサは、特定の領域、たとえば会計基準についての膨大な知識を有する場合がある。そのようなオンライン意味プロセッサは、説明する技法に従って分散されるステートマシンに、これらの会計基準を符号化するように構成されてもよい。そうすることで、ユーザは、自動アシスタント120に比較的複雑な会計質問を尋ねることが可能でもよく、自動アシスタント120は、(オンライン意味プロセッサによって提供されたステートマシンを実装することを通して)潜在的に極秘のデータをオンライン意味プロセッサに公開することなしに、応答することが可能でもよい。
【００６５】
図4は、本明細書で開示する実装形態による例示的な方法400を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照しながら説明する。このシステムは、自動アシスタント120を実装するコンピューティングシステムの1つまたは複数のコンポーネントなどの様々なコンピュータシステムの様々なコンポーネントを含んでもよい。また、方法400の動作が特定の順序で示されるが、これは限定となるものではない。1つまたは複数の動作の並べ替え、省略、または追加が行われてもよい。
【００６６】
ブロック402で、システムは、たとえばセキュリティゾーン(112)内の1つまたは複数のプロセッサによって実装された自動アシスタントクライアント(118)において、ユーザから自由形式自然言語クエリを受信してもよい。自由形式自然言語クエリは、セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能でもよい。上述のように、セキュリティ内の1つまたは複数のリソースは、プライベート情報を物理的に記憶する必要はなく、場合によっては、単に、セキュリティゾーン112の外部からのデータを取得するように、(たとえば、VPNなどの事前認証された通信チャネルを用いて)事前構成されてもよい。
【００６７】
ブロック404で、システム、および場合によっては、セキュリティゾーン112内の自動アシスタントクライアント118または別のコンポーネントは、1つまたは複数のクラウドベース自動アシスタントコンポーネント119などの意味プロセッサに、自由形式自然言語入力を示す第1のデータを提供してもよい。特に、意味プロセッサは、たとえばオンライン意味プロセッサとして作用して、セキュリティゾーンの外部にあってもよい。いくつかの実装形態では、オンライン意味プロセッサは、場合によっては要求されたデータを取り出すことができないとき、ステートマシンを取り出し、かつ/または生成してもよい。
【００６８】
ブロック406で、システムは、たとえばセキュリティゾーン112内のプロセッサのうちの1つまたは複数を通して、オンライン意味プロセッサから、ステートマシンを示す第2のデータ(本明細書で「ステートマシンデータ」とも呼ばれる)を受信してもよい。ステートマシンは、セキュリティゾーン内のリソースのうちの1つまたは複数からプライベート情報を取得するために、たとえばステートマシンインタープリタ132、自動アシスタントクライアント118、ローカル仮想マシンなどによって実装可能でもよい。
【００６９】
ブロック408で、システムは、たとえばステートマシンインタープリタ132および/または自動アシスタントクライアント118を通して、セキュリティゾーン内のリソースのうちの1つまたは複数からプライベート情報を取得するために、ステートマシンを実装してもよい。いくつかの実装形態では、ステートマシンを実装することはまた、たとえば取り出されたプライベート情報を使用して、ステートマシン内に含まれる場合がある様々な論理を実行することを含んでもよい。たとえば、ステートマシンは、if/elseステートメント、ループ(再帰的ループを含む)、jumpステートメント、for elseステートメントなどの標準論理を含んでもよい。これらの論理は、取り出されたプライベート情報をスロット値として使用して実装されてもよい。
【００７０】
ブロック410で、システムは(たとえば、ステートマシンインタープリタ132および/または自動アシスタントクライアント118を通して)、たとえばステートマシンおよび取得されたプライベート情報に基づいて、自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成してもよい。ブロック412で、システムは、自動アシスタントクライアント118を通して、1つまたは複数の出力コンポーネントにおいて、ブロック410で生成された自然言語出力を提供してもよい。たとえば、ステートマシンインタープリタ132および/または自動アシスタントクライアント118は、ユーザが自由形式自然言語入力を提供するために使用した入力モダリティに一致する出力モダリティを使用して、出力が提供されることを引き起こしてもよい。ユーザが話した入力を提供した場合、可聴出力が提供されてもよい。ユーザがタイプした入力を提供した場合、視覚的テキスト出力が提供されてもよい(が、可聴出力も同様に提供されることが可能である)。
【００７１】
図5は、場合によっては、本明細書で説明する技法の1つまたは複数の態様を実行するために利用されてもよい、例示的なコンピューティングデバイス510のブロック図である。コンピューティングデバイス510は、典型的には、バスサブシステム512を介していくつかの周辺デバイスと通信する、少なくとも1つのプロセッサ514を含む。これらの周辺デバイスは、たとえばメモリサブシステム525およびファイル記憶サブシステム526を含む記憶サブシステム524と、ユーザインターフェース出力デバイス520と、ユーザインターフェース入力デバイス522と、ネットワークインターフェースサブシステム516とを含んでもよい。入力デバイスおよび出力デバイスは、コンピューティングデバイス510とのユーザ対話を可能にする。ネットワークインターフェースサブシステム516は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
【００７２】
ユーザインターフェース入力デバイス522は、キーボード、およびマウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および/または他のタイプの入力デバイスを含んでもよい。一般に、「入力デバイス」という用語の使用は、コンピューティングデバイス510に、または通信ネットワーク上に情報を入力するためのすべての可能なタイプのデバイスおよび方法を含むものとする。
【００７３】
ユーザインターフェース出力デバイス520は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または可視の画像を作成するための何らかの他の機構を含んでもよい。ディスプレイサブシステムはまた、オーディオ出力デバイスを介してなどの非視覚的ディスプレイを提供してもよい。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス510からユーザに、または別のマシンもしくはコンピューティングデバイスに情報を出力するためのすべての可能なタイプのデバイスおよび方法を含むものとする。
【００７４】
記憶サブシステム524は、本明細書で説明するモジュールの一部または全部の機能を提供する、プログラミングおよびデータ構造を記憶する。たとえば、記憶サブシステム524は、図4の方法の選択された態様を実行するための、ならびに図1に示された様々なコンポーネントを実装するための論理を含んでもよい。
【００７５】
これらのソフトウェアモジュールは、一般に、プロセッサ514によって単独で、または他のプロセッサと組み合わせて実行される。記憶サブシステム524内で使用されるメモリ525は、プログラム実行中に命令およびデータを記憶するためのメインランダムアクセスメモリ(RAM)530と、固定された命令が記憶される読取り専用メモリ(ROM)532とを含む、いくつかのメモリを含むことができる。ファイル記憶サブシステム526は、プログラムおよびデータファイルのための永続的記憶を提供することができ、ハードディスクドライブ、関連付けられたリムーバブル媒体を伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含んでもよい。いくつかの実装形態の機能を実装するモジュールは、記憶サブシステム524内のファイル記憶サブシステム526によって、またはプロセッサ514によってアクセス可能な他のマシン内に記憶されてもよい。
【００７６】
バスサブシステム512は、コンピューティングデバイス510の様々なコンポーネントおよびサブシステムを、意図されるように互いに通信させるための機構を提供する。バスサブシステム512は、単一のバスとして概略的に示されるが、バスサブシステムの代替実装形態は、複数のバスを使用してもよい。
【００７７】
コンピューティングデバイス510は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、異なるタイプのものとすることができる。コンピュータおよびネットワークの常に変化し続ける性質のために、図5に示されたコンピューティングデバイス510についての説明は、いくつかの実装形態を例示するための具体例にすぎないものである。図5に示されたコンピューティングデバイスよりも多いかまたは少ないコンポーネントを有する、コンピューティングデバイス510の多数の他の構成が可能である。
【００７８】
本明細書で説明するいくつかの実装形態が、ユーザについての個人情報(たとえば、他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザのロケーション、ユーザの時間、ユーザのバイオメトリック情報、ならびにユーザのアクティビティおよび人口統計学的情報、ユーザ間の関係など)を収集または使用する場合がある状況では、ユーザには、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、ならびにユーザについての情報がどのように収集、記憶、および使用されるかを制御するための1つまたは複数の機会が提供される。すなわち、本明細書で説明するシステムおよび方法は、そうするための関連するユーザからの明示的な許可の受信時のみ、ユーザ個人情報を収集、記憶、および/または使用する。
【００７９】
たとえば、ユーザには、プログラムまたは特徴がその特定のユーザ、またはプログラムもしくは特徴に関連する他のユーザについてのユーザ情報を収集するかどうかに対する制御が提供される。個人情報が収集されることになる各ユーザには、情報が収集されるかどうかについて、および情報のどの部分が収集されることになるかについての許諾または許可を提供するために、そのユーザに関連する情報収集に対する制御を可能にするための1つまたは複数のオプションが提示される。たとえば、ユーザに、通信ネットワーク上で1つまたは複数のそのような制御オプションを提供することができる。追加として、あるデータは、個人を特定可能な情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われてもよい。一例として、ユーザの識別情報は、個人を特定可能な情報を決定することができないように扱われてもよい。別の例として、ユーザの地理的ロケーションは、ユーザの特定のロケーションを決定することができないように、より広い地域に一般化されてもよい。
【００８０】
いくつかの実装形態について、本明細書で説明および例示したが、機能を実行し、かつ/あるいは、結果および/または本明細書で説明する利点のうちの1つもしくは複数を取得するための、様々な他の手段および/または構造が利用されてもよく、そのような変形形態および/または変更形態の各々は、本明細書で説明する実装形態の範囲内であると見なされる。より一般的には、本明細書で説明するすべてのパラメータ、寸法、材料、および構成は、例示的であるものであり、実際のパラメータ、寸法、材料、および/または構成は、そのために教示が使用される1つまたは複数の特定の適用例に依存することになる。当業者は、本明細書で説明する特定の実装形態の多数の均等物を認識するようになるか、またはせいぜい日常の実験を使用して確認することが可能になる。したがって、上記の実装形態は、例として提示されるにすぎず、添付の特許請求の範囲およびその均等物の範囲内で、実装形態が、具体的に説明および請求するもの以外で実施される場合があることを理解されたい。本開示の実装形態は、本明細書で説明する各個々の特徴、システム、物品、材料、キット、および/または方法を対象とする。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法のいかなる組合せも、そのような特徴、システム、物品、材料、キット、および/または方法が互いに矛盾しない場合、本開示の範囲内に含まれる。
【符号の説明】
【００８１】
106、1061〜N  クライアントコンピューティングデバイス、クライアントデバイス
1061  第1のクライアントデバイス、クライアントデバイス
106N  クライアントデバイス
1071〜N  メッセージ交換クライアント
112  セキュリティゾーン
114  スピーチ取り込み/テキストトゥスピーチ(“TTS”)/スピーチトゥテキスト(“STT”)モジュール、スピーチ取り込み/TTS/STTモジュール
116  クラウドベースTTSモジュール、TTSモジュール
117  クラウドベースSTTモジュール、STTモジュール
118、1181、118N  自動アシスタントクライアント
119  クラウドベース自動アシスタントコンポーネント
120  自動アシスタント
120A  第1の自動アシスタント
120B  第2の自動アシスタント
122  自然言語プロセッサ
124  ダイアログ状態トラッカー
126  ダイアログマネージャ
128  自然言語生成器
130  ステートマシンエンジン
132、1321  ステートマシンインタープリタ
134  リソース、コンピューティングリソース、データベース
202  ユーザ
206  クライアントデバイス
240  ファイアウォールおよび/またはルータ、ファイアウォール/ルータ
242  オンライン意味プロセッサ
244  パスワード(“PW”)データベース、PWデータベース
510  コンピューティングデバイス
512  バスサブシステム
514  プロセッサ
516  ネットワークインターフェースサブシステム
520  ユーザインターフェース出力デバイス
522  ユーザインターフェース入力デバイス
524  記憶サブシステム
525  メモリサブシステム、メモリ
526  ファイル記憶サブシステム
530  メインランダムアクセスメモリ(RAM)
532  読取り専用メモリ(ROM)
【図１】
2021503647.tif 000003
【図２】
2021503647.tif 000004
【図３】
2021503647.tif 000005
【図４】
2021503647.tif 000006
【図５】
2021503647.tif 000007
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
セキュリティゾーン内の1つまたは複数のプロセッサによって実施される方法であって、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信するステップであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、ステップと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供するステップであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、ステップと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信するステップであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、ステップと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために前記ステートマシンを実装するステップと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成するステップと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供するステップと
を含む、方法。
【請求項２】
前記ステートマシンが、
前記自動アシスタントクライアントによって実行可能である命令、および/または
前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロット
を備える、請求項1に記載の方法。
【請求項３】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、
前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリ、および/または
前記セキュリティゾーンを管理するヘルスケア提供者に関連付けられた人々の集団についての医療情報を含む1つまたは複数のデータベース
を含む、請求項1または2に記載の方法。
【請求項４】
前記ステートマシンを実装するステップが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装するステップを含む、請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項1から4のいずれか一項に記載の方法。
【請求項６】
セキュリティゾーン内の1つまたは複数のプロセッサと、前記1つまたは複数のプロセッサと動作可能に結合されるメモリとを備え、前記メモリが命令を記憶し、前記命令が、1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信することであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、受信することと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供することであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、提供することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信することであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、受信することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために前記ステートマシンを実装することと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成することと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供することと
の動作を実行させる、システム。
【請求項７】
前記ステートマシンが、
前記自動アシスタントクライアントによって実行可能である命令、および/または
前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロット
を備える、請求項6に記載のシステム。
【請求項８】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含む、請求項6または7に記載のシステム。
【請求項９】
前記ステートマシンを実装することが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装することを含む、請求項6から8のいずれか一項に記載のシステム。
【請求項１０】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項6から9のいずれか一項に記載のシステム。
【請求項１１】
命令を備える少なくとも1つのコンピュータ可読記憶媒体であって、前記命令が、セキュリティゾーン内の1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって実装された自動アシスタントクライアントにおいて、ユーザから自由形式自然言語クエリを受信することであって、前記自由形式自然言語クエリが、前記セキュリティゾーン内の1つまたは複数のリソースから利用可能であるプライベート情報に基づいて回答可能である、受信することと、
意味プロセッサに、前記自由形式自然言語クエリを示す第1のデータを提供することであって、前記意味プロセッサが前記セキュリティゾーンの外部にある、提供することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記意味プロセッサから、ステートマシンを示す第2のデータを受信することであって、前記ステートマシンが、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために実装可能である、受信することと、
前記セキュリティゾーン内の前記プロセッサのうちの1つまたは複数によって、前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から前記プライベート情報を取得するために、前記ステートマシンを実装することと、
前記ステートマシンおよび前記取得されたプライベート情報に基づいて、前記自由形式自然言語クエリに応答する情報を伝える自然言語出力を生成することと、
前記自動アシスタントクライアントによって、1つまたは複数の出力コンポーネントにおいて、前記自然言語出力を提供することと
の動作を実行させる、コンピュータ可読記憶媒体。
【請求項１２】
前記ステートマシンが、
前記自動アシスタントクライアントによって実行可能である命令、および/または
前記セキュリティゾーン内の前記リソースのうちの1つまたは複数から取得可能である値で満たされることになる1つまたは複数のスロット
を備える、請求項11に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記セキュリティゾーン内の前記1つまたは複数のリソースが、前記自動アシスタントクライアントを実装するコンピューティングデバイスのメモリを含む、請求項11または12に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記ステートマシンを実装することが、前記ステートマシンを形成するバイトコードを実行するためにインタープリタを実装することを備える、請求項11から13のいずれか一項に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記セキュリティゾーンが、1つまたは複数のファイアウォールによって保護される1つまたは複数のネットワークを含む、請求項11から14のいずれか一項に記載のコンピュータ可読記憶媒体。
【国際調査報告】
2021503647.tif 000008
2021503647.tif 000009
2021503647.tif 000010