【文献】
神田 他、マルチドメイン音声対話システムにおける対話履歴を利用したドメイン選択、情報処理学会論文誌、日本、2007.05.15発行、第48巻,第5号、pp.1980−1988
【文献】
冨田 他、WWWによるマルチデータベース検索システム:WebSENA、NTT技術ジャーナル、日本、1998.05.01発行、第10巻、第5号(通巻100号)、pp.55−58
【文献】
鷲崎 他、ハイパーリンクの構造を利用した検索結果の選択手法、情報処理学会研究報告、日本、1999.07.16発行、第99巻、第57号、pp.73−80
【文献】
神田 他、データベース検索タスクにおける対話文脈を利用した音声言語理解、情報処理学会論文誌、日本、2006.06.15発行、第47巻,第6号、pp.1802−1811
【文献】
牛田 他、自律的行動決定モデルに基づく対話エンジン、OMRON TECHNICS、日本、2000.03.20発行、第40巻,第1号、pp.16−21
【文献】
川前 他、メタ検索システム構築の為のデータの構造化に関する研究、第38回 人工知能基礎論研究会&第45回 知識ベースシステム研究会資料、日本、1999.09.29発行、pp.37−42(SIG−FAI/KBS−9902−7)
【文献】
林 他、インターネット情報ナビゲーションサービスTITAN(タイタン)、NTT技術ジャーナル、日本、1996.08.01発行、第8巻、第8号、pp.20−23
(58)【調査した分野】(Int.Cl.,DB名)
前記複数のサービスの選択されたサブセットの複数のサービスの各APIに従い、少なくとも1つのタスクパラメータを変換するステップをさらに含むことを特徴とする請求項1に記載の方法。
前記ユーザ要求を満たすため、前記複数のサービスから、サービスの複数サブセットの相対能力を評価するステップであって、前記複数サブセットのそれぞれは、前記識別された1つ以上の関連するタスクパラメータによる機能を提供する様に動作可能である、ステップと、
前記評価に基づき、前記タスクフローの実行の間の呼び出しのために、サービスの前記複数サブセットの1つを選択するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
前記動作は、前記複数のサービスの選択されたサブセットの複数のサービスの各APIに従い、少なくとも1つのタスクパラメータを変換するステップをさらに含むことを特徴とする請求項8に記載のシステム。
前記動作は、前記複数のサービスの選択されたサブセットの複数のサービスの各APIに従い、少なくとも1つのタスクパラメータを変換するステップをさらに含むことを特徴とする請求項15に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0017】
添付の図面に示すようないくつかの実施形態の例を参照して、種々の技術について詳細に説明する。以下の説明において、本明細書で説明及び参照する1つ以上の態様及び/又は特徴を完全に理解できるように、多くの特定の詳細を説明する。しかし、本明細書で説明及び参照する1つ以上の態様及び/又は特徴は、特定の詳細の一部又は全てを含まずに実施されてもよいことが当業者には明らかとなるだろう。他の例において、周知の処理ステップ及び/又は構造は、本明細書で説明又は参照する態様及び/又は特徴の一部を曖昧にしないために詳細に説明していない。
【0018】
1つ以上の異なる発明が本出願において説明される。また、本明細書で説明する1つ以上の発明に対して、多くの実施形態が本特許出願において説明され、例示する目的でのみ提示される。説明される実施形態は、いかなる意味においても限定されることを意図しない。1つ以上の発明は、開示から容易に明らかとなるように多くの実施形態に広範に適用可能である。当業者が1つ以上の発明を実施できるように、これらの実施形態について十分に詳細に説明する。他の実施形態が利用されてもよく、1つ以上の発明の範囲から逸脱せずに構造的変更、論理的変更、ソフトウェアの変更、電気的変更及び他の変更が行われてもよいことが理解される。従って、1つ以上の発明が種々の変形及び変更を伴って実施されてもよいことが当業者には理解されるだろう。1つ以上の発明の特定の特徴について、本発明の一部を形成する1つ以上の特定の実施形態又は図面を参照して説明する。ここでは、1つ以上の発明の特定の実施形態を例として示す。しかし、そのような特徴は、説明される際に参照される1つ以上の特定の実施形態又は図面において使用されることに限定されないことが理解されるべきである。本発明は、全ての実施形態において存在する必要のある1つ以上の発明の特徴のリストでもなく、1つ以上の発明の全ての実施形態の文字通りの説明でもない。
【0019】
本特許出願において提供される節の表題及び本特許出願の発明の名称は単に便宜上のものであり、本発明を限定するものとして考えられない。
【0020】
互いに通信しているデバイスは、特に指定のない限り互いに継続して通信している必要はない。更に互いに通信しているデバイスは、直接通信してもよく、あるいは1つ以上の仲介を介して間接的に通信してもよい。
【0021】
互いに通信しているいくつかの構成要素を含む一実施形態の説明は、そのような構成要素の全てが必要とされることを示さない。それとは対照的に、種々のオプションの構成要素は、1つ以上の発明の種々の可能な実施形態を例示するために説明される。
【0022】
更に処理ステップ、方法ステップ又はアルゴリズム等を順番に説明するが、そのような処理、方法及びアルゴリズムは別の順番で動作するように構成されてもよい。換言すると、本特許出願で説明されるステップのあらゆる順序又は順番は、本質的に、ステップがその順番で実行されるという要件を示さない。説明する処理のステップは、実際には、どんな順番で実行されてもよい。更にいくつかのステップは、同時に行われるものとして説明されていないか又は示されていない(例えば、1つのステップが他のステップの後に説明される)が同時に実行されてもよい。更に図面に示した処理は、例示された処理が他の変更及び変形を除外することを示さず、例示した処理又はそのステップのいずれも1つ以上の発明に必要であることを示さず、例示した処理が好適であることを示さない。
【0023】
単一のデバイス又は物品が説明される場合、2つ以上のデバイス/物品(それらが協働するか否かに関わらず)が単一のデバイス/物品の代わりに使用されてもよいことが容易に明らかとなるだろう。同様に、2つ以上のデバイス又は物品が説明される場合(それらが協働するか否かに関わらず)、単一のデバイス/物品が2つ以上のデバイス又は物品の代わりに使用されてもよいことが容易に明らかとなるだろう。
【0024】
デバイスの機能性及び/又は特徴は、そのような機能性/特徴を有するものとして明示的に説明されない1つ以上の他のデバイスにより具体化されてもよい。従って、1つ以上の発明の他の実施形態はデバイス自体を含む必要はない。
【0025】
本明細書で説明又は参照する技術及び機構は、理解し易いように単数形で説明する場合がある。しかし、特定の実施形態は、特に指定の無い限り、技術の複数の繰り返し、あるいは機構の複数の具体例を含む。
【0026】
インテリジェント自動アシスタント技術の範囲内で説明するが、本明細書で説明する種々の態様及び技術がソフトウェアとの人間の対話及び/又はコンピュータ化された対話を含む他の技術分野において展開及び/又は適用されてもよいことが理解される。
【0027】
インテリジェント自動アシスタント技術に関する他の態様(例えば、本明細書で説明する1つ以上のインテリジェント自動アシスタントシステムの実施形態により利用され、提供され且つ/又はそれら実施形態において実現される)は、以下の参考文献の1つ以上において開示される。
【0028】
・内容が参考として本明細書に取り入れられる2010年1月18日に出願された米国特許仮出願第61/295,774号「Intelligent Automated Assistant」attorney docket No.SIRIP003P
・内容が参考として本明細書に取り入れられる2006年9月8日に出願された米国特許出願第11/518,292号「Method And Apparatus for Building an Intelligent Automated Assistant」
・内容が参考として本明細書に取り入れられる2009年6月12日に出願された米国特許仮出願第61/186,414号「System and Method for Semantic Auto−Completion」
【0029】
ハードウェアアーキテクチャ
一般に、本明細書で開示するインテリジェント自動アシスタント技術は、ハードウェア又はソフトウェアとハードウェアとの組み合わせにより実現される。例えば、それら技術は、オペレーティングシステムカーネル、独立したユーザプロセス、ネットワークアプリケーションに結び付けられたライブラリパッケージ、専用に構築されたマシン又はネットワークインタフェースカードにおいて実現される。特定の一実施形態において、本明細書で開示する技術は、オペレーティングシステム等のソフトウェア又はオペレーティングシステムで実行するアプリケーションにおいて実現される。
【0030】
本明細書で開示するインテリジェント自動アシスタントの実施形態の少なくとも一部のソフトウェア/ハードウェアハイブリッド実現例は、メモリに格納されたコンピュータプログラムにより選択的に有効にされるか又は再構成されるプログラマブルマシンにおいて実現される。そのようなネットワークデバイスは、種々のネットワーク通信プロトコルを利用するように構成又は設計される複数のネットワークインタフェースを有する。それらマシンの一部に対する一般的なアーキテクチャは、本明細書で開示する説明から明らかになる。特定の実施形態によると、本明細書で開示する種々のインテリジェント自動アシスタントの実施形態の特徴及び/又は機能性の少なくとも一部は、エンドユーザコンピュータシステム、コンピュータ、ネットワークサーバ又はサーバシステム、モバイルコンピューティングデバイス(例えば、パーソナルデジタルアシスタント、移動電話、スマートフォン、ラップトップ又はタブレットコンピュータ等)、民生用電子デバイス、音楽プレーヤ又はあらゆる他の適切な電子デバイス、ルータ又は交換機、あるいはそれらのあらゆる組み合わせ等の1つ以上の汎用ネットワークホストマシンにおいて実現される。少なくともいくつかの実施形態において、本明細書で開示する種々のインテリジェント自動アシスタントの実施形態の特徴及び/又は機能性の少なくとも一部は、1つ以上の仮想コンピューティング環境(例えば、ネットワークコンピューティングクラウド等)において実現される。
【0031】
次に
図3を参照すると、本明細書で開示するインテリジェント自動アシスタントの特徴及び/又は機能性の少なくとも一部分を実現するのに適切なコンピューティングデバイス60を示すブロック図が示される。コンピューティングデバイス60は、例えばエンドユーザコンピュータシステム、ネットワークサーバ又はサーバシステム、モバイルコンピューティングデバイス(例えば、パーソナルデジタルアシスタント、移動電話、スマートフォン、ラップトップ又はタブレットコンピュータ等)、民生用電子デバイス、音楽プレーヤ又はあらゆる他の適切な電子デバイス、あるいはそれらのあらゆる組み合わせ又はその一部である。コンピューティングデバイス60は、無線又は有線に関わらず通信を行うための既知のプロトコルを使用してインターネット等の通信ネットワークを介してクライアント及び/又はサーバ等の他のコンピューティングデバイスと通信するように構成される。
【0032】
一実施形態において、コンピューティングデバイス60は、中央処理装置(CPU)62、インタフェース68及びバス67(PCI(Peripheral Component Interconnect)バス等)を含む。適切なソフトウェア又はファームウェアの制御下で動作する場合、CPU62は、専用に構成されたコンピューティングデバイス又はマシンの機能と関連する特定の機能を実現する役割を有する。例えば少なくとも1つの実施形態において、ユーザのパーソナルデジタルアシスタント(PDA)は、CPU62、メモリ61、65及びインタフェース68を利用してインテリジェント自動アシスタントシステムとして機能するように構成又は設計されてもよい。少なくとも1つの実施形態において、CPU62は、例えばオペレーティングシステム及びあらゆる適切なアプリケーションソフトウェア及びドライバ等を含むソフトウェアモジュール/コンポーネントの制御下で1つ以上の種々のインテリジェント自動アシスタントの機能及び/又は動作を実行させられる。
【0033】
CPU62は、例えばMotorola又はIntel系のマイクロプロセッサ又はMIPS系のマイクロプロセッサのプロセッサ等の1つ以上のプロセッサ63を含む。いくつかの実施形態において、プロセッサ63は、コンピューティングデバイス60の動作を制御するための特別設計のハードウェア(例えば、特定用途向け集積回路(ASIC)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)及びフィールドプログラマブルゲートアレイ(FPGA)等)を含む。特定の一実施形態において、メモリ61(不揮発性ランダムアクセスメモリ(RAM)及び/又は読み出し専用メモリ(ROM))は、CPU62の一部を更に形成する。しかし、メモリがシステムに結合される種々の方法が多く存在する。メモリブロック61は、例えばデータのキャッシュ及び/又は格納、並びに命令のプログラミング等の種々の目的で使用される。
【0034】
本明細書で使用されるように、「プロセッサ」という用語は、従来技術においてプロセッサと呼ばれる集積回路に単に限定されず、マイクロコントローラ、マイクロコンピュータ、プログラマブルロジックコントローラ、特定用途向け集積回路及びあらゆる他のプログラマブル回路を広範に示す。
【0035】
一実施形態において、インタフェース68はインタフェースカード(「ラインカード」と呼ばれる場合もある)として提供される。一般に、それらインタフェースは、コンピューティングネットワークを介するデータパケットの送出及び受信を制御し、場合によってはコンピューティングデバイス60と共に使用される他の周辺装置をサポートする。提供されるインタフェースは、Ethernet(登録商標)インタフェース、フレームリレーインタフェース、ケーブルインタフェース、DSLインタフェース及びトークンリングインタフェース等である。更に、例えばUSB(Universal Serial Bus)、Serial、Ethernet(登録商標)、Firewire、PCI、パラレル、無線周波数(RF)、Bluetooth(登録商標)(tm)、近距離通信(例えば、近接場磁気を使用する)、802.11(WiFi)、フレームリレー、TCP/IP、ISDN、高速Ethernet(登録商標)インタフェース、ギガビットEthernet(登録商標)インタフェース、非同期転送モード(ATM)インタフェース、高速シリアルインタフェース(HSSI)、POS(Point Of Sale)インタフェース及び光ファイバ分散データインタフェース(FDDI)等の種々のインタフェースが提供される。一般に、そのようなインタフェース68は、適切な媒体と通信するのに適切なポートを含む。いくつかの例において、それらインタフェースは、独立したプロセッサを更に含み、いくつかの例においては揮発性及び/又は不揮発性メモリ(例えば,RAM)を含む。
【0036】
図3に示すシステムが本明細書で説明する発明の技術を実現するためのコンピューティングデバイス60の1つの特定のアーキテクチャを示すが、それは、本明細書で説明する特徴及び技術の少なくとも一部分が実現される唯一のデバイスアーキテクチャではない。例えば1つ又は複数のプロセッサ63を有するアーキテクチャが使用され、そのようなプロセッサ63は単一のデバイスに存在するか、複数のデバイスに分散される。一実施形態において、単一のプロセッサ63は、通信及びルーティング計算に対処する。種々の実施形態において、種々のインテリジェント自動アシスタントの特徴及び/又は機能性は、クライアントデバイス(クライアントソフトウェアを実行するスマートフォン又はパーソナルデジタルアシスタント等)及びサーバシステム(以下に更に詳細に説明するサーバシステム等)を含むインテリジェント自動アシスタントシステムにおいて実現される。
【0037】
ネットワークデバイス構成に関係なく、本発明のシステムは、データ、汎用ネットワーク動作のためのプログラム命令及び/又は本明細書で説明するインテリジェント自動アシスタント技術の機能性に関する他の情報を格納するように構成された1つ以上のメモリ又はメモリモジュール(例えば、メモリブロック65等)を採用する。プログラム命令は、例えばオペレーティングシステム及び/又は1つ以上のアプリケーションの動作を制御する。1つ又は複数のメモリは、データ構造、キーワード分類情報、広告情報、ユーザクリック及びインプレッション情報、並びに/あるいは本明細書で説明する他の特定の非プログラム情報を格納するように更に構成される。
【0038】
そのような情報及びプログラム命令が本明細書で説明するシステム/方法を実現するために採用されるため、少なくともいくつかのネットワークデバイスの実施形態は、例えば本明細書で説明する種々の動作を実行するためのプログラム命令及び状態情報等を格納するように構成又は設計される非一時的な機械可読記憶媒体を含む。そのような非一時的な機械可読記憶媒体の例は、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープ等の磁気媒体、CD−ROMディスク等の光媒体、フロプティカルディスク等の光磁気媒体、並びに読み出し専用メモリ素子(ROM)、フラッシュメモリ、メモリスタメモリ及びランダムアクセスメモリ(RAM)等のプログラム命令を格納及び実行するように専用に構成されるハードウェアデバイスを含むが、これらに限定されない。プログラム命令の例は、コンパイラに生成されるような機械コードと、インタプリタを使用してコンピュータにより実行される高水準コードを含むファイルとを含む。
【0039】
一実施形態において、本発明のシステムは、スタンドアロンコンピューティングシステムにおいて実現される。次に
図4を参照すると、少なくとも1つの実施形態に従って、スタンドアロンコンピューティングシステムにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するためのアーキテクチャを示すブロック図が示される。コンピューティングデバイス60は、インテリジェント自動アシスタント1002を実現するためのソフトウェアを実行するプロセッサ63を含む。入力デバイス1206は、例えばキーボード、タッチスクリーン、マイク(例えば、音声入力用)、マウス、タッチパッド、トラックボール、十字スイッチ、ジョイスティック及び/又はそれらのあらゆる組み合わせを含むユーザ入力を受信するのに適切なあらゆる種類の入力デバイスである。出力デバイス1207は、スクリーン、スピーカ、プリンタ及び/又はそれらのあらゆる組み合わせである。メモリ1210は、ソフトウェアを実行中にプロセッサ63が使用する従来技術において既知であるような構造及びアーキテクチャを有するランダムアクセスメモリである。記憶装置1208は、デジタル形式でデータを格納するあらゆる磁気記憶装置、光学記憶装置及び/又は電気記憶装置であり、例としては、フラッシュメモリ、磁気ハードドライブ及び/又はCD−ROM等がある。
【0040】
別の実施形態において、本発明のシステムは、分散コンピューティングネットワークにおいて実現され、例えば1つ又は複数のクライアント及び/又はサーバを有する。次に
図5を参照すると、少なくとも1つの実施形態に従って分散コンピューティングネットワークにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するアーキテクチャを示すブロック図が示される。
【0041】
図5に示す構成において、1つ又は複数のクライアント1304が提供される。各クライアント1304は、本発明のクライアント側部分を実現するソフトウェアを実行する。更に、クライアント1304から受信した要求に対処するために1つ又は複数のサーバ1340が提供されてもよい。クライアント1304及びサーバ1340は、インターネット等の電子ネットワーク1361を介して互いに通信する。ネットワーク1361は、例えば有線及び/又は無線プロトコルを含むあらゆる既知のネットワークプロトコルを使用して実現される。
【0042】
また、一実施形態において、サーバ1340は、追加の情報を取得する必要がある場合、あるいは特定のユーザとの先の対話に関する格納データを参照する必要がある場合に外部サービス1360を呼び出す。外部サービス1360との通信は、例えばネットワーク1361を介して行われる。種々の実施形態において、外部サービス1360は、ハードウェアデバイス自体と関連するか又はハードウェアデバイス自体にインストールされたウェブ対応サービス及び/又は機能性を含む。例えばアシスタント1002がスマートフォン又は他の電子デバイスにおいて実現される一実施形態において、アシスタント1002は、カレンダアプリケーション(「app」)に格納された情報、連絡先及び/又は他のソースを取得できる。
【0043】
種々の実施形態において、アシスタント1002は、それがインストールされた電子デバイスの多くの特徴及び動作を制御できる。例えばアシスタント1002は、デバイスにおいて従来のユーザインタフェースを使用して開始される機能及び動作を実行するために、APIを介して又は他の手段によりデバイスの機能性及びアプリケーションとインタフェースする外部サービス1360を呼び出す。そのような機能及び動作は、例えばアラーム設定、通話、テキストメッセージ又は電子メールメッセージの送出及びカレンダイベントの追加等を含む。そのような機能及び動作は、ユーザとアシスタント1002との間の会話ダイアログのコンテキストにおいてアドオン機能として実行される。そのような機能及び動作は、そのようなダイアログのコンテキストにおいてユーザにより指定されるか、あるいはダイアログのコンテキストに基づいて自動的に実行される。従って、アシスタント1002は、電子デバイスの種々の動作を開始及び制御する制御機構として使用され、これはボタン又はグラフィカルユーザインタフェース等の従来の機構の代替機構として使用される。
【0044】
例えばユーザは、「I need to wake tomorrow at 8am」等の入力をアシスタント1002に提供する。アシスタント1002がユーザの意図を判定すると、本明細書で説明する技術を使用して、アシスタント1002は、デバイスのアラームクロック機能又はアプリケーションとインタフェースするために外部サービス1340を呼び出す。アシスタント1002は、ユーザの代わりにアラームを設定する。このように、ユーザはアラームを設定する従来の機構又はデバイスの他の機能を実行する従来の機構の代替機構としてアシスタント1002を使用する。ユーザの要求が曖昧であるか又は更なる説明を必要とする場合、アシスタント1002は、適切なサービス1340が呼び出され且つ意図した行動が行われるように必要な情報を取得するために能動的な導出、言い換え及び提案等を含む本明細書で説明する種々の技術を使用できる。一実施形態において、アシスタント1002は、機能を実行するためにサービス1340を呼び出す前にユーザに確認を指示する。一実施形態において、ユーザは、特定のサービス1340を呼び出すためのアシスタント1002の能力を選択的に無効にできるか、あるいは要望に応じてそのようなサービス呼び出しの全てを無効にできる。
【0045】
本発明のシステムは、多くの種々のクライアント1304及び動作モードにより実現される。次に
図6を参照すると、いくつかの種々のクライアント1304及び動作モードを例示するシステムアーキテクチャを示すブロック図が示される。
図6に示す種々のクライアント1304及び動作モードは単なる例示であり、本発明のシステムは図示した以外のクライアント1304及び/又は動作モードを使用して実現可能であることが当業者には理解されるだろう。更にシステムは、そのようなクライアント1304及び/又は動作モードのいずれか又は全てを単独で又はあらゆる組み合わせで含むことができる。図示する例は以下を含む。
【0046】
・入出力デバイス及び/又はセンサを含むコンピュータデバイス1402。クライアント構成要素は、あらゆるそのようなコンピュータデバイス1402において展開される。少なくとも1つの実施形態は、ウェブブラウザ1304A又はネットワーク1361を介するサーバ1340との通信を可能にする他のソフトウェアアプリケーションを使用して実現される。入出力チャネルは、例えば視覚及び/又は聴覚チャネルを含むいかなる種類のチャネルであってもよい。例えば一実施形態において、本発明のシステムは、音声通信方法を使用して実現され、ウェブブラウザの均等物が音声により駆動され且つ出力に音声を使用する視覚障害者のためのアシスタントの一実施形態を可能にする。
【0047】
・クライアントが移動体デバイス1304Bでアプリケーションとして実現されるI/O及びセンサを含む移動体デバイス1406。これは、移動電話、スマートフォン、パーソナルデジタルアシスタント、タブレットデバイス及びネットワーク化ゲームコンソールを含むがこれらに限定されない。
【0048】
・クライアントが機器1304Cにおいて組み込みアプリケーションとして実現されるI/O及びセンサを含む民生用機器1410。
【0049】
・クライアントが組み込みシステムアプリケーション1304Dとして実現されるダッシュボードインタフェース及びセンサを含む自動車及び他の乗り物1414。これは、自動車のナビゲーションシステム、音声制御システム及び車載エンターテイメントシステム等を含むがこれらに限定されない。
【0050】
・クライアントがデバイス常駐アプリケーション1304Eとして実現されるルータ等のネットワーク化コンピューティングデバイス1418、あるいはネットワークに常駐するか又はネットワークとインタフェースするあらゆる他のデバイス。
【0051】
・アシスタントの一実施形態が電子メールモダリティサーバ1426を介して接続される電子メールクライアント1424。電子メールモダリティサーバ1426は通信ブリッジとして動作し、例えばアシスタントに送出された電子メールメッセージとしてユーザからの入力を取り込んだり、アシスタントからユーザに応答として出力を送出したりする。
【0052】
・アシスタントの一実施形態がメッセージングモダリティサーバ1430を介して接続されるインスタントメッセージングクライアント1428。メッセージングモダリティサーバ1430は、通信ブリッジとして動作し、アシスタントに送出されたメッセージとしてユーザからの入力を取り込んだり、応答の際にアシスタントからユーザにメッセージとして出力を送出したりする。
【0053】
・アシスタントの一実施形態がVoIP(Voice over IP (インターネットプロトコル))モダリティサーバ1430を介して接続される音声電話1432。VoIPモダリティサーバ1430は、通信ブリッジとして動作し、アシスタントに話した音声としてユーザからの入力を取り込んだり、応答の際にアシスタントからユーザに例えば合成音声として出力を送出したりする。
【0054】
電子メール、インスタントメッセージング、ディスカッションフォーラム、グループチャットセッション、ライブヘルプ又は顧客サポートセッション等を含むがこれらに限定されないメッセージングプラットフォームの場合、アシスタント1002は会話の参加者として動作する。アシスタント1002は、1対1の対話のために本明細書で説明する1つ以上の技術及び方法を使用して、会話を監視し且つ個人又はグループに応答する。
【0055】
種々の実施形態において、本発明の技術を実現する機能性は、1つ又は複数のクライアント及び/又はサーバ構成要素に分散される。例えば種々のソフトウェアモジュールは、本発明と関連する種々の機能を実行するために実現され、そのようなモジュールは、サーバ及び/又はクライアント構成要素で実行するために種々の形態で実現される。次に
図7を参照すると、一実施形態に従って本発明を実現するために互いに通信するクライアント1304及びサーバ1340の一例が示される。
図7は、ソフトウェアモジュールがクライアント1304及びサーバ1340の間で分散される1つの可能な構成を示す。図示する構成は単なる例示であり、そのようなモジュールは多くの種々の方法で分散されることが当業者には理解されるだろう。更に1つ又は複数のクライアント1304及び/又はサーバ1340が提供されてもよく、モジュールは多くの種々の方法のうちのいずれかによりそれらクライアント1304及び/又はサーバ1340の間で分散される。
【0056】
図7の例において、入力導出機能性及び出力処理機能性はクライアント1304及びサーバ1340の間で分散され、入力導出のクライアント部分1094a及び出力処理のクライアント部分1092aはクライアント1304に配置され、入力導出のサーバ部分1094b及び出力処理のサーバ部分1092bはサーバ1340に配置される。以下の構成要素はサーバ1340に配置される。
【0057】
・完全な用語集1058b
・言語パターン認識器の完全なライブラリ1060b
・短期個人メモリのマスタバージョン1052b
・長期個人メモリのマスタバージョン1054b
【0058】
一実施形態において、クライアント1304は、応答性を向上し且つネットワーク通信への依存性を低減するためにそれら構成要素の部分集合及び/又は部分をローカルに維持する。そのような部分集合及び/又は部分は、周知のキャッシュ管理技術に従って維持及び更新される。そのような部分集合及び/又は部分は、例えば以下を含む。
【0059】
・用語集の部分集合1058a
・言語パターン認識器のライブラリの部分集合1060a
・短期個人メモリのキャッシュ1052a
・長期個人メモリのキャッシュ1054a
【0060】
追加の構成要素は、サーバ1340の一部として実現され、例えば以下を含む。
・言語インタプリタ1070
・ダイアログフロープロセッサ1080
・出力プロセッサ1090
・ドメインエンティティデータベース1072
・タスクフローモデル1086
・サービスオーケストレーション1082
・サービス機能モデル1088
【0061】
これら構成要素の各々について以下に更に詳細に説明する。サーバ1340は、必要に応じて外部サービス1360とインタフェースすることにより追加の情報を取得する。
【0062】
概念的アーキテクチャ
次に
図1を参照すると、インテリジェント自動アシスタント1002の特定の一実施形態の概略ブロック図が示される。本明細書において更に詳細に説明するように、インテリジェント自動アシスタントシステムの種々の実施形態は、一般にインテリジェント自動アシスタント技術に関連する種々の動作、機能性及び/又は特徴を提供するように構成され、設計され且つ/又は動作可能である。また、本明細書で更に詳細に説明するように、本明細書で開示するインテリジェント自動アシスタントシステムの種々の動作、機能性及び/又は特徴の多くは、インテリジェント自動アシスタントシステムとインタフェースする種々のエンティティに対して種々の利点及び/又は利益を有効にするか又は提供する。
図1に示す実施形態は、上述したハードウェアアーキテクチャのいずれかを使用して又は異なる種類のハードウェアアーキテクチャを使用して実現される。
【0063】
例えば種々の実施形態によると、少なくともいくつかのインテリジェント自動アシスタントシステムは、例えば1つ以上の以下の動作、機能性及び/又は特徴(あるいはそれらの組み合わせ)等の種々の動作、機能性及び/又は特徴を提供するように構成され、設計され且つ/又は動作可能である。
【0064】
・製品及びサービスを発見し、見つけ出し、選択するため、特に購入、予約又は注文するためにインターネットを介して利用可能なデータ及びサービスの適用を自動化する。これらのデータ及びサービスを使用する処理を自動化することに加え、インテリジェント自動アシスタント1002は、いくつかのデータソース及びサービスを組み合わせて1度に使用することを可能にする。例えばインテリジェント自動アシスタントは、いくつかのレビューサイトからの製品に関する情報を組み合わせ、複数の販売者からの入手の可能性及び価格をチェックし、場所及び時間制約をチェックし、ユーザの問題に対する個人的な解決策を見つけやすくする。
【0065】
・やるべきこと(映画、イベント、演奏、展示、ショー及び観光名所を含むがこれらに限定されない)、行くべき場所(旅行先、滞在するホテル及び他の場所、ランドマーク及び他の興味のある場所等を含むがこれらに限定されない)、飲食場所(レストラン及びバー等)、他の人との待ち合わせ時間及び場所、並びにインターネットで見つけられる可能性がある社会的交流又は娯楽のあらゆる他のソースを発見し、調査し、選択するため、特に予約するか又は知るためにインターネットを介して利用可能なデータ及びサービスの使用を自動化する。
【0066】
・探索(場所に基づく探索を含む)と、ナビゲーション(地図及び方向)と、データベースの参照(名前又は他の特性によりビジネス又は人を見つける等)と、天気の状態及び予報の取得と、市場アイテムの価格又は金融取引の状態のチェックと、交通又はフライトの状態の監視と、カレンダ及びスケジュールへのアクセス及び更新と、リマインダ、アラート、タスク及びプロジェクトの管理と、電子メール又は他のメッセージングプラットフォームを介する通信と、デバイスのローカル又はリモートでの動作(例えば、電話をかけたり、照明及び温度を制御したり、ホームセキュリティデバイスを制御したり、音楽又はビデオを再生したりする)とを含むグラフィカルユーザインタフェースを有する専用アプリケーションにより提供される自然言語ダイアログを介してアプリケーション及びサービスの動作を可能にする。一実施形態において、アシスタント1002は、デバイスにおいて利用可能な多くの機能及びアプリケーションを開始、動作及び制御するために使用される。
【0067】
・自然言語での対話ダイアログとデータ及びサービスへの自動アクセスとから利点が得られるアクティビティ、製品、サービス、娯楽のソース、時間管理又は他のあらゆる種類の推薦サービスの個人的な推薦を提供する。
【0068】
種々の実施形態によると、インテリジェント自動アシスタント1002により提供される種々の機能、動作、行動及び/又は他の特徴の少なくとも一部分が1つ以上のクライアントシステム、1つ以上のサーバシステム及び/又はそれらの組み合わせにおいて実現される。
【0069】
種々の実施形態によると、アシスタント1002により提供される種々の機能、動作、行動及び/又は他の特徴の少なくとも一部分は、例えば
図33に関して図示され且つ説明されるような自動呼出し及び応答手順の少なくとも1つの実施形態により実現される。
【0070】
更に本明細書で説明するアシスタント1002の種々の実施形態は、既存のインテリジェント自動アシスタント技術と比較して、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等である多くの種々の利点及び/又は利益を含むか又は提供する。
【0071】
・ドメイン、タスク、サービス及びダイアログの明示的なモデルの集合により制約される音声−テキスト及び自然言語理解技術の統合。汎用人工知能システムを実現しようとするアシスタント技術とは異なり、本明細書で説明する実施形態は、解決策の数をより扱いやすいサイズに減少するために制約の複数のソースを適用する。この結果、言語の曖昧な解釈が減少し、関連するドメイン又はタスクが減少し、サービスにおける意図を動作可能にする方法が減少する。特定のドメイン、タスク及びダイアログに注目することにより、人間が管理する用語集及び意図からサービスパラメータへのマッピングによりドメイン及びタスクにわたる有効範囲を達成できる。
【0072】
・ユーザの問題のためにAPIを使用してインターネットを介してサービスを呼び出すことによりそれらユーザの問題を解決する能力。リンク及びコンテンツのみを返す検索エンジンとは異なり、本明細書で説明する自動アシスタント1002のいくつかの実施形態は、探索及び問題解決アクティビティを自動化する。所定の要求に対して複数のサービスを呼び出す能力は、例えば製品又はサービスを生成するか又はやるべきことを見つけるために単一のサイトを訪れることにより達成される機能性より広範な機能性をユーザに提供する。
【0073】
・ユーザ要求の解釈及び実行の際の個人情報及び個人対話履歴の適用。従来の検索エンジン又は質問応答サービスとは異なり、本明細書で説明する実施形態は、個人対話履歴(例えば、ダイアログの履歴及び結果からの先の選択等)、個人物理的コンテキスト(例えば、ユーザの場所及び時間)及び対話のコンテキストにおいて収集された個人情報(例えば、名前、電子メールアドレス、物理アドレス、電話番号、アカウント番号及び嗜好等)の情報を使用する。これらの情報源を使用することにより、例えば以下のことが可能になる。
【0074】
・ユーザ入力のより適切な解釈(例えば、言語を解釈する時に個人の履歴及び物理的コンテキストを使用する)
・より個人的な結果(例えば、嗜好又は最近の選択に偏る)
・ユーザに対する効率の向上(例えば、サービスへのサインアップ又はフォームの記入を含むステップを自動化することにより)
・ユーザ入力の自然言語を解釈する際のダイアログの履歴の使用。実施形態は、個人の履歴を保持し、ユーザ入力に対して自然言語理解を適用するため、現在の場所、時間、ドメイン、タスクステップ及びタスクパラメータ等のダイアログコンテキストを使用して新しい入力を解釈する。従来の検索エンジン及びコマンドプロセッサは、ダイアログの履歴に関係なく少なくとも1つのクエリを解釈する。ダイアログの履歴を使用する能力は、より自然な解釈を可能にし、これは普通の人間の会話に類似する。
【0075】
・アシスタント1002がユーザの入力を解釈するのに使用した同一のモデル及び情報に基づいてユーザからの入力を能動的に誘導及び制約する能動的入力導出。例えばアシスタント1002は、要求を改善しているユーザとのダイアログにおいて次のステップを提案するためにダイアログモデルを適用するか、ドメイン及びコンテキスト別の可能性に基づいて部分的にタイプされた入力を補完するか、あるいはテキストとしての音声の曖昧な解釈又は意図としてのテキストの曖昧な解釈のうちから選択するために意味的解釈を使用する。
【0076】
・動的でロバスト性を有するサービスオーケストレーションを伴うサービスの明示的なモデル化及び動的管理。説明する実施形態のアーキテクチャにより、アシスタント1002は、多くの外部サービスとインタフェースでき、特定のユーザ要求に対して情報を提供するサービスを動的に判定でき、ユーザ要求のパラメータを種々のサービスAPIにマッピングでき、複数のサービスを1度に呼び出すことができ、複数のサービスからの結果を統合でき、失敗したサービスに対して適切にフェールオーバでき、且つ/又はAPI及び機能が進化するのに伴いサービスの実現を効率的に維持できる。
【0077】
・アシスタント1002を構築する方法及び装置としてアクティブオントロジを使用する。それにより、自動アシスタントシステムのソフトウェアエンジニアリング及びデータ維持が簡略化される。アクティブオントロジは、アシスタントに対するデータモデル化及び実行環境の統合である。それらは、種々のモデル及びデータのソース(ドメインの概念、タスクフロー、用語集、言語パターン認識器、ダイアログコンテキスト、ユーザ個人情報、並びにドメイン及びタスク要求から外部サービスへのマッピング)を結びつけるためのフレームワークを提供する。本明細書で説明するアクティブオントロジ及び他のアーキテクチャの発明は、ドメイン内に深い機能性を構築して複数の情報源及びサービスを統一し、これをドメインの集合にわたり行うことを実現する。
【0078】
少なくとも1つの実施形態において、インテリジェント自動アシスタント1002は、特定のタスク及び/又は動作を実行する時に種々のデータ及び/又は他の種類の情報を利用及び/又は生成するように動作可能である。これは、例えば入力データ/情報及び/又は出力データ/情報を含む。例えば少なくとも1つの実施形態において、インテリジェント自動アシスタント1002は、例えば1つ以上のローカル及び/又はリモートメモリ、デバイス及び/又はシステム等の1つ以上の種々のソースからの情報にアクセスし、それを処理し且つ/又は利用するように動作可能である。更に少なくとも1つの実施形態において、インテリジェント自動アシスタント1002は、例えば1つ以上のローカル及び/又はリモートデバイス及び/又はシステムのメモリに格納される1つ以上の種々の出力データ/情報を生成するように動作可能である。
【0079】
インテリジェント自動アシスタント1002がアクセス及び/又は利用する種々の入力データ/情報の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むが、それらに限定されない。
【0080】
・移動電話及びタブレット等の移動体デバイス、マイク付きコンピュータ、Bluetooth(登録商標)ヘッドセット、自動車音声制御システム、電話システム、応答サービスにおける記録、統合メッセージングサービスにおけるオーディオ音声メール、クロック無線等の音声入力を有する民生用アプリケーション、電話局、ホームエンターテイメント制御システム及びゲームコンソールからの音声入力。
【0081】
・コンピュータ又は移動体デバイスのキーボード、リモートコントロール又は他の民生用電子デバイスのキーパッド、アシスタントに送出された電子メールメッセージ、アシスタントに送出されたインスタントメッセージ又は類似するショートメッセージ、マルチユーザゲーム環境においてプレーヤから受信されるメッセージ、メッセージ供給においてストリームされるテキストからのテキスト入力。
【0082】
・センサ又は場所に基づくシステムから入力される場所情報。例は、移動電話における全地球測位システム(GPS)及びアシストGPS(A−GPS)を含む。一実施形態において、場所情報は、明示的なユーザ入力と組み合わされる。一実施形態において、本発明のシステムは、既知の住所情報及び現在の場所判定に基づいてユーザが家にいる時を検出できる。このように、家の外にいる時とは反対に家にいる時にユーザが興味がある可能性のある情報の種類、並びにユーザが家にいるかいないかに依存してユーザのために呼び出されるべきでるサービス及び行動の種類に関して特定の推論が行われる。
【0083】
・クライアントデバイスのクロックからの時間情報。これは、例えば現地時間及び時間帯を示す電話又は他のクライアントデバイスの時間を含む。更に、時間は例えば「in an hour」及び「tonight」等の句を解釈するためにユーザ要求のコンテキストにおいて使用される。
【0084】
・方位磁石、加速度計、ジャイロスコープ及び/又は移動速度データ、並びに移動体デバイス、ハンドヘルドデバイス又は自動車制御システム等の組み込みシステムからの他のセンサデータ。これは、リモートコントロールから機器及びゲームコンソールへのデバイス測位データを含む。
【0085】
・グラフィカルユーザインタフェース(GUI)を有するあらゆるデバイスにおけるGUIからのクリック事象、メニュー選択事象及び他の事象。更なる例は、タッチスクリーンへのタッチを含む。
【0086】
・アラームクロック、カレンダアラート、価格変更トリガ、場所トリガ及びサーバからデバイスへの押下通知等のセンサからの事象及び他のデータ駆動トリガ。
【0087】
本明細書で説明する実施形態に対する入力は、ダイアログ及び要求履歴を含むユーザ対話履歴のコンテキストを更に含む。
【0088】
インテリジェント自動アシスタント1002により生成される種々の出力データ/情報の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0089】
・出力デバイス及び/又はデバイスのユーザインタフェースに直接送出されるテキスト出力
・電子メールを介してユーザに送出されるテキスト及び図形
・メッセージングサービスを介してユーザに送出されるテキスト及び図形
・音声出力。これは以下のうちの1つ以上(又はそれらの組み合わせ)を含む。
【0090】
・合成音声
・サンプリング音声
・記録メッセージ
・写真、リッチテキスト、ビデオ、音及びハイパーリンクを含む情報のグラフィックレイアウト。例えば、ウェブブラウザでレンダリングされたコンテンツ。
【0091】
・電源をオン又はオフにしたり、音を出したり、色を変更したり、振動させたり、あるいは照明を制御したりするなどデバイスに対する物理的行動を制御するためのアクチュエータ出力。
【0092】
・マッピングアプリケーションの呼び出し、電話の音声ダイヤル、電子メール又はインスタントメッセージの送出、メディアの再生、カレンダ、タスクマネージャ及びメモアプリケーションへの入力、並びに他のアプリケーション等のデバイス上の他のアプリケーションの呼び出し。
【0093】
・リモートカメラの動作、車椅子の制御、リモートスピーカでの音楽の再生及びリモートディスプレイでのビデオの再生等のデバイスにより接続又は制御されるデバイスに対する物理的行動を制御するためのアクチュエータ出力。
【0094】
図1のインテリジェント自動アシスタント1002は、実現される広範なインテリジェント自動アシスタントシステムの実施形態の一例であることが理解される。インテリジェント自動アシスタントシステムの他の実施形態(不図示)は、例えば
図1のインテリジェント自動アシスタントシステムの実施形態の例において図示される構成要素/特徴と比較して、追加の構成要素/特徴、より少ない構成要素/特徴及び/又は異なる構成要素/特徴を含んでもよい。
【0095】
ユーザ対話
図2を参照すると、インテリジェント自動アシスタント1002の少なくとも1つの実施形態とユーザとの間の対話の一例が示される。
図2の例は、ユーザが音声入力機構である入力デバイス1206を使用してインテリジェント自動アシスタント1002に話しており、出力がスクロール可能な画面である出力デバイス1207に対するグラフィックレイアウトであることを仮定する。会話画面101Aは、ユーザが言ったこと101B(「I'd like a romantic place for Italian food near my office(オフィスの近くでロマンティックなイタリアンフードの場所が好き)」)と、その結果の要約101C(「OK, I found these Italian restaurants which reviews say are romantic close to your work:(OK、あなたの職場近くでレビューでロマンティックと言われているイタリアンレストランを見つけました。)」)及び結果の集合101D(レストランのリストの最初の3つが表示される)であるアシスタント1002の応答とを示す会話ユーザインタフェースを特徴とする。この例において、ユーザはリストの最初の結果をクリックし、結果が自動的に開いて情報画面101Eに示すレストランに関する更なる情報を見せる。情報画面101E及び会話画面101Aは、タッチスクリーン又は他の表示装置等の同一の出力デバイスに表示される。すなわち、
図2に示す例は同一の出力デバイスに対する2つの異なる出力状態である。
【0096】
一実施形態において、情報画面101Eは、例えば以下のうちのいずれか又は全てを含む種々のサービスから収集され組み合わされた情報を示す。
【0097】
・お店の住所及びジオロケーション(位置情報?)
・ユーザの現在地からの距離
・複数のソースからのレビュー
【0098】
一実施形態において、情報画面101Eは、以下を含むアシスタント1002がユーザのために提供するサービスのいくつかの例を更に含む。
・お店に電話をするためにダイヤルする(「発信」)
・将来参照するためにこのレストランを記憶する(「save(保存)」)
・このレストランに関する道順及び情報を誰かに電子メールで送出する(「share(共有)」)
・地図上にこのレストランの場所及び道順を表示する(「map it(地図で表示)」)
・このレストランに関する個人的なメモを保存する(「my notes(メモ)」)
【0099】
図2の例に示すように、一実施形態において、アシスタント1002は、例えば以下のような単純なデータベースアプリケーションを超えた知能を含む。
・単にキーワードではなく、自然言語での意図の表現101Bを処理する。
・その言語入力から意味的な意図を推測する。例えば、「place for Italian food(イタリアンフードの場所)」を「Italian restaurants(イタリアンレストラン)」と解釈する。
・意味的な意図をオンラインサービスを使用する戦略にして動作可能にし、その戦略をユーザのために実行する(例えば、ロマンティックな場所という希望を、場所を「romantic(ロマンティック)」と説明するレビューをオンラインレビューサイトでチェックする戦略にして動作可能にする)。
インテリジェント自動アシスタント構成要素
【0100】
種々の実施形態によると、インテリジェント自動アシスタント1002は、複数の種々の構成要素、デバイス、モジュール、処理及びシステム等を含み、これらは、例えばハードウェア及び/又はハードウェアとソフトウェアとの組み合わせを使用して実現及び/又はインスタンス化される。例えば
図1の実施形態の例に示すように、アシスタント1002は以下の種類のシステム、構成要素、デバイス及び処理等(あるいは、それらの組み合わせ)のうちの1つ以上を含む。
【0101】
・1つ以上のアクティブオントロジ1050
・能動的入力導出構成要素1094(クライアント部分1094a及びサーバ部分1094bを含む)
・短期個人メモリ構成要素1052(マスタバージョン1052b及びキャッシュ1052aを含む)
・長期個人メモリ構成要素1054(マスタバージョン1054b及びキャッシュ1054aを含む)
・ドメインモデル構成要素1056
・用語集構成要素1058(完全な用語集1058b及び部分集合1058aを含む)
・言語パターン認識器構成要素1060(フルライブラリ1060b及び部分集合1560aを含む)
・言語インタプリタ構成要素1070
・ドメインエンティティデータベース1072
・ダイアログフロープロセッサ構成要素1080
・サービスオーケストレーション構成要素1082
・サービス構成要素1084
・タスクフローモデル構成要素1086
・ダイアログフローモデル構成要素1087
・サービスモデル構成要素1088
・出力プロセッサ構成要素1090
【0102】
図7と関連して説明するように、特定のクライアント/サーバを用いた実施形態において、これら構成要素の一部又は全てはクライアント1304とサーバ1340との間で分散される。
【0103】
次に、例示する目的で、インテリジェント自動アシスタント1002の特定の一実施形態の例の種々の構成要素の少なくとも一部分について、
図1のインテリジェント自動アシスタント1002の実施形態の例を参照して更に詳細に説明する。
【0104】
アクティブオントロジ1050
アクティブオントロジ1050は、モデル、構成要素及び/又はインテリジェント自動アシスタント1002の実施形態の他の部分からのデータを統合する統一インフラストラクチャとして動作する。コンピュータ及び情報科学の分野において、オントロジは、クラス/種類、関係、属性/特性及びインスタンスにおけるそれらのインスタンス化等のデータ及び知識表現に対する構造を提供する。例えばオントロジは、データ及び知識のモデルを構築するために使用される。インテリジェント自動アシスタント1002のいくつかの実施形態において、オントロジは、ドメインモデル等のモデルを構築するためのモデル化フレームワークの一部である。
【0105】
本発明の状況において、「アクティブオントロジ」1050は、別個の処理要素がオントロジのように構成される実行環境として動作する(例えば、別個の属性及び他の処理要素との関係を有する)。これらの処理要素は、インテリジェント自動アシスタント1002のタスクの少なくとも一部を実行する。アクティブオントロジ1050はいくつでも提供できる。
【0106】
少なくとも1つの実施形態において、アクティブオントロジ1050は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0107】
・モデル化及び開発環境として動作し、種々のモデル及びデータ構成要素からのモデル及びデータを統合する。これは以下を含むが、それらに限定されない。
・ドメインモデル1056
・用語集1058
・ドメインエンティティデータベース1072
・タスクフローモデル1086
・ダイアログフローモデル1087
・サービス機能モデル1088
【0108】
・オントロジを用いた編集ツールが新しいモデル、データ構造、データベーススキーマ及び表現を開発するように動作するデータモデル化環境として動作する。
【0109】
・ライブ実行環境として動作し、ドメイン1056、タスク1086及び/又はダイアログモデル1087の要素、言語パターン認識器、並びに/あるいは用語集1058に対する値と、短期個人メモリ1052、長期個人メモリ1054及び/又はサービスオーケストレーション1182の結果において見つけられるようなユーザ別の情報とをインスタンス化する。例えばアクティブオントロジのいくつかのノードは、レストラン及びその特性であるレストラン名等のドメイン概念に対応する。ライブ実行中、これらのアクティブオントロジノードは、特定のレストランエンティティの一致及びその名前と、その名前が自然言語入力発話における単語に対応する方法とによりインスタンス化される。従って、本実施形態において、アクティブオントロジは、レストランが名前を有する一致を含むエンティティであるという概念を指定し、自然言語の構文解析及びエンティティデータベースのデータとそれらモデル化ノードとの動的な結合を格納するモデル化環境として動作している。
【0110】
・例えば以下のうちの1つ以上(又はそれらの組み合わせ)等のインテリジェント自動アシスタントの構成要素及び処理要素の間での通信及び連携を可能にする。
・能動的入力導出構成要素1094
・言語インタプリタ構成要素1070
・ダイアログフロープロセッサ構成要素1080
・サービスオーケストレーション構成要素1082
・サービス構成要素1084
【0111】
一実施形態において、本明細書で説明するアクティブオントロジ1050の機能、動作、行動及び/又は他の特徴の少なくとも一部分は、2006年9月8日に出願された米国特許出願第11/518,292号公報「インテリジェント自動アシスタントの構築のための方法及び装置(Method and Apparratus for Building an Inetlligent Automated Assistant)」において説明される種々の方法及び装置を使用して少なくとも部分的に実現される。
【0112】
少なくとも1つの実施形態において、アクティブオントロジ1050の所定のインスタンスは、1つ以上の関連データベースの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。アクティブオントロジ1050によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むが、それらに限定されない。
【0113】
・インテリジェント自動アシスタント1002の1つ以上の構成要素から入手可能である静的データ。
【0114】
・ユーザセッション毎に動的にインスタンス化され、例えばインテリジェント自動アシスタント1002の構成要素間でやり取りされるユーザ別の入力及び出力の状態、短期個人メモリのコンテンツ及びユーザセッションの先の状態から行われる推論等を維持するがそれらに限定されないデータ。
【0115】
このように、アクティブオントロジ1050は、インテリジェント自動アシスタント1002における種々の構成要素の要素を統一するために使用される。アクティブオントロジ1050により、文書作成者、設計者又はシステム構築者は、1つの構成要素の要素が他の構成要素の要素により識別されるように構成要素を統合できる。従って、文書作成者、設計者又はシステム構築者は、構成要素をより簡単に組み合わせて統合できる。
【0116】
次に
図8を参照すると、一実施形態に従ってアクティブオントロジ1050の一部の一例が示される。この例は、アクティブオントロジ1050により提供される種々の機能、動作、行動及び/又は他の特徴の一部を容易に例示することを意図する。
【0117】
図8のアクティブオントロジ1050は、レストラン及び食事事象の表現を含む。この例において、レストランは、名前1612、提供料理1615及び場所1613等の特性を含む概念1610であり、これは、住所1614に対する特性を有する構造化ノードとしてモデル化される。食事事象の概念は、ダイニングパーティ1617(サイズ1619を有する)及び期間1618を含むノード1616としてモデル化される。
【0118】
・アクティブオントロジは、ドメインモデル1056を含み且つ/又は参照する。例えば
図8は、レストラン概念1610及び食事事象概念1616にリンクされる外食ドメインモデル1622を示す。このインスタンスにおいて、アクティブオントロジ1050は、外食ドメインモデル1622を含み、特にアクティブオントロジ1050の少なくとも2つのノード、すなわちレストラン1610及び食事事象1616は、外食ドメインモデル1622に含まれ且つ/又は参照される。このドメインモデルは、特に外食がレストランで発生する食事事象を含むという観念を表す。アクティブオントロジのレストラン1610及び食事事象1616のノードは、
図8の点線で示されるように、インテリジェント自動アシスタントの他の構成要素に更に含まれ且つ/又は参照される。
【0119】
・アクティブオントロジは、タスクフローモデル1086を含み且つ/又は参照する。例えば
図8は、ドメイン別の事象の種類、すなわち食事事象1616に適用されるドメインに依存しない事象の計画をモデル化する事象計画タスクフローモデル1630を示す。ここでは、アクティブオントロジ1050は、一般的な事象計画タスクフローモデル1630を含み、このモデルは、事象を表すノード及びそれら事象を計画する際に含まれる他の概念を含む。アクティブオントロジ1050は、特定の種類の事象である食事事象1616のノードを更に含む。この例において、食事事象1616は、ドメインモデル1622及びタスクフローモデル1630に含まれるか又は参照され、これらモデルの双方は、アクティブオントロジ1050に含まれ且つ/又は参照される。ここでも、食事事象1616は、
図8の点線で示されるように、インテリジェント自動アシスタントの他の構成要素に含まれ且つ/又は参照される種々の構成要素の要素を統一する。
【0120】
・アクティブオントロジは、ダイアログフローモデル1087を含み且つ/又は参照する。例えば
図8は、概念1619で表されるような制約パーティサイズでインスタンス化されるトランザクションに必要な制約の値を得るためのダイアログフローモデル1642を示す。ここでも、アクティブオントロジ1050は、ダイアログフローモデル1087等の種々の構成要素を関連付け且つ統一するためのフレームワークを提供する。この場合、ダイアログフローモデル1642は、アクティブオントロジのパーティサイズ1619のノードに対してこの特定の例においてインスタンス化される制約の一般的な概念を有する。この特定のダイアログフローモデル1642は、ドメインに依存せずに制約の抽象的概念で動作する。アクティブオントロジ1050は、食事事象ノード1616に関連するパーティノード1617のパーティサイズ特性1619を表す。そのような一実施形態において、インテリジェント自動アシスタント1002は、アクティブオントロジ1050を使用して、外食に対するドメインモデル1622の一部である食事事象概念1616を表すノードのクラスタの一部であるパーティサイズ1619の特性とダイアログフローモデル1642における制約の概念とを統一する。
【0121】
・アクティブオントロジは、サービスモデル1088を含み且つ/又は参照する。例えば
図8は、トランザクションを実行するためにレストラン予約サービス1672に必要とされる値を得るためのダイアログフローステップと関連付けられたレストラン予約サービスのモデルを示す。このインスタンスにおいて、レストラン予約サービスに対するサービスモデル1672は、予約がパーティサイズ1619に対する値(予約するテーブルに座る人数)を必要とすることを指定する。アクティブオントロジ1050の一部である概念のパーティサイズ1619は、トランザクションに対する制約に関してユーザに尋ねる一般的なダイアログフローモデル1642にリンクされるか又は関連付けられる。このインスタンスにおいて、パーティサイズは、ダイアログフローモデル1642に対する要求される制約である。
【0122】
・アクティブオントロジは、ドメインエンティティデータベース1072を含み且つ/又は参照する。例えば
図8は、アクティブオントロジ1050のレストランノード1610に関連付けられたレストラン1652のドメインエンティティデータベースを示す。アクティブオントロジ1050は、インテリジェント自動アシスタント1002の種々の構成要素により使用されるようなレストラン1610の一般的な概念を表し、これは、レストランデータベース1652の特定のレストランに関するデータによりインスタンス化される。
【0123】
・アクティブオントロジは、用語集データベース1058を含み且つ/又は参照する。例えば
図8は、Italian(イタリアン)及びFrench(フレンチ)等の料理1662と、「French(フレンチ)」、「continental(コンチネンタル)」及び「provincial(地方料理)」等の各料理と関連付けられる単語との用語集データベースを示す。アクティブオントロジ1050は、提供料理ノード1615に関連するレストランノード1610を含み、提供料理ノード1615は、料理データベース1662の表現と関連付けられる。「French」等の料理に対するデータベース1662中の特定のエントリは、提供料理1615の概念のインスタンスとしてアクティブオントロジ1050を介して関連付けられる。
【0124】
・アクティブオントロジは、オントロジ1050における概念又は他の表現にマッピングされるあらゆるデータベースを含み且つ/又は参照する。ドメインエンティティデータベース1072及び用語集データベース1058は、アクティブオントロジ1050がデータベースを互いに統合し且つ自動アシスタント1002の他の構成要素と統合する方法の単なる2つの例である。アクティブオントロジにより、文書作成者、設計者又はシステム構築者は、データベースにおける表現とオントロジ1050における表現との間の自明でないマッピングを指定できる。例えばレストランデータベース1652に対するデータベーススキーマは、文字列及び数字のテーブルとして、あるいはビジネスのより大きなデータベースからの映像として、あるいはデータベース1652に適するあらゆる他の表現としてレストランを表す。このアクティブオントロジ1050の例において、レストラン1610は、データベーステーブルとは異なる方法で編成された特性及び関係を有する概念ノードである。この例において、オントロジ1050のノードは、データベーススキーマの要素と関連付けられる。データベース及びオントロジ1050の統合により、アクティブオントロジ1050のモデル及びデータのより大きい集合に関してデータベースの特定のデータエントリを解釈し且つそれに作用するための統一表現を提供する。例えば単語「French」は、料理データベース1662のエントリであってもよい。この例において、データベース1662がアクティブオントロジ1050において統合されるため、同一の単語「French」はレストランにおいて提供される可能な料理としての解釈も有し、これは食事事象を計画する際に関係し、この料理はレストラン予約サービス等を使用する時に使用する制約としての役割を有する。アクティブオントロジは、自動アシスタント1002の他の構成要素と相互に動作するようにデータベースをモデル化及び実行環境に統合する。
【0125】
上述したように、アクティブオントロジ1050により、文書作成者、設計者又はシステム構築者は、構成要素を統合できる。従って、
図8の例において、ダイアログフローモデル1642における制約等の構成要素の要素は、レストラン予約サービス1672の必要とされるパラメータ等の他の構成要素の要素により識別される。
【0126】
アクティブオントロジ1050は、例えばモデル、データベース及び構成要素の間の関係が以下のいずれかであるようなモデル、データベース及び構成要素の構成として具体化される。
・コンテナ関係及び/又は含有
・リンク及び/又はポインタとの関係
・プログラム内及びプログラム間のAPIを介するインタフェース
【0127】
例えば
図9を参照すると、インテリジェント自動アシスタントシステム1002の別の実施形態の一例が示される。ここで、ドメインモデル1056、用語集1058、言語パターン認識器1060、短期個人メモリ1052及び長期個人メモリ1054の構成要素はアクティブオントロジ1050と関連付けられた共通のコンテナの下で編成され、能動的入力導出構成要素1094、言語インタプリタ1070及びダイアログフロープロセッサ1080等の他の構成要素は、API関係を介してアクティブオントロジ1050と関連付けられる。
【0128】
能動的入力導出構成要素1094
少なくとも1つの実施形態において、能動的入力導出構成要素1094(これは、上述したように、スタンドアロン構成又はサーバ及びクライアント構成要素を含む構成において実現される)は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0129】
・ユーザ又はユーザの環境からの入力、並びに/あるいは要望又は要求に関する情報を導出し、容易にし且つ/又は処理する。例えばユーザがレストランを見つけるために調べている場合、入力導出モジュールは、場所、時間、料理及び価格等に対するユーザの制約又は嗜好に関する情報を得る。
【0130】
・例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々のソースからの種々の入力を容易にする。
・キーボード又はテキストを生成するあらゆる他の入力デバイスからの入力
・部分的な入力の提案された動的な補完を提供するユーザインタフェースにおけるキーボードからの入力
・音声入力システムからの入力
・ユーザが選択肢を示すためにグラフィックオブジェクトをクリック、選択又は直接操作するグラフィカルユーザインタフェース(GUI)からの入力
・電子メール、テキストメッセージング又は他のテキスト通信プラットフォームを含むテキストを生成し且つそれを自動アシスタントに送出する他のアプリケーションからの入力
【0131】
能動的入力導出を実行することにより、アシスタント1002は、入力処理の初期段階で意図の曖昧性を除去できる。例えば入力が音声で提供される一実施形態において、波形はサーバ1340に送出され、サーバ1340において、用語が抽出され且つ意味的解釈が行われる。そのような意味的解釈の結果は、能動的入力導出を駆動するために使用され、意味的な適合度及び音声上の一致に基づいて選択できる別の候補単語をユーザに提供する。
【0132】
少なくとも1つの実施形態において、能動的入力導出構成要素1094は、アシスタント1002の実施形態により提供される1つ以上のサービスにより作用される入力にユーザを能動的、自動的且つ動的に誘導する。次に
図10を参照すると、一実施形態に従って能動的入力導出構成要素1094に対する動作方法を示すフローチャートが示される。
【0133】
手順が開始する(20)。ステップ21において、アシスタント1002は、1つ以上の入力チャネルにおいてインタフェースを提供する。例えばユーザインタフェースは、会話による対話のいずれかの段階において、話すユーザオプション、タイプするユーザオプション又はタップするユーザオプションを提供する。ステップ22において、ユーザは、音声の記録を開始するボタンを押下したり、又はタイプするためのインタフェースを表示したりするなど、1つのモダリティにおける入力を開始することにより入力チャネルを選択する。
【0134】
少なくとも1つの実施形態において、アシスタント1002は、選択したモダリティに対するデフォルトの提案を提供する(23)。すなわち、アシスタント1002は、ユーザがそのモダリティにおけるいずれかの入力を入力する前に現在のコンテキストにおいて関連するオプション24を提供する。例えば、テキスト入力モダリティにおいて、アシスタント1002は、例えば命令形の動詞(例えば、find(検索)、buy(購入)、reserve(予約)、get(取得)、call(発信)、check(確認)及びschedule(計画)等)、名詞、(例えば、restaurants(レストラン)、movies(映画)、events(イベント)及びbusinesses(ビジネス)等)、あるいは会話のドメインに名前をつけるメニューのようなオプション(例えば、weather(天気)、sports(スポーツ)及びnews(ニュース)等)のうちの1つ以上等のテキストの要求又はコマンドを開始する共通の単語のリストを提供する。
【0135】
ユーザが25においてデフォルトのオプションのうちの1つを選択し、自動サブミットに対する嗜好が設定される(30)場合、手順は即座に戻る。これは、従来のメニュー選択の動作に類似する。
【0136】
しかし、初期オプションは部分的な入力として取り入れられるか、あるいはユーザは部分的な入力の入力を開始している(26)。少なくとも一実施形態において、ユーザは、入力のいずれかの時点において、部分的な入力が完了していること(22)示すことを選択し、それにより手順は戻る。
【0137】
28において、選択されたか入力されたかに関係なく、最新の入力は累積入力に追加される。
【0138】
29において、システムは、関連し且つ/又は有意義な入力を構成するものに対する制約の他のソース及び現在の入力を仮定して、関連する次の可能な入力を提案する。
【0139】
少なくとも1つの実施形態において、ユーザ入力に対する制約のソース(例えば、ステップ23及び29において使用される)は、アシスタント1002に含まれる種々のモデル及びデータソースのうちの1つ以上であり、これらは、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0140】
・用語集1058。例えば、現在の入力に一致する単語又は句が提案される。少なくとも1つの実施形態において、用語集は、アクティブオントロジ、ドメインモデル、タスクモデル、ダイアログモデル及び/又はサービスモデルのうちのいずれか1つ以上のノードと関連付けられる。
【0141】
・ドメインモデルをインスタンス化するか又はドメインモデルと整合性のある入力を制約するドメインモデル1056。例えば少なくとも1つの実施形態において、ドメインモデル1056は、現在の入力と整合性のある概念、関係、特性及び/又はインスタンスを提案するために使用される。
【0142】
・現在の入力における成句、句、文法構成又は他のパターンを認識するために使用され、パターンを完全にする補完を提案するために使用される言語パターン認識器1060。
【0143】
・入力(例えば、ビジネス名、映画名及びイベント名等)に一致するドメインの可能なエンティティを提案するために使用されるドメインエンティティデータベース1072。
【0144】
・先の入力又は先の入力の一部分、並びに/あるいはユーザとの対話の履歴に関するあらゆる他の特性又は事実をマッチングするために使用される短期メモリ1052。例えば部分的な入力は、仮想的(例えば、クエリで示される)及び/又は物理的(例えば、場所センサから判定されるように)であるか否かに関わらずセッション中にユーザが移動した都市とマッチングされる。
【0145】
・少なくとも1つの実施形態において、最近の入力、要求又は結果の意味的な言い換えは、現在の入力とマッチングされる。例えばユーザが「live music(ライブ音楽)」を以前に要求してコンサートリストを取得しており、且つ能動的入力導出環境において「music(音楽)」をタイプした場合、提案は「live music」及び/又は「concerts(コンサート)」を含む。
【0146】
・長期メモリからの一致するアイテムを提案するために使用される長期個人メモリ1054。そのような一致するアイテムは、例えば、保存されるドメインエンティティ(例えば、「お気に入りの」レストラン、映画、劇場及び場所等)、to−do(なすべきこと)アイテム、リストアイテム、カレンダエントリ、連絡先/電話帳における人の名前、並びに連絡先/電話帳において示される道路名又は都市名等のうちの1つ以上又はそれらの組み合わせを含む。
【0147】
・タスクフローにおける次の可能なステップに基づいて入力を提案するために使用されるタスクフローモデル1086。
【0148】
・ダイアログフローにおける次の可能なステップに基づいて入力を提案するために使用されるダイアログフローモデル1087。
【0149】
・名前、カテゴリ、機能又はモデルにおけるあらゆる他の特性により採用する可能なサービスを提案するために使用されるサービス機能モデル1088。例えば、ユーザは好適なレビューサイト名の一部をタイプし、アシスタント1002は、レビューのためのレビューサイトをクエリするための完全なコマンドを提案する。
【0150】
少なくとも1つの実施形態において、能動的入力導出構成要素1094は、会話インタフェース、例えばユーザ及びアシスタントが会話のように相互に発話することにより通信するインタフェースをユーザに提示する。能動的入力導出構成要素1094は、種々の会話インタフェースを実行及び/又は実現するように動作可能である。
【0151】
少なくとも1つの実施形態において、能動的入力導出構成要素1094は、アシスタント1002がダイアログモデルに従ってユーザからの情報を入力指示するために複数回の会話のやり取りを使用する種々の会話インタフェースを実行及び/又は実現するように動作可能である。ダイアログモデルは、例えばサービスを実行するのに必要な情報を導出するのに必要とされる一連のステップ等のダイアログを実行する手順を表す。
【0152】
少なくとも1つの実施形態において、能動的入力導出構成要素1094は、ユーザのタイプ中、話し中又は入力作成中に制約及びガイダンスをユーザにリアルタイムで提供する。例えば能動的導出は、アシスタント1002の一実施形態により認識可能であり且つ/又はアシスタント1002の実施形態により提供される1つ以上のサービスによりサービスが提供されるテキスト入力をタイプするようにユーザを誘導する。これは、ユーザの労力が有用である可能性のある入力に集中することを可能にし、且つ/又はユーザが入力している時にアシスタント1002の実施形態が入力の解釈をリアルタイムで適用することを可能にするため、ユーザからの制約のない入力を受動的に待つより有利である。
【0153】
本明細書で説明する能動的入力導出の機能、動作、行動及び/又は他の特徴の少なくとも一部分は、2006年9月8日に出願された米国特許出願第11/518,292号「インテリジェント自動アシスタントの構築のための方法及び装置(Method And Apparatus for Building an Intelligent Automated Assistant)」において説明される種々の方法及び装置を使用して少なくとも部分的に実現される。
【0154】
特定の実施形態によると、能動的入力導出構成要素1094の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。
【0155】
種々の実施形態によると、能動的入力導出構成要素1094の1つ以上の異なるスレッド又はインスタンスは、能動的入力導出構成要素1094の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。能動的入力導出構成要素1094の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガする条件又は事象の種々の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0156】
・ユーザセッションの開始。例えばユーザセッションがアシスタント1002の一実施形態であるアプリケーションを開始する場合、インタフェースは、例えば音声入力システムを開始するためにボタンを押下するか又はテキスト入力セッションを開始するためにテキストフィールドをクリックすることにより、ユーザが入力を開始する機会を提供する。
・検出されたユーザ入力。
・アシスタント1002が質問に対する応答を要求するか又は選択する次のステップのメニューを提供する時のような、アシスタント1002がユーザに入力を明示的に指示する時。
・アシスタント1002が、ユーザがトランザクションを実行するのを容易にしており、例えばフォームに入力するなど、そのトランザクションのためのデータを収集している時。
【0157】
少なくとも1つの実施形態において、能動的入力導出構成要素1094の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。能動的入力導出構成要素1094によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0158】
・テキスト入力において使用する可能な単語のデータベース
・テキスト入力会話において使用する可能な句の文法
・音声入力の可能な解釈のデータベース
・ユーザ又は他のユーザからの先の入力のデータベース
・アシスタント1002の実施形態の一部である種々のモデル及びデータソースのいずれかからのデータ。これは以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0159】
・ドメインモデル1056
・用語集1058
・言語パターン認識器1060
・ドメインエンティティデータベース1072
・短期メモリ1052
・長期個人メモリ1054
・タスクフローモデル1086
・ダイアログフローモデル1087
・サービス機能モデル1088
【0160】
種々の実施形態によると、能動的入力導出構成要素1094は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)に対して能動的導出手順を適用する。
・タイプされた入力
・音声入力
・ジェスチャを含むグラフィカルユーザインタフェース(GUI)からの入力
・ダイアログにおいて提供された提案からの入力
・計算及び/又は検出環境からの事象
【0161】
能動的タイプ入力導出
図11を参照すると、一実施形態に従って能動的タイプ入力導出の方法を示すフローチャートが示される。
【0162】
方法が開始される(110)。アシスタント1002は、例えば入力デバイス1206を介して部分的なテキスト入力を受信する(111)。部分的なテキスト入力は、例えばそれまでにテキスト入力フィールドにタイプされた文字を含む。ユーザは、例えばEnterキーを押下することにより、タイプ入力が完了していることをいかなる時点で示してもよい(112)。完了していない場合、提案生成器は、候補提案116を生成する(114)。これらの提案は、本明細書で説明する情報源又は制約のいずれかに基づく構文的な提案、意味的な提案及び/又は他の種類の提案である。提案が選択される場合(118)、入力は選択された提案を含むように変換される(117)。
【0163】
少なくとも1つの実施形態において、提案は現在の入力に対する拡張を含む。例えば「rest」に対する提案は「restaurants」である。
【0164】
少なくとも1つの実施形態において、提案は現在の入力の部分の置き換えを含む。例えば、「rest」に対する提案は「places to eat(食事をする場所)」である。
【0165】
少なくとも1つの実施形態において、提案は現在の入力の部分の置き換え及び言い換えを含む。例えば現在の入力が「find restaurants of style」である場合、提案は「italian」であり、その提案が選択される場合、入力全体は「find Intalian restaurants」と書き換えられる。
【0166】
少なくとも1つの実施形態において、結果として得られる返される入力は、118で行われた選択に関する情報がテキスト入力と共に保存されるように注釈をつけられる(119)。これにより、例えば文字列の基礎となる意味的な概念又はエンティティが返された時にその文字列と関連付けられることが可能になり、その後の言語の解釈の精度が向上する。
【0167】
図12〜
図21を参照すると、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットが示される。スクリーンショットは、カリフォルニア州クパチーノのアップル・インコーポレイテッドにより市販されているiPhone等のスマートフォンで実現されるようなアシスタント1002の一実施形態の一例を示す。入力は、オンスクリーンキーボード機能性を含むタッチスクリーンを介してそのようなデバイスに提供される。スクリーンショットは単なる例示である一実施形態を示し、本発明の技術は他のレイアウト及び構成を使用して他のデバイスにおいて実現されることが当業者には理解されるだろう。
【0168】
図12において、画面1201は、フィールド1203に入力が提供されていない時に示される最上位レベルの提案の集合1202を含む。これは、入力のない場合に
図11のステップ114に適用される
図10の入力のないステップ23に対応する。
【0169】
図13において、画面1301は、オンスクリーンキーボード1304を使用してフィールド1203に入力された部分的なユーザ入力1305の提案された補完1303を提供するために用語集を使用する一例を示す。これらの提案された補完1303は、能動的入力導出1094の機能の一部である。ユーザは文字列「comm」を含む部分的なユーザ入力1305を入力している。用語集構成要素1058は、提案された補完1303として一覧表示される3つの異なる種類のインスタンスへのこの文字列のマッピングを提供している。句「community&local events」は事象ドメインのカテゴリであり、「chambers of commerce」はローカルビジネス探索ドメインのカテゴリであり、「Jewish Community Center」はローカルビジネスのインスタンス名である。用語集構成要素1058は、データ参照及びこれらのような名前空間の管理を提供する。ユーザは、入力を入力することを終了したことを示すためにGoボタン1306をタップできる。これにより、アシスタント1002は、ユーザ入力の単位として補完されたテキスト列に進む。
【0170】
図14において、画面1401は、部分文字列「wh」1305に対する提案された意味的な補完1303がタイプされたパラメータを有する句全体を含む一例を示す。これらの種類の提案は、本明細書で説明する入力制約の種々のモデル及びソースの1つ以上を使用することにより可能になる。例えば
図14に示す一実施形態において、「what is happening in city」は、ローカル事象ドメインの場所パラメータの能動的導出である。「where is business name」は、ローカルビジネス探索ドメインのビジネス名の能動的導出である。「what is showing at the venue name」は、ローカル事象ドメインの場所名の制約の能動的導出である。「what is playing at the movie theater」は、ローカル事象ドメインの映画館名の制約の能動的導出である。これらの例は、提案された補完が先に入力されたクエリのデータベースから単純に得られるのではなくモデルにより生成されることを示す。
【0171】
図15において、画面1501は、ユーザが追加のテキスト1305をフィールド1203に入力した後の同一の例の続きを示す。提案された補完1303は、追加のテキスト1305に一致するように更新される。この例において、ドメインエンティティデータベース1072からのデータが使用された。すなわち、名前が「f」で開始する場所が使用された。尚、これは、「f」で開始する全ての単語ではなく、意味的により関係する非常に小さい提案の集合である。ここでも、提案はこの例においては場所において起こるローカル事象を表すドメインモデルであるモデルを適用することにより生成され、それらは名前を有するビジネスである。提案は、ローカル事象サービスを使用する時に潜在的に有意義なエントリを作成する入力を能動的に導出する。
【0172】
図16において、画面1601は、ユーザが提案された補完1303のうちの1つを選択した後の同一の例の続きを示す。能動的な導出は、所望の情報の種類を更に指定するようにユーザに入力指示することにより、ここではユーザが選択できる多くの修飾子1602を提示することにより継続する。この例において、これらの修飾子は、ドメイン、タスクフロー及びダイアログフローモデルにより生成される。ドメインはローカル事象であり、これはその場所でその日に行われ且つ事象名及び主演者を有する事象のカテゴリを含む。本実施形態において、これらの5つのオプションがユーザに提供されるという事実は、ユーザがまだ入力されていない制約を要求すべきであることを示すダイアログフローモデルから及びこれら5つの制約がアシスタントの利用可能なローカル事象サービスに対するパラメータであることを示すサービスモデルから生成される。「by category」及び「featured」等の修飾子として使用するのに好適な句の選択肢も、ドメイン単語集データベースから生成される。
【0173】
図17において、画面1701は、ユーザが修飾子1602のうちの1つを選択した後の同一の例の続きを示す。
【0174】
図18において、画面1801は、選択された修飾子1602がフィールド1203に追加され且つ追加の修飾子1602が提示される同一の例の続きを示す。ユーザは、修飾子1602のうちの1つを選択し且つ/又はキーボード1304を介して追加のテキスト入力を提供できる。
【0175】
図19において、画面1901は、選択された修飾子1602がフィールド1203に追加され且つ更なる修飾子1602が提示される同一の例の続きを示す。この例において、先に入力された制約は、重複して能動的に導出されない。
【0176】
図20において、画面2001は、ユーザがGoボタン1306をタップした場合の同一の例の続きを示す。ユーザの入力をボックス2002に示し、メッセージをボックス203に示し、ユーザの入力に応答して実行されているクエリに関してユーザにフィードバックを提供する。
【0177】
図21において、画面2101は、結果が見つけられた場合の同一の例の続きを示す。メッセージをボックス2102に示す。結果2103は、ユーザが更なる詳細を閲覧したり、識別されたイベントを保存したり、チケットを購入したり、メモを追加したりできるようにする入力要素を含む。
【0178】
1つの画面2101において、他の表示された画面がスクロール可能であり、これにより、ユーザは、画面2001又は前に提示された他の画面を見るために上方向にスクロールし、要望に応じてクエリに変更を行うことができる。
【0179】
能動的音声入力導出
図22を参照すると、一実施形態に従って音声入力に対する能動的入力導出の方法を示すフローチャートが示される。
【0180】
方法が開始される(221)。アシスタント1002は、可聴信号の形態で音声入力を受信する(121)。音声−テキストサービス122又はプロセッサは、可聴信号の候補テキスト解釈124の集合を生成する。一実施形態において、音声−テキストサービス122は、例えばBurlington、MAのNuance Communications,Inc.により市販されているNuance Recognizerを使用して実現される。
【0181】
一実施形態において、アシスタント1002は、音声入力121の候補テキスト解釈124を生成するために統計言語モデルを採用する。
【0182】
更に一実施形態において、統計言語モデルは、
図8に示すアシスタント1002の種々のモデルにおいて発生する単語、名前及び句を探すために調整される。例えば少なくとも1つの実施形態において、統計言語モデルは、ドメインモデル1056(例えば、レストラン及び食事事象に関連する単語及び句)、タスクフローモデル1086(例えば、事象を計画することに関連する単語及び句)、ダイアログフローモデル1087(例えば、レストラン予約に対する入力を収集するのに必要な制約に関連する単語及び句)、ドメインエンティティデータベース1072(例えば、レストラン名)、用語集データベース1058(例えば、料理名)、サービスモデル1088(例えば、OpenTable等のサービスプロバイダ名)、並びに/あるいはアクティブオントロジ1050のいずれかのノードと関連するあらゆる単語、名前又は句のうちのいくつか又は全てから単語、名前及び句を与えられる。
【0183】
一実施形態において、統計言語モデルは、長期個人メモリ1054からの単語、名前及び句を探すために調整される。例えば統計言語モデルは、to−doアイテム、リストアイテム、個人的なメモ、カレンダエントリ、連絡先/電話帳の人の名前、電子メールアドレス及び連絡先/電話帳で示される道路名又は都市名等からテキストを与えられる。
【0184】
ランク付け構成要素は、候補解釈124を解析し、インテリジェント自動アシスタント1002の構文的及び/又は意味的モデルに対する適合度に従ってそれら候補解釈をランク付けする(126)。ユーザ入力に対するいずれの制約のソースが使用されてもよい。例えば一実施形態において、アシスタント1002は、それら解釈がドメインモデル、タスクフローモデル及び/又はダイアログモデル等を構文的及び/又は意味的にどの程度適切に構文解析するかに従って音声−テキストインタプリタの出力をランク付けする。すなわち、アシスタントは、テキスト解釈124における単語の種々の組み合わせがアクティブオントロジ1050及びそれに関連するモデルの概念、関係、エンティティ及び特性にどの程度適合するかを評価する。例えば音声−テキストサービス122が2つの候補解釈「italian food for lunch」及び「italian shoes for lunch」を生成する場合、意味的な関連性によるランク付け126は、アシスタント1002のアクティブオントロジ1050のノードにより一致する場合に「italian food for lunch」をより高くランク付けする(例えば、単語「italian」、「food」及び「lunch」が全てオントロジ1050のノードに一致し且つオントロジ1050における関係により接続され、その一方で、単語「shoes」はオントロジ1050に一致せず且つ外食ドメインネットワークの一部ではないノードに一致する)。
【0185】
種々の実施形態において、
図28に示す自然言語処理手順のあらゆる実施形態を含むテキスト入力の解釈のためにアシスタント1002により使用されるアルゴリズム又は手順は、音声−テキストサービス122により生成される候補テキスト解釈124をランク付けし且つ点数をつけるために使用される。
【0186】
一実施形態において、解釈124のうち最高のランクを付けられた音声解釈が指定された閾値を超えてランク付けされることをランク付け構成要素126が判定する場合(128)、最高のランクを付けられた解釈は自動的に選択される(130)。指定された閾値を超えてランク付けされる解釈がない場合、音声の可能性のある候補解釈134がユーザに提示される(132)。その後、ユーザは表示された選択肢から選択できる(136)。
【0187】
種々の実施形態において、表示された選択肢からのユーザ選択136は、例えば
図16と関連して説明されるマルチモーダル入力のあらゆるモードを含むあらゆる入力モードにより達成される。そのような入力モードは、能動的に導出されたタイプ入力2610、能動的に導出された音声入力2620及び/又は入力のための能動的に提示されたGUI2640等を含むがこれらに限定されない。一実施形態において、ユーザは、例えばタップすることにより又は話すことにより候補解釈134から選択できる。話す場合、新しい音声入力の可能な解釈は、提供される小さい選択肢の集合134により大きく制約される。例えば「Did you mean italian food or italian shoes?」が提供される場合、ユーザは単に「food」と言い、アシスタントはこれを「italian food」にマッチングし、入力の他のグローバルな解釈と混同しない。
【0188】
入力が自動的に選択される(130)か又はユーザにより選択される(136)かに関わらず、結果として得られる入力138が返される。少なくとも1つの実施形態において、返された入力は、ステップ136で行われた選択に関する情報がテキスト入力と共に保存されるように注釈をつけられる(138)。これにより、例えば文字列の基礎となる意味的な概念又はエンティティが返された時にその文字列と関連付けられることが可能となり、その後の言語の解釈の精度が向上する。例えばCuisine=ItalianFoodの意味的解釈に基づいて候補解釈134の1つとして「Italian food」が提供された場合、機械可読意味的解釈は、注釈付きテキスト入力138として文字列「Italian food」のユーザの選択と共に送出される。
【0189】
少なくとも1つの実施形態において、候補テキスト解釈124は、音声−テキストサービス122の出力として受信された音声解釈に基づいて生成される。
【0190】
少なくとも1つの実施形態において、候補テキスト解釈124は、意味に関して音声解釈を言い換えることにより生成される。いくつかの実施形態において、同一の音声解釈の複数の言い換えが存在する可能性があり、種々の単語の意味又は同音異義語の例を提供する。例えば音声−テキストサービス122が「place for meet」を示す場合、ユーザに提示される候補解釈は、「place to meet(local businesses)」及び「place for meat(restaurants)」と言い換えられる。
【0191】
少なくとも1つの実施形態において、候補テキスト解釈124は、部分文字列を修正する提案を含む。
【0192】
少なくとも1つの実施形態において、候補テキスト解釈124は、本明細書で説明するような構文解析及び意味解析を使用して候補解釈の部分文字列を修正する提案を含む。
【0193】
少なくとも1つの実施形態において、ユーザが候補解釈を選択すると、それが返される。
【0194】
少なくとも1つの実施形態において、ユーザは、解釈が返される前にその解釈を編集するためのインタフェースを提供される。
【0195】
少なくとも1つの実施形態において、ユーザは、入力が返される前に更なる音声入力に継続するためのインタフェースを提供される。これにより、入力発話を漸進的に構築でき、構文及び意味的な修正、提案及びガイダンスを1度に得られる。
【0196】
少なくとも1つの実施形態において、ユーザは、136から能動的タイプ入力導出の方法(
図11に関連して上述した)のステップ111に直接進むためのインタフェースを提供される。これにより、タイプ入力又は音声入力をインタリーブでき、構文及び意味的な修正、提案及びガイダンスを1つのステップで得られる。
【0197】
少なくとも1つの実施形態において、ユーザは、能動的タイプ入力導出の一実施形態のステップ111から能動的音声入力導出の一実施形態に直接進むためのインタフェースを提供される。これにより、タイプ入力及び音声入力をインタリーブでき、構文及び意味的な修正、提案及びガイダンスを1つのステップで得られる。
【0198】
能動的GUI入力導出
次に
図23を参照すると、一実施形態に係るGUI入力に対する能動的入力導出の方法を示すフローチャートが示される。
【0199】
方法が開始される(140)。アシスタント1002は、出力デバイス1207にグラフィカルユーザインタフェース(GUI)を提示し(141)、これは、例えばリンク及びボタンを含む。ユーザは、少なくとも1つのGUI要素と対話する(142)。データ144は、受信され且つ統一書式に変換される(146)。その後、変換されたデータは返される。
【0200】
少なくとも1つの実施形態において、GUIのいくつかの要素は、コンピュータプログラムに書き込まれるのではなく、アクティブオントロジのモデルから動的に生成される。例えばアシスタント1002は、画面をタップする領域であるレストラン予約サービスを誘導するために制約の集合を提供できる。各領域は制約名及び/又は値を表す。例えば画面は、料理、場所及び価格帯の制約に対する領域を有する動的に生成されたGUIレイアウトの行を有する。アクティブオントロジのモデルが変更されると、GUI画面は再プログラミングすることなく自動的に変更される。
【0201】
能動的ダイアログ提案入力導出
図24は、一実施形態に係るダイアログフローのレベルにおける能動的入力導出の方法を示すフローチャートである。アシスタント1002は、可能な応答152を提案する(151)。ユーザは、提案された応答を選択する(154)。受信された入力は、統一書式に変換される(154)。その後、変換されたデータは返される。
【0202】
少なくとも1つの実施形態において、ステップ151において提供された提案は、ダイアログ及び/又はタスクフローの後続のステップとして提供される。
【0203】
少なくとも1つの実施形態において、提案は、例えばドメイン及び/又はタスクモデルからのパラメータを使用して、クエリを改善するオプションを提供する。例えば、仮定される要求の場所又は時間を変更することを提供される。
【0204】
少なくとも1つの実施形態において、提案は、言語解釈手順又は構成要素により与えられた曖昧な別の解釈から選択するオプションを提供する。
【0205】
少なくとも1つの実施形態において、提案は、言語解釈手順又は構成要素により与えられた曖昧な別の解釈から選択するオプションを提供する。
【0206】
少なくとも1つの実施形態において、提案は、ネットワークフロー関連ダイアログフローモデル1087における次のステップから選択するオプションを提供する。例えばダイアログフローモデル1087は、1つのドメイン(例えば、レストランでの食事)に対する制約を収集した後にアシスタント1002が他の関連するドメイン(例えば、近くの映画館)を提案すべきであることを提案する。
【0207】
関連する事象の能動的監視
少なくとも1つの実施形態において、非同期事象は能動的導出入力の他のモダリティと同様に入力として処理される。従って、そのような事象は、アシスタント1002に対する入力として提供される。そのような事象は、解釈されると、あらゆる他の入力と同様に処理される。
【0208】
例えば、フライトの状態の変更は、ユーザに送出されるアラート通知を開始する。フライトが遅延していると示される場合、アシスタント1002は、検出された事象に基づいて別のフライトを提示したり、他の提案をしたりすることによりダイアログを継続する。
【0209】
そのような事象は、どのような種類の事象でもよい。例えばアシスタント1002は、ユーザがちょうど家に到着したこと、あるいは道に迷っていること(指定された経路から外れたこと)、あるいは株価が閾値に達したこと、あるいはユーザの興味のあるテレビ番組が開始すること、あるいは興味のあるミュージシャンがその地域にツアーで来ることを検出する。これらの状況のいずれにおいても、アシスタント1002は、ユーザがその質問を自身で開始するのとほぼ同様にダイアログに進める。一実施形態において、事象は、例えば同僚がいつランチから戻ってくるかをユーザに伝えるために他のデバイスから提供されるデータに基づいてもよい(同僚のデバイスはそのような事象をユーザのデバイスに信号伝送でき、この時、ユーザのデバイスにインストールされたアシスタント1002はそれに応じて応答する)。
【0210】
一実施形態において、事象は、カレンダ、クロック、リマインダ又はto−doアプリケーションからの通知又はアラートである。例えばディナーデートに関するカレンダアプリケーションからのアラートは、食事事象に関するアシスタント1002とのダイアログを開始する。ダイアログは、ユーザが「dinner for 2 in San Francisco」等の今度の食事事象に関する情報をちょうど話したか又はタイプしたかのように進む。
【0211】
一実施形態において、可能なイベントトリガ162のコンテキストは、人、場所、時間及び他のデータに関する情報を含む。これらのデータは、処理の種々のステップにおいて使用するアシスタント1002に対する入力の一部として使用される。
【0212】
一実施形態において、イベントトリガ162のコンテキストからのデータは、ユーザからの音声又はテキスト入力の曖昧性を除去するために使用される。例えばカレンダイベントアラートがそのイベントに招待された人の名前を含む場合、その情報は同一の又は同様の名前を有する何人かの人と一致する可能性のある入力の曖昧性を除去しやすくする。
【0213】
次に
図25を参照すると、一実施形態に係る関連する事象の能動的な監視の方法を示すフローチャートが示される。この例において、イベントトリガ事象は入力の集合162である。アシスタント1002はそのような事象を監視する(161)。検出された事象は、インテリジェント自動アシスタント1002の他の構成要素から入手可能なモデル、データ及び情報を使用して意味的な関連性に対してフィルタリング及びソートされる(164)。例えば、ユーザに対する短期又は長期メモリレコードが、ユーザがそのフライトに乗っており且つ/又はそのフライトに関してアシスタント1002に質問したことを示す場合、フライトの状態の変更を報告する事象にはより高い関連性が与えられる。この格納及びフィルタリングは、ユーザによるレビューに対して重大な事象のみを提示し、ユーザは1つ以上の事象を選択し且つそれらに作用する。
【0214】
事象データは、統一入力書式に変換され(166)、返される。
【0215】
少なくとも1つの実施形態において、アシスタント1002は、ユーザの注目を得るために提案されたイベントと関連付けられたサービスを事前に提供する。例えばフライト状態アラートがフライトを逃す可能性があることを示す場合、アシスタント1002は、旅程を再計画するか又はホテルを予約するタスクフローをユーザに提案する。
【0216】
入力導出構成要素の例
以下の例は、能動的入力導出構成要素1094により提供される種々の機能、動作、行動及び/又は他の特徴のうちのいくつかを例示しやすくすることを意図する。
例:コマンド補完(ユーザがアシスタント1002に言えることは?)
【0217】
ユーザには「what do you want to do?」を入力するために一般的な命令を含むテキスト入力ボックスが提示されている。コンテキスト及びユーザ入力に依存して、いくつかのシステム応答のいずれかが提供される。例を以下に示す。
【0225】
事例:制約、未知のタスク又はドメインからの開始
【0226】
例:名前の補完
ここでは、ユーザはいずれのコマンドも受け入れずにあるテキストをタイプしたか、あるいはエンティティ名によりコマンドを拡張している。システムは、コンテキストに依存して名前を補完しようとする。更にシステムは、ドメインの曖昧性を除去する。
事例:コンテキストのない単語
【0228】
例:集合からの値の選択
ここでは、ユーザは、場所、時間、料理又はジャンル等の特定のパラメータに対する値を入力するというシステム要求に応答している。ユーザはリストから値を選択するか又は値を入力する。ユーザがタイプすると、リストの一致するアイテムがオプションとして示される。例を以下に示す。
事例:値クラスの選択
【0229】
例:先のコマンドの再利用
先のクエリは、自動補完インタフェースで補完するオプションである。それらクエリは、文字列としてマッチングされるか(入力フィールドが空であり、既知の制約がない場合)、あるいは特定の状況において関連するものとして提案される。
事例:先のクエリにおける補完
【0230】
例:個人メモリのアイテムの検索
アシスタント1002は、ユーザと関連付けられた個人メモリに特定の事象及び/又はエンティティを記憶する。自動補完は、そのような記憶したアイテムに基づいて行われる。例を以下に示す。
事例:個人メモリの事象及びエンティティに対する補完
【0231】
マルチモーダル能動的入力導出
少なくとも1つの実施形態において、能動的入力導出構成要素1094は、複数の入力モダリティからの入力を処理する。少なくとも1つのモダリティは、特定の種類の入力及び提案されたオプションから選択する方法を利用する能動的入力導出手順により実現される。本明細書で説明するように、それらは、テキスト入力、音声入力、GUI入力、ダイアログのコンテキストにおける入力及び/又はイベントトリガの結果として得られる入力に対する能動的入力導出の手順の実施形態である。
【0232】
少なくとも1つの実施形態において、インテリジェント自動アシスタント1002の単一のインスタンスに対して、タイプ入力、音声入力、GUI入力、ダイアログ入力及び/又は事象入力のうちの1つ以上(又はそれらのあらゆる組み合わせ)に対するサポートがある。
【0233】
次に
図26を参照すると、一実施形態に係るマルチモーダル能動的入力導出の方法を示すフローチャートが示される。方法が開始される(100)。入力は、あらゆる順番で、入力モダリティのうちの1つ以上又はあらゆる組み合わせから同時に受信される。従って、方法は、タイプ入力2610、音声入力2620、GUI入力2640、ダイアログのコンテキストにおける入力2650及び/又はイベントトリガの結果として得られる入力2660を能動的に導出することを含む。これらの入力ソースのいずれか又は全ては、統一入力書式2690に統一されて返される。統一入力書式2690により、インテリジェント自動アシスタント1002の他の構成要素は入力の特定のモダリティに関係なく設計され且つ動作する。
【0234】
複数のモダリティ及びレベルに対する能動的なガイダンスを提供することにより、独立したモダリティが利用可能な制約及びガイダンスを超えた制約及びガイダンスが入力に対して可能である。例えば音声、テキスト及びダイアログステップから選択するために提供されたそれらの種類の提案は無関係であるため、それらの組み合わせは個々のモダリティ又はレベルに能動的導出技術を追加することと比較して大きな改善を示す。
【0235】
本明細書で説明するような制約の複数のソース(構文/言語、用語集、エンティティデータベース、ドメインモデル、タスクモデル及びサービスモデル等)と、それら制約が能動的に適用される複数の場所(音声、テキスト、GUI、ダイアログ及び非同期事象)とを組み合わせることにより、人間と機械との対話に対して新しいレベルの機能性が提供される。
【0236】
ドメインモデル構成要素1056
ドメインモデル1056の構成要素は、ドメインの概念、エンティティ、関係、特性及びインスタンスの表現を含む。例えば外食ドメインモデル1622は、名前、住所及び電話番号を有するビジネスであるレストランの概念、レストランと関連付けられたパーティサイズ、日付及び時間を有する食事事象の概念を含む。
【0237】
少なくとも1つの実施形態において、アシスタント1002のドメインモデル構成要素1056は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
・ドメインモデル構成要素1056は、入力の導出100、自然言語の解釈200、サービスへのディスパッチ400及び出力の生成600を含むいくつかの処理に対して自動アシスタント1002により使用される。
・ドメインモデル構成要素1056は、レストラン名等のドメイン概念又はエンティティに一致する単語のリストを提供し、これは、入力の能動的導出100及び自然言語処理200に使用される。
・ドメインモデル構成要素1056は、例えば単語がレストラン名であると判定するために処理において候補単語を分類する。
・ドメインモデル構成要素1056は、例えば料理がビジネスエンティティと関連付けられる(例えば、「local Mexican food」は「find restaurants with style=Mexican」と解釈され、この推論はドメインモデル1056における情報のために可能である)と自然言語を解釈するための部分情報間の関係を示す。
・ドメインモデル構成要素1056は、例えば特定のウェブサービスがレストランのレビューを提供するというサービスオーケストレーション1082において使用されるサービスに関する情報を編成する。
・ドメインモデル構成要素1056は、例えば概念、関係、特性及びインスタンスを記述する標準的な方法を提供することにより、自然言語の言い換え及び他の出力形式を生成するための情報を提供する。
【0238】
特定の実施形態によると、ドメインモデル構成要素1056の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、ドメインモデル構成要素1056の種々の態様、特徴及び/又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の1つ以上(又はそれらの組み合わせ)により実行、実現及び/又は開始される。
・ドメインモデル構成要素1056は、概念、関係、特性及びインスタンスを表すデータ構造として実現される。これらのデータ構造は、メモリ、ファイル又はデータベースに格納される。
・ドメインモデル構成要素1056へのアクセスは、ダイレクトAPI、ネットワークAPI及び/又はデータベースクエリインタフェースを介して実現される。
・ドメインモデル構成要素1056の作成及び維持は、例えばファイルの直接編集、データベーストランザクション及び/又はドメインモデル編集ツールの使用により達成される。
・ドメインモデル構成要素1056は、アクティブオントロジ1050の一部として又はアクティブオントロジ1050と関連して実現され、サーバ及びユーザに対するモデルのインスタンス化とモデルとを組み合わせる。
【0239】
種々の実施形態によると、ドメインモデル構成要素1056の1つ以上の異なるスレッド又はインスタンスは、ドメインモデル構成要素1056の少なくとも1つのインスタンスの開始をトリガする種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。例えばドメインモデル構成要素1056の1つ以上の異なるスレッド又はインスタンスのトリガの開始及び/又は実現は、入力導出中、入力解釈中、タスク及びドメインの識別中、自然言語の処理中、サービスオーケストレーション中、並びに/あるいはユーザに対する出力のフォーマット中を含むドメインモデル情報が必要とされた時にトリガされる。
【0240】
少なくとも1つの実施形態において、ドメインモデル構成要素1056の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はこれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。例えばドメインモデル構成要素1056からのデータは、用語集1058、言語パターン認識器1060、ダイアログフローモデル1087、タスクフローモデル1086、サービス機能モデル1088及びドメインエンティティデータベース1072等を含む他のモデルのモデル化構成要素と関連付けられる。例えばレストランとして分類されるドメインエンティティデータベース1072におけるビジネスは、外食ドメインモデル構成要素において維持される種類識別子により認識される。
【0241】
ドメインモデル構成要素の例
次に
図27を参照すると、一実施形態に係るドメインモデル構成要素1056により提供される種々の機能、動作、行動及び/又は他の特徴の一例を示すスクリーンショットの集合が示される。
【0242】
少なくとも一実施形態において、ドメインモデル構成要素1056は、レストランに関する画面103A及び103Bに示される情報の表現を可能にする統一データ表現であり、これは、いくつかの別個のデータソース及びサービスからのデータを組み合わせ、例えば、名前、住所、ビジネスカテゴリ、電話番号、長期個人メモリに対して保存するための識別子、電子メールを介して共有するための識別子、複数のソースからのレビュー、地図座標及び個人的なメモ等を含む。
【0243】
言語インタプリタ構成要素1070
少なくとも1つの実施形態において、アシスタント1002の言語インタプリタ構成要素1070は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0244】
・ユーザ入力を解析し且つ構文解析結果の集合を識別する。
・ユーザ入力は、ユーザ及びユーザの意図を理解する一因となるユーザのデバイスコンテキストからのあらゆる情報を含み、これは、例えば単語のシーケンス、入力を導出する際に関わるジェスチャ又はGUI要素の一致、ダイアログの現在のコンテキスト、現在のデバイスアプリケーション及びその現在のデータオブジェクト、並びに/あるいは場所及び時間等のユーザに関して取得されたあらゆる他の動的な個人データのうちの1つ以上(又はそれらの組み合わせ)を含む。例えば一実施形態において、ユーザ入力は、能動的入力導出1094の結果として得られる統一注釈付き入力書式2690の形式である。
・構文解析結果は、概念、関係、特性、インスタンス及び/又は他のノード、並びに/あるいはモデル、データベース及び/又はユーザの意図及び/コンテキストの他の表現におけるデータ構造とユーザ入力のデータとの関連付けである。構文解析結果の関連付けは、ユーザ入力の単語、信号及び他の要素の集合及びシーケンスから本明細書で説明する1つ以上の関連付けられた概念、関係、特性、インスタンス、他のノード及び/又はデータ構造への複雑なマッピングである。
【0245】
・ユーザ入力を解析し、複数単語の名前、文の構造及び/又は他の文法のグラフ構造を含む音声、節及び句の構文部分を表す構造とユーザ入力のデータとを関連付ける構文解析結果である構文的な構文解析結果の集合を識別する。構文的な構文解析結果は、
図28と関連して説明する自然言語処理手順の要素212において説明される。
【0246】
・ユーザ入力を解析し、意味及びユーザの意図の概念、関係、特性、エンティティ、数量、命題及び/又は他の表現を表す構造とユーザ入力のデータとを関連付ける構文解析結果である意味的な構文解析結果の集合を識別する。一実施形態において、意味及び意図のこれらの表現は、
図28と関連して説明する自然言語処理手順の要素220において説明するように、モデル又はデータベースの集合及び/又は要素及び/又はインスタンス、並びに/あるいはオントロジのノードにより表される。
【0247】
・
図28と関連して説明する自然言語処理手順の要素230において説明するような別の構文的又は意味的な構文解析結果の間の曖昧性を除去する。
【0248】
・
図11と関連して説明するような自動補完手順において部分的にタイプされた入力が構文的及び/又は意味的に有意義であるかを判定する。
【0249】
・
図11と関連して説明するような自動補完手順において提案される補完114を生成しやすくする。
【0250】
・
図22と関連して説明するような音声入力手順において音声入力の解釈が構文的及び/又は意味的に有意義であるかを判定する。
【0251】
特定の実施形態によると、言語インタプリタ構成要素1070の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。
【0252】
種々の実施形態によると、言語インタプリタ構成要素1070の1つ以上の異なるスレッド又はインスタンスは、言語インタプリタ構成要素1070の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。言語インタプリタ構成要素1070の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガする条件又は事象の種々の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0253】
・以下を含むがそれらに限定されない入力を導出する間。
・タイプ入力の可能な補完を提案する(114)(
図11)。
・音声の解釈をランク付けする(126)(
図22)。
・ダイアログにおける提案された応答152として曖昧性を提供する時(
図24)。
【0254】
・入力が能動的マルチモーダル入力導出100のいずれかのモードにより導出される時を含む入力を導出した結果が利用可能である時。
【0255】
少なくとも1つの実施形態において、言語インタプリタ構成要素1070の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、そのようなデータベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。言語インタプリタ構成要素によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0256】
・ドメインモデル1056
・用語集1058
・ドメインエンティティデータベース1072
・短期メモリ1052
・長期個人メモリ1054
・タスクフローモデル1086
・ダイアログフローモデル1087
・サービス機能モデル1088
【0257】
次に
図29を更に参照すると、一実施形態に係る自然言語処理を示すスクリーンショットが示される。ユーザは、「who is playing this weekend at the filmore」という句から成る言語入力2902を入力した(音声又はテキストにより)。この句は、画面2901においてユーザにエコーバックされる。言語インタプリタ構成要素1070は、入力2902を処理し、構文解析結果を生成する。構文解析結果は、名前が「filmore」と一致するあらゆるイベントの場所において次の週末のいずれかの日にスケジュールされているローカル事象を示すという要求とその入力とを関連付ける。構文解析結果の言い換えは、画面2901に2903として示される。
【0258】
次に
図28を更に参照すると、一実施形態に係る自然言語処理の方法の一例を示すフローチャートが示される。
【0259】
方法が開始される(200)。
図29の例における「who is playing this weekend at the filmore(今週は誰がフィルモアに出演しているのか)」という文字列等の言語入力202が受信される。一実施形態において、入力は、現在のユーザの場所及び現地時間等の現在のコンテキスト情報により補われる。単語/句のマッチング210において、言語インタプリタ構成要素1070は、ユーザ入力と概念との間の関連付けを見つける。この例において、文字列「playing」とイベントの場所におけるリストの概念との間、文字列「this weekend」(ユーザの現在の現地時間と共に)と次の週末を表すおおよその時間帯の具体例との間、文字列「filmore」と場所の名前との間で関連付けが見つけられる。単語/句のマッチング210は、例えば言語パターン認識器1060、用語集データベース1058、アクティブオントロジ1050、短期個人メモリ1052及び長期個人メモリ1054からのデータを使用する。
【0260】
言語インタプリタ構成要素1070は、選択された構文解析結果を含み且つ他の構文解析結果を更に含む構文的な候補構文解析212を生成する。例えば他の構文解析結果は、「playing」がゲーム等の他のドメイン又はスポーツイベント等のイベントのカテゴリと関連付けられる結果を含む。
【0261】
短期メモリ1052及び/又は長期メモリ1054は、構文的な候補構文解析212を生成する際に言語インタプリタ構成要素1070により使用される。従って、性能を向上し、曖昧性を低減し、且つ対話の会話の性質を向上するために、同一のセッションで先に適用された入力及び/又はユーザに関する既知の情報が使用される。有効な構文的な候補構文解析212を判定する際に根拠に基づく推論を実現するために、アクティブオントロジ1050、ドメインモデル1056及びタスクフローモデル1086からのデータが使用される。
【0262】
意味的なマッチング220において、言語インタプリタ構成要素1070は、ドメインモデル及びデータベース等の意味的なモデルに対する適合度に従って可能な構文解析結果の組み合わせを考慮する。この場合、構文解析は、(1)「Local Event At Venue」(アクティブオントロジ1050のノードのクラスタにより表されるドメインモデル1056の一部)である「playing」(ユーザ入力の単語)と、(2)ドメインモデルの要素及びアクティブオントロジのノード(Venue Name)により表されるローカル事象の場所に対するドメインエンティティデータベース1072のエンティティ名に一致するものである「filmore」(入力の別の単語)との関連付けを含む。
【0263】
意味的なマッチング220は、例えばアクティブオントロジ1050、短期個人メモリ1052及び長期個人メモリ1054からのデータを使用する。例えば意味的なマッチング220は、ダイアログにおける場所又はローカル事象(短期個人メモリ1052からの)又は個人のお気に入りの場所(長期個人メモリ1054からの)に対する先の参照からのデータを使用する。
【0264】
意味的な候補構文解析結果又は意味的な潜在的な構文解析結果222の集合が生成される。
【0265】
曖昧性除去ステップ230において、言語インタプリタ構成要素1070は、意味的な候補構文解析結果222の根拠を考察する。この例において、「Local Event At Venue」である「playing」の構文解析とVenue Nameである「filmore」のマッチングとの組み合わせは、例えば「playing」がスポーツのドメインモデルと関連付けられ且つ「filmore」に対してスポーツドメインにおける関連付けがない別の組み合わせと比較して、ドメインモデルにより高いレベルで一致する。
【0266】
曖昧性除去230は、例えばアクティブオントロジ1050の構造からのデータを使用する。少なくとも1つの実施形態において、アクティブオントロジのノード間の接続は、意味的な候補構文解析結果222の間の曖昧性を除去する根拠に基づくサポートを提供する。例えば一実施形態において、アクティブオントロジの3つのノードが意味的に一致し、アクティブオントロジにおいて全て接続される場合、これは、それら一致するノードが接続されないか又はアクティブオントロジ1050においてより長い接続パスにより接続される場合と比較して意味的構文解析のより強い根拠を示す。例えば意味的なマッチング220の一実施形態において、Local Event At VenueとVenue Nameとをマッチングする構文解析は、ユーザの意図のそれらの態様の組み合わせ表現がアクティブオントロジ1050における関係及び/又はリンクにより接続されるため、より強い根拠に基づくサポートが与えられる。このインスタンスにおいて、Local EventノードはVenueノードに接続され、VenueノードはVenue Nameノードに接続され、Venue Nameノードは場所名のデータベースのエンティティ名に接続される。
【0267】
少なくとも1つの実施形態において、意味的な候補構文解析結果222の間の曖昧性を除去するために根拠に基づくサポートを提供するアクティブオントロジのノード間の接続は、有向アークであり、推論格子を形成する。ここで、一致するノードは、有向アークにより接続されるノードに対する根拠を提供する。
【0268】
232において、言語インタプリタ構成要素1070は、ソートして最上位の意味的構文解析をユーザの意図の表現290として選択する(232)。
【0269】
ドメインエンティティデータベース1072
少なくとも1つの実施形態において、ドメインエンティティデータベース1072は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0270】
・ドメインエンティティに関するデータを格納する。ドメインエンティティは、ドメインモデルにおいてモデル化される世界又はコンピューティング環境における物事である。例は以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0271】
・あらゆる種類のビジネス
・映画、ビデオ、曲及び/又は他の音楽製品、並びに/あるいはあらゆる他の指名されたエンターテイメント製品
・あらゆる種類の製品
・イベント
・カレンダエントリ
・都市、州、国、区域、並びに/あるいは他の地理的、地政学的及び/又は地理空間的な地点又は領域
・ランドマーク及び空港等の指名された場所
・それらデータベースに対するデータベースサービスを提供する。これは、単純なクエリ、複雑なクエリ、トランザクション及びトリガされた事象等を含むがこれらに限定されない。
【0272】
特定の実施形態によると、ドメインエンティティデータベース1072の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、ドメインエンティティデータベース1072の種々の態様、特徴及び/又は機能性は、クライアント1304及び/又はサーバ1340に常駐するデータベースソフトウェア及び/又はハードウェアにより実行、実現及び/又は開始される。
【0273】
一実施形態に従って本発明と関連して使用されるドメインエンティティデータベース1072の一例は、例えば名前及び場所を格納する1つ以上のビジネスのデータベースである。データベースは、例えばビジネスをマッチングするための入力要求に含まれる単語を参照するため及び/又は名前が分かっているビジネスの場所を参照するために使用される。多くの他の構成及び実現例が可能であることが当業者には理解されるだろう。
【0274】
用語集構成要素1058
少なくとも1つの実施形態において、用語集構成要素1058は、以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0275】
・ドメインモデル又はタスクモデルの概念、特性、関係又はインスタンスと単語及び文字列とを関連付けるデータベースを提供する。
【0276】
・用語集構成要素からの用語集は、例えば入力の導出、自然言語の解釈及び出力の生成を含むいくつかの処理に対して自動アシスタント1002により使用される。
【0277】
特定の実施形態によると、用語集構成要素1058の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、用語集構成要素1058の種々の態様、特徴及び/又は機能性は、概念、関係、特性及びインスタンスの名前と文字列とを関連付けるデータ構造として実現される。これらのデータ構造は、メモリ、ファイル又はデータベースに格納される。用語集構成要素1058へのアクセスは、ダイレクトAPI、ネットワークAPI及び/又はデータベースクエリインタフェースを介して実現される。用語集構成要素1058の作成及び維持は、ファイルの直接編集、データベーストランザクション又はドメインモデル編集ツールの使用により達成される。用語集構成要素1058は、アクティブオントロジ1050の一部として又はアクティブオントロジ1050と関連して実現される。多くの他の構成及び実現例が可能であることが当業者には理解されるだろう。
【0278】
種々の実施形態によると、用語集構成要素1058の1つ以上の異なるスレッド又はインスタンスは、用語集構成要素1058の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。一実施形態において、用語集構成要素1058は、例えば入力導出中、入力解釈中及びユーザに対する出力のフォーマット中を含み、用語集情報が要求される場合は必ずアクセスされる。他の条件又は事象は、用語集構成要素1058の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガすることが当業者には理解されるだろう。
【0279】
少なくとも1つの実施形態において、用語集構成要素1058の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。一実施形態において、用語集構成要素1058は、外部データベース、例えばデータウェアハウス又はディクショナリからのデータにアクセスする。
【0280】
言語パターン認識器構成要素1060
少なくとも1つの実施形態において、言語パターン認識器構成要素1060は、例えば入力トークンの文法的合成語、慣用的合成語及び/又は他の合成語を示す言語又は音声入力におけるパターンを探す等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。それらパターンは、例えば発話行為の単語、名前、句、データ、パラメータ、コマンド及び/又は信号のうちの1つ以上(又はそれらの組み合わせ)に対応する。
【0281】
特定の実施形態によると、パターン認識器構成要素1060の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、言語パターン認識器構成要素1060の種々の態様、特徴及び/又は機能性は、パターンマッチング言語における表現を含む1つ以上のファイル、データベース及び/又はプログラムにより実行、実現及び/又は開始される。少なくとも1つの実施形態において、言語パターン認識器構成要素1060は、プログラムコードではなく宣言的に表される。これにより、構成要素は編集者及びプログラミングツール以外の他のツールにより作成及び維持される。宣言的表現の例は、正規表現、パターンマッチングルール、自然言語の文法、状態遷移機械に基づくパーサ及び/又は他の構文解析モデルのうち1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0282】
他の種類のシステム、構成要素、システム、デバイス、手順及び処理等(又はそれらの組み合わせ)は、言語パターン認識器構成要素1060を実現するために使用されることが当業者には理解されるだろう。
【0283】
種々の実施形態によると、言語パターン認識器構成要素1060の1つ以上の異なるスレッド又はインスタンスは、言語パターン認識器構成要素1060の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。言語パターン認識器構成要素1060の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガする条件又は事象の種々の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
・言語パターン認識器の構造がユーザからの入力を制約し且つ誘導する入力の能動的導出中。
・言語パターン認識器が入力を言語として解釈しやすくする自然言語処理中。
・言語パターン認識器がタスク、ダイアログ及び/又はステップを識別しやすくするタスク及びダイアログの識別中。
【0284】
少なくとも1つの実施形態において、言語パターン認識器構成要素1060の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。言語パターン認識器構成要素1060によりアクセスされる種々のデータの例は、アシスタント1002の実施形態の一部である種々のモデル及びデータソースのいずれかからのデータを含むがそれらに限定されない。これは、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0285】
・ドメインモデル1056
・用語集1058
・ドメインエンティティデータベース1072
・短期メモリ1052
・長期個人メモリ1054
・タスクフローモデル1086
・ダイアログフローモデル1087
・サービス機能モデル1088
【0286】
一実施形態において、アシスタント1002の実施形態の他の部分からのデータのアクセスは、アクティブオントロジ1050により連携される。
【0287】
図14を参照すると、言語パターン認識器構成要素1060により提供される種々の機能、動作、行動及び/又は他の特徴の一部の一例が示される。
図14は、言語パターン認識器構成要素1060が認識する言語パターンを示す。例えば成句「what is happening」(in a city)((都市で)何が起きている)は、事象の計画のタスク及びローカル事象のドメインと関連付けられる。
【0288】
ダイアログフロープロセッサ構成要素1080
少なくとも1つの実施形態において、ダイアログフロープロセッサ構成要素1080は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0289】
・言語解釈200からのユーザの意図の表現290を仮定して、ユーザが実行したいタスク及び/又はユーザが解決したい問題を識別する。例えばタスクは、レストランを見つけることである。
【0290】
・所定の問題又はタスクに対して、ユーザの意図の表現290を仮定して、タスク又は問題に対するパラメータを識別する。例えばユーザは、ユーザの家の近くにあるイタリア料理を提供する推薦されるレストランを探している。レストランが推薦され、イタリア料理を提供し且つ家の近くにあるという制約は、レストランを見つけるタスクに対するパラメータである。
【0291】
・個人短期メモリ1052において表現されるようなタスクの解釈及びユーザとの現在のダイアログを仮定して、適切なダイアログフローモデルを選択し、現在の状態に対応するフローモデルのステップを判定する。
【0292】
特定の実施形態によると、ダイアログフロープロセッサ構成要素1080の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。
【0293】
少なくとも1つの実施形態において、ダイアログフロープロセッサ構成要素1080の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。ダイアログフロープロセッサ構成要素1080によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
・タスクフローモデル1086
・ドメインモデル1056
・ダイアログフローモデル1087
【0294】
次に
図30及び
図31を参照すると、一実施形態に従ってダイアログフロープロセッサ構成要素により提供される種々の機能、動作、行動及び/又は他の特徴の一例を示すスクリーンショットが示される。
【0295】
画面3001に示すように、ユーザは、音声又はテキスト入力「book me a table for dinner(夕食の席を予約して)」を提供することにより夕食の予約を要求する。アシスタント1002は、時間及びパーティサイズを指定することをユーザに要求するプロンプト3003を生成する。
【0296】
これらのパラメータが提供されると、画面3101が示される。アシスタント1002は、結果が提示されていることを示すダイアログボックス3102と、時間をクリックするようにユーザに要求するプロンプト3103とを出力する。リスト3104が更に表示される。
【0297】
一実施形態において、そのようなダイアログは以下のように実現される。ダイアログフロープロセッサ構成要素1080は、言語インタプリタ構成要素1070からのユーザの意図の表現を与えられ、適切な応答がタスクフローの次のステップを実行するのに必要とされる情報をユーザに要求することであることを判定する。この場合、ドメインはレストランであり、タスクは予約を取ることであり、ダイアログステップはタスクフローの次のステップを達成するのに必要な情報をユーザに要求することである。このダイアログステップは、画面3001のプロンプト3003により例示される。
【0298】
図32を参照すると、一実施形態に従ってダイアログフロープロセッサ構成要素1080の動作方法を示すフローチャートが示される。
図30及び
図31に示す例と関連して、
図32のフローチャートを説明する。
【0299】
方法が開始される(200)。ユーザの意図の表現290が受信される。
図28と関連して説明したように、一実施形態において、ユーザの意図の表現290は意味的な構文解析の集合である。
図30及び
図31に示す例の場合、ドメインはレストランであり、動詞はレストランの予約と関連付けられた「book」であり、時間パラメータは現在の日付の夜である。
【0300】
310において、ダイアログフロープロセッサ構成要素1080は、このユーザの意図の解釈が次に進むのに十分に強力にサポートされているか及び/又は別の曖昧な構文解析より適切にサポートされているかを判定する。この例において、解釈は強力にサポートされており、競合する曖昧な構文解析はない。一方、競合する曖昧な構文解析であるか又は非常に不確実な構文解析である場合、ステップ322が実行され、実行段階によりダイアログがユーザからの更なる情報に対するプロンプトを出力するようにダイアログフローステップを設定する。
【0301】
312において、ダイアログフロープロセッサ構成要素1080は、実行するタスク及びそのパラメータを判定するために他の情報による意味的な構文解析の好適な解釈を判定する。情報は、例えばドメインモデル1056、タスクフローモデル1086及び/又はダイアログフローモデル1087、あるいはそれらのあらゆる組み合わせから取得される。この例において、タスクは、予約を取ることであると識別され、これは予約可能であり且つ空きがある場所を見つけること及びテーブルを予約するためのトランザクションを行うことを含む。タスクパラメータは、ステップ312で推論された他のパラメータに加えて時間の制約である。
【0302】
320において、タスクフローモデルは、適切な次のステップを判定するために調査される。情報は、例えばドメインモデル1056、タスクフローモデル1086及び/又はダイアログフローモデル1087、あるいはそれらのあらゆる組み合わせから取得される。この例において、このタスクフローにおいて次のステップがレストランの空き状況探索に対する欠落したパラメータを導出することであることが判定され、結果として
図30に示すプロンプト3003を与え、パーティサイズ及び予約時間を要求する。
【0303】
上述したように、
図31は、ユーザがパーティサイズ及び予約時間の要求に回答した後に提示されるダイアログ要素3102を含む画面3101を示す。一実施形態において、画面3101は、
図33と関連して説明するように自動呼出し及び応答手順を介して別の1回の実行の結果として提示され、
図32に示すダイアログ及びフロー手順に対する別の呼出しを引き起こす。このダイアログ及びフロー手順の開始において、ユーザの嗜好を受信した後、ダイアログフロープロセッサ構成要素1080は、空き状況探索を行うためにステップ320において異なるタスクフローステップを判定する。要求390が構築されると、これは、ダイアログフロープロセッサ構成要素1080及びサービスオーケストレーション構成要素1082がレストラン予約サービスにディスパッチするのに十分なタスクパラメータを含む。
【0304】
ダイアログフローモデル構成要素1087
少なくとも1つの実施形態において、ダイアログフローモデル構成要素1087はダイアログフローモデルを提供するように動作可能であり、これはユーザとインテリジェント自動アシスタント1002との間の特定の種類の会話において行われるステップを表す。例えばトランザクションを実行するジェネリックタスクに対するダイアログフローは、トランザクションに必要なデータを得るステップと、それをコミットする前にトランザクションパラメータを確認するステップとを含む。
【0305】
タスクフローモデル構成要素1086
少なくとも1つの実施形態において、タスクフローモデル構成要素1086はタスクフローモデルを提供するように動作可能であり、これは問題を解決するか又は要望に対処するのに行われるステップを表す。例えば夕食の予約を取るタスクフローは、所望のレストランを見つけることと、空き状況をチェックすることと、特定の時間にそのレストランの予約を取るためのトランザクションを行うこととを含む。
【0306】
特定の実施形態によると、タスクフローモデル構成要素1086の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、タスクフローモデル構成要素1086の種々の態様、特徴及び/又は機能性は、フローグラフの適切なステップを識別するプログラム、状態遷移機械又は他の方法として実現される。
【0307】
少なくとも1つの実施形態において、タスクフローモデル構成要素1086は、ジェネリックタスクと呼ばれるタスクモデル化フレームワークを使用する。ジェネリックタスクは、ドメイン専用ではなく、タスクのステップとそれらの要求された入力及び生成された出力とをモデル化する抽象的概念である。例えばトランザクションに対するジェネリックタスクは、トランザクションに必要なデータを収集するステップと、トランザクションを実行するステップと、トランザクションの結果を出力するステップとを含み、これら全てが実現するのにどの特定のトランザクションドメイン又はサービスも参照しない。ジェネリックタスクは、ショッピング等のドメインに対してインスタンス化されるが、ショッピングドメインに依存せず、予約及びスケジューリング等のドメインに同等に適切に当てはまる。
【0308】
本明細書で説明するタスクフローモデル構成要素1086及び/又は手順と関連付けられた機能、動作、行動及び/又は他の特徴の少なくとも一部分は、ジェネリックタスクモデル化フレームワークと関連して本明細書で説明する概念、特徴、構成要素、処理及び/又は他の態様を使用して少なくとも部分的に実現される。
【0309】
更に本明細書で説明するタスクフローモデル構成要素1086及び/又は手順と関連付けられた機能、動作、行動及び/又は他の特徴の少なくとも一部分は、本明細書で説明するように条件付き選択タスクに関連する概念、特徴、構成要素、処理及び/又は他の態様を使用して少なくとも部分的に実現される。例えばジェネリックタスクの一実施形態は、条件付き選択タスクモデルを使用して実現される。
【0310】
少なくとも1つの実施形態において、タスクフローモデル構成要素1086の所定のインスタンスは、1つ以上の関連データベースの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。タスクフローモデル構成要素1086によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むが、それらに限定されない。
【0311】
・ドメインモデル1056
・用語集1058
・ドメインエンティティデータベース1072
・短期メモリ1052
・長期個人メモリ1054
・ダイアログフローモデル1087
・サービス機能モデル1088
【0312】
図34を参照すると、一実施形態に従って、条件付き選択タスク351のタスクフローの一例を示すフローチャートが示される。
【0313】
条件付き選択は、目的が制約の集合に基づく世界中のアイテムの集合からあるアイテムを選択することである一種のジェネリックタスクである。例えば条件付き選択タスク351は、レストランのドメインに対してインスタンス化される。条件付き選択タスク351は、ユーザ352から基準及び制約を請求することにより開始する。例えばユーザは、アジア料理に興味があり、自身のオフィスの近くにある食べる場所を見つけたい。
【0314】
ステップ353において、アシスタント1002は、ユーザが閲覧するための明示された基準及び制約を満たすアイテムを提示する。この例において、これは、選択するのに使用されるレストラン及びそれらの特性のリストであってもよい。
【0315】
ステップ354において、ユーザは基準及び制約を改善する機会を与えられる。例えばユーザは「near my office(私の職場の近く)」と言うことにより要求を改善する。システムは、ステップ353において新しい結果の集合を提示する。
【0316】
図35を参照すると、一実施形態に従って条件付き選択タスク351により提示されたアイテムのリスト3502を含む画面3501の一例が示される。
【0317】
ステップ355において、ユーザは一致するアイテムから選択する。例えば予約356、記憶357又は共有358等の多くの後続のタスク359のうちのいずれも利用可能にされる。種々の実施形態において、後続のタスク359は、ウェブ対応サービス及び/又はデバイスにローカルな機能性(カレンダの約束の設定、通話、電子メール又はテキストメッセージの送出及びアラームの設定等)との対話を含む。
【0318】
図35の例において、ユーザは更なる詳細を見て追加の行動を実行するためにリスト3502内のアイテムを選択する。
図36を参照すると、ユーザがリスト3502からアイテムを選択した後の画面3601の一例が示される。選択されたアイテムに関する後続のタスク359に対応する追加の情報及びオプションが表示される。
【0319】
種々の実施形態において、明示的なダイアログプロンプト及びGUIリンクのあらゆる組み合わせを含むがそれらに限定されないいくつかの入力モダリティのいずれにおいても、フローステップはユーザに提供される。
【0320】
サービス構成要素1084
サービス構成要素1084は、インテリジェント自動アシスタント1002がユーザの代わりに呼び出すサービスの集合を表す。呼び出されるいずれのサービスも、サービス構成要素1084において提供される。
【0321】
少なくとも1つの実施形態において、サービス構成要素1084は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0322】
・通常、サービスに対するウェブベースのユーザインタフェースにより提供されるAPIを介して機能を提供する。例えばレビューウェブサイトは、プログラムにより呼び出された時に自動的に所定のエンティティのレビューを返すサービスAPIを提供する。APIは、ユーザがウェブサイトのユーザインタフェースを動作させることにより取得されるサービスをインテリジェント自動アシスタント1002に提供する。
【0323】
・通常、アプリケーションに対するユーザインタフェースにより提供されるAPIを介して機能を提供する。例えばカレンダアプリケーションは、プログラムにより呼び出された時に自動的にカレンダエントリを返すサービスAPIを提供する。APIは、ユーザがアプリケーションのユーザインタフェースを動作させることにより取得されるサービスをインテリジェント自動アシスタント1002に提供する。一実施形態において、アシスタント1002は、デバイスが利用可能な多くの種々の機能のうちのいずれも開始及び制御できる。例えばアシスタント1002がスマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ又は他のデバイスにインストールされる場合、アシスタント1002は、例えばアプリケーションの開始、通話、電子メール及び/又はテキストメッセージの送出、カレンダイベントの追加及びアラームの設定等の機能を実行できる。一実施形態において、そのような機能は、サービス構成要素1084を使用して有効にされる。
【0324】
・現在ユーザインタフェースにおいて実現されていないが、より大きいタスクにおいてアシスタントがAPIを介して利用可能であるサービスを提供する。例えば一実施形態において、住所を得て機械可読地理座標を返すAPIは、ウェブ又はデバイスにおいて直接ユーザインタフェースを有さない場合でもサービス構成要素1084としてアシスタント1002により使用される。
【0325】
特定の実施形態によると、サービス構成要素1084の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、サービス構成要素1084の種々の態様、特徴及び/又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の1つ以上(又はそれらの組み合わせ)により実行、実現及び/又は開始される。
【0326】
・ローカル、リモート又はあらゆる組み合わせでサービスにより示されるAPIの実現。
・自動アシスタント1002又はアシスタント1002が利用可能なデータベースサービス内にデータベースを含むこと。
【0327】
例えば映画を閲覧するインタフェースをユーザに提供するウェブサイトは、ウェブサイトにより使用されるデータベースのコピーとしてインテリジェント自動アシスタント1002の一実施形態により使用される。サービス構成要素1084は、データがローカルに保持される場合でもネットワークAPIを介して提供されるかのように内部APIをデータに提供する。
【0328】
別の例として、レストランの選択及び食事の計画を助長するインテリジェント自動アシスタント1002のサービス構成要素1084は、ネットワークを介して第三者から入手可能な以下のサービスの集合のいずれか又は全てを含む。
・名前、場所又は他の制約に一致するレストランを一覧表示するレストランリストサービスの集合。
・指名されたレストランに対するランク付けを返すレストラン評価サービスの集合。
・指名されたレストランに対する書面のレビューを返すレストランレビューサービスの集合。
・地図上でレストランの場所を特定するジオコーディングサービス。
・プログラムに基づくレストランのテーブルの予約を可能にする予約サービス。
【0329】
サービスオーケストレーション構成要素1082
インテリジェント自動アシスタント1002のサービスオーケストレーション構成要素1082は、サービスオーケストレーション手順を実行する。
【0330】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082は、以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
・ユーザの要求及び/又は指定されたドメイン及びタスクを満たすサービスを動的且つ自動的に判定する。
・並行及び順序付けのあらゆる組み合わせで複数のサービスを動的且つ自動的に呼び出す。
・サービスAPIの入力要件を満たすようにタスクパラメータ及び制約を動的且つ自動的に変換する。
・複数のサービスからの結果を動的且つ自動的に監視し且つ収集する。
・種々のサービスからのサービス結果データを統一結果モデルに動的且つ自動的にマージする。
・要求の制約を満たすように複数のサービスをオーケストレーションする。
・補助情報により既存の結果の集合に注釈をつけるように複数のサービスをオーケストレーションする。
【0331】
・種々のサービスからの結果を統一するサービスに依存しない統一表現で複数のサービスを呼び出した結果を出力する(例えば、レストランのリストを返し、いくつかのサービスからの少なくとも1つのレストランに関するデータをマージし、冗長性を除去するいくつかのレストランサービスを呼び出した結果として)。
【0332】
例えば、ある状況において、特定のタスクを達成する方法がいくつか存在する。例えば「remind me to leave for my meeting across town at 2pm」等のユーザ入力は、少なくとも3つの方法、すなわちアラームクロックの設定、カレンダイベントの作成又はto−doマネージャの呼び出しで達成される行動を指定する。一実施形態において、サービスオーケストレーション構成要素1082は、要求を最適に満足する方法に関して判定を行う。
【0333】
サービスオーケストレーション構成要素1082は、所定のタスク全体を実行するために呼び出すのに最適ないくつかのサービスの組み合わせに関しても判定を行う。例えば夕食のためにテーブルを見つけて予約するために、サービスオーケストレーション構成要素1082は、レビューを参照し、空き状況を取得し且つ予約をするという機能を実行するために呼び出すサービスに関して判定を行う。使用するサービスの判定は、多くの種々の要因のいずれかに依存する。例えば少なくとも1つの実施形態において、信頼性、特定の種類の要求に対処するサービスの能力及びユーザフィードバック等に関する情報は、呼び出すのに適切なサービスを判定する際の要因として使用される。
【0334】
特定の実施形態によると、サービスオーケストレーション構成要素1082の複数のインスタンス又はスレッドは、1つ以上のプロセッサ、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。
【0335】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082の所定のインスタンスは、明示的なサービス機能モデル1088を使用して、外部サービスの機能及び他の特性を表し、サービスオーケストレーション構成要素1082の特徴を達成しつつそれら機能及び特性について推論する。これは、サービスの集合を手作業でプログラミングすることと比較して、例えば以下のうちの1つ以上(又はそれらの組み合わせ)を含む利点を与える。
【0336】
・開発の容易さ
・実行時のロバスト性及び信頼性
・コードを妨害することなく動的にサービスを追加及び除去する能力
・特定のサービス又はAPIに対してハードコーディングするのではなく、特性及び機能により駆動される一般的な分散クエリ最適化アルゴリズムを実現する能力
【0337】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082の所定のインスタンスは、1つ以上の関連データベースの情報にアクセスし且つ/又はそれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。サービスオーケストレーション構成要素1082によりアクセスされる種々のデータの例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むが、それらに限定されない。
【0338】
・ドメインモデルのインスタンス化
・自然言語入力の構文的な構文解析及び意味的な構文解析
・タスクモデルのインスタンス化(パラメータに対する値による)
・ダイアログ及びタスクフローモデル、並びに/あるいはそれらモデル内の選択されたステップ
・サービス機能モデル1088
・アクティブオントロジ1050において入手可能なあらゆる他の情報
【0339】
図37を参照すると、一実施形態に従ってサービスオーケストレーション手順を実行する手順の一例が示される。
【0340】
この特定の例において、単一のユーザは、レストランでの夕食に適切な場所を見つけることに興味があり、このサービスを提供しやすくするために会話においてインテリジェント自動アシスタント1002を使用していると仮定する。
【0341】
高級であり、好評であり、特定の場所に近く、特定の時間に予約でき、且つ特定の種類の食べ物を提供するレストランを見つけるタスクを考慮する。これらのドメイン及びタスクパラメータは入力390として与えられる。
【0342】
方法が開始される(400)。402において、所定の要求がいずれかのサービスを必要とするかが判定される。ある状況において、例えばアシスタント1002が所望のタスク自体を実行できる場合、サービスの委任は要求されない。例えば一実施形態において、アシスタント1002は、サービスの委任を呼び出さずに実際の質問に応答できる。従って、要求がサービスを必要としない場合、スタンドアロンフローステップが403において実行され、その結果490が返される。例えば、タスク要求が自動アシスタント1002自体に関する情報を要求することである場合、ダイアログ応答は、いずれの外部サービスも呼び出さずに対処される。
【0343】
ステップ402においてサービスの委任が必要とされると判定される場合、サービスオーケストレーション構成要素1082はステップ404に進む。404において、サービスオーケストレーション構成要素1082は、サービス機能モデル1088におけるサービスの機能及び特性の宣言的記述とタスク要件とをマッチングする。インスタンス化された動作をサポートする少なくとも1つのサービスプロバイダは、宣言的で定性的なメタデータの詳細、例えば以下のうちの1つ以上(又はそれらの組み合わせ)を提供する。
【0344】
・結果を返されるデータフィールド
・サービスプロバイダが静的にサポートすることが分かっているパラメータのクラス
・パラメータ値の動的な検査の後にサービスプロバイダがサポートできるパラメータのポリシー関数
・サービスの実行方法を規定する性能評価(例えば、リレーショナルDB、ウェブサービス、トリプルストア、フルテキストインデックス又はそれらのある組み合わせ)
・結果オブジェクトと共に返される特性値の予想品質を静的に規定する特性品質の評価
・サービスが返すと予想される結果の全体品質の評価
【0345】
例えばサービスがサポートするパラメータのクラスを推論すると、サービスモデルは、サービス1、2、3及び4が特定の場所(パラメータ)に近いレストランを提供し、サービス2及び3が品質(別のパラメータ)によりレストランをフィルタリングするか又はランク付けし、サービス3、4及び5がレストラン(返されたデータフィールド)に対するレビューを返し、サービス6がレストラン(返されたデータフィールド)により提供される食べ物の種類を一覧表示し、サービス7が特定の時間帯(パラメータ)のレストランの空き状況をチェックすることを明示する。サービス8〜99は、この特定のドメイン及びタスクに対して必要とされない機能を提供する。
【0346】
この宣言的で定性的なメタデータ、タスク、タスクパラメータ及びアシスタントの実行環境から入手可能な他の情報を使用して、サービスオーケストレーション構成要素1082は呼び出すのに最適なサービスプロバイダの集合を判定する(404)。最適なサービスプロバイダの集合は、1つ以上のタスクパラメータ(1つ以上のパラメータを満足する結果を返す)をサポートし、少なくとも1つのサービスプロバイダの性能の評価及び少なくとも1つのサービスプロバイダの全体品質の評価を考慮する。
【0347】
ステップ404の結果は、この特定のユーザ及び要求に対する動的に生成された呼び出すサービスのリストである。
【0348】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082は、サービスの信頼性及び特定の情報要求に回答する能力を考慮する。
【0349】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082は、オーバラップするサービス又は冗長なサービスを呼び出すことにより非信頼性を回避する。
【0350】
少なくとも1つの実施形態において、サービスオーケストレーション構成要素1082は、サービスを選択するためにユーザに関する個人情報(短期個人メモリ構成要素)を考慮する。例えばユーザは、他のサービスよりある評価サービスを好む。
【0351】
ステップ450において、サービスオーケストレーション構成要素1082は、ユーザのために複数のサービスを動的且つ自動的に呼び出す。少なくとも1つの実施形態において、ユーザの要求に応答しつつ、これらサービスが動的に呼び出される。特定の実施形態によると、サービスの複数のインスタンス又はスレッドは同時に呼び出される。少なくとも1つの実施形態において、これらはAPIを使用してネットワークを介して呼び出されるか、ウェブサービスAPIを使用してネットワークを介して呼び出されるか、ウェブサービスAPIを使用してインターネットを介して呼び出されるか、あるいはそれらのあらゆる組み合わせで呼び出される。
【0352】
少なくとも1つの実施形態において、サービスが呼び出される頻度は、プログラムに基づいて制限され且つ/又は管理される。
【0353】
図38を参照すると、一実施形態に係るサービス呼び出し手順450の一例が示される。サービス呼び出しは、例えば追加の情報を取得するため又は外部サービスを使用してタスクを実行するために使用される。一実施形態において、要求パラメータは、サービスのAPIに適切なものとして変換される。結果がサービスから受信されると、それら結果は、アシスタント1002内でユーザに提示するための結果表現に変換される。
【0354】
少なくとも1つの実施形態において、サービス呼び出し手順450により呼び出されたサービスは、ウェブサービス、デバイスで実行するアプリケーション又はオペレーティングシステム機能等である。
【0355】
要求の表現390は、例えばタスクパラメータ等を含んで提供される。サービス機能モデル1088から利用可能な少なくとも1つのサービスに対して、サービス呼び出し手順450は、変換ステップ452、呼び出しステップ454及び出力マッピングステップ456を実行する。
【0356】
変換ステップ452において、要求表現390の現在のタスクパラメータは、少なくとも1つのサービスにより使用される形式に変換される。API又はデータベースとして提供されるサービスに対するパラメータは、タスク要求において使用されるデータ表現とは異なり、少なくとも互いに異なる。従って、ステップ452の目的は、少なくとも1つのタスクパラメータを呼び出されている少なくとも1つのサービスにおける1つ以上の対応する形式及び値にマッピングすることである。
【0357】
例えばレストラン等のビジネス名は、そのようなビジネスに対処するサービス間で異なる。従って、ステップ452は、あらゆる名前を少なくとも1つのサービスに最適な形式に変換することを含む。
【0358】
別の例として、場所は、サービス間で種々の単位及び規則を使用して種々の精度で既知である。サービス1は郵便番号を必要とし、サービス2はGPS座標を必要とし、サービス3は郵便用の住所を必要とする。
【0359】
サービスはAPIを介して呼び出され(454)、そのデータが収集される。少なくとも1つの実施形態において、結果がキャッシュされる。少なくとも1つの実施形態において、指定されたレベルの性能(例えば、サービス品質保証制度、すなわちSLAにおいて指定されるような)内で返さないサービスがドロップされる。
【0360】
出力マッピングステップ456において、サービスにより返されたデータが統一結果表現490に再度マッピングされる。このステップは、種々の形式及び単位等を処理することを含む。
【0361】
ステップ412において、複数のサービスからの結果は検査されてマージされる。一実施形態において、検査された結果が収集される場合、ドメイン毎に規定された同等ポリシー関数は、実世界において同一の概念を表す結果を判定するために1つ以上の結果にわたり対毎に呼び出される。同等の結果の対が発見される場合、ドメイン毎に規定された特性ポリシー関数の集合が特性値をマージ結果にマージするために使用される。特性ポリシー関数は、サービス機能モデル、タスクパラメータ、ドメインコンテキスト及び/又は長期個人メモリ1054からの特性品質の評価を使用して最適なマージ戦略を決定する。
【0362】
例えばレストランの種々のプロバイダからのレストランのリストはマージされ、複製は除去される。少なくとも1つの実施形態において、複製を識別する基準は、ファジィ名前マッチング、ファジィ場所マッチング、名前、場所、電話番号及び/又はウェブサイトアドレス等のドメインエンティティの複数の特性に対するファジィマッチング、並びに/あるいはそれらの組み合わせを含む。
【0363】
ステップ414において、結果はソートされ、所望の長さの結果リストを返すように削除される。
【0364】
少なくとも1つの実施形態において、要求緩和ループが更に適用される。ステップ416において現在の結果リストが十分でないこと(例えば、現在の結果リストが所望の一致するアイテム数より少ないアイテムを有すること)をサービスオーケストレーション構成要素1082が判定する場合、タスクパラメータはより多くの結果を可能にするために緩和される(420)。例えば対象とする場所からNマイル内で見つけられる所望の種類のレストラン数が少なすぎる場合、要求を緩和し、Nマイルより広い地域を見て且つ/又は探索の他のパラメータを緩和する。
【0365】
少なくとも1つの実施形態において、サービスオーケストレーション方法は、タスクに有用な補助データにより結果に注釈をつけるために2回目の通過時に適用される。
【0366】
ステップ418において、サービスオーケストレーション構成要素1082は、注釈が必要とされるかを判定する。例えばタスクが地図上での結果のプロットを必要とするが、主なサービスはマッピングに必要な地理座標を返さなかった場合に、注釈は必要とされる。
【0367】
422において、サービス機能モデル1088は、所望の追加の情報を返すサービスを見つけるために再調査される。一実施形態において、注釈処理は、マージ結果に追加のデータ又はより適切なデータの注釈をつけるかを判定する。注釈処理は、少なくとも1つのマージ結果の少なくとも1つの特性に対してドメイン毎に規定された特性ポリシー関数に委任することによりその判定を行う。特性ポリシー関数は、より適切なデータが取得されるかを決定するために、マージした特性値及び特性品質の評価、1つ以上の他のサービスプロバイダの特性品質の評価、ドメインコンテキスト及び/又はユーザプロフィールを使用する。1つ以上のサービスプロバイダがマージ結果に対して1つ以上の特性に注釈をつけることが判定された場合、費用関数は、注釈をつけるのに最適なサービスプロバイダの集合を判定するために呼び出される。
【0368】
最適な注釈サービスプロバイダの集合の少なくとも1つのサービスプロバイダは、結果424を取得するためにマージ結果のリストを使用して呼び出される(450)。少なくとも1つのサービスプロバイダにより少なくとも1つのマージ結果に行われた変更は、この処理中追跡され、変更はステップ412で使用されたのと同一の特性ポリシー関数処理を使用してマージされる。それらの結果は、既存の結果の集合にマージされる(426)。
【0369】
結果として得られたデータはソートされ(428)、統一表現490に統一される。
【0370】
サービスオーケストレーション構成要素1082に関して上述した方法及びシステムの1つの利点は、インテリジェント自動アシスタントに特に関連する技術分野以外の種々の技術分野において有利に適用及び/又は利用されることであることが理解される。サービスオーケストレーション手順の態様及び/又は特徴の他の技術分野の例は、例えば以下のうちの1つ以上を含む。
【0371】
・ウェブサイト、並びにウェブベースのアプリケーション及びサービスにおける動的な「マッシュアップ」
・分散データベースクエリ最適化
・動的サービス指向アーキテクチャ構成
【0372】
サービス機能モデル構成要素1088
少なくとも1つの実施形態において、サービス機能モデル構成要素1088は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
・特定のクラスの計算を実行するためにサービスの機能に関する機械可読情報を提供する。
・特定のクラスのクエリに回答するためにサービスの機能に関する機械可読情報を提供する。
・種々のサービスにより提供されるトランザクションのクラスに関する機械可読情報を提供する。
・種々のサービスにより示されるAPIに対するパラメータに関する機械可読情報を提供する。
・種々のサービスにより提供されるデータベースに対するデータベースクエリにおいて使用されるパラメータに関する機械可読情報を提供する。
【0373】
出力プロセッサ構成要素1090
少なくとも1つの実施形態において、出力プロセッサ構成要素1090は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0374】
・統一内部データ構造で表される出力データを種々のモダリティにおいてそれを適切にレンダリングする形式及びレイアウトにフォーマットする。出力データは、例えばインテリジェント自動アシスタントとユーザとの間の自然言語での通信、レストラン、映画及び製品の特性等のドメインエンティティに関するデータ、天気予報、フライト状態チェック及び価格等の情報サービスからのドメイン別のデータ結果、並びに/あるいはユーザが出力表現と直接対話することにより応答できるようにする対話リンク及びボタンを含む。
【0375】
・例えばグラフィカルユーザインタフェース、テキストメッセージ、電子メールメッセージ、音、アニメーション及び/又は音声出力のあらゆる組み合わせを含むモダリティに対する出力データをレンダリングする。
【0376】
・要求に基づいて種々のグラフィカルユーザインタフェースディスプレイエンジンに対するデータを動的にレンダリングする。例えばウェブブラウザ及び/又はデバイスが使用されている時に依存する種々の出力処理レイアウト及び形式を使用する。
【0377】
・種々の発話音声で出力データを動的にレンダリングする。
【0378】
・ユーザの嗜好に基づいて指定されたモダリティに対して動的にレンダリングする。
【0379】
・外観及び触感をカスタマイズするユーザ別の「スキン」を使用して出力を動的にレンダリングする。
【0380】
・モダリティに対して出力パッケージのストリームを送出し、アシスタント1002との対話の段階にわたり中間状態、フィードバック又は結果を示す。
【0381】
特定の実施形態によると、出力プロセッサ構成要素1090の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、出力プロセッサ構成要素1090の種々の態様、特徴及び/又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の1つ以上(又はそれらの組み合わせ)により実行、実現及び/又は開始される。
・インテリジェント自動アシスタントの一実施形態のクライアント又はサーバ内のソフトウェアモジュール。
・リモートで呼び出し可能なサービス。
・手続きコード及びテンプレートの組み合わせを使用する。
【0382】
図39を参照すると、一実施形態に係る多相出力手順の一例を示すフローチャートが示される。多相出力手順は、自動アシスタント1002の処理ステップ702及び多相出力ステップ704を含む。
【0383】
ステップ710において、音声入力発話が取得され、音声−テキスト構成要素(
図22に関連して説明した構成要素等)は音声を解釈して候補音声解釈712の集合を生成する。一実施形態において、音声−テキスト構成要素は、例えばマサチューセッツ州バーリントン(Burlington、MA)のニュアンス・コミュニケーション・インコーポレイテッド(Nuance Communications,Inc.)により市販されているニュアンス認識器(Nuance Recognizer)を使用して実現される。候補音声解釈712は、730において、例えば言い換えられた形式でユーザに示される。例えばインタフェースは、同一の音声サンプルのいくつかの可能な別のテキスト解釈を一覧表示する別の解釈「did you say?(そのように言った?)」を示す。
【0384】
少なくとも1つの実施形態において、ユーザインタフェースは、ユーザが割り込みをして候補音声解釈から選択できるようにするために提供される。
【0385】
ステップ714において、候補音声解釈712は言語インタプリタ1070に送出され、言語インタプリタ1070は少なくとも1つの候補音声解釈712に対してユーザの意図の表現716を生成する。ステップ732において、ユーザの意図の表現716の言い換えが生成され、ユーザに提示される。(
図22の手順120の関連するステップ132を参照。)
少なくとも1つの実施形態において、ユーザインタフェースにより、ユーザは、割り込みをして自然言語解釈の言い換え732から選択できる。
【0386】
ステップ718において、タスク及びダイアログ解析が実行される。ステップ734において、タスク及びドメイン解釈が意図言い換えアルゴリズムを使用してユーザに提示される。
【0387】
図40を参照すると、一実施形態に係る出力処理の一例を示すスクリーンショットが示される。画面4001は、ステップ730により生成されるユーザの音声入力のエコー4002を含む。画面4001は、ステップ734により生成されたユーザの意図の言い換え4003を更に含む。一実施形態において、
図40の例に示されるように、特別なフォーマット/強調表示は「events(イベント)」等のキーワードに対して使用され、インテリジェント自動アシスタント1002との対話に対するユーザのトレーニングを容易にするために使用される。例えば表示されたテキストのフォーマットを視覚的に観察することにより、ユーザは、インテリジェント自動アシスタントが認識する「events(イベント)」、「next Wednesday(次の水曜日)」及び「San Francisco(サンフランシスコ)」等のキーワードを容易に識別し且つ解釈する。
【0388】
図39を参照すると、要求がサービスにディスパッチされ(720)、結果が動的に収集されると、中間結果はリアルタイムの進捗状況の形式で表示される(736)。例えばレストランのリストは返され、それらのレビューは、レビューサービスからの結果が到着すると動的に読み込まれる。サービスは、デバイスにローカルに格納される情報及び/又はあらゆる他のソースからの情報にアクセスするサービス及び/又はウェブ対応のサービスを含む。
【0389】
応答の統一表現722が生成され、適切な出力モダリティに対してフォーマットされる(724)。最終的な出力形式が完成した後、738において異なる種類の言い換えが提供される。この段階において、結果の集合全体が解析され、初期の要求と比較される。結果の要約又は質問に対する回答が提供される。
【0390】
図41を参照すると、一実施形態に係る出力処理の別の例が示される。画面4101は、ステップ732により生成されたテキスト解釈の言い換え4102、ステップ736により生成されたリアルタイムの進捗状況4103及びステップ738により生成された言い換えられた要約4104を示す。また、詳細な結果4105も含まれる。
【0391】
一実施形態において、アシスタント1002は、複数のモードで出力を生成できる。
図42を参照すると、一実施形態に係るマルチモーダル出力処理の一例を示すフローチャートが示される。
【0392】
方法が開始される(600)。出力プロセッサ1090は、応答の統一表現490を取り入れ、適切であり且つ適用可能なモダリティ及びデバイスに従って応答をフォーマットする(612)。ステップ612は、デバイス及びモダリティモデル610、並びに/あるいはドメインデータモデル614からの情報を含む。
【0393】
応答490がフォーマットされると(612)、複数の種々の出力機構のうちのいずれかがあらゆる組み合わせで使用される。
図42に示す例は以下を含む。
・テキストメッセージ出力を生成し(620)、それはテキストメッセージチャネルに送出される(630)。
・電子メール出力を生成し(622)、それは電子メールメッセージとして送出される(632)。
・GUI出力を生成し(624)、それはレンダリングするためにデバイス又はウェブブラウザに送出される(634)。
・音声出力を生成し(626)、それは音声生成モジュールに送出される(636)。
【0394】
多くの他の出力機構が使用可能であることは、当業者には理解されるだろう。
【0395】
一実施形態において、多相出力手順700により生成された出力メッセージのコンテンツは、マルチモーダル出力処理600のモードに適合される。例えば出力モダリティが音声である場合(626)、ユーザ入力730、テキスト解釈732、タスク及びドメイン解釈734、進捗状況736、並びに/あるいは結果の要約738を言い換えるのに使用される言語は、多少冗長であり、あるいはテキストで書かれる形式より可聴形式の方が理解し易い文を使用する。一実施形態において、言語は多相出力手順700のステップにおいて適合される。他の実施形態において、多相出力手順700は中間結果を生成し、それはマルチモーダル出力処理600により特定の言語に更に改善される。
【0396】
短期個人メモリ構成要素1052
少なくとも1つの実施形態において、短期個人メモリ構成要素1052は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
・ユーザ入力及びそれらの解釈の履歴を含むアシスタントの実施形態とユーザとの間の最近のダイアログの履歴を保持する。
・開かれたか又は探索されたアイテム、電話をかけた電話番号、マッピングされたアイテム及び再生された映画予告等のGUIにおけるユーザによる最近の選択の履歴を保持する。
・クライアントのデータベース、ユーザ別のセッション又はウェブブラウザクッキー等のクライアントセッション状態におけるサーバ、あるいはクライアントにより使用されるRAMにダイアログ及びユーザ対話の履歴を格納する。
・最近のユーザ要求のリストを格納する。
・最近のユーザ要求の結果のシーケンスを格納する。
・ボタン押下、タップ、ジェスチャ、音声起動トリガ及び/又はあらゆる他のユーザ入力を含むUI事象のクリックストリーム履歴を格納する。
・アシスタントとの対話と相関するデバイスセンサデータ(場所、時間、位置姿勢、動き、光レベル及びサウンドレベル等)を格納する。
【0397】
特定の実施形態によると、短期個人メモリ構成要素1052の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。
【0398】
種々の実施形態によると、短期個人メモリ構成要素1052の1つ以上の異なるスレッド又はインスタンスは、短期個人メモリ構成要素1052の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。例えば短期個人メモリ構成要素1052は、ユーザによる少なくも1つの入力形式又は行動、あるいはシステムによる応答の際に、アシスタント1002に実施形態とのユーザセッションがある場合に呼び出される。
【0399】
少なくとも1つの実施形態において、短期個人メモリ構成要素1052の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はこれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。例えば短期個人メモリ構成要素1052は、長期個人メモリ構成要素1054からのデータにアクセスし(例えば、ユーザの本人確認及び個人の嗜好を取得するために)、且つ/又は短期メモリエントリに含まれる時間及び場所に関するローカルデバイスからのデータにアクセスする。
【0400】
図43A及び
図43Bを参照すると、一実施形態に従って場所を変更しつつダイアログコンテキストを維持するために短期個人メモリ構成要素1052を使用する一例を示すスクリーンショットが示される。この例において、ユーザは現地の天気に関して尋ねており、単に「in new york(ニューヨークの)」と言う。画面4301は、現地の天気を含む初期応答を示す。ユーザが「in new york」と言った時、アシスタント1002は短期個人メモリ構成要素1052を使用してダイアログコンテキストにアクセスし、現在のドメインが天気予報であると判定する。これにより、アシスタント1002は、「what is the weather forecast in New York this coming Tuesday?(今度の火曜日のニューヨークの天気予報は?)」を意味するように新しい発話「in new york」を解釈する。画面4302は、New Yorkの天気予報を含む適切な応答を示す。
【0401】
図43A及び
図43Bの例において、短期メモリには、入力「is it going to rain the day after tomorrow?(明後日は雨でしょう)」の単語だけでなく、天気ドメインとしての入力のシステムの意味的な解釈及びthe day after tomorrow(明後日)に設定された時間パラメータも格納された。
【0402】
長期個人メモリ構成要素1054
少なくとも1つの実施形態において、長期個人メモリ構成要素1054は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
・ユーザの嗜好、本人確認、認証証明、アカウント及びアドレス等を含む個人情報及びユーザに関するデータを固定的に格納すること。
・ブックマーク、お気に入り及びクリッピングの等価物等のアシスタント1002の実施形態を使用することによりユーザが収集した情報を格納すること。
・レストラン、ホテル、ストア、劇場及び他の場所を含む保存されたビジネスエンティティのリストを固定的に格納すること。一実施形態において、長期個人メモリ構成要素1054は、名前又はURLだけでなく、電話番号、地図上の場所及び写真等を含むエンティティに関するフルリストを示すのに十分な情報も保存する。
・保存した映画、ビデオ、音楽、ショー及び他のエンターテイメントのアイテムを固定的に格納すること。
・ユーザの個人カレンダ、to doリスト、リマインダ及びアラート、連絡先データベース、並びにソーシャルネットワークリスト等を固定的に格納すること。
・製品及びサービス、取得されたクーポン及び割引コード等に対するショッピングリスト及び要望リストを固定的に格納すること。
・予約、購入及び事象に対するチケット等を含むトランザクションに対する履歴及びレシートを固定的に格納すること。
【0403】
特定の実施形態によると、長期個人メモリ構成要素1054の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。例えば少なくともいくつかの実施形態において、長期個人メモリ構成要素1054の種々の態様、特徴及び/又は機能性は、クライアント1304及び/又はサーバ1340にあり(又はそれと関連する)且つ/あるいは記憶装置に常駐する1つ以上のデータベース及び/又はファイルを使用して実行、実現及び/又は開始される。
【0404】
種々の実施形態によると、長期個人メモリ構成要素1054の1つ以上の異なるスレッド又はインスタンスは、長期個人メモリ構成要素1054の少なくとも1つのインスタンスの開始をトリガする種々の最小閾値基準を満足する1つ以上の条件又は事象の検出に応答して開始される。長期個人メモリ構成要素1054の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガする種々の条件又は事象の種々の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0405】
・長期個人メモリエントリは、ユーザがアシスタント1002の一実施形態と対話する際の副作用として取得される。アシスタントとのあらゆる種類の対話は、閲覧、探索、発見、ショッピング、スケジューリング、購入、予約、アシスタントを介する他のユーザとの通信を含む長期個人メモリに対する付加を生成する。
・長期個人メモリは、ユーザがアカウント又はサービスにサインアップし、アシスタント1002が他のサービスのアカウントにアクセスできるようにし、カレンダ、to−doリスト及び連絡先リスト等の他の個人情報データベースへのアクセス権を有するクライアントデバイス上でアシスタント1002のサービスを使用するなどした結果として累積される。
【0406】
少なくとも1つの実施形態において、長期個人メモリ構成要素1054の所定のインスタンスは、1つ以上の関連データベースからの情報にアクセスし且つ/又はこれを利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、例えばクライアント1304及び/又はサーバ1340に配置される1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。長期個人メモリ構成要素1054によりアクセスされる種々のデータの例は、外部サービス1360等により提供される連絡先又は友人リスト、カレンダ、to−doリスト、他のリストマネージャ、個人アカウント及びウォレットマネージャ等の他の個人情報データベースからのデータを含むがそれらに限定されない。
【0407】
図44A〜
図44Cを参照すると、一実施形態に従って長期個人メモリ構成要素1054を使用する一例を示すスクリーンショットが示される。この例において、アシスタント1002の一実施形態との対話セッションを介して見つけられるレストラン、映画及びビジネス等の保存されたエンティティへのアクセスを含む特徴が提供される(「My Stuff(マイスタッフ)」と呼ばれる)。
図44Aの画面4401において、ユーザはレストランを見つけた。ユーザはSave to My Stuff(マイスタッフへ保存)4402をタップし、レストランに関する情報を長期個人メモリ構成要素1054に保存する。
【0408】
図44Bの画面4403は、My Stuffへのユーザアクセスを示す。一実施形態において、ユーザは所望のアイテムにナビゲートするためにカテゴリから選択できる。
【0409】
図44Cの画面4404は、My Stuffに先に格納されたアイテムを含むMy Restaurant(マイレストラン)カテゴリを示す。
【0410】
自動呼出し及び応答手順
図33を参照すると、一実施形態に係る自動呼出し及び応答手順を示すフローチャートが示される。
図33の手順は、インテリジェント自動アシスタント1002の1つ以上の実施形態と関連して実現される。
図1に示すようなインテリジェント自動アシスタント1002は、実現される広範なインテリジェント自動アシスタントシステムの実施形態のうちの単なる一例であることが理解される。インテリジェント自動アシスタントシステム(不図示)の他の実施形態は、例えば
図1に示したインテリジェント自動アシスタント1002の例において示す構成要素/特徴と比較して、追加の構成要素/特徴、より少ない構成要素/特徴、並びに/あるいは異なる構成要素/特徴を含む。
【0411】
少なくとも1つの実施形態において、
図33の自動呼出し及び応答手順は、例えば以下のうちの1つ以上(又はそれらの組み合わせ)等の種々の機能、動作、行動及び/又は他の特徴を実行及び/又は実現するように動作可能である。
【0412】
・
図33の自動呼出し及び応答手順は、ユーザとインテリジェント自動アシスタント1002との間の会話インタフェースのインタフェース制御フローループを提供する。自動呼出し及び応答手順の少なくとも1回の実行は、1回の会話のやりとりである。会話インタフェースは、ユーザ及びアシスタント1002が会話のように相互に発話を行うことにより通信するインタフェースである。
・
図33の自動呼出し及び応答手順は、インテリジェント自動アシスタント1002に対する実行制御フローを提供する。すなわち、手順は、入力の収集と、入力の処理と、出力の生成と、ユーザへの出力の提示とを制御する。
・
図33の自動呼出し及び応答手順は、インテリジェント自動アシスタント1002の構成要素間の通信を連携する。すなわち、手順は、1つの構成要素の出力が別の構成要素に供給される場所と、環境からの入力全体及び環境における行動が行われる場所とを指示する。
【0413】
少なくともいくつかの実施形態において、自動呼出し及び応答手順の部分は、コンピュータネットワークの他のデバイス及び/又はシステムにおいて実現される。
【0414】
特定の実施形態によると、自動呼出し及び応答手順の複数のインスタンス又はスレッドは、1つ以上のプロセッサ63、並びに/あるいはハードウェア及び/又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び/又は開始される。少なくともいくつかの実施形態において、自動呼出し及び応答手順の1つ以上の部分又は選択された部分は、1つ以上のクライアント1304、1つ以上のサーバ1340及び/又はそれらの組み合わせにおいて実現される。
【0415】
例えば少なくともいくつかの実施形態において、自動呼出し及び応答手順の種々の態様、特徴及び/又は機能性は、ソフトウェアコンポーネント、ネットワークサービス及び/又はデータベース等、あるいはそれらの組み合わせにより実行、実現及び/又は開始される。
【0416】
種々の実施形態によると、自動呼出し及び応答手順の1つ以上の異なるスレッド又はインスタンスは、自動呼出し及び応答手順の少なくとも1つのインスタンスの開始をトリガする1つ以上の種々の基準(例えば、最小閾値基準等)を満足する1つ以上の条件又は事象の検出に応答して開始される。自動呼出し及び応答手順の1つ以上の異なるスレッド又はインスタンスの開始及び/又は実現をトリガする種々の条件又は事象の例は、以下のうちの1つ以上(又はそれらの組み合わせ)を含むがそれらに限定されない。
【0417】
・例えば以下のうちの1つ以上を含むがそれらに限定されないインテリジェント自動アシスタント1002のインスタンスとのユーザセッション
・例えばインテリジェント自動アシスタント1002の一実施形態を実現している移動体デバイスアプリケーションを起動する移動体デバイスアプリケーション
・例えばインテリジェント自動アシスタント1002の一実施形態を実現しているアプリケーションを起動するコンピュータアプリケーション
・「speech input button(音声入力ボタン)」等の押下される移動体デバイス上の専用ボタン
・ヘッドセット、電話ヘッドセット又は基地局、GPSナビゲーションシステム、民生用機器、リモートコントロール又は呼び出し支援と関連付けられるボタンを有するあらゆる他のデバイス等のコンピュータ又は移動体デバイスに接続された周辺装置上のボタン
・ウェブブラウザからインテリジェント自動アシスタント1002を実現するウェブサイトに対して開始されたウェブセッション
・例えばインテリジェント自動アシスタント1002のサービスが要求されるインテリジェント自動アシスタント1002を実現するウェブサイトに対する既存のウェブブラウザセッション内から開始された対話
・インテリジェント自動アシスタント1002の一実施形態との通信を仲介しているモダリティサーバ1426に送出された電子メールメッセージ
・テキストメッセージがインテリジェント自動アシスタント1002の一実施形態との通信を仲介しているモダリティサーバ1426に送出される
・インテリジェント自動アシスタント1002の一実施形態との通信を仲介しているモダリティサーバ1434に対して電話がかけられる
・アラート又は通知等の事象がインテリジェント自動アシスタント1002の一実施形態を提供しているアプリケーションに送出される
・インテリジェント自動アシスタント1002を提供するデバイスがONにされるか且つ/又は開始される場合。
【0418】
種々の実施形態によると、自動呼出し及び応答手順の1つ以上の異なるスレッド又はインスタンスは、手動で、自動的に、静的に、動的に、同時に及び/又はそれらの組み合わせで開始及び/又は実現される。更に自動呼出し及び応答手順の種々のインスタンス及び/又は実施形態は、1つ以上の異なる時間間隔で(例えば、特定の時間間隔の間に、一定間隔で、不規則な間隔で及び要望に応じて等)開始される。
【0419】
少なくとも1つの実施形態において、自動呼出し及び応答手順の所定のインスタンスは、特定のタスク及び/又は動作を実行する時に種々のデータ及び/又は他の種類の情報を利用及び/又は生成する。これは、例えば入力データ/情報及び/又は出力データ/情報を含む。例えば少なくとも1つの実施形態において、自動呼出し及び応答手順の少なくとも1つのインスタンスは、例えば1つ以上のデータベース等の1つ以上の種々のソースからの情報にアクセスし、それを処理し且つ/又は利用する。少なくとも1つの実施形態において、データベース情報の少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。更に、自動呼出し及び応答手順の少なくとも1つのインスタンスは、1つ以上の種々の出力データ/情報を生成し、それらは、例えばローカルメモリ及び/又はリモートメモリ素子に格納される。
【0420】
少なくとも1つの実施形態において、自動呼出し及び応答手順の所定のインスタンスの初期構成は、1つ以上の種々の初期化パラメータを使用して実行される。少なくとも1つの実施形態において、初期化パラメータの少なくとも一部分は、1つ以上のローカル及び/又はリモートメモリ素子との通信を介してアクセスされる。少なくとも1つの実施形態において、自動呼出し及び応答手順のインスタンスに提供される初期化パラメータの少なくとも一部分は、入力データ/情報に対応してもよく、且つ/又は入力データ/情報から導出されてもよい。
【0421】
図33の特定の例において、単一のユーザは、音声入力機能を有するクライアントアプリケーションからネットワークを介してインテリジェント自動アシスタント1002のインスタンスにアクセスしていると仮定される。ユーザは、レストランでの夕食に適切な場所を見つけることに興味があり、このサービスを提供しやすくするために会話においてインテリジェント自動アシスタント1002を使用している。
【0422】
ステップ100において、ユーザは要求を入力するように要求される。クライアントのユーザインタフェースは、
図26と関連して説明するようにいくつかの入力モードを提供する。これら入力モードは、例えば以下を含む。
・タイプ入力に対するインタフェースであり、
図11に示すような能動的タイプ入力導出手順を呼び出す。
・音声入力に対するインタフェースであり、
図22に示すような能動的音声入力導出手順を呼び出す。
・メニューから入力を選択するためのインタフェースであり、
図23に示すような能動的GUI入力導出を呼び出す。
【0423】
他の入力モードが提供されてもよいことが当業者には理解されるだろう。
【0424】
一実施形態において、ステップ100は、例えば
図24と関連して説明した能動的ダイアログ提案入力導出手順において説明した技術を使用して、アシスタント1002との先の会話からの残っているオプションを提示することを含む。
【0425】
例えばステップ100における能動的入力導出の方法のうちの1つにより、ユーザは「where may I get some good Italian around here?(この辺においしいイタリアンはない?)」とアシスタント1002に対して言う。例えば、ユーザはこれを音声入力構成要素に対して話した。能動的入力導出構成要素1094の一実施形態は、音声−テキストサービスを呼び出し、ユーザに確認するように要求し、確認されたユーザ入力を統一注釈付き入力形式2609として提示する。
【0426】
言語インタプリタ構成要素1070の一実施形態は、
図29と関連して説明するように、ステップ200において呼び出される。言語インタプリタ構成要素1070は、テキスト入力を構文解析し、ユーザの意
図290の可能な解釈のリストを生成する。1つの構文解析において、単語「italian(イタリアン)」はrestaurants of style Italian(イタリアンスタイルのレストラン)と関連付けられ、「good(おいしい)」はrecommendation property of restaurants(レストランの推薦プロパティ)と関連付けられ、「around here(この辺)」は、グローバルセンサ読取値(例えば、移動体デバイスにおいてGPSにより与えられるようなユーザの場所)からの距離を記述する場所パラメータと関連付けられる。
【0427】
ステップ300において、ユーザの意図の表現290は、ダイアログフロープロセッサ1080に渡され、
図32と関連して説明するようなダイアログ及びフロー解析手順の一実施形態を実現する。ダイアログフロープロセッサ1080は、最も可能性の高い意図の解釈を判定し、この解釈をドメインモデルのインスタンス及びタスクモデルのパラメータにマッピングし、ダイアログフローの次のフローステップを判定する。この例において、レストランドメインモデルは、制約(料理の種類、推薦度及び近接度の制約)によりレストランを見つけるために条件付き選択タスクによりインスタンス化される。ダイアログフローモデルは、次のステップがそれら制約を満たすレストランのいくつかの例を取得し且つそれらをユーザに提示することであることを示す。
【0428】
ステップ400において、フロー及びサービスオーケストレーション手順400の一実施形態がサービスオーケストレーション構成要素1082を介して呼び出される。これは、レストランを見つけるというユーザの要求のためにサービス1084の集合を呼び出す。一実施形態において、これらのサービス1084は、いくつかのデータを共通の結果に与える。それらのデータはマージされ、結果として得られるレストランのリストはサービスに依存しない統一形式で表される。
【0429】
ステップ500において、出力プロセッサ1092は、「I found some recommended Italian restaurants near here(この辺の推薦イタリアンレストランがいくつか見つかりました。)」等の結果のダイアログ要約を生成する。出力プロセッサ1092は、この要約を出力結果データと組み合わせ、ステップ600でユーザの特定の移動体デバイスのために出力をフォーマットするモジュールにその組み合わせたデータを送出する。
【0430】
ステップ700において、このデバイス別の出力パッケージは移動体デバイスに送出され、デバイスのクライアントソフトウェアは移動体デバイスの画面(又は他の出力デバイス)にレンダリングする。
【0431】
ユーザはこの提示を閲覧し、種々のオプションを探索することを決定する。ユーザがそれを終了すると(790)、方法は終了する。ユーザがそれを終了していない場合(790)、ステップ100に戻ることによりループの別の繰り返しが開始される。
【0432】
自動呼出し及び応答手順は、例えばユーザのクエリ「how about mexican food?(メキシコ料理はいかがですか?)」に適用される。そのような入力は、ステップ100で導出される。ステップ200において、入力がrestaurants of style Mexican(メキシカンスタイルのレストラン)と解釈され、レストランの種類のパラメータの1つの変更以外は前回と同一の意図の解釈をサポートするために他の状態(短期個人メモリ1052に保持される)と組み合わされる。ステップ300において、この更新された意図は要求を改善し、その要求はステップ400においてサービスオーケストレーション構成要素1082に与えられる。
【0433】
ステップ400において、更新された要求は複数のサービス1084にディスパッチされ、その結果、500においてダイアログにおいて要約され、600でデバイスに対してフォーマットされ、ステップ700においてユーザの移動体デバイスで新しい情報を表示するためにネットワークを介して送出される新しいレストランの集合が得られる。
【0434】
この場合、ユーザは自身の好みのレストランを見つけ、それを地図上に示し、道順を友人に送出する。
【0435】
自動呼出し及び応答手順の種々の実施形態(不図示)は、
図33の特定の実施形態に示す特徴及び/又は動作と比較して追加の特徴及び/又は動作を含んでもよく、且つ/あるいは
図33の特定の実施形態に示す自動呼出し及び応答手順の特徴及び/又は動作の少なくとも一部分を省略してもよいことが当業者には理解されるだろう。
【0436】
条件付き選択
一実施形態において、インテリジェント自動アシスタント1002は、ユーザが興味のある可能性があるアイテムをより効果的に識別して提示するために、ユーザとの対話において条件付き選択を使用する。
【0437】
条件付き選択は、一種のジェネリックタスクである。ジェネリックタスクは、あるクラスのタスク間で共通のドメインオブジェクト、入力、出力及び制御フローの種類を特徴付ける抽象概念である。条件付き選択タスクは、選択の制約(所望の料理又は場所等)に基づいてドメインオブジェクト(レストラン等)の選択肢の集合からアイテムを選択することにより実行される。一実施形態において、アシスタント1002は、ユーザが可能な選択肢の空間を探索しやすくし、ユーザの制約及び嗜好を導出し、選択肢を提示し、それらの選択肢に対して実行する行動、例えば予約、購入、記憶又は共有を提供する。タスクは、ユーザが行動を実行するアイテムを1つ以上選択した時に完了する。
【0438】
条件付き選択は多くの状況において有用である。例えば、観る映画、夕食のレストラン、一泊するホテル又は本を購入する場所等を選択する。一般に、条件付き選択は、カテゴリを知っていて、いくつかの所望の特性を有するカテゴリのインスタンスを選択する必要がある場合に有用である。
【0439】
条件付き選択に対する1つの従来の方法は、ディレクトリサービスである。ユーザはカテゴリを選択し、システムは選択肢のリストを提供する。ローカルディレクトリにおいて、ユーザは、ディレクトリを都市等の場所に制約する。例えば、「yellow pages」サービスにおいて、ユーザは都市に対する電話帳を選択し、カテゴリを参照し、電話帳はそのカテゴリの1つ以上のアイテムを示す。ディレクトリサービスの主な問題は、関連する可能性のある選択肢の数が多いことである(例えば、所定の都市のレストラン)。
【0440】
別の従来の方法はデータベースアプリケーションである。これは、ユーザからのクエリを導出し、一致するアイテムを検索し、主な特徴を強調表示するようにアイテムを提示することにより選択肢の集合を生成する方法を提供する。ユーザは、結果の集合の行及び列を閲覧し、ユーザがいくつかの適切な候補を見つけるまで結果をソートするか又はクエリを変更する可能性が高い。データベースサービスの問題は、ユーザが人間の要求を正規クエリとして動作可能にし、結果として得られるデータを探索するためにソート、フィルタリング及び閲覧の抽象機械を使用する必要があることである。これらは、グラフィカルユーザインタフェースを使用しても殆どのユーザにとって行うのが困難である。
【0441】
第3の従来の方法は、「ローカル探索」等の開放型探索である。探索は行うのが容易であるが、ユーザが条件付き選択のタスクを達成することを困難にする探索サービスの問題がいくつかある。特に以下のことである。
・ディレクトリ探索と同様に、ユーザは単にカテゴリを入力して1つ以上の可能な選択肢を調べるのではなく、リストを絞り込む必要がある。
・ユーザが制約により選択の範囲を限定できる場合、使用される制約は明確ではない(例えば、徒歩で行ける距離内にあるか又は遅くまで開いている場所を探せるか?)
・制約を明示する方法が明確でない(例えば、料理の種類又はレストランの種類を要求できるか?可能な価格は?)
・複数の嗜好が矛盾する。通常、所定の状況(例えば、近くにあり、素晴らしいサービスで安くて美味しい食べ物を提供し、夜中まで開いている場所を知りたい)に対する客観的に「最適な」回答はない。
・嗜好は相対的であり、利用可能であるものに依存する。例えば、ユーザが高級レストランのテーブルを予約する場合、ユーザは高くてもそのレストランを選択する。しかし、一般に、ユーザはより安いオプションを好む。
【0442】
種々の実施形態において、本発明のアシスタント1002は、条件付き選択のタスクを合理化しやすくする。種々の実施形態において、アシスタント1002は、探しているものを明示し、利用可能なものを考慮し、満足のいく解決策を決定する際のユーザ側の労力を軽減するために、データベース及び探索サービス、並びに他の機能性を採用する。
【0443】
種々の実施形態において、アシスタント1002は、多くの種々の方法のうちのいずれかにより条件付き選択を人間にとってより分かりやすくする。
【0444】
例えば一実施形態において、アシスタント1002は特性を制約にして動作可能にする。ユーザは、所望の結果の特性に関して要求することを明示する。アシスタント1002は、この入力を正規制約にして動作可能にする。例えば、「find one or more restaurants less than 2 miles from the center of Palo Alto whose cuisine includes Italian food(パロアルト中心地区から2マイル未満のレストランで、イタリアンフードを提供するところを検索して)」と言う代わりに、ユーザは、単に「Italian restaurants in palo alto(パロアルトのイタリアンレストラン)」と言ってもよい。アシスタント1002は、データベースに対するパラメータでないユーザにより要求された特質を動作可能にする。例えばユーザがロマンティックなレストランを要求する場合、システムは、これをテキスト探索として動作可能にするか、一致する制約をタグ付けする。このように、アシスタント1002は、ユーザが条件付き選択に関して有する可能性のある問題のいくつかを克服しやすくする。ユーザにとって、不適切な解決策と適切な解決策とを区別する条件を記述するより満足のいく解決策を想定して記述する方が容易である。
【0445】
一実施形態において、アシスタント1002は有用な選択基準を提案し、ユーザは、その時点で重要な基準を言うだけでよい。例えばアシスタント1002は、「which of these matter: price (cheaper is better), location (closer is better), rating (higher rated is better)?(これらの事項のどれ:価格(安い方がよい)、場所(近い方がよい)、評価(高評価の方がよい))」と尋ねる。アシスタント1002は、特定の値を要求する基準を提案する可能性がある。例えば、「you can say what kind of cuisine you would like or a food item you would like(どんな料理が好きですか、或いは、どんな食品がすきですか、と言うことができます。)」と提案する。
【0446】
一実施形態において、アシスタント1002は、多くの競合する基準(例えば、価格、品質、空き状況及び便利さ)で異なる選択肢の間で決定を行いやすくする。
【0447】
そのようなガイダンスを提供することにより、アシスタント1002は、ユーザが以下のいくつかの方法のうちのいずれかの方法でマルチパラメータ決定を行いやすくする。
【0448】
・1つの方法は、空間の次元を減少し、複数のソースからの評価等の生データを合成「推薦」スコアに組み合わせることである。合成スコアは、データソースに関するドメイン知識を考慮に入れる(例えば、Zagat評価はYelpより品質を予測できる)。
【0449】
・別の方法は、基準の部分集合に注目し、「what are all the possible criteria to consider and how to they combine?(可能性のある考慮すべき全ての基準が何で、どうやってそれを組み合わせるか?)」の問題を所定の状況における最も重要な基準の選択(例えば、「which is more important, price or proximity?(価格と近接度のどちらがより重要か?)」)に変更することである。
【0450】
・単純な決定を行う別の方法は、デフォルト値及び嗜好の順序を仮定することである(例えば、全てのものは同等であり、より高い評価であり、より近くにあり且つより安価である方がより望ましい)。システムは、デフォルト値及び嗜好を示すユーザの前の応答を記憶している可能性がある。
【0451】
・第4に、システムは、元の要求で示されていなかった選択肢の集合におけるアイテムの主な特性を提供する。例えばユーザは、ローカルのイタリア料理を要求した。システムは、レストランの選択肢の集合を提供し、それらを使用して、レビュー者により使用される人気タグ又はガイドブックによるタグライン(例えば、「a nice spot for a date(素敵なデートスポット)」、「great pasta(すばらしいパスタ)」)のリストを提供する。これにより、ユーザは特定のアイテムを選定し、タスクを完了する。調査は、殆どのユーザが基準に従って決定し且つ最上位に現れるものを合理的に受け入れるのではなく、特定のインスタンスを評価することにより決定を行うことを示す。また、ユーザが詳細な例からの特徴に関して学ぶことを示す。例えば自動車を選択する場合、購入者は、いくつかの自動車がナビゲーションシステムを有することを見る(且つナビゲーションシステムが重要な基準になる)までナビゲーションシステムに関して気にしないだろう。アシスタント1002は、ユーザが最適なものを選択しやすくするか又は最適化するのに沿う側面を提案する一覧表示されたアイテムの主な特性を提示する。
【0452】
概念データモデル
一実施形態において、アシスタント1002は、概念データモデルを簡略化することにより条件付き選択タスクによる支援を提供する。概念データモデルは、アシスタント1002のインタフェースにおいてユーザに提示される抽象概念である。上述した心理的問題を克服するために、一実施形態において、アシスタント1002は、ユーザが制約表現ではなく適切な選択肢の容易に理解され且つ再現されるいくつかの特性に関して要求することを説明するのを可能にするモデルを提供する。このように、特性は、自然言語要求(例えば、キーワードマーカを変更する形容詞)に合成され且つプロンプト(「you may also favor recommended restaurants...(推薦レストランを気に入るでしょう。)」)で理解可能にするのが容易にされる。一実施形態において、アシスタント1002が関心ドメイン(例えば、レストラン対ホテル)及びドメイン別の特性によりインスタンス化されるガイダンスに対する一般的な方法を判定するのを可能にするデータモデルが使用される。
【0453】
一実施形態において、アシスタント1002により使用される概念データモデルは選択クラスを含む。これは、選択するものの空間の表現である。例えばレストラン検索アプリケーションにおいて、選択クラスはレストランのクラスである。選択クラスは、抽象的であり、「things to do while in a destination(目的地にいる間になすべきこと)」等のサブクラスを有する。一実施形態において、概念データモデルは、所定の問題解決状況において、ユーザが単一の選択クラスから選択することに興味があることを仮定する。この仮定は、対話を簡略化し、アシスタント1002が権限の境界を宣言することを可能にする(「I know about life in the city(都市での生活を知っている。)」とは対照的に「I know about restaurants, hotels, and movies(レストラン、ホテル、映画について知っている)」)。
【0454】
選択クラスを仮定すると、一実施形態において、条件付き選択タスクに対してユーザに提示されたデータモデルは、例えばアイテム、アイテムの特徴、選択基準及び制約を含む。
【0455】
アイテムは、選択クラスのインスタンスである。
【0456】
アイテムの特徴は、提示され且つ/又は少なくとも1つのアイテムと関連付けられる特性、属性又は計算値である。例えば、レストランの名前及び電話番号はアイテムの特徴である。特徴は、固有であってもよく(レストランの名前又は料理)又は関係があってもよい(例えば、現在の関心場所からの距離)。特徴は、静的であってもよく(例えば、レストラン名)又は動的であってもよい(評価)。特徴は、他のデータ(例えば、「金銭的な価値」のスコア)から計算された合成値であってもよい。アイテムの特徴は、ドメインモデラーにより作成されるユーザに対する抽象概念である。すなわち、アイテムの特徴は、バックエンドサービスからの基礎となるデータに対応する必要はない。
【0457】
選択基準は、アイテムの関連性又は値を比較するために使用されるアイテムの特徴である。すなわち、選択基準は好適なアイテムを言う方法である。選択基準は、固有の特性であるか又は計算されるかに関わらずアイテム自体の特徴としてモデル化される。例えば近接度(関心場所からの距離として規定される)は選択基準である。空間−時間における場所は選択基準ではなく特性であり、関心場所からの距離を計算するために関心場所と共に使用される。
【0458】
選択基準は、固有の嗜好の順序を有する。すなわち、あらゆる特定の基準の値は、最良優先順序でアイテムを確保するために使用される。例えば近接基準は、より近い方が望ましいという固有の嗜好を有する。一方、場所は固有の嗜好の値を有さない。この制約は、システムがデフォルトの仮定をすることを可能にし、ユーザが基準のみを述べる場合に選択を誘導することを可能にする。例えばユーザインタフェースは、「評価によりソート」するために提供され、より高い評価が望ましいと仮定する。
【0459】
1つ以上の選択基準は、アイテムの特徴である。それらは可能なアイテムの中から選択することに関係する特徴である。しかし、アイテムの特徴は必ずしも嗜好に関連しない(例えば、レストランの名前及び電話番号は、それらの中から選択することに一般に関連しない)。
【0460】
少なくとも1つの実施形態において、制約は選択基準の所望の値に対する制限である。形式上、制約は、集合の帰属関係(例えば、料理の種類がイタリアンを含む)、パターンの一致(例えば、レストランレビューテキストが「romantic」を含む)、ファジィ不等式(例えば、数マイル未満の距離)、品質閾値(例えば、高く評価された)又はより複雑な関数(例えば、金額相応)として表される。一般的な人にとって物事を十分に単純にするために、このデータモデルは、少なくとも1つ以上の制約を単語としてマッチングされる記号値に緩和する。時間及び距離はこの緩和から除外される。一実施形態において、制約を実現するのに使用される演算子及び閾値は、ユーザに非公開である。例えば「cuisine」と呼ばれる選択基準に対する制約は「Italian」又は「Chinese」等の記号値として表される。評価に対する制約は「recommended」(2値の選択肢)である。一実施形態において、時間及び距離に対しては、アシスタント1002は、制約値及び入力の範囲に対処する独自の表現を使用する。例えば距離は、「walking distance」であり、時間は「tonight」である。一実施形態において、アシスタント1002はそのような入力を高精度なデータにマッチングさせるために特別な処理を使用する。
【0461】
少なくとも1つの実施形態において、いくつかの制約は要求される制約である。これは、単純にタスクがこのデータなしで完了できないことを意味する。例えば、ユーザが名前を知っている場合でも所望の場所の概念なしではレストランを選択することが困難である。
【0462】
要約すると、ドメインは、ユーザにとって重要なアイテムの特徴を含む選択クラスとしてモデル化される。いくつかの特徴は、ユーザに提供されたアイテムを選択し且つ順序付けするために使用される。これらの特徴は選択基準と呼ばれる。制約は、アイテムの集合を一致するアイテムに絞り込む選択基準に対する記号制限である。
【0463】
複数の基準は競合し、制約は部分的に一致することが多い。データモデルは、最適化による選択の問題(最適な解決策を見つけること)をマッチングの問題(特定の基準の集合に対して適切であり且つ記号制約の集合に一致するアイテムを見つけること)に軽減する。基準及び制約を選択し且つ順序付けを判定するアルゴリズムについては、次の節で説明する。
【0464】
条件付き選択に対する方法論
一実施形態において、アシスタント1002は、少なくとも1つに対する黙示的又は明示的な制約と共に順序付けされた基準のリストを入力として取り入れ且つ主な特徴を含む候補アイテムの集合を選択することにより条件付き選択を実行する。計算上、選択タスクは、ネストされた探索として特徴付けられる。第1に、選択クラスを識別し、重要な選択基準を識別し、制約(受け入れ可能な解決策の範囲)を指定し、受け入れ可能なアイテムを見つけるために最も適合する順にインスタンスを探索する。
【0465】
図45を参照すると、ネストされた探索である条件付き選択タスクの抽象モデル4500の一例が示される。この例において、アシスタント1002は、全ての場所探索の種類4501から選択クラスを識別する(4505)。識別されたクラスはレストランである。全てのレストランの集合4502内で、アシスタント1002は基準を選択する(4506)。この例において、基準は距離として識別される。PAのレストランの集合4503内で、アシスタント1002は探索のための制約を指定する(4507)。例において、識別された制約は、「Italian cuisine」である。PAのイタリアンレストランの集合4504内で、アシスタントはユーザに提示するアイテムを選択する(4508)。
【0466】
一実施形態において、そのようなネストされた探索は、データを導出し且つ結果を提示するフローではなく、関連する入力データを有した時にアシスタント1002が行うことである。一実施形態において、そのような制御フローは、ダイアログ及びタスクフローモデル等の他の手順により動作するユーザとアシスタント1002との間のダイアログを介して管理される。条件付き選択は、抽象概念のレベルでダイアログ及びタスクフローモデルを構築するフレームワーク(すなわち、ドメインに関係なく条件付き選択タスクに適切な)を提供する。
【0467】
図46を参照すると、関連する入力データが取得されるように探索処理においてユーザの誘導を容易にするダイアログ4600の一例が示される。
【0468】
ダイアログ4600の例において、第1のステップは、ユーザが探しているものの種類を明示することであり、これは選択クラスである。例えばユーザは、「dining in palo alto」と言うことによりこれを行う。これにより、アシスタント1002はタスク及びドメインを推論できる(4601)。
【0469】
アシスタント1002がタスク及びドメインの結合(選択クラス=レストラン)を理解すると、次のステップは、例えば基準及び/又は制約を請求すること(4603)によりそのユーザにとって重要な選択基準を理解することである。上記例において、「in palo alto」は関心場所を示す。レストランのコンテキストにおいて、システムは、場所を近接制約(技術的には、近接基準に対する制約)として解釈する。アシスタント1002は必要なものを説明し、入力を受信する。選択肢の集合を適度なサイズに制約するのに十分な情報がある場合、アシスタント1002は、入力を言い換え、近接制約を満たし、ある有用な順序でソートされた1つ以上のレストランを提示する(4605)。ユーザはこのリストから選択する(4607)か、あるいは基準及び制約を改善する(4606)。アシスタント1002は、既に明示された制約に関して推論し、ドメイン別知識を使用して助けとなる可能性のある他の基準を提案し、それら基準に対する制約を請求する。例えばアシスタント1002は、ホテルから徒歩で行ける距離内のレストランを推薦する時、請求する有用な基準は料理及びテーブルの空き状況である。
【0470】
条件付き選択タスクは、ユーザが選択クラスのインスタンスを選択した時(4607)に完了する。一実施形態において、追加の後続のタスク4602はアシスタント1002により有効にされる。従って、アシスタント1002は、ある他の値を提供する間に選択を示すサービスを提供する。例4608は、レストランの予約、カレンダへのリマインダの設定及び/又は招待状を送出することによる他のユーザとの選択の共有である。例えばレストランの予約は、選択されたことを確実に示す。他のオプションは、レストランをカレンダに入れるか又は道順を含む招待状を友人に送出することである。
【0471】
図47を参照すると、一実施形態に係る条件付き選択の方法を示すフローチャートが示される。一実施形態において、アシスタント1002は、日和見的に且つ双方主導で動作し、ユーザが例えば入力においてタスク、ドメイン、基準及び制約を1度に1回以上明示することにより内部ループにジャンプすることを可能にする。
【0472】
方法が開始される(4701)。入力は、本明細書で説明するモードのいずれかに従ってユーザから受信される(4702)。入力に基づいて、タスクが既知でない場合、アシスタント1002は、ユーザからの入力を明確にすることを要求する(4705)。
【0473】
ステップ4717において、アシスタント1002は、ユーザが追加の入力を提供するかを判定する。追加の入力を提供する場合、アシスタント1002はステップ4702に戻る。追加の入力を提供しない場合、方法は終了する(4799)。
【0474】
ステップ4703においてタスクが既知である場合、アシスタント1002は、タスクが条件付き選択であるかを判定する(4704)。条件付き選択でない場合、アシスタント1002は指定されたタスクフローに進む(4706)。
【0475】
ステップ4704においてタスクが条件付き選択である場合、アシスタント1002は、選択クラスが判定されるかを判定する(4707)。条件付き選択でない場合、アシスタント1002は既知の選択クラスの選択肢を提供し(4708)、ステップ4717に戻る。
【0476】
ステップ4707において選択クラスが判定される場合、アシスタント1002は、全ての要求された制約が判定されるかを判定する(4709)。全ての要求された制約が判定されない場合、アシスタント1002は、要求された情報の入力要求をし(4710)、ステップ4717に戻る。
【0477】
ステップ4709において全ての要求された制約が判定される場合、アシスタント1002は、制約を仮定して、いずれかの結果アイテムが見つけられるかを判定する(4711)。制約を満たすアイテムがない場合、アシスタント1002は、制約を緩和する方法を提供する(4712)。例えばアシスタント1002は、フィルタ/ソートアルゴリズムを使用して最低の優先度から最高の優先度まで制約を緩和する。一実施形態において、一部の制約を満たすアイテムが存在する場合、アシスタント1002は、状況を言い換える(例えば「I could not find Recommended Greek restaurants that deliver on Sundays in San Carlos. However, I found 3 Greek restaurants and 7 Recommend restaurants in San Carlos.(サンカルロスで日曜日に配達する推薦すべきギリシャレストランは見つかりませんでした。しかし、3つのギリシャレストランとサンカルロスで推薦できる7つのレストランを見つけました。)」を出力する)。一実施形態において、いずれかの制約に一致するアイテムがない場合、アシスタント1002はこの状況を言い換えて、異なる制約の入力要求をする(例えば、「Sorry, I could not find any restaurants in Anytown, Texas. You may pick a different location.(ごめんなさい。テキサスのエニータウンではレストランが見つかりませんでした。別の場所を選んで下さい。)」を出力する)。アシスタント1002はステップ4717に戻る。
【0478】
ステップ4711において結果アイテムが見つけられる場合、アシスタント1002はアイテムのリストを提供する(4713)。一実施形態において、アシスタント1002は、現在指定されている基準及び制約を言い換える(例えば、「Here are some recommended Italian restaurants in San Jose.(サンホセで推薦できるいくつかのイタリアンレストランです。)」(recommended=yes,cuisine=Italian,proximity=<in San Jose>)を出力する)。一実施形態において、アシスタント1002は、既知の制約を満たすソートされ且つページ付けされたアイテムのリストを提示する。アイテムが制約の一部のみを示す場合、そのような条件はアイテム表示の一部として示される。一実施形態において、アシスタント1002は、例えば予約、記憶、スケジューリング又は共有等の別のタスクをあるアイテムに対して開始することによりそのアイテムを選択する方法をユーザに提供する。一実施形態において、あらゆる所定のアイテムにおいて、アシスタント1002は選択クラスのインスタンスを選択するために主なアイテムの特徴を提示する。一実施形態において、アシスタント1002は、アイテムが制約を満たす方法を示す。例えばZagat評価5はRecommended=yesの制約を満たし、「1 mile away(1マイル離れた)」は「within walking distance of an address(住所から歩いていける範囲内)」の制約を満たす。一実施形態において、アシスタント1002は、ユーザがアイテムに関する更なる詳細を掘り下げることを可能にし、その結果より多くのアイテムの特徴が表示される。
【0479】
アシスタント1002は、ユーザがアイテムを選択したかを判定する(4714)。ユーザがアイテムを選択した場合、タスクは完了する。アイテムがある場合、あらゆる後続のタスクが実行され(4715)、方法は終了する(4799)。
【0480】
ステップ4714においてユーザがアイテムを選択しない場合、アシスタント1002は、他の基準及び制約を選択する方法をユーザに提供し(4716)、ステップ4717に戻る。例えば現在指定されている基準及び制約を仮定すると、アシスタント1002は、選択肢の集合を所望のサイズに制約する可能性が最も高い基準を提供する。ユーザが制約値を選択する場合、制約値は、ステップ4703〜4713が繰り返される時に先に判定された制約に追加される。
【0481】
1つ以上の基準が固有の嗜好の値を有するため、基準を選択することにより要求に情報を追加する。例えば肯定的なレビューが重視されることをユーザが示せるようにすることにより、アシスタント1002はその基準でソートできる。そのような情報は、ステップ4703〜4713が繰り返される時に考慮に入れられる。
【0482】
一実施形態において、アシスタント1002は、ユーザが既に特定されている基準の重要度を上げることを可能にするため、その基準の優先順位は高くなる。例えばユーザが自身の場所の1ブロック内の迅速で安価で特に推薦されるレストランを要求する場合、アシスタント1002は、ユーザがより重要な基準を選択することを要求する。そのような情報は、ステップ4703〜4713が繰り返される時に考慮に入れられる。
【0483】
一実施形態において、ユーザは、
図47の方法が実行されている間のいずれかの時点で追加の入力を提供する。一実施形態において、アシスタント1002は、そのような入力を周期的又は継続的にチェックし、その応答としてその入力を処理するためにステップ4703に戻る。
【0484】
一実施形態において、アイテム又はアイテムのリストを出力する場合、アシスタント1002は、アイテムの提示の際にアイテムを選択し且つ順序付けするために使用された特徴を示す。例えばユーザが近くのイタリアンレストランを要求した場合、距離及び料理に対するそのようなアイテムの特徴はアイテムの提示の際に示される。これは、一致するものを強調表示すること、並びにアイテムの提示の際に関わった選択基準を一覧表示することを含む。
【0485】
ドメインの例
表1は、種々の実施形態に係るアシスタント1002により対処される条件付き選択ドメインの一例を提供する。
表1
【0486】
フィルタリング及びソートの結果
一実施形態において、現在特定されている基準及び制約を満たすアイテムを提示する時、フィルタ/ソート方法論が採用される。一実施形態において、選択制約は、基礎となるサービスに対するフィルタ及びソートパラメータとしての役割を果たす。従って、リストにあるアイテムを判定するため及びそれらアイテムをページ付けして示す時の順序を計算するためにあらゆる選択基準が使用される。このタスクのソート順序は探索の際の関連性ランクに類似する。例えば近接度は、距離によるソートの一般的な概念及び「within driving distance(車を運転して行ける距離)」等の記号制約値を含む基準である。「driving distance」という制約は、候補アイテムのグループを選択するために使用される。そのグループ内で、より近いアイテムがリストのより高い位置にソートされる。
【0487】
一実施形態において、選択制約と関連するフィルタリング及びソートとは別個の「レベル」にあり、基礎となるデータ及びユーザからの入力の関数である。例えば近接度は、「walking distance(歩ける距離)」、「texi distance(タクシーで行ける距離)」、「driving distance(車を運転して行ける距離)」等のレベルにグループ化される。ソートする時、徒歩で行ける距離内の1つ以上のアイテムは、同一の距離にあるかのように処理される。ユーザからの入力は、ユーザが制約を指定する方法で作用し始める。例えば、ユーザが「in palo alto(パロアルト内)」を入力する場合、Palo Altoの都市範囲内の1つ以上のアイテムは完全に一致するものであり、同等のものである。ユーザが「near the University Avenue train station(ユニバーシティ・アベニュー駅の近く)」を入力する場合、一致するものはその住所からの距離に依存し、一致度は選択クラスに依存する(例えば、レストランに近いというのは、ホテルに近いのとは異なる)。連続値により指定される制約内であっても、離散化が適用される。これはソート動作にとって重要であるため、複数の基準は最良優先順序を判定することに関係する。
【0488】
一実施形態において、アイテムリストは出力の1「ページ」に示されるアイテム数より短くても長くてもよい。それらアイテムは「一致する」又は「十分に適切である」と考えられる。一般に第1のページのアイテムは、最も関心を集めるが、概念的に長いリストがあり、ページ付けは単純に出力媒体のフォームファクタの関数である。これは、例えばユーザがある基準でアイテムをソート又は閲覧する方法を提供される場合、ソート又は閲覧されるアイテムの集合全体(1ページより多くのアイテムに相当する)であることを意味する。
【0489】
一実施形態において、選択基準の間の優先順位付けが存在する。すなわち、ある基準はフィルタ及びソートにおいて他の基準より重要である。一実施形態において、ユーザによい選択された基準は他の基準より高い優先度を与えられ、1つ以上の基準に対するデフォルトの順序付けがある。これにより、一般的な辞書式分類が可能になる。有意義な演繹的優先順位があると仮定する。例えばユーザが特に指定しない限り、レストランに対しては高くないことより近いことが重要である。一実施形態において、演繹的優先順位順序はドメイン別である。モデルは、要望に応じて、ユーザ別の嗜好がドメインデフォルト値を無効にすることを可能にする。
【0490】
制約の値がいくつかの内部データの種類を表すため、制約のマッチングの種々の方法があり、それらは制約に固有である。例えば、一実施形態において、以下の通りである。
【0491】
・2値制約は、1つ以上一致するか又は何も一致しない。例えばレストランが「Fast」であるかが真であるか又は真でない。
【0492】
・集合の帰属関係の制約は、特性値に基づいて1つ以上一致するか又は何も一致しない。例えば、cuisine=Greekは、レストランに対する料理の集合がギリシャを含むことを意味する。
【0493】
・列挙制約が閾値において一致する。例えば評価基準は、評価されたか、高く評価されたか、又は最上位に評価された制約値を有する。高く評価されたことに制約することは最上位に評価されたことと一致する。
【0494】
・数字制約は、基準別の閾値で一致する。例えば「open late(遅くまで営業)」は基準であり、ユーザは午後10時以降に空いている場所を要求する。この種の制約は、記号制約値でないため、条件付き選択タスクの範囲から僅かに外れる。しかし、一実施形態において、アシスタント1002は、このような数字制約の例を認識し、それらを記号制約で閾値にマッピングする(例えば、「restaurants in palo alto open now(今開いているパロアルト内のレストラン)」−>「here are 2 restaurants in palo alto that are open late(遅くまで営業しているパロアルト内の2つのレストランです。)」)。
【0495】
・場所及び時間が特に処理される。近接度に対する制約は、ある粒度レベルで指定される関心場所であり、一致するものを判定する。ユーザが都市を指定した場合、都市レベルのマッチングが適切である。すなわち、郵便番号がある区域を可能にする。アシスタント1002は、特定の処理に基づいて「近くの」他の関心場所である場所を理解する。時間はテーブルの空き状況又は所定の時間帯のフライト等のサービス呼び出しに基づく閾値を有する基準の制約値として関連する。
【0496】
一実施形態において、制約は、選択に対する単一の閾値及びソートする個別の値の小さな集合が存在するようにモデル化される。例えば手頃さの基準は大まかな2値制約としてモデル化される。ここで、手頃なレストランはある閾値の価格帯にある。データが選択に対して複数の別個のレベルを容認する場合、制約はマッチング勾配を使用してモデル化される。一実施形態において、2つの一致レベル(高い一致及び低い一致等)が提供される。しかし、他の実施形態において、1つ又は複数の一致レベルも提供可能であることが当業者には理解されるだろう。例えば近接度がファジィ境界とマッチングされるため、関心場所に近いものは一致度が高い。高い一致度又は低い一致度の動作結果は、以下に説明するようにフィルタ/ソートアルゴリズムである。
【0497】
少なくとも1つの基準に対して、関連がある場合、マッチング及びデフォルト閾値に対する方法が構築される。ユーザは、制約の名前、記号制約値又は特に処理される場合の高精度な制約表現(時間及び場所等)のみを言うことができる。
【0498】
条件付き選択に対する理想的な状況は、1つ以上の候補が制約を満たす候補の短いリストを結果として与える制約をユーザが明示する時に起こる。ユーザは、アイテムの特徴に基づいて適切なものの中から選択する。しかし、多くの場合、問題は制約過多又は制約不足である。制約過多である場合、制約を満たすアイテムは殆ど又は全く存在しない。制約不足である場合、リストの検査が好都合でない程多くの候補が存在する。一実施形態において、本発明の一般的な条件付き選択モデルは、ロバスト性のあるマッチングにより複数の制約を処理でき、一般に選択するものを生成する。ユーザは基準及び制約を改善すること又は「十分に適切な」解決策でタスクを単に完了させることを選択する。
【0499】
方法
一実施形態において、以下の方法は、結果をフィルタリング及びソートするために使用される。
【0500】
1.ユーザにより選択された選択基準の順序付けリストを仮定して、少なくとも1つに対する制約を判定する。
a.ユーザが制約値を指定した場合、それを使用する。例えばユーザが「greek food(ギリシャ料理)」と言った場合、制約はcuisine=Greekである。ユーザが「san Francisco(サンフランシスコ)」と言った場合、制約はIn the City of San Francisco(サンフランシスコ市内)である。ユーザが「south of market(サウス・オブ・マーケット)」と言った場合、制約はIn the Neighborhood of SoMa(SoMaの近く)である。
b.ドメイン別のデフォルト値及び基準別のデフォルト値を使用する。例えばユーザが「a table at some thai place()」と言った場合、空き状況基準が関連することを示しているが、制約値を指定しなかった。空き状況に対するデフォルト制約値は、tonight(今夜)及びデフォルトパーティサイズ2等の日付、時間のある範囲である。
【0501】
2.指定された制約により最小N個の結果を選択する。
a.高い一致度でN個の結果を得ようとする。
b.それが失敗した場合、逆の優先順位順序で制約を緩和しようとする。すなわち、低いレベルで一致する最後の基準を除く1つ以上の基準に対する高いレベルで一致するもの。その制約に対して低いレベルで一致するものがない場合、最低の優先順位から最高の優先順位までのラインの低いレベルで一致するものを試行する。
c.最低の優先順位から最高の優先順位まで、制約でのマッチングの失敗を許可するループを繰り返す。
【0502】
3.最小の選択肢の集合を取得した後、優先順位の順序で1つ以上の基準(ユーザ別の基準及び他の基準を含む)にわたり辞書式分類を行う。
a.最高の優先順位であるユーザ別の基準の集合を考慮し、演繹的優先順位で1つ以上の残っている基準を考慮する。例えば演繹的優先順位が(空き状況、料理、近接度、評価)であり、ユーザが近接度及び料理に関する制約を与える場合、ソート優先順位は(料理、近接度、空き状況、評価)である。
b.別個の一致レベル(高い、低い、一致しない)を使用して基準をソートすると、制約を緩和する際と同一の方法を使用してフル基準リストが適用される。
i.選択肢の集合が制約を緩和せずに取得された場合、選択肢の集合の1つ以上が高いレベルで一致するため、ソートにおいて「結び付く」。その後、優先順位リストにおける次の基準は、それらをソートするために作動する。例えばユーザがcuisine=Italian(料理=イタリアン)、proximity=In San Francisco(近接度:サンフランシスコ内)と言い、ソートの優先順位が(料理、近接度、空き状況、評価)である場合、リストの1つ以上の場所は料理及び近接度に対して等しい一致する値を有する。従って、リストが空き状況でソートされる(空いているテーブルを含む場所が最上位に現れる)。空いている場所のうち、最高の評価をされた場所が最上位にある。
ii.選択肢の集合が制約を緩和することにより取得された場合、完全に一致する1つ以上のアイテムがリストの最上位にあり、その後、部分的に一致するアイテムがある。一致するグループ内で、それらアイテムは残りの基準によりソートされ、同一のことが部分的に一致するグループにも行われる。例えばSan Franciscoにイタリアンレストランが2つだけある場合、空いているレストランが最初に示され、その後、空いていないレストランが示される。その後、San Franciscoの残りのレストランが空き状況及び評価によりソートされて示される。
【0503】
優先順位順序
本明細書で説明する技術は、部分的に指定された制約及び不完全なデータがアシスタント1002に提示された時に非常に高いロバスト性を有することを可能にする。一実施形態において、アシスタント1002は、これらの技術を使用して、最良優先順位で、すなわち関連性に従って、アイテムのユーザリストを生成する。
【0504】
一実施形態において、そのような関連性のソートは、演繹的優先順位順序に基づく。すなわち、ドメインに関して重要であるもののうち、基準の集合が選択され、重要さの順序で配置される。1つ以上のものが同等である場合、優先順位順序がより高い基準は、順位が低い基準よりアイテム間の条件付き選択に強く関連付けられる。アシスタント1002は、1つ又は複数の基準で動作してもよい。更に基準は、既存の挙動を中断することなく時間の経過と共に変更されてもよい。
【0505】
一実施形態において、基準の相互作用の仕方が選択クラスに依存するため、基準間の優先順位順序はドメイン別のパラメータにより調整される。例えばホテルを選択する時、空き状況及び価格が主要な制約であるが、レストランを選択する場合は、料理及び近接度がより重要である。
【0506】
一実施形態において、ユーザはダイアログにおいてデフォルトの基準の順序付けを無効にする。これにより、システムは、緩和すべき制約を判定するために順序付けを使用して、探索が制約過多である場合にユーザを誘導できる。例えばユーザが料理、近接度、推薦及び食べ物のアイテムに関する制約を与え、完全に一致するアイテムがない場合、ユーザは食べ物のアイテムが推薦度より重要であると言うことができ、所望の食べ物のアイテムの一致するものが最上位にソートされるように組み合わせを変更できる。
【0507】
一実施形態において、優先順位順序が判定される場合、ユーザ別の制約は他より優先される。例えば一実施形態において、近接度は要求された制約であり、そのことが常に指定され、更に他の未選択の制約より優先される。従って、近接度は、完全に主要となるために最高の優先順位の制約である必要はない。また、制約がユーザにより与えられない限り、多くの基準は1つ以上一致しないため、これら基準の優先順位は、ユーザが選択した基準内でのみ重要である。例えばユーザが料理を指定する場合、料理が重要であり、指定しない場合はアイテムをソートするのに関係ない。
【0508】
例えば、以下はレストランドメインに対する候補優先順位ソートパラダイムである。
【0509】
1.料理*(制約値が与えられない限りソートできない)
2.空き状況*(例えば時間であるデフォルト制約値を使用してソート可能である)
3.推薦される
4.近接度*(制約値が常に与えられる)
5.手頃さ
6.配達可能
7.食べ物のアイテム(例えばキーワードである制約値が与えられない限りソートできない)
8.キーワード(例えばキーワードである制約値が与えられない限りソートできない)
9.レストラン名
【0510】
以下は、上記ソートパラダイムに対する設計原理の一例である。
・ユーザが料理を指定した場合、その料理に固執したい。
・1つ以上のものが同等である場合、評価レベル(制約なしでソートするのに使用される基準のうち最高の優先順位である)によりソートする。
・少なくとも1つの実施形態において、近接度は殆どのものと比較してより重要である。しかし、近接度が別個のレベルで(都市及び徒歩範囲内等)一致し、常に指定される場合、時間が最も一致するアイテムの殆どが近接度で「結び付く」。
・空き状況(例えばopen−table.com等のウェブサイトでの探索により判定されるような)は、有益なソート基準であり、指定されない場合のソートに対するデフォルト値に基づく。ユーザが予約の時間を示す場合、空いている場所のみがリストにあり、ソートは推薦に基づく。
【0511】
・ユーザが特に推薦される場所を知りたいと言う場合、上記近接度及び空き状況でソートし、それら基準は推薦する前に緩和される。あるユーザが満足のいく場所を探している場合、少し遠くまで運転する意思があり、それはデフォルトのテーブル空き状況より重要であると仮定する。空き状況に対する特定の時間が指定され、ユーザが推薦される場所を要求する場合、空いていて推薦される場所が最初に現れ、空き状況が1つ以上一致しなくなるまで推薦は低いレベルで一致するものに緩和される。
・名前以外の残りの制約は、不完全なデータ又は一致するものに基づく1つ以上の制約である。従って、それら制約はデフォルトでは弱いソートのヒューリスティックであり、制約が指定されると、一致するものは1つ以上であるか、あるいは一致するものはない。
・名前は、あるユーザがレストラン名を言う例、例えばPalo Altoの近くのHobee'sレストランを1つ以上見つける例に対処するための制約として使用される。この場合、1つ以上のアイテムがその名前と一致し、近接度(この例において他の指定された制約)でソートされる。
【0512】
ドメインのモデル化:基礎となるデータへの選択基準のマッピング
アシスタント1002による計算に利用可能なデータと選択を行うのに使用されるデータとを区別することが望ましい。一実施形態において、アシスタント1002は、アイテムを区別するのに使用される1つ以上の種類のデータを単一の選択基準モデルにすることにおりユーザに対する複雑さを軽減するデータモデルを使用する。内部的には、これらデータはいくつかの形態をとる。選択クラスのインスタンスは、固有の特性及び属性(レストランの料理等)を有し、側面(ある場所からの距離等)に沿って比較され、あるクエリ(テキストパターンに一致するか又は所定の時間に空いているか等)により発見される。それらデータは、選択基準(例えば、複数のソースからの評価の重み付き組み合わせ)としてユーザに対して明らかにされない他のデータから計算される。これらデータはタスクに関連する1つ以上のデータであるが、それらの3種類のデータの区別はユーザに関係ない。ユーザは特性及び側面ではなく所望の選択肢の特徴に関して考慮するため、アシスタント1002は、これら種々の基準をアイテムの特徴にして動作可能にする。アシスタント1002は、ユーザに提示されるドメインデータモデルを提供し、それをウェブサービスで見つけられるデータにマッピングする。
【0513】
一種のマッピングは、基礎となるデータからユーザに提示される基準への同形写像である。例えばユーザから見て予約するためのテーブルの空き状況は、正にopentable.com等のオンライン予約ウェブサイトが同一の粒度の時間及びパーティサイズを使用して提供するものである。
【0514】
別の種類のマッピングは、可能性として等しい値の統一により共通の値の集合に1つ以上のサービスからのデータを正規化することである。例えば1つ以上のレストランの料理は、アシスタント1002における単一のオントロジとして表され、種々のサービスにおいて使用される種々の用語集にマッピングされる。このオントロジは、階層型であり、少なくとも1つのサービスからの特定の値を指し示す葉ノードを有する。例えば1つのサービスは、「Chinese」に対する料理の値、「Szechuan」に対する別の値及び「Asian」に対する第3の値を有する。アシスタント1002により使用されるオントロジは、「Chinese food」又は「Szechuan」に対する参照をそれらノードの1つ以上と意味的にマッチングさせる。信頼度は一致度を反映する。
【0515】
精度の差分を解決する時に正規化が関連する。例えばレストランの場所は、1つのサービスにおいて道路レベルで与えられるが、別のサービスでは都市レベルで与えられる。一実施形態において、アシスタント1002は、異なる表面データ値にマッピングされる場所及び時間の深層構造表現を使用する。
【0516】
一実施形態において、アシスタント1002は、フルテキスト探索の一致するもの、タグ又は他のオープンテクスチャ特徴にマッピングされるオープンエンド修飾子(例えば、romantic、quiet)に対して特別な種類のマッピングを使用する。この場合の選択制約の名前は「is described as」のような修飾子である。
【0517】
少なくとも1つの実施形態において、制約は動作の嗜好の順序にマッピングされる。すなわち、選択制約の名前及びその制約値を仮定すると、アシスタント1002は、可能なアイテムにわたる順序付けとしてその基準を解釈できる。そのようなマッピングにおいて対処する技術的問題がいくつか存在する。例えば以下の通りである。
【0518】
・嗜好の順序が競合する。1つの制約により与えられる順序は、別の制約に与えられる順序と矛盾するか又は逆相関される。例えば価格及び品質は対立する傾向がある。一実施形態において、アシスタント1002は、ユーザの要望を反映するがデータに対して忠実である重み付き順序又は組み合わせ順序でユーザにより選択された制約を解釈する。例えばユーザは「cheap fast food French restaurants within walking distance rated highly(評価が高く、歩いていける距離にある安くて早いフランス料理のレストラン)」と尋ねてもよい。多くの場所において、そのようなレストランが存在しない可能性がある。しかし、一実施形態において、アシスタント1002は、少なくとも1つの制約に対して最適化しようとするアイテムのリストを示し、少なくとも1つが一覧表示される理由を説明する。例えば1つのアイテムは「highly rated French cuisine(評価が高いフランス料理)」であり、別のアイテムは「cheap fast food within walking distance(安くて早く、歩いていける距離の店)」である。
【0519】
・データは、ハード又はソフト制約として使用される。例えばレストランの価格帯は、レストランを選択するのに重要であるが、事前に価格の閾値を明示するのは困難である。料理のような一見ハード制約のように思える制約は、部分的な一致のために実際はソフト制約である可能性がある。一実施形態において、アシスタント1002が1つ以上の基準を記号値(「cheap」又は「close」等)に平滑にしようとするデータモデル化戦略を使用するため、それら制約は、マッチング別の閾値に関して厳しくせずに基準及び順序を適切にする関数にマッピングされる。明示的な客観的な真理値を含む記号基準に対して、アシスタント1002は、他の基準より大きい重みを客観的な基準に与え、一部のアイテムが要求された基準に厳密に一致しないことが分かっていることを説明で明らかにする。
【0520】
・アイテムは、1つ以上ではなくいくつかの制約に一致し、「最も適合する」アイテムが示される。
・一般に、アシスタント1002は、ドメインに対する主なアイテムの特徴であり、選択基準として及び少なくとも1つの基準に対しては可能な制約値としての役割を果たすアイテムの特徴を判定する。そのような情報は、例えば動作データ及びAPI呼び出しを介して提供される。
【0521】
言い換え及びプロンプトテキスト
上述したように、一実施形態において、アシスタント1002は、フィードバックを提供して示し、ユーザの意図を理解し、現在の理解の言い換えを生成することによりユーザの目的に対して作用している。本発明の会話ダイアログモデルにおいて、言い換えは、アシスタント1002がユーザの入力後に前置き(例えば、
図40の言い換え4003)として又は後続のする結果の要約(例えば、
図35のリスト3502)として出力するものである。プロンプトは、要求を改善するため又はいくつかの側面に沿って選択空間を探索するために実行できることに関するユーザに対する提案である。
【0522】
一実施形態において、言い換え及びプロンプトテキストの目的は、例えば以下を含む。
・アシスタント1002がテキストだけでなくユーザの入力の概念を理解することを示すこと。
・アシスタント1002の理解の範囲を示すこと。
・仮定されるタスクに必要なテキストを入力するようにユーザを誘導すること。
・ユーザが条件付き選択において可能なものの空間を探索しやすくすること。
・ユーザの明示した基準及びアシスタント1002の仮定に関してサービスから取得された現在の結果を説明すること(例えば、制約不足の要求及び制約過多の要求の結果を説明すること)
【0523】
例えば以下の言い換え及びプロンプトは、それら目的のうちのいくつかを示す。
【0524】
ユーザ入力:indonesian food in menlo park(メンロパークのインドネシア料理)
システムの解釈:
Task=constrained Selection(タスク=制約選択)
SelectionClass=restaurant (選択クラス=レストラン)
Constraints:(制約:)
Location=menlo park,CA (場所=メンロパーク、カリフォルニア州)
Cuisine=Indonesian(料理=インドネシア料理、オントロジにおいて既知である)
サービスからの結果:高いレベルで一致するものはない
言い換え:Sorry,I can't find any
Indonesian restaurants near
Menlo Park.(ごめんなさい。
メンロパーク付近でインドネシアレストランは見つかりませんでした。)
プロンプト:You could try other
cuisines or
locations.(他の料理や場所を試すことができます。)
ハイパーテキストリンク下のプロンプト:
Indonesian:You can try other food categories such as Chinese,or a favorite food item such as steak.(
インドネシア料理:例えば中華料理のような他のカテゴリの料理、或いは、ステーキのような好みの料理項目を試すことができます。)
Menlo Park:Enter a location such as a city,neighborhood,street address,or "near" followed by a landmark.(
メンロパーク:都市、近所、住所、或いは、目印の"近くの"といった場所を入力して下さい。)
Cuisines:Enter a food category such as Chinese or Pizza.(
料理:中華料理やピザといった料理の種別を入力して下さい。)
Locations:Enter a location:a city,zip code,or "near" followed by the name of a place.(
場所:場所を入力して下さい:都市、郵便番号、或いは、場所名の"近くの")
【0525】
一実施形態において、アシスタント1002は、言い換えにより相対的に迅速にユーザ入力に応答する。言い換えは、結果が分かった後に更新される。例えば初期の応答は、「Looking for
Indonesian restaurants near
Menlo Park...(メンロパークの近くのインドネシアレストランを探しています)」である。結果が取得されると、アシスタント1002はテキストを更新し、「Sorry, I can't find any
Indonesian restaurants near
Menlo Park.You could try other
cuisines or
locations(ごめんなさい。
メンロパークの近くのインドネシアレストランは見つかりません。他の
料理、或いは、
場所で試すことができます。)」を表示する。尚、特定のアイテムは強調表示され(ここでは、下線で示す)、それらアイテムが緩和又は変更できる制約を表すことを示す。
【0526】
一実施形態において、特別な形式/強調表示が言い換えのキーワードに対して使用される。これは、アシスタント1002にとって最も重要であり且つアシスタント1002により理解される可能性がより高い単語をユーザに対して示すことによりインテリジェント自動アシスタント1002との対話のためのユーザのトレーニングを容易にするのに有用である。ユーザは、そのような単語を将来使用する可能性が高くなる。
【0527】
一実施形態において、言い換え及びプロンプトは、あらゆる関連するコンテキストデータを使用して生成される。例えば以下のデータアイテムのうちのいずれかが単独で又は組み合わせて使用される。
【0528】
・構文解析−注釈及び例外を伴って一致する入力トークンと結び付けられたオントロジノードの木。これは、構文解析のノード毎に、ノードのメタデータ及び/又はノードの値に対する根拠を提供する入力のあらゆるトークンを含む。
・既知である場合はタスク。
・選択クラス。
・選択クラスに依存しない場所制約。
・所定の選択クラスにとって未知である要求されたパラメータ(例えば、場所はレストランに関して要求される制約である)。
・名前(例えば、特定のレストラン又は映画名)が存在する場合は選択クラスのインスタンスである構文解析における指名されたエンティティの名前。
・これは後続のする改善か又は会話の開始か?(リセットは新しい会話を開始する)。
・制約の値を変更した入力の値に結び付けられる構文解析の制約は何か?換言すると、最新の入力により変更された制約は何か?
・選択クラスは推論されるか又は直接明示されるか?
・品質、関連性又は近接度によりソートされたか?
・指定された制約毎に、どの程度一致したか?
・改善はテキストとして入力されたか又はクリックされるか?
【0529】
一実施形態において、言い換えアルゴリズムは、クエリ、ドメインモデル1056及びサービスの結果を考慮する。ドメインモデル1056は、テキストの生成方法を決定するために使用されるメタデータを含む特徴及びクラスを含む。言い換えの生成に対するそのようなメタデータの例は以下を含む。
【0530】
・IsConstraint={true|false}
・IsMultiValued={true|false}
・ConstraintType={EntityName,Location,Time,CategoryConstraint,AvailabilityConstraint,BinaryConstraint,SearchQualifier,GuessedQualifer}
・DisplayName=文字列
・DisplayTemplateSingular=文字列
・DisplayTemplatePlural=文字列
・GrammaticalRole={AdjectiveBeforeNoun,Noun,ThatClauseModifier}
【0531】
例えば構文解析はこれらの要素を含む。
クラス:Restaurant
IsConstraint=false
DisplayTemplateSingular="restaurant"
DisplayTemplatePlural="restaurants"
GrammaticalRole=Noun
特徴:RestaurantName(例:「Il Fornaio」)
IsConstraint=true
IsMultiValued=false
ConstraintType=EntityName
DisplayTemplateSingular="named$1"
DisplayTemplatePlural="named$1"
GrammaticalRole=Noun
特徴:RestaurantCuisine(例:「Chinese」)
IsConstraint=true
IsMultiValued=false
ConstraintType=CategoryConstraint
GrammaticalRole=AdjectiveBeforeNoun
特徴:RestaurantSubtype(例:「cafe」)
IsConstraint=true
IsMultiValued=false
ConstraintType=CategoryConstraint
DisplayTemplateSingular="$1"
DisplayTemplatePlural="$1s"
GrammaticalRole=Noun
特徴:RestaurantQualifiers(例:「romantic」)
IsConstraint=true
IsMultiValued=true
ConstraintType=SearchQualifier
DisplayTemplateSingular="is described as $1"
DisplayTemplatePlural="are described as$1"
DisplayTemplateCompact="matching $1"
GrammaticalRole=Noun
特徴:FoodType(例:「burritos」)
IsConstraint=true
IsMultiValued=false
ConstraintType=SearchQualifier
DisplayTemplateSingular="serves $1"
DisplayTemplatePlural="serve $1"
DisplayTemplateCompact="serving $1"
GrammaticalRole=ThatClauseModifer
特徴:IsRecommended(例:true)
IsConstraint=true
IsMultiValued=false
ConstraintType=BinaryConstraint
DisplayTemplateSingular="recommended"
DisplayTemplatePlural=" recommended"
GrammaticalRole=AdjectiveBeforeNoun
特徴:RestaurantGuessedQualifiers(例:「spectacular」)
IsConstraint=true
IsMultiValued=false
ConstraintType=GuessedQualifer
DisplayTemplateSingular="matches $1 in reviews"
DisplayTemplatePlural="matches $1 in reviews"
DisplayTemplateCompact="matching $1"
GrammaticalRole=ThatClauseModifer
【0532】
一実施形態において、アシスタント1002は一致しない入力に対処できる。そのような入力に対処するために、ドメインモデル1056は、選択クラス毎のGuessedQualifierの種類のノードと、一致する規則又は正確な文法コンテキストにある場合は一致しない単語とを提供できる。すなわち、GuessedQualifiersは、オントロジにおいて見つけられない単語が存在する場合に一致し且つ正しいコンテキストにあり選択クラスの修飾子である可能性が高いことを示す多種多様なノードとして構文解析において対処される。GuessedQualifiersとSearchQualifiersとの相違点は、後者がオントロジの用語集とマッチングされることである。この区別により、アシスタント1002がSearchQualifiersで意図を確実に識別し、GuessedQualifiersをエコーバックする時により躊躇する可能性があると言い換え可能となる。
【0533】
一実施形態において、アシスタント1002は、言い換えテキストを生成する時に以下のステップを実行する。
【0534】
1.タスクが未知である場合、アシスタント1002が実行できることを説明し、更なる入力を要求する。
【0535】
2.タスクが条件付き選択タスクであり且つ場所が既知である場合、アシスタント1002が認識しているドメインを説明し、選択クラスの入力要求を行う。
【0536】
3.選択クラスが既知であるが要求される制約が欠落している場合、その制約の入力要求を行う。(例えば、レストランに関する条件付き選択に対して場所が要求される)
【0537】
4.入力が選択クラスのEntityNameを含む場合、「looking up」<名前>in<場所>を出力する。
【0538】
5.これが会話の最初の質問である場合、「looking for」の後に制約を説明する複雑な名詞節を出力する。
【0539】
6.これがダイアログにおける後続の改善ステップである場合
a.ユーザが要求された入力を完了した場合、「thanks」を出力し、正常に言い換える。(これは、ユーザ入力にマッピングされる要求された制約がある場合に行われる。)
b.ユーザが制約を変更している場合、これを確認し、正常に言い換える。
c.ユーザが選択クラスのインスタンスの適切な名前をタイプした場合、これを特別に処理する。
d.ユーザが理解されない句を追加した場合、それが探索として組み合わされる方法を示す。適切である場合は、入力は探索サービスにディスパッチされる。
e.ユーザが正常な制約を追加している場合、「OK」を出力し、正常に言い換える。
【0540】
7.結果を説明するために、言い換えに同一の方法を使用する。しかし、結果が驚くべきことであるか又は予期しないことである場合、データ及びサービスに関する知識を使用して結果を説明する。また、クエリが制約過多又は制約不足である場合、更なる入力を要求する。
【0541】
複雑な名詞節を構築する文法
一実施形態において、条件付き選択タスククエリを言い換える場合(734)、基礎は現在の制約を参照する選択クラスの周囲の複雑な名詞節である。各制約は、その種類に基づいて文法的な位置を有する。例えば一実施形態において、アシスタント1002は、以下のような言い換えを構築する。
【0542】
recommended romantic Italian restaurants near
Menlo Park with
open tables for 2 that serve
osso buco and are described as "
quiet"
【0543】
これを構築するための文法は、以下の通りである。
<paraphraseNounClause>:==<binaryConstraint><searchQualifier><categoryConstraint><itemNoun><locationConstraint><availabiltyConstraint><adjectivalClauses>
<binaryConstraint>:==BinaryConstraintの有無を示す単一の形容詞(例えば、recommended(best),affordable(cheap))
同一のクエリで2つ以上を一覧表示できる。
【0544】
<searchQualifier>:==探索エンジンサービスに渡される選択クラスの修飾子に対するオントロジと一致する1つ又は複数の単語(例えば、romantic restaurants,funny movies)
ConstraintType=SearchQualifierの時に使用する。
【0545】
<categoryConstraint>:==選択クラスのジャンル、料理又はカテゴリを識別する形容詞(例えば、Chinese restaurant又はR−rated file)
これは、最も固有のものであるため、最後の接頭語となる形容詞である。CategoryConstraint及びGrammaticalRole=AdjectiveBeforeNounの種類の特徴に対して使用する。
【0546】
<itemNoun>:==<namedEntityPhrase>|<selectionClass>|<selectionClassSubType>
その名詞を表示するのに最も的確な方法を見つける。NamedEntity<SubType<Class
<selectionClass>:==選択クラスに対する一般的な名前である名詞(例えば、restaurant、moview、place)
<selectionClassSubType>:==既知である場合に選択クラスの部分型である名詞節(例えば、選択クラスのローカルビジネスに対するdiner、museum、store、bar)。ConstraintType=CategoryConstraint及びGrammaticalRole=AdjectiveBeforeNounである特徴に対して使用する。
【0547】
<namedEntityPhrase>:==<entityName>|"the"(<selectionClass>|<selectionClassSubType>)
<entityName>:==選択クラスのインスタンスの適切な名前(例えば、「Il Fornaio」「Animal House」「Harry's Bar」)
<locationConstraint>:==<locationPreposition><locationName>
<locationPreposition>:=="in"、"near"及び"at"等
<locationName>:==都市、住所、ランドマーク又は"your current location"のようなGPSに対するデータ
<availabilityConstraint>:==名詞の後にくる前置詞句として表される空き状況制約(例えば、「with open tables」、「with seats available」、「available online」)。これは、強調するために名詞の直後にくる。
【0548】
<adjectivalClauses>:==<modiferVerbPhrase>|"that"<modiferVerbPhrase>"and"<modiferVerbPhrase>
<modiferVerbPhrase>:=選択クラスに対する探索キーワード型の制約を表す動詞句(例えば、「are described as quiet」、「serve meat after 11」、「match 'tragically hip' in reviews」であるレストラン、「contain violence」、「star Billy Bob Thornton」である映画)。2つ以上ある場合は「that...and」の変異形を使用してGrammaticalRole=ThatClauseModiferである句に全ての制約を含む。DisplayTemplatePluralを使用して「that」節を生成し、GuessedQualifierを最後に置く。そのような制約が1つだけ存在する場合、DisplayTemplateCompactの変異形を使用する。
【0549】
表2は、一実施形態に従ってタスクに対する第1の入力に応答して提供される言い換えのいくつかの例を提供する。
表2:第1の入力に応答した言い換え
【0550】
食事をする場所に関するクエリの改善
表3は、食事をする場所を見つけるというユーザの意図が分かっている状況に応答した言い換えのいくつかの例を提供するが、食事をする特定の場所を選択していない。これらには、レストランのリストが提示されており、改善を行う。
表3:改善に応答した言い換え
【0551】
表4は、結果が取得されると提供される結果の要約のいくつかの例を提供する。
表4:結果の要約
【0552】
表5は、ユーザが有効なリンクをクリックした時に提供されるプロンプトのいくつかの例を提供する。
【0553】
ユーザがアクティブなリンクをクリックした時のプロンプト
表5:ユーザが有効なリンクをクリックした時のプロンプト
【0554】
ダイアログにおける可能な応答の提案
一実施形態において、アシスタント1002は、コンテキスト提案を提供する。アシスタント1002がダイアログの現在の状況から前進するユーザオプションを提供する方法の提案である。アシスタント1002により提供される提案の集合は、コンテキストに依存し、提供される提案の数は媒体及びフォームファクタに依存する。例えば一実施形態において、最も代表的な提案は、ダイアログに一列に提供され、提案の拡張リスト(「more」)がスクロール可能なメニューにおいて提供され、いくつかの文字をタイプして自動補完オプションから選択することにより更なる提案を取得可能である。提案を提供するために他の機構が使用されてもよいことは、当業者には理解されるだろう。
【0555】
種々の実施形態において、種々の提案が提供される。提案の種類の例は以下を含む。
【0556】
・制約値を追加、除去又は変更することを含むクエリを改善するオプション。
・「not what I mean(そういうことじゃない)」又は「start over(やり直し)」又は「search the web(ウェブを探す)」等の悪い状況から修復又は回復するオプション。
・曖昧性を除去するオプション。
・音声の解釈。
・綴りの訂正及び意味的な曖昧性を含むテキストの解釈。
・「show these on a map(マップ上で見る)」又は「send directions to my date(彼女に道順を送る)」又は「explain these results(結果説明)」等のコンテキスト別のコマンド。
・食事又はイベントの計画の例における次のステップ等の提案された相互販売の提供。
・先のコマンド又はそれらの一部を再利用するオプション。
【0557】
種々の実施形態において、最も関連する提案を判定するコンテキストは例えば以下から導出される。
・ダイアログ状態
・例えば以下を含むユーザ状態
・静的特性(名前、住所等)
・動的特性(場所、時間、ネットワーク速度)
・例えば以下を含む対話の履歴
・クエリの履歴
・結果の履歴
・それまでに入力されたテキストの自動補完
【0558】
種々の実施形態において、提案は例えば以下のようなあらゆる機構により生成される。
・オントロジモデルに基づいてドメイン、タスク又は制約を言い換える。
・現在のドメイン及び制約に基づいて自動補完で入力要求する。
・曖昧な別の解釈を言い換える。
・音声−テキストの別の解釈
・特別なダイアログ条件に基づいて手書きする。
【0559】
一実施形態によると、提案は、補完のある状態におけるコマンドに対する動作として生成される。コマンドは、要求の明示的な正規表現であり、ユーザ入力に対して試行された解釈に基づく仮定及び推論を含む。ユーザ入力が未完了であるか又は曖昧である状況において、提案は、ユーザがコマンドを明確にするために入力を調整しやすくするための試行である。
【0560】
一実施形態において、各コマンドは、以下のある組合せを有する無条件完結文である。
【0561】
・コマンドの動詞(「find」又は「where is」等の命令)
・ドメイン(「restaurants」等の選択クラス)
・location=Palo Alto及びcuisine=Italian等の制約
コマンドのこれらの部分(動詞、ドメイン、制約)は、オントロジのノードに対応する。
【0562】
提案は、コマンドの設定、コマンドの変更、あるいはコマンドが関連するか又は関連しないことの宣言等のコマンドに対する動作と考えられる。例として以下を含む。
【0563】
・コマンドの動詞又はドメインを設定する(「find restaurants」)
・コマンドの動詞を変更する(「book it(予約)」、「map it(地図表示)」、「save it(保存)」)
・ドメインを変更する(「looking for a restaurant, not a local business」(地元産業ではなくレストラン探索))
・制約が関連することを明示する(「try refining by cuisine」)
・制約に対する値を選択する(「Italian」及び「French」等)
・制約及び値を共に選択する(「near here」、「tables for 2」)
・制約値が誤っていることを明示する(「not that Boston」)
・制約が関連しないことを明示する(「ignore the expense」)
・制約値を変更する意図を明示する(「try a different location」)
・制約値を変更する(「Italian,not Chinese」)
・制約値に追加する(「and with a pool, too」)
・値をグリッドにスナップする(「Los Angeles,not los angelos」)
・新しいコマンドを開始して、コンテキストを再利用する([after movies]「find nearby restaurants」、「send directions to my friend」)
・コンテキストに対して「meta」であるコマンドを開始する(「explain these results」
・新しいコマンドを開始して、コンテキストを再設定又は無視する(「start over」、「help with speech」)
【0564】
提案は上記のある組合せを更に含んでもよい。例えば以下の通りである。
・「the movie Milk not [レストランが提供する] the food item milk」
・「restaurants serving pizza,not just pizza joints」
・「The place called Costco in Mountain View, I don't care whether you think it is a restaurant or local buisness」
・「Chinese in mountain view」[最近のクエリ]
【0565】
一実施形態において、アシスタント1002は、関連性により順序付けされた提案のリストを維持するための一般的な機構を含む。提案が提供される形式は、デバイスの現在のコンテキスト、モード及びフォームファクタより異なる。
【0566】
一実施形態において、アシスタント1002は、以下の要因のいずれか又は全てを考慮することにより変更する制約を判定する。
・制約が値を有するかを考慮する。
・制約が推論されたか又は明示的に示されたかを考慮する。
・重要点(suggestionIndex)を考慮する
【0567】
一実施形態において、アシスタント1002は提案の出力形式を判定する。出力形式の例は以下を含む。
・ドメインを変更する
・自動補完オプションが「find restaurants」である場合、「try something different」
・それ以外[推論された]の場合、「not looking for restaurants」
・名前の制約を変更する
・名前が推論された場合、別の曖昧な解釈を提供する
・現在の結果のエンティティ名を自動補完に入れる
・異なる名前
・名前の参照でなかったことを考慮する(制約を除去する)−その代りにカテゴリを提供する
・「not named」
・「not in Berkeley」
・「some other day」
・(曖昧な代替例を使用する)という意味ではない
・推論された日付:「any day, I don't need a reservation」
【0568】
一実施形態において、アシスタント1002は、提案を通して曖昧性を解決しようとする。例えばユーザの意図の現在の解釈の集合が曖昧すぎる場合(310)、提案は更なる情報の入力要求を行う1つの方法322である。一実施形態において、条件付き選択タスクに対して、アシスタント1002は、意
図290の曖昧な解釈から共通の制約を除外し、解釈の相違点をユーザに提示する。例えばユーザ入力が「cafe」という単語を含み、その単語がレストラン名又はレストランの種類に一致する場合、アシスタント1002は、「did you mean restaurants named 'cafe' or 'cafe restaurants'?(「カフェ」または「カフェレストラン」という名前のレストランのことですか?)」と尋ねる。
【0569】
一実施形態において、アシスタント1002は特定の状況下で制約を推論する。すなわち、条件付き選択タスクに対して、全ての制約がユーザ入力において明示的に示される必要はない。一部の制約は、アクティブオントロジ1050、短期メモリ1052及び/又はアシスタント1002が入手可能な情報の他のソースにおいて入手可能な他の情報から推論される。例えば、以下を含む。
【0570】
・ドメイン又は場所を推論する
・場所のようなデフォルトの仮定
・低いレベルで一致する制約(ファジィ、重要度の低い場所等)
・曖昧な基準(接頭語(曖昧であることが多い名前対カテゴリ)のない制約値に一致する)
アシスタント1002が制約値を推論する場合、ユーザが無効にする提案としてそれらの仮定を提供する。例えば、アシスタントは「I assumed you meant around here. Would you like to look at a different location?(この辺のことを言っていたと思いますが?他の場所を見ますか?)」とユーザに伝える。
【0571】
可能な実施形態を参照して本発明について特に詳細に説明した。本発明が他の実施形態において実施されてもよいことは、当業者には理解されるだろう。第1に、構成要素の特定の名前、用語の大文字の使用、属性、データ構造、あるいはあらゆる他のプログラミング又は構造的な態様は必須でも重要でもなく、本発明又はその特徴を実現する機構は、種々の名前、形式又はプロトコルを有してもよい。更にシステムは、上述したようにハードウェア及びソフトウェアの組み合わせにより実現されてもよく、全体をハードウェア要素で実現されてもよく、あるいは全体をソフトウェア要素で実現されてもよい。また、本明細書で説明する種々のシステム構成要素間で機能性を特に分割することは、単なる例示であり必須ではない。単一のシステム構成要素により実行される機能は、複数の構成要素により実行されてもよく、複数の構成要素により実行される機能は、単一の構成要素により実行されてもよい。
【0572】
種々の実施形態において、本発明は、上述の技術を単独で又はあらゆる組み合わせで実行するシステム又は方法として実現される。別の実施形態において、本発明は、非一時的なコンピュータ可読記憶媒体と、コンピューティングデバイス又は他の電子デバイスのプロセッサに上述の技術を実行させるための媒体において符号化されたコンピュータプログラムコードとを含むコンピュータプログラムとして実現される。
【0573】
本明細書における「一実施形態」に対する参照は、その実施形態と関連して説明した特定の機能、構造又は特徴が本発明の少なくとも1つの実施形態に含まれることを意味する。本明細書の種々の場所の「一実施形態において」という句がある箇所では、必ずしも全てが同一の実施形態を参照するとは限らない。
【0574】
上記のいくつかの部分は、コンピューティングデバイスのメモリ内のデータビットに対する動作の記号表現及びアルゴリズムに関して提示される。これらのアルゴリズムの説明及び表現は、データ処理分野の技術者の研究の趣旨を他の技術者に最も効果的に伝えるためにその技術者により使用される手段である。アルゴリズムは、ここでは一般に所望の結果をもたらす自己矛盾のないステップ(命令)のシーケンスであると考えられる。それらステップは、物理的な数量の物理的な操作を必要とするステップである。一般に必須ではないが、それら数量は格納、転送、組み合わせ、比較及び操作可能である電気信号、磁気信号又は光信号の形態をとる。主に一般的な使用のために、それら信号をビット、値、要素、記号、文字、用語又は数字等として参照するのが便利な場合がある。更に、一般性を失わずに、物理的な数量の物理的な操作を必要とするステップの特定の構成をモジュール又は符号化デバイスとして参照するのが便利な場合がある。
【0575】
尚、それらの用語及び同様の用語の全ては、適切な物理的な数量と関連付けられ、それら数量に適用される便利なラベルにすぎない。以下の説明から明らかであるように特に指示の無い限り、説明中、「処理」又は「計算」又は「算出」又は「表示」又は「判定」等の用語を利用する説明は、コンピュータシステムメモリ又はレジスタ、あるいは他のそのような情報記憶装置、情報送信装置又は情報表示装置内で物理的(電子)数量として表されるデータを操作及び変換するコンピュータシステム、あるいは同様の電子コンピューティングモジュール及び/又はデバイスの行動及び処理を参照することが理解される。
【0576】
本発明の特定の態様は、本明細書において説明される処理ステップ及び命令をアルゴリズムの形態で含む。尚、本発明の処理ステップ及び命令は、ソフトウェア、ファームウェア及び/又はハードウェアで具体化され、ソフトウェアで具体化される場合はダウンロードされて常駐し、種々のオペレーティングシステムにより使用される種々のプラットフォームから動作される。
【0577】
更に本発明は、本明細書の動作を実行する装置に関する。この装置は、要求された目的のために特別に構築されてもよく、あるいは汎用コンピューティングデバイスに格納されたコンピュータプログラムにより選択的に起動されるか又は再構成される汎用コンピューティングデバイスを備えてもよい。そのようなコンピュータプログラムは、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、光磁気ディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光カード、特定用途向け集積回路(ASIC)又は電子命令を格納するのに適切であり且つコンピュータシステムバスに結合されるあらゆる種類の媒体を含むあらゆる種類のディスク等のコンピュータ可読記憶媒体に格納されるが、コンピュータ可読記憶媒体はこれらに限定されない。更に本明細書で参照されるコンピューティングデバイスは、単一のプロセッサを含んでもよく、あるいは計算機能を向上するために複数プロセッサの設計を採用するアーキテクチャであってもよい。
【0578】
本明細書で提示されるアルゴリズム及びディスプレイは、あらゆる特定のコンピューティングデバイス、仮想化システム又は他の装置に本質的に関連しない。種々の汎用システムは、本明細書の技術に従ってプログラムと共に使用されてもよく、あるいは要求される方法ステップを実行するために更に特化した装置を構築するのが便利であることを示す。これらの種々のシステムに対する要求される構造は、本明細書で提供される説明から明らかとなるだろう。更に本発明についてはいかなる特定のプログラミング言語も参照して説明しない。本明細書で説明するように本発明の技術を実現するために種々のプログラミング言語が使用されてもよく、特定の言語に対する上記のあらゆる参照は本発明の可能性及び最適な形態を開示するために提供されることが理解されるだろう。
【0579】
従って、種々の実施形態において、本発明は、ソフトウェア、ハードウェア及び/又はコンピュータシステム、コンピューティングデバイス又は他の電子デバイスを制御する他の要素、あるいはそれらのあらゆる組み合わせ又は複数の組み合わせとして実現される。そのような電子デバイスは、当該技術においては周知の技術に従って、例えばプロセッサ、入力デバイス(キーボード、マウス、タッチパッド、トラックパッド、ジョイスティック、トラックボール、マイク及び/又はそれらのあらゆる組み合わせ等)、出力デバイス(画面及び/又はスピーカ等)、メモリ、長期記憶装置(磁気記憶装置及び/又は光学記憶装置等)、並びに/あるいはネットワーク接続性を含むことができる。そのような電子デバイスは、ポータブルデバイスであってもよく、非ポータブルデバイスであってもよい。本発明の実現するために使用される電子デバイスの例は、移動電話、パーソナルデジタルアシスタント、スマートフォン、キオスク、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、民生用電子デバイス、民生用エンターテイメントデバイス、音楽プレーヤ、カメラ、テレビ、セットトップボックス又は電子ゲームユニット等を含む。本発明を実現する電子デバイスは、例えばCupertino、CaliforniaのApple Inc.から市販されているiOS又はMacOS、あるいはデバイスで使用できるあらゆる他のオペレーティングシステム等のあらゆるオペレーティングシステムを使用してもよい。
【0580】
本発明について制限された数の実施形態に関して説明したが、本明細書で説明するような本発明の範囲から逸脱しない他の実施形態が考案されることは、上記説明の利益を有する当業者には理解されるだろう。尚、本明細書で使用される言語は、可読性及び教示の目的で主に選択され、本発明の主題を示すか又は制限するために選択されていない。従って、本発明の開示は、特許請求の範囲で示す本発明の範囲を例示することを意図し、本発明の範囲を限定しない。