(57)【要約】      （修正有）【課題】電子デバイスの多くの異なるサービスに関するユーザの体験を統一、簡略化及び改善できるインテリジェント自動アシスタントを提供する。【解決手段】インテリジェント自動アシスタントシステムは、自然言語ダイアログを使用して統合対話によりユーザと関わり、情報を取得するのに適するか又は種々の行動を実行するのに適する場合に外部サービスを呼び出す。システムは、ウェブ、電子メール及びスマートフォン等、あるいはそれらのあらゆる組み合わせ等の多くの種々のプラットフォームのいずれかを使用して実現される。システムは、相互に関係付けられたドメイン及びタスクの集合に基づき、システムが対話できる外部サービスにより電力供給される追加の機能性を採用する。【選択図】図１
2020173835.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスで動作する自動アシスタントであって、
ユーザ入力を受信する入力デバイスと、
ユーザの意図の表現を導出するために前記受信したユーザ入力を解釈する言語インタプリタ構成要素と、
前記導出されたユーザの意図の表現に少なくとも部分的に基づいて少なくとも１つのドメイン、少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別するダイアログフロープロセッサ構成要素と、
前記識別されたタスクを実行する少なくとも１つのサービスを呼び出すサービスオーケストレーション構成要素と、
前記少なくとも１つの呼び出されたサービスから受信したデータに基づき且つ現在の出力モードに少なくとも部分的に更に基づいて出力をレンダリングする出力プロセッサ構成要素と、
前記レンダリングされた出力を出力する出力デバイスと、
を備えることを特徴とする自動アシスタント。
【請求項２】
ユーザからの入力を能動的に導出するために少なくとも１つのプロンプトを生成する能動的入力導出構成要素を更に備え、
前記出力デバイスは、前記生成された少なくとも１つのプロンプトを出力することを特徴とする請求項１記載の自動アシスタント。
【請求項３】
前記能動的入力導出構成要素は、会話インタフェースを介してユーザからの入力を能動的に導出するために前記少なくとも１つのプロンプトを生成し、
前記入力デバイスは、前記会話インタフェースを介して前記ユーザ入力を受信することを特徴とする請求項２記載の自動アシスタント。
【請求項４】
前記能動的入力導出構成要素は、
順序付けされた基準のリストを取得し、
前記取得した基準のうち少なくとも１つの基準に対して、少なくとも１つの制約を取得し、
前記少なくとも１つの基準及び前記少なくとも１つの制約に基づいて候補アイテムの集合を生成することにより、
前記少なくとも１つのプロンプトを生成するために条件付き選択を実行することを特徴とする請求項２記載の自動アシスタント。
【請求項５】
概念及び概念間の関係の表現を含むアクティブオントロジを更に備え、
前記能動的入力導出構成要素は、前記アクティブオントロジにおける前記表現の少なくとも部分集合を使用して前記少なくとも１つのプロンプトを生成することを特徴とする請求項２記載の自動アシスタント。
【請求項６】
前記能動的入力導出構成要素は、複数の入力モードを介してユーザからの入力を能動的に導出するために前記少なくとも１つのプロンプトを生成し、
前記入力デバイスは、前記複数の入力モードを介して前記ユーザ入力を受信することを特徴とする請求項２記載の自動アシスタント。
【請求項７】
前記複数の入力モードは、
タイプ入力と、
音声入力と、
グラフィカルユーザインタフェースを介して提供された入力と、
から成る群から選択された少なくとも１つの入力を含むことを特徴とする請求項６記載の自動アシスタント。
【請求項８】
少なくとも１つの事象を検出する事象検出器を更に備え、
前記能動的入力導出構成要素は、少なくとも１つの検出された事象に応答して前記少なくとも１つのプロンプトを生成することを特徴とする請求項２記載の自動アシスタント。
【請求項９】
前記識別された少なくとも１つのタスクを実行するステップを表す少なくとも１つのタスクフローモデルを識別するタスクフローモデル構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記タスクフローモデル構成要素とインタフェースすることを特徴とする請求項１記載の自動アシスタント。
【請求項１０】
概念及び概念間の関係の表現を含むアクティブオントロジを更に備え、
前記少なくとも１つのタスクフローモデルは、前記アクティブオントロジに従って編成されることを特徴とする請求項９記載の自動アシスタント。
【請求項１１】
前記ダイアログフロープロセッサ構成要素は、前記少なくとも１つのタスクフローモデルを識別するために条件付き選択を実行することを特徴とする請求項９記載の自動アシスタント。
【請求項１２】
ドメインの少なくとも１つの表現を含むドメインモデル構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記ドメインモデル構成要素とインタフェースすることを特徴とする請求項１記載の自動アシスタント。
【請求項１３】
ドメインの各表現は、
少なくとも１つの概念の表現と、
少なくとも１つのエンティティの表現と、
少なくとも１つの関係の表現と、
から成る群から選択される少なくとも１つの表現を含むことを特徴とする請求項１２記載の自動アシスタント。
【請求項１４】
概念及び概念間の関係の表現を含むアクティブオントロジを更に備え、
前記ドメインの少なくとも１つの表現は、前記アクティブオントロジに従って編成されることを特徴とする請求項１２記載の自動アシスタント。
【請求項１５】
前記ドメインモデル構成要素は、ドメインの少なくとも１つの表現を規定するために条件付き選択からのモデル化抽象概念を使用することを特徴とする請求項１２記載の自動アシスタント。
【請求項１６】
前記アシスタントとユーザとの間の会話でとられるステップの表現を含むダイアログフローモデル構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記ダイアログフローモデル構成要素とインタフェースすることを特徴とする請求項１記載の自動アシスタント。
【請求項１７】
サービスの機能の表現を含むサービス機能モデル構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記サービス機能モデル構成要素とインタフェースすることを特徴とする請求項１記載の自動アシスタント。
【請求項１８】
前記サービスオーケストレーション構成要素は、少なくとも１つのサービスモデルに基づいて呼び出す少なくとも１つのサービスを選択することを特徴とする請求項１７記載の自動アシスタント。
【請求項１９】
前記サービス機能モデル構成要素は、少なくとも１つのサービスの宣言的モデルを含み、前記サービスオーケストレーション構成要素は、前記宣言的モデルに従って且つ前記導出されたユーザの意図の表現に更に従って利用可能なサービスから動的に選択することを特徴とする請求項１７記載の自動アシスタント。
【請求項２０】
単語と概念との間の関連付けを含む用語集データベースを更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記用語集データベースとインタフェースすることを特徴とする請求項１記載の自動アシスタント。
【請求項２１】
ドメインエンティティを記述するデータを含むドメインエンティティデータベースを更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記ドメインエンティティデータベースとインタフェースし、ドメインエンティティを記述するデータを取得することを特徴とする請求項１記載の自動アシスタント。
【請求項２２】
前記自動アシスタントとの少なくとも１つのユーザ対話を記述するデータを格納する短期メモリ構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記短期メモリ構成要素とインタフェースし、前記自動アシスタントとの少なくとも１つのユーザ対話を記述するデータを取得することを特徴とする請求項１記載の自動アシスタント。
【請求項２３】
前記言語インタプリタ構成要素は、前記短期メモリ構成要素からの情報に少なくとも部分的に基づいて前記受信したユーザ入力を解釈することを特徴とする請求項２２記載の自動アシスタント。
【請求項２４】
ユーザと関連付けられた個人情報と、
前記ユーザにより収集された情報と、
前記ユーザと関連するエンティティの保存されたリストと、
前記ユーザと関連付けられたトランザクション履歴と、
から成る群から選択される少なくとも１つの情報を格納する長期メモリ構成要素を更に備え、
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記長期メモリ構成要素とインタフェースし、格納されたデータを取得することを特徴とする請求項１記載の自動アシスタント。
【請求項２５】
前記言語インタプリタ構成要素は、前記長期メモリ構成要素からの情報に少なくとも部分的に基づいて前記受信したユーザ入力を解釈することを特徴とする請求項２４記載の自動アシスタント。
【請求項２６】
前記ダイアログフロープロセッサ構成要素は、少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別するために条件付き選択を実行することを特徴とする請求項１記載の自動アシスタント。
【請求項２７】
前記ダイアログフロープロセッサ構成要素は、
順序付けされた基準のリストを取得し、
前記取得した基準のうち少なくとも１つの基準に対して、少なくとも１つの制約を取得し、
前記少なくとも１つの基準及び前記少なくとも１つの制約に基づいて少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別することにより、
条件付き選択を実行することを特徴とする請求項２６記載の自動アシスタント。
【請求項２８】
前記サービスオーケストレーション構成要素は、少なくとも１つのサービスを呼び出すために条件付き選択を実行することを特徴とする請求項１記載の自動アシスタント。
【請求項２９】
前記サービスオーケストレーション構成要素は、
順序付けされた基準のリストを取得し、
前記取得した基準のうち少なくとも１つの基準に対して、少なくとも１つの制約を取得し、
前記少なくとも１つの基準及び前記少なくとも１つの制約に基づいて少なくとも１つのサービスを呼び出すことにより、
条件付き選択を実行することを特徴とする請求項２８記載の自動アシスタント。
【請求項３０】
概念及び概念間の関係の表現を含むアクティブオントロジを更に備えることを特徴とする請求項１記載の自動アシスタント。
【請求項３１】
前記言語インタプリタ構成要素は、前記アクティブオントロジにおける前記表現の少なくとも部分集合を使用して前記受信したユーザ入力を解釈することを特徴とする請求項３０記載の自動アシスタント。
【請求項３２】
前記ダイアログフロープロセッサ構成要素は、前記アクティブオントロジにおける前記表現の少なくとも部分集合を使用して前記少なくとも１つのドメイン、タスク及びパラメータを識別することを特徴とする請求項３０記載の自動アシスタント。
【請求項３３】
前記サービスオーケストレーション構成要素は、前記アクティブオントロジにおける前記表現の少なくとも部分集合を使用して少なくとも１つのサービスを呼び出すことを特徴とする請求項３０記載の自動アシスタント。
【請求項３４】
前記出力プロセッサ構成要素は、前記アクティブオントロジにおける前記表現の少なくとも部分集合を使用して出力をレンダリングすることを特徴とする請求項３０記載の自動アシスタント。
【請求項３５】
前記アクティブオントロジは、前記自動アシスタントにより使用される少なくとも１つのデータベースに対する意味単一化子として使用されることを特徴とする請求項３０記載の自動アシスタント。
【請求項３６】
前記アクティブオントロジは、ユーザセッション毎にインスタンス化されることを特徴とする請求項３０記載の自動アシスタント。
【請求項３７】
前記アクティブオントロジは、
少なくとも１つのドメインモデルと、
少なくとも１つのダイアログフローモデルと、
少なくとも１つのサービスモデルと、
少なくとも１つのタスクモデルと、
から成る群から選択される少なくとも１つのモデルを含むことを特徴とする請求項３０記載の自動アシスタント。
【請求項３８】
事象に関するデータを受信する事象モニタを更に備え、
前記ダイアログフロープロセッサ構成要素は、受信した少なくとも１つの事象に関するデータに少なくとも部分的に基づいて少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別することを特徴とする請求項１記載の自動アシスタント。
【請求項３９】
前記入力デバイスは、
音声入力を受信する少なくとも１つのマイクを備え、
前記アシスタントは、
前記受信した音声入力をテキストに変換する音声−テキスト構成要素を更に備えることを特徴とする請求項１記載の自動アシスタント。
【請求項４０】
前記入力デバイスは、テキスト入力を受信することを特徴とする請求項１記載の自動アシスタント。
【請求項４１】
前記言語インタプリタは、前記受信したユーザ入力に対する別の構文解析結果の間の曖昧性を除去することを特徴とする請求項１記載の自動アシスタント。
【請求項４２】
前記サービスオーケストレーション構成要素は、前記コンピューティングデバイスで動作を実行する少なくとも１つのサービスを呼び出すことを特徴とする請求項１記載の自動アシスタント。
【請求項４３】
前記サービスオーケストレーション構成要素は、コンピューティングネットワークを介して動作を実行する少なくとも１つのサービスを呼び出すことを特徴とする請求項１記載の自動アシスタント。
【請求項４４】
前記サービスオーケストレーション構成要素は、インターネットを介して動作を実行する少なくとも１つのサービスを呼び出すことを特徴とする請求項１記載の自動アシスタント。
【請求項４５】
前記サービスオーケストレーション構成要素は、前記呼び出した少なくとも１つのサービスから結果を受信し、前記受信した結果を統一することを特徴とする請求項１記載の自動アシスタント。
【請求項４６】
前記自動アシスタントは、
電話機と、
スマートフォンと、
タブレットコンピュータと、
ラップトップコンピュータと、
パーソナルデジタルアシスタントと、
デスクトップコンピュータと、
キオスクと、
民生用電子デバイスと、
民生用エンターテイメントデバイスと、
音楽プレーヤと、
カメラと、
テレビと、
電子ゲームユニットと、
セットトップボックスと、
から成る群から選択される少なくとも１つのデバイスにおいて動作することを特徴とする請求項１記載の自動アシスタント。
【請求項４７】
前記出力プロセッサ構成要素は、前記ユーザの意図の少なくとも１つの表現を言い換え、
前記出力デバイスは、前記言い換えられたユーザの意図の表現を出力することを特徴とする請求項１記載の自動アシスタント。
【請求項４８】
前記言語インタプリタ構成要素、前記ダイアログフロープロセッサ構成要素、前記サービスオーケストレーション構成要素及び前記出力プロセッサ構成要素のうちの少なくとも１つは、前記コンピューティングデバイスの検出されたコンテキストからパラメータを取得することを特徴とする請求項１記載の自動アシスタント。
【請求項４９】
前記コンピューティングデバイスの前記検出されたコンテキストは、
現在のソフトウェアアプリケーション及びその現在の状態と、
現在の場所と、
少なくとも１つの環境センサを介して検出された現在の環境条件と、
使用履歴と、
前記ユーザを説明する情報と、
から成る群から選択される少なくとも１つの情報を含むことを特徴とする請求項４８記載の自動アシスタント。
【請求項５０】
前記出力デバイスは、少なくとも２つの出力モードの組み合わせを使用して前記レンダリングされた出力を出力することを特徴とする請求項１記載の自動アシスタント。
【請求項５１】
前記少なくとも２つの出力モードは、
テキスト出力と、
グラフィック出力と、
音の出力と、
合成音声出力と、
サンプリングされた音声出力と、
アクチュエータ出力と、
から成る群から選択される少なくとも２つの出力を含むことを特徴とする請求項５０記載の自動アシスタント。
【請求項５２】
コンピューティングデバイスで動作する自動アシスタントであって、
ユーザ入力を受信する入力デバイスと、
概念及び概念間の関係の表現を含むアクティブオントロジと、
ユーザの意図の表現を導出するために前記受信したユーザ入力を解釈し、前記ユーザの意図の表現を導出するために前記アクティブオントロジからの概念及び概念間の関係の表現を取得する言語インタプリタ構成要素と、
前記導出されたユーザの意図の表現に基づき且つ現在の出力モードに少なくとも部分的に更に基づいて出力をレンダリングする出力プロセッサ構成要素と、
前記レンダリングされた出力を出力する出力デバイスと、
を備えることを特徴とする自動アシスタント。
【請求項５３】
前記言語インタプリタ構成要素は、前記ユーザの意図の表現を導出するために前記アクティブオントロジからの前記概念及び概念間の関係の表現に基づいて前記受信したユーザ入力を構文解析することを特徴とする請求項５２記載の自動アシスタント。
【請求項５４】
前記言語インタプリタ構成要素は、前記アクティブオントロジからの前記概念及び概念間の関係の表現に基づいて前記ユーザ入力の少なくとも２つの可能な解釈の間の曖昧性を除去することを特徴とする請求項５２記載の自動アシスタント。
【請求項５５】
ユーザからの入力を能動的に導出するために少なくとも１つのプロンプトを生成する能動的入力導出構成要素を更に備え、
前記出力デバイスは、前記生成された少なくとも１つのプロンプトを出力することを特徴とする請求項５２記載の自動アシスタント。
【請求項５６】
前記能動的入力導出構成要素は、前記アクティブオントロジから取得された概念及び概念間の関係の表現に基づいて前記少なくとも１つのプロンプトを生成することを特徴とする請求項５５記載の自動アシスタント。
【請求項５７】
前記能動的入力導出構成要素は、前記アクティブオントロジから取得された概念及び概念間の関係の表現に基づいて前記ユーザ入力を自動的に補完することを特徴とする請求項５５記載の自動アシスタント。
【請求項５８】
前記導出されたユーザの意図の表現に基づいてタスクを実行する少なくとも１つのサービスを呼び出すサービスオーケストレーション構成要素を更に備え、
前記サービスオーケストレーション構成要素は、前記アクティブオントロジからの前記概念及び概念間の関係の表現に基づいて呼び出されるサービスを識別することを特徴とする請求項５２記載の自動アシスタント。
【請求項５９】
コンピューティングデバイスで動作する自動アシスタントであって、
ユーザ入力を受信する入力デバイスと、
ユーザの意図の表現を導出するために前記受信したユーザ入力を解釈する言語インタプリタ構成要素と、
会話インタフェースを介してユーザからの入力を能動的に導出するために少なくとも１つのプロンプトを生成し、前記ユーザの意図の言い換えを生成する能動的入力導出構成要素と、
前記導出されたユーザの意図の表現に基づいて複数の結果を要約し、現在の出力モードに少なくとも部分的に更に基づいて前記要約した複数の結果を表す出力を生成する出力プロセッサ構成要素と、
前記ユーザの意図の前記言い換えを出力し、前記生成された出力を出力する出力デバイスと、
を備えることを特徴とする自動アシスタント。
【請求項６０】
前記入力デバイスは、音声入力を受信する音声入力デバイスを含み、
前記出力デバイスは、前記音声入力を表すテキストを更に出力することを特徴とする請求項５９記載の自動アシスタント。
【請求項６１】
少なくとも１つのプロセッサを有するコンピューティングデバイスにおいて自動アシスタントを実現する方法であって、
入力デバイスにおいてユーザ入力を受信することと、
プロセッサにおいて、ユーザの意図の表現を導出するために前記受信したユーザ入力を解釈することと、
前記プロセッサにおいて、前記導出されたユーザの意図の表現に少なくとも部分的に基づいて少なくとも１つのドメイン、少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別することと、
前記プロセッサにおいて前記識別されたタスクを実行する少なくとも１つのサービスを呼び出すことと、
前記プロセッサにおいて、前記少なくとも１つの呼び出されたサービスから受信したデータに基づき且つ現在の出力モードに少なくとも部分的に更に基づいて出力をレンダリングすることと、
出力デバイスにおいて前記レンダリングされた出力を出力することと、
を備えることを特徴とする方法。
【請求項６２】
前記プロセッサにおいてユーザ入力を能動的に導出するために少なくとも１つのプロンプトを生成することと、
前記出力デバイスにおいて前記生成された少なくとも１つのプロンプトを出力することと、
を更に備えることを特徴とする請求項６１記載の方法。
【請求項６３】
ユーザ入力を受信することは、
会話インタフェースを介して前記ユーザに入力要求することと、
前記会話インタフェースを介してユーザ入力を受信することと、
を含むことを特徴とする請求項６１記載の方法。
【請求項６４】
前記ユーザの意図の少なくとも１つの表現を言い換えることと、
前記出力デバイスにおいて、前記言い換えられたユーザの意図の表現を出力することと、
を更に備えることを特徴とする請求項６１記載の方法。
【請求項６５】
前記受信したユーザ入力に対して複数の別の構文解析結果を生成することと、
前記別の構文解析結果の間の曖昧性を除去することと、
を更に備えることを特徴とする請求項６１記載の方法。
【請求項６６】
前記別の構文解析結果の間の曖昧性を除去することは、
前記ユーザ入力の少なくとも２つの競合する解釈を識別することと、
前記出力デバイスにおいて、前記ユーザから追加の情報を要求するプロンプトを出力することと、
前記入力デバイスにおいて、前記ユーザから追加の情報を受信することと、
前記追加の情報に基づいて前記曖昧性を解決することと、
を含むことを特徴とする請求項６５記載の方法。
【請求項６７】
前記受信したユーザ入力を処理することは、
現在のセッションにおける少なくとも１つの先の対話を記述する短期メモリからのデータと、
前記ユーザの少なくとも１つの特徴を記述する長期メモリからのデータと、
から成る群から選択される少なくとも１つのデータを使用して前記ユーザ入力を処理することを含むことを特徴とする請求項６１記載の方法。
【請求項６８】
少なくとも１つのプロセッサを有するコンピューティングデバイスにおいて自動アシスタントを実現するコンピュータプログラムであって、
非一時的なコンピュータ可読記憶媒体と、
少なくとも１つのプロセッサに
ユーザ入力を受信するステップと、
ユーザの意図の表現を導出するために前記受信したユーザ入力を解釈するステップと、
前記導出されたユーザの意図の表現に少なくとも部分的に基づいて少なくとも１つのドメイン、少なくとも１つのタスク及び前記タスクに対する少なくとも１つのパラメータを識別するステップと、
前記識別されたタスクを実行する少なくとも１つのサービスを呼び出すステップと、
前記少なくとも１つの呼び出されたサービスから受信したデータに基づき且つ現在の出力モードに少なくとも部分的に更に基づいて出力をレンダリングするステップと、
前記レンダリングされた出力を出力するステップと、
を実行させる媒体において符号化されたコンピュータプログラムコードと、
を備えることを特徴とするコンピュータプログラム。
【請求項６９】
前記少なくとも１つのプロセッサに
ユーザ入力を能動的に導出するために少なくとも１つのプロンプトを生成するステップと、
前記生成された少なくとも１つのプロンプトを出力するステップと、
を実行させるコンピュータプログラムコードを更に備えることを特徴とする請求項６８記載のコンピュータプログラム。
【請求項７０】
ユーザ入力を受信する前記コンピュータプログラムコードは、前記少なくとも１つのプロセッサに
会話インタフェースを介して前記ユーザに入力要求するステップと、
前記会話インタフェースを介してユーザ入力を受信するステップと、
を実行させるコンピュータプログラムコードを含むことを特徴とする請求項６８記載のコンピュータプログラム。
【請求項７１】
前記少なくとも１つのプロセッサに
前記ユーザの意図の少なくとも１つの表現を言い換えるステップと、
前記出力デバイスにおいて、前記言い換えられたユーザの意図の表現を出力するステップと、
を実行させるコンピュータプログラムコードを更に備えることを特徴とする請求項６８記載のコンピュータプログラム。
【請求項７２】
前記少なくとも１つのプロセッサに
前記受信したユーザ入力に対して複数の別の構文解析結果を生成するステップと、
前記別の構文解析結果の間の曖昧性を除去するステップと、
を実行させるコンピュータプログラムコードを更に備えることを特徴とする請求項６８記載のコンピュータプログラム。
【請求項７３】
前記別の構文解析結果の間の曖昧性を除去する前記コンピュータプログラムコードは、前記少なくとも１つのプロセッサに
前記ユーザ入力の少なくとも２つの競合する解釈を識別するステップと、
前記出力デバイスにおいて、前記ユーザから追加の情報を要求するプロンプトを出力するステップと、
前記入力デバイスにおいて、前記ユーザから追加の情報を受信するステップと、
前記追加の情報に基づいて前記曖昧性を解決するステップと、
を実行させるコンピュータプログラムコードを含むことを特徴とする請求項７２記載のコンピュータプログラム。
【請求項７４】
前記受信したユーザ入力を処理する前記コンピュータプログラムコードは、前記少なくとも１つのプロセッサに
現在のセッションにおける少なくとも１つの先の対話を記述する短期メモリからのデータと、
前記ユーザの少なくとも１つの特徴を記述する長期メモリからのデータと、
から成る群から選択される少なくとも１つのデータを使用して前記ユーザ入力を処理するステップを実行させるコンピュータプログラムコードを含むことを特徴とする請求項６８記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インテリジェントシステムに関し、特に、インテリジェント自動アシスタントのためのアプリケーションのクラスに対するインテリジェントシステムに関する。
【背景技術】
【０００２】
今日の電子デバイスは、インターネットを介して及び他のソースから、益々増加する大量の種々の機能、サービス及び情報にアクセスできる。多くの民生用デバイス、スマートフォン及びタブレットコンピュータ等がソフトウェアアプリケーションを実行して種々のタスクを実行し、種々の情報を提供できるようになるのに伴って、そのようなデバイスの機能性は急速に増加している。各アプリケーション、機能、ウェブサイト又は特徴は独自のユーザインタフェース及び動作パラダイムを有することが多く、それらの多くは、ユーザにとって学ぶことが多すぎたり負担になったりする可能性がある。更に、多くのユーザにとっては、電子デバイス又は種々のウェブサイトにおいて入手可能な機能性及び／又は情報を見つけるのでさえ困難である可能性がある。従って、そのようなユーザは、苛立つか又はそれらの量に圧倒されるか、あるいは単に入手可能なリソースを効果的に使用できない可能性がある。
【０００３】
特に、未熟なユーザ、すなわち何らかの障害を持った人、及び／又は年配者や多忙な人や気が散った状態の人、及び／又は乗り物を操作している人は、電子デバイスと効果的にインタフェースすること及び／又はオンラインサービスを効果的に使用することが困難である可能性がある。そのようなユーザは、特に、使用できる可能性のある大量の種々の一貫性のない機能、アプリケーション及びウェブサイトに関して困難を感じる可能性が高い。
【０００４】
従って、多くの場合、既存のシステムは、使用したりナビゲートしたりするのが困難であり、ユーザが技術を効果的に使用するのを妨げることが多い一貫性のない多すぎるインタフェースをユーザに提示する。
【発明の概要】
【０００５】
本発明の種々の実施形態によると、インテリジェント自動アシスタントは、デバイスとのユーザ対話を容易にし且つローカルサービス及び／又はリモートサービスをより効果的に使用しやすくするために、電子デバイスにおいて実現される。種々の実施形態において、インテリジェント自動アシスタントは、自然言語ダイアログを使用して統合対話によりユーザと関わり、情報を取得するのに適するか又は種々の行動を実行するのに適する場合に外部サービスを起動する。
【０００６】
本発明の種々の実施形態によると、インテリジェント自動アシスタントは、異なるソフトウェアコンポーネント（例えば、自然言語認識及びダイアログ、マルチモーダル入力、個人情報管理、タスクフロー管理及び分散サービスのオーケストレーション等をサポートするための）により提供される種々の機能を統合する。更に、知的インタフェース及び有用な機能性をユーザに提供するために、本発明のインテリジェント自動アシスタントは、少なくともいくつかの実施形態においてそれら構成要素及びサービスを連携させる。会話インタフェース及び情報の取得及び後続のタスクの実行を行う能力は、少なくともいくつかの実施形態において、言語構成要素、ダイアログ構成要素、タスク管理構成要素、情報管理構成要素及び／又は複数の外部サービス等の種々の構成要素を連携させることにより実現される。
【０００７】
本発明の種々の実施形態によると、インテリジェント自動アシスタントシステムは、種々の異なる動作、機能性及び／又は特徴を提供し且つ／あるいはそれがインストールされている電子デバイスの複数の特徴、動作及びアプリケーションを組み合わせるように構成され、設計され且つ／又は動作可能である。いくつかの実施形態において、本発明のインテリジェント自動アシスタントシステムは、ユーザからの入力を能動的に導出すること、ユーザの意図を解釈すること、競合する解釈の間の曖昧性を除去すること、必要に応じて明確化情報を要求及び受信すること及び識別された意図に基づく行動を実行（又は開始）することのうちのいずれか、あるいは全てを実行できる。行動は、例えば電子デバイスで利用可能なあらゆるアプリケーション又はサービス、並びにインターネット等の電子ネットワークを介して利用可能なサービスを起動すること及び／又はそれらとインタフェースすることにより実行される。種々の実施形態において、そのような外部サービスの起動は、ＡＰＩを介して実行されるか、あるいはあらゆる他の適切な機構により実行される。このように、本発明の種々の実施形態のインテリジェント自動アシスタントシステムは、電子デバイスの多くの異なるアプリケーション及び機能、並びにインターネットを介して利用可能なサービスに関するユーザの体験を統一、簡略化及び改善できる。従って、ユーザは、デバイス及びウェブ接続サービスで利用可能な機能性、ユーザが要求するものを得るためにそのようなサービスとインタフェースする方法、並びにそのようなサービスから受信される出力を解釈する方法を学ぶ負担から解放される。本発明のアシスタントは、ユーザとそのような種々のサービスとの間を仲介できる。
【０００８】
更に、種々の実施形態において、本発明のアシスタントは、ユーザが従来のグラフィカルユーザインタフェースより直観的に且つ少ない負担で見つけられるような会話インタフェースを提供する。ユーザは、例えば音声、グラフィカルユーザインタフェース（ボタン及びリンク）及びテキスト入力等の多くの利用可能な入出力機構のいずれかを使用して会話ダイアログの形式でアシスタントと関わることができる。システムは、デバイスＡＰＩ、ウェブ及び電子メール等、あるいはそれらのあらゆる組み合わせ等の多くの種々のプラットフォームのいずれかを使用して実現される。追加の入力の要求は、そのような会話のコンテキストでユーザに提示される。短期及び長期メモリは、所定のセッション内の先の事象及び通信、並びにユーザに関する履歴及びプロフィール情報を仮定して、ユーザ入力が適切なコンテキストに解釈できるように使用される。
【０００９】
更に、種々の実施形態において、デバイスの特徴、動作又はアプリケーションとのユーザ対話から導出されたコンテキスト情報は、そのデバイス又は他のデバイスの他の特徴、動作又はアプリケーションの動作を能率的にするために使用される。例えばインテリジェント自動アシスタントは、テキストメッセージの開始を能率的にするために（例えば、ユーザがテキストメッセージの受信者を明示的に指定する必要なく、テキストメッセージが同一人物に送出されることを判定するために）通話のコンテキストを使用できる。従って、本発明のインテリジェント自動アシスタントは、「ｓｅｎｄ  ｈｉｍ  ａ  ｔｅｘｔ  ｍｅｓｓａｇｅ」等の命令を解釈できる。ここで、「ｈｉｍ」は、現在の通話から、並びに／あるいはデバイスのあらゆる特徴、動作又はアプリケーションから導出されたコンテキスト情報に従って解釈される。種々の実施形態において、インテリジェント自動アシスタントは、ユーザが使用する電話帳の連絡先、使用する連絡先データ及び連絡するのに使用する電話番号等を手動で再指定する必要がないように、そのような情報を判定するために種々の利用可能なコンテキストデータを考慮に入れる。
【００１０】
種々の実施形態において、アシスタントは、外部事象を更に考慮に入れてそれに応じて応答し、例えば行動を開始し、ユーザとの通信を開始し、アラートを提供し且つ／又は外部事象を考慮して先に開始した行動を変更する。ユーザから入力が要求される場合、会話インタフェースが再度使用される。
【００１１】
一実施形態において、システムは、相互に関係付けられたドメイン及びタスクの集合に基づき、システムが対話できる外部サービスにより電力供給される追加の機能性を採用する。種々の実施形態において、これらの外部サービスは、ウェブ対応サービスとハードウェアデバイス自体と関連する機能性とを含む。例えばインテリジェント自動アシスタントがスマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ又は他のデバイスで実現される一実施形態において、アシスタントは、例えば電話番号をダイヤルしたり、テキストメッセージを送出したり、リマンダを設定したり、カレンダにイベントを追加したりするためにデバイスの多くの動作及び機能を制御する。
【００１２】
種々の実施形態において、本発明のシステムは、多くの異なるドメインのいずれかにおいて支援するために実現される。
例は以下を含む。
【００１３】
・ローカルサービス（レストラン、映画、現金自動預払機（ＡＴＭ）、イベント及び待ち合わせ場所等の場所別及び時間別のサービスを含む）
・個人及び社会メモリサービス（行動アイテム、メモ、カレンダのイベント及び共有リンク等を含む）
・電子商取引（本、ＤＶＤ及び音楽等のアイテムのオンライン購入を含む）
・旅行サービス（フライト、ホテル及び観光名所等を含む）
上記のドメインのリストは単なる例示であることが当業者には理解されるだろう。更に、本発明のシステムは、ドメインのいかなる組み合わせにおいても実現できる。
【００１４】
種々の実施形態において、本明細書で開示するインテリジェント自動アシスタントシステムは、製品及びサービスを発見し、見つけ出し、選択するため、特に購入、予約又は注文するためにインターネットを介して利用可能なデータ及びサービスの適用を自動化する機能性を含むように構成又は設計される。これらのデータ及びサービスを使用する処理を自動化することに加え、本明細書で開示する少なくとも１つのインテリジェント自動アシスタントシステムの実施形態は、いくつかのデータソース及びサービスを組み合わせて１度に使用することを可能にする。例えば実施形態は、いくつかのレビューサイトからの製品に関する情報を組み合わせ、複数の販売者からの入手の可能性及び価格をチェックし、場所及び時間制約をチェックし、ユーザの問題に対する個人的な解決策を見つけやすくする。更に本明細書で開示する少なくとも１つのインテリジェント自動アシスタントシステムの実施形態は、やるべきこと（映画、イベント、演奏、展示、ショー及び観光名所を含むがこれらに限定されない）、行くべき場所（旅行先、滞在するホテル及び他の場所、ランドマーク及び他の興味のある場所）、飲食場所（レストラン及びバー等）、他の人との待ち合わせ時間及び場所、並びにインターネットで見つけられる可能性がある社会的交流又は娯楽のあらゆる他のソースを発見し、調べて、選択するため、特に予約するか又は知るためにインターネットを介して利用可能なデータ及びサービスの使用を自動化する機能性を含むように構成又は設計される。更に、本明細書で開示する少なくとも１つのインテリジェント自動アシスタントシステムの実施形態は、探索（場所に基づく探索を含む）と、ナビゲーション（地図及び方向）と、データベースの参照（名前又は他の特性によりビジネス又は人を見つける等）と、天気の状態及び予報の取得と、市場アイテムの価格又は金融取引の状態のチェックと、交通又はフライトの状態の監視と、カレンダ及びスケジュールへのアクセス及び更新と、リマインダ、アラート、タスク及びプロジェクトの管理と、電子メール又は他のメッセージングプラットフォームを介する通信と、デバイスのローカル又はリモートでの動作（例えば、電話をかけたり、照明及び温度を制御したり、ホームセキュリティデバイスを制御したり、音楽又はビデオを再生したりする）とを含むグラフィカルユーザインタフェースを有する専用アプリケーションにより提供される自然言語ダイアログを介してアプリケーション及びサービスの動作を可能にする機能性を含むように構成又は設計される。また、本明細書で開示する少なくとも１つのインテリジェント自動アシスタントシステムの実施形態は、自然言語での対話ダイアログとデータ及びサービスへの自動アクセスとから利点が得られるアクティビティ、製品、サービス、娯楽のソース、時間管理又は他のあらゆる種類の推薦サービスの個人的な推薦を識別、生成及び／又は提供する機能性を含むように構成又は設計される。
【００１５】
種々の実施形態において、本発明のインテリジェント自動アシスタントは、電子デバイスの多くの特徴及び動作を制御する。例えばインテリジェント自動アシスタントは、デバイスにおいて従来のユーザインタフェースを使用して開始される機能及び動作を実行するために、ＡＰＩ又は他の手段を介してデバイスにおいて機能性及びアプリケーションとインタフェースするサービスを呼び出せる。そのような機能及び動作は、例えばアラーム設定、通話、テキストメッセージ又は電子メールメッセージの送出及びカレンダイベントの追加等を含む。そのような機能及び動作は、ユーザとアシスタントとの間の会話ダイアログのコンテキストにおいてアドオン機能として実行される。そのような機能及び動作は、そのようなダイアログのコンテキストにおいてユーザにより指定されるか、あるいはダイアログのコンテキストに基づいて自動的に実行される。従って、アシスタントは、電子デバイスの種々の動作を開始及び制御する制御機構として使用され、これはボタン又はグラフィカルユーザインタフェース等の従来の機構に対する代替機構として使用されてもよいことが当業者には理解されるだろう。
【図面の簡単な説明】
【００１６】
添付の図面は、本発明のいくつかの実施形態を示し、説明と共に実施形態に係る本発明の原理を説明する。図面に示される特定の実施形態は、単なる例示であり、本発明の範囲を限定することを意図しないことが当業者には理解されるだろう。
【図１】図１は、インテリジェント自動アシスタントシステムの一実施形態の一例を示すブロック図である。
【図２】図２は、少なくとも１つの実施形態に係るインテリジェント自動アシスタントとユーザとの間の対話の一例を示す図である。
【図３】図３は、少なくとも１つの実施形態に係るインテリジェント自動アシスタントの少なくとも一部分を実現するのに適切なコンピューティングデバイスを示すブロック図である。
【図４】図４は、少なくとも１つの実施形態に従って、スタンドアロンコンピューティングシステムにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するアーキテクチャを示すブロック図である。
【図５】図５は、少なくとも１つの実施形態に従って、分散コンピューティングネットワークにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するアーキテクチャを示すブロック図である。
【図６】図６は、いくつかの異なる種類のクライアント及び動作モードを示すシステムアーキテクチャを示すブロック図である。
【図７】図７は、一実施形態に従って本発明を実現するために互いに通信するクライアントとサーバとを示すブロック図である。
【図８】図８は、一実施形態に従ってアクティブオントロジの一部を示すブロック図である。
【図９】図９は、インテリジェント自動アシスタントの別の実施形態の一例を示すブロック図である。
【図１０】図１０は、一実施形態に係る能動的入力導出構成要素の動作方法を示すフローチャートである。
【図１１】図１１は、一実施形態に係る能動的タイプ入力導出方法を示すフローチャートである。
【図１２】図１２は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１３】図１３は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１４】図１４は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１５】図１５は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１６】図１６は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１７】図１７は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１８】図１８は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図１９】図１９は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図２０】図２０は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図２１】図２１は、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットである。
【図２２】図２２は、一実施形態に係る音声入力のための能動的入力導出方法を示すフローチャートである。
【図２３】図２３は、一実施形態に係るＧＵＩ入力のための能動的入力導出方法を示すフローチャートである。
【図２４】図２４は、一実施形態に係るダイアログフローのレベルにおける能動的入力導出方法を示すフローチャートである。
【図２５】図２５は、一実施形態に係る関連する事象の能動的な監視の方法を示すフローチャートである。
【図２６】図２６は、一実施形態に係るマルチモーダル能動的入力導出方法を示すフローチャートである。
【図２７】図２７は、一実施形態に係るドメインモデル構成要素及びサービスオーケストレーションにより提供される種々の機能、動作、行動及び／又は他の特徴の一例を示すスクリーンショットの集合である。
【図２８】図２８は、一実施形態に係る自然言語処理の方法の一例を示すフローチャートである。
【図２９】図２９は、一実施形態に係る自然言語処理を示すスクリーンショットである。
【図３０】図３０は、一実施形態に係るダイアログフロープロセッサ構成要素により提供される種々の機能、動作、行動及び／又は他の特徴の一例を示すスクリーンショットである。
【図３１】図３１は、一実施形態に係るダイアログフロープロセッサ構成要素により提供される種々の機能、動作、行動及び／又は他の特徴の一例を示すスクリーンショットである。
【図３２】図３２は、一実施形態に係るダイアログフロープロセッサ構成要素の動作方法を示すフローチャートである。
【図３３】図３３は、一実施形態に係る自動呼出し及び応答手順を示すフローチャートである。
【図３４】図３４は、一実施形態に係る条件付き選択タスクのタスクフローの一例を示すフローチャートである。
【図３５】図３５は、一実施形態に係る条件付き選択タスクの動作の一例を示すスクリーンショットである。
【図３６】図３６は、一実施形態に係る条件付き選択タスクの動作の一例を示すスクリーンショットである。
【図３７】図３７は、一実施形態に係るサービスオーケストレーション手順を実行する手順の一例を示すフローチャートである。
【図３８】図３８は、一実施形態に係るサービス呼出し手順の一例を示すフローチャートである。
【図３９】図３９は、一実施形態に係る多相出力手順の一例を示すフローチャートである。
【図４０】図４０は、一実施形態に係る出力処理の例を示すスクリーンショットである。
【図４１】図４１は、一実施形態に係る出力処理の例を示すスクリーンショットである。
【図４２】図４２は、一実施形態に係るマルチモーダル出力処理の一例を示すフローチャートである。
【図４３Ａ】図４３Ａは、一実施形態に従って、場所を変更しつつダイアログコンテキストを維持するために短期個人メモリ構成要素を使用する一例を示すスクリーンショットである。
【図４３Ｂ】図４３Ｂは、一実施形態に従って、場所を変更しつつダイアログコンテキストを維持するために短期個人メモリ構成要素を使用する一例を示すスクリーンショットである。
【図４４Ａ】図４４Ａは、一実施形態に従って、長期個人メモリ構成要素を使用する一例を示すスクリーンショットである。
【図４４Ｂ】図４４Ｂは、一実施形態に従って、長期個人メモリ構成要素を使用する一例を示すスクリーンショットである。
【図４４Ｃ】図４４Ｃは、一実施形態に従って、長期個人メモリ構成要素を使用する一例を示すスクリーンショットである。
【図４５】図４５は、条件付き選択タスクの抽象モデルの一例を示す図である。
【図４６】図４６は、探索処理においてユーザの誘導を容易にするダイアログフローモデルの一例を示す図である。
【図４７】図４７は、一実施形態に係る条件付き選択の方法を示すフローチャートである。
【発明を実施するための形態】
【００１７】
添付の図面に示すようないくつかの実施形態の例を参照して、種々の技術について詳細に説明する。以下の説明において、本明細書で説明及び参照する１つ以上の態様及び／又は特徴を完全に理解できるように、多くの特定の詳細を説明する。しかし、本明細書で説明及び参照する１つ以上の態様及び／又は特徴は、特定の詳細の一部又は全てを含まずに実施されてもよいことが当業者には明らかとなるだろう。他の例において、周知の処理ステップ及び／又は構造は、本明細書で説明又は参照する態様及び／又は特徴の一部を曖昧にしないために詳細に説明していない。
【００１８】
１つ以上の異なる発明が本出願において説明される。また、本明細書で説明する１つ以上の発明に対して、多くの実施形態が本特許出願において説明され、例示する目的でのみ提示される。説明される実施形態は、いかなる意味においても限定されることを意図しない。１つ以上の発明は、開示から容易に明らかとなるように多くの実施形態に広範に適用可能である。当業者が１つ以上の発明を実施できるように、これらの実施形態について十分に詳細に説明する。他の実施形態が利用されてもよく、１つ以上の発明の範囲から逸脱せずに構造的変更、論理的変更、ソフトウェアの変更、電気的変更及び他の変更が行われてもよいことが理解される。従って、１つ以上の発明が種々の変形及び変更を伴って実施されてもよいことが当業者には理解されるだろう。１つ以上の発明の特定の特徴について、本発明の一部を形成する１つ以上の特定の実施形態又は図面を参照して説明する。ここでは、１つ以上の発明の特定の実施形態を例として示す。しかし、そのような特徴は、説明される際に参照される１つ以上の特定の実施形態又は図面において使用されることに限定されないことが理解されるべきである。本発明は、全ての実施形態において存在する必要のある１つ以上の発明の特徴のリストでもなく、１つ以上の発明の全ての実施形態の文字通りの説明でもない。
【００１９】
本特許出願において提供される節の表題及び本特許出願の発明の名称は単に便宜上のものであり、本発明を限定するものとして考えられない。
【００２０】
互いに通信しているデバイスは、特に指定のない限り互いに継続して通信している必要はない。更に互いに通信しているデバイスは、直接通信してもよく、あるいは１つ以上の仲介を介して間接的に通信してもよい。
【００２１】
互いに通信しているいくつかの構成要素を含む一実施形態の説明は、そのような構成要素の全てが必要とされることを示さない。それとは対照的に、種々のオプションの構成要素は、１つ以上の発明の種々の可能な実施形態を例示するために説明される。
【００２２】
更に処理ステップ、方法ステップ又はアルゴリズム等を順番に説明するが、そのような処理、方法及びアルゴリズムは別の順番で動作するように構成されてもよい。換言すると、本特許出願で説明されるステップのあらゆる順序又は順番は、本質的に、ステップがその順番で実行されるという要件を示さない。説明する処理のステップは、実際には、どんな順番で実行されてもよい。更にいくつかのステップは、同時に行われるものとして説明されていないか又は示されていない（例えば、１つのステップが他のステップの後に説明される）が同時に実行されてもよい。更に図面に示した処理は、例示された処理が他の変更及び変形を除外することを示さず、例示した処理又はそのステップのいずれも１つ以上の発明に必要であることを示さず、例示した処理が好適であることを示さない。
【００２３】
単一のデバイス又は物品が説明される場合、２つ以上のデバイス／物品（それらが協働するか否かに関わらず）が単一のデバイス／物品の代わりに使用されてもよいことが容易に明らかとなるだろう。同様に、２つ以上のデバイス又は物品が説明される場合（それらが協働するか否かに関わらず）、単一のデバイス／物品が２つ以上のデバイス又は物品の代わりに使用されてもよいことが容易に明らかとなるだろう。
【００２４】
デバイスの機能性及び／又は特徴は、そのような機能性／特徴を有するものとして明示的に説明されない１つ以上の他のデバイスにより具体化されてもよい。従って、１つ以上の発明の他の実施形態はデバイス自体を含む必要はない。
【００２５】
本明細書で説明又は参照する技術及び機構は、理解し易いように単数形で説明する場合がある。しかし、特定の実施形態は、特に指定の無い限り、技術の複数の繰り返し、あるいは機構の複数の具体例を含む。
【００２６】
インテリジェント自動アシスタント技術の範囲内で説明するが、本明細書で説明する種々の態様及び技術がソフトウェアとの人間の対話及び／又はコンピュータ化された対話を含む他の技術分野において展開及び／又は適用されてもよいことが理解される。
【００２７】
インテリジェント自動アシスタント技術に関する他の態様（例えば、本明細書で説明する１つ以上のインテリジェント自動アシスタントシステムの実施形態により利用され、提供され且つ／又はそれら実施形態において実現される）は、以下の参考文献の１つ以上において開示される。
【００２８】
・内容が参考として本明細書に取り入れられる２０１０年１月１８日に出願された米国特許仮出願第６１／２９５，７７４号「Ｉｎｔｅｌｌｉｇｅｎｔ  Ａｕｔｏｍａｔｅｄ  Ａｓｓｉｓｔａｎｔ」ａｔｔｏｒｎｅｙ  ｄｏｃｋｅｔ  Ｎｏ．ＳＩＲＩＰ００３Ｐ
・内容が参考として本明細書に取り入れられる２００６年９月８日に出願された米国特許出願第１１／５１８，２９２号「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｂｕｉｌｄｉｎｇ  ａｎ  Ｉｎｔｅｌｌｉｇｅｎｔ  Ａｕｔｏｍａｔｅｄ  Ａｓｓｉｓｔａｎｔ」
・内容が参考として本明細書に取り入れられる２００９年６月１２日に出願された米国特許仮出願第６１／１８６，４１４号「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｅｍａｎｔｉｃ  Ａｕｔｏ−Ｃｏｍｐｌｅｔｉｏｎ」
【００２９】
ハードウェアアーキテクチャ
一般に、本明細書で開示するインテリジェント自動アシスタント技術は、ハードウェア又はソフトウェアとハードウェアとの組み合わせにより実現される。例えば、それら技術は、オペレーティングシステムカーネル、独立したユーザプロセス、ネットワークアプリケーションに結び付けられたライブラリパッケージ、専用に構築されたマシン又はネットワークインタフェースカードにおいて実現される。特定の一実施形態において、本明細書で開示する技術は、オペレーティングシステム等のソフトウェア又はオペレーティングシステムで実行するアプリケーションにおいて実現される。
【００３０】
本明細書で開示するインテリジェント自動アシスタントの実施形態の少なくとも一部のソフトウェア／ハードウェアハイブリッド実現例は、メモリに格納されたコンピュータプログラムにより選択的に有効にされるか又は再構成されるプログラマブルマシンにおいて実現される。そのようなネットワークデバイスは、種々のネットワーク通信プロトコルを利用するように構成又は設計される複数のネットワークインタフェースを有する。それらマシンの一部に対する一般的なアーキテクチャは、本明細書で開示する説明から明らかになる。特定の実施形態によると、本明細書で開示する種々のインテリジェント自動アシスタントの実施形態の特徴及び／又は機能性の少なくとも一部は、エンドユーザコンピュータシステム、コンピュータ、ネットワークサーバ又はサーバシステム、モバイルコンピューティングデバイス（例えば、パーソナルデジタルアシスタント、移動電話、スマートフォン、ラップトップ又はタブレットコンピュータ等）、民生用電子デバイス、音楽プレーヤ又はあらゆる他の適切な電子デバイス、ルータ又は交換機、あるいはそれらのあらゆる組み合わせ等の１つ以上の汎用ネットワークホストマシンにおいて実現される。少なくともいくつかの実施形態において、本明細書で開示する種々のインテリジェント自動アシスタントの実施形態の特徴及び／又は機能性の少なくとも一部は、１つ以上の仮想コンピューティング環境（例えば、ネットワークコンピューティングクラウド等）において実現される。
【００３１】
次に図３を参照すると、本明細書で開示するインテリジェント自動アシスタントの特徴及び／又は機能性の少なくとも一部分を実現するのに適切なコンピューティングデバイス６０を示すブロック図が示される。コンピューティングデバイス６０は、例えばエンドユーザコンピュータシステム、ネットワークサーバ又はサーバシステム、モバイルコンピューティングデバイス（例えば、パーソナルデジタルアシスタント、移動電話、スマートフォン、ラップトップ又はタブレットコンピュータ等）、民生用電子デバイス、音楽プレーヤ又はあらゆる他の適切な電子デバイス、あるいはそれらのあらゆる組み合わせ又はその一部である。コンピューティングデバイス６０は、無線又は有線に関わらず通信を行うための既知のプロトコルを使用してインターネット等の通信ネットワークを介してクライアント及び／又はサーバ等の他のコンピューティングデバイスと通信するように構成される。
【００３２】
一実施形態において、コンピューティングデバイス６０は、中央処理装置（ＣＰＵ）６２、インタフェース６８及びバス６７（ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス等）を含む。適切なソフトウェア又はファームウェアの制御下で動作する場合、ＣＰＵ６２は、専用に構成されたコンピューティングデバイス又はマシンの機能と関連する特定の機能を実現する役割を有する。例えば少なくとも１つの実施形態において、ユーザのパーソナルデジタルアシスタント（ＰＤＡ）は、ＣＰＵ６２、メモリ６１、６５及びインタフェース６８を利用してインテリジェント自動アシスタントシステムとして機能するように構成又は設計されてもよい。少なくとも１つの実施形態において、ＣＰＵ６２は、例えばオペレーティングシステム及びあらゆる適切なアプリケーションソフトウェア及びドライバ等を含むソフトウェアモジュール／コンポーネントの制御下で１つ以上の種々のインテリジェント自動アシスタントの機能及び／又は動作を実行させられる。
【００３３】
ＣＰＵ６２は、例えばＭｏｔｏｒｏｌａ又はＩｎｔｅｌ系のマイクロプロセッサ又はＭＩＰＳ系のマイクロプロセッサのプロセッサ等の１つ以上のプロセッサ６３を含む。いくつかの実施形態において、プロセッサ６３は、コンピューティングデバイス６０の動作を制御するための特別設計のハードウェア（例えば、特定用途向け集積回路（ＡＳＩＣ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）及びフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等）を含む。特定の一実施形態において、メモリ６１（不揮発性ランダムアクセスメモリ（ＲＡＭ）及び／又は読み出し専用メモリ（ＲＯＭ））は、ＣＰＵ６２の一部を更に形成する。しかし、メモリがシステムに結合される種々の方法が多く存在する。メモリブロック６１は、例えばデータのキャッシュ及び／又は格納、並びに命令のプログラミング等の種々の目的で使用される。
【００３４】
本明細書で使用されるように、「プロセッサ」という用語は、従来技術においてプロセッサと呼ばれる集積回路に単に限定されず、マイクロコントローラ、マイクロコンピュータ、プログラマブルロジックコントローラ、特定用途向け集積回路及びあらゆる他のプログラマブル回路を広範に示す。
【００３５】
一実施形態において、インタフェース６８はインタフェースカード（「ラインカード」と呼ばれる場合もある）として提供される。一般に、それらインタフェースは、コンピューティングネットワークを介するデータパケットの送出及び受信を制御し、場合によってはコンピューティングデバイス６０と共に使用される他の周辺装置をサポートする。提供されるインタフェースは、Ｅｔｈｅｒｎｅｔインタフェース、フレームリレーインタフェース、ケーブルインタフェース、ＤＳＬインタフェース及びトークンリングインタフェース等である。更に、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、Ｓｅｒｉａｌ、Ｅｔｈｅｒｎｅｔ、Ｆｉｒｅｗｉｒｅ、ＰＣＩ、パラレル、無線周波数（ＲＦ）、Ｂｌｕｅｔｏｏｔｈ(tm)、近距離通信（例えば、近接場磁気を使用する）、８０２．１１（ＷｉＦｉ）、フレームリレー、ＴＣＰ／ＩＰ、ＩＳＤＮ、高速Ｅｔｈｅｒｎｅｔインタフェース、ギガビットＥｔｈｅｒｎｅｔインタフェース、非同期転送モード（ＡＴＭ）インタフェース、高速シリアルインタフェース（ＨＳＳＩ）、ＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅ）インタフェース及び光ファイバ分散データインタフェース（ＦＤＤＩ）等の種々のインタフェースが提供される。一般に、そのようなインタフェース６８は、適切な媒体と通信するのに適切なポートを含む。いくつかの例において、それらインタフェースは、独立したプロセッサを更に含み、いくつかの例においては揮発性及び／又は不揮発性メモリ（例えば，ＲＡＭ）を含む。
【００３６】
図３に示すシステムが本明細書で説明する発明の技術を実現するためのコンピューティングデバイス６０の１つの特定のアーキテクチャを示すが、それは、本明細書で説明する特徴及び技術の少なくとも一部分が実現される唯一のデバイスアーキテクチャではない。例えば１つ又は複数のプロセッサ６３を有するアーキテクチャが使用され、そのようなプロセッサ６３は単一のデバイスに存在するか、複数のデバイスに分散される。一実施形態において、単一のプロセッサ６３は、通信及びルーティング計算に対処する。種々の実施形態において、種々のインテリジェント自動アシスタントの特徴及び／又は機能性は、クライアントデバイス（クライアントソフトウェアを実行するスマートフォン又はパーソナルデジタルアシスタント等）及びサーバシステム（以下に更に詳細に説明するサーバシステム等）を含むインテリジェント自動アシスタントシステムにおいて実現される。
【００３７】
ネットワークデバイス構成に関係なく、本発明のシステムは、データ、汎用ネットワーク動作のためのプログラム命令及び／又は本明細書で説明するインテリジェント自動アシスタント技術の機能性に関する他の情報を格納するように構成された１つ以上のメモリ又はメモリモジュール（例えば、メモリブロック６５等）を採用する。プログラム命令は、例えばオペレーティングシステム及び／又は１つ以上のアプリケーションの動作を制御する。１つ又は複数のメモリは、データ構造、キーワード分類情報、広告情報、ユーザクリック及びインプレッション情報、並びに／あるいは本明細書で説明する他の特定の非プログラム情報を格納するように更に構成される。
【００３８】
そのような情報及びプログラム命令が本明細書で説明するシステム／方法を実現するために採用されるため、少なくともいくつかのネットワークデバイスの実施形態は、例えば本明細書で説明する種々の動作を実行するためのプログラム命令及び状態情報等を格納するように構成又は設計される非一時的な機械可読記憶媒体を含む。そのような非一時的な機械可読記憶媒体の例は、ハードディスク、フロッピーディスク及び磁気テープ等の磁気媒体、ＣＤ−ＲＯＭディスク等の光媒体、フロプティカルディスク等の光磁気媒体、並びに読み出し専用メモリ素子（ＲＯＭ）、フラッシュメモリ、メモリスタメモリ及びランダムアクセスメモリ（ＲＡＭ）等のプログラム命令を格納及び実行するように専用に構成されるハードウェアデバイスを含むが、これらに限定されない。プログラム命令の例は、コンパイラに生成されるような機械コードと、インタプリタを使用してコンピュータにより実行される高水準コードを含むファイルとを含む。
【００３９】
一実施形態において、本発明のシステムは、スタンドアロンコンピューティングシステムにおいて実現される。次に図４を参照すると、少なくとも１つの実施形態に従って、スタンドアロンコンピューティングシステムにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するためのアーキテクチャを示すブロック図が示される。コンピューティングデバイス６０は、インテリジェント自動アシスタント１００２を実現するためのソフトウェアを実行するプロセッサ６３を含む。入力デバイス１２０６は、例えばキーボード、タッチスクリーン、マイク（例えば、音声入力用）、マウス、タッチパッド、トラックボール、十字スイッチ、ジョイスティック及び／又はそれらのあらゆる組み合わせを含むユーザ入力を受信するのに適切なあらゆる種類の入力デバイスである。出力デバイス１２０７は、スクリーン、スピーカ、プリンタ及び／又はそれらのあらゆる組み合わせである。メモリ１２１０は、ソフトウェアを実行中にプロセッサ６３が使用する従来技術において既知であるような構造及びアーキテクチャを有するランダムアクセスメモリである。記憶装置１２０８は、デジタル形式でデータを格納するあらゆる磁気記憶装置、光学記憶装置及び／又は電気記憶装置であり、例としては、フラッシュメモリ、磁気ハードドライブ及び／又はＣＤ−ＲＯＭ等がある。
【００４０】
別の実施形態において、本発明のシステムは、分散コンピューティングネットワークにおいて実現され、例えば１つ又は複数のクライアント及び／又はサーバを有する。次に図５を参照すると、少なくとも１つの実施形態に従って分散コンピューティングネットワークにおいてインテリジェント自動アシスタントの少なくとも一部分を実現するアーキテクチャを示すブロック図が示される。
【００４１】
図５に示す構成において、１つ又は複数のクライアント１３０４が提供される。各クライアント１３０４は、本発明のクライアント側部分を実現するソフトウェアを実行する。更に、クライアント１３０４から受信した要求に対処するために１つ又は複数のサーバ１３４０が提供されてもよい。クライアント１３０４及びサーバ１３４０は、インターネット等の電子ネットワーク１３６１を介して互いに通信する。ネットワーク１３６１は、例えば有線及び／又は無線プロトコルを含むあらゆる既知のネットワークプロトコルを使用して実現される。
【００４２】
また、一実施形態において、サーバ１３４０は、追加の情報を取得する必要がある場合、あるいは特定のユーザとの先の対話に関する格納データを参照する必要がある場合に外部サービス１３６０を呼び出す。外部サービス１３６０との通信は、例えばネットワーク１３６１を介して行われる。種々の実施形態において、外部サービス１３６０は、ハードウェアデバイス自体と関連するか又はハードウェアデバイス自体にインストールされたウェブ対応サービス及び／又は機能性を含む。例えばアシスタント１００２がスマートフォン又は他の電子デバイスにおいて実現される一実施形態において、アシスタント１００２は、カレンダアプリケーション（「ａｐｐ」）に格納された情報、連絡先及び／又は他のソースを取得できる。
【００４３】
種々の実施形態において、アシスタント１００２は、それがインストールされた電子デバイスの多くの特徴及び動作を制御できる。例えばアシスタント１００２は、デバイスにおいて従来のユーザインタフェースを使用して開始される機能及び動作を実行するために、ＡＰＩを介して又は他の手段によりデバイスの機能性及びアプリケーションとインタフェースする外部サービス１３６０を呼び出す。そのような機能及び動作は、例えばアラーム設定、通話、テキストメッセージ又は電子メールメッセージの送出及びカレンダイベントの追加等を含む。そのような機能及び動作は、ユーザとアシスタント１００２との間の会話ダイアログのコンテキストにおいてアドオン機能として実行される。そのような機能及び動作は、そのようなダイアログのコンテキストにおいてユーザにより指定されるか、あるいはダイアログのコンテキストに基づいて自動的に実行される。従って、アシスタント１００２は、電子デバイスの種々の動作を開始及び制御する制御機構として使用され、これはボタン又はグラフィカルユーザインタフェース等の従来の機構の代替機構として使用される。
【００４４】
例えばユーザは、「Ｉ  ｎｅｅｄ  ｔｏ  ｗａｋｅ  ｔｏｍｏｒｒｏｗ  ａｔ  ８ａｍ」等の入力をアシスタント１００２に提供する。アシスタント１００２がユーザの意図を判定すると、本明細書で説明する技術を使用して、アシスタント１００２は、デバイスのアラームクロック機能又はアプリケーションとインタフェースするために外部サービス１３４０を呼び出す。アシスタント１００２は、ユーザの代わりにアラームを設定する。このように、ユーザはアラームを設定する従来の機構又はデバイスの他の機能を実行する従来の機構の代替機構としてアシスタント１００２を使用する。ユーザの要求が曖昧であるか又は更なる説明を必要とする場合、アシスタント１００２は、適切なサービス１３４０が呼び出され且つ意図した行動が行われるように必要な情報を取得するために能動的な導出、言い換え及び提案等を含む本明細書で説明する種々の技術を使用できる。一実施形態において、アシスタント１００２は、機能を実行するためにサービス１３４０を呼び出す前にユーザに確認を指示する。一実施形態において、ユーザは、特定のサービス１３４０を呼び出すためのアシスタント１００２の能力を選択的に無効にできるか、あるいは要望に応じてそのようなサービス呼び出しの全てを無効にできる。
【００４５】
本発明のシステムは、多くの種々のクライアント１３０４及び動作モードにより実現される。次に図６を参照すると、いくつかの種々のクライアント１３０４及び動作モードを例示するシステムアーキテクチャを示すブロック図が示される。図６に示す種々のクライアント１３０４及び動作モードは単なる例示であり、本発明のシステムは図示した以外のクライアント１３０４及び／又は動作モードを使用して実現可能であることが当業者には理解されるだろう。更にシステムは、そのようなクライアント１３０４及び／又は動作モードのいずれか又は全てを単独で又はあらゆる組み合わせで含むことができる。図示する例は以下を含む。
【００４６】
・入出力デバイス及び／又はセンサを含むコンピュータデバイス１４０２。クライアント構成要素は、あらゆるそのようなコンピュータデバイス１４０２において展開される。少なくとも１つの実施形態は、ウェブブラウザ１３０４Ａ又はネットワーク１３６１を介するサーバ１３４０との通信を可能にする他のソフトウェアアプリケーションを使用して実現される。入出力チャネルは、例えば視覚及び／又は聴覚チャネルを含むいかなる種類のチャネルであってもよい。例えば一実施形態において、本発明のシステムは、音声通信方法を使用して実現され、ウェブブラウザの均等物が音声により駆動され且つ出力に音声を使用する視覚障害者のためのアシスタントの一実施形態を可能にする。
【００４７】
・クライアントが移動体デバイス１３０４Ｂでアプリケーションとして実現されるＩ／Ｏ及びセンサを含む移動体デバイス１４０６。これは、移動電話、スマートフォン、パーソナルデジタルアシスタント、タブレットデバイス及びネットワーク化ゲームコンソールを含むがこれらに限定されない。
【００４８】
・クライアントが機器１３０４Ｃにおいて組み込みアプリケーションとして実現されるＩ／Ｏ及びセンサを含む民生用機器１４１０。
【００４９】
・クライアントが組み込みシステムアプリケーション１３０４Ｄとして実現されるダッシュボードインタフェース及びセンサを含む自動車及び他の乗り物１４１４。これは、自動車のナビゲーションシステム、音声制御システム及び車載エンターテイメントシステム等を含むがこれらに限定されない。
【００５０】
・クライアントがデバイス常駐アプリケーション１３０４Ｅとして実現されるルータ等のネットワーク化コンピューティングデバイス１４１８、あるいはネットワークに常駐するか又はネットワークとインタフェースするあらゆる他のデバイス。
【００５１】
・アシスタントの一実施形態が電子メールモダリティサーバ１４２６を介して接続される電子メールクライアント１４２４。電子メールモダリティサーバ１４２６は通信ブリッジとして動作し、例えばアシスタントに送出された電子メールメッセージとしてユーザからの入力を取り込んだり、アシスタントからユーザに応答として出力を送出したりする。
【００５２】
・アシスタントの一実施形態がメッセージングモダリティサーバ１４３０を介して接続されるインスタントメッセージングクライアント１４２８。メッセージングモダリティサーバ１４３０は、通信ブリッジとして動作し、アシスタントに送出されたメッセージとしてユーザからの入力を取り込んだり、応答の際にアシスタントからユーザにメッセージとして出力を送出したりする。
【００５３】
・アシスタントの一実施形態がＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  ＩＰ  （インターネットプロトコル））モダリティサーバ１４３０を介して接続される音声電話１４３２。ＶｏＩＰモダリティサーバ１４３０は、通信ブリッジとして動作し、アシスタントに話した音声としてユーザからの入力を取り込んだり、応答の際にアシスタントからユーザに例えば合成音声として出力を送出したりする。
【００５４】
電子メール、インスタントメッセージング、ディスカッションフォーラム、グループチャットセッション、ライブヘルプ又は顧客サポートセッション等を含むがこれらに限定されないメッセージングプラットフォームの場合、アシスタント１００２は会話の参加者として動作する。アシスタント１００２は、１対１の対話のために本明細書で説明する１つ以上の技術及び方法を使用して、会話を監視し且つ個人又はグループに応答する。
【００５５】
種々の実施形態において、本発明の技術を実現する機能性は、１つ又は複数のクライアント及び／又はサーバ構成要素に分散される。例えば種々のソフトウェアモジュールは、本発明と関連する種々の機能を実行するために実現され、そのようなモジュールは、サーバ及び／又はクライアント構成要素で実行するために種々の形態で実現される。次に図７を参照すると、一実施形態に従って本発明を実現するために互いに通信するクライアント１３０４及びサーバ１３４０の一例が示される。図７は、ソフトウェアモジュールがクライアント１３０４及びサーバ１３４０の間で分散される１つの可能な構成を示す。図示する構成は単なる例示であり、そのようなモジュールは多くの種々の方法で分散されることが当業者には理解されるだろう。更に１つ又は複数のクライアント１３０４及び／又はサーバ１３４０が提供されてもよく、モジュールは多くの種々の方法のうちのいずれかによりそれらクライアント１３０４及び／又はサーバ１３４０の間で分散される。
【００５６】
図７の例において、入力導出機能性及び出力処理機能性はクライアント１３０４及びサーバ１３４０の間で分散され、入力導出のクライアント部分１０９４ａ及び出力処理のクライアント部分１０９２ａはクライアント１３０４に配置され、入力導出のサーバ部分１０９４ｂ及び出力処理のサーバ部分１０９２ｂはサーバ１３４０に配置される。以下の構成要素はサーバ１３４０に配置される。
【００５７】
・完全な用語集１０５８ｂ
・言語パターン認識器の完全なライブラリ１０６０ｂ
・短期個人メモリのマスタバージョン１０５２ｂ
・長期個人メモリのマスタバージョン１０５４ｂ
【００５８】
一実施形態において、クライアント１３０４は、応答性を向上し且つネットワーク通信への依存性を低減するためにそれら構成要素の部分集合及び／又は部分をローカルに維持する。そのような部分集合及び／又は部分は、周知のキャッシュ管理技術に従って維持及び更新される。そのような部分集合及び／又は部分は、例えば以下を含む。
【００５９】
・用語集の部分集合１０５８ａ
・言語パターン認識器のライブラリの部分集合１０６０ａ
・短期個人メモリのキャッシュ１０５２ａ
・長期個人メモリのキャッシュ１０５４ａ
【００６０】
追加の構成要素は、サーバ１３４０の一部として実現され、例えば以下を含む。
・言語インタプリタ１０７０
・ダイアログフロープロセッサ１０８０
・出力プロセッサ１０９０
・ドメインエンティティデータベース１０７２
・タスクフローモデル１０８６
・サービスオーケストレーション１０８２
・サービス機能モデル１０８８
【００６１】
これら構成要素の各々について以下に更に詳細に説明する。サーバ１３４０は、必要に応じて外部サービス１３６０とインタフェースすることにより追加の情報を取得する。
【００６２】
概念的アーキテクチャ
次に図１を参照すると、インテリジェント自動アシスタント１００２の特定の一実施形態の概略ブロック図が示される。本明細書において更に詳細に説明するように、インテリジェント自動アシスタントシステムの種々の実施形態は、一般にインテリジェント自動アシスタント技術に関連する種々の動作、機能性及び／又は特徴を提供するように構成され、設計され且つ／又は動作可能である。また、本明細書で更に詳細に説明するように、本明細書で開示するインテリジェント自動アシスタントシステムの種々の動作、機能性及び／又は特徴の多くは、インテリジェント自動アシスタントシステムとインタフェースする種々のエンティティに対して種々の利点及び／又は利益を有効にするか又は提供する。図１に示す実施形態は、上述したハードウェアアーキテクチャのいずれかを使用して又は異なる種類のハードウェアアーキテクチャを使用して実現される。
【００６３】
例えば種々の実施形態によると、少なくともいくつかのインテリジェント自動アシスタントシステムは、例えば１つ以上の以下の動作、機能性及び／又は特徴（あるいはそれらの組み合わせ）等の種々の動作、機能性及び／又は特徴を提供するように構成され、設計され且つ／又は動作可能である。
【００６４】
・製品及びサービスを発見し、見つけ出し、選択するため、特に購入、予約又は注文するためにインターネットを介して利用可能なデータ及びサービスの適用を自動化する。これらのデータ及びサービスを使用する処理を自動化することに加え、インテリジェント自動アシスタント１００２は、いくつかのデータソース及びサービスを組み合わせて１度に使用することを可能にする。例えばインテリジェント自動アシスタントは、いくつかのレビューサイトからの製品に関する情報を組み合わせ、複数の販売者からの入手の可能性及び価格をチェックし、場所及び時間制約をチェックし、ユーザの問題に対する個人的な解決策を見つけやすくする。
【００６５】
・やるべきこと（映画、イベント、演奏、展示、ショー及び観光名所を含むがこれらに限定されない）、行くべき場所（旅行先、滞在するホテル及び他の場所、ランドマーク及び他の興味のある場所等を含むがこれらに限定されない）、飲食場所（レストラン及びバー等）、他の人との待ち合わせ時間及び場所、並びにインターネットで見つけられる可能性がある社会的交流又は娯楽のあらゆる他のソースを発見し、調査し、選択するため、特に予約するか又は知るためにインターネットを介して利用可能なデータ及びサービスの使用を自動化する。
【００６６】
・探索（場所に基づく探索を含む）と、ナビゲーション（地図及び方向）と、データベースの参照（名前又は他の特性によりビジネス又は人を見つける等）と、天気の状態及び予報の取得と、市場アイテムの価格又は金融取引の状態のチェックと、交通又はフライトの状態の監視と、カレンダ及びスケジュールへのアクセス及び更新と、リマインダ、アラート、タスク及びプロジェクトの管理と、電子メール又は他のメッセージングプラットフォームを介する通信と、デバイスのローカル又はリモートでの動作（例えば、電話をかけたり、照明及び温度を制御したり、ホームセキュリティデバイスを制御したり、音楽又はビデオを再生したりする）とを含むグラフィカルユーザインタフェースを有する専用アプリケーションにより提供される自然言語ダイアログを介してアプリケーション及びサービスの動作を可能にする。一実施形態において、アシスタント１００２は、デバイスにおいて利用可能な多くの機能及びアプリケーションを開始、動作及び制御するために使用される。
【００６７】
・自然言語での対話ダイアログとデータ及びサービスへの自動アクセスとから利点が得られるアクティビティ、製品、サービス、娯楽のソース、時間管理又は他のあらゆる種類の推薦サービスの個人的な推薦を提供する。
【００６８】
種々の実施形態によると、インテリジェント自動アシスタント１００２により提供される種々の機能、動作、行動及び／又は他の特徴の少なくとも一部分が１つ以上のクライアントシステム、１つ以上のサーバシステム及び／又はそれらの組み合わせにおいて実現される。
【００６９】
種々の実施形態によると、アシスタント１００２により提供される種々の機能、動作、行動及び／又は他の特徴の少なくとも一部分は、例えば図３３に関して図示され且つ説明されるような自動呼出し及び応答手順の少なくとも１つの実施形態により実現される。
【００７０】
更に本明細書で説明するアシスタント１００２の種々の実施形態は、既存のインテリジェント自動アシスタント技術と比較して、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等である多くの種々の利点及び／又は利益を含むか又は提供する。
【００７１】
・ドメイン、タスク、サービス及びダイアログの明示的なモデルの集合により制約される音声−テキスト及び自然言語理解技術の統合。汎用人工知能システムを実現しようとするアシスタント技術とは異なり、本明細書で説明する実施形態は、解決策の数をより扱いやすいサイズに減少するために制約の複数のソースを適用する。この結果、言語の曖昧な解釈が減少し、関連するドメイン又はタスクが減少し、サービスにおける意図を動作可能にする方法が減少する。特定のドメイン、タスク及びダイアログに注目することにより、人間が管理する用語集及び意図からサービスパラメータへのマッピングによりドメイン及びタスクにわたる有効範囲を達成できる。
【００７２】
・ユーザの問題のためにＡＰＩを使用してインターネットを介してサービスを呼び出すことによりそれらユーザの問題を解決する能力。リンク及びコンテンツのみを返す検索エンジンとは異なり、本明細書で説明する自動アシスタント１００２のいくつかの実施形態は、探索及び問題解決アクティビティを自動化する。所定の要求に対して複数のサービスを呼び出す能力は、例えば製品又はサービスを生成するか又はやるべきことを見つけるために単一のサイトを訪れることにより達成される機能性より広範な機能性をユーザに提供する。
【００７３】
・ユーザ要求の解釈及び実行の際の個人情報及び個人対話履歴の適用。従来の検索エンジン又は質問応答サービスとは異なり、本明細書で説明する実施形態は、個人対話履歴（例えば、ダイアログの履歴及び結果からの先の選択等）、個人物理的コンテキスト（例えば、ユーザの場所及び時間）及び対話のコンテキストにおいて収集された個人情報（例えば、名前、電子メールアドレス、物理アドレス、電話番号、アカウント番号及び嗜好等）の情報を使用する。これらの情報源を使用することにより、例えば以下のことが可能になる。
【００７４】
・ユーザ入力のより適切な解釈（例えば、言語を解釈する時に個人の履歴及び物理的コンテキストを使用する）
・より個人的な結果（例えば、嗜好又は最近の選択に偏る）
・ユーザに対する効率の向上（例えば、サービスへのサインアップ又はフォームの記入を含むステップを自動化することにより）
・ユーザ入力の自然言語を解釈する際のダイアログの履歴の使用。実施形態は、個人の履歴を保持し、ユーザ入力に対して自然言語理解を適用するため、現在の場所、時間、ドメイン、タスクステップ及びタスクパラメータ等のダイアログコンテキストを使用して新しい入力を解釈する。従来の検索エンジン及びコマンドプロセッサは、ダイアログの履歴に関係なく少なくとも１つのクエリを解釈する。ダイアログの履歴を使用する能力は、より自然な解釈を可能にし、これは普通の人間の会話に類似する。
【００７５】
・アシスタント１００２がユーザの入力を解釈するのに使用した同一のモデル及び情報に基づいてユーザからの入力を能動的に誘導及び制約する能動的入力導出。例えばアシスタント１００２は、要求を改善しているユーザとのダイアログにおいて次のステップを提案するためにダイアログモデルを適用するか、ドメイン及びコンテキスト別の可能性に基づいて部分的にタイプされた入力を補完するか、あるいはテキストとしての音声の曖昧な解釈又は意図としてのテキストの曖昧な解釈のうちから選択するために意味的解釈を使用する。
【００７６】
・動的でロバスト性を有するサービスオーケストレーションを伴うサービスの明示的なモデル化及び動的管理。説明する実施形態のアーキテクチャにより、アシスタント１００２は、多くの外部サービスとインタフェースでき、特定のユーザ要求に対して情報を提供するサービスを動的に判定でき、ユーザ要求のパラメータを種々のサービスＡＰＩにマッピングでき、複数のサービスを１度に呼び出すことができ、複数のサービスからの結果を統合でき、失敗したサービスに対して適切にフェールオーバでき、且つ／又はＡＰＩ及び機能が進化するのに伴いサービスの実現を効率的に維持できる。
【００７７】
・アシスタント１００２を構築する方法及び装置としてアクティブオントロジを使用する。それにより、自動アシスタントシステムのソフトウェアエンジニアリング及びデータ維持が簡略化される。アクティブオントロジは、アシスタントに対するデータモデル化及び実行環境の統合である。それらは、種々のモデル及びデータのソース（ドメインの概念、タスクフロー、用語集、言語パターン認識器、ダイアログコンテキスト、ユーザ個人情報、並びにドメイン及びタスク要求から外部サービスへのマッピング）を結びつけるためのフレームワークを提供する。本明細書で説明するアクティブオントロジ及び他のアーキテクチャの発明は、ドメイン内に深い機能性を構築して複数の情報源及びサービスを統一し、これをドメインの集合にわたり行うことを実現する。
【００７８】
少なくとも１つの実施形態において、インテリジェント自動アシスタント１００２は、特定のタスク及び／又は動作を実行する時に種々のデータ及び／又は他の種類の情報を利用及び／又は生成するように動作可能である。これは、例えば入力データ／情報及び／又は出力データ／情報を含む。例えば少なくとも１つの実施形態において、インテリジェント自動アシスタント１００２は、例えば１つ以上のローカル及び／又はリモートメモリ、デバイス及び／又はシステム等の１つ以上の種々のソースからの情報にアクセスし、それを処理し且つ／又は利用するように動作可能である。更に少なくとも１つの実施形態において、インテリジェント自動アシスタント１００２は、例えば１つ以上のローカル及び／又はリモートデバイス及び／又はシステムのメモリに格納される１つ以上の種々の出力データ／情報を生成するように動作可能である。
【００７９】
インテリジェント自動アシスタント１００２がアクセス及び／又は利用する種々の入力データ／情報の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むが、それらに限定されない。
【００８０】
・移動電話及びタブレット等の移動体デバイス、マイク付きコンピュータ、Ｂｌｕｅｔｏｏｔｈヘッドセット、自動車音声制御システム、電話システム、応答サービスにおける記録、統合メッセージングサービスにおけるオーディオ音声メール、クロック無線等の音声入力を有する民生用アプリケーション、電話局、ホームエンターテイメント制御システム及びゲームコンソールからの音声入力。
【００８１】
・コンピュータ又は移動体デバイスのキーボード、リモートコントロール又は他の民生用電子デバイスのキーパッド、アシスタントに送出された電子メールメッセージ、アシスタントに送出されたインスタントメッセージ又は類似するショートメッセージ、マルチユーザゲーム環境においてプレーヤから受信されるメッセージ、メッセージ供給においてストリームされるテキストからのテキスト入力。
【００８２】
・センサ又は場所に基づくシステムから入力される場所情報。例は、移動電話における全地球測位システム（ＧＰＳ）及びアシストＧＰＳ（Ａ−ＧＰＳ）を含む。一実施形態において、場所情報は、明示的なユーザ入力と組み合わされる。一実施形態において、本発明のシステムは、既知の住所情報及び現在の場所判定に基づいてユーザが家にいる時を検出できる。このように、家の外にいる時とは反対に家にいる時にユーザが興味がある可能性のある情報の種類、並びにユーザが家にいるかいないかに依存してユーザのために呼び出されるべきでるサービス及び行動の種類に関して特定の推論が行われる。
【００８３】
・クライアントデバイスのクロックからの時間情報。これは、例えば現地時間及び時間帯を示す電話又は他のクライアントデバイスの時間を含む。更に、時間は例えば「ｉｎ  ａｎ  ｈｏｕｒ」及び「ｔｏｎｉｇｈｔ」等の句を解釈するためにユーザ要求のコンテキストにおいて使用される。
【００８４】
・方位磁石、加速度計、ジャイロスコープ及び／又は移動速度データ、並びに移動体デバイス、ハンドヘルドデバイス又は自動車制御システム等の組み込みシステムからの他のセンサデータ。これは、リモートコントロールから機器及びゲームコンソールへのデバイス測位データを含む。
【００８５】
・グラフィカルユーザインタフェース（ＧＵＩ）を有するあらゆるデバイスにおけるＧＵＩからのクリック事象、メニュー選択事象及び他の事象。更なる例は、タッチスクリーンへのタッチを含む。
【００８６】
・アラームクロック、カレンダアラート、価格変更トリガ、場所トリガ及びサーバからデバイスへの押下通知等のセンサからの事象及び他のデータ駆動トリガ。
【００８７】
本明細書で説明する実施形態に対する入力は、ダイアログ及び要求履歴を含むユーザ対話履歴のコンテキストを更に含む。
【００８８】
インテリジェント自動アシスタント１００２により生成される種々の出力データ／情報の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【００８９】
・出力デバイス及び／又はデバイスのユーザインタフェースに直接送出されるテキスト出力
・電子メールを介してユーザに送出されるテキスト及び図形
・メッセージングサービスを介してユーザに送出されるテキスト及び図形
・音声出力。これは以下のうちの１つ以上（又はそれらの組み合わせ）を含む。
【００９０】
・合成音声
・サンプリング音声
・記録メッセージ
・写真、リッチテキスト、ビデオ、音及びハイパーリンクを含む情報のグラフィックレイアウト。例えば、ウェブブラウザでレンダリングされたコンテンツ。
【００９１】
・電源をオン又はオフにしたり、音を出したり、色を変更したり、振動させたり、あるいは照明を制御したりするなどデバイスに対する物理的行動を制御するためのアクチュエータ出力。
【００９２】
・マッピングアプリケーションの呼び出し、電話の音声ダイヤル、電子メール又はインスタントメッセージの送出、メディアの再生、カレンダ、タスクマネージャ及びメモアプリケーションへの入力、並びに他のアプリケーション等のデバイス上の他のアプリケーションの呼び出し。
【００９３】
・リモートカメラの動作、車椅子の制御、リモートスピーカでの音楽の再生及びリモートディスプレイでのビデオの再生等のデバイスにより接続又は制御されるデバイスに対する物理的行動を制御するためのアクチュエータ出力。
【００９４】
図１のインテリジェント自動アシスタント１００２は、実現される広範なインテリジェント自動アシスタントシステムの実施形態の一例であることが理解される。インテリジェント自動アシスタントシステムの他の実施形態（不図示）は、例えば図１のインテリジェント自動アシスタントシステムの実施形態の例において図示される構成要素／特徴と比較して、追加の構成要素／特徴、より少ない構成要素／特徴及び／又は異なる構成要素／特徴を含んでもよい。
【００９５】
ユーザ対話
図２を参照すると、インテリジェント自動アシスタント１００２の少なくとも１つの実施形態とユーザとの間の対話の一例が示される。図２の例は、ユーザが音声入力機構である入力デバイス１２０６を使用してインテリジェント自動アシスタント１００２に話しており、出力がスクロール可能な画面である出力デバイス１２０７に対するグラフィックレイアウトであることを仮定する。会話画面１０１Ａは、ユーザが言ったこと１０１Ｂ（「Ｉ'ｄ  ｌｉｋｅ  ａ  ｒｏｍａｎｔｉｃ  ｐｌａｃｅ  ｆｏｒ  Ｉｔａｌｉａｎ  ｆｏｏｄ  ｎｅａｒ  ｍｙ  ｏｆｆｉｃｅ（オフィスの近くでロマンティックなイタリアンフードの場所が好き）」）と、その結果の要約１０１Ｃ（「ＯＫ，  Ｉ  ｆｏｕｎｄ  ｔｈｅｓｅ  Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｗｈｉｃｈ  ｒｅｖｉｅｗｓ  ｓａｙ  ａｒｅ  ｒｏｍａｎｔｉｃ  ｃｌｏｓｅ  ｔｏ  ｙｏｕｒ  ｗｏｒｋ：（OK、あなたの職場近くでレビューでロマンティックと言われているイタリアンレストランを見つけました。）」）及び結果の集合１０１Ｄ（レストランのリストの最初の３つが表示される）であるアシスタント１００２の応答とを示す会話ユーザインタフェースを特徴とする。この例において、ユーザはリストの最初の結果をクリックし、結果が自動的に開いて情報画面１０１Ｅに示すレストランに関する更なる情報を見せる。情報画面１０１Ｅ及び会話画面１０１Ａは、タッチスクリーン又は他の表示装置等の同一の出力デバイスに表示される。すなわち、図２に示す例は同一の出力デバイスに対する２つの異なる出力状態である。
【００９６】
一実施形態において、情報画面１０１Ｅは、例えば以下のうちのいずれか又は全てを含む種々のサービスから収集され組み合わされた情報を示す。
【００９７】
・お店の住所及びジオロケーション（位置情報？）
・ユーザの現在地からの距離
・複数のソースからのレビュー
【００９８】
一実施形態において、情報画面１０１Ｅは、以下を含むアシスタント１００２がユーザのために提供するサービスのいくつかの例を更に含む。
・お店に電話をするためにダイヤルする（「発信」）
・将来参照するためにこのレストランを記憶する（「ｓａｖｅ（保存）」）
・このレストランに関する道順及び情報を誰かに電子メールで送出する（「ｓｈａｒｅ（共有）」）
・地図上にこのレストランの場所及び道順を表示する（「ｍａｐ  ｉｔ（地図で表示）」）
・このレストランに関する個人的なメモを保存する（「ｍｙ  ｎｏｔｅｓ（メモ）」）
【００９９】
図２の例に示すように、一実施形態において、アシスタント１００２は、例えば以下のような単純なデータベースアプリケーションを超えた知能を含む。
・単にキーワードではなく、自然言語での意図の表現１０１Ｂを処理する。
・その言語入力から意味的な意図を推測する。例えば、「ｐｌａｃｅ  ｆｏｒ  Ｉｔａｌｉａｎ  ｆｏｏｄ（イタリアンフードの場所）」を「Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ（イタリアンレストラン）」と解釈する。
・意味的な意図をオンラインサービスを使用する戦略にして動作可能にし、その戦略をユーザのために実行する（例えば、ロマンティックな場所という希望を、場所を「ｒｏｍａｎｔｉｃ（ロマンティック）」と説明するレビューをオンラインレビューサイトでチェックする戦略にして動作可能にする）。
インテリジェント自動アシスタント構成要素
【０１００】
種々の実施形態によると、インテリジェント自動アシスタント１００２は、複数の種々の構成要素、デバイス、モジュール、処理及びシステム等を含み、これらは、例えばハードウェア及び／又はハードウェアとソフトウェアとの組み合わせを使用して実現及び／又はインスタンス化される。例えば図１の実施形態の例に示すように、アシスタント１００２は以下の種類のシステム、構成要素、デバイス及び処理等（あるいは、それらの組み合わせ）のうちの１つ以上を含む。
【０１０１】
・１つ以上のアクティブオントロジ１０５０
・能動的入力導出構成要素１０９４（クライアント部分１０９４ａ及びサーバ部分１０９４ｂを含む）
・短期個人メモリ構成要素１０５２（マスタバージョン１０５２ｂ及びキャッシュ１０５２ａを含む）
・長期個人メモリ構成要素１０５４（マスタバージョン１０５４ｂ及びキャッシュ１０５４ａを含む）
・ドメインモデル構成要素１０５６
・用語集構成要素１０５８（完全な用語集１０５８ｂ及び部分集合１０５８ａを含む）
・言語パターン認識器構成要素１０６０（フルライブラリ１０６０ｂ及び部分集合１５６０ａを含む）
・言語インタプリタ構成要素１０７０
・ドメインエンティティデータベース１０７２
・ダイアログフロープロセッサ構成要素１０８０
・サービスオーケストレーション構成要素１０８２
・サービス構成要素１０８４
・タスクフローモデル構成要素１０８６
・ダイアログフローモデル構成要素１０８７
・サービスモデル構成要素１０８８
・出力プロセッサ構成要素１０９０
【０１０２】
図７と関連して説明するように、特定のクライアント／サーバを用いた実施形態において、これら構成要素の一部又は全てはクライアント１３０４とサーバ１３４０との間で分散される。
【０１０３】
次に、例示する目的で、インテリジェント自動アシスタント１００２の特定の一実施形態の例の種々の構成要素の少なくとも一部分について、図１のインテリジェント自動アシスタント１００２の実施形態の例を参照して更に詳細に説明する。
【０１０４】
アクティブオントロジ１０５０
アクティブオントロジ１０５０は、モデル、構成要素及び／又はインテリジェント自動アシスタント１００２の実施形態の他の部分からのデータを統合する統一インフラストラクチャとして動作する。コンピュータ及び情報科学の分野において、オントロジは、クラス／種類、関係、属性／特性及びインスタンスにおけるそれらのインスタンス化等のデータ及び知識表現に対する構造を提供する。例えばオントロジは、データ及び知識のモデルを構築するために使用される。インテリジェント自動アシスタント１００２のいくつかの実施形態において、オントロジは、ドメインモデル等のモデルを構築するためのモデル化フレームワークの一部である。
【０１０５】
本発明の状況において、「アクティブオントロジ」１０５０は、別個の処理要素がオントロジのように構成される実行環境として動作する（例えば、別個の属性及び他の処理要素との関係を有する）。これらの処理要素は、インテリジェント自動アシスタント１００２のタスクの少なくとも一部を実行する。アクティブオントロジ１０５０はいくつでも提供できる。
【０１０６】
少なくとも１つの実施形態において、アクティブオントロジ１０５０は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０１０７】
・モデル化及び開発環境として動作し、種々のモデル及びデータ構成要素からのモデル及びデータを統合する。これは以下を含むが、それらに限定されない。
・ドメインモデル１０５６
・用語集１０５８
・ドメインエンティティデータベース１０７２
・タスクフローモデル１０８６
・ダイアログフローモデル１０８７
・サービス機能モデル１０８８
【０１０８】
・オントロジを用いた編集ツールが新しいモデル、データ構造、データベーススキーマ及び表現を開発するように動作するデータモデル化環境として動作する。
【０１０９】
・ライブ実行環境として動作し、ドメイン１０５６、タスク１０８６及び／又はダイアログモデル１０８７の要素、言語パターン認識器、並びに／あるいは用語集１０５８に対する値と、短期個人メモリ１０５２、長期個人メモリ１０５４及び／又はサービスオーケストレーション１１８２の結果において見つけられるようなユーザ別の情報とをインスタンス化する。例えばアクティブオントロジのいくつかのノードは、レストラン及びその特性であるレストラン名等のドメイン概念に対応する。ライブ実行中、これらのアクティブオントロジノードは、特定のレストランエンティティの一致及びその名前と、その名前が自然言語入力発話における単語に対応する方法とによりインスタンス化される。従って、本実施形態において、アクティブオントロジは、レストランが名前を有する一致を含むエンティティであるという概念を指定し、自然言語の構文解析及びエンティティデータベースのデータとそれらモデル化ノードとの動的な結合を格納するモデル化環境として動作している。
【０１１０】
・例えば以下のうちの１つ以上（又はそれらの組み合わせ）等のインテリジェント自動アシスタントの構成要素及び処理要素の間での通信及び連携を可能にする。
・能動的入力導出構成要素１０９４
・言語インタプリタ構成要素１０７０
・ダイアログフロープロセッサ構成要素１０８０
・サービスオーケストレーション構成要素１０８２
・サービス構成要素１０８４
【０１１１】
一実施形態において、本明細書で説明するアクティブオントロジ１０５０の機能、動作、行動及び／又は他の特徴の少なくとも一部分は、２００６年９月８日に出願された米国特許出願第１１／５１８，２９２号公報「インテリジェント自動アシスタントの構築のための方法及び装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒｒａｔｕｓ  ｆｏｒ  Ｂｕｉｌｄｉｎｇ  ａｎ  Ｉｎｅｔｌｌｉｇｅｎｔ  Ａｕｔｏｍａｔｅｄ  Ａｓｓｉｓｔａｎｔ）」において説明される種々の方法及び装置を使用して少なくとも部分的に実現される。
【０１１２】
少なくとも１つの実施形態において、アクティブオントロジ１０５０の所定のインスタンスは、１つ以上の関連データベースの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。アクティブオントロジ１０５０によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むが、それらに限定されない。
【０１１３】
・インテリジェント自動アシスタント１００２の１つ以上の構成要素から入手可能である静的データ。
【０１１４】
・ユーザセッション毎に動的にインスタンス化され、例えばインテリジェント自動アシスタント１００２の構成要素間でやり取りされるユーザ別の入力及び出力の状態、短期個人メモリのコンテンツ及びユーザセッションの先の状態から行われる推論等を維持するがそれらに限定されないデータ。
【０１１５】
このように、アクティブオントロジ１０５０は、インテリジェント自動アシスタント１００２における種々の構成要素の要素を統一するために使用される。アクティブオントロジ１０５０により、文書作成者、設計者又はシステム構築者は、１つの構成要素の要素が他の構成要素の要素により識別されるように構成要素を統合できる。従って、文書作成者、設計者又はシステム構築者は、構成要素をより簡単に組み合わせて統合できる。
【０１１６】
次に図８を参照すると、一実施形態に従ってアクティブオントロジ１０５０の一部の一例が示される。この例は、アクティブオントロジ１０５０により提供される種々の機能、動作、行動及び／又は他の特徴の一部を容易に例示することを意図する。
【０１１７】
図８のアクティブオントロジ１０５０は、レストラン及び食事事象の表現を含む。この例において、レストランは、名前１６１２、提供料理１６１５及び場所１６１３等の特性を含む概念１６１０であり、これは、住所１６１４に対する特性を有する構造化ノードとしてモデル化される。食事事象の概念は、ダイニングパーティ１６１７（サイズ１６１９を有する）及び期間１６１８を含むノード１６１６としてモデル化される。
【０１１８】
・アクティブオントロジは、ドメインモデル１０５６を含み且つ／又は参照する。例えば図８は、レストラン概念１６１０及び食事事象概念１６１６にリンクされる外食ドメインモデル１６２２を示す。このインスタンスにおいて、アクティブオントロジ１０５０は、外食ドメインモデル１６２２を含み、特にアクティブオントロジ１０５０の少なくとも２つのノード、すなわちレストラン１６１０及び食事事象１６１６は、外食ドメインモデル１６２２に含まれ且つ／又は参照される。このドメインモデルは、特に外食がレストランで発生する食事事象を含むという観念を表す。アクティブオントロジのレストラン１６１０及び食事事象１６１６のノードは、図８の点線で示されるように、インテリジェント自動アシスタントの他の構成要素に更に含まれ且つ／又は参照される。
【０１１９】
・アクティブオントロジは、タスクフローモデル１０８６を含み且つ／又は参照する。例えば図８は、ドメイン別の事象の種類、すなわち食事事象１６１６に適用されるドメインに依存しない事象の計画をモデル化する事象計画タスクフローモデル１６３０を示す。ここでは、アクティブオントロジ１０５０は、一般的な事象計画タスクフローモデル１６３０を含み、このモデルは、事象を表すノード及びそれら事象を計画する際に含まれる他の概念を含む。アクティブオントロジ１０５０は、特定の種類の事象である食事事象１６１６のノードを更に含む。この例において、食事事象１６１６は、ドメインモデル１６２２及びタスクフローモデル１６３０に含まれるか又は参照され、これらモデルの双方は、アクティブオントロジ１０５０に含まれ且つ／又は参照される。ここでも、食事事象１６１６は、図８の点線で示されるように、インテリジェント自動アシスタントの他の構成要素に含まれ且つ／又は参照される種々の構成要素の要素を統一する。
【０１２０】
・アクティブオントロジは、ダイアログフローモデル１０８７を含み且つ／又は参照する。例えば図８は、概念１６１９で表されるような制約パーティサイズでインスタンス化されるトランザクションに必要な制約の値を得るためのダイアログフローモデル１６４２を示す。ここでも、アクティブオントロジ１０５０は、ダイアログフローモデル１０８７等の種々の構成要素を関連付け且つ統一するためのフレームワークを提供する。この場合、ダイアログフローモデル１６４２は、アクティブオントロジのパーティサイズ１６１９のノードに対してこの特定の例においてインスタンス化される制約の一般的な概念を有する。この特定のダイアログフローモデル１６４２は、ドメインに依存せずに制約の抽象的概念で動作する。アクティブオントロジ１０５０は、食事事象ノード１６１６に関連するパーティノード１６１７のパーティサイズ特性１６１９を表す。そのような一実施形態において、インテリジェント自動アシスタント１００２は、アクティブオントロジ１０５０を使用して、外食に対するドメインモデル１６２２の一部である食事事象概念１６１６を表すノードのクラスタの一部であるパーティサイズ１６１９の特性とダイアログフローモデル１６４２における制約の概念とを統一する。
【０１２１】
・アクティブオントロジは、サービスモデル１０８８を含み且つ／又は参照する。例えば図８は、トランザクションを実行するためにレストラン予約サービス１６７２に必要とされる値を得るためのダイアログフローステップと関連付けられたレストラン予約サービスのモデルを示す。このインスタンスにおいて、レストラン予約サービスに対するサービスモデル１６７２は、予約がパーティサイズ１６１９に対する値（予約するテーブルに座る人数）を必要とすることを指定する。アクティブオントロジ１０５０の一部である概念のパーティサイズ１６１９は、トランザクションに対する制約に関してユーザに尋ねる一般的なダイアログフローモデル１６４２にリンクされるか又は関連付けられる。このインスタンスにおいて、パーティサイズは、ダイアログフローモデル１６４２に対する要求される制約である。
【０１２２】
・アクティブオントロジは、ドメインエンティティデータベース１０７２を含み且つ／又は参照する。例えば図８は、アクティブオントロジ１０５０のレストランノード１６１０に関連付けられたレストラン１６５２のドメインエンティティデータベースを示す。アクティブオントロジ１０５０は、インテリジェント自動アシスタント１００２の種々の構成要素により使用されるようなレストラン１６１０の一般的な概念を表し、これは、レストランデータベース１６５２の特定のレストランに関するデータによりインスタンス化される。
【０１２３】
・アクティブオントロジは、用語集データベース１０５８を含み且つ／又は参照する。例えば図８は、Ｉｔａｌｉａｎ（イタリアン）及びＦｒｅｎｃｈ（フレンチ）等の料理１６６２と、「Ｆｒｅｎｃｈ（フレンチ）」、「ｃｏｎｔｉｎｅｎｔａｌ（コンチネンタル）」及び「ｐｒｏｖｉｎｃｉａｌ（地方料理）」等の各料理と関連付けられる単語との用語集データベースを示す。アクティブオントロジ１０５０は、提供料理ノード１６１５に関連するレストランノード１６１０を含み、提供料理ノード１６１５は、料理データベース１６６２の表現と関連付けられる。「Ｆｒｅｎｃｈ」等の料理に対するデータベース１６６２中の特定のエントリは、提供料理１６１５の概念のインスタンスとしてアクティブオントロジ１０５０を介して関連付けられる。
【０１２４】
・アクティブオントロジは、オントロジ１０５０における概念又は他の表現にマッピングされるあらゆるデータベースを含み且つ／又は参照する。ドメインエンティティデータベース１０７２及び用語集データベース１０５８は、アクティブオントロジ１０５０がデータベースを互いに統合し且つ自動アシスタント１００２の他の構成要素と統合する方法の単なる２つの例である。アクティブオントロジにより、文書作成者、設計者又はシステム構築者は、データベースにおける表現とオントロジ１０５０における表現との間の自明でないマッピングを指定できる。例えばレストランデータベース１６５２に対するデータベーススキーマは、文字列及び数字のテーブルとして、あるいはビジネスのより大きなデータベースからの映像として、あるいはデータベース１６５２に適するあらゆる他の表現としてレストランを表す。このアクティブオントロジ１０５０の例において、レストラン１６１０は、データベーステーブルとは異なる方法で編成された特性及び関係を有する概念ノードである。この例において、オントロジ１０５０のノードは、データベーススキーマの要素と関連付けられる。データベース及びオントロジ１０５０の統合により、アクティブオントロジ１０５０のモデル及びデータのより大きい集合に関してデータベースの特定のデータエントリを解釈し且つそれに作用するための統一表現を提供する。例えば単語「Ｆｒｅｎｃｈ」は、料理データベース１６６２のエントリであってもよい。この例において、データベース１６６２がアクティブオントロジ１０５０において統合されるため、同一の単語「Ｆｒｅｎｃｈ」はレストランにおいて提供される可能な料理としての解釈も有し、これは食事事象を計画する際に関係し、この料理はレストラン予約サービス等を使用する時に使用する制約としての役割を有する。アクティブオントロジは、自動アシスタント１００２の他の構成要素と相互に動作するようにデータベースをモデル化及び実行環境に統合する。
【０１２５】
上述したように、アクティブオントロジ１０５０により、文書作成者、設計者又はシステム構築者は、構成要素を統合できる。従って、図８の例において、ダイアログフローモデル１６４２における制約等の構成要素の要素は、レストラン予約サービス１６７２の必要とされるパラメータ等の他の構成要素の要素により識別される。
【０１２６】
アクティブオントロジ１０５０は、例えばモデル、データベース及び構成要素の間の関係が以下のいずれかであるようなモデル、データベース及び構成要素の構成として具体化される。
・コンテナ関係及び／又は含有
・リンク及び／又はポインタとの関係
・プログラム内及びプログラム間のＡＰＩを介するインタフェース
【０１２７】
例えば図９を参照すると、インテリジェント自動アシスタントシステム１００２の別の実施形態の一例が示される。ここで、ドメインモデル１０５６、用語集１０５８、言語パターン認識器１０６０、短期個人メモリ１０５２及び長期個人メモリ１０５４の構成要素はアクティブオントロジ１０５０と関連付けられた共通のコンテナの下で編成され、能動的入力導出構成要素１０９４、言語インタプリタ１０７０及びダイアログフロープロセッサ１０８０等の他の構成要素は、ＡＰＩ関係を介してアクティブオントロジ１０５０と関連付けられる。
【０１２８】
能動的入力導出構成要素１０９４
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４（これは、上述したように、スタンドアロン構成又はサーバ及びクライアント構成要素を含む構成において実現される）は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０１２９】
・ユーザ又はユーザの環境からの入力、並びに／あるいは要望又は要求に関する情報を導出し、容易にし且つ／又は処理する。例えばユーザがレストランを見つけるために調べている場合、入力導出モジュールは、場所、時間、料理及び価格等に対するユーザの制約又は嗜好に関する情報を得る。
【０１３０】
・例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々のソースからの種々の入力を容易にする。
・キーボード又はテキストを生成するあらゆる他の入力デバイスからの入力
・部分的な入力の提案された動的な補完を提供するユーザインタフェースにおけるキーボードからの入力
・音声入力システムからの入力
・ユーザが選択肢を示すためにグラフィックオブジェクトをクリック、選択又は直接操作するグラフィカルユーザインタフェース（ＧＵＩ）からの入力
・電子メール、テキストメッセージング又は他のテキスト通信プラットフォームを含むテキストを生成し且つそれを自動アシスタントに送出する他のアプリケーションからの入力
【０１３１】
能動的入力導出を実行することにより、アシスタント１００２は、入力処理の初期段階で意図の曖昧性を除去できる。例えば入力が音声で提供される一実施形態において、波形はサーバ１３４０に送出され、サーバ１３４０において、用語が抽出され且つ意味的解釈が行われる。そのような意味的解釈の結果は、能動的入力導出を駆動するために使用され、意味的な適合度及び音声上の一致に基づいて選択できる別の候補単語をユーザに提供する。
【０１３２】
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４は、アシスタント１００２の実施形態により提供される１つ以上のサービスにより作用される入力にユーザを能動的、自動的且つ動的に誘導する。次に図１０を参照すると、一実施形態に従って能動的入力導出構成要素１０９４に対する動作方法を示すフローチャートが示される。
【０１３３】
手順が開始する（２０）。ステップ２１において、アシスタント１００２は、１つ以上の入力チャネルにおいてインタフェースを提供する。例えばユーザインタフェースは、会話による対話のいずれかの段階において、話すユーザオプション、タイプするユーザオプション又はタップするユーザオプションを提供する。ステップ２２において、ユーザは、音声の記録を開始するボタンを押下したり、又はタイプするためのインタフェースを表示したりするなど、１つのモダリティにおける入力を開始することにより入力チャネルを選択する。
【０１３４】
少なくとも１つの実施形態において、アシスタント１００２は、選択したモダリティに対するデフォルトの提案を提供する（２３）。すなわち、アシスタント１００２は、ユーザがそのモダリティにおけるいずれかの入力を入力する前に現在のコンテキストにおいて関連するオプション２４を提供する。例えば、テキスト入力モダリティにおいて、アシスタント１００２は、例えば命令形の動詞（例えば、ｆｉｎｄ（検索）、ｂｕｙ（購入）、ｒｅｓｅｒｖｅ（予約）、ｇｅｔ（取得）、ｃａｌｌ（発信）、ｃｈｅｃｋ（確認）及びｓｃｈｅｄｕｌｅ（計画）等）、名詞、（例えば、ｒｅｓｔａｕｒａｎｔｓ（レストラン）、ｍｏｖｉｅｓ（映画）、ｅｖｅｎｔｓ（イベント）及びｂｕｓｉｎｅｓｓｅｓ（ビジネス）等）、あるいは会話のドメインに名前をつけるメニューのようなオプション（例えば、ｗｅａｔｈｅｒ（天気）、ｓｐｏｒｔｓ（スポーツ）及びｎｅｗｓ（ニュース）等）のうちの１つ以上等のテキストの要求又はコマンドを開始する共通の単語のリストを提供する。
【０１３５】
ユーザが２５においてデフォルトのオプションのうちの１つを選択し、自動サブミットに対する嗜好が設定される（３０）場合、手順は即座に戻る。これは、従来のメニュー選択の動作に類似する。
【０１３６】
しかし、初期オプションは部分的な入力として取り入れられるか、あるいはユーザは部分的な入力の入力を開始している（２６）。少なくとも一実施形態において、ユーザは、入力のいずれかの時点において、部分的な入力が完了していること（２２）示すことを選択し、それにより手順は戻る。
【０１３７】
２８において、選択されたか入力されたかに関係なく、最新の入力は累積入力に追加される。
【０１３８】
２９において、システムは、関連し且つ／又は有意義な入力を構成するものに対する制約の他のソース及び現在の入力を仮定して、関連する次の可能な入力を提案する。
【０１３９】
少なくとも１つの実施形態において、ユーザ入力に対する制約のソース（例えば、ステップ２３及び２９において使用される）は、アシスタント１００２に含まれる種々のモデル及びデータソースのうちの１つ以上であり、これらは、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０１４０】
・用語集１０５８。例えば、現在の入力に一致する単語又は句が提案される。少なくとも１つの実施形態において、用語集は、アクティブオントロジ、ドメインモデル、タスクモデル、ダイアログモデル及び／又はサービスモデルのうちのいずれか１つ以上のノードと関連付けられる。
【０１４１】
・ドメインモデルをインスタンス化するか又はドメインモデルと整合性のある入力を制約するドメインモデル１０５６。例えば少なくとも１つの実施形態において、ドメインモデル１０５６は、現在の入力と整合性のある概念、関係、特性及び／又はインスタンスを提案するために使用される。
【０１４２】
・現在の入力における成句、句、文法構成又は他のパターンを認識するために使用され、パターンを完全にする補完を提案するために使用される言語パターン認識器１０６０。
【０１４３】
・入力（例えば、ビジネス名、映画名及びイベント名等）に一致するドメインの可能なエンティティを提案するために使用されるドメインエンティティデータベース１０７２。
【０１４４】
・先の入力又は先の入力の一部分、並びに／あるいはユーザとの対話の履歴に関するあらゆる他の特性又は事実をマッチングするために使用される短期メモリ１０５２。例えば部分的な入力は、仮想的（例えば、クエリで示される）及び／又は物理的（例えば、場所センサから判定されるように）であるか否かに関わらずセッション中にユーザが移動した都市とマッチングされる。
【０１４５】
・少なくとも１つの実施形態において、最近の入力、要求又は結果の意味的な言い換えは、現在の入力とマッチングされる。例えばユーザが「ｌｉｖｅ  ｍｕｓｉｃ（ライブ音楽）」を以前に要求してコンサートリストを取得しており、且つ能動的入力導出環境において「ｍｕｓｉｃ（音楽）」をタイプした場合、提案は「ｌｉｖｅ  ｍｕｓｉｃ」及び／又は「ｃｏｎｃｅｒｔｓ（コンサート）」を含む。
【０１４６】
・長期メモリからの一致するアイテムを提案するために使用される長期個人メモリ１０５４。そのような一致するアイテムは、例えば、保存されるドメインエンティティ（例えば、「お気に入りの」レストラン、映画、劇場及び場所等）、ｔｏ−ｄｏ（なすべきこと）アイテム、リストアイテム、カレンダエントリ、連絡先／電話帳における人の名前、並びに連絡先／電話帳において示される道路名又は都市名等のうちの１つ以上又はそれらの組み合わせを含む。
【０１４７】
・タスクフローにおける次の可能なステップに基づいて入力を提案するために使用されるタスクフローモデル１０８６。
【０１４８】
・ダイアログフローにおける次の可能なステップに基づいて入力を提案するために使用されるダイアログフローモデル１０８７。
【０１４９】
・名前、カテゴリ、機能又はモデルにおけるあらゆる他の特性により採用する可能なサービスを提案するために使用されるサービス機能モデル１０８８。例えば、ユーザは好適なレビューサイト名の一部をタイプし、アシスタント１００２は、レビューのためのレビューサイトをクエリするための完全なコマンドを提案する。
【０１５０】
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４は、会話インタフェース、例えばユーザ及びアシスタントが会話のように相互に発話することにより通信するインタフェースをユーザに提示する。能動的入力導出構成要素１０９４は、種々の会話インタフェースを実行及び／又は実現するように動作可能である。
【０１５１】
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４は、アシスタント１００２がダイアログモデルに従ってユーザからの情報を入力指示するために複数回の会話のやり取りを使用する種々の会話インタフェースを実行及び／又は実現するように動作可能である。ダイアログモデルは、例えばサービスを実行するのに必要な情報を導出するのに必要とされる一連のステップ等のダイアログを実行する手順を表す。
【０１５２】
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４は、ユーザのタイプ中、話し中又は入力作成中に制約及びガイダンスをユーザにリアルタイムで提供する。例えば能動的導出は、アシスタント１００２の一実施形態により認識可能であり且つ／又はアシスタント１００２の実施形態により提供される１つ以上のサービスによりサービスが提供されるテキスト入力をタイプするようにユーザを誘導する。これは、ユーザの労力が有用である可能性のある入力に集中することを可能にし、且つ／又はユーザが入力している時にアシスタント１００２の実施形態が入力の解釈をリアルタイムで適用することを可能にするため、ユーザからの制約のない入力を受動的に待つより有利である。
【０１５３】
本明細書で説明する能動的入力導出の機能、動作、行動及び／又は他の特徴の少なくとも一部分は、２００６年９月８日に出願された米国特許出願第１１／５１８，２９２号「インテリジェント自動アシスタントの構築のための方法及び装置（Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｂｕｉｌｄｉｎｇ  ａｎ  Ｉｎｔｅｌｌｉｇｅｎｔ  Ａｕｔｏｍａｔｅｄ  Ａｓｓｉｓｔａｎｔ）」において説明される種々の方法及び装置を使用して少なくとも部分的に実現される。
【０１５４】
特定の実施形態によると、能動的入力導出構成要素１０９４の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。
【０１５５】
種々の実施形態によると、能動的入力導出構成要素１０９４の１つ以上の異なるスレッド又はインスタンスは、能動的入力導出構成要素１０９４の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。能動的入力導出構成要素１０９４の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガする条件又は事象の種々の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０１５６】
・ユーザセッションの開始。例えばユーザセッションがアシスタント１００２の一実施形態であるアプリケーションを開始する場合、インタフェースは、例えば音声入力システムを開始するためにボタンを押下するか又はテキスト入力セッションを開始するためにテキストフィールドをクリックすることにより、ユーザが入力を開始する機会を提供する。
・検出されたユーザ入力。
・アシスタント１００２が質問に対する応答を要求するか又は選択する次のステップのメニューを提供する時のような、アシスタント１００２がユーザに入力を明示的に指示する時。
・アシスタント１００２が、ユーザがトランザクションを実行するのを容易にしており、例えばフォームに入力するなど、そのトランザクションのためのデータを収集している時。
【０１５７】
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。能動的入力導出構成要素１０９４によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０１５８】
・テキスト入力において使用する可能な単語のデータベース
・テキスト入力会話において使用する可能な句の文法
・音声入力の可能な解釈のデータベース
・ユーザ又は他のユーザからの先の入力のデータベース
・アシスタント１００２の実施形態の一部である種々のモデル及びデータソースのいずれかからのデータ。これは以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０１５９】
・ドメインモデル１０５６
・用語集１０５８
・言語パターン認識器１０６０
・ドメインエンティティデータベース１０７２
・短期メモリ１０５２
・長期個人メモリ１０５４
・タスクフローモデル１０８６
・ダイアログフローモデル１０８７
・サービス機能モデル１０８８
【０１６０】
種々の実施形態によると、能動的入力導出構成要素１０９４は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）に対して能動的導出手順を適用する。
・タイプされた入力
・音声入力
・ジェスチャを含むグラフィカルユーザインタフェース（ＧＵＩ）からの入力
・ダイアログにおいて提供された提案からの入力
・計算及び／又は検出環境からの事象
【０１６１】
能動的タイプ入力導出
図１１を参照すると、一実施形態に従って能動的タイプ入力導出の方法を示すフローチャートが示される。
【０１６２】
方法が開始される（１１０）。アシスタント１００２は、例えば入力デバイス１２０６を介して部分的なテキスト入力を受信する（１１１）。部分的なテキスト入力は、例えばそれまでにテキスト入力フィールドにタイプされた文字を含む。ユーザは、例えばＥｎｔｅｒキーを押下することにより、タイプ入力が完了していることをいかなる時点で示してもよい（１１２）。完了していない場合、提案生成器は、候補提案１１６を生成する（１１４）。これらの提案は、本明細書で説明する情報源又は制約のいずれかに基づく構文的な提案、意味的な提案及び／又は他の種類の提案である。提案が選択される場合（１１８）、入力は選択された提案を含むように変換される（１１７）。
【０１６３】
少なくとも１つの実施形態において、提案は現在の入力に対する拡張を含む。例えば「ｒｅｓｔ」に対する提案は「ｒｅｓｔａｕｒａｎｔｓ」である。
【０１６４】
少なくとも１つの実施形態において、提案は現在の入力の部分の置き換えを含む。例えば、「ｒｅｓｔ」に対する提案は「ｐｌａｃｅｓ  ｔｏ  ｅａｔ（食事をする場所）」である。
【０１６５】
少なくとも１つの実施形態において、提案は現在の入力の部分の置き換え及び言い換えを含む。例えば現在の入力が「ｆｉｎｄ  ｒｅｓｔａｕｒａｎｔｓ  ｏｆ  ｓｔｙｌｅ」である場合、提案は「ｉｔａｌｉａｎ」であり、その提案が選択される場合、入力全体は「ｆｉｎｄ  Ｉｎｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ」と書き換えられる。
【０１６６】
少なくとも１つの実施形態において、結果として得られる返される入力は、１１８で行われた選択に関する情報がテキスト入力と共に保存されるように注釈をつけられる（１１９）。これにより、例えば文字列の基礎となる意味的な概念又はエンティティが返された時にその文字列と関連付けられることが可能になり、その後の言語の解釈の精度が向上する。
【０１６７】
図１２〜図２１を参照すると、一実施形態に係る能動的タイプ入力導出のいくつかの手順のいくつかの部分を示すスクリーンショットが示される。スクリーンショットは、カリフォルニア州クパチーノのアップル・インコーポレイテッドにより市販されているｉＰｈｏｎｅ等のスマートフォンで実現されるようなアシスタント１００２の一実施形態の一例を示す。入力は、オンスクリーンキーボード機能性を含むタッチスクリーンを介してそのようなデバイスに提供される。スクリーンショットは単なる例示である一実施形態を示し、本発明の技術は他のレイアウト及び構成を使用して他のデバイスにおいて実現されることが当業者には理解されるだろう。
【０１６８】
図１２において、画面１２０１は、フィールド１２０３に入力が提供されていない時に示される最上位レベルの提案の集合１２０２を含む。これは、入力のない場合に図１１のステップ１１４に適用される図１０の入力のないステップ２３に対応する。
【０１６９】
図１３において、画面１３０１は、オンスクリーンキーボード１３０４を使用してフィールド１２０３に入力された部分的なユーザ入力１３０５の提案された補完１３０３を提供するために用語集を使用する一例を示す。これらの提案された補完１３０３は、能動的入力導出１０９４の機能の一部である。ユーザは文字列「ｃｏｍｍ」を含む部分的なユーザ入力１３０５を入力している。用語集構成要素１０５８は、提案された補完１３０３として一覧表示される３つの異なる種類のインスタンスへのこの文字列のマッピングを提供している。句「ｃｏｍｍｕｎｉｔｙ＆ｌｏｃａｌ  ｅｖｅｎｔｓ」は事象ドメインのカテゴリであり、「ｃｈａｍｂｅｒｓ  ｏｆ  ｃｏｍｍｅｒｃｅ」はローカルビジネス探索ドメインのカテゴリであり、「Ｊｅｗｉｓｈ  Ｃｏｍｍｕｎｉｔｙ  Ｃｅｎｔｅｒ」はローカルビジネスのインスタンス名である。用語集構成要素１０５８は、データ参照及びこれらのような名前空間の管理を提供する。ユーザは、入力を入力することを終了したことを示すためにＧｏボタン１３０６をタップできる。これにより、アシスタント１００２は、ユーザ入力の単位として補完されたテキスト列に進む。
【０１７０】
図１４において、画面１４０１は、部分文字列「ｗｈ」１３０５に対する提案された意味的な補完１３０３がタイプされたパラメータを有する句全体を含む一例を示す。これらの種類の提案は、本明細書で説明する入力制約の種々のモデル及びソースの１つ以上を使用することにより可能になる。例えば図１４に示す一実施形態において、「ｗｈａｔ  ｉｓ  ｈａｐｐｅｎｉｎｇ  ｉｎ  ｃｉｔｙ」は、ローカル事象ドメインの場所パラメータの能動的導出である。「ｗｈｅｒｅ  ｉｓ  ｂｕｓｉｎｅｓｓ  ｎａｍｅ」は、ローカルビジネス探索ドメインのビジネス名の能動的導出である。「ｗｈａｔ  ｉｓ  ｓｈｏｗｉｎｇ  ａｔ  ｔｈｅ  ｖｅｎｕｅ  ｎａｍｅ」は、ローカル事象ドメインの場所名の制約の能動的導出である。「ｗｈａｔ  ｉｓ  ｐｌａｙｉｎｇ  ａｔ  ｔｈｅ  ｍｏｖｉｅ  ｔｈｅａｔｅｒ」は、ローカル事象ドメインの映画館名の制約の能動的導出である。これらの例は、提案された補完が先に入力されたクエリのデータベースから単純に得られるのではなくモデルにより生成されることを示す。
【０１７１】
図１５において、画面１５０１は、ユーザが追加のテキスト１３０５をフィールド１２０３に入力した後の同一の例の続きを示す。提案された補完１３０３は、追加のテキスト１３０５に一致するように更新される。この例において、ドメインエンティティデータベース１０７２からのデータが使用された。すなわち、名前が「ｆ」で開始する場所が使用された。尚、これは、「ｆ」で開始する全ての単語ではなく、意味的により関係する非常に小さい提案の集合である。ここでも、提案はこの例においては場所において起こるローカル事象を表すドメインモデルであるモデルを適用することにより生成され、それらは名前を有するビジネスである。提案は、ローカル事象サービスを使用する時に潜在的に有意義なエントリを作成する入力を能動的に導出する。
【０１７２】
図１６において、画面１６０１は、ユーザが提案された補完１３０３のうちの１つを選択した後の同一の例の続きを示す。能動的な導出は、所望の情報の種類を更に指定するようにユーザに入力指示することにより、ここではユーザが選択できる多くの修飾子１６０２を提示することにより継続する。この例において、これらの修飾子は、ドメイン、タスクフロー及びダイアログフローモデルにより生成される。ドメインはローカル事象であり、これはその場所でその日に行われ且つ事象名及び主演者を有する事象のカテゴリを含む。本実施形態において、これらの５つのオプションがユーザに提供されるという事実は、ユーザがまだ入力されていない制約を要求すべきであることを示すダイアログフローモデルから及びこれら５つの制約がアシスタントの利用可能なローカル事象サービスに対するパラメータであることを示すサービスモデルから生成される。「ｂｙ  ｃａｔｅｇｏｒｙ」及び「ｆｅａｔｕｒｅｄ」等の修飾子として使用するのに好適な句の選択肢も、ドメイン単語集データベースから生成される。
【０１７３】
図１７において、画面１７０１は、ユーザが修飾子１６０２のうちの１つを選択した後の同一の例の続きを示す。
【０１７４】
図１８において、画面１８０１は、選択された修飾子１６０２がフィールド１２０３に追加され且つ追加の修飾子１６０２が提示される同一の例の続きを示す。ユーザは、修飾子１６０２のうちの１つを選択し且つ／又はキーボード１３０４を介して追加のテキスト入力を提供できる。
【０１７５】
図１９において、画面１９０１は、選択された修飾子１６０２がフィールド１２０３に追加され且つ更なる修飾子１６０２が提示される同一の例の続きを示す。この例において、先に入力された制約は、重複して能動的に導出されない。
【０１７６】
図２０において、画面２００１は、ユーザがＧｏボタン１３０６をタップした場合の同一の例の続きを示す。ユーザの入力をボックス２００２に示し、メッセージをボックス２０３に示し、ユーザの入力に応答して実行されているクエリに関してユーザにフィードバックを提供する。
【０１７７】
図２１において、画面２１０１は、結果が見つけられた場合の同一の例の続きを示す。メッセージをボックス２１０２に示す。結果２１０３は、ユーザが更なる詳細を閲覧したり、識別されたイベントを保存したり、チケットを購入したり、メモを追加したりできるようにする入力要素を含む。
【０１７８】
１つの画面２１０１において、他の表示された画面がスクロール可能であり、これにより、ユーザは、画面２００１又は前に提示された他の画面を見るために上方向にスクロールし、要望に応じてクエリに変更を行うことができる。
【０１７９】
能動的音声入力導出
図２２を参照すると、一実施形態に従って音声入力に対する能動的入力導出の方法を示すフローチャートが示される。
【０１８０】
方法が開始される（２２１）。アシスタント１００２は、可聴信号の形態で音声入力を受信する（１２１）。音声−テキストサービス１２２又はプロセッサは、可聴信号の候補テキスト解釈１２４の集合を生成する。一実施形態において、音声−テキストサービス１２２は、例えばＢｕｒｌｉｎｇｔｏｎ、ＭＡのＮｕａｎｃｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ，Ｉｎｃ．により市販されているＮｕａｎｃｅ  Ｒｅｃｏｇｎｉｚｅｒを使用して実現される。
【０１８１】
一実施形態において、アシスタント１００２は、音声入力１２１の候補テキスト解釈１２４を生成するために統計言語モデルを採用する。
【０１８２】
更に一実施形態において、統計言語モデルは、図８に示すアシスタント１００２の種々のモデルにおいて発生する単語、名前及び句を探すために調整される。例えば少なくとも１つの実施形態において、統計言語モデルは、ドメインモデル１０５６（例えば、レストラン及び食事事象に関連する単語及び句）、タスクフローモデル１０８６（例えば、事象を計画することに関連する単語及び句）、ダイアログフローモデル１０８７（例えば、レストラン予約に対する入力を収集するのに必要な制約に関連する単語及び句）、ドメインエンティティデータベース１０７２（例えば、レストラン名）、用語集データベース１０５８（例えば、料理名）、サービスモデル１０８８（例えば、ＯｐｅｎＴａｂｌｅ等のサービスプロバイダ名）、並びに／あるいはアクティブオントロジ１０５０のいずれかのノードと関連するあらゆる単語、名前又は句のうちのいくつか又は全てから単語、名前及び句を与えられる。
【０１８３】
一実施形態において、統計言語モデルは、長期個人メモリ１０５４からの単語、名前及び句を探すために調整される。例えば統計言語モデルは、ｔｏ−ｄｏアイテム、リストアイテム、個人的なメモ、カレンダエントリ、連絡先／電話帳の人の名前、電子メールアドレス及び連絡先／電話帳で示される道路名又は都市名等からテキストを与えられる。
【０１８４】
ランク付け構成要素は、候補解釈１２４を解析し、インテリジェント自動アシスタント１００２の構文的及び／又は意味的モデルに対する適合度に従ってそれら候補解釈をランク付けする（１２６）。ユーザ入力に対するいずれの制約のソースが使用されてもよい。例えば一実施形態において、アシスタント１００２は、それら解釈がドメインモデル、タスクフローモデル及び／又はダイアログモデル等を構文的及び／又は意味的にどの程度適切に構文解析するかに従って音声−テキストインタプリタの出力をランク付けする。すなわち、アシスタントは、テキスト解釈１２４における単語の種々の組み合わせがアクティブオントロジ１０５０及びそれに関連するモデルの概念、関係、エンティティ及び特性にどの程度適合するかを評価する。例えば音声−テキストサービス１２２が２つの候補解釈「ｉｔａｌｉａｎ  ｆｏｏｄ  ｆｏｒ  ｌｕｎｃｈ」及び「ｉｔａｌｉａｎ  ｓｈｏｅｓ  ｆｏｒ  ｌｕｎｃｈ」を生成する場合、意味的な関連性によるランク付け１２６は、アシスタント１００２のアクティブオントロジ１０５０のノードにより一致する場合に「ｉｔａｌｉａｎ  ｆｏｏｄ  ｆｏｒ  ｌｕｎｃｈ」をより高くランク付けする（例えば、単語「ｉｔａｌｉａｎ」、「ｆｏｏｄ」及び「ｌｕｎｃｈ」が全てオントロジ１０５０のノードに一致し且つオントロジ１０５０における関係により接続され、その一方で、単語「ｓｈｏｅｓ」はオントロジ１０５０に一致せず且つ外食ドメインネットワークの一部ではないノードに一致する）。
【０１８５】
種々の実施形態において、図２８に示す自然言語処理手順のあらゆる実施形態を含むテキスト入力の解釈のためにアシスタント１００２により使用されるアルゴリズム又は手順は、音声−テキストサービス１２２により生成される候補テキスト解釈１２４をランク付けし且つ点数をつけるために使用される。
【０１８６】
一実施形態において、解釈１２４のうち最高のランクを付けられた音声解釈が指定された閾値を超えてランク付けされることをランク付け構成要素１２６が判定する場合（１２８）、最高のランクを付けられた解釈は自動的に選択される（１３０）。指定された閾値を超えてランク付けされる解釈がない場合、音声の可能性のある候補解釈１３４がユーザに提示される（１３２）。その後、ユーザは表示された選択肢から選択できる（１３６）。
【０１８７】
種々の実施形態において、表示された選択肢からのユーザ選択１３６は、例えば図１６と関連して説明されるマルチモーダル入力のあらゆるモードを含むあらゆる入力モードにより達成される。そのような入力モードは、能動的に導出されたタイプ入力２６１０、能動的に導出された音声入力２６２０及び／又は入力のための能動的に提示されたＧＵＩ２６４０等を含むがこれらに限定されない。一実施形態において、ユーザは、例えばタップすることにより又は話すことにより候補解釈１３４から選択できる。話す場合、新しい音声入力の可能な解釈は、提供される小さい選択肢の集合１３４により大きく制約される。例えば「Ｄｉｄ  ｙｏｕ  ｍｅａｎ  ｉｔａｌｉａｎ  ｆｏｏｄ  ｏｒ  ｉｔａｌｉａｎ  ｓｈｏｅｓ？」が提供される場合、ユーザは単に「ｆｏｏｄ」と言い、アシスタントはこれを「ｉｔａｌｉａｎ  ｆｏｏｄ」にマッチングし、入力の他のグローバルな解釈と混同しない。
【０１８８】
入力が自動的に選択される（１３０）か又はユーザにより選択される（１３６）かに関わらず、結果として得られる入力１３８が返される。少なくとも１つの実施形態において、返された入力は、ステップ１３６で行われた選択に関する情報がテキスト入力と共に保存されるように注釈をつけられる（１３８）。これにより、例えば文字列の基礎となる意味的な概念又はエンティティが返された時にその文字列と関連付けられることが可能となり、その後の言語の解釈の精度が向上する。例えばＣｕｉｓｉｎｅ＝ＩｔａｌｉａｎＦｏｏｄの意味的解釈に基づいて候補解釈１３４の１つとして「Ｉｔａｌｉａｎ  ｆｏｏｄ」が提供された場合、機械可読意味的解釈は、注釈付きテキスト入力１３８として文字列「Ｉｔａｌｉａｎ  ｆｏｏｄ」のユーザの選択と共に送出される。
【０１８９】
少なくとも１つの実施形態において、候補テキスト解釈１２４は、音声−テキストサービス１２２の出力として受信された音声解釈に基づいて生成される。
【０１９０】
少なくとも１つの実施形態において、候補テキスト解釈１２４は、意味に関して音声解釈を言い換えることにより生成される。いくつかの実施形態において、同一の音声解釈の複数の言い換えが存在する可能性があり、種々の単語の意味又は同音異義語の例を提供する。例えば音声−テキストサービス１２２が「ｐｌａｃｅ  ｆｏｒ  ｍｅｅｔ」を示す場合、ユーザに提示される候補解釈は、「ｐｌａｃｅ  ｔｏ  ｍｅｅｔ（ｌｏｃａｌ  ｂｕｓｉｎｅｓｓｅｓ）」及び「ｐｌａｃｅ  ｆｏｒ  ｍｅａｔ（ｒｅｓｔａｕｒａｎｔｓ）」と言い換えられる。
【０１９１】
少なくとも１つの実施形態において、候補テキスト解釈１２４は、部分文字列を修正する提案を含む。
【０１９２】
少なくとも１つの実施形態において、候補テキスト解釈１２４は、本明細書で説明するような構文解析及び意味解析を使用して候補解釈の部分文字列を修正する提案を含む。
【０１９３】
少なくとも１つの実施形態において、ユーザが候補解釈を選択すると、それが返される。
【０１９４】
少なくとも１つの実施形態において、ユーザは、解釈が返される前にその解釈を編集するためのインタフェースを提供される。
【０１９５】
少なくとも１つの実施形態において、ユーザは、入力が返される前に更なる音声入力に継続するためのインタフェースを提供される。これにより、入力発話を漸進的に構築でき、構文及び意味的な修正、提案及びガイダンスを１度に得られる。
【０１９６】
少なくとも１つの実施形態において、ユーザは、１３６から能動的タイプ入力導出の方法（図１１に関連して上述した）のステップ１１１に直接進むためのインタフェースを提供される。これにより、タイプ入力又は音声入力をインタリーブでき、構文及び意味的な修正、提案及びガイダンスを１つのステップで得られる。
【０１９７】
少なくとも１つの実施形態において、ユーザは、能動的タイプ入力導出の一実施形態のステップ１１１から能動的音声入力導出の一実施形態に直接進むためのインタフェースを提供される。これにより、タイプ入力及び音声入力をインタリーブでき、構文及び意味的な修正、提案及びガイダンスを１つのステップで得られる。
【０１９８】
能動的ＧＵＩ入力導出
次に図２３を参照すると、一実施形態に係るＧＵＩ入力に対する能動的入力導出の方法を示すフローチャートが示される。
【０１９９】
方法が開始される（１４０）。アシスタント１００２は、出力デバイス１２０７にグラフィカルユーザインタフェース（ＧＵＩ）を提示し（１４１）、これは、例えばリンク及びボタンを含む。ユーザは、少なくとも１つのＧＵＩ要素と対話する（１４２）。データ１４４は、受信され且つ統一書式に変換される（１４６）。その後、変換されたデータは返される。
【０２００】
少なくとも１つの実施形態において、ＧＵＩのいくつかの要素は、コンピュータプログラムに書き込まれるのではなく、アクティブオントロジのモデルから動的に生成される。例えばアシスタント１００２は、画面をタップする領域であるレストラン予約サービスを誘導するために制約の集合を提供できる。各領域は制約名及び／又は値を表す。例えば画面は、料理、場所及び価格帯の制約に対する領域を有する動的に生成されたＧＵＩレイアウトの行を有する。アクティブオントロジのモデルが変更されると、ＧＵＩ画面は再プログラミングすることなく自動的に変更される。
【０２０１】
能動的ダイアログ提案入力導出
図２４は、一実施形態に係るダイアログフローのレベルにおける能動的入力導出の方法を示すフローチャートである。アシスタント１００２は、可能な応答１５２を提案する（１５１）。ユーザは、提案された応答を選択する（１５４）。受信された入力は、統一書式に変換される（１５４）。その後、変換されたデータは返される。
【０２０２】
少なくとも１つの実施形態において、ステップ１５１において提供された提案は、ダイアログ及び／又はタスクフローの後続のステップとして提供される。
【０２０３】
少なくとも１つの実施形態において、提案は、例えばドメイン及び／又はタスクモデルからのパラメータを使用して、クエリを改善するオプションを提供する。例えば、仮定される要求の場所又は時間を変更することを提供される。
【０２０４】
少なくとも１つの実施形態において、提案は、言語解釈手順又は構成要素により与えられた曖昧な別の解釈から選択するオプションを提供する。
【０２０５】
少なくとも１つの実施形態において、提案は、言語解釈手順又は構成要素により与えられた曖昧な別の解釈から選択するオプションを提供する。
【０２０６】
少なくとも１つの実施形態において、提案は、ネットワークフロー関連ダイアログフローモデル１０８７における次のステップから選択するオプションを提供する。例えばダイアログフローモデル１０８７は、１つのドメイン（例えば、レストランでの食事）に対する制約を収集した後にアシスタント１００２が他の関連するドメイン（例えば、近くの映画館）を提案すべきであることを提案する。
【０２０７】
関連する事象の能動的監視
少なくとも１つの実施形態において、非同期事象は能動的導出入力の他のモダリティと同様に入力として処理される。従って、そのような事象は、アシスタント１００２に対する入力として提供される。そのような事象は、解釈されると、あらゆる他の入力と同様に処理される。
【０２０８】
例えば、フライトの状態の変更は、ユーザに送出されるアラート通知を開始する。フライトが遅延していると示される場合、アシスタント１００２は、検出された事象に基づいて別のフライトを提示したり、他の提案をしたりすることによりダイアログを継続する。
【０２０９】
そのような事象は、どのような種類の事象でもよい。例えばアシスタント１００２は、ユーザがちょうど家に到着したこと、あるいは道に迷っていること（指定された経路から外れたこと）、あるいは株価が閾値に達したこと、あるいはユーザの興味のあるテレビ番組が開始すること、あるいは興味のあるミュージシャンがその地域にツアーで来ることを検出する。これらの状況のいずれにおいても、アシスタント１００２は、ユーザがその質問を自身で開始するのとほぼ同様にダイアログに進める。一実施形態において、事象は、例えば同僚がいつランチから戻ってくるかをユーザに伝えるために他のデバイスから提供されるデータに基づいてもよい（同僚のデバイスはそのような事象をユーザのデバイスに信号伝送でき、この時、ユーザのデバイスにインストールされたアシスタント１００２はそれに応じて応答する）。
【０２１０】
一実施形態において、事象は、カレンダ、クロック、リマインダ又はｔｏ−ｄｏアプリケーションからの通知又はアラートである。例えばディナーデートに関するカレンダアプリケーションからのアラートは、食事事象に関するアシスタント１００２とのダイアログを開始する。ダイアログは、ユーザが「ｄｉｎｎｅｒ  ｆｏｒ  ２  ｉｎ  Ｓａｎ  Ｆｒａｎｃｉｓｃｏ」等の今度の食事事象に関する情報をちょうど話したか又はタイプしたかのように進む。
【０２１１】
一実施形態において、可能なイベントトリガ１６２のコンテキストは、人、場所、時間及び他のデータに関する情報を含む。これらのデータは、処理の種々のステップにおいて使用するアシスタント１００２に対する入力の一部として使用される。
【０２１２】
一実施形態において、イベントトリガ１６２のコンテキストからのデータは、ユーザからの音声又はテキスト入力の曖昧性を除去するために使用される。例えばカレンダイベントアラートがそのイベントに招待された人の名前を含む場合、その情報は同一の又は同様の名前を有する何人かの人と一致する可能性のある入力の曖昧性を除去しやすくする。
【０２１３】
次に図２５を参照すると、一実施形態に係る関連する事象の能動的な監視の方法を示すフローチャートが示される。この例において、イベントトリガ事象は入力の集合１６２である。アシスタント１００２はそのような事象を監視する（１６１）。検出された事象は、インテリジェント自動アシスタント１００２の他の構成要素から入手可能なモデル、データ及び情報を使用して意味的な関連性に対してフィルタリング及びソートされる（１６４）。例えば、ユーザに対する短期又は長期メモリレコードが、ユーザがそのフライトに乗っており且つ／又はそのフライトに関してアシスタント１００２に質問したことを示す場合、フライトの状態の変更を報告する事象にはより高い関連性が与えられる。この格納及びフィルタリングは、ユーザによるレビューに対して重大な事象のみを提示し、ユーザは１つ以上の事象を選択し且つそれらに作用する。
【０２１４】
事象データは、統一入力書式に変換され（１６６）、返される。
【０２１５】
少なくとも１つの実施形態において、アシスタント１００２は、ユーザの注目を得るために提案されたイベントと関連付けられたサービスを事前に提供する。例えばフライト状態アラートがフライトを逃す可能性があることを示す場合、アシスタント１００２は、旅程を再計画するか又はホテルを予約するタスクフローをユーザに提案する。
【０２１６】
入力導出構成要素の例
以下の例は、能動的入力導出構成要素１０９４により提供される種々の機能、動作、行動及び／又は他の特徴のうちのいくつかを例示しやすくすることを意図する。
例：コマンド補完（ユーザがアシスタント１００２に言えることは？）
【０２１７】
ユーザには「ｗｈａｔ  ｄｏ  ｙｏｕ  ｗａｎｔ  ｔｏ  ｄｏ？」を入力するために一般的な命令を含むテキスト入力ボックスが提示されている。コンテキスト及びユーザ入力に依存して、いくつかのシステム応答のいずれかが提供される。例を以下に示す。
【０２１８】
事例：ヌルの入力
2020173835.tif 000003
【０２１９】
事例：第１の単語の入力
2020173835.tif 000004
【０２２０】
事例：キーワードの入力
2020173835.tif 000005
【０２２１】
事例：引数の入力指示
2020173835.tif 000006
【０２２２】
事例：基準の提案
2020173835.tif 000007
【０２２３】
事例：基準の追加
2020173835.tif 000008
【０２２４】
事例：場所又は他の制約の追加
2020173835.tif 000009
【０２２５】
事例：制約、未知のタスク又はドメインからの開始
2020173835.tif 000010
【０２２６】
例：名前の補完
ここでは、ユーザはいずれのコマンドも受け入れずにあるテキストをタイプしたか、あるいはエンティティ名によりコマンドを拡張している。システムは、コンテキストに依存して名前を補完しようとする。更にシステムは、ドメインの曖昧性を除去する。
事例：コンテキストのない単語
2020173835.tif 000011
【０２２７】
事例：コンテキストを含む名前
2020173835.tif 000012
【０２２８】
例：集合からの値の選択
ここでは、ユーザは、場所、時間、料理又はジャンル等の特定のパラメータに対する値を入力するというシステム要求に応答している。ユーザはリストから値を選択するか又は値を入力する。ユーザがタイプすると、リストの一致するアイテムがオプションとして示される。例を以下に示す。
事例：値クラスの選択
2020173835.tif 000013
【０２２９】
例：先のコマンドの再利用
先のクエリは、自動補完インタフェースで補完するオプションである。それらクエリは、文字列としてマッチングされるか（入力フィールドが空であり、既知の制約がない場合）、あるいは特定の状況において関連するものとして提案される。
事例：先のクエリにおける補完
2020173835.tif 000014
【０２３０】
例：個人メモリのアイテムの検索
アシスタント１００２は、ユーザと関連付けられた個人メモリに特定の事象及び／又はエンティティを記憶する。自動補完は、そのような記憶したアイテムに基づいて行われる。例を以下に示す。
事例：個人メモリの事象及びエンティティに対する補完
2020173835.tif 000015
【０２３１】
マルチモーダル能動的入力導出
少なくとも１つの実施形態において、能動的入力導出構成要素１０９４は、複数の入力モダリティからの入力を処理する。少なくとも１つのモダリティは、特定の種類の入力及び提案されたオプションから選択する方法を利用する能動的入力導出手順により実現される。本明細書で説明するように、それらは、テキスト入力、音声入力、ＧＵＩ入力、ダイアログのコンテキストにおける入力及び／又はイベントトリガの結果として得られる入力に対する能動的入力導出の手順の実施形態である。
【０２３２】
少なくとも１つの実施形態において、インテリジェント自動アシスタント１００２の単一のインスタンスに対して、タイプ入力、音声入力、ＧＵＩ入力、ダイアログ入力及び／又は事象入力のうちの１つ以上（又はそれらのあらゆる組み合わせ）に対するサポートがある。
【０２３３】
次に図２６を参照すると、一実施形態に係るマルチモーダル能動的入力導出の方法を示すフローチャートが示される。方法が開始される（１００）。入力は、あらゆる順番で、入力モダリティのうちの１つ以上又はあらゆる組み合わせから同時に受信される。従って、方法は、タイプ入力２６１０、音声入力２６２０、ＧＵＩ入力２６４０、ダイアログのコンテキストにおける入力２６５０及び／又はイベントトリガの結果として得られる入力２６６０を能動的に導出することを含む。これらの入力ソースのいずれか又は全ては、統一入力書式２６９０に統一されて返される。統一入力書式２６９０により、インテリジェント自動アシスタント１００２の他の構成要素は入力の特定のモダリティに関係なく設計され且つ動作する。
【０２３４】
複数のモダリティ及びレベルに対する能動的なガイダンスを提供することにより、独立したモダリティが利用可能な制約及びガイダンスを超えた制約及びガイダンスが入力に対して可能である。例えば音声、テキスト及びダイアログステップから選択するために提供されたそれらの種類の提案は無関係であるため、それらの組み合わせは個々のモダリティ又はレベルに能動的導出技術を追加することと比較して大きな改善を示す。
【０２３５】
本明細書で説明するような制約の複数のソース（構文／言語、用語集、エンティティデータベース、ドメインモデル、タスクモデル及びサービスモデル等）と、それら制約が能動的に適用される複数の場所（音声、テキスト、ＧＵＩ、ダイアログ及び非同期事象）とを組み合わせることにより、人間と機械との対話に対して新しいレベルの機能性が提供される。
【０２３６】
ドメインモデル構成要素１０５６
ドメインモデル１０５６の構成要素は、ドメインの概念、エンティティ、関係、特性及びインスタンスの表現を含む。例えば外食ドメインモデル１６２２は、名前、住所及び電話番号を有するビジネスであるレストランの概念、レストランと関連付けられたパーティサイズ、日付及び時間を有する食事事象の概念を含む。
【０２３７】
少なくとも１つの実施形態において、アシスタント１００２のドメインモデル構成要素１０５６は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
・ドメインモデル構成要素１０５６は、入力の導出１００、自然言語の解釈２００、サービスへのディスパッチ４００及び出力の生成６００を含むいくつかの処理に対して自動アシスタント１００２により使用される。
・ドメインモデル構成要素１０５６は、レストラン名等のドメイン概念又はエンティティに一致する単語のリストを提供し、これは、入力の能動的導出１００及び自然言語処理２００に使用される。
・ドメインモデル構成要素１０５６は、例えば単語がレストラン名であると判定するために処理において候補単語を分類する。
・ドメインモデル構成要素１０５６は、例えば料理がビジネスエンティティと関連付けられる（例えば、「ｌｏｃａｌ  Ｍｅｘｉｃａｎ  ｆｏｏｄ」は「ｆｉｎｄ  ｒｅｓｔａｕｒａｎｔｓ  ｗｉｔｈ  ｓｔｙｌｅ＝Ｍｅｘｉｃａｎ」と解釈され、この推論はドメインモデル１０５６における情報のために可能である）と自然言語を解釈するための部分情報間の関係を示す。
・ドメインモデル構成要素１０５６は、例えば特定のウェブサービスがレストランのレビューを提供するというサービスオーケストレーション１０８２において使用されるサービスに関する情報を編成する。
・ドメインモデル構成要素１０５６は、例えば概念、関係、特性及びインスタンスを記述する標準的な方法を提供することにより、自然言語の言い換え及び他の出力形式を生成するための情報を提供する。
【０２３８】
特定の実施形態によると、ドメインモデル構成要素１０５６の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、ドメインモデル構成要素１０５６の種々の態様、特徴及び／又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の１つ以上（又はそれらの組み合わせ）により実行、実現及び／又は開始される。
・ドメインモデル構成要素１０５６は、概念、関係、特性及びインスタンスを表すデータ構造として実現される。これらのデータ構造は、メモリ、ファイル又はデータベースに格納される。
・ドメインモデル構成要素１０５６へのアクセスは、ダイレクトＡＰＩ、ネットワークＡＰＩ及び／又はデータベースクエリインタフェースを介して実現される。
・ドメインモデル構成要素１０５６の作成及び維持は、例えばファイルの直接編集、データベーストランザクション及び／又はドメインモデル編集ツールの使用により達成される。
・ドメインモデル構成要素１０５６は、アクティブオントロジ１０５０の一部として又はアクティブオントロジ１０５０と関連して実現され、サーバ及びユーザに対するモデルのインスタンス化とモデルとを組み合わせる。
【０２３９】
種々の実施形態によると、ドメインモデル構成要素１０５６の１つ以上の異なるスレッド又はインスタンスは、ドメインモデル構成要素１０５６の少なくとも１つのインスタンスの開始をトリガする種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。例えばドメインモデル構成要素１０５６の１つ以上の異なるスレッド又はインスタンスのトリガの開始及び／又は実現は、入力導出中、入力解釈中、タスク及びドメインの識別中、自然言語の処理中、サービスオーケストレーション中、並びに／あるいはユーザに対する出力のフォーマット中を含むドメインモデル情報が必要とされた時にトリガされる。
【０２４０】
少なくとも１つの実施形態において、ドメインモデル構成要素１０５６の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はこれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。例えばドメインモデル構成要素１０５６からのデータは、用語集１０５８、言語パターン認識器１０６０、ダイアログフローモデル１０８７、タスクフローモデル１０８６、サービス機能モデル１０８８及びドメインエンティティデータベース１０７２等を含む他のモデルのモデル化構成要素と関連付けられる。例えばレストランとして分類されるドメインエンティティデータベース１０７２におけるビジネスは、外食ドメインモデル構成要素において維持される種類識別子により認識される。
【０２４１】
ドメインモデル構成要素の例
次に図２７を参照すると、一実施形態に係るドメインモデル構成要素１０５６により提供される種々の機能、動作、行動及び／又は他の特徴の一例を示すスクリーンショットの集合が示される。
【０２４２】
少なくとも一実施形態において、ドメインモデル構成要素１０５６は、レストランに関する画面１０３Ａ及び１０３Ｂに示される情報の表現を可能にする統一データ表現であり、これは、いくつかの別個のデータソース及びサービスからのデータを組み合わせ、例えば、名前、住所、ビジネスカテゴリ、電話番号、長期個人メモリに対して保存するための識別子、電子メールを介して共有するための識別子、複数のソースからのレビュー、地図座標及び個人的なメモ等を含む。
【０２４３】
言語インタプリタ構成要素１０７０
少なくとも１つの実施形態において、アシスタント１００２の言語インタプリタ構成要素１０７０は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０２４４】
・ユーザ入力を解析し且つ構文解析結果の集合を識別する。
・ユーザ入力は、ユーザ及びユーザの意図を理解する一因となるユーザのデバイスコンテキストからのあらゆる情報を含み、これは、例えば単語のシーケンス、入力を導出する際に関わるジェスチャ又はＧＵＩ要素の一致、ダイアログの現在のコンテキスト、現在のデバイスアプリケーション及びその現在のデータオブジェクト、並びに／あるいは場所及び時間等のユーザに関して取得されたあらゆる他の動的な個人データのうちの１つ以上（又はそれらの組み合わせ）を含む。例えば一実施形態において、ユーザ入力は、能動的入力導出１０９４の結果として得られる統一注釈付き入力書式２６９０の形式である。
・構文解析結果は、概念、関係、特性、インスタンス及び／又は他のノード、並びに／あるいはモデル、データベース及び／又はユーザの意図及び／コンテキストの他の表現におけるデータ構造とユーザ入力のデータとの関連付けである。構文解析結果の関連付けは、ユーザ入力の単語、信号及び他の要素の集合及びシーケンスから本明細書で説明する１つ以上の関連付けられた概念、関係、特性、インスタンス、他のノード及び／又はデータ構造への複雑なマッピングである。
【０２４５】
・ユーザ入力を解析し、複数単語の名前、文の構造及び／又は他の文法のグラフ構造を含む音声、節及び句の構文部分を表す構造とユーザ入力のデータとを関連付ける構文解析結果である構文的な構文解析結果の集合を識別する。構文的な構文解析結果は、図２８と関連して説明する自然言語処理手順の要素２１２において説明される。
【０２４６】
・ユーザ入力を解析し、意味及びユーザの意図の概念、関係、特性、エンティティ、数量、命題及び／又は他の表現を表す構造とユーザ入力のデータとを関連付ける構文解析結果である意味的な構文解析結果の集合を識別する。一実施形態において、意味及び意図のこれらの表現は、図２８と関連して説明する自然言語処理手順の要素２２０において説明するように、モデル又はデータベースの集合及び／又は要素及び／又はインスタンス、並びに／あるいはオントロジのノードにより表される。
【０２４７】
・図２８と関連して説明する自然言語処理手順の要素２３０において説明するような別の構文的又は意味的な構文解析結果の間の曖昧性を除去する。
【０２４８】
・図１１と関連して説明するような自動補完手順において部分的にタイプされた入力が構文的及び／又は意味的に有意義であるかを判定する。
【０２４９】
・図１１と関連して説明するような自動補完手順において提案される補完１１４を生成しやすくする。
【０２５０】
・図２２と関連して説明するような音声入力手順において音声入力の解釈が構文的及び／又は意味的に有意義であるかを判定する。
【０２５１】
特定の実施形態によると、言語インタプリタ構成要素１０７０の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。
【０２５２】
種々の実施形態によると、言語インタプリタ構成要素１０７０の１つ以上の異なるスレッド又はインスタンスは、言語インタプリタ構成要素１０７０の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。言語インタプリタ構成要素１０７０の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガする条件又は事象の種々の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０２５３】
・以下を含むがそれらに限定されない入力を導出する間。
・タイプ入力の可能な補完を提案する（１１４）（図１１）。
・音声の解釈をランク付けする（１２６）（図２２）。
・ダイアログにおける提案された応答１５２として曖昧性を提供する時（図２４）。
【０２５４】
・入力が能動的マルチモーダル入力導出１００のいずれかのモードにより導出される時を含む入力を導出した結果が利用可能である時。
【０２５５】
少なくとも１つの実施形態において、言語インタプリタ構成要素１０７０の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、そのようなデータベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。言語インタプリタ構成要素によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０２５６】
・ドメインモデル１０５６
・用語集１０５８
・ドメインエンティティデータベース１０７２
・短期メモリ１０５２
・長期個人メモリ１０５４
・タスクフローモデル１０８６
・ダイアログフローモデル１０８７
・サービス機能モデル１０８８
【０２５７】
次に図２９を更に参照すると、一実施形態に係る自然言語処理を示すスクリーンショットが示される。ユーザは、「ｗｈｏ  ｉｓ  ｐｌａｙｉｎｇ  ｔｈｉｓ  ｗｅｅｋｅｎｄ  ａｔ  ｔｈｅ  ｆｉｌｍｏｒｅ」という句から成る言語入力２９０２を入力した（音声又はテキストにより）。この句は、画面２９０１においてユーザにエコーバックされる。言語インタプリタ構成要素１０７０は、入力２９０２を処理し、構文解析結果を生成する。構文解析結果は、名前が「ｆｉｌｍｏｒｅ」と一致するあらゆるイベントの場所において次の週末のいずれかの日にスケジュールされているローカル事象を示すという要求とその入力とを関連付ける。構文解析結果の言い換えは、画面２９０１に２９０３として示される。
【０２５８】
次に図２８を更に参照すると、一実施形態に係る自然言語処理の方法の一例を示すフローチャートが示される。
【０２５９】
方法が開始される（２００）。図２９の例における「ｗｈｏ  ｉｓ  ｐｌａｙｉｎｇ  ｔｈｉｓ  ｗｅｅｋｅｎｄ  ａｔ  ｔｈｅ  ｆｉｌｍｏｒｅ（今週は誰がフィルモアに出演しているのか）」という文字列等の言語入力２０２が受信される。一実施形態において、入力は、現在のユーザの場所及び現地時間等の現在のコンテキスト情報により補われる。単語／句のマッチング２１０において、言語インタプリタ構成要素１０７０は、ユーザ入力と概念との間の関連付けを見つける。この例において、文字列「ｐｌａｙｉｎｇ」とイベントの場所におけるリストの概念との間、文字列「ｔｈｉｓ  ｗｅｅｋｅｎｄ」（ユーザの現在の現地時間と共に）と次の週末を表すおおよその時間帯の具体例との間、文字列「ｆｉｌｍｏｒｅ」と場所の名前との間で関連付けが見つけられる。単語／句のマッチング２１０は、例えば言語パターン認識器１０６０、用語集データベース１０５８、アクティブオントロジ１０５０、短期個人メモリ１０５２及び長期個人メモリ１０５４からのデータを使用する。
【０２６０】
言語インタプリタ構成要素１０７０は、選択された構文解析結果を含み且つ他の構文解析結果を更に含む構文的な候補構文解析２１２を生成する。例えば他の構文解析結果は、「ｐｌａｙｉｎｇ」がゲーム等の他のドメイン又はスポーツイベント等のイベントのカテゴリと関連付けられる結果を含む。
【０２６１】
短期メモリ１０５２及び／又は長期メモリ１０５４は、構文的な候補構文解析２１２を生成する際に言語インタプリタ構成要素１０７０により使用される。従って、性能を向上し、曖昧性を低減し、且つ対話の会話の性質を向上するために、同一のセッションで先に適用された入力及び／又はユーザに関する既知の情報が使用される。有効な構文的な候補構文解析２１２を判定する際に根拠に基づく推論を実現するために、アクティブオントロジ１０５０、ドメインモデル１０５６及びタスクフローモデル１０８６からのデータが使用される。
【０２６２】
意味的なマッチング２２０において、言語インタプリタ構成要素１０７０は、ドメインモデル及びデータベース等の意味的なモデルに対する適合度に従って可能な構文解析結果の組み合わせを考慮する。この場合、構文解析は、（１）「Ｌｏｃａｌ  Ｅｖｅｎｔ  Ａｔ  Ｖｅｎｕｅ」（アクティブオントロジ１０５０のノードのクラスタにより表されるドメインモデル１０５６の一部）である「ｐｌａｙｉｎｇ」（ユーザ入力の単語）と、（２）ドメインモデルの要素及びアクティブオントロジのノード（Ｖｅｎｕｅ  Ｎａｍｅ）により表されるローカル事象の場所に対するドメインエンティティデータベース１０７２のエンティティ名に一致するものである「ｆｉｌｍｏｒｅ」（入力の別の単語）との関連付けを含む。
【０２６３】
意味的なマッチング２２０は、例えばアクティブオントロジ１０５０、短期個人メモリ１０５２及び長期個人メモリ１０５４からのデータを使用する。例えば意味的なマッチング２２０は、ダイアログにおける場所又はローカル事象（短期個人メモリ１０５２からの）又は個人のお気に入りの場所（長期個人メモリ１０５４からの）に対する先の参照からのデータを使用する。
【０２６４】
意味的な候補構文解析結果又は意味的な潜在的な構文解析結果２２２の集合が生成される。
【０２６５】
曖昧性除去ステップ２３０において、言語インタプリタ構成要素１０７０は、意味的な候補構文解析結果２２２の根拠を考察する。この例において、「Ｌｏｃａｌ  Ｅｖｅｎｔ  Ａｔ  Ｖｅｎｕｅ」である「ｐｌａｙｉｎｇ」の構文解析とＶｅｎｕｅ  Ｎａｍｅである「ｆｉｌｍｏｒｅ」のマッチングとの組み合わせは、例えば「ｐｌａｙｉｎｇ」がスポーツのドメインモデルと関連付けられ且つ「ｆｉｌｍｏｒｅ」に対してスポーツドメインにおける関連付けがない別の組み合わせと比較して、ドメインモデルにより高いレベルで一致する。
【０２６６】
曖昧性除去２３０は、例えばアクティブオントロジ１０５０の構造からのデータを使用する。少なくとも１つの実施形態において、アクティブオントロジのノード間の接続は、意味的な候補構文解析結果２２２の間の曖昧性を除去する根拠に基づくサポートを提供する。例えば一実施形態において、アクティブオントロジの３つのノードが意味的に一致し、アクティブオントロジにおいて全て接続される場合、これは、それら一致するノードが接続されないか又はアクティブオントロジ１０５０においてより長い接続パスにより接続される場合と比較して意味的構文解析のより強い根拠を示す。例えば意味的なマッチング２２０の一実施形態において、Ｌｏｃａｌ  Ｅｖｅｎｔ  Ａｔ  ＶｅｎｕｅとＶｅｎｕｅ  Ｎａｍｅとをマッチングする構文解析は、ユーザの意図のそれらの態様の組み合わせ表現がアクティブオントロジ１０５０における関係及び／又はリンクにより接続されるため、より強い根拠に基づくサポートが与えられる。このインスタンスにおいて、Ｌｏｃａｌ  ＥｖｅｎｔノードはＶｅｎｕｅノードに接続され、ＶｅｎｕｅノードはＶｅｎｕｅ  Ｎａｍｅノードに接続され、Ｖｅｎｕｅ  Ｎａｍｅノードは場所名のデータベースのエンティティ名に接続される。
【０２６７】
少なくとも１つの実施形態において、意味的な候補構文解析結果２２２の間の曖昧性を除去するために根拠に基づくサポートを提供するアクティブオントロジのノード間の接続は、有向アークであり、推論格子を形成する。ここで、一致するノードは、有向アークにより接続されるノードに対する根拠を提供する。
【０２６８】
２３２において、言語インタプリタ構成要素１０７０は、ソートして最上位の意味的構文解析をユーザの意図の表現２９０として選択する（２３２）。
【０２６９】
ドメインエンティティデータベース１０７２
少なくとも１つの実施形態において、ドメインエンティティデータベース１０７２は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０２７０】
・ドメインエンティティに関するデータを格納する。ドメインエンティティは、ドメインモデルにおいてモデル化される世界又はコンピューティング環境における物事である。例は以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０２７１】
・あらゆる種類のビジネス
・映画、ビデオ、曲及び／又は他の音楽製品、並びに／あるいはあらゆる他の指名されたエンターテイメント製品
・あらゆる種類の製品
・イベント
・カレンダエントリ
・都市、州、国、区域、並びに／あるいは他の地理的、地政学的及び／又は地理空間的な地点又は領域
・ランドマーク及び空港等の指名された場所
・それらデータベースに対するデータベースサービスを提供する。これは、単純なクエリ、複雑なクエリ、トランザクション及びトリガされた事象等を含むがこれらに限定されない。
【０２７２】
特定の実施形態によると、ドメインエンティティデータベース１０７２の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、ドメインエンティティデータベース１０７２の種々の態様、特徴及び／又は機能性は、クライアント１３０４及び／又はサーバ１３４０に常駐するデータベースソフトウェア及び／又はハードウェアにより実行、実現及び／又は開始される。
【０２７３】
一実施形態に従って本発明と関連して使用されるドメインエンティティデータベース１０７２の一例は、例えば名前及び場所を格納する１つ以上のビジネスのデータベースである。データベースは、例えばビジネスをマッチングするための入力要求に含まれる単語を参照するため及び／又は名前が分かっているビジネスの場所を参照するために使用される。多くの他の構成及び実現例が可能であることが当業者には理解されるだろう。
【０２７４】
用語集構成要素１０５８
少なくとも１つの実施形態において、用語集構成要素１０５８は、以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０２７５】
・ドメインモデル又はタスクモデルの概念、特性、関係又はインスタンスと単語及び文字列とを関連付けるデータベースを提供する。
【０２７６】
・用語集構成要素からの用語集は、例えば入力の導出、自然言語の解釈及び出力の生成を含むいくつかの処理に対して自動アシスタント１００２により使用される。
【０２７７】
特定の実施形態によると、用語集構成要素１０５８の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、用語集構成要素１０５８の種々の態様、特徴及び／又は機能性は、概念、関係、特性及びインスタンスの名前と文字列とを関連付けるデータ構造として実現される。これらのデータ構造は、メモリ、ファイル又はデータベースに格納される。用語集構成要素１０５８へのアクセスは、ダイレクトＡＰＩ、ネットワークＡＰＩ及び／又はデータベースクエリインタフェースを介して実現される。用語集構成要素１０５８の作成及び維持は、ファイルの直接編集、データベーストランザクション又はドメインモデル編集ツールの使用により達成される。用語集構成要素１０５８は、アクティブオントロジ１０５０の一部として又はアクティブオントロジ１０５０と関連して実現される。多くの他の構成及び実現例が可能であることが当業者には理解されるだろう。
【０２７８】
種々の実施形態によると、用語集構成要素１０５８の１つ以上の異なるスレッド又はインスタンスは、用語集構成要素１０５８の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。一実施形態において、用語集構成要素１０５８は、例えば入力導出中、入力解釈中及びユーザに対する出力のフォーマット中を含み、用語集情報が要求される場合は必ずアクセスされる。他の条件又は事象は、用語集構成要素１０５８の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガすることが当業者には理解されるだろう。
【０２７９】
少なくとも１つの実施形態において、用語集構成要素１０５８の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。一実施形態において、用語集構成要素１０５８は、外部データベース、例えばデータウェアハウス又はディクショナリからのデータにアクセスする。
【０２８０】
言語パターン認識器構成要素１０６０
少なくとも１つの実施形態において、言語パターン認識器構成要素１０６０は、例えば入力トークンの文法的合成語、慣用的合成語及び／又は他の合成語を示す言語又は音声入力におけるパターンを探す等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。それらパターンは、例えば発話行為の単語、名前、句、データ、パラメータ、コマンド及び／又は信号のうちの１つ以上（又はそれらの組み合わせ）に対応する。
【０２８１】
特定の実施形態によると、パターン認識器構成要素１０６０の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、言語パターン認識器構成要素１０６０の種々の態様、特徴及び／又は機能性は、パターンマッチング言語における表現を含む１つ以上のファイル、データベース及び／又はプログラムにより実行、実現及び／又は開始される。少なくとも１つの実施形態において、言語パターン認識器構成要素１０６０は、プログラムコードではなく宣言的に表される。これにより、構成要素は編集者及びプログラミングツール以外の他のツールにより作成及び維持される。宣言的表現の例は、正規表現、パターンマッチングルール、自然言語の文法、状態遷移機械に基づくパーサ及び／又は他の構文解析モデルのうち１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０２８２】
他の種類のシステム、構成要素、システム、デバイス、手順及び処理等（又はそれらの組み合わせ）は、言語パターン認識器構成要素１０６０を実現するために使用されることが当業者には理解されるだろう。
【０２８３】
種々の実施形態によると、言語パターン認識器構成要素１０６０の１つ以上の異なるスレッド又はインスタンスは、言語パターン認識器構成要素１０６０の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。言語パターン認識器構成要素１０６０の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガする条件又は事象の種々の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
・言語パターン認識器の構造がユーザからの入力を制約し且つ誘導する入力の能動的導出中。
・言語パターン認識器が入力を言語として解釈しやすくする自然言語処理中。
・言語パターン認識器がタスク、ダイアログ及び／又はステップを識別しやすくするタスク及びダイアログの識別中。
【０２８４】
少なくとも１つの実施形態において、言語パターン認識器構成要素１０６０の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。言語パターン認識器構成要素１０６０によりアクセスされる種々のデータの例は、アシスタント１００２の実施形態の一部である種々のモデル及びデータソースのいずれかからのデータを含むがそれらに限定されない。これは、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０２８５】
・ドメインモデル１０５６
・用語集１０５８
・ドメインエンティティデータベース１０７２
・短期メモリ１０５２
・長期個人メモリ１０５４
・タスクフローモデル１０８６
・ダイアログフローモデル１０８７
・サービス機能モデル１０８８
【０２８６】
一実施形態において、アシスタント１００２の実施形態の他の部分からのデータのアクセスは、アクティブオントロジ１０５０により連携される。
【０２８７】
図１４を参照すると、言語パターン認識器構成要素１０６０により提供される種々の機能、動作、行動及び／又は他の特徴の一部の一例が示される。図１４は、言語パターン認識器構成要素１０６０が認識する言語パターンを示す。例えば成句「ｗｈａｔ  ｉｓ  ｈａｐｐｅｎｉｎｇ」（ｉｎ  ａ  ｃｉｔｙ）(（都市で）何が起きている)は、事象の計画のタスク及びローカル事象のドメインと関連付けられる。
【０２８８】
ダイアログフロープロセッサ構成要素１０８０
少なくとも１つの実施形態において、ダイアログフロープロセッサ構成要素１０８０は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０２８９】
・言語解釈２００からのユーザの意図の表現２９０を仮定して、ユーザが実行したいタスク及び／又はユーザが解決したい問題を識別する。例えばタスクは、レストランを見つけることである。
【０２９０】
・所定の問題又はタスクに対して、ユーザの意図の表現２９０を仮定して、タスク又は問題に対するパラメータを識別する。例えばユーザは、ユーザの家の近くにあるイタリア料理を提供する推薦されるレストランを探している。レストランが推薦され、イタリア料理を提供し且つ家の近くにあるという制約は、レストランを見つけるタスクに対するパラメータである。
【０２９１】
・個人短期メモリ１０５２において表現されるようなタスクの解釈及びユーザとの現在のダイアログを仮定して、適切なダイアログフローモデルを選択し、現在の状態に対応するフローモデルのステップを判定する。
【０２９２】
特定の実施形態によると、ダイアログフロープロセッサ構成要素１０８０の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。
【０２９３】
少なくとも１つの実施形態において、ダイアログフロープロセッサ構成要素１０８０の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。ダイアログフロープロセッサ構成要素１０８０によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
・タスクフローモデル１０８６
・ドメインモデル１０５６
・ダイアログフローモデル１０８７
【０２９４】
次に図３０及び図３１を参照すると、一実施形態に従ってダイアログフロープロセッサ構成要素により提供される種々の機能、動作、行動及び／又は他の特徴の一例を示すスクリーンショットが示される。
【０２９５】
画面３００１に示すように、ユーザは、音声又はテキスト入力「ｂｏｏｋ  ｍｅ  ａ  ｔａｂｌｅ  ｆｏｒ  ｄｉｎｎｅｒ（夕食の席を予約して）」を提供することにより夕食の予約を要求する。アシスタント１００２は、時間及びパーティサイズを指定することをユーザに要求するプロンプト３００３を生成する。
【０２９６】
これらのパラメータが提供されると、画面３１０１が示される。アシスタント１００２は、結果が提示されていることを示すダイアログボックス３１０２と、時間をクリックするようにユーザに要求するプロンプト３１０３とを出力する。リスト３１０４が更に表示される。
【０２９７】
一実施形態において、そのようなダイアログは以下のように実現される。ダイアログフロープロセッサ構成要素１０８０は、言語インタプリタ構成要素１０７０からのユーザの意図の表現を与えられ、適切な応答がタスクフローの次のステップを実行するのに必要とされる情報をユーザに要求することであることを判定する。この場合、ドメインはレストランであり、タスクは予約を取ることであり、ダイアログステップはタスクフローの次のステップを達成するのに必要な情報をユーザに要求することである。このダイアログステップは、画面３００１のプロンプト３００３により例示される。
【０２９８】
図３２を参照すると、一実施形態に従ってダイアログフロープロセッサ構成要素１０８０の動作方法を示すフローチャートが示される。図３０及び図３１に示す例と関連して、図３２のフローチャートを説明する。
【０２９９】
方法が開始される（２００）。ユーザの意図の表現２９０が受信される。図２８と関連して説明したように、一実施形態において、ユーザの意図の表現２９０は意味的な構文解析の集合である。図３０及び図３１に示す例の場合、ドメインはレストランであり、動詞はレストランの予約と関連付けられた「ｂｏｏｋ」であり、時間パラメータは現在の日付の夜である。
【０３００】
３１０において、ダイアログフロープロセッサ構成要素１０８０は、このユーザの意図の解釈が次に進むのに十分に強力にサポートされているか及び／又は別の曖昧な構文解析より適切にサポートされているかを判定する。この例において、解釈は強力にサポートされており、競合する曖昧な構文解析はない。一方、競合する曖昧な構文解析であるか又は非常に不確実な構文解析である場合、ステップ３２２が実行され、実行段階によりダイアログがユーザからの更なる情報に対するプロンプトを出力するようにダイアログフローステップを設定する。
【０３０１】
３１２において、ダイアログフロープロセッサ構成要素１０８０は、実行するタスク及びそのパラメータを判定するために他の情報による意味的な構文解析の好適な解釈を判定する。情報は、例えばドメインモデル１０５６、タスクフローモデル１０８６及び／又はダイアログフローモデル１０８７、あるいはそれらのあらゆる組み合わせから取得される。この例において、タスクは、予約を取ることであると識別され、これは予約可能であり且つ空きがある場所を見つけること及びテーブルを予約するためのトランザクションを行うことを含む。タスクパラメータは、ステップ３１２で推論された他のパラメータに加えて時間の制約である。
【０３０２】
３２０において、タスクフローモデルは、適切な次のステップを判定するために調査される。情報は、例えばドメインモデル１０５６、タスクフローモデル１０８６及び／又はダイアログフローモデル１０８７、あるいはそれらのあらゆる組み合わせから取得される。この例において、このタスクフローにおいて次のステップがレストランの空き状況探索に対する欠落したパラメータを導出することであることが判定され、結果として図３０に示すプロンプト３００３を与え、パーティサイズ及び予約時間を要求する。
【０３０３】
上述したように、図３１は、ユーザがパーティサイズ及び予約時間の要求に回答した後に提示されるダイアログ要素３１０２を含む画面３１０１を示す。一実施形態において、画面３１０１は、図３３と関連して説明するように自動呼出し及び応答手順を介して別の１回の実行の結果として提示され、図３２に示すダイアログ及びフロー手順に対する別の呼出しを引き起こす。このダイアログ及びフロー手順の開始において、ユーザの嗜好を受信した後、ダイアログフロープロセッサ構成要素１０８０は、空き状況探索を行うためにステップ３２０において異なるタスクフローステップを判定する。要求３９０が構築されると、これは、ダイアログフロープロセッサ構成要素１０８０及びサービスオーケストレーション構成要素１０８２がレストラン予約サービスにディスパッチするのに十分なタスクパラメータを含む。
【０３０４】
ダイアログフローモデル構成要素１０８７
少なくとも１つの実施形態において、ダイアログフローモデル構成要素１０８７はダイアログフローモデルを提供するように動作可能であり、これはユーザとインテリジェント自動アシスタント１００２との間の特定の種類の会話において行われるステップを表す。例えばトランザクションを実行するジェネリックタスクに対するダイアログフローは、トランザクションに必要なデータを得るステップと、それをコミットする前にトランザクションパラメータを確認するステップとを含む。
【０３０５】
タスクフローモデル構成要素１０８６
少なくとも１つの実施形態において、タスクフローモデル構成要素１０８６はタスクフローモデルを提供するように動作可能であり、これは問題を解決するか又は要望に対処するのに行われるステップを表す。例えば夕食の予約を取るタスクフローは、所望のレストランを見つけることと、空き状況をチェックすることと、特定の時間にそのレストランの予約を取るためのトランザクションを行うこととを含む。
【０３０６】
特定の実施形態によると、タスクフローモデル構成要素１０８６の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、タスクフローモデル構成要素１０８６の種々の態様、特徴及び／又は機能性は、フローグラフの適切なステップを識別するプログラム、状態遷移機械又は他の方法として実現される。
【０３０７】
少なくとも１つの実施形態において、タスクフローモデル構成要素１０８６は、ジェネリックタスクと呼ばれるタスクモデル化フレームワークを使用する。ジェネリックタスクは、ドメイン専用ではなく、タスクのステップとそれらの要求された入力及び生成された出力とをモデル化する抽象的概念である。例えばトランザクションに対するジェネリックタスクは、トランザクションに必要なデータを収集するステップと、トランザクションを実行するステップと、トランザクションの結果を出力するステップとを含み、これら全てが実現するのにどの特定のトランザクションドメイン又はサービスも参照しない。ジェネリックタスクは、ショッピング等のドメインに対してインスタンス化されるが、ショッピングドメインに依存せず、予約及びスケジューリング等のドメインに同等に適切に当てはまる。
【０３０８】
本明細書で説明するタスクフローモデル構成要素１０８６及び／又は手順と関連付けられた機能、動作、行動及び／又は他の特徴の少なくとも一部分は、ジェネリックタスクモデル化フレームワークと関連して本明細書で説明する概念、特徴、構成要素、処理及び／又は他の態様を使用して少なくとも部分的に実現される。
【０３０９】
更に本明細書で説明するタスクフローモデル構成要素１０８６及び／又は手順と関連付けられた機能、動作、行動及び／又は他の特徴の少なくとも一部分は、本明細書で説明するように条件付き選択タスクに関連する概念、特徴、構成要素、処理及び／又は他の態様を使用して少なくとも部分的に実現される。例えばジェネリックタスクの一実施形態は、条件付き選択タスクモデルを使用して実現される。
【０３１０】
少なくとも１つの実施形態において、タスクフローモデル構成要素１０８６の所定のインスタンスは、１つ以上の関連データベースの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。タスクフローモデル構成要素１０８６によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むが、それらに限定されない。
【０３１１】
・ドメインモデル１０５６
・用語集１０５８
・ドメインエンティティデータベース１０７２
・短期メモリ１０５２
・長期個人メモリ１０５４
・ダイアログフローモデル１０８７
・サービス機能モデル１０８８
【０３１２】
図３４を参照すると、一実施形態に従って、条件付き選択タスク３５１のタスクフローの一例を示すフローチャートが示される。
【０３１３】
条件付き選択は、目的が制約の集合に基づく世界中のアイテムの集合からあるアイテムを選択することである一種のジェネリックタスクである。例えば条件付き選択タスク３５１は、レストランのドメインに対してインスタンス化される。条件付き選択タスク３５１は、ユーザ３５２から基準及び制約を請求することにより開始する。例えばユーザは、アジア料理に興味があり、自身のオフィスの近くにある食べる場所を見つけたい。
【０３１４】
ステップ３５３において、アシスタント１００２は、ユーザが閲覧するための明示された基準及び制約を満たすアイテムを提示する。この例において、これは、選択するのに使用されるレストラン及びそれらの特性のリストであってもよい。
【０３１５】
ステップ３５４において、ユーザは基準及び制約を改善する機会を与えられる。例えばユーザは「ｎｅａｒ  ｍｙ  ｏｆｆｉｃｅ（私の職場の近く）」と言うことにより要求を改善する。システムは、ステップ３５３において新しい結果の集合を提示する。
【０３１６】
図３５を参照すると、一実施形態に従って条件付き選択タスク３５１により提示されたアイテムのリスト３５０２を含む画面３５０１の一例が示される。
【０３１７】
ステップ３５５において、ユーザは一致するアイテムから選択する。例えば予約３５６、記憶３５７又は共有３５８等の多くの後続のタスク３５９のうちのいずれも利用可能にされる。種々の実施形態において、後続のタスク３５９は、ウェブ対応サービス及び／又はデバイスにローカルな機能性（カレンダの約束の設定、通話、電子メール又はテキストメッセージの送出及びアラームの設定等）との対話を含む。
【０３１８】
図３５の例において、ユーザは更なる詳細を見て追加の行動を実行するためにリスト３５０２内のアイテムを選択する。図３６を参照すると、ユーザがリスト３５０２からアイテムを選択した後の画面３６０１の一例が示される。選択されたアイテムに関する後続のタスク３５９に対応する追加の情報及びオプションが表示される。
【０３１９】
種々の実施形態において、明示的なダイアログプロンプト及びＧＵＩリンクのあらゆる組み合わせを含むがそれらに限定されないいくつかの入力モダリティのいずれにおいても、フローステップはユーザに提供される。
【０３２０】
サービス構成要素１０８４
サービス構成要素１０８４は、インテリジェント自動アシスタント１００２がユーザの代わりに呼び出すサービスの集合を表す。呼び出されるいずれのサービスも、サービス構成要素１０８４において提供される。
【０３２１】
少なくとも１つの実施形態において、サービス構成要素１０８４は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０３２２】
・通常、サービスに対するウェブベースのユーザインタフェースにより提供されるＡＰＩを介して機能を提供する。例えばレビューウェブサイトは、プログラムにより呼び出された時に自動的に所定のエンティティのレビューを返すサービスＡＰＩを提供する。ＡＰＩは、ユーザがウェブサイトのユーザインタフェースを動作させることにより取得されるサービスをインテリジェント自動アシスタント１００２に提供する。
【０３２３】
・通常、アプリケーションに対するユーザインタフェースにより提供されるＡＰＩを介して機能を提供する。例えばカレンダアプリケーションは、プログラムにより呼び出された時に自動的にカレンダエントリを返すサービスＡＰＩを提供する。ＡＰＩは、ユーザがアプリケーションのユーザインタフェースを動作させることにより取得されるサービスをインテリジェント自動アシスタント１００２に提供する。一実施形態において、アシスタント１００２は、デバイスが利用可能な多くの種々の機能のうちのいずれも開始及び制御できる。例えばアシスタント１００２がスマートフォン、パーソナルデジタルアシスタント、タブレットコンピュータ又は他のデバイスにインストールされる場合、アシスタント１００２は、例えばアプリケーションの開始、通話、電子メール及び／又はテキストメッセージの送出、カレンダイベントの追加及びアラームの設定等の機能を実行できる。一実施形態において、そのような機能は、サービス構成要素１０８４を使用して有効にされる。
【０３２４】
・現在ユーザインタフェースにおいて実現されていないが、より大きいタスクにおいてアシスタントがＡＰＩを介して利用可能であるサービスを提供する。例えば一実施形態において、住所を得て機械可読地理座標を返すＡＰＩは、ウェブ又はデバイスにおいて直接ユーザインタフェースを有さない場合でもサービス構成要素１０８４としてアシスタント１００２により使用される。
【０３２５】
特定の実施形態によると、サービス構成要素１０８４の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、サービス構成要素１０８４の種々の態様、特徴及び／又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の１つ以上（又はそれらの組み合わせ）により実行、実現及び／又は開始される。
【０３２６】
・ローカル、リモート又はあらゆる組み合わせでサービスにより示されるＡＰＩの実現。
・自動アシスタント１００２又はアシスタント１００２が利用可能なデータベースサービス内にデータベースを含むこと。
【０３２７】
例えば映画を閲覧するインタフェースをユーザに提供するウェブサイトは、ウェブサイトにより使用されるデータベースのコピーとしてインテリジェント自動アシスタント１００２の一実施形態により使用される。サービス構成要素１０８４は、データがローカルに保持される場合でもネットワークＡＰＩを介して提供されるかのように内部ＡＰＩをデータに提供する。
【０３２８】
別の例として、レストランの選択及び食事の計画を助長するインテリジェント自動アシスタント１００２のサービス構成要素１０８４は、ネットワークを介して第三者から入手可能な以下のサービスの集合のいずれか又は全てを含む。
・名前、場所又は他の制約に一致するレストランを一覧表示するレストランリストサービスの集合。
・指名されたレストランに対するランク付けを返すレストラン評価サービスの集合。
・指名されたレストランに対する書面のレビューを返すレストランレビューサービスの集合。
・地図上でレストランの場所を特定するジオコーディングサービス。
・プログラムに基づくレストランのテーブルの予約を可能にする予約サービス。
【０３２９】
サービスオーケストレーション構成要素１０８２
インテリジェント自動アシスタント１００２のサービスオーケストレーション構成要素１０８２は、サービスオーケストレーション手順を実行する。
【０３３０】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２は、以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
・ユーザの要求及び／又は指定されたドメイン及びタスクを満たすサービスを動的且つ自動的に判定する。
・並行及び順序付けのあらゆる組み合わせで複数のサービスを動的且つ自動的に呼び出す。
・サービスＡＰＩの入力要件を満たすようにタスクパラメータ及び制約を動的且つ自動的に変換する。
・複数のサービスからの結果を動的且つ自動的に監視し且つ収集する。
・種々のサービスからのサービス結果データを統一結果モデルに動的且つ自動的にマージする。
・要求の制約を満たすように複数のサービスをオーケストレーションする。
・補助情報により既存の結果の集合に注釈をつけるように複数のサービスをオーケストレーションする。
【０３３１】
・種々のサービスからの結果を統一するサービスに依存しない統一表現で複数のサービスを呼び出した結果を出力する（例えば、レストランのリストを返し、いくつかのサービスからの少なくとも１つのレストランに関するデータをマージし、冗長性を除去するいくつかのレストランサービスを呼び出した結果として）。
【０３３２】
例えば、ある状況において、特定のタスクを達成する方法がいくつか存在する。例えば「ｒｅｍｉｎｄ  ｍｅ  ｔｏ  ｌｅａｖｅ  ｆｏｒ  ｍｙ  ｍｅｅｔｉｎｇ  ａｃｒｏｓｓ  ｔｏｗｎ  ａｔ  ２ｐｍ」等のユーザ入力は、少なくとも３つの方法、すなわちアラームクロックの設定、カレンダイベントの作成又はｔｏ−ｄｏマネージャの呼び出しで達成される行動を指定する。一実施形態において、サービスオーケストレーション構成要素１０８２は、要求を最適に満足する方法に関して判定を行う。
【０３３３】
サービスオーケストレーション構成要素１０８２は、所定のタスク全体を実行するために呼び出すのに最適ないくつかのサービスの組み合わせに関しても判定を行う。例えば夕食のためにテーブルを見つけて予約するために、サービスオーケストレーション構成要素１０８２は、レビューを参照し、空き状況を取得し且つ予約をするという機能を実行するために呼び出すサービスに関して判定を行う。使用するサービスの判定は、多くの種々の要因のいずれかに依存する。例えば少なくとも１つの実施形態において、信頼性、特定の種類の要求に対処するサービスの能力及びユーザフィードバック等に関する情報は、呼び出すのに適切なサービスを判定する際の要因として使用される。
【０３３４】
特定の実施形態によると、サービスオーケストレーション構成要素１０８２の複数のインスタンス又はスレッドは、１つ以上のプロセッサ、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。
【０３３５】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２の所定のインスタンスは、明示的なサービス機能モデル１０８８を使用して、外部サービスの機能及び他の特性を表し、サービスオーケストレーション構成要素１０８２の特徴を達成しつつそれら機能及び特性について推論する。これは、サービスの集合を手作業でプログラミングすることと比較して、例えば以下のうちの１つ以上（又はそれらの組み合わせ）を含む利点を与える。
【０３３６】
・開発の容易さ
・実行時のロバスト性及び信頼性
・コードを妨害することなく動的にサービスを追加及び除去する能力
・特定のサービス又はＡＰＩに対してハードコーディングするのではなく、特性及び機能により駆動される一般的な分散クエリ最適化アルゴリズムを実現する能力
【０３３７】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２の所定のインスタンスは、１つ以上の関連データベースの情報にアクセスし且つ／又はそれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。サービスオーケストレーション構成要素１０８２によりアクセスされる種々のデータの例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むが、それらに限定されない。
【０３３８】
・ドメインモデルのインスタンス化
・自然言語入力の構文的な構文解析及び意味的な構文解析
・タスクモデルのインスタンス化（パラメータに対する値による）
・ダイアログ及びタスクフローモデル、並びに／あるいはそれらモデル内の選択されたステップ
・サービス機能モデル１０８８
・アクティブオントロジ１０５０において入手可能なあらゆる他の情報
【０３３９】
図３７を参照すると、一実施形態に従ってサービスオーケストレーション手順を実行する手順の一例が示される。
【０３４０】
この特定の例において、単一のユーザは、レストランでの夕食に適切な場所を見つけることに興味があり、このサービスを提供しやすくするために会話においてインテリジェント自動アシスタント１００２を使用していると仮定する。
【０３４１】
高級であり、好評であり、特定の場所に近く、特定の時間に予約でき、且つ特定の種類の食べ物を提供するレストランを見つけるタスクを考慮する。これらのドメイン及びタスクパラメータは入力３９０として与えられる。
【０３４２】
方法が開始される（４００）。４０２において、所定の要求がいずれかのサービスを必要とするかが判定される。ある状況において、例えばアシスタント１００２が所望のタスク自体を実行できる場合、サービスの委任は要求されない。例えば一実施形態において、アシスタント１００２は、サービスの委任を呼び出さずに実際の質問に応答できる。従って、要求がサービスを必要としない場合、スタンドアロンフローステップが４０３において実行され、その結果４９０が返される。例えば、タスク要求が自動アシスタント１００２自体に関する情報を要求することである場合、ダイアログ応答は、いずれの外部サービスも呼び出さずに対処される。
【０３４３】
ステップ４０２においてサービスの委任が必要とされると判定される場合、サービスオーケストレーション構成要素１０８２はステップ４０４に進む。４０４において、サービスオーケストレーション構成要素１０８２は、サービス機能モデル１０８８におけるサービスの機能及び特性の宣言的記述とタスク要件とをマッチングする。インスタンス化された動作をサポートする少なくとも１つのサービスプロバイダは、宣言的で定性的なメタデータの詳細、例えば以下のうちの１つ以上（又はそれらの組み合わせ）を提供する。
【０３４４】
・結果を返されるデータフィールド
・サービスプロバイダが静的にサポートすることが分かっているパラメータのクラス
・パラメータ値の動的な検査の後にサービスプロバイダがサポートできるパラメータのポリシー関数
・サービスの実行方法を規定する性能評価（例えば、リレーショナルＤＢ、ウェブサービス、トリプルストア、フルテキストインデックス又はそれらのある組み合わせ）
・結果オブジェクトと共に返される特性値の予想品質を静的に規定する特性品質の評価
・サービスが返すと予想される結果の全体品質の評価
【０３４５】
例えばサービスがサポートするパラメータのクラスを推論すると、サービスモデルは、サービス１、２、３及び４が特定の場所（パラメータ）に近いレストランを提供し、サービス２及び３が品質（別のパラメータ）によりレストランをフィルタリングするか又はランク付けし、サービス３、４及び５がレストラン（返されたデータフィールド）に対するレビューを返し、サービス６がレストラン（返されたデータフィールド）により提供される食べ物の種類を一覧表示し、サービス７が特定の時間帯（パラメータ）のレストランの空き状況をチェックすることを明示する。サービス８〜９９は、この特定のドメイン及びタスクに対して必要とされない機能を提供する。
【０３４６】
この宣言的で定性的なメタデータ、タスク、タスクパラメータ及びアシスタントの実行環境から入手可能な他の情報を使用して、サービスオーケストレーション構成要素１０８２は呼び出すのに最適なサービスプロバイダの集合を判定する（４０４）。最適なサービスプロバイダの集合は、１つ以上のタスクパラメータ（１つ以上のパラメータを満足する結果を返す）をサポートし、少なくとも１つのサービスプロバイダの性能の評価及び少なくとも１つのサービスプロバイダの全体品質の評価を考慮する。
【０３４７】
ステップ４０４の結果は、この特定のユーザ及び要求に対する動的に生成された呼び出すサービスのリストである。
【０３４８】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２は、サービスの信頼性及び特定の情報要求に回答する能力を考慮する。
【０３４９】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２は、オーバラップするサービス又は冗長なサービスを呼び出すことにより非信頼性を回避する。
【０３５０】
少なくとも１つの実施形態において、サービスオーケストレーション構成要素１０８２は、サービスを選択するためにユーザに関する個人情報（短期個人メモリ構成要素）を考慮する。例えばユーザは、他のサービスよりある評価サービスを好む。
【０３５１】
ステップ４５０において、サービスオーケストレーション構成要素１０８２は、ユーザのために複数のサービスを動的且つ自動的に呼び出す。少なくとも１つの実施形態において、ユーザの要求に応答しつつ、これらサービスが動的に呼び出される。特定の実施形態によると、サービスの複数のインスタンス又はスレッドは同時に呼び出される。少なくとも１つの実施形態において、これらはＡＰＩを使用してネットワークを介して呼び出されるか、ウェブサービスＡＰＩを使用してネットワークを介して呼び出されるか、ウェブサービスＡＰＩを使用してインターネットを介して呼び出されるか、あるいはそれらのあらゆる組み合わせで呼び出される。
【０３５２】
少なくとも１つの実施形態において、サービスが呼び出される頻度は、プログラムに基づいて制限され且つ／又は管理される。
【０３５３】
図３８を参照すると、一実施形態に係るサービス呼び出し手順４５０の一例が示される。サービス呼び出しは、例えば追加の情報を取得するため又は外部サービスを使用してタスクを実行するために使用される。一実施形態において、要求パラメータは、サービスのＡＰＩに適切なものとして変換される。結果がサービスから受信されると、それら結果は、アシスタント１００２内でユーザに提示するための結果表現に変換される。
【０３５４】
少なくとも１つの実施形態において、サービス呼び出し手順４５０により呼び出されたサービスは、ウェブサービス、デバイスで実行するアプリケーション又はオペレーティングシステム機能等である。
【０３５５】
要求の表現３９０は、例えばタスクパラメータ等を含んで提供される。サービス機能モデル１０８８から利用可能な少なくとも１つのサービスに対して、サービス呼び出し手順４５０は、変換ステップ４５２、呼び出しステップ４５４及び出力マッピングステップ４５６を実行する。
【０３５６】
変換ステップ４５２において、要求表現３９０の現在のタスクパラメータは、少なくとも１つのサービスにより使用される形式に変換される。ＡＰＩ又はデータベースとして提供されるサービスに対するパラメータは、タスク要求において使用されるデータ表現とは異なり、少なくとも互いに異なる。従って、ステップ４５２の目的は、少なくとも１つのタスクパラメータを呼び出されている少なくとも１つのサービスにおける１つ以上の対応する形式及び値にマッピングすることである。
【０３５７】
例えばレストラン等のビジネス名は、そのようなビジネスに対処するサービス間で異なる。従って、ステップ４５２は、あらゆる名前を少なくとも１つのサービスに最適な形式に変換することを含む。
【０３５８】
別の例として、場所は、サービス間で種々の単位及び規則を使用して種々の精度で既知である。サービス１は郵便番号を必要とし、サービス２はＧＰＳ座標を必要とし、サービス３は郵便用の住所を必要とする。
【０３５９】
サービスはＡＰＩを介して呼び出され（４５４）、そのデータが収集される。少なくとも１つの実施形態において、結果がキャッシュされる。少なくとも１つの実施形態において、指定されたレベルの性能（例えば、サービス品質保証制度、すなわちＳＬＡにおいて指定されるような）内で返さないサービスがドロップされる。
【０３６０】
出力マッピングステップ４５６において、サービスにより返されたデータが統一結果表現４９０に再度マッピングされる。このステップは、種々の形式及び単位等を処理することを含む。
【０３６１】
ステップ４１２において、複数のサービスからの結果は検査されてマージされる。一実施形態において、検査された結果が収集される場合、ドメイン毎に規定された同等ポリシー関数は、実世界において同一の概念を表す結果を判定するために１つ以上の結果にわたり対毎に呼び出される。同等の結果の対が発見される場合、ドメイン毎に規定された特性ポリシー関数の集合が特性値をマージ結果にマージするために使用される。特性ポリシー関数は、サービス機能モデル、タスクパラメータ、ドメインコンテキスト及び／又は長期個人メモリ１０５４からの特性品質の評価を使用して最適なマージ戦略を決定する。
【０３６２】
例えばレストランの種々のプロバイダからのレストランのリストはマージされ、複製は除去される。少なくとも１つの実施形態において、複製を識別する基準は、ファジィ名前マッチング、ファジィ場所マッチング、名前、場所、電話番号及び／又はウェブサイトアドレス等のドメインエンティティの複数の特性に対するファジィマッチング、並びに／あるいはそれらの組み合わせを含む。
【０３６３】
ステップ４１４において、結果はソートされ、所望の長さの結果リストを返すように削除される。
【０３６４】
少なくとも１つの実施形態において、要求緩和ループが更に適用される。ステップ４１６において現在の結果リストが十分でないこと（例えば、現在の結果リストが所望の一致するアイテム数より少ないアイテムを有すること）をサービスオーケストレーション構成要素１０８２が判定する場合、タスクパラメータはより多くの結果を可能にするために緩和される（４２０）。例えば対象とする場所からＮマイル内で見つけられる所望の種類のレストラン数が少なすぎる場合、要求を緩和し、Ｎマイルより広い地域を見て且つ／又は探索の他のパラメータを緩和する。
【０３６５】
少なくとも１つの実施形態において、サービスオーケストレーション方法は、タスクに有用な補助データにより結果に注釈をつけるために２回目の通過時に適用される。
【０３６６】
ステップ４１８において、サービスオーケストレーション構成要素１０８２は、注釈が必要とされるかを判定する。例えばタスクが地図上での結果のプロットを必要とするが、主なサービスはマッピングに必要な地理座標を返さなかった場合に、注釈は必要とされる。
【０３６７】
４２２において、サービス機能モデル１０８８は、所望の追加の情報を返すサービスを見つけるために再調査される。一実施形態において、注釈処理は、マージ結果に追加のデータ又はより適切なデータの注釈をつけるかを判定する。注釈処理は、少なくとも１つのマージ結果の少なくとも１つの特性に対してドメイン毎に規定された特性ポリシー関数に委任することによりその判定を行う。特性ポリシー関数は、より適切なデータが取得されるかを決定するために、マージした特性値及び特性品質の評価、１つ以上の他のサービスプロバイダの特性品質の評価、ドメインコンテキスト及び／又はユーザプロフィールを使用する。１つ以上のサービスプロバイダがマージ結果に対して１つ以上の特性に注釈をつけることが判定された場合、費用関数は、注釈をつけるのに最適なサービスプロバイダの集合を判定するために呼び出される。
【０３６８】
最適な注釈サービスプロバイダの集合の少なくとも１つのサービスプロバイダは、結果４２４を取得するためにマージ結果のリストを使用して呼び出される（４５０）。少なくとも１つのサービスプロバイダにより少なくとも１つのマージ結果に行われた変更は、この処理中追跡され、変更はステップ４１２で使用されたのと同一の特性ポリシー関数処理を使用してマージされる。それらの結果は、既存の結果の集合にマージされる（４２６）。
【０３６９】
結果として得られたデータはソートされ（４２８）、統一表現４９０に統一される。
【０３７０】
サービスオーケストレーション構成要素１０８２に関して上述した方法及びシステムの１つの利点は、インテリジェント自動アシスタントに特に関連する技術分野以外の種々の技術分野において有利に適用及び／又は利用されることであることが理解される。サービスオーケストレーション手順の態様及び／又は特徴の他の技術分野の例は、例えば以下のうちの１つ以上を含む。
【０３７１】
・ウェブサイト、並びにウェブベースのアプリケーション及びサービスにおける動的な「マッシュアップ」
・分散データベースクエリ最適化
・動的サービス指向アーキテクチャ構成
【０３７２】
サービス機能モデル構成要素１０８８
少なくとも１つの実施形態において、サービス機能モデル構成要素１０８８は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
・特定のクラスの計算を実行するためにサービスの機能に関する機械可読情報を提供する。
・特定のクラスのクエリに回答するためにサービスの機能に関する機械可読情報を提供する。
・種々のサービスにより提供されるトランザクションのクラスに関する機械可読情報を提供する。
・種々のサービスにより示されるＡＰＩに対するパラメータに関する機械可読情報を提供する。
・種々のサービスにより提供されるデータベースに対するデータベースクエリにおいて使用されるパラメータに関する機械可読情報を提供する。
【０３７３】
出力プロセッサ構成要素１０９０
少なくとも１つの実施形態において、出力プロセッサ構成要素１０９０は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０３７４】
・統一内部データ構造で表される出力データを種々のモダリティにおいてそれを適切にレンダリングする形式及びレイアウトにフォーマットする。出力データは、例えばインテリジェント自動アシスタントとユーザとの間の自然言語での通信、レストラン、映画及び製品の特性等のドメインエンティティに関するデータ、天気予報、フライト状態チェック及び価格等の情報サービスからのドメイン別のデータ結果、並びに／あるいはユーザが出力表現と直接対話することにより応答できるようにする対話リンク及びボタンを含む。
【０３７５】
・例えばグラフィカルユーザインタフェース、テキストメッセージ、電子メールメッセージ、音、アニメーション及び／又は音声出力のあらゆる組み合わせを含むモダリティに対する出力データをレンダリングする。
【０３７６】
・要求に基づいて種々のグラフィカルユーザインタフェースディスプレイエンジンに対するデータを動的にレンダリングする。例えばウェブブラウザ及び／又はデバイスが使用されている時に依存する種々の出力処理レイアウト及び形式を使用する。
【０３７７】
・種々の発話音声で出力データを動的にレンダリングする。
【０３７８】
・ユーザの嗜好に基づいて指定されたモダリティに対して動的にレンダリングする。
【０３７９】
・外観及び触感をカスタマイズするユーザ別の「スキン」を使用して出力を動的にレンダリングする。
【０３８０】
・モダリティに対して出力パッケージのストリームを送出し、アシスタント１００２との対話の段階にわたり中間状態、フィードバック又は結果を示す。
【０３８１】
特定の実施形態によると、出力プロセッサ構成要素１０９０の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、出力プロセッサ構成要素１０９０の種々の態様、特徴及び／又は機能性は、以下の種類のシステム、構成要素、システム、デバイス、手順及び処理等の１つ以上（又はそれらの組み合わせ）により実行、実現及び／又は開始される。
・インテリジェント自動アシスタントの一実施形態のクライアント又はサーバ内のソフトウェアモジュール。
・リモートで呼び出し可能なサービス。
・手続きコード及びテンプレートの組み合わせを使用する。
【０３８２】
図３９を参照すると、一実施形態に係る多相出力手順の一例を示すフローチャートが示される。多相出力手順は、自動アシスタント１００２の処理ステップ７０２及び多相出力ステップ７０４を含む。
【０３８３】
ステップ７１０において、音声入力発話が取得され、音声−テキスト構成要素（図２２に関連して説明した構成要素等）は音声を解釈して候補音声解釈７１２の集合を生成する。一実施形態において、音声−テキスト構成要素は、例えばマサチューセッツ州バーリントン（Ｂｕｒｌｉｎｇｔｏｎ、ＭＡ）のニュアンス・コミュニケーション・インコーポレイテッド（Ｎｕａｎｃｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ，Ｉｎｃ．）により市販されているニュアンス認識器（Ｎｕａｎｃｅ  Ｒｅｃｏｇｎｉｚｅｒ）を使用して実現される。候補音声解釈７１２は、７３０において、例えば言い換えられた形式でユーザに示される。例えばインタフェースは、同一の音声サンプルのいくつかの可能な別のテキスト解釈を一覧表示する別の解釈「ｄｉｄ  ｙｏｕ  ｓａｙ？（そのように言った？）」を示す。
【０３８４】
少なくとも１つの実施形態において、ユーザインタフェースは、ユーザが割り込みをして候補音声解釈から選択できるようにするために提供される。
【０３８５】
ステップ７１４において、候補音声解釈７１２は言語インタプリタ１０７０に送出され、言語インタプリタ１０７０は少なくとも１つの候補音声解釈７１２に対してユーザの意図の表現７１６を生成する。ステップ７３２において、ユーザの意図の表現７１６の言い換えが生成され、ユーザに提示される。（図２２の手順１２０の関連するステップ１３２を参照。）
少なくとも１つの実施形態において、ユーザインタフェースにより、ユーザは、割り込みをして自然言語解釈の言い換え７３２から選択できる。
【０３８６】
ステップ７１８において、タスク及びダイアログ解析が実行される。ステップ７３４において、タスク及びドメイン解釈が意図言い換えアルゴリズムを使用してユーザに提示される。
【０３８７】
図４０を参照すると、一実施形態に係る出力処理の一例を示すスクリーンショットが示される。画面４００１は、ステップ７３０により生成されるユーザの音声入力のエコー４００２を含む。画面４００１は、ステップ７３４により生成されたユーザの意図の言い換え４００３を更に含む。一実施形態において、図４０の例に示されるように、特別なフォーマット／強調表示は「ｅｖｅｎｔｓ（イベント）」等のキーワードに対して使用され、インテリジェント自動アシスタント１００２との対話に対するユーザのトレーニングを容易にするために使用される。例えば表示されたテキストのフォーマットを視覚的に観察することにより、ユーザは、インテリジェント自動アシスタントが認識する「ｅｖｅｎｔｓ（イベント）」、「ｎｅｘｔ  Ｗｅｄｎｅｓｄａｙ（次の水曜日）」及び「Ｓａｎ  Ｆｒａｎｃｉｓｃｏ（サンフランシスコ）」等のキーワードを容易に識別し且つ解釈する。
【０３８８】
図３９を参照すると、要求がサービスにディスパッチされ（７２０）、結果が動的に収集されると、中間結果はリアルタイムの進捗状況の形式で表示される（７３６）。例えばレストランのリストは返され、それらのレビューは、レビューサービスからの結果が到着すると動的に読み込まれる。サービスは、デバイスにローカルに格納される情報及び／又はあらゆる他のソースからの情報にアクセスするサービス及び／又はウェブ対応のサービスを含む。
【０３８９】
応答の統一表現７２２が生成され、適切な出力モダリティに対してフォーマットされる（７２４）。最終的な出力形式が完成した後、７３８において異なる種類の言い換えが提供される。この段階において、結果の集合全体が解析され、初期の要求と比較される。結果の要約又は質問に対する回答が提供される。
【０３９０】
図４１を参照すると、一実施形態に係る出力処理の別の例が示される。画面４１０１は、ステップ７３２により生成されたテキスト解釈の言い換え４１０２、ステップ７３６により生成されたリアルタイムの進捗状況４１０３及びステップ７３８により生成された言い換えられた要約４１０４を示す。また、詳細な結果４１０５も含まれる。
【０３９１】
一実施形態において、アシスタント１００２は、複数のモードで出力を生成できる。図４２を参照すると、一実施形態に係るマルチモーダル出力処理の一例を示すフローチャートが示される。
【０３９２】
方法が開始される（６００）。出力プロセッサ１０９０は、応答の統一表現４９０を取り入れ、適切であり且つ適用可能なモダリティ及びデバイスに従って応答をフォーマットする（６１２）。ステップ６１２は、デバイス及びモダリティモデル６１０、並びに／あるいはドメインデータモデル６１４からの情報を含む。
【０３９３】
応答４９０がフォーマットされると（６１２）、複数の種々の出力機構のうちのいずれかがあらゆる組み合わせで使用される。図４２に示す例は以下を含む。
・テキストメッセージ出力を生成し（６２０）、それはテキストメッセージチャネルに送出される（６３０）。
・電子メール出力を生成し（６２２）、それは電子メールメッセージとして送出される（６３２）。
・ＧＵＩ出力を生成し（６２４）、それはレンダリングするためにデバイス又はウェブブラウザに送出される（６３４）。
・音声出力を生成し（６２６）、それは音声生成モジュールに送出される（６３６）。
【０３９４】
多くの他の出力機構が使用可能であることは、当業者には理解されるだろう。
【０３９５】
一実施形態において、多相出力手順７００により生成された出力メッセージのコンテンツは、マルチモーダル出力処理６００のモードに適合される。例えば出力モダリティが音声である場合（６２６）、ユーザ入力７３０、テキスト解釈７３２、タスク及びドメイン解釈７３４、進捗状況７３６、並びに／あるいは結果の要約７３８を言い換えるのに使用される言語は、多少冗長であり、あるいはテキストで書かれる形式より可聴形式の方が理解し易い文を使用する。一実施形態において、言語は多相出力手順７００のステップにおいて適合される。他の実施形態において、多相出力手順７００は中間結果を生成し、それはマルチモーダル出力処理６００により特定の言語に更に改善される。
【０３９６】
短期個人メモリ構成要素１０５２
少なくとも１つの実施形態において、短期個人メモリ構成要素１０５２は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
・ユーザ入力及びそれらの解釈の履歴を含むアシスタントの実施形態とユーザとの間の最近のダイアログの履歴を保持する。
・開かれたか又は探索されたアイテム、電話をかけた電話番号、マッピングされたアイテム及び再生された映画予告等のＧＵＩにおけるユーザによる最近の選択の履歴を保持する。
・クライアントのデータベース、ユーザ別のセッション又はウェブブラウザクッキー等のクライアントセッション状態におけるサーバ、あるいはクライアントにより使用されるＲＡＭにダイアログ及びユーザ対話の履歴を格納する。
・最近のユーザ要求のリストを格納する。
・最近のユーザ要求の結果のシーケンスを格納する。
・ボタン押下、タップ、ジェスチャ、音声起動トリガ及び／又はあらゆる他のユーザ入力を含むＵＩ事象のクリックストリーム履歴を格納する。
・アシスタントとの対話と相関するデバイスセンサデータ（場所、時間、位置姿勢、動き、光レベル及びサウンドレベル等）を格納する。
【０３９７】
特定の実施形態によると、短期個人メモリ構成要素１０５２の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。
【０３９８】
種々の実施形態によると、短期個人メモリ構成要素１０５２の１つ以上の異なるスレッド又はインスタンスは、短期個人メモリ構成要素１０５２の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。例えば短期個人メモリ構成要素１０５２は、ユーザによる少なくも１つの入力形式又は行動、あるいはシステムによる応答の際に、アシスタント１００２に実施形態とのユーザセッションがある場合に呼び出される。
【０３９９】
少なくとも１つの実施形態において、短期個人メモリ構成要素１０５２の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はこれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。例えば短期個人メモリ構成要素１０５２は、長期個人メモリ構成要素１０５４からのデータにアクセスし（例えば、ユーザの本人確認及び個人の嗜好を取得するために）、且つ／又は短期メモリエントリに含まれる時間及び場所に関するローカルデバイスからのデータにアクセスする。
【０４００】
図４３Ａ及び図４３Ｂを参照すると、一実施形態に従って場所を変更しつつダイアログコンテキストを維持するために短期個人メモリ構成要素１０５２を使用する一例を示すスクリーンショットが示される。この例において、ユーザは現地の天気に関して尋ねており、単に「ｉｎ  ｎｅｗ  ｙｏｒｋ（ニューヨークの）」と言う。画面４３０１は、現地の天気を含む初期応答を示す。ユーザが「ｉｎ  ｎｅｗ  ｙｏｒｋ」と言った時、アシスタント１００２は短期個人メモリ構成要素１０５２を使用してダイアログコンテキストにアクセスし、現在のドメインが天気予報であると判定する。これにより、アシスタント１００２は、「ｗｈａｔ  ｉｓ  ｔｈｅ  ｗｅａｔｈｅｒ  ｆｏｒｅｃａｓｔ  ｉｎ  Ｎｅｗ  Ｙｏｒｋ  ｔｈｉｓ  ｃｏｍｉｎｇ  Ｔｕｅｓｄａｙ？（今度の火曜日のニューヨークの天気予報は？）」を意味するように新しい発話「ｉｎ  ｎｅｗ  ｙｏｒｋ」を解釈する。画面４３０２は、Ｎｅｗ  Ｙｏｒｋの天気予報を含む適切な応答を示す。
【０４０１】
図４３Ａ及び図４３Ｂの例において、短期メモリには、入力「ｉｓ  ｉｔ  ｇｏｉｎｇ  ｔｏ  ｒａｉｎ  ｔｈｅ  ｄａｙ  ａｆｔｅｒ  ｔｏｍｏｒｒｏｗ？（明後日は雨でしょう）」の単語だけでなく、天気ドメインとしての入力のシステムの意味的な解釈及びｔｈｅ  ｄａｙ  ａｆｔｅｒ  ｔｏｍｏｒｒｏｗ（明後日）に設定された時間パラメータも格納された。
【０４０２】
長期個人メモリ構成要素１０５４
少なくとも１つの実施形態において、長期個人メモリ構成要素１０５４は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
・ユーザの嗜好、本人確認、認証証明、アカウント及びアドレス等を含む個人情報及びユーザに関するデータを固定的に格納すること。
・ブックマーク、お気に入り及びクリッピングの等価物等のアシスタント１００２の実施形態を使用することによりユーザが収集した情報を格納すること。
・レストラン、ホテル、ストア、劇場及び他の場所を含む保存されたビジネスエンティティのリストを固定的に格納すること。一実施形態において、長期個人メモリ構成要素１０５４は、名前又はＵＲＬだけでなく、電話番号、地図上の場所及び写真等を含むエンティティに関するフルリストを示すのに十分な情報も保存する。
・保存した映画、ビデオ、音楽、ショー及び他のエンターテイメントのアイテムを固定的に格納すること。
・ユーザの個人カレンダ、ｔｏ  ｄｏリスト、リマインダ及びアラート、連絡先データベース、並びにソーシャルネットワークリスト等を固定的に格納すること。
・製品及びサービス、取得されたクーポン及び割引コード等に対するショッピングリスト及び要望リストを固定的に格納すること。
・予約、購入及び事象に対するチケット等を含むトランザクションに対する履歴及びレシートを固定的に格納すること。
【０４０３】
特定の実施形態によると、長期個人メモリ構成要素１０５４の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。例えば少なくともいくつかの実施形態において、長期個人メモリ構成要素１０５４の種々の態様、特徴及び／又は機能性は、クライアント１３０４及び／又はサーバ１３４０にあり（又はそれと関連する）且つ／あるいは記憶装置に常駐する１つ以上のデータベース及び／又はファイルを使用して実行、実現及び／又は開始される。
【０４０４】
種々の実施形態によると、長期個人メモリ構成要素１０５４の１つ以上の異なるスレッド又はインスタンスは、長期個人メモリ構成要素１０５４の少なくとも１つのインスタンスの開始をトリガする種々の最小閾値基準を満足する１つ以上の条件又は事象の検出に応答して開始される。長期個人メモリ構成要素１０５４の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガする種々の条件又は事象の種々の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０４０５】
・長期個人メモリエントリは、ユーザがアシスタント１００２の一実施形態と対話する際の副作用として取得される。アシスタントとのあらゆる種類の対話は、閲覧、探索、発見、ショッピング、スケジューリング、購入、予約、アシスタントを介する他のユーザとの通信を含む長期個人メモリに対する付加を生成する。
・長期個人メモリは、ユーザがアカウント又はサービスにサインアップし、アシスタント１００２が他のサービスのアカウントにアクセスできるようにし、カレンダ、ｔｏ−ｄｏリスト及び連絡先リスト等の他の個人情報データベースへのアクセス権を有するクライアントデバイス上でアシスタント１００２のサービスを使用するなどした結果として累積される。
【０４０６】
少なくとも１つの実施形態において、長期個人メモリ構成要素１０５４の所定のインスタンスは、１つ以上の関連データベースからの情報にアクセスし且つ／又はこれを利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、例えばクライアント１３０４及び／又はサーバ１３４０に配置される１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。長期個人メモリ構成要素１０５４によりアクセスされる種々のデータの例は、外部サービス１３６０等により提供される連絡先又は友人リスト、カレンダ、ｔｏ−ｄｏリスト、他のリストマネージャ、個人アカウント及びウォレットマネージャ等の他の個人情報データベースからのデータを含むがそれらに限定されない。
【０４０７】
図４４Ａ〜図４４Ｃを参照すると、一実施形態に従って長期個人メモリ構成要素１０５４を使用する一例を示すスクリーンショットが示される。この例において、アシスタント１００２の一実施形態との対話セッションを介して見つけられるレストラン、映画及びビジネス等の保存されたエンティティへのアクセスを含む特徴が提供される（「Ｍｙ  Ｓｔｕｆｆ（マイスタッフ）」と呼ばれる）。図４４Ａの画面４４０１において、ユーザはレストランを見つけた。ユーザはＳａｖｅ  ｔｏ  Ｍｙ  Ｓｔｕｆｆ（マイスタッフへ保存）４４０２をタップし、レストランに関する情報を長期個人メモリ構成要素１０５４に保存する。
【０４０８】
図４４Ｂの画面４４０３は、Ｍｙ  Ｓｔｕｆｆへのユーザアクセスを示す。一実施形態において、ユーザは所望のアイテムにナビゲートするためにカテゴリから選択できる。
【０４０９】
図４４Ｃの画面４４０４は、Ｍｙ  Ｓｔｕｆｆに先に格納されたアイテムを含むＭｙ  Ｒｅｓｔａｕｒａｎｔ（マイレストラン）カテゴリを示す。
【０４１０】
自動呼出し及び応答手順
図３３を参照すると、一実施形態に係る自動呼出し及び応答手順を示すフローチャートが示される。図３３の手順は、インテリジェント自動アシスタント１００２の１つ以上の実施形態と関連して実現される。図１に示すようなインテリジェント自動アシスタント１００２は、実現される広範なインテリジェント自動アシスタントシステムの実施形態のうちの単なる一例であることが理解される。インテリジェント自動アシスタントシステム（不図示）の他の実施形態は、例えば図１に示したインテリジェント自動アシスタント１００２の例において示す構成要素／特徴と比較して、追加の構成要素／特徴、より少ない構成要素／特徴、並びに／あるいは異なる構成要素／特徴を含む。
【０４１１】
少なくとも１つの実施形態において、図３３の自動呼出し及び応答手順は、例えば以下のうちの１つ以上（又はそれらの組み合わせ）等の種々の機能、動作、行動及び／又は他の特徴を実行及び／又は実現するように動作可能である。
【０４１２】
・図３３の自動呼出し及び応答手順は、ユーザとインテリジェント自動アシスタント１００２との間の会話インタフェースのインタフェース制御フローループを提供する。自動呼出し及び応答手順の少なくとも１回の実行は、１回の会話のやりとりである。会話インタフェースは、ユーザ及びアシスタント１００２が会話のように相互に発話を行うことにより通信するインタフェースである。
・図３３の自動呼出し及び応答手順は、インテリジェント自動アシスタント１００２に対する実行制御フローを提供する。すなわち、手順は、入力の収集と、入力の処理と、出力の生成と、ユーザへの出力の提示とを制御する。
・図３３の自動呼出し及び応答手順は、インテリジェント自動アシスタント１００２の構成要素間の通信を連携する。すなわち、手順は、１つの構成要素の出力が別の構成要素に供給される場所と、環境からの入力全体及び環境における行動が行われる場所とを指示する。
【０４１３】
少なくともいくつかの実施形態において、自動呼出し及び応答手順の部分は、コンピュータネットワークの他のデバイス及び／又はシステムにおいて実現される。
【０４１４】
特定の実施形態によると、自動呼出し及び応答手順の複数のインスタンス又はスレッドは、１つ以上のプロセッサ６３、並びに／あるいはハードウェア及び／又はハードウェアとソフトウェアとの他の組み合わせを使用して同時に実現及び／又は開始される。少なくともいくつかの実施形態において、自動呼出し及び応答手順の１つ以上の部分又は選択された部分は、１つ以上のクライアント１３０４、１つ以上のサーバ１３４０及び／又はそれらの組み合わせにおいて実現される。
【０４１５】
例えば少なくともいくつかの実施形態において、自動呼出し及び応答手順の種々の態様、特徴及び／又は機能性は、ソフトウェアコンポーネント、ネットワークサービス及び／又はデータベース等、あるいはそれらの組み合わせにより実行、実現及び／又は開始される。
【０４１６】
種々の実施形態によると、自動呼出し及び応答手順の１つ以上の異なるスレッド又はインスタンスは、自動呼出し及び応答手順の少なくとも１つのインスタンスの開始をトリガする１つ以上の種々の基準（例えば、最小閾値基準等）を満足する１つ以上の条件又は事象の検出に応答して開始される。自動呼出し及び応答手順の１つ以上の異なるスレッド又はインスタンスの開始及び／又は実現をトリガする種々の条件又は事象の例は、以下のうちの１つ以上（又はそれらの組み合わせ）を含むがそれらに限定されない。
【０４１７】
・例えば以下のうちの１つ以上を含むがそれらに限定されないインテリジェント自動アシスタント１００２のインスタンスとのユーザセッション
・例えばインテリジェント自動アシスタント１００２の一実施形態を実現している移動体デバイスアプリケーションを起動する移動体デバイスアプリケーション
・例えばインテリジェント自動アシスタント１００２の一実施形態を実現しているアプリケーションを起動するコンピュータアプリケーション
・「ｓｐｅｅｃｈ  ｉｎｐｕｔ  ｂｕｔｔｏｎ（音声入力ボタン）」等の押下される移動体デバイス上の専用ボタン
・ヘッドセット、電話ヘッドセット又は基地局、ＧＰＳナビゲーションシステム、民生用機器、リモートコントロール又は呼び出し支援と関連付けられるボタンを有するあらゆる他のデバイス等のコンピュータ又は移動体デバイスに接続された周辺装置上のボタン
・ウェブブラウザからインテリジェント自動アシスタント１００２を実現するウェブサイトに対して開始されたウェブセッション
・例えばインテリジェント自動アシスタント１００２のサービスが要求されるインテリジェント自動アシスタント１００２を実現するウェブサイトに対する既存のウェブブラウザセッション内から開始された対話
・インテリジェント自動アシスタント１００２の一実施形態との通信を仲介しているモダリティサーバ１４２６に送出された電子メールメッセージ
・テキストメッセージがインテリジェント自動アシスタント１００２の一実施形態との通信を仲介しているモダリティサーバ１４２６に送出される
・インテリジェント自動アシスタント１００２の一実施形態との通信を仲介しているモダリティサーバ１４３４に対して電話がかけられる
・アラート又は通知等の事象がインテリジェント自動アシスタント１００２の一実施形態を提供しているアプリケーションに送出される
・インテリジェント自動アシスタント１００２を提供するデバイスがＯＮにされるか且つ／又は開始される場合。
【０４１８】
種々の実施形態によると、自動呼出し及び応答手順の１つ以上の異なるスレッド又はインスタンスは、手動で、自動的に、静的に、動的に、同時に及び／又はそれらの組み合わせで開始及び／又は実現される。更に自動呼出し及び応答手順の種々のインスタンス及び／又は実施形態は、１つ以上の異なる時間間隔で（例えば、特定の時間間隔の間に、一定間隔で、不規則な間隔で及び要望に応じて等）開始される。
【０４１９】
少なくとも１つの実施形態において、自動呼出し及び応答手順の所定のインスタンスは、特定のタスク及び／又は動作を実行する時に種々のデータ及び／又は他の種類の情報を利用及び／又は生成する。これは、例えば入力データ／情報及び／又は出力データ／情報を含む。例えば少なくとも１つの実施形態において、自動呼出し及び応答手順の少なくとも１つのインスタンスは、例えば１つ以上のデータベース等の１つ以上の種々のソースからの情報にアクセスし、それを処理し且つ／又は利用する。少なくとも１つの実施形態において、データベース情報の少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。更に、自動呼出し及び応答手順の少なくとも１つのインスタンスは、１つ以上の種々の出力データ／情報を生成し、それらは、例えばローカルメモリ及び／又はリモートメモリ素子に格納される。
【０４２０】
少なくとも１つの実施形態において、自動呼出し及び応答手順の所定のインスタンスの初期構成は、１つ以上の種々の初期化パラメータを使用して実行される。少なくとも１つの実施形態において、初期化パラメータの少なくとも一部分は、１つ以上のローカル及び／又はリモートメモリ素子との通信を介してアクセスされる。少なくとも１つの実施形態において、自動呼出し及び応答手順のインスタンスに提供される初期化パラメータの少なくとも一部分は、入力データ／情報に対応してもよく、且つ／又は入力データ／情報から導出されてもよい。
【０４２１】
図３３の特定の例において、単一のユーザは、音声入力機能を有するクライアントアプリケーションからネットワークを介してインテリジェント自動アシスタント１００２のインスタンスにアクセスしていると仮定される。ユーザは、レストランでの夕食に適切な場所を見つけることに興味があり、このサービスを提供しやすくするために会話においてインテリジェント自動アシスタント１００２を使用している。
【０４２２】
ステップ１００において、ユーザは要求を入力するように要求される。クライアントのユーザインタフェースは、図２６と関連して説明するようにいくつかの入力モードを提供する。これら入力モードは、例えば以下を含む。
・タイプ入力に対するインタフェースであり、図１１に示すような能動的タイプ入力導出手順を呼び出す。
・音声入力に対するインタフェースであり、図２２に示すような能動的音声入力導出手順を呼び出す。
・メニューから入力を選択するためのインタフェースであり、図２３に示すような能動的ＧＵＩ入力導出を呼び出す。
【０４２３】
他の入力モードが提供されてもよいことが当業者には理解されるだろう。
【０４２４】
一実施形態において、ステップ１００は、例えば図２４と関連して説明した能動的ダイアログ提案入力導出手順において説明した技術を使用して、アシスタント１００２との先の会話からの残っているオプションを提示することを含む。
【０４２５】
例えばステップ１００における能動的入力導出の方法のうちの１つにより、ユーザは「ｗｈｅｒｅ  ｍａｙ  Ｉ  ｇｅｔ  ｓｏｍｅ  ｇｏｏｄ  Ｉｔａｌｉａｎ  ａｒｏｕｎｄ  ｈｅｒｅ？（この辺においしいイタリアンはない？）」とアシスタント１００２に対して言う。例えば、ユーザはこれを音声入力構成要素に対して話した。能動的入力導出構成要素１０９４の一実施形態は、音声−テキストサービスを呼び出し、ユーザに確認するように要求し、確認されたユーザ入力を統一注釈付き入力形式２６０９として提示する。
【０４２６】
言語インタプリタ構成要素１０７０の一実施形態は、図２９と関連して説明するように、ステップ２００において呼び出される。言語インタプリタ構成要素１０７０は、テキスト入力を構文解析し、ユーザの意図２９０の可能な解釈のリストを生成する。１つの構文解析において、単語「ｉｔａｌｉａｎ（イタリアン）」はｒｅｓｔａｕｒａｎｔｓ  ｏｆ  ｓｔｙｌｅ  Ｉｔａｌｉａｎ（イタリアンスタイルのレストラン）と関連付けられ、「ｇｏｏｄ（おいしい）」はｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｐｒｏｐｅｒｔｙ  ｏｆ  ｒｅｓｔａｕｒａｎｔｓ（レストランの推薦プロパティ）と関連付けられ、「ａｒｏｕｎｄ  ｈｅｒｅ（この辺）」は、グローバルセンサ読取値（例えば、移動体デバイスにおいてＧＰＳにより与えられるようなユーザの場所）からの距離を記述する場所パラメータと関連付けられる。
【０４２７】
ステップ３００において、ユーザの意図の表現２９０は、ダイアログフロープロセッサ１０８０に渡され、図３２と関連して説明するようなダイアログ及びフロー解析手順の一実施形態を実現する。ダイアログフロープロセッサ１０８０は、最も可能性の高い意図の解釈を判定し、この解釈をドメインモデルのインスタンス及びタスクモデルのパラメータにマッピングし、ダイアログフローの次のフローステップを判定する。この例において、レストランドメインモデルは、制約（料理の種類、推薦度及び近接度の制約）によりレストランを見つけるために条件付き選択タスクによりインスタンス化される。ダイアログフローモデルは、次のステップがそれら制約を満たすレストランのいくつかの例を取得し且つそれらをユーザに提示することであることを示す。
【０４２８】
ステップ４００において、フロー及びサービスオーケストレーション手順４００の一実施形態がサービスオーケストレーション構成要素１０８２を介して呼び出される。これは、レストランを見つけるというユーザの要求のためにサービス１０８４の集合を呼び出す。一実施形態において、これらのサービス１０８４は、いくつかのデータを共通の結果に与える。それらのデータはマージされ、結果として得られるレストランのリストはサービスに依存しない統一形式で表される。
【０４２９】
ステップ５００において、出力プロセッサ１０９２は、「Ｉ  ｆｏｕｎｄ  ｓｏｍｅ  ｒｅｃｏｍｍｅｎｄｅｄ  Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎｅａｒ  ｈｅｒｅ（この辺の推薦イタリアンレストランがいくつか見つかりました。）」等の結果のダイアログ要約を生成する。出力プロセッサ１０９２は、この要約を出力結果データと組み合わせ、ステップ６００でユーザの特定の移動体デバイスのために出力をフォーマットするモジュールにその組み合わせたデータを送出する。
【０４３０】
ステップ７００において、このデバイス別の出力パッケージは移動体デバイスに送出され、デバイスのクライアントソフトウェアは移動体デバイスの画面（又は他の出力デバイス）にレンダリングする。
【０４３１】
ユーザはこの提示を閲覧し、種々のオプションを探索することを決定する。ユーザがそれを終了すると（７９０）、方法は終了する。ユーザがそれを終了していない場合（７９０）、ステップ１００に戻ることによりループの別の繰り返しが開始される。
【０４３２】
自動呼出し及び応答手順は、例えばユーザのクエリ「ｈｏｗ  ａｂｏｕｔ  ｍｅｘｉｃａｎ  ｆｏｏｄ？（メキシコ料理はいかがですか？）」に適用される。そのような入力は、ステップ１００で導出される。ステップ２００において、入力がｒｅｓｔａｕｒａｎｔｓ  ｏｆ  ｓｔｙｌｅ  Ｍｅｘｉｃａｎ（メキシカンスタイルのレストラン）と解釈され、レストランの種類のパラメータの１つの変更以外は前回と同一の意図の解釈をサポートするために他の状態（短期個人メモリ１０５２に保持される）と組み合わされる。ステップ３００において、この更新された意図は要求を改善し、その要求はステップ４００においてサービスオーケストレーション構成要素１０８２に与えられる。
【０４３３】
ステップ４００において、更新された要求は複数のサービス１０８４にディスパッチされ、その結果、５００においてダイアログにおいて要約され、６００でデバイスに対してフォーマットされ、ステップ７００においてユーザの移動体デバイスで新しい情報を表示するためにネットワークを介して送出される新しいレストランの集合が得られる。
【０４３４】
この場合、ユーザは自身の好みのレストランを見つけ、それを地図上に示し、道順を友人に送出する。
【０４３５】
自動呼出し及び応答手順の種々の実施形態（不図示）は、図３３の特定の実施形態に示す特徴及び／又は動作と比較して追加の特徴及び／又は動作を含んでもよく、且つ／あるいは図３３の特定の実施形態に示す自動呼出し及び応答手順の特徴及び／又は動作の少なくとも一部分を省略してもよいことが当業者には理解されるだろう。
【０４３６】
条件付き選択
一実施形態において、インテリジェント自動アシスタント１００２は、ユーザが興味のある可能性があるアイテムをより効果的に識別して提示するために、ユーザとの対話において条件付き選択を使用する。
【０４３７】
条件付き選択は、一種のジェネリックタスクである。ジェネリックタスクは、あるクラスのタスク間で共通のドメインオブジェクト、入力、出力及び制御フローの種類を特徴付ける抽象概念である。条件付き選択タスクは、選択の制約（所望の料理又は場所等）に基づいてドメインオブジェクト（レストラン等）の選択肢の集合からアイテムを選択することにより実行される。一実施形態において、アシスタント１００２は、ユーザが可能な選択肢の空間を探索しやすくし、ユーザの制約及び嗜好を導出し、選択肢を提示し、それらの選択肢に対して実行する行動、例えば予約、購入、記憶又は共有を提供する。タスクは、ユーザが行動を実行するアイテムを１つ以上選択した時に完了する。
【０４３８】
条件付き選択は多くの状況において有用である。例えば、観る映画、夕食のレストラン、一泊するホテル又は本を購入する場所等を選択する。一般に、条件付き選択は、カテゴリを知っていて、いくつかの所望の特性を有するカテゴリのインスタンスを選択する必要がある場合に有用である。
【０４３９】
条件付き選択に対する１つの従来の方法は、ディレクトリサービスである。ユーザはカテゴリを選択し、システムは選択肢のリストを提供する。ローカルディレクトリにおいて、ユーザは、ディレクトリを都市等の場所に制約する。例えば、「ｙｅｌｌｏｗ  ｐａｇｅｓ」サービスにおいて、ユーザは都市に対する電話帳を選択し、カテゴリを参照し、電話帳はそのカテゴリの１つ以上のアイテムを示す。ディレクトリサービスの主な問題は、関連する可能性のある選択肢の数が多いことである（例えば、所定の都市のレストラン）。
【０４４０】
別の従来の方法はデータベースアプリケーションである。これは、ユーザからのクエリを導出し、一致するアイテムを検索し、主な特徴を強調表示するようにアイテムを提示することにより選択肢の集合を生成する方法を提供する。ユーザは、結果の集合の行及び列を閲覧し、ユーザがいくつかの適切な候補を見つけるまで結果をソートするか又はクエリを変更する可能性が高い。データベースサービスの問題は、ユーザが人間の要求を正規クエリとして動作可能にし、結果として得られるデータを探索するためにソート、フィルタリング及び閲覧の抽象機械を使用する必要があることである。これらは、グラフィカルユーザインタフェースを使用しても殆どのユーザにとって行うのが困難である。
【０４４１】
第３の従来の方法は、「ローカル探索」等の開放型探索である。探索は行うのが容易であるが、ユーザが条件付き選択のタスクを達成することを困難にする探索サービスの問題がいくつかある。特に以下のことである。
・ディレクトリ探索と同様に、ユーザは単にカテゴリを入力して１つ以上の可能な選択肢を調べるのではなく、リストを絞り込む必要がある。
・ユーザが制約により選択の範囲を限定できる場合、使用される制約は明確ではない（例えば、徒歩で行ける距離内にあるか又は遅くまで開いている場所を探せるか？）
・制約を明示する方法が明確でない（例えば、料理の種類又はレストランの種類を要求できるか？可能な価格は？）
・複数の嗜好が矛盾する。通常、所定の状況（例えば、近くにあり、素晴らしいサービスで安くて美味しい食べ物を提供し、夜中まで開いている場所を知りたい）に対する客観的に「最適な」回答はない。
・嗜好は相対的であり、利用可能であるものに依存する。例えば、ユーザが高級レストランのテーブルを予約する場合、ユーザは高くてもそのレストランを選択する。しかし、一般に、ユーザはより安いオプションを好む。
【０４４２】
種々の実施形態において、本発明のアシスタント１００２は、条件付き選択のタスクを合理化しやすくする。種々の実施形態において、アシスタント１００２は、探しているものを明示し、利用可能なものを考慮し、満足のいく解決策を決定する際のユーザ側の労力を軽減するために、データベース及び探索サービス、並びに他の機能性を採用する。
【０４４３】
種々の実施形態において、アシスタント１００２は、多くの種々の方法のうちのいずれかにより条件付き選択を人間にとってより分かりやすくする。
【０４４４】
例えば一実施形態において、アシスタント１００２は特性を制約にして動作可能にする。ユーザは、所望の結果の特性に関して要求することを明示する。アシスタント１００２は、この入力を正規制約にして動作可能にする。例えば、「ｆｉｎｄ  ｏｎｅ  ｏｒ  ｍｏｒｅ  ｒｅｓｔａｕｒａｎｔｓ  ｌｅｓｓ  ｔｈａｎ  ２  ｍｉｌｅｓ  ｆｒｏｍ  ｔｈｅ  ｃｅｎｔｅｒ  ｏｆ  Ｐａｌｏ  Ａｌｔｏ  ｗｈｏｓｅ  ｃｕｉｓｉｎｅ  ｉｎｃｌｕｄｅｓ  Ｉｔａｌｉａｎ  ｆｏｏｄ（パロアルト中心地区から２マイル未満のレストランで、イタリアンフードを提供するところを検索して）」と言う代わりに、ユーザは、単に「Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  ｐａｌｏ  ａｌｔｏ（パロアルトのイタリアンレストラン）」と言ってもよい。アシスタント１００２は、データベースに対するパラメータでないユーザにより要求された特質を動作可能にする。例えばユーザがロマンティックなレストランを要求する場合、システムは、これをテキスト探索として動作可能にするか、一致する制約をタグ付けする。このように、アシスタント１００２は、ユーザが条件付き選択に関して有する可能性のある問題のいくつかを克服しやすくする。ユーザにとって、不適切な解決策と適切な解決策とを区別する条件を記述するより満足のいく解決策を想定して記述する方が容易である。
【０４４５】
一実施形態において、アシスタント１００２は有用な選択基準を提案し、ユーザは、その時点で重要な基準を言うだけでよい。例えばアシスタント１００２は、「ｗｈｉｃｈ  ｏｆ  ｔｈｅｓｅ  ｍａｔｔｅｒ：  ｐｒｉｃｅ  （ｃｈｅａｐｅｒ  ｉｓ  ｂｅｔｔｅｒ），  ｌｏｃａｔｉｏｎ  （ｃｌｏｓｅｒ  ｉｓ  ｂｅｔｔｅｒ），  ｒａｔｉｎｇ  （ｈｉｇｈｅｒ  ｒａｔｅｄ  ｉｓ  ｂｅｔｔｅｒ）？（これらの事項のどれ：価格（安い方がよい）、場所（近い方がよい）、評価（高評価の方がよい））」と尋ねる。アシスタント１００２は、特定の値を要求する基準を提案する可能性がある。例えば、「ｙｏｕ  ｃａｎ  ｓａｙ  ｗｈａｔ  ｋｉｎｄ  ｏｆ  ｃｕｉｓｉｎｅ  ｙｏｕ  ｗｏｕｌｄ  ｌｉｋｅ  ｏｒ  ａ  ｆｏｏｄ  ｉｔｅｍ  ｙｏｕ  ｗｏｕｌｄ  ｌｉｋｅ（どんな料理が好きですか、或いは、どんな食品がすきですか、と言うことができます。）」と提案する。
【０４４６】
一実施形態において、アシスタント１００２は、多くの競合する基準（例えば、価格、品質、空き状況及び便利さ）で異なる選択肢の間で決定を行いやすくする。
【０４４７】
そのようなガイダンスを提供することにより、アシスタント１００２は、ユーザが以下のいくつかの方法のうちのいずれかの方法でマルチパラメータ決定を行いやすくする。
【０４４８】
・１つの方法は、空間の次元を減少し、複数のソースからの評価等の生データを合成「推薦」スコアに組み合わせることである。合成スコアは、データソースに関するドメイン知識を考慮に入れる（例えば、Ｚａｇａｔ評価はＹｅｌｐより品質を予測できる）。
【０４４９】
・別の方法は、基準の部分集合に注目し、「ｗｈａｔ  ａｒｅ  ａｌｌ  ｔｈｅ  ｐｏｓｓｉｂｌｅ  ｃｒｉｔｅｒｉａ  ｔｏ  ｃｏｎｓｉｄｅｒ  ａｎｄ  ｈｏｗ  ｔｏ  ｔｈｅｙ  ｃｏｍｂｉｎｅ？（可能性のある考慮すべき全ての基準が何で、どうやってそれを組み合わせるか？）」の問題を所定の状況における最も重要な基準の選択（例えば、「ｗｈｉｃｈ  ｉｓ  ｍｏｒｅ  ｉｍｐｏｒｔａｎｔ，  ｐｒｉｃｅ  ｏｒ  ｐｒｏｘｉｍｉｔｙ？（価格と近接度のどちらがより重要か？）」）に変更することである。
【０４５０】
・単純な決定を行う別の方法は、デフォルト値及び嗜好の順序を仮定することである（例えば、全てのものは同等であり、より高い評価であり、より近くにあり且つより安価である方がより望ましい）。システムは、デフォルト値及び嗜好を示すユーザの前の応答を記憶している可能性がある。
【０４５１】
・第４に、システムは、元の要求で示されていなかった選択肢の集合におけるアイテムの主な特性を提供する。例えばユーザは、ローカルのイタリア料理を要求した。システムは、レストランの選択肢の集合を提供し、それらを使用して、レビュー者により使用される人気タグ又はガイドブックによるタグライン（例えば、「ａ  ｎｉｃｅ  ｓｐｏｔ  ｆｏｒ  ａ  ｄａｔｅ（素敵なデートスポット）」、「ｇｒｅａｔ  ｐａｓｔａ（すばらしいパスタ）」）のリストを提供する。これにより、ユーザは特定のアイテムを選定し、タスクを完了する。調査は、殆どのユーザが基準に従って決定し且つ最上位に現れるものを合理的に受け入れるのではなく、特定のインスタンスを評価することにより決定を行うことを示す。また、ユーザが詳細な例からの特徴に関して学ぶことを示す。例えば自動車を選択する場合、購入者は、いくつかの自動車がナビゲーションシステムを有することを見る（且つナビゲーションシステムが重要な基準になる）までナビゲーションシステムに関して気にしないだろう。アシスタント１００２は、ユーザが最適なものを選択しやすくするか又は最適化するのに沿う側面を提案する一覧表示されたアイテムの主な特性を提示する。
【０４５２】
概念データモデル
一実施形態において、アシスタント１００２は、概念データモデルを簡略化することにより条件付き選択タスクによる支援を提供する。概念データモデルは、アシスタント１００２のインタフェースにおいてユーザに提示される抽象概念である。上述した心理的問題を克服するために、一実施形態において、アシスタント１００２は、ユーザが制約表現ではなく適切な選択肢の容易に理解され且つ再現されるいくつかの特性に関して要求することを説明するのを可能にするモデルを提供する。このように、特性は、自然言語要求（例えば、キーワードマーカを変更する形容詞）に合成され且つプロンプト（「ｙｏｕ  ｍａｙ  ａｌｓｏ  ｆａｖｏｒ  ｒｅｃｏｍｍｅｎｄｅｄ  ｒｅｓｔａｕｒａｎｔｓ．．．（推薦レストランを気に入るでしょう。）」）で理解可能にするのが容易にされる。一実施形態において、アシスタント１００２が関心ドメイン（例えば、レストラン対ホテル）及びドメイン別の特性によりインスタンス化されるガイダンスに対する一般的な方法を判定するのを可能にするデータモデルが使用される。
【０４５３】
一実施形態において、アシスタント１００２により使用される概念データモデルは選択クラスを含む。これは、選択するものの空間の表現である。例えばレストラン検索アプリケーションにおいて、選択クラスはレストランのクラスである。選択クラスは、抽象的であり、「ｔｈｉｎｇｓ  ｔｏ  ｄｏ  ｗｈｉｌｅ  ｉｎ  ａ  ｄｅｓｔｉｎａｔｉｏｎ（目的地にいる間になすべきこと）」等のサブクラスを有する。一実施形態において、概念データモデルは、所定の問題解決状況において、ユーザが単一の選択クラスから選択することに興味があることを仮定する。この仮定は、対話を簡略化し、アシスタント１００２が権限の境界を宣言することを可能にする（「Ｉ  ｋｎｏｗ  ａｂｏｕｔ  ｌｉｆｅ  ｉｎ  ｔｈｅ  ｃｉｔｙ（都市での生活を知っている。）」とは対照的に「Ｉ  ｋｎｏｗ  ａｂｏｕｔ  ｒｅｓｔａｕｒａｎｔｓ，  ｈｏｔｅｌｓ，  ａｎｄ  ｍｏｖｉｅｓ（レストラン、ホテル、映画について知っている）」）。
【０４５４】
選択クラスを仮定すると、一実施形態において、条件付き選択タスクに対してユーザに提示されたデータモデルは、例えばアイテム、アイテムの特徴、選択基準及び制約を含む。
【０４５５】
アイテムは、選択クラスのインスタンスである。
【０４５６】
アイテムの特徴は、提示され且つ／又は少なくとも１つのアイテムと関連付けられる特性、属性又は計算値である。例えば、レストランの名前及び電話番号はアイテムの特徴である。特徴は、固有であってもよく（レストランの名前又は料理）又は関係があってもよい（例えば、現在の関心場所からの距離）。特徴は、静的であってもよく（例えば、レストラン名）又は動的であってもよい（評価）。特徴は、他のデータ（例えば、「金銭的な価値」のスコア）から計算された合成値であってもよい。アイテムの特徴は、ドメインモデラーにより作成されるユーザに対する抽象概念である。すなわち、アイテムの特徴は、バックエンドサービスからの基礎となるデータに対応する必要はない。
【０４５７】
選択基準は、アイテムの関連性又は値を比較するために使用されるアイテムの特徴である。すなわち、選択基準は好適なアイテムを言う方法である。選択基準は、固有の特性であるか又は計算されるかに関わらずアイテム自体の特徴としてモデル化される。例えば近接度（関心場所からの距離として規定される）は選択基準である。空間−時間における場所は選択基準ではなく特性であり、関心場所からの距離を計算するために関心場所と共に使用される。
【０４５８】
選択基準は、固有の嗜好の順序を有する。すなわち、あらゆる特定の基準の値は、最良優先順序でアイテムを確保するために使用される。例えば近接基準は、より近い方が望ましいという固有の嗜好を有する。一方、場所は固有の嗜好の値を有さない。この制約は、システムがデフォルトの仮定をすることを可能にし、ユーザが基準のみを述べる場合に選択を誘導することを可能にする。例えばユーザインタフェースは、「評価によりソート」するために提供され、より高い評価が望ましいと仮定する。
【０４５９】
１つ以上の選択基準は、アイテムの特徴である。それらは可能なアイテムの中から選択することに関係する特徴である。しかし、アイテムの特徴は必ずしも嗜好に関連しない（例えば、レストランの名前及び電話番号は、それらの中から選択することに一般に関連しない）。
【０４６０】
少なくとも１つの実施形態において、制約は選択基準の所望の値に対する制限である。形式上、制約は、集合の帰属関係（例えば、料理の種類がイタリアンを含む）、パターンの一致（例えば、レストランレビューテキストが「ｒｏｍａｎｔｉｃ」を含む）、ファジィ不等式（例えば、数マイル未満の距離）、品質閾値（例えば、高く評価された）又はより複雑な関数（例えば、金額相応）として表される。一般的な人にとって物事を十分に単純にするために、このデータモデルは、少なくとも１つ以上の制約を単語としてマッチングされる記号値に緩和する。時間及び距離はこの緩和から除外される。一実施形態において、制約を実現するのに使用される演算子及び閾値は、ユーザに非公開である。例えば「ｃｕｉｓｉｎｅ」と呼ばれる選択基準に対する制約は「Ｉｔａｌｉａｎ」又は「Ｃｈｉｎｅｓｅ」等の記号値として表される。評価に対する制約は「ｒｅｃｏｍｍｅｎｄｅｄ」（２値の選択肢）である。一実施形態において、時間及び距離に対しては、アシスタント１００２は、制約値及び入力の範囲に対処する独自の表現を使用する。例えば距離は、「ｗａｌｋｉｎｇ  ｄｉｓｔａｎｃｅ」であり、時間は「ｔｏｎｉｇｈｔ」である。一実施形態において、アシスタント１００２はそのような入力を高精度なデータにマッチングさせるために特別な処理を使用する。
【０４６１】
少なくとも１つの実施形態において、いくつかの制約は要求される制約である。これは、単純にタスクがこのデータなしで完了できないことを意味する。例えば、ユーザが名前を知っている場合でも所望の場所の概念なしではレストランを選択することが困難である。
【０４６２】
要約すると、ドメインは、ユーザにとって重要なアイテムの特徴を含む選択クラスとしてモデル化される。いくつかの特徴は、ユーザに提供されたアイテムを選択し且つ順序付けするために使用される。これらの特徴は選択基準と呼ばれる。制約は、アイテムの集合を一致するアイテムに絞り込む選択基準に対する記号制限である。
【０４６３】
複数の基準は競合し、制約は部分的に一致することが多い。データモデルは、最適化による選択の問題（最適な解決策を見つけること）をマッチングの問題（特定の基準の集合に対して適切であり且つ記号制約の集合に一致するアイテムを見つけること）に軽減する。基準及び制約を選択し且つ順序付けを判定するアルゴリズムについては、次の節で説明する。
【０４６４】
条件付き選択に対する方法論
一実施形態において、アシスタント１００２は、少なくとも１つに対する黙示的又は明示的な制約と共に順序付けされた基準のリストを入力として取り入れ且つ主な特徴を含む候補アイテムの集合を選択することにより条件付き選択を実行する。計算上、選択タスクは、ネストされた探索として特徴付けられる。第１に、選択クラスを識別し、重要な選択基準を識別し、制約（受け入れ可能な解決策の範囲）を指定し、受け入れ可能なアイテムを見つけるために最も適合する順にインスタンスを探索する。
【０４６５】
図４５を参照すると、ネストされた探索である条件付き選択タスクの抽象モデル４５００の一例が示される。この例において、アシスタント１００２は、全ての場所探索の種類４５０１から選択クラスを識別する（４５０５）。識別されたクラスはレストランである。全てのレストランの集合４５０２内で、アシスタント１００２は基準を選択する（４５０６）。この例において、基準は距離として識別される。ＰＡのレストランの集合４５０３内で、アシスタント１００２は探索のための制約を指定する（４５０７）。例において、識別された制約は、「Ｉｔａｌｉａｎ  ｃｕｉｓｉｎｅ」である。ＰＡのイタリアンレストランの集合４５０４内で、アシスタントはユーザに提示するアイテムを選択する（４５０８）。
【０４６６】
一実施形態において、そのようなネストされた探索は、データを導出し且つ結果を提示するフローではなく、関連する入力データを有した時にアシスタント１００２が行うことである。一実施形態において、そのような制御フローは、ダイアログ及びタスクフローモデル等の他の手順により動作するユーザとアシスタント１００２との間のダイアログを介して管理される。条件付き選択は、抽象概念のレベルでダイアログ及びタスクフローモデルを構築するフレームワーク（すなわち、ドメインに関係なく条件付き選択タスクに適切な）を提供する。
【０４６７】
図４６を参照すると、関連する入力データが取得されるように探索処理においてユーザの誘導を容易にするダイアログ４６００の一例が示される。
【０４６８】
ダイアログ４６００の例において、第１のステップは、ユーザが探しているものの種類を明示することであり、これは選択クラスである。例えばユーザは、「ｄｉｎｉｎｇ  ｉｎ  ｐａｌｏ  ａｌｔｏ」と言うことによりこれを行う。これにより、アシスタント１００２はタスク及びドメインを推論できる（４６０１）。
【０４６９】
アシスタント１００２がタスク及びドメインの結合（選択クラス＝レストラン）を理解すると、次のステップは、例えば基準及び／又は制約を請求すること（４６０３）によりそのユーザにとって重要な選択基準を理解することである。上記例において、「ｉｎ  ｐａｌｏ  ａｌｔｏ」は関心場所を示す。レストランのコンテキストにおいて、システムは、場所を近接制約（技術的には、近接基準に対する制約）として解釈する。アシスタント１００２は必要なものを説明し、入力を受信する。選択肢の集合を適度なサイズに制約するのに十分な情報がある場合、アシスタント１００２は、入力を言い換え、近接制約を満たし、ある有用な順序でソートされた１つ以上のレストランを提示する（４６０５）。ユーザはこのリストから選択する（４６０７）か、あるいは基準及び制約を改善する（４６０６）。アシスタント１００２は、既に明示された制約に関して推論し、ドメイン別知識を使用して助けとなる可能性のある他の基準を提案し、それら基準に対する制約を請求する。例えばアシスタント１００２は、ホテルから徒歩で行ける距離内のレストランを推薦する時、請求する有用な基準は料理及びテーブルの空き状況である。
【０４７０】
条件付き選択タスクは、ユーザが選択クラスのインスタンスを選択した時（４６０７）に完了する。一実施形態において、追加の後続のタスク４６０２はアシスタント１００２により有効にされる。従って、アシスタント１００２は、ある他の値を提供する間に選択を示すサービスを提供する。例４６０８は、レストランの予約、カレンダへのリマインダの設定及び／又は招待状を送出することによる他のユーザとの選択の共有である。例えばレストランの予約は、選択されたことを確実に示す。他のオプションは、レストランをカレンダに入れるか又は道順を含む招待状を友人に送出することである。
【０４７１】
図４７を参照すると、一実施形態に係る条件付き選択の方法を示すフローチャートが示される。一実施形態において、アシスタント１００２は、日和見的に且つ双方主導で動作し、ユーザが例えば入力においてタスク、ドメイン、基準及び制約を１度に１回以上明示することにより内部ループにジャンプすることを可能にする。
【０４７２】
方法が開始される（４７０１）。入力は、本明細書で説明するモードのいずれかに従ってユーザから受信される（４７０２）。入力に基づいて、タスクが既知でない場合、アシスタント１００２は、ユーザからの入力を明確にすることを要求する（４７０５）。
【０４７３】
ステップ４７１７において、アシスタント１００２は、ユーザが追加の入力を提供するかを判定する。追加の入力を提供する場合、アシスタント１００２はステップ４７０２に戻る。追加の入力を提供しない場合、方法は終了する（４７９９）。
【０４７４】
ステップ４７０３においてタスクが既知である場合、アシスタント１００２は、タスクが条件付き選択であるかを判定する（４７０４）。条件付き選択でない場合、アシスタント１００２は指定されたタスクフローに進む（４７０６）。
【０４７５】
ステップ４７０４においてタスクが条件付き選択である場合、アシスタント１００２は、選択クラスが判定されるかを判定する（４７０７）。条件付き選択でない場合、アシスタント１００２は既知の選択クラスの選択肢を提供し（４７０８）、ステップ４７１７に戻る。
【０４７６】
ステップ４７０７において選択クラスが判定される場合、アシスタント１００２は、全ての要求された制約が判定されるかを判定する（４７０９）。全ての要求された制約が判定されない場合、アシスタント１００２は、要求された情報の入力要求をし（４７１０）、ステップ４７１７に戻る。
【０４７７】
ステップ４７０９において全ての要求された制約が判定される場合、アシスタント１００２は、制約を仮定して、いずれかの結果アイテムが見つけられるかを判定する（４７１１）。制約を満たすアイテムがない場合、アシスタント１００２は、制約を緩和する方法を提供する（４７１２）。例えばアシスタント１００２は、フィルタ／ソートアルゴリズムを使用して最低の優先度から最高の優先度まで制約を緩和する。一実施形態において、一部の制約を満たすアイテムが存在する場合、アシスタント１００２は、状況を言い換える（例えば「Ｉ  ｃｏｕｌｄ  ｎｏｔ  ｆｉｎｄ  Ｒｅｃｏｍｍｅｎｄｅｄ  Ｇｒｅｅｋ  ｒｅｓｔａｕｒａｎｔｓ  ｔｈａｔ  ｄｅｌｉｖｅｒ  ｏｎ  Ｓｕｎｄａｙｓ  ｉｎ  Ｓａｎ  Ｃａｒｌｏｓ．  Ｈｏｗｅｖｅｒ，  Ｉ  ｆｏｕｎｄ  ３  Ｇｒｅｅｋ  ｒｅｓｔａｕｒａｎｔｓ  ａｎｄ  ７  Ｒｅｃｏｍｍｅｎｄ  ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  Ｓａｎ  Ｃａｒｌｏｓ．（サンカルロスで日曜日に配達する推薦すべきギリシャレストランは見つかりませんでした。しかし、３つのギリシャレストランとサンカルロスで推薦できる７つのレストランを見つけました。）」を出力する）。一実施形態において、いずれかの制約に一致するアイテムがない場合、アシスタント１００２はこの状況を言い換えて、異なる制約の入力要求をする（例えば、「Ｓｏｒｒｙ，  Ｉ  ｃｏｕｌｄ  ｎｏｔ  ｆｉｎｄ  ａｎｙ  ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  Ａｎｙｔｏｗｎ，  Ｔｅｘａｓ．  Ｙｏｕ  ｍａｙ  ｐｉｃｋ  ａ  ｄｉｆｆｅｒｅｎｔ  ｌｏｃａｔｉｏｎ．（ごめんなさい。テキサスのエニータウンではレストランが見つかりませんでした。別の場所を選んで下さい。）」を出力する）。アシスタント１００２はステップ４７１７に戻る。
【０４７８】
ステップ４７１１において結果アイテムが見つけられる場合、アシスタント１００２はアイテムのリストを提供する（４７１３）。一実施形態において、アシスタント１００２は、現在指定されている基準及び制約を言い換える（例えば、「Ｈｅｒｅ  ａｒｅ  ｓｏｍｅ  ｒｅｃｏｍｍｅｎｄｅｄ  Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  Ｓａｎ  Ｊｏｓｅ．（サンホセで推薦できるいくつかのイタリアンレストランです。）」（ｒｅｃｏｍｍｅｎｄｅｄ＝ｙｅｓ，ｃｕｉｓｉｎｅ＝Ｉｔａｌｉａｎ，ｐｒｏｘｉｍｉｔｙ＝＜ｉｎ  Ｓａｎ  Ｊｏｓｅ＞）を出力する）。一実施形態において、アシスタント１００２は、既知の制約を満たすソートされ且つページ付けされたアイテムのリストを提示する。アイテムが制約の一部のみを示す場合、そのような条件はアイテム表示の一部として示される。一実施形態において、アシスタント１００２は、例えば予約、記憶、スケジューリング又は共有等の別のタスクをあるアイテムに対して開始することによりそのアイテムを選択する方法をユーザに提供する。一実施形態において、あらゆる所定のアイテムにおいて、アシスタント１００２は選択クラスのインスタンスを選択するために主なアイテムの特徴を提示する。一実施形態において、アシスタント１００２は、アイテムが制約を満たす方法を示す。例えばＺａｇａｔ評価５はＲｅｃｏｍｍｅｎｄｅｄ＝ｙｅｓの制約を満たし、「１  ｍｉｌｅ  ａｗａｙ（１マイル離れた）」は「ｗｉｔｈｉｎ  ｗａｌｋｉｎｇ  ｄｉｓｔａｎｃｅ  ｏｆ  ａｎ  ａｄｄｒｅｓｓ（住所から歩いていける範囲内）」の制約を満たす。一実施形態において、アシスタント１００２は、ユーザがアイテムに関する更なる詳細を掘り下げることを可能にし、その結果より多くのアイテムの特徴が表示される。
【０４７９】
アシスタント１００２は、ユーザがアイテムを選択したかを判定する（４７１４）。ユーザがアイテムを選択した場合、タスクは完了する。アイテムがある場合、あらゆる後続のタスクが実行され（４７１５）、方法は終了する（４７９９）。
【０４８０】
ステップ４７１４においてユーザがアイテムを選択しない場合、アシスタント１００２は、他の基準及び制約を選択する方法をユーザに提供し（４７１６）、ステップ４７１７に戻る。例えば現在指定されている基準及び制約を仮定すると、アシスタント１００２は、選択肢の集合を所望のサイズに制約する可能性が最も高い基準を提供する。ユーザが制約値を選択する場合、制約値は、ステップ４７０３〜４７１３が繰り返される時に先に判定された制約に追加される。
【０４８１】
１つ以上の基準が固有の嗜好の値を有するため、基準を選択することにより要求に情報を追加する。例えば肯定的なレビューが重視されることをユーザが示せるようにすることにより、アシスタント１００２はその基準でソートできる。そのような情報は、ステップ４７０３〜４７１３が繰り返される時に考慮に入れられる。
【０４８２】
一実施形態において、アシスタント１００２は、ユーザが既に特定されている基準の重要度を上げることを可能にするため、その基準の優先順位は高くなる。例えばユーザが自身の場所の１ブロック内の迅速で安価で特に推薦されるレストランを要求する場合、アシスタント１００２は、ユーザがより重要な基準を選択することを要求する。そのような情報は、ステップ４７０３〜４７１３が繰り返される時に考慮に入れられる。
【０４８３】
一実施形態において、ユーザは、図４７の方法が実行されている間のいずれかの時点で追加の入力を提供する。一実施形態において、アシスタント１００２は、そのような入力を周期的又は継続的にチェックし、その応答としてその入力を処理するためにステップ４７０３に戻る。
【０４８４】
一実施形態において、アイテム又はアイテムのリストを出力する場合、アシスタント１００２は、アイテムの提示の際にアイテムを選択し且つ順序付けするために使用された特徴を示す。例えばユーザが近くのイタリアンレストランを要求した場合、距離及び料理に対するそのようなアイテムの特徴はアイテムの提示の際に示される。これは、一致するものを強調表示すること、並びにアイテムの提示の際に関わった選択基準を一覧表示することを含む。
【０４８５】
ドメインの例
表１は、種々の実施形態に係るアシスタント１００２により対処される条件付き選択ドメインの一例を提供する。
2020173835.tif 000016
表１
【０４８６】
フィルタリング及びソートの結果
一実施形態において、現在特定されている基準及び制約を満たすアイテムを提示する時、フィルタ／ソート方法論が採用される。一実施形態において、選択制約は、基礎となるサービスに対するフィルタ及びソートパラメータとしての役割を果たす。従って、リストにあるアイテムを判定するため及びそれらアイテムをページ付けして示す時の順序を計算するためにあらゆる選択基準が使用される。このタスクのソート順序は探索の際の関連性ランクに類似する。例えば近接度は、距離によるソートの一般的な概念及び「ｗｉｔｈｉｎ  ｄｒｉｖｉｎｇ  ｄｉｓｔａｎｃｅ（車を運転して行ける距離）」等の記号制約値を含む基準である。「ｄｒｉｖｉｎｇ  ｄｉｓｔａｎｃｅ」という制約は、候補アイテムのグループを選択するために使用される。そのグループ内で、より近いアイテムがリストのより高い位置にソートされる。
【０４８７】
一実施形態において、選択制約と関連するフィルタリング及びソートとは別個の「レベル」にあり、基礎となるデータ及びユーザからの入力の関数である。例えば近接度は、「ｗａｌｋｉｎｇ  ｄｉｓｔａｎｃｅ（歩ける距離）」、「ｔｅｘｉ  ｄｉｓｔａｎｃｅ（タクシーで行ける距離）」、「ｄｒｉｖｉｎｇ  ｄｉｓｔａｎｃｅ（車を運転して行ける距離）」等のレベルにグループ化される。ソートする時、徒歩で行ける距離内の１つ以上のアイテムは、同一の距離にあるかのように処理される。ユーザからの入力は、ユーザが制約を指定する方法で作用し始める。例えば、ユーザが「ｉｎ  ｐａｌｏ  ａｌｔｏ（パロアルト内）」を入力する場合、Ｐａｌｏ  Ａｌｔｏの都市範囲内の１つ以上のアイテムは完全に一致するものであり、同等のものである。ユーザが「ｎｅａｒ  ｔｈｅ  Ｕｎｉｖｅｒｓｉｔｙ  Ａｖｅｎｕｅ  ｔｒａｉｎ  ｓｔａｔｉｏｎ（ユニバーシティ・アベニュー駅の近く）」を入力する場合、一致するものはその住所からの距離に依存し、一致度は選択クラスに依存する（例えば、レストランに近いというのは、ホテルに近いのとは異なる）。連続値により指定される制約内であっても、離散化が適用される。これはソート動作にとって重要であるため、複数の基準は最良優先順序を判定することに関係する。
【０４８８】
一実施形態において、アイテムリストは出力の１「ページ」に示されるアイテム数より短くても長くてもよい。それらアイテムは「一致する」又は「十分に適切である」と考えられる。一般に第１のページのアイテムは、最も関心を集めるが、概念的に長いリストがあり、ページ付けは単純に出力媒体のフォームファクタの関数である。これは、例えばユーザがある基準でアイテムをソート又は閲覧する方法を提供される場合、ソート又は閲覧されるアイテムの集合全体（１ページより多くのアイテムに相当する）であることを意味する。
【０４８９】
一実施形態において、選択基準の間の優先順位付けが存在する。すなわち、ある基準はフィルタ及びソートにおいて他の基準より重要である。一実施形態において、ユーザによい選択された基準は他の基準より高い優先度を与えられ、１つ以上の基準に対するデフォルトの順序付けがある。これにより、一般的な辞書式分類が可能になる。有意義な演繹的優先順位があると仮定する。例えばユーザが特に指定しない限り、レストランに対しては高くないことより近いことが重要である。一実施形態において、演繹的優先順位順序はドメイン別である。モデルは、要望に応じて、ユーザ別の嗜好がドメインデフォルト値を無効にすることを可能にする。
【０４９０】
制約の値がいくつかの内部データの種類を表すため、制約のマッチングの種々の方法があり、それらは制約に固有である。例えば、一実施形態において、以下の通りである。
【０４９１】
・２値制約は、１つ以上一致するか又は何も一致しない。例えばレストランが「Ｆａｓｔ」であるかが真であるか又は真でない。
【０４９２】
・集合の帰属関係の制約は、特性値に基づいて１つ以上一致するか又は何も一致しない。例えば、ｃｕｉｓｉｎｅ＝Ｇｒｅｅｋは、レストランに対する料理の集合がギリシャを含むことを意味する。
【０４９３】
・列挙制約が閾値において一致する。例えば評価基準は、評価されたか、高く評価されたか、又は最上位に評価された制約値を有する。高く評価されたことに制約することは最上位に評価されたことと一致する。
【０４９４】
・数字制約は、基準別の閾値で一致する。例えば「ｏｐｅｎ  ｌａｔｅ（遅くまで営業）」は基準であり、ユーザは午後１０時以降に空いている場所を要求する。この種の制約は、記号制約値でないため、条件付き選択タスクの範囲から僅かに外れる。しかし、一実施形態において、アシスタント１００２は、このような数字制約の例を認識し、それらを記号制約で閾値にマッピングする（例えば、「ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  ｐａｌｏ  ａｌｔｏ  ｏｐｅｎ  ｎｏｗ（今開いているパロアルト内のレストラン）」−＞「ｈｅｒｅ  ａｒｅ  ２  ｒｅｓｔａｕｒａｎｔｓ  ｉｎ  ｐａｌｏ  ａｌｔｏ  ｔｈａｔ  ａｒｅ  ｏｐｅｎ  ｌａｔｅ（遅くまで営業しているパロアルト内の２つのレストランです。）」）。
【０４９５】
・場所及び時間が特に処理される。近接度に対する制約は、ある粒度レベルで指定される関心場所であり、一致するものを判定する。ユーザが都市を指定した場合、都市レベルのマッチングが適切である。すなわち、郵便番号がある区域を可能にする。アシスタント１００２は、特定の処理に基づいて「近くの」他の関心場所である場所を理解する。時間はテーブルの空き状況又は所定の時間帯のフライト等のサービス呼び出しに基づく閾値を有する基準の制約値として関連する。
【０４９６】
一実施形態において、制約は、選択に対する単一の閾値及びソートする個別の値の小さな集合が存在するようにモデル化される。例えば手頃さの基準は大まかな２値制約としてモデル化される。ここで、手頃なレストランはある閾値の価格帯にある。データが選択に対して複数の別個のレベルを容認する場合、制約はマッチング勾配を使用してモデル化される。一実施形態において、２つの一致レベル（高い一致及び低い一致等）が提供される。しかし、他の実施形態において、１つ又は複数の一致レベルも提供可能であることが当業者には理解されるだろう。例えば近接度がファジィ境界とマッチングされるため、関心場所に近いものは一致度が高い。高い一致度又は低い一致度の動作結果は、以下に説明するようにフィルタ／ソートアルゴリズムである。
【０４９７】
少なくとも１つの基準に対して、関連がある場合、マッチング及びデフォルト閾値に対する方法が構築される。ユーザは、制約の名前、記号制約値又は特に処理される場合の高精度な制約表現（時間及び場所等）のみを言うことができる。
【０４９８】
条件付き選択に対する理想的な状況は、１つ以上の候補が制約を満たす候補の短いリストを結果として与える制約をユーザが明示する時に起こる。ユーザは、アイテムの特徴に基づいて適切なものの中から選択する。しかし、多くの場合、問題は制約過多又は制約不足である。制約過多である場合、制約を満たすアイテムは殆ど又は全く存在しない。制約不足である場合、リストの検査が好都合でない程多くの候補が存在する。一実施形態において、本発明の一般的な条件付き選択モデルは、ロバスト性のあるマッチングにより複数の制約を処理でき、一般に選択するものを生成する。ユーザは基準及び制約を改善すること又は「十分に適切な」解決策でタスクを単に完了させることを選択する。
【０４９９】
方法
一実施形態において、以下の方法は、結果をフィルタリング及びソートするために使用される。
【０５００】
１．ユーザにより選択された選択基準の順序付けリストを仮定して、少なくとも１つに対する制約を判定する。
ａ．ユーザが制約値を指定した場合、それを使用する。例えばユーザが「ｇｒｅｅｋ  ｆｏｏｄ（ギリシャ料理）」と言った場合、制約はｃｕｉｓｉｎｅ＝Ｇｒｅｅｋである。ユーザが「ｓａｎ  Ｆｒａｎｃｉｓｃｏ（サンフランシスコ）」と言った場合、制約はＩｎ  ｔｈｅ  Ｃｉｔｙ  ｏｆ  Ｓａｎ  Ｆｒａｎｃｉｓｃｏ（サンフランシスコ市内）である。ユーザが「ｓｏｕｔｈ  ｏｆ  ｍａｒｋｅｔ（サウス・オブ・マーケット）」と言った場合、制約はＩｎ  ｔｈｅ  Ｎｅｉｇｈｂｏｒｈｏｏｄ  ｏｆ  ＳｏＭａ（SoMaの近く）である。
ｂ．ドメイン別のデフォルト値及び基準別のデフォルト値を使用する。例えばユーザが「ａ  ｔａｂｌｅ  ａｔ  ｓｏｍｅ  ｔｈａｉ  ｐｌａｃｅ（）」と言った場合、空き状況基準が関連することを示しているが、制約値を指定しなかった。空き状況に対するデフォルト制約値は、ｔｏｎｉｇｈｔ（今夜）及びデフォルトパーティサイズ２等の日付、時間のある範囲である。
【０５０１】
２．指定された制約により最小Ｎ個の結果を選択する。
ａ．高い一致度でＮ個の結果を得ようとする。
ｂ．それが失敗した場合、逆の優先順位順序で制約を緩和しようとする。すなわち、低いレベルで一致する最後の基準を除く１つ以上の基準に対する高いレベルで一致するもの。その制約に対して低いレベルで一致するものがない場合、最低の優先順位から最高の優先順位までのラインの低いレベルで一致するものを試行する。
ｃ．最低の優先順位から最高の優先順位まで、制約でのマッチングの失敗を許可するループを繰り返す。
【０５０２】
３．最小の選択肢の集合を取得した後、優先順位の順序で１つ以上の基準（ユーザ別の基準及び他の基準を含む）にわたり辞書式分類を行う。
ａ．最高の優先順位であるユーザ別の基準の集合を考慮し、演繹的優先順位で１つ以上の残っている基準を考慮する。例えば演繹的優先順位が（空き状況、料理、近接度、評価）であり、ユーザが近接度及び料理に関する制約を与える場合、ソート優先順位は（料理、近接度、空き状況、評価）である。
ｂ．別個の一致レベル（高い、低い、一致しない）を使用して基準をソートすると、制約を緩和する際と同一の方法を使用してフル基準リストが適用される。
i．選択肢の集合が制約を緩和せずに取得された場合、選択肢の集合の１つ以上が高いレベルで一致するため、ソートにおいて「結び付く」。その後、優先順位リストにおける次の基準は、それらをソートするために作動する。例えばユーザがｃｕｉｓｉｎｅ＝Ｉｔａｌｉａｎ（料理＝イタリアン）、ｐｒｏｘｉｍｉｔｙ＝Ｉｎ  Ｓａｎ  Ｆｒａｎｃｉｓｃｏ（近接度：サンフランシスコ内）と言い、ソートの優先順位が（料理、近接度、空き状況、評価）である場合、リストの１つ以上の場所は料理及び近接度に対して等しい一致する値を有する。従って、リストが空き状況でソートされる（空いているテーブルを含む場所が最上位に現れる）。空いている場所のうち、最高の評価をされた場所が最上位にある。
ii．選択肢の集合が制約を緩和することにより取得された場合、完全に一致する１つ以上のアイテムがリストの最上位にあり、その後、部分的に一致するアイテムがある。一致するグループ内で、それらアイテムは残りの基準によりソートされ、同一のことが部分的に一致するグループにも行われる。例えばＳａｎ  Ｆｒａｎｃｉｓｃｏにイタリアンレストランが２つだけある場合、空いているレストランが最初に示され、その後、空いていないレストランが示される。その後、Ｓａｎ  Ｆｒａｎｃｉｓｃｏの残りのレストランが空き状況及び評価によりソートされて示される。
【０５０３】
優先順位順序
本明細書で説明する技術は、部分的に指定された制約及び不完全なデータがアシスタント１００２に提示された時に非常に高いロバスト性を有することを可能にする。一実施形態において、アシスタント１００２は、これらの技術を使用して、最良優先順位で、すなわち関連性に従って、アイテムのユーザリストを生成する。
【０５０４】
一実施形態において、そのような関連性のソートは、演繹的優先順位順序に基づく。すなわち、ドメインに関して重要であるもののうち、基準の集合が選択され、重要さの順序で配置される。１つ以上のものが同等である場合、優先順位順序がより高い基準は、順位が低い基準よりアイテム間の条件付き選択に強く関連付けられる。アシスタント１００２は、１つ又は複数の基準で動作してもよい。更に基準は、既存の挙動を中断することなく時間の経過と共に変更されてもよい。
【０５０５】
一実施形態において、基準の相互作用の仕方が選択クラスに依存するため、基準間の優先順位順序はドメイン別のパラメータにより調整される。例えばホテルを選択する時、空き状況及び価格が主要な制約であるが、レストランを選択する場合は、料理及び近接度がより重要である。
【０５０６】
一実施形態において、ユーザはダイアログにおいてデフォルトの基準の順序付けを無効にする。これにより、システムは、緩和すべき制約を判定するために順序付けを使用して、探索が制約過多である場合にユーザを誘導できる。例えばユーザが料理、近接度、推薦及び食べ物のアイテムに関する制約を与え、完全に一致するアイテムがない場合、ユーザは食べ物のアイテムが推薦度より重要であると言うことができ、所望の食べ物のアイテムの一致するものが最上位にソートされるように組み合わせを変更できる。
【０５０７】
一実施形態において、優先順位順序が判定される場合、ユーザ別の制約は他より優先される。例えば一実施形態において、近接度は要求された制約であり、そのことが常に指定され、更に他の未選択の制約より優先される。従って、近接度は、完全に主要となるために最高の優先順位の制約である必要はない。また、制約がユーザにより与えられない限り、多くの基準は１つ以上一致しないため、これら基準の優先順位は、ユーザが選択した基準内でのみ重要である。例えばユーザが料理を指定する場合、料理が重要であり、指定しない場合はアイテムをソートするのに関係ない。
【０５０８】
例えば、以下はレストランドメインに対する候補優先順位ソートパラダイムである。
【０５０９】
１．料理＊（制約値が与えられない限りソートできない）
２．空き状況＊（例えば時間であるデフォルト制約値を使用してソート可能である）
３．推薦される
４．近接度＊（制約値が常に与えられる）
５．手頃さ
６．配達可能
７．食べ物のアイテム（例えばキーワードである制約値が与えられない限りソートできない）
８．キーワード（例えばキーワードである制約値が与えられない限りソートできない）
９．レストラン名
【０５１０】
以下は、上記ソートパラダイムに対する設計原理の一例である。
・ユーザが料理を指定した場合、その料理に固執したい。
・１つ以上のものが同等である場合、評価レベル（制約なしでソートするのに使用される基準のうち最高の優先順位である）によりソートする。
・少なくとも１つの実施形態において、近接度は殆どのものと比較してより重要である。しかし、近接度が別個のレベルで（都市及び徒歩範囲内等）一致し、常に指定される場合、時間が最も一致するアイテムの殆どが近接度で「結び付く」。
・空き状況（例えばｏｐｅｎ−ｔａｂｌｅ．ｃｏｍ等のウェブサイトでの探索により判定されるような）は、有益なソート基準であり、指定されない場合のソートに対するデフォルト値に基づく。ユーザが予約の時間を示す場合、空いている場所のみがリストにあり、ソートは推薦に基づく。
【０５１１】
・ユーザが特に推薦される場所を知りたいと言う場合、上記近接度及び空き状況でソートし、それら基準は推薦する前に緩和される。あるユーザが満足のいく場所を探している場合、少し遠くまで運転する意思があり、それはデフォルトのテーブル空き状況より重要であると仮定する。空き状況に対する特定の時間が指定され、ユーザが推薦される場所を要求する場合、空いていて推薦される場所が最初に現れ、空き状況が１つ以上一致しなくなるまで推薦は低いレベルで一致するものに緩和される。
・名前以外の残りの制約は、不完全なデータ又は一致するものに基づく１つ以上の制約である。従って、それら制約はデフォルトでは弱いソートのヒューリスティックであり、制約が指定されると、一致するものは１つ以上であるか、あるいは一致するものはない。
・名前は、あるユーザがレストラン名を言う例、例えばＰａｌｏ  Ａｌｔｏの近くのＨｏｂｅｅ'ｓレストランを１つ以上見つける例に対処するための制約として使用される。この場合、１つ以上のアイテムがその名前と一致し、近接度（この例において他の指定された制約）でソートされる。
【０５１２】
ドメインのモデル化：基礎となるデータへの選択基準のマッピング
アシスタント１００２による計算に利用可能なデータと選択を行うのに使用されるデータとを区別することが望ましい。一実施形態において、アシスタント１００２は、アイテムを区別するのに使用される１つ以上の種類のデータを単一の選択基準モデルにすることにおりユーザに対する複雑さを軽減するデータモデルを使用する。内部的には、これらデータはいくつかの形態をとる。選択クラスのインスタンスは、固有の特性及び属性（レストランの料理等）を有し、側面（ある場所からの距離等）に沿って比較され、あるクエリ（テキストパターンに一致するか又は所定の時間に空いているか等）により発見される。それらデータは、選択基準（例えば、複数のソースからの評価の重み付き組み合わせ）としてユーザに対して明らかにされない他のデータから計算される。これらデータはタスクに関連する１つ以上のデータであるが、それらの３種類のデータの区別はユーザに関係ない。ユーザは特性及び側面ではなく所望の選択肢の特徴に関して考慮するため、アシスタント１００２は、これら種々の基準をアイテムの特徴にして動作可能にする。アシスタント１００２は、ユーザに提示されるドメインデータモデルを提供し、それをウェブサービスで見つけられるデータにマッピングする。
【０５１３】
一種のマッピングは、基礎となるデータからユーザに提示される基準への同形写像である。例えばユーザから見て予約するためのテーブルの空き状況は、正にｏｐｅｎｔａｂｌｅ．ｃｏｍ等のオンライン予約ウェブサイトが同一の粒度の時間及びパーティサイズを使用して提供するものである。
【０５１４】
別の種類のマッピングは、可能性として等しい値の統一により共通の値の集合に１つ以上のサービスからのデータを正規化することである。例えば１つ以上のレストランの料理は、アシスタント１００２における単一のオントロジとして表され、種々のサービスにおいて使用される種々の用語集にマッピングされる。このオントロジは、階層型であり、少なくとも１つのサービスからの特定の値を指し示す葉ノードを有する。例えば１つのサービスは、「Ｃｈｉｎｅｓｅ」に対する料理の値、「Ｓｚｅｃｈｕａｎ」に対する別の値及び「Ａｓｉａｎ」に対する第３の値を有する。アシスタント１００２により使用されるオントロジは、「Ｃｈｉｎｅｓｅ  ｆｏｏｄ」又は「Ｓｚｅｃｈｕａｎ」に対する参照をそれらノードの１つ以上と意味的にマッチングさせる。信頼度は一致度を反映する。
【０５１５】
精度の差分を解決する時に正規化が関連する。例えばレストランの場所は、１つのサービスにおいて道路レベルで与えられるが、別のサービスでは都市レベルで与えられる。一実施形態において、アシスタント１００２は、異なる表面データ値にマッピングされる場所及び時間の深層構造表現を使用する。
【０５１６】
一実施形態において、アシスタント１００２は、フルテキスト探索の一致するもの、タグ又は他のオープンテクスチャ特徴にマッピングされるオープンエンド修飾子（例えば、ｒｏｍａｎｔｉｃ、ｑｕｉｅｔ）に対して特別な種類のマッピングを使用する。この場合の選択制約の名前は「ｉｓ  ｄｅｓｃｒｉｂｅｄ  ａｓ」のような修飾子である。
【０５１７】
少なくとも１つの実施形態において、制約は動作の嗜好の順序にマッピングされる。すなわち、選択制約の名前及びその制約値を仮定すると、アシスタント１００２は、可能なアイテムにわたる順序付けとしてその基準を解釈できる。そのようなマッピングにおいて対処する技術的問題がいくつか存在する。例えば以下の通りである。
【０５１８】
・嗜好の順序が競合する。１つの制約により与えられる順序は、別の制約に与えられる順序と矛盾するか又は逆相関される。例えば価格及び品質は対立する傾向がある。一実施形態において、アシスタント１００２は、ユーザの要望を反映するがデータに対して忠実である重み付き順序又は組み合わせ順序でユーザにより選択された制約を解釈する。例えばユーザは「ｃｈｅａｐ  ｆａｓｔ  ｆｏｏｄ  Ｆｒｅｎｃｈ  ｒｅｓｔａｕｒａｎｔｓ  ｗｉｔｈｉｎ  ｗａｌｋｉｎｇ  ｄｉｓｔａｎｃｅ  ｒａｔｅｄ  ｈｉｇｈｌｙ（評価が高く、歩いていける距離にある安くて早いフランス料理のレストラン）」と尋ねてもよい。多くの場所において、そのようなレストランが存在しない可能性がある。しかし、一実施形態において、アシスタント１００２は、少なくとも１つの制約に対して最適化しようとするアイテムのリストを示し、少なくとも１つが一覧表示される理由を説明する。例えば１つのアイテムは「ｈｉｇｈｌｙ  ｒａｔｅｄ  Ｆｒｅｎｃｈ  ｃｕｉｓｉｎｅ（評価が高いフランス料理）」であり、別のアイテムは「ｃｈｅａｐ  ｆａｓｔ  ｆｏｏｄ  ｗｉｔｈｉｎ  ｗａｌｋｉｎｇ  ｄｉｓｔａｎｃｅ（安くて早く、歩いていける距離の店）」である。
【０５１９】
・データは、ハード又はソフト制約として使用される。例えばレストランの価格帯は、レストランを選択するのに重要であるが、事前に価格の閾値を明示するのは困難である。料理のような一見ハード制約のように思える制約は、部分的な一致のために実際はソフト制約である可能性がある。一実施形態において、アシスタント１００２が１つ以上の基準を記号値（「ｃｈｅａｐ」又は「ｃｌｏｓｅ」等）に平滑にしようとするデータモデル化戦略を使用するため、それら制約は、マッチング別の閾値に関して厳しくせずに基準及び順序を適切にする関数にマッピングされる。明示的な客観的な真理値を含む記号基準に対して、アシスタント１００２は、他の基準より大きい重みを客観的な基準に与え、一部のアイテムが要求された基準に厳密に一致しないことが分かっていることを説明で明らかにする。
【０５２０】
・アイテムは、１つ以上ではなくいくつかの制約に一致し、「最も適合する」アイテムが示される。
・一般に、アシスタント１００２は、ドメインに対する主なアイテムの特徴であり、選択基準として及び少なくとも１つの基準に対しては可能な制約値としての役割を果たすアイテムの特徴を判定する。そのような情報は、例えば動作データ及びＡＰＩ呼び出しを介して提供される。
【０５２１】
言い換え及びプロンプトテキスト
上述したように、一実施形態において、アシスタント１００２は、フィードバックを提供して示し、ユーザの意図を理解し、現在の理解の言い換えを生成することによりユーザの目的に対して作用している。本発明の会話ダイアログモデルにおいて、言い換えは、アシスタント１００２がユーザの入力後に前置き（例えば、図４０の言い換え４００３）として又は後続のする結果の要約（例えば、図３５のリスト３５０２）として出力するものである。プロンプトは、要求を改善するため又はいくつかの側面に沿って選択空間を探索するために実行できることに関するユーザに対する提案である。
【０５２２】
一実施形態において、言い換え及びプロンプトテキストの目的は、例えば以下を含む。
・アシスタント１００２がテキストだけでなくユーザの入力の概念を理解することを示すこと。
・アシスタント１００２の理解の範囲を示すこと。
・仮定されるタスクに必要なテキストを入力するようにユーザを誘導すること。
・ユーザが条件付き選択において可能なものの空間を探索しやすくすること。
・ユーザの明示した基準及びアシスタント１００２の仮定に関してサービスから取得された現在の結果を説明すること（例えば、制約不足の要求及び制約過多の要求の結果を説明すること）
【０５２３】
例えば以下の言い換え及びプロンプトは、それら目的のうちのいくつかを示す。
【０５２４】
ユーザ入力：ｉｎｄｏｎｅｓｉａｎ  ｆｏｏｄ  ｉｎ  ｍｅｎｌｏ  ｐａｒｋ（メンロパークのインドネシア料理）
システムの解釈：
Ｔａｓｋ＝ｃｏｎｓｔｒａｉｎｅｄ  Ｓｅｌｅｃｔｉｏｎ（タスク＝制約選択）
ＳｅｌｅｃｔｉｏｎＣｌａｓｓ＝ｒｅｓｔａｕｒａｎｔ  （選択クラス＝レストラン）
Ｃｏｎｓｔｒａｉｎｔｓ：（制約：）
Ｌｏｃａｔｉｏｎ＝ｍｅｎｌｏ  ｐａｒｋ，ＣＡ  （場所＝メンロパーク、カリフォルニア州）
Ｃｕｉｓｉｎｅ＝Ｉｎｄｏｎｅｓｉａｎ（料理＝インドネシア料理、オントロジにおいて既知である）
サービスからの結果：高いレベルで一致するものはない
言い換え：Ｓｏｒｒｙ，Ｉ  ｃａｎ'ｔ  ｆｉｎｄ  ａｎｙ  Ｉｎｄｏｎｅｓｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎｅａｒ  Ｍｅｎｌｏ  Ｐａｒｋ．（ごめんなさい。メンロパーク付近でインドネシアレストランは見つかりませんでした。）
プロンプト：Ｙｏｕ  ｃｏｕｌｄ  ｔｒｙ  ｏｔｈｅｒ  ｃｕｉｓｉｎｅｓ  ｏｒ  ｌｏｃａｔｉｏｎｓ．（他の料理や場所を試すことができます。）
ハイパーテキストリンク下のプロンプト：
Ｉｎｄｏｎｅｓｉａｎ：Ｙｏｕ  ｃａｎ  ｔｒｙ  ｏｔｈｅｒ  ｆｏｏｄ  ｃａｔｅｇｏｒｉｅｓ  ｓｕｃｈ  ａｓ  Ｃｈｉｎｅｓｅ，ｏｒ  ａ  ｆａｖｏｒｉｔｅ  ｆｏｏｄ  ｉｔｅｍ  ｓｕｃｈ  ａｓ  ｓｔｅａｋ．（インドネシア料理：例えば中華料理のような他のカテゴリの料理、或いは、ステーキのような好みの料理項目を試すことができます。）
Ｍｅｎｌｏ  Ｐａｒｋ：Ｅｎｔｅｒ  ａ  ｌｏｃａｔｉｏｎ  ｓｕｃｈ  ａｓ  ａ  ｃｉｔｙ，ｎｅｉｇｈｂｏｒｈｏｏｄ，ｓｔｒｅｅｔ  ａｄｄｒｅｓｓ，ｏｒ  "ｎｅａｒ"  ｆｏｌｌｏｗｅｄ  ｂｙ  ａ  ｌａｎｄｍａｒｋ．（メンロパーク：都市、近所、住所、或いは、目印の"近くの"といった場所を入力して下さい。）
Ｃｕｉｓｉｎｅｓ：Ｅｎｔｅｒ  ａ  ｆｏｏｄ  ｃａｔｅｇｏｒｙ  ｓｕｃｈ  ａｓ  Ｃｈｉｎｅｓｅ  ｏｒ  Ｐｉｚｚａ．（料理：中華料理やピザといった料理の種別を入力して下さい。）
Ｌｏｃａｔｉｏｎｓ：Ｅｎｔｅｒ  ａ  ｌｏｃａｔｉｏｎ：ａ  ｃｉｔｙ，ｚｉｐ  ｃｏｄｅ，ｏｒ  "ｎｅａｒ"  ｆｏｌｌｏｗｅｄ  ｂｙ  ｔｈｅ  ｎａｍｅ  ｏｆ  ａ  ｐｌａｃｅ．（場所：場所を入力して下さい：都市、郵便番号、或いは、場所名の"近くの"）
【０５２５】
一実施形態において、アシスタント１００２は、言い換えにより相対的に迅速にユーザ入力に応答する。言い換えは、結果が分かった後に更新される。例えば初期の応答は、「Ｌｏｏｋｉｎｇ  ｆｏｒ  Ｉｎｄｏｎｅｓｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎｅａｒ  Ｍｅｎｌｏ  Ｐａｒｋ．．．（メンロパークの近くのインドネシアレストランを探しています）」である。結果が取得されると、アシスタント１００２はテキストを更新し、「Ｓｏｒｒｙ，  Ｉ  ｃａｎ'ｔ  ｆｉｎｄ  ａｎｙ  Ｉｎｄｏｎｅｓｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎｅａｒ  Ｍｅｎｌｏ  Ｐａｒｋ．Ｙｏｕ  ｃｏｕｌｄ  ｔｒｙ  ｏｔｈｅｒ  ｃｕｉｓｉｎｅｓ  ｏｒ  ｌｏｃａｔｉｏｎｓ（ごめんなさい。メンロパークの近くのインドネシアレストランは見つかりません。他の料理、或いは、場所で試すことができます。）」を表示する。尚、特定のアイテムは強調表示され（ここでは、下線で示す）、それらアイテムが緩和又は変更できる制約を表すことを示す。
【０５２６】
一実施形態において、特別な形式／強調表示が言い換えのキーワードに対して使用される。これは、アシスタント１００２にとって最も重要であり且つアシスタント１００２により理解される可能性がより高い単語をユーザに対して示すことによりインテリジェント自動アシスタント１００２との対話のためのユーザのトレーニングを容易にするのに有用である。ユーザは、そのような単語を将来使用する可能性が高くなる。
【０５２７】
一実施形態において、言い換え及びプロンプトは、あらゆる関連するコンテキストデータを使用して生成される。例えば以下のデータアイテムのうちのいずれかが単独で又は組み合わせて使用される。
【０５２８】
・構文解析−注釈及び例外を伴って一致する入力トークンと結び付けられたオントロジノードの木。これは、構文解析のノード毎に、ノードのメタデータ及び／又はノードの値に対する根拠を提供する入力のあらゆるトークンを含む。
・既知である場合はタスク。
・選択クラス。
・選択クラスに依存しない場所制約。
・所定の選択クラスにとって未知である要求されたパラメータ（例えば、場所はレストランに関して要求される制約である）。
・名前（例えば、特定のレストラン又は映画名）が存在する場合は選択クラスのインスタンスである構文解析における指名されたエンティティの名前。
・これは後続のする改善か又は会話の開始か？（リセットは新しい会話を開始する）。
・制約の値を変更した入力の値に結び付けられる構文解析の制約は何か？換言すると、最新の入力により変更された制約は何か？
・選択クラスは推論されるか又は直接明示されるか？
・品質、関連性又は近接度によりソートされたか？
・指定された制約毎に、どの程度一致したか？
・改善はテキストとして入力されたか又はクリックされるか？
【０５２９】
一実施形態において、言い換えアルゴリズムは、クエリ、ドメインモデル１０５６及びサービスの結果を考慮する。ドメインモデル１０５６は、テキストの生成方法を決定するために使用されるメタデータを含む特徴及びクラスを含む。言い換えの生成に対するそのようなメタデータの例は以下を含む。
【０５３０】
・ＩｓＣｏｎｓｔｒａｉｎｔ＝｛ｔｒｕｅ｜ｆａｌｓｅ｝
・ＩｓＭｕｌｔｉＶａｌｕｅｄ＝｛ｔｒｕｅ｜ｆａｌｓｅ｝
・ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝｛ＥｎｔｉｔｙＮａｍｅ，Ｌｏｃａｔｉｏｎ，Ｔｉｍｅ，ＣａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ，ＡｖａｉｌａｂｉｌｉｔｙＣｏｎｓｔｒａｉｎｔ，ＢｉｎａｒｙＣｏｎｓｔｒａｉｎｔ，ＳｅａｒｃｈＱｕａｌｉｆｉｅｒ，ＧｕｅｓｓｅｄＱｕａｌｉｆｅｒ｝
・ＤｉｓｐｌａｙＮａｍｅ＝文字列
・ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝文字列
・ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝文字列
・ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝｛ＡｄｊｅｃｔｉｖｅＢｅｆｏｒｅＮｏｕｎ，Ｎｏｕｎ，ＴｈａｔＣｌａｕｓｅＭｏｄｉｆｉｅｒ｝
【０５３１】
例えば構文解析はこれらの要素を含む。
クラス：Ｒｅｓｔａｕｒａｎｔ
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｆａｌｓｅ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｒｅｓｔａｕｒａｎｔ"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"ｒｅｓｔａｕｒａｎｔｓ"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝Ｎｏｕｎ
特徴：ＲｅｓｔａｕｒａｎｔＮａｍｅ（例：「Ｉｌ  Ｆｏｒｎａｉｏ」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＥｎｔｉｔｙＮａｍｅ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｎａｍｅｄ＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"ｎａｍｅｄ＄１"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝Ｎｏｕｎ
特徴：ＲｅｓｔａｕｒａｎｔＣｕｉｓｉｎｅ（例：「Ｃｈｉｎｅｓｅ」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＣａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＡｄｊｅｃｔｉｖｅＢｅｆｏｒｅＮｏｕｎ
特徴：ＲｅｓｔａｕｒａｎｔＳｕｂｔｙｐｅ（例：「ｃａｆe」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＣａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"＄１ｓ"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝Ｎｏｕｎ
特徴：ＲｅｓｔａｕｒａｎｔＱｕａｌｉｆｉｅｒｓ（例：「ｒｏｍａｎｔｉｃ」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｔｒｕｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＳｅａｒｃｈＱｕａｌｉｆｉｅｒ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｉｓ  ｄｅｓｃｒｉｂｅｄ  ａｓ  ＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"ａｒｅ  ｄｅｓｃｒｉｂｅｄ  ａｓ＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＣｏｍｐａｃｔ＝"ｍａｔｃｈｉｎｇ  ＄１"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝Ｎｏｕｎ
特徴：ＦｏｏｄＴｙｐｅ（例：「ｂｕｒｒｉｔｏｓ」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＳｅａｒｃｈＱｕａｌｉｆｉｅｒ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｓｅｒｖｅｓ  ＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"ｓｅｒｖｅ  ＄１"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＣｏｍｐａｃｔ＝"ｓｅｒｖｉｎｇ  ＄１"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＴｈａｔＣｌａｕｓｅＭｏｄｉｆｅｒ
特徴：ＩｓＲｅｃｏｍｍｅｎｄｅｄ（例：ｔｒｕｅ）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＢｉｎａｒｙＣｏｎｓｔｒａｉｎｔ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｒｅｃｏｍｍｅｎｄｅｄ"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝" ｒｅｃｏｍｍｅｎｄｅｄ"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＡｄｊｅｃｔｉｖｅＢｅｆｏｒｅＮｏｕｎ
特徴：ＲｅｓｔａｕｒａｎｔＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒｓ（例：「ｓｐｅｃｔａｃｕｌａｒ」）
ＩｓＣｏｎｓｔｒａｉｎｔ＝ｔｒｕｅ
ＩｓＭｕｌｔｉＶａｌｕｅｄ＝ｆａｌｓｅ
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＧｕｅｓｓｅｄＱｕａｌｉｆｅｒ
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＳｉｎｇｕｌａｒ＝"ｍａｔｃｈｅｓ  ＄１  ｉｎ  ｒｅｖｉｅｗｓ"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌ＝"ｍａｔｃｈｅｓ  ＄１  ｉｎ  ｒｅｖｉｅｗｓ"
ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＣｏｍｐａｃｔ＝"ｍａｔｃｈｉｎｇ  ＄１"
ＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＴｈａｔＣｌａｕｓｅＭｏｄｉｆｅｒ
【０５３２】
一実施形態において、アシスタント１００２は一致しない入力に対処できる。そのような入力に対処するために、ドメインモデル１０５６は、選択クラス毎のＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒの種類のノードと、一致する規則又は正確な文法コンテキストにある場合は一致しない単語とを提供できる。すなわち、ＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒｓは、オントロジにおいて見つけられない単語が存在する場合に一致し且つ正しいコンテキストにあり選択クラスの修飾子である可能性が高いことを示す多種多様なノードとして構文解析において対処される。ＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒｓとＳｅａｒｃｈＱｕａｌｉｆｉｅｒｓとの相違点は、後者がオントロジの用語集とマッチングされることである。この区別により、アシスタント１００２がＳｅａｒｃｈＱｕａｌｉｆｉｅｒｓで意図を確実に識別し、ＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒｓをエコーバックする時により躊躇する可能性があると言い換え可能となる。
【０５３３】
一実施形態において、アシスタント１００２は、言い換えテキストを生成する時に以下のステップを実行する。
【０５３４】
１．タスクが未知である場合、アシスタント１００２が実行できることを説明し、更なる入力を要求する。
【０５３５】
２．タスクが条件付き選択タスクであり且つ場所が既知である場合、アシスタント１００２が認識しているドメインを説明し、選択クラスの入力要求を行う。
【０５３６】
３．選択クラスが既知であるが要求される制約が欠落している場合、その制約の入力要求を行う。（例えば、レストランに関する条件付き選択に対して場所が要求される）
【０５３７】
４．入力が選択クラスのＥｎｔｉｔｙＮａｍｅを含む場合、「ｌｏｏｋｉｎｇ  ｕｐ」＜名前＞ｉｎ＜場所＞を出力する。
【０５３８】
５．これが会話の最初の質問である場合、「ｌｏｏｋｉｎｇ  ｆｏｒ」の後に制約を説明する複雑な名詞節を出力する。
【０５３９】
６．これがダイアログにおける後続の改善ステップである場合
ａ．ユーザが要求された入力を完了した場合、「ｔｈａｎｋｓ」を出力し、正常に言い換える。（これは、ユーザ入力にマッピングされる要求された制約がある場合に行われる。）
ｂ．ユーザが制約を変更している場合、これを確認し、正常に言い換える。
ｃ．ユーザが選択クラスのインスタンスの適切な名前をタイプした場合、これを特別に処理する。
ｄ．ユーザが理解されない句を追加した場合、それが探索として組み合わされる方法を示す。適切である場合は、入力は探索サービスにディスパッチされる。
ｅ．ユーザが正常な制約を追加している場合、「ＯＫ」を出力し、正常に言い換える。
【０５４０】
７．結果を説明するために、言い換えに同一の方法を使用する。しかし、結果が驚くべきことであるか又は予期しないことである場合、データ及びサービスに関する知識を使用して結果を説明する。また、クエリが制約過多又は制約不足である場合、更なる入力を要求する。
【０５４１】
複雑な名詞節を構築する文法
一実施形態において、条件付き選択タスククエリを言い換える場合（７３４）、基礎は現在の制約を参照する選択クラスの周囲の複雑な名詞節である。各制約は、その種類に基づいて文法的な位置を有する。例えば一実施形態において、アシスタント１００２は、以下のような言い換えを構築する。
【０５４２】
ｒｅｃｏｍｍｅｎｄｅｄ ｒｏｍａｎｔｉｃ Ｉｔａｌｉａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎｅａｒ  Ｍｅｎｌｏ  Ｐａｒｋ  ｗｉｔｈ  ｏｐｅｎ  ｔａｂｌｅｓ  ｆｏｒ  ２  ｔｈａｔ  ｓｅｒｖｅ  ｏｓｓｏ  ｂｕｃｏ  ａｎｄ  ａｒｅ  ｄｅｓｃｒｉｂｅｄ  ａｓ  "ｑｕｉｅｔ"
【０５４３】
これを構築するための文法は、以下の通りである。
＜ｐａｒａｐｈｒａｓｅＮｏｕｎＣｌａｕｓｅ＞：＝＝＜ｂｉｎａｒｙＣｏｎｓｔｒａｉｎｔ＞＜ｓｅａｒｃｈＱｕａｌｉｆｉｅｒ＞＜ｃａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ＞＜ｉｔｅｍＮｏｕｎ＞＜ｌｏｃａｔｉｏｎＣｏｎｓｔｒａｉｎｔ＞＜ａｖａｉｌａｂｉｌｔｙＣｏｎｓｔｒａｉｎｔ＞＜ａｄｊｅｃｔｉｖａｌＣｌａｕｓｅｓ＞
＜ｂｉｎａｒｙＣｏｎｓｔｒａｉｎｔ＞：＝＝ＢｉｎａｒｙＣｏｎｓｔｒａｉｎｔの有無を示す単一の形容詞（例えば、ｒｅｃｏｍｍｅｎｄｅｄ（ｂｅｓｔ），ａｆｆｏｒｄａｂｌｅ（ｃｈｅａｐ））
同一のクエリで２つ以上を一覧表示できる。
【０５４４】
＜ｓｅａｒｃｈＱｕａｌｉｆｉｅｒ＞：＝＝探索エンジンサービスに渡される選択クラスの修飾子に対するオントロジと一致する１つ又は複数の単語（例えば、ｒｏｍａｎｔｉｃ  ｒｅｓｔａｕｒａｎｔｓ，ｆｕｎｎｙ  ｍｏｖｉｅｓ）
ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＳｅａｒｃｈＱｕａｌｉｆｉｅｒの時に使用する。
【０５４５】
＜ｃａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ＞：＝＝選択クラスのジャンル、料理又はカテゴリを識別する形容詞（例えば、Ｃｈｉｎｅｓｅ  ｒｅｓｔａｕｒａｎｔ又はＲ−ｒａｔｅｄ  ｆｉｌｅ）
これは、最も固有のものであるため、最後の接頭語となる形容詞である。ＣａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ及びＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＡｄｊｅｃｔｉｖｅＢｅｆｏｒｅＮｏｕｎの種類の特徴に対して使用する。
【０５４６】
＜ｉｔｅｍＮｏｕｎ＞：＝＝＜ｎａｍｅｄＥｎｔｉｔｙＰｈｒａｓｅ＞｜＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓ＞｜＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓＳｕｂＴｙｐｅ＞
その名詞を表示するのに最も的確な方法を見つける。ＮａｍｅｄＥｎｔｉｔｙ＜ＳｕｂＴｙｐｅ＜Ｃｌａｓｓ
＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓ＞：＝＝選択クラスに対する一般的な名前である名詞（例えば、ｒｅｓｔａｕｒａｎｔ、ｍｏｖｉｅｗ、ｐｌａｃｅ）
＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓＳｕｂＴｙｐｅ＞：＝＝既知である場合に選択クラスの部分型である名詞節（例えば、選択クラスのローカルビジネスに対するｄｉｎｅｒ、ｍｕｓｅｕｍ、ｓｔｏｒｅ、ｂａｒ）。ＣｏｎｓｔｒａｉｎｔＴｙｐｅ＝ＣａｔｅｇｏｒｙＣｏｎｓｔｒａｉｎｔ及びＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＡｄｊｅｃｔｉｖｅＢｅｆｏｒｅＮｏｕｎである特徴に対して使用する。
【０５４７】
＜ｎａｍｅｄＥｎｔｉｔｙＰｈｒａｓｅ＞：＝＝＜ｅｎｔｉｔｙＮａｍｅ＞｜"ｔｈｅ"（＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓ＞｜＜ｓｅｌｅｃｔｉｏｎＣｌａｓｓＳｕｂＴｙｐｅ＞）
＜ｅｎｔｉｔｙＮａｍｅ＞：＝＝選択クラスのインスタンスの適切な名前（例えば、「Ｉｌ  Ｆｏｒｎａｉｏ」「Ａｎｉｍａｌ  Ｈｏｕｓｅ」「Ｈａｒｒｙ'ｓ  Ｂａｒ」）
＜ｌｏｃａｔｉｏｎＣｏｎｓｔｒａｉｎｔ＞：＝＝＜ｌｏｃａｔｉｏｎＰｒｅｐｏｓｉｔｉｏｎ＞＜ｌｏｃａｔｉｏｎＮａｍｅ＞
＜ｌｏｃａｔｉｏｎＰｒｅｐｏｓｉｔｉｏｎ＞：＝＝"ｉｎ"、"ｎｅａｒ"及び"ａｔ"等
＜ｌｏｃａｔｉｏｎＮａｍｅ＞：＝＝都市、住所、ランドマーク又は"ｙｏｕｒ  ｃｕｒｒｅｎｔ  ｌｏｃａｔｉｏｎ"のようなＧＰＳに対するデータ
＜ａｖａｉｌａｂｉｌｉｔｙＣｏｎｓｔｒａｉｎｔ＞：＝＝名詞の後にくる前置詞句として表される空き状況制約（例えば、「ｗｉｔｈ  ｏｐｅｎ  ｔａｂｌｅｓ」、「ｗｉｔｈ  ｓｅａｔｓ  ａｖａｉｌａｂｌｅ」、「ａｖａｉｌａｂｌｅ  ｏｎｌｉｎｅ」）。これは、強調するために名詞の直後にくる。
【０５４８】
＜ａｄｊｅｃｔｉｖａｌＣｌａｕｓｅｓ＞：＝＝＜ｍｏｄｉｆｅｒＶｅｒｂＰｈｒａｓｅ＞｜"ｔｈａｔ"＜ｍｏｄｉｆｅｒＶｅｒｂＰｈｒａｓｅ＞"ａｎｄ"＜ｍｏｄｉｆｅｒＶｅｒｂＰｈｒａｓｅ＞
＜ｍｏｄｉｆｅｒＶｅｒｂＰｈｒａｓｅ＞：＝選択クラスに対する探索キーワード型の制約を表す動詞句（例えば、「ａｒｅ  ｄｅｓｃｒｉｂｅｄ  ａｓ  ｑｕｉｅｔ」、「ｓｅｒｖｅ  ｍｅａｔ  ａｆｔｅｒ  １１」、「ｍａｔｃｈ  'ｔｒａｇｉｃａｌｌｙ  ｈｉｐ'  ｉｎ  ｒｅｖｉｅｗｓ」であるレストラン、「ｃｏｎｔａｉｎ  ｖｉｏｌｅｎｃｅ」、「ｓｔａｒ  Ｂｉｌｌｙ  Ｂｏｂ  Ｔｈｏｒｎｔｏｎ」である映画）。２つ以上ある場合は「ｔｈａｔ．．．ａｎｄ」の変異形を使用してＧｒａｍｍａｔｉｃａｌＲｏｌｅ＝ＴｈａｔＣｌａｕｓｅＭｏｄｉｆｅｒである句に全ての制約を含む。ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＰｌｕｒａｌを使用して「ｔｈａｔ」節を生成し、ＧｕｅｓｓｅｄＱｕａｌｉｆｉｅｒを最後に置く。そのような制約が１つだけ存在する場合、ＤｉｓｐｌａｙＴｅｍｐｌａｔｅＣｏｍｐａｃｔの変異形を使用する。
【０５４９】
表２は、一実施形態に従ってタスクに対する第１の入力に応答して提供される言い換えのいくつかの例を提供する。
2020173835.tif 000017
2020173835.tif 000018
2020173835.tif 000019
2020173835.tif 000020
2020173835.tif 000021
表２：第１の入力に応答した言い換え
【０５５０】
食事をする場所に関するクエリの改善
表３は、食事をする場所を見つけるというユーザの意図が分かっている状況に応答した言い換えのいくつかの例を提供するが、食事をする特定の場所を選択していない。これらには、レストランのリストが提示されており、改善を行う。
2020173835.tif 000022
表３：改善に応答した言い換え
【０５５１】
表４は、結果が取得されると提供される結果の要約のいくつかの例を提供する。
2020173835.tif 000023
2020173835.tif 000024
2020173835.tif 000025
2020173835.tif 000026
2020173835.tif 000027
2020173835.tif 000028
2020173835.tif 000029
表４：結果の要約
【０５５２】
表５は、ユーザが有効なリンクをクリックした時に提供されるプロンプトのいくつかの例を提供する。
【０５５３】
ユーザがアクティブなリンクをクリックした時のプロンプト
2020173835.tif 000030
2020173835.tif 000031
表５：ユーザが有効なリンクをクリックした時のプロンプト
【０５５４】
ダイアログにおける可能な応答の提案
一実施形態において、アシスタント１００２は、コンテキスト提案を提供する。アシスタント１００２がダイアログの現在の状況から前進するユーザオプションを提供する方法の提案である。アシスタント１００２により提供される提案の集合は、コンテキストに依存し、提供される提案の数は媒体及びフォームファクタに依存する。例えば一実施形態において、最も代表的な提案は、ダイアログに一列に提供され、提案の拡張リスト（「ｍｏｒｅ」）がスクロール可能なメニューにおいて提供され、いくつかの文字をタイプして自動補完オプションから選択することにより更なる提案を取得可能である。提案を提供するために他の機構が使用されてもよいことは、当業者には理解されるだろう。
【０５５５】
種々の実施形態において、種々の提案が提供される。提案の種類の例は以下を含む。
【０５５６】
・制約値を追加、除去又は変更することを含むクエリを改善するオプション。
・「ｎｏｔ  ｗｈａｔ  Ｉ  ｍｅａｎ（そういうことじゃない）」又は「ｓｔａｒｔ  ｏｖｅｒ（やり直し）」又は「ｓｅａｒｃｈ  ｔｈｅ  ｗｅｂ（ウェブを探す）」等の悪い状況から修復又は回復するオプション。
・曖昧性を除去するオプション。
・音声の解釈。
・綴りの訂正及び意味的な曖昧性を含むテキストの解釈。
・「ｓｈｏｗ  ｔｈｅｓｅ  ｏｎ  ａ  ｍａｐ（マップ上で見る）」又は「ｓｅｎｄ  ｄｉｒｅｃｔｉｏｎｓ  ｔｏ  ｍｙ  ｄａｔｅ（彼女に道順を送る）」又は「ｅｘｐｌａｉｎ  ｔｈｅｓｅ  ｒｅｓｕｌｔｓ（結果説明）」等のコンテキスト別のコマンド。
・食事又はイベントの計画の例における次のステップ等の提案された相互販売の提供。
・先のコマンド又はそれらの一部を再利用するオプション。
【０５５７】
種々の実施形態において、最も関連する提案を判定するコンテキストは例えば以下から導出される。
・ダイアログ状態
・例えば以下を含むユーザ状態
・静的特性（名前、住所等）
・動的特性（場所、時間、ネットワーク速度）
・例えば以下を含む対話の履歴
・クエリの履歴
・結果の履歴
・それまでに入力されたテキストの自動補完
【０５５８】
種々の実施形態において、提案は例えば以下のようなあらゆる機構により生成される。
・オントロジモデルに基づいてドメイン、タスク又は制約を言い換える。
・現在のドメイン及び制約に基づいて自動補完で入力要求する。
・曖昧な別の解釈を言い換える。
・音声−テキストの別の解釈
・特別なダイアログ条件に基づいて手書きする。
【０５５９】
一実施形態によると、提案は、補完のある状態におけるコマンドに対する動作として生成される。コマンドは、要求の明示的な正規表現であり、ユーザ入力に対して試行された解釈に基づく仮定及び推論を含む。ユーザ入力が未完了であるか又は曖昧である状況において、提案は、ユーザがコマンドを明確にするために入力を調整しやすくするための試行である。
【０５６０】
一実施形態において、各コマンドは、以下のある組合せを有する無条件完結文である。
【０５６１】
・コマンドの動詞（「ｆｉｎｄ」又は「ｗｈｅｒｅ  ｉｓ」等の命令）
・ドメイン（「ｒｅｓｔａｕｒａｎｔｓ」等の選択クラス）
・ｌｏｃａｔｉｏｎ＝Ｐａｌｏ  Ａｌｔｏ及びｃｕｉｓｉｎｅ＝Ｉｔａｌｉａｎ等の制約
コマンドのこれらの部分（動詞、ドメイン、制約）は、オントロジのノードに対応する。
【０５６２】
提案は、コマンドの設定、コマンドの変更、あるいはコマンドが関連するか又は関連しないことの宣言等のコマンドに対する動作と考えられる。例として以下を含む。
【０５６３】
・コマンドの動詞又はドメインを設定する（「ｆｉｎｄ  ｒｅｓｔａｕｒａｎｔｓ」）
・コマンドの動詞を変更する（「ｂｏｏｋ  ｉｔ（予約）」、「ｍａｐ  ｉｔ（地図表示）」、「ｓａｖｅ  ｉｔ（保存）」）
・ドメインを変更する（「ｌｏｏｋｉｎｇ  ｆｏｒ  ａ  ｒｅｓｔａｕｒａｎｔ，  ｎｏｔ  ａ  ｌｏｃａｌ  ｂｕｓｉｎｅｓｓ」（地元産業ではなくレストラン探索））
・制約が関連することを明示する（「ｔｒｙ  ｒｅｆｉｎｉｎｇ  ｂｙ  ｃｕｉｓｉｎｅ」）
・制約に対する値を選択する（「Ｉｔａｌｉａｎ」及び「Ｆｒｅｎｃｈ」等）
・制約及び値を共に選択する（「ｎｅａｒ  ｈｅｒｅ」、「ｔａｂｌｅｓ  ｆｏｒ  ２」）
・制約値が誤っていることを明示する（「ｎｏｔ  ｔｈａｔ  Ｂｏｓｔｏｎ」）
・制約が関連しないことを明示する（「ｉｇｎｏｒｅ  ｔｈｅ  ｅｘｐｅｎｓｅ」)
・制約値を変更する意図を明示する（「ｔｒｙ  ａ  ｄｉｆｆｅｒｅｎｔ  ｌｏｃａｔｉｏｎ」）
・制約値を変更する（「Ｉｔａｌｉａｎ，ｎｏｔ  Ｃｈｉｎｅｓｅ」）
・制約値に追加する（「ａｎｄ  ｗｉｔｈ  ａ  ｐｏｏｌ，  ｔｏｏ」）
・値をグリッドにスナップする（「Ｌｏｓ  Ａｎｇｅｌｅｓ，ｎｏｔ  ｌｏｓ  ａｎｇｅｌｏｓ」）
・新しいコマンドを開始して、コンテキストを再利用する（［ａｆｔｅｒ  ｍｏｖｉｅｓ］「ｆｉｎｄ  ｎｅａｒｂｙ  ｒｅｓｔａｕｒａｎｔｓ」、「ｓｅｎｄ  ｄｉｒｅｃｔｉｏｎｓ  ｔｏ  ｍｙ  ｆｒｉｅｎｄ」）
・コンテキストに対して「ｍｅｔａ」であるコマンドを開始する（「ｅｘｐｌａｉｎ  ｔｈｅｓｅ  ｒｅｓｕｌｔｓ」
・新しいコマンドを開始して、コンテキストを再設定又は無視する（「ｓｔａｒｔ  ｏｖｅｒ」、「ｈｅｌｐ  ｗｉｔｈ  ｓｐｅｅｃｈ」）
【０５６４】
提案は上記のある組合せを更に含んでもよい。例えば以下の通りである。
・「ｔｈｅ  ｍｏｖｉｅ  Ｍｉｌｋ  ｎｏｔ  ［レストランが提供する］  ｔｈｅ  ｆｏｏｄ  ｉｔｅｍ  ｍｉｌｋ」
・「ｒｅｓｔａｕｒａｎｔｓ  ｓｅｒｖｉｎｇ  ｐｉｚｚａ，ｎｏｔ  ｊｕｓｔ  ｐｉｚｚａ  ｊｏｉｎｔｓ」
・「Ｔｈｅ  ｐｌａｃｅ  ｃａｌｌｅｄ  Ｃｏｓｔｃｏ  ｉｎ  Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ，  Ｉ  ｄｏｎ'ｔ  ｃａｒｅ  ｗｈｅｔｈｅｒ  ｙｏｕ  ｔｈｉｎｋ  ｉｔ  ｉｓ  ａ  ｒｅｓｔａｕｒａｎｔ  ｏｒ  ｌｏｃａｌ  ｂｕｉｓｎｅｓｓ」
・「Ｃｈｉｎｅｓｅ  ｉｎ  ｍｏｕｎｔａｉｎ  ｖｉｅｗ」［最近のクエリ］
【０５６５】
一実施形態において、アシスタント１００２は、関連性により順序付けされた提案のリストを維持するための一般的な機構を含む。提案が提供される形式は、デバイスの現在のコンテキスト、モード及びフォームファクタより異なる。
【０５６６】
一実施形態において、アシスタント１００２は、以下の要因のいずれか又は全てを考慮することにより変更する制約を判定する。
・制約が値を有するかを考慮する。
・制約が推論されたか又は明示的に示されたかを考慮する。
・重要点（ｓｕｇｇｅｓｔｉｏｎＩｎｄｅｘ）を考慮する
【０５６７】
一実施形態において、アシスタント１００２は提案の出力形式を判定する。出力形式の例は以下を含む。
・ドメインを変更する
・自動補完オプションが「ｆｉｎｄ  ｒｅｓｔａｕｒａｎｔｓ」である場合、「ｔｒｙ  ｓｏｍｅｔｈｉｎｇ  ｄｉｆｆｅｒｅｎｔ」
・それ以外［推論された］の場合、「ｎｏｔ  ｌｏｏｋｉｎｇ  ｆｏｒ  ｒｅｓｔａｕｒａｎｔｓ」
・名前の制約を変更する
・名前が推論された場合、別の曖昧な解釈を提供する
・現在の結果のエンティティ名を自動補完に入れる
・異なる名前
・名前の参照でなかったことを考慮する（制約を除去する）−その代りにカテゴリを提供する
・「ｎｏｔ  ｎａｍｅｄ」
・「ｎｏｔ  ｉｎ  Ｂｅｒｋｅｌｅｙ」
・「ｓｏｍｅ  ｏｔｈｅｒ  ｄａｙ」
・（曖昧な代替例を使用する）という意味ではない
・推論された日付：「ａｎｙ  ｄａｙ，  Ｉ  ｄｏｎ'ｔ  ｎｅｅｄ  ａ  ｒｅｓｅｒｖａｔｉｏｎ」
【０５６８】
一実施形態において、アシスタント１００２は、提案を通して曖昧性を解決しようとする。例えばユーザの意図の現在の解釈の集合が曖昧すぎる場合（３１０）、提案は更なる情報の入力要求を行う１つの方法３２２である。一実施形態において、条件付き選択タスクに対して、アシスタント１００２は、意図２９０の曖昧な解釈から共通の制約を除外し、解釈の相違点をユーザに提示する。例えばユーザ入力が「ｃａｆe」という単語を含み、その単語がレストラン名又はレストランの種類に一致する場合、アシスタント１００２は、「ｄｉｄ  ｙｏｕ  ｍｅａｎ  ｒｅｓｔａｕｒａｎｔｓ  ｎａｍｅｄ  'ｃａｆe'  ｏｒ  'ｃａｆe  ｒｅｓｔａｕｒａｎｔｓ'？（「カフェ」または「カフェレストラン」という名前のレストランのことですか？）」と尋ねる。
【０５６９】
一実施形態において、アシスタント１００２は特定の状況下で制約を推論する。すなわち、条件付き選択タスクに対して、全ての制約がユーザ入力において明示的に示される必要はない。一部の制約は、アクティブオントロジ１０５０、短期メモリ１０５２及び／又はアシスタント１００２が入手可能な情報の他のソースにおいて入手可能な他の情報から推論される。例えば、以下を含む。
【０５７０】
・ドメイン又は場所を推論する
・場所のようなデフォルトの仮定
・低いレベルで一致する制約（ファジィ、重要度の低い場所等）
・曖昧な基準（接頭語（曖昧であることが多い名前対カテゴリ）のない制約値に一致する）
アシスタント１００２が制約値を推論する場合、ユーザが無効にする提案としてそれらの仮定を提供する。例えば、アシスタントは「Ｉ  ａｓｓｕｍｅｄ  ｙｏｕ  ｍｅａｎｔ  ａｒｏｕｎｄ  ｈｅｒｅ．  Ｗｏｕｌｄ  ｙｏｕ  ｌｉｋｅ  ｔｏ  ｌｏｏｋ  ａｔ  ａ  ｄｉｆｆｅｒｅｎｔ  ｌｏｃａｔｉｏｎ？（この辺のことを言っていたと思いますが？他の場所を見ますか？）」とユーザに伝える。
【０５７１】
可能な実施形態を参照して本発明について特に詳細に説明した。本発明が他の実施形態において実施されてもよいことは、当業者には理解されるだろう。第１に、構成要素の特定の名前、用語の大文字の使用、属性、データ構造、あるいはあらゆる他のプログラミング又は構造的な態様は必須でも重要でもなく、本発明又はその特徴を実現する機構は、種々の名前、形式又はプロトコルを有してもよい。更にシステムは、上述したようにハードウェア及びソフトウェアの組み合わせにより実現されてもよく、全体をハードウェア要素で実現されてもよく、あるいは全体をソフトウェア要素で実現されてもよい。また、本明細書で説明する種々のシステム構成要素間で機能性を特に分割することは、単なる例示であり必須ではない。単一のシステム構成要素により実行される機能は、複数の構成要素により実行されてもよく、複数の構成要素により実行される機能は、単一の構成要素により実行されてもよい。
【０５７２】
種々の実施形態において、本発明は、上述の技術を単独で又はあらゆる組み合わせで実行するシステム又は方法として実現される。別の実施形態において、本発明は、非一時的なコンピュータ可読記憶媒体と、コンピューティングデバイス又は他の電子デバイスのプロセッサに上述の技術を実行させるための媒体において符号化されたコンピュータプログラムコードとを含むコンピュータプログラムとして実現される。
【０５７３】
本明細書における「一実施形態」に対する参照は、その実施形態と関連して説明した特定の機能、構造又は特徴が本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書の種々の場所の「一実施形態において」という句がある箇所では、必ずしも全てが同一の実施形態を参照するとは限らない。
【０５７４】
上記のいくつかの部分は、コンピューティングデバイスのメモリ内のデータビットに対する動作の記号表現及びアルゴリズムに関して提示される。これらのアルゴリズムの説明及び表現は、データ処理分野の技術者の研究の趣旨を他の技術者に最も効果的に伝えるためにその技術者により使用される手段である。アルゴリズムは、ここでは一般に所望の結果をもたらす自己矛盾のないステップ（命令）のシーケンスであると考えられる。それらステップは、物理的な数量の物理的な操作を必要とするステップである。一般に必須ではないが、それら数量は格納、転送、組み合わせ、比較及び操作可能である電気信号、磁気信号又は光信号の形態をとる。主に一般的な使用のために、それら信号をビット、値、要素、記号、文字、用語又は数字等として参照するのが便利な場合がある。更に、一般性を失わずに、物理的な数量の物理的な操作を必要とするステップの特定の構成をモジュール又は符号化デバイスとして参照するのが便利な場合がある。
【０５７５】
尚、それらの用語及び同様の用語の全ては、適切な物理的な数量と関連付けられ、それら数量に適用される便利なラベルにすぎない。以下の説明から明らかであるように特に指示の無い限り、説明中、「処理」又は「計算」又は「算出」又は「表示」又は「判定」等の用語を利用する説明は、コンピュータシステムメモリ又はレジスタ、あるいは他のそのような情報記憶装置、情報送信装置又は情報表示装置内で物理的（電子）数量として表されるデータを操作及び変換するコンピュータシステム、あるいは同様の電子コンピューティングモジュール及び／又はデバイスの行動及び処理を参照することが理解される。
【０５７６】
本発明の特定の態様は、本明細書において説明される処理ステップ及び命令をアルゴリズムの形態で含む。尚、本発明の処理ステップ及び命令は、ソフトウェア、ファームウェア及び／又はハードウェアで具体化され、ソフトウェアで具体化される場合はダウンロードされて常駐し、種々のオペレーティングシステムにより使用される種々のプラットフォームから動作される。
【０５７７】
更に本発明は、本明細書の動作を実行する装置に関する。この装置は、要求された目的のために特別に構築されてもよく、あるいは汎用コンピューティングデバイスに格納されたコンピュータプログラムにより選択的に起動されるか又は再構成される汎用コンピューティングデバイスを備えてもよい。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、特定用途向け集積回路（ＡＳＩＣ）又は電子命令を格納するのに適切であり且つコンピュータシステムバスに結合されるあらゆる種類の媒体を含むあらゆる種類のディスク等のコンピュータ可読記憶媒体に格納されるが、コンピュータ可読記憶媒体はこれらに限定されない。更に本明細書で参照されるコンピューティングデバイスは、単一のプロセッサを含んでもよく、あるいは計算機能を向上するために複数プロセッサの設計を採用するアーキテクチャであってもよい。
【０５７８】
本明細書で提示されるアルゴリズム及びディスプレイは、あらゆる特定のコンピューティングデバイス、仮想化システム又は他の装置に本質的に関連しない。種々の汎用システムは、本明細書の技術に従ってプログラムと共に使用されてもよく、あるいは要求される方法ステップを実行するために更に特化した装置を構築するのが便利であることを示す。これらの種々のシステムに対する要求される構造は、本明細書で提供される説明から明らかとなるだろう。更に本発明についてはいかなる特定のプログラミング言語も参照して説明しない。本明細書で説明するように本発明の技術を実現するために種々のプログラミング言語が使用されてもよく、特定の言語に対する上記のあらゆる参照は本発明の可能性及び最適な形態を開示するために提供されることが理解されるだろう。
【０５７９】
従って、種々の実施形態において、本発明は、ソフトウェア、ハードウェア及び／又はコンピュータシステム、コンピューティングデバイス又は他の電子デバイスを制御する他の要素、あるいはそれらのあらゆる組み合わせ又は複数の組み合わせとして実現される。そのような電子デバイスは、当該技術においては周知の技術に従って、例えばプロセッサ、入力デバイス（キーボード、マウス、タッチパッド、トラックパッド、ジョイスティック、トラックボール、マイク及び／又はそれらのあらゆる組み合わせ等）、出力デバイス（画面及び／又はスピーカ等）、メモリ、長期記憶装置（磁気記憶装置及び／又は光学記憶装置等）、並びに／あるいはネットワーク接続性を含むことができる。そのような電子デバイスは、ポータブルデバイスであってもよく、非ポータブルデバイスであってもよい。本発明の実現するために使用される電子デバイスの例は、移動電話、パーソナルデジタルアシスタント、スマートフォン、キオスク、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、民生用電子デバイス、民生用エンターテイメントデバイス、音楽プレーヤ、カメラ、テレビ、セットトップボックス又は電子ゲームユニット等を含む。本発明を実現する電子デバイスは、例えばＣｕｐｅｒｔｉｎｏ、ＣａｌｉｆｏｒｎｉａのＡｐｐｌｅ  Ｉｎｃ．から市販されているｉＯＳ又はＭａｃＯＳ、あるいはデバイスで使用できるあらゆる他のオペレーティングシステム等のあらゆるオペレーティングシステムを使用してもよい。
【０５８０】
本発明について制限された数の実施形態に関して説明したが、本明細書で説明するような本発明の範囲から逸脱しない他の実施形態が考案されることは、上記説明の利益を有する当業者には理解されるだろう。尚、本明細書で使用される言語は、可読性及び教示の目的で主に選択され、本発明の主題を示すか又は制限するために選択されていない。従って、本発明の開示は、特許請求の範囲で示す本発明の範囲を例示することを意図し、本発明の範囲を限定しない。
【図１】
2020173835.tif 000032
【図２】
2020173835.tif 000033
【図３】
2020173835.tif 000034
【図４】
2020173835.tif 000035
【図５】
2020173835.tif 000036
【図６】
2020173835.tif 000037
【図７】
2020173835.tif 000038
【図８】
2020173835.tif 000039
【図９】
2020173835.tif 000040
【図１０】
2020173835.tif 000041
【図１１】
2020173835.tif 000042
【図１２】
2020173835.tif 000043
【図１３】
2020173835.tif 000044
【図１４】
2020173835.tif 000045
【図１５】
2020173835.tif 000046
【図１６】
2020173835.tif 000047
【図１７】
2020173835.tif 000048
【図１８】
2020173835.tif 000049
【図１９】
2020173835.tif 000050
【図２０】
2020173835.tif 000051
【図２１】
2020173835.tif 000052
【図２２】
2020173835.tif 000053
【図２３】
2020173835.tif 000054
【図２４】
2020173835.tif 000055
【図２５】
2020173835.tif 000056
【図２６】
2020173835.tif 000057
【図２７】
2020173835.tif 000058
【図２８】
2020173835.tif 000059
【図２９】
2020173835.tif 000060
【図３０】
2020173835.tif 000061
【図３１】
2020173835.tif 000062
【図３２】
2020173835.tif 000063
【図３３】
2020173835.tif 000064
【図３４】
2020173835.tif 000065
【図３５】
2020173835.tif 000066
【図３６】
2020173835.tif 000067
【図３７】
2020173835.tif 000068
【図３８】
2020173835.tif 000069
【図３９】
2020173835.tif 000070
【図４０】
2020173835.tif 000071
【図４１】
2020173835.tif 000072
【図４２】
2020173835.tif 000073
【図４３Ａ】
2020173835.tif 000074
【図４３Ｂ】
2020173835.tif 000075
【図４４Ａ】
2020173835.tif 000076
【図４４Ｂ】
2020173835.tif 000077
【図４４Ｃ】
2020173835.tif 000078
【図４５】
2020173835.tif 000079
【図４６】
2020173835.tif 000080
【図４７】
2020173835.tif 000081
【手続補正書】
【提出日】令和2年7月3日(2020.7.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デジタルアシスタントを用いてユーザデバイスでアプリケーションを起動するための方法であって、
プロセッサと、該プロセッサにより実行される命令を格納するメモリとを備える電子デバイスにおいて、
前記ユーザデバイスにおいて、前記ユーザとやりとりするための少なくとも部分的に音声ベースの会話インタフェースを含むグラフィカルユーザインタフェースを提供することであって、前記グラフィカルユーザインタフェースが前記ユーザと前記ユーザデバイスとの間の会話的やりとりの少なくとも一部を表示する、提供することと、
前記ユーザと前記ユーザデバイスとの間のやりとりに関連付けられたコンテキスト情報を取得することと、
前記会話インタフェースを通じて前記ユーザから音声入力を受信することと、
前記音声入力を処理することによって、前記音声入力に関連付けられたユーザ意図を決定することと、
前記音声入力に関連付けられた前記ユーザ意図が、前記ユーザデバイスにインストールされているソフトウェアアプリケーションを呼び出すためのものであると決定されると、
前記ユーザデバイス上で、前記会話インタフェースを含む前記グラフィカルユーザインタフェースの外部に、前記ソフトウェアアプリケーションを呼び出し、
前記ユーザ意図および前記コンテキスト情報に基づいて応答を提供することと、を含む方法。
【請求項２】
前記コンテキスト情報を取得することはさらに、
前記音声入力を受信する前に、前記会話インタフェースを通じて追加的な音声入力を受信することと、
前記追加的な音声入力を処理することによって、前記コンテキスト情報を取得することと、を含む請求項１に記載の方法。
【請求項３】
前記音声入力を処理することによって、前記音声入力に関連付けられた前記ユーザ意図を決定することはさらに、
前記コンテキスト情報を用いて前記音声入力の曖昧さを除くことを含む請求項１または２に記載の方法。
【請求項４】
前記会話インタフェースを通じて前記ユーザから追加的な音声入力を受信することと、
前記追加的な音声入力を処理することによって、前記追加的な音声入力に関連付けられた追加的なユーザ意図を決定することと、
決定された前記追加的なユーザ意図に基づいて、
前記会話インタフェースを通じて前記ユーザから、前記追加的なユーザ意図に関する別の入力を取得し、
前記会話インタフェース内において、前記追加的なユーザ意図を充たすためのタスクを実行することと、をさらに含む請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記会話インタフェースを通じて前記ユーザから追加的な音声入力を受信することと、
前記追加的な音声入力を処理することによって、前記追加的な音声入力に関連付けられた追加的なユーザ意図を決定することと、
前記追加的な音声入力に関連付けられた前記追加的なユーザ意図が、前記ユーザデバイスにインストールされている追加的なソフトウェアアプリケーションを呼び出すためのものであると決定されると、前記ユーザデバイス上で、前記会話インタフェースの外で、前記追加的なソフトウェアアプリケーションを呼び出すことと、をさらに含む請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記コンテキスト情報を取得することはさらに、
前記音声入力の前に、前記ユーザから非音声入力を受信することと、
前記非音声入力を処理することによって、前記コンテキスト情報を取得することと、を含む請求項１から５のいずれか一項に記載の方法。
【請求項７】
コンピュータに、請求項１から６のいずれか一項に記載の方法を行わせるコンピュータプログラム。
【請求項８】
請求項７に記載の前記コンピュータプログラムを保持するメモリと、
前記メモリに保持される前記コンピュータプログラムを実行することができるひとつ以上のプロセッサと、を備える電子デバイス。
【請求項９】
請求項１から６のいずれか一項に記載の方法を行う手段を備える電子デバイス。
【外国語明細書】
2020173835000001.pdf