(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024020889
(43)【公開日】2024-02-15
(54)【発明の名称】対話方法、サーバ装置、およびプログラム
(51)【国際特許分類】
G06F 16/90 20190101AFI20240207BHJP
G10L 15/00 20130101ALI20240207BHJP
G10L 15/10 20060101ALI20240207BHJP
G06F 3/16 20060101ALI20240207BHJP
G06F 3/01 20060101ALI20240207BHJP
G06F 16/9032 20190101ALI20240207BHJP
【FI】
G06F16/90 100
G10L15/00 200J
G10L15/10 500T
G06F3/16 650
G06F3/01 510
G06F16/9032
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2022123426
(22)【出願日】2022-08-02
(71)【出願人】
【識別番号】507134068
【氏名又は名称】サウンドハウンド,インコーポレイテッド
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】内藤 正樹
【テーマコード(参考)】
5B175
5E555
【Fターム(参考)】
5B175EA01
5B175FA01
5E555AA46
5E555BA02
5E555BA04
5E555BA15
5E555BA23
5E555BB04
5E555BC04
5E555CA47
5E555CB64
5E555DA23
5E555EA10
5E555FA00
(57)【要約】
【課題】バーチャルアシスタントによるプロアクティブな動作をユーザにとって最適なものとするための技術を提供する。
【解決手段】対話システム1において、サーバ装置は、バーチャルアシスタントとして機能するために、クエリと条件とを含む設定表現を取得するステップと、クエリおよび条件をメモリに格納するステップと、条件によって特定される状況が発生したことに応じて、クエリを含む問合表現を出力するための制御を実施するステップと、を実施する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
サーバ装置によって実施される対話方法であって、
クエリと条件とを含む設定表現を取得するステップと、
前記クエリおよび前記条件をメモリに格納するステップと、
前記条件によって特定される状況が発生したことに応じて、前記クエリを含む問合表現を出力するための制御を実施するステップと、備える、対話方法。
【請求項2】
前記設定表現に対して自然言語解釈を実施することにより、前記クエリおよび前記条件を前記設定表現から抽出するステップをさらに備える、請求項1に記載の対話方法。
【請求項3】
前記設定表現を取得するステップは、前記設定表現に対応する音声を受け取ることを含む、請求項1または請求項2に記載の対話方法。
【請求項4】
特定のメッセージの入力を取得するステップをさらに備え、
前記設定表現を受け付けるステップは、前記特定のメッセージが取得されたことに応じて実施される、請求項1または請求項2に記載の対話方法。
【請求項5】
前記クエリに対して自然言語解釈を実施することにより、前記クエリが適合する文法を特定するステップと、
前記文法が属するドメインを特定するステップと、
前記ドメインが前記メモリに格納されたリストに登録されているか否かを判断するステップと、
前記ドメインが前記リストに登録されていないことに応じて、前記クエリおよび前記条件を前記メモリに登録することを回避するステップと、をさらに備える、請求項1または請求項2に記載の対話方法。
【請求項6】
前記設定表現を取得するステップは、2以上のユーザのうち前記設定表現に対応するユーザを特定する情報を受け取ることを含み、
前記リストは、2以上のユーザのうち1以上のユーザを特定する情報に関連付けられており、
前記ドメインが前記リストに登録されているか否かを判断するステップは、
前記ドメインが基づく前記設定表現に対応するユーザを特定することと、
前記ユーザに関連付けられた前記リストを特定することと、を含む、請求項5に記載の対話方法。
【請求項7】
前記設定表現に基づいて、前記クエリの種類を特定するステップと、
前記種類に基づく態様に従って、前記問合表現を生成するステップと、をさらに備える、請求項1または請求項2に記載の対話方法。
【請求項8】
前記種類に基づく態様は、前記問合表現において前記クエリに追加される内容を識別する、請求項7に記載の対話方法。
【請求項9】
前記問合表現は、肯定または否定を意味する回答を要求する質問を含む、請求項1または請求項2に記載の対話方法。
【請求項10】
前記状況は、自動車に関する状況を含む、請求項1または請求項2に記載の対話方法。
【請求項11】
前記条件は、前記状況が発生する頻度を規定する、請求項1または請求項2に記載の対話方法。
【請求項12】
サーバ装置とユーザ端末とによって実施される対話方法であって、
前記サーバ装置によって、クエリと条件とを含む設定表現を取得するステップと、
前記サーバ装置によって、前記クエリおよび前記条件をメモリに格納するステップと、
前記サーバ装置によって、前記ユーザ端末に対し、前記条件によって特定される状況が発生したことに応じて、前記クエリを含む問合表現の出力を指示するステップと、
前記ユーザ端末によって、前記サーバ装置からの指示に応じて、前記問合表現を出力するステップと、を備える、対話方法。
【請求項13】
前記ユーザ端末によって、前記設定表現を音声で受け取るステップと、
前記ユーザ端末によって、前記設定表現を前記サーバ装置へ送信するステップと、をさらに備える、請求項12に記載の対話方法。
【請求項14】
前記ユーザ端末によって、前記条件によって特定される状況が発生したか否かを判断するためのデータを前記サーバ装置へ送信するステップを、さらに備える、請求項12または請求項13に記載の対話方法。
【請求項15】
プロセッサと、
前記プロセッサによって実行されることにより、前記プロセッサに請求項1または請求項2に記載の対話方法を実施させる、プログラムを格納するメモリと、を備える、サーバ装置。
【請求項16】
プロセッサによって実行されることにより、前記プロセッサに請求項1または請求項2に記載の対話方法を実施させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータによるユーザとの対話に関する。
【背景技術】
【0002】
従来、バーチャルアシスタントのプロアクティブな動作について種々検討がなされていた。たとえば、非特許文献1(Maria Schmidt,外2名,“How Users React to Proactive Voice Assistant Behavior While Driving”,[online],令和2年5月11日,[令和4年6月13日検索],インターネット<URL: https://aclanthology.org/2020.lrec-1.61/>)では、音声アシスタントの受け身的な動作と積極的な動作のそれぞれに対するドライバの認識の負荷の大きさが検討されている。非特許文献2(O. Miksik,外18名,“Building Proactive Voice Assistants: When and How (not) to Interact”,[online],令和2年5月4日,[令和4年6月13日検索],インターネット<URL: https://arxiv.org/pdf/2005.01322.pdf>)では、音声アシスタントのプロアクティブな動作を開始する適切なタイミングが検討されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Maria Schmidt,外2名,“How Users React to Proactive Voice Assistant Behavior While Driving”,[online],令和2年5月11日,[令和4年6月13日検索],インターネット<URL: https://aclanthology.org/2020.lrec-1.61/>
【非特許文献2】O. Miksik,外18名,“Building Proactive Voice Assistants: When and How (not) to Interact”,[online],令和2年5月4日,[令和4年6月13日検索],インターネット<URL: https://arxiv.org/pdf/2005.01322.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来、バーチャルアシスタントのプロアクティブな動作自体の最適化については検討がなされていなかった。
【0005】
本開示は、係る実情に鑑み考え出されたものであり、バーチャルアシスタントによるプロアクティブな動作をユーザにとって最適なものとするための技術を提供するものである。
【課題を解決するための手段】
【0006】
本開示のある局面に従うと、サーバ装置によって実施される対話方法であって、クエリと条件とを含む設定表現を取得するステップと、前記クエリおよび前記条件をメモリに格納するステップと、前記条件によって特定される状況が発生したことに応じて、前記クエリを含む問合表現を出力するための制御を実施するステップと、備える、対話方法が提供される。
【発明の効果】
【0007】
本開示によれば、ユーザにとって最適なプロアクティブ動作を実施するバーチャルアシスタントとしての動作を提供する、対話方法が提供される。
【図面の簡単な説明】
【0008】
【
図1】実施の形態における対話システムの構成の一例を示す図である。
【
図2】対話システム1の動作の一例を模式的に示す図である。
【
図3】メインサーバ100のハードウエア構成の一例を示す図である。
【
図4】ユーザ端末200のハードウエア構成の一例を示す図である。
【
図6】登録情報のデータ構造の第1具体例を、設定表現とともに示す図である。
【
図7】登録情報のデータ構造の第2具体例を、設定表現とともに示す図である。
【
図8】登録情報のデータ構造の第3具体例を、設定表現とともに示す図である。
【
図9】ポーリングクエリのフレームのデータ構造の第1具体例を示す図である。
【
図10】ポーリングクエリのデータ構造の第1具体例を示す図である。
【
図11】ポーリングクエリのフレームのデータ構造の第2具体例を示す図である。
【
図12】ポーリングクエリのデータ構造の第2具体例を示す図である。
【
図13】ポーリングクエリのフレームのデータ構造の第3具体例を示す図である。
【
図14】ポーリングクエリのデータ構造の第3具体例を示す図である。
【
図15】問合表現の生成方法を説明するための図である。
【
図16】対話システム1が実施する処理のフローチャートである。
【
図17】対話システム1が実施する処理のフローチャートである。
【
図18】対話システム1が実施する処理のフローチャートである。
【
図19】対話システム1が実施する処理のフローチャートである。
【発明を実施するための形態】
【0009】
以下に、図面を参照しつつ、対話方法を実現する対話システムの一実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【0010】
[1.対話システムの構成]
図1は、実施の形態における対話システムの構成の一例を示す図である。対話システム1は、メインサーバ100、ユーザ端末200、API(Application Programming Interface)サーバ800、および制御サーバ900を含む。
図1では、メインサーバ100、ユーザ端末200、APIサーバ800、および制御サーバ900のそれぞれの数量は1であるが、本開示によって説明される技術においてこれらの数量は1に制限されない。
【0011】
対話システム1では、メインサーバ100およびユーザ端末200は、ユーザ300に対するバーチャルアシスタントとして機能する。メインサーバ100には、バーチャルアシスタントとして機能するための、サーバ用のアプリケーションプログラム(サーバ用アプリ)がインストールされている。ユーザ端末200には、バーチャルアシスタントとして機能するための、端末用のアプリケーションプログラム(端末用アプリ)がインストールされている。ユーザ端末200は、スマートフォンであってもよいし、スマートスピーカであってもよいし、自動車に搭載された情報処理装置であってもよいし、家電機器に搭載された情報処理装置であってもよい。
【0012】
メインサーバ100は、バーチャルアシスタントとして機能するために、必要に応じて、APIサーバ800に要求を送信し、APIサーバ800から当該要求に応じた応答を受信し、受信した応答を利用する。メインサーバ100は、バーチャルアシスタントとして機能するために、必要に応じて、制御サーバ900に対して指示を送信する。
【0013】
APIサーバ800は、たとえば、天気に関する情報を提供するサーバとして実現される。制御サーバ900は、種々の装置の動作を制御するためのサーバとして実現される。一例では、制御サーバ900は、自動車に搭載されたコンピュータと通信することにより、当該自動車内の要素(エアコン、ラジオ、等)の動作を制御する。他の例では、制御サーバ900は、家電機器に搭載されたコンピュータと通信することにより、当該家電機器の動作を制御する。なお、
図1では、メインサーバ100、ユーザ端末200、APIサーバ800、および制御サーバ900は、ネットワーク500を介して通信するように記載されているが、これらはネットワーク500を介して通信する必要はない。たとえば、ユーザ端末200および制御サーバ900の双方が自動車に搭載されていてもよく、ユーザ端末200および制御サーバ900は、直接通信するように構成されていてもよい。
【0014】
図2は、対話システム1の動作の一例を模式的に示す図である。対話システム1は、ユーザ300から、設定表現を取得する。設定表現は、クエリおよび条件を特定する情報を含む。対話システム1は、上記条件によって特定される状況が発生するか否かを監視する。そして、上記条件によって特定される状況が発生すると、対話システム1は、上記クエリを含む問合表現を出力する。これにより、対話システム1は、ユーザ300が設定した条件によって特定される状況が発生したときに、ユーザ300に対してプロアクティブな対話を開始することができる。対話システム1は、また、このようなプロアクティブな対話を、ユーザ300が設定したクエリを含む問合表現で開始することができる。
【0015】
[2.ハードウェア構成(メインサーバ)]
図3は、メインサーバ100のハードウエア構成の一例を示す図である。メインサーバ100は、CPU(Central Processing Unit)101と、通信I/F(インターフェース)102と、ストレージ103とを含む。ストレージ103は、各種のプログラムを格納するプログラム用領域1031、および、各種のデータを格納するデータ領域1032を含む。
【0016】
CPU101は、ストレージ103または外部の記憶装置に格納されたプログラムを実行することにより、各種の演算を実行する。通信I/F102は、たとえばネットワークカードによって実現され、メインサーバ100を対話システム1内の他の装置と通信させる。対話システム1において、APIサーバ800および制御サーバ900は、
図3に示されたメインサーバ100と同様のハードウェア構成を有していても良い。
【0017】
[3.ハードウェア構成(ユーザ端末)]
図4は、ユーザ端末200のハードウエア構成の一例を示す図である。ユーザ端末200は、CPU201と、ディスプレイ202と、マイクロフォン203と、スピーカ204と、入力デバイス205と、通信I/F206と、ストレージ207とを含む。ストレージ207は、各種のプログラムを格納するプログラム用領域2071、および、各種のデータを格納するデータ領域2072を含む。
【0018】
CPU201は、ストレージ207または外部の記憶装置に格納されたプログラムを実行することにより、各種の演算を実行する。
【0019】
ディスプレイ202は、CPU201から指示された画面を表示する。マイクロフォン203は、入力された音声をCPU201に入力する。スピーカ204は、CPU201から指示された音声を出力する。入力デバイス205は、たとえば物理キーおよび/またはタッチセンサによって実現され、ユーザからの情報の入力を受け付ける。通信I/F206は、たとえばネットワークカードによって実現され、ユーザ端末200を対話システム1内の他の装置と通信させる。
【0020】
[4.設定表現の処理]
対話システム1において、メインサーバ100は、ユーザから設定表現を受け付けると、当該設定表現からクエリおよび条件を抽出し、登録情報として、当該クエリおよび条件をストレージ103に格納する。
図5~
図7を参照して、クエリおよび条件を設定表現から抽出して登録情報として格納するための処理について説明する。
【0021】
(登録されるデータの内容)
図5は、登録情報の内容の一例を表す図である。
図5において「Key」として示されるように、格納されるデータは、7種類の項目(「Query Text」「Query Type」「Query Domain」「Trigger Type」「Trigger Value」「Trigger Repeat」「Trigger Rule」)を含む。「Query Text」「Query Type」および「Query Domain」は、クエリを構成する情報である。「Trigger Type」「Trigger Value」「Trigger Repeat」および「Trigger Rule」は、条件を構成する情報である。
図5には、「Notes」として、各項目に関する解説が付記されている。以下、各項目について説明する。
【0022】
「Query Text」は、クエリのテキストを識別する。
「Query Type」は、クエリの種類を識別する。一実現例では、クエリの種類として、「質問」および「命令」が定義される。「質問」は、ユーザが尋ねたい内容を表すクエリであることを意味する。「命令」は、ユーザが実現を希望する内容を表すクエリであることを意味する。
【0023】
「Query Domain」は、クエリが属するドメインを識別する。一実現例では、ドメインは、クエリの内容が表す分野を意味する。
図5の例では、ドメインの例として、「天気」「家電制御」および「自動車制御」が示される。
【0024】
「Trigger Type」は、条件の種類を識別する。
図5の例では、条件の種類の例として、「時刻」「気温」および「速度」が示される。
【0025】
「Trigger Value」は、条件を構成する値を識別する。条件を構成する値の種類は、条件の種類(「Trigger Type」)に依存する。たとえば、「Trigger Type」が時刻であれば「Trigger Value」は時刻の単位を対応する値であり、「Trigger Type」が気温であれば「Trigger Value」は温度の単位に対応する値であり、「Trigger Type」が速度であれば「Trigger Value」は速度の単位に対応する値である。
【0026】
「Trigger Repeat」は、条件によって特定される状況が発生する頻度を識別する。
図5の例では、条件が発生する頻度として、「毎日」「毎週(○曜日)」「毎月(○日)」および「一時間ごと」が示される。登録情報が項目「Trigger Repeat」の値を含むことにより、登録情報に含まれる条件は、状況が発生する頻度を規定する。
【0027】
「Trigger Rule」は、「Trigger Value」が利用される規則を識別する。一実現例では、規則として、「等価」「以上」および「以下」が定義される。
【0028】
(登録されるデータの第1具体例)
図6は、登録情報のデータ構造の第1具体例を、設定表現とともに示す図である。
【0029】
図6のデータ構造は、設定表現「今日の天気はどうですか、と毎日午前8時に尋ねたいです。」から抽出されるクエリおよび条件を構成するデータを含む。
【0030】
より具体的には、
図6のデータ構造は、「Query Text」として「今日の天気はどうですか」を含む。
【0031】
一実現例では、設定表現に対して自然言語解釈が実施されることにより、「Query Text」として、設定表現からクエリを表す部分「今日の天気はどうですか」が抽出される。
【0032】
たとえば、メインサーバ100には、設定表現に対する自然言語解釈のための文法が格納されている。文法の一例は、「[第1フレーズ]、と[第2フレーズ]尋ねたいです。」である。この文法において、[第1フレーズ]および[第2フレーズ]のそれぞれは、任意のテキストを表すことが意図される。そして、設定表現がこの文法に適合した場合、[第1フレーズ]に相当する部分が、クエリを表す部分として抽出される。
【0033】
図6のデータ構造は、「Query Type」として「質問」を含む。一実現例では、設定表現が「尋ねたいです。」というフレーズを含む場合に、クエリの種類として「質問」が特定される。
【0034】
図6のデータ構造は、「Query Domain」として「天気」を含む。一実現例では、設定表現からクエリが抽出された後、当該クエリが当てはまる文法が特定され、特定された文法が属するドメインが特定される。このように特定されたドメインが、「Query Domain」の値として特定される。なお、対話システム1では、たとえばストレージ103に、自然言語解釈に利用される複数の文法のそれぞれが属するドメインを指し示すデータベースが格納されている。
【0035】
図6のデータ構造は、「Trigger Type」として「時刻」を含む。一実現例では、設定表現からクエリが抽出された後、設定表現のうちクエリ以外の部分に対して自然言語解釈が実施されることにより、「Trigger Type」の値が特定される。たとえば、クエリが「○○時に」(「○○」は任意の数字を表す)という文字列を含むとき、「Trigger Type」の値として「時刻」が特定される。
【0036】
図6のデータ構造は、「Trigger Value」として「08:00」を含む。一実現例では、「Trigger Value」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。より具体的には、設定表現が「午前8時に」というフレーズを含むことによって「Trigger Type」の値「時刻」が特定された場合、「Trigger Type」の値として、当該フレーズに含まれる時刻を表す部分「午前8時」に対応する数値「08:00」が特定される。
【0037】
図6のデータ構造は、「Trigger Repeat」として「毎日」を含む。一実現例では、設定表現のうちクエリ以外の部分に頻度を表す文字列が含まれる場合、当該文字列が「Trigger Repeat」として特定される。
【0038】
図6のデータ構造は、「Trigger Rule」として「等価」を含む。一実現例では、「Trigger Value」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。
図6の例では、「午前8時に」というフレーズが、時間を表す「午前8時」そのものを指し示すことから、「Trigger Rule」として「等価」が特定される。
【0039】
(登録されるデータの第2具体例)
図7は、登録情報のデータ構造の第2具体例を、設定表現とともに示す図である。
【0040】
図7のデータ構造は、設定表現「気温が25℃以上になったら、エアコンをオンにしたいです。」から抽出されるクエリおよび条件を構成するデータを含む。
【0041】
より具体的には、
図7のデータ構造は、「Query Text」として「エアコンをオンにしたい」を含む。
【0042】
一実現例では、設定表現に対して自然言語解釈が実施されることにより、「Query Text」として、設定表現からクエリを表す部分「エアコンをオンにしたい」が抽出される。
【0043】
たとえば、メインサーバ100には、設定表現に対する自然言語解釈のための文法が格納されている。文法の一例は、「[第1フレーズ]になったら、[第2フレーズ]したいです。」である。この文法において、[第1フレーズ]および[第2フレーズ]のそれぞれは、任意のテキストを表すことが意図される。そして、設定表現がこの文法に適合した場合、[第2フレーズ]に相当する部分が、クエリを表す部分として抽出される。
【0044】
図7のデータ構造は、「Query Type」として「命令」を含む。一実現例では、設定表現が「尋ねたいです。」というフレーズを含まない場合に、クエリの種類として「命令」が特定される。
【0045】
図7のデータ構造は、「Query Domain」として「家電制御」を含む。一実現例では、設定表現からクエリが抽出された後、当該クエリが当てはまる文法が特定され、特定された文法が属するドメインが特定される。このように特定されたドメインが、「Query Domain」の値として特定される。
【0046】
図7のデータ構造は、「Trigger Type」として「気温」を含む。一実現例では、設定表現からクエリが抽出された後、設定表現のうちクエリ以外の部分に対して自然言語解釈が実施されることにより、「Trigger Type」の値が特定される。たとえば、クエリが「○○℃以上になったら」(「○○」は任意の数字を表す)という文字列を含むとき、「Trigger Type」の値として「気温」が特定される。
【0047】
図7のデータ構造は、「Trigger Value」として「25」を含む。一実現例では、「Trigger Value」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。より具体的には、設定表現が「25℃以上になったら」というフレーズを含むことによって「Trigger Type」の値「気温」が特定された場合、「Trigger Value」の値として、当該フレーズに含まれる温度を表す部分「25℃」に対応する数値「25」が特定される。
【0048】
図7のデータ構造は、「Trigger Repeat」の値を含まない。これは、
図7の例では、設定表現のうちクエリ以外の部分に頻度を表す文字列が含まれないことに基づく。
【0049】
図7のデータ構造は、「Trigger Rule」として「以上」を含む。一実現例では、「Trigger Rule」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。
図7の例では、「25℃以上になったら」というフレーズが、「以上」を含むことから、「Trigger Rule」として「以上」が特定される。
【0050】
(登録されるデータの第3具体例)
図8は、登録情報のデータ構造の第3具体例を、設定表現とともに示す図である。
【0051】
図8のデータ構造は、設定表現「車の速度が時速40キロ以下になったら、ラジオをオンにしたいです。」から抽出されるクエリおよび条件を構成するデータを含む。
【0052】
より具体的には、
図8のデータ構造は、「Query Text」として「ラジオをオンにしたい」を含む。一実現例では、設定表現に対して自然言語解釈が実施されることにより、「Query Text」として、設定表現からクエリを表す部分「ラジオをオンにしたい」が抽出される。
【0053】
図8のデータ構造は、「Query Type」として「命令」を含む。一実現例では、設定表現が「尋ねたいです。」というフレーズを含まない場合に、クエリの種類として「命令」が特定される。
【0054】
図8のデータ構造は、「Query Domain」として「自動車制御」を含む。一実現例では、設定表現からクエリが抽出された後、当該クエリが当てはまる文法が特定され、特定された文法が属するドメインが特定される。このように特定されたドメインが、「Query Domain」の値として特定される。
【0055】
図8のデータ構造は、「Trigger Type」として「速度」を含む。一実現例では、設定表現からクエリが抽出された後、設定表現のうちクエリ以外の部分に対して自然言語解釈が実施されることにより、「Trigger Type」の値が特定される。たとえば、クエリが「時速が○○キロ以下になったら」(「○○」は任意の数字を表す)という文字列を含むとき、「Trigger Type」の値として「速度」が特定される。
【0056】
図8のデータ構造は、「Trigger Value」として「40」を含む。一実現例では、「Trigger Value」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。より具体的には、設定表現が「時速40キロ以下になったら」というフレーズを含むことによって「Trigger Type」の値「速度」が特定された場合、「Trigger Type」の値として、当該フレーズに含まれる速度を表す部分「40キロ」(40キロメートル毎時)に対応する数値「40」が特定される。
【0057】
図8のデータ構造は、「Trigger Repeat」の値を含まない。これは、
図8の例では、設定表現のうちクエリ以外の部分に頻度を表す文字列が含まれないことに基づく。
【0058】
図8のデータ構造は、「Trigger Rule」として「以下」を含む。一実現例では、「Trigger Rule」の値は、「Trigger Type」の値の特定に利用されたフレーズを利用して特定される。
図8の例では、「時速40キロ以下になったら」というフレーズが、「以下」を含むことから、「Trigger Rule」として「以下」が特定される。
【0059】
図8に示されるデータ構造によって特定される条件は、自動車の時速が40キロメートル以下になったことを規定する。この場合、条件によって特定される状況は、自動車の時速が40キロメートル以下になった状況であり、自動車に関する状況の一例である。
【0060】
[5.条件に基づく問合表現の出力]
図2を参照して説明されたように、対話システム1は、条件によって特定される状況が発生したことに応じて、問合表現を出力する。
【0061】
一実現例では、対話システム1は、条件によって特定される状況が発生したか否かを判断するためのデータを定期的に収集し、当該状況が発生したか否かを判断する。上記データの収集の一例として、メインサーバ100自身が上記データを収集する。他の例では、ユーザ端末200が上記データを収集してメインサーバ100に提供する。より具体的には、ユーザ端末200は、メインサーバ100へ、定期的にポーリングクエリを送信することにより、上記データを提供する。
【0062】
ポーリングクエリの送信に関し、メインサーバ100は、登録情報としてストレージ103に格納されたデータ群の一部を利用して、ポーリングクエリのフレームを作成し、当該フレームをユーザ端末200へ送信する。ユーザ端末200は、定期的に、当該フレームにデータを充填することによりポーリングクエリを生成し、メインサーバ100へ送信する。以下、ポーリングクエリの具体例を説明する。
【0063】
(ポーリングクエリおよびそのフレームの第1具体例)
図9は、ポーリングクエリのフレームのデータ構造の第1具体例を示す図である。
図9の例は、設定表現として
図6に示された表現が入力された場合に対応する。
【0064】
図9の例において、ポーリングクエリのフレームは、メッセージ「check_proactive_query_trigger」と、文字列「RequestInfo:{ExtraValue: {Type: Time, Value: [###]}}」とを含む。メッセージ「check_proactive_query_trigger」は、後続の文字列で特定されるデータを利用して、登録情報の中の条件によって特定された状況が発生しているか否かを判断することを指示する。文字列「RequestInfo:{ExtraValue: {Type: Time, Value: [###]}}」のうち、「Type: Time」は、収集されるデータの種類を表し、より具体的には、「時刻」を表す。メインサーバ100は、このメッセージにおけるデータの種類として、登録情報の中の「Trigger Type」として特定される種類を設定する。「Value: [###]」は、収集されたデータを充填される部分を表す。より具体的には、「###」は、収集されたデータに置換される。
【0065】
図10は、ポーリングクエリのデータ構造の第1具体例を示す図である。
図10のデータ構造は、
図9に示されたフレームを利用して生成される。より具体的には、
図10のデータ構造は、ユーザ端末200が、条件によって特定される状況が発生したか否かを判断するためのデータとして7時50分という時刻を取得したことに応じて生成される。さらに具体的には、
図10のデータ構造は、
図9に示されたデータ構造における「###」が、収集されたデータ(7時50分という時刻を表す「07:50」)に置換されることによって生成される。
【0066】
以上より、
図10に示されたポーリングクエリは、「07:50」という時刻を表すデータを利用して、登録情報の中の条件によって特定される状況が発生したか否かを判断することを指示する。
【0067】
(ポーリングクエリおよびそのフレームの第2具体例)
図11は、ポーリングクエリのフレームのデータ構造の第2具体例を示す図である。
図11の例は、設定表現として
図7に示された表現が入力された場合に対応する。
【0068】
図11の例において、ポーリングクエリのフレームは、メッセージ「check_proactive_query_trigger」と、文字列「RequestInfo:{ExtraValue: {Type: Temperature, Value: [###]}}」とを含む。「Type: Temperature」は、収集されるデータの種類を表し、より具体的には、「気温」を表す。
【0069】
図12は、ポーリングクエリのデータ構造の第2具体例を示す図である。
図12のデータ構造は、
図11に示されたフレームを利用して生成される。より具体的には、
図12のデータ構造は、ユーザ端末200が、条件によって特定される状況が発生したか否かを判断するためのデータとして30℃という気温のデータを取得したことに応じて生成される。ユーザ端末200は、たとえば、気温を計測する機器と通信することにより、上記データを取得する。そして、
図12のデータ構造は、
図11に示されたデータ構造における「###」が、収集されたデータ(30℃という気温「30.0」)に置換されることによって生成される。
【0070】
以上より、
図12に示されたポーリングクエリは、「30.0」という気温を表すデータを利用して、登録情報の中の条件によって特定される状況が発生したか否かを判断することを指示する。
【0071】
(ポーリングクエリおよびそのフレームの第3具体例)
図13は、ポーリングクエリのフレームのデータ構造の第3具体例を示す図である。
図13の例は、設定表現として
図8に示された表現が入力された場合に対応する。
【0072】
図13の例において、ポーリングクエリのフレームは、メッセージ「check_proactive_query_trigger」と、文字列「RequestInfo:{ExtraValue: {Type: Speed, Value: [###]}}」とを含む。「Type: Speed」は、収集されるデータの種類を表し、より具体的には、「(自動車の)速度」を表す。
【0073】
図14は、ポーリングクエリのデータ構造の第3具体例を示す図である。
図14のデータ構造は、
図13に示されたフレームを利用して生成される。より具体的には、
図14のデータ構造は、ユーザ端末200が、条件によって特定される状況が発生したか否かを判断するためのデータとして時速60キローメートルという速度のデータを取得したことに応じて生成される。ユーザ端末200は、たとえば、自動車に設置されたコンピュータとして実現され、当該自動車の速度計と通信することによって上記の速度のデータを取得する。そして、
図14のデータ構造は、
図13に示されたデータ構造における「###」が、収集されたデータ(時速60キローメートルという速度を表す「60.0」のデータ)に置換されることによって生成される。
【0074】
以上より、
図14に示されたポーリングクエリは、「60.0」という速度を表すデータを利用して、登録情報の中の条件によって特定される状況が発生したか否かを判断することを指示する。
【0075】
[6.問合表現]
図15は、問合表現の生成方法を説明するための図である。
図15を参照して、クエリを含む問合表現の生成方法の一例を説明する。
【0076】
図15に示されたテーブルは、条件によって特定される状況の発生という項目を含む。この項目は、条件によって特定される状況の発生が発生しているか否かを表す。
図15に示されたテーブルは、さらに3つの項目(クエリの種類、問合表現の生成方法、および、問合表現の例)を有する。
【0077】
図15の例において、上記状況が発生していない場合(条件によって特定される状況の発生という項目の値が「無し」の場合)、クエリの種類に拘わらず、問合表現は生成されない。
【0078】
図15の例において、上記状況が発生した場合(条件によって特定される状況の発生という項目の値が「有り」の場合)、クエリの種類に従った態様(生成方法)で、問合表現が生成される。より具体的には、クエリの種類が「質問」である場合、登録情報において「Query Text」の値として登録されているクエリのテキストに、「と尋ねたいですか?」を付加することにより、問合表現が生成される。一方、クエリの種類が「命令」である場合、登録情報において「Query Text」の値として登録されているクエリのテキストに、「ですか?」を付加することにより、問合表現が生成される。すなわち、クエリの種類によって、問合表現を生成するためにクエリのテキストに追加される文字列(内容)が異なる。
【0079】
クエリの種類が「質問」である場合に生成される問合表現の一例は、「今日の天気はどうですか、と尋ねたいですか?」である。この問合表現は、
図6に示された例に対応する。
図6の例では、クエリのテキストは「今日の天気はどうですか」であり、クエリの種類は「質問」である。「今日の天気はどうですか」に、「と尋ねたいですか?」が付加されることによって、上記の問合表現が生成される。
【0080】
クエリの種類が「命令」である場合に生成される問合表現の一例は、「エアコンをオンにしたいですか?」である。この問合表現は、
図7に示された例に対応する。
図7の例では、クエリのテキストは「エアコンをオンにしたい」であり、クエリの種類は「命令」である。「エアコンをオンにしたい」に、「ですか?」が付加されることによって、上記の問合表現が生成される。
【0081】
生成される問合表現は、ユーザ300に対して、肯定を意味する回答(たとえば、「はい。」)、または、否定を意味する回答(たとえば、「いいえ。」)を要求する質問であってもよい。
【0082】
[7.処理の流れ]
図16~
図19は、対話システム1が実施する処理のフローチャートである。
図16~
図19には、メインサーバ100において実施される処理と、ユーザ端末200において実施される処理が示される。一実現例では、メインサーバ100は、CPU101にサーバ用アプリを実行させることによって上記処理を実施する。一実現例では、ユーザ端末200は、CPU201に端末用アプリを実行させることによって上記処理を実施する。
【0083】
図16を参照して、ステップS200にて、ユーザ端末200は、ユーザ300からウェイクワードを入力されたか否かを判断する。ユーザ端末200は、ウェイクワードが入力されたと判断するまでステップS200の制御を繰り返し(ステップS200にてNO)、ウェイクワードが入力されたと判断すると(ステップS200にてYES)、ステップS202へ制御を進める。
【0084】
ステップS202にて、ユーザ端末200は、ユーザ300からウェイクワードの次に入力された音声を取得する。
【0085】
ステップS204にて、ユーザ端末200は、ステップS202において取得した音声をメインサーバ100へ送信する。
【0086】
ステップS100にて、メインサーバ100は、ステップS204においてユーザ端末200から送信された音声を受信する。
【0087】
ステップS102にて、メインサーバ100は、ステップS100において受信した音声が、上述の登録情報の登録を要求するためのメッセージ(登録用メッセージ)を含むか否かを判断する。登録用メッセージは、本開示における「特定のメッセージ」の一例である。登録用メッセージの一例は、「クエリと条件を設定させて。」である。一実現例では、メインサーバ100は、音声認識技術を用いて上記音声のテキストを生成し、当該テキストが登録用メッセージのテキストを含むか否かによってステップS102の判断を実施する。メインサーバ100は、上記音声が登録用メッセージを含むと判断するとステップS104へ制御を進め(ステップS102にてYES)、そうでなければステップS138へ制御を進める(ステップS102にてNO)。
【0088】
図17を参照して、ステップS138にて、メインサーバ100は、受信した音声に従った動作を実施して、処理を終了させる。
【0089】
図16に戻って、ステップS104にて、メインサーバ100は、ユーザ端末200に対して、設定表現の入力を促すメッセージ(促進用メッセージ)の出力を指示する。促進用メッセージの一例は、「クエリと条件を話して。」である。
【0090】
ステップS206にて、ユーザ端末200は、ステップS104の指示に応じて、促進用メッセージを出力する。促進用メッセージの出力の一例は、促進用メッセージを表す音声を発話することである。
【0091】
ステップS208にて、ユーザ端末200は、ユーザ300から入力される音声を取得する。入力される音声は、促進用メッセージの出力の後にユーザ300の発話であり、通常は設定表現である。
【0092】
ステップS210にて、ユーザ端末200は、ステップS208において取得した音声をメインサーバ100へ送信する。
【0093】
ステップS106にて、メインサーバ100は、ステップS210において送信された音声を受信する。
【0094】
ステップS108にて、メインサーバ100は、ステップS106において受信した音声に対して音声認識を実施する。これにより、音声に対応するテキストが取得される。
【0095】
ステップS110にて、メインサーバ100は、ステップS108において取得されたテキストに対して自然言語解釈を実施する。
【0096】
ステップS112にて、メインサーバ100は、ステップS110における自然言語解釈の結果を利用して、設定表現(ステップS208において入力された音声)から、クエリ(「Query Text」の値)および条件(「Trigger Type」「Trigger Value」「Trigger Repeat」および「Trigger Rule」の各々の値)を抽出する。
【0097】
ステップS114にて、メインサーバ100は、設定表現(ステップS208において入力された音声)に基づいて、クエリの種類(「Query Type」の値)を特定する。
【0098】
ステップS116にて、メインサーバ100は、設定表現(ステップS208において入力された音声)に基づいて、クエリが対応する文法を特定する。
【0099】
ステップS118にて、メインサーバ100は、ステップS116において特定された文法に基づいて、クエリのドメイン(「Query Domain」の値)を特定する。
【0100】
図18を参照して、ステップS120にて、メインサーバ100は、ステップS118において特定されたドメインがリストに含まれているか否かを判断する。リストとは、ユーザ300に対して適用可能なドメインのリストを意味する。一実現例では、当該リストは、ストレージ103に格納されている。メインサーバ100は、上記ドメインが上記リストに含まれていると判断すると(ステップS120にてYES)、ステップS122へ制御を進める。メインサーバ100は、上記ドメインが上記リストに含まれていないと判断すると(ステップS120にてNO)、ステップS140へ制御を進める。
【0101】
図19を参照して、ステップS140にて、メインサーバ100は、ユーザ端末200に対して、設定失敗の報知を指示する。その後、メインサーバ100は処理を終了させる。
【0102】
ステップS226にて、ユーザ端末200は、ステップS140の指示に応じて、設定失敗を報知する。設定失敗の報知の一例は、メッセージ「そのクエリは対象外です。」の出力である。他の例は、メッセージ「別のクエリを入力してください。」の出力である。
【0103】
図18に戻って、ステップS122にて、メインサーバ100は、ステップS112~S118において抽出または特定されたデータを、登録情報として、ユーザ300に関連付けて、ストレージ103に格納する。
【0104】
上述のように、メインサーバ100は、ステップS120において、上述のドメインが上述のリストに含まれているか否かを判断し、含まれていないと判断した場合、ステップS122における登録情報のデータの格納を実施することなく、処理を終了させる。この意味において、ステップS120は、登録情報(クエリおよび条件)をメモリに登録することを回避するステップの一例である。
【0105】
ステップS124にて、メインサーバ100は、ステップS114において特定されたクエリの種類を利用して、ポーリングクエリのフレームを生成する。
【0106】
ステップS126にて、メインサーバ100は、ステップS124において生成したポーリングクエリのフレームをユーザ端末200へ送信する。
【0107】
ステップS212にて、ユーザ端末200は、ステップS126において送信されたポーリングクエリのフレームを受信する。
【0108】
ステップS214にて、ユーザ端末200は、ステップS212において受信したポーリングクエリのフレームをストレージ207に格納する。
【0109】
ステップS216にて、ユーザ端末200は、ポーリングクエリ用のデータ(たとえば、
図9、
図11、または
図13において「###」で表されたデータ)を収集する。
【0110】
ステップS218にて、ユーザ端末200は、ステップS216において収集されたデータを利用してポーリングクエリを生成し、生成されたポーリングクエリをメインサーバ100へ送信する。
【0111】
ステップS128にて、メインサーバ100は、ステップS218において送信されたポーリングクエリを受信する。
【0112】
ステップS130にて、メインサーバ100は、ポーリングクエリに含まれるデータを利用して、登録情報の条件によって特定される状況が発生しているか否かを判断する。メインサーバ100は、上記状況が発生していると判断するとステップS132へ制御を進め(ステップS130にてYES)、そうでなければ処理を終了させる(ステップS130にてNO)。
【0113】
登録情報によって特定される状況の一例は、午前8時になったことである。ポーリングクエリに含まれるデータが、午前7時50分を示す場合には、未だ午前8時は到来していないので、メインサーバ100は、上記状況が発生していないと判断する。一方、ポーリングクエリに含まれるデータが、午前8時00分を示す場合には、メインサーバ100は、上記状況が発生していると判断する。
【0114】
登録情報によって特定される状況の他の例は、気温が25℃以上になったことである。ポーリングクエリに含まれるデータが、気温が20℃であることを示す場合には、メインサーバ100は、上記状況が発生していないと判断する。一方、ポーリングクエリに含まれるデータが、気温が30℃であることを示す場合には、メインサーバ100は、上記状況が発生していると判断する。
【0115】
登録情報によって特定される状況のさらに他の例は、自動車の速度が時速40キロ以下になったことである。ポーリングクエリに含まれるデータが、自動車の速度が時速60キロであることを示す場合には、メインサーバ100は、上記状況が発生していないと判断する。一方、ポーリングクエリに含まれるデータが、自動車の速度が時速30キロであることを示す場合には、メインサーバ100は、上記状況が発生していると判断する。
【0116】
ステップS132にて、メインサーバ100は、登録情報を利用して問合表現を生成する。
【0117】
ステップS134にて、メインサーバ100は、ユーザ端末200に対して、ステップS132にて生成された問合表現の出力を指示する。
【0118】
ステップS136にて、メインサーバ100は、ストレージ103における、上記問合表現を利用してユーザ300との会話状態を更新する。問合表現に対するユーザ300の回答が肯定または否定を意味する内容のみであっても、メインサーバ100は、更新された会話状態を参照することにより、ユーザ300の回答内容に応じた動作を実施できる。その後、メインサーバ100は、処理を終了させる。
【0119】
ステップS220にて、ユーザ端末200は、ステップS134の指示を受信する。
ステップS222にて、ユーザ端末200は、問合表現を出力し、ステップS202(
図16)へ制御を戻す。
【0120】
図16~
図19を参照して説明された処理において、ユーザ端末200は、定期的に、ステップS216におけるデータを収集およびステップS218におけるポーリングクエリの送信を実施する。
【0121】
[8.対話システム1における動作の具体例]
図16~
図19を参照して説明された処理では、メインサーバ100は、設定表現を取得し、当該設定表現から取得された登録情報をストレージ103に格納する。そして、メインサーバ100は、上記登録情報の中の条件によって特定される状況が発生すると、ステップS134にて、ユーザ端末200に対して、上記登録情報の中のクエリを含む問合表現の出力を指示する。これに応じて、ステップS222にて、ユーザ端末200は問合表現を出力する。その後、ユーザ端末200は、ステップS202にて、問合表現に対する回答の音声を取得すると、ステップS204にて、当該音声をメインサーバ100へ送信する。メインサーバ100は、ステップS100にて、上記音声を受信し、ステップS138にて、当該音声に従った動作を実施する。
【0122】
上述の処理によれば、ユーザは、問合表現として出力されることを希望するクエリと、問合表現の出力を希望するタイミングを特定するための条件とを、設定表現としてサーバ装置へ提供することにより、上記条件によって特定される状況が発生したときに、上記クエリを含む問合表現の出力によって、プロアクティブな動作の提供を受けることができる。
【0123】
以下、対話システム1における動作の具体例を説明する。
(動作の第1具体例)
対話システム1における動作の第1具体例として、
図6に示された登録情報が格納された場合の動作を説明する。
【0124】
図6の例に従うと、ユーザ端末200は、ポーリングクエリとして、定期的に、時刻のデータを送信する。メインサーバ100は、ポーリングクエリに含まれる時刻が午前8時になったかどうかを判断し、午前8時になったと判断すると、ユーザ端末200に、問合表現の出力を指示する。メインサーバ100は、ユーザ端末200に問合表現の出力を指示したことに応じて、ストレージ103に、指示した日付を格納してもよい。メインサーバ100は、ポーリングクエリに含まれる時刻が午前8時になったと判断した場合に、ストレージ103にまだ当日の日付が格納されていないことを条件として、ユーザ端末200に問合表現の出力を指示してもよい。
【0125】
問合表現として、「今日の天気はどうですか、と尋ねたいですか?」が出力される。この問合表現に対してユーザ300が「はい。」と回答した場合、メインサーバ100は、この回答に従った動作を実施する。より具体的には、メインサーバ100は、「はい。」という肯定の回答を受け付けた場合、ステップS136において格納された会話状態を参照する。会話状態は、たとえば、「Query Text」として登録されたクエリを出力されたことを指し示す情報である。そして、メインサーバ100は、肯定の回答を受け付けたことに応じて、「Query Text」として登録されたクエリを処理する。すなわち、メインサーバ100は、クエリ「今日の天気はどうですか?」を処理するために、天気予報用のAPIサーバ800に、ユーザ300に関連付けられて登録されている地域の天気予報を問い合わせる。そして、天気予報用のAPIサーバ800から回答を取得し、当該回答の出力をユーザ端末200に対して指示する。
【0126】
ユーザ300が「いいえ。」という否定の回答を受け付けた場合、メインサーバ100は、「OK」などの特定のメッセージの出力をユーザ端末200に対して指示してもよい。
【0127】
ステップS136において会話状態が格納された後、メインサーバ100は、上記のようにクエリを処理したこと、または、所与の条件が成立したことに応じて、ストレージ103から会話状態を消去してもよい。所与の条件の一例は、会話状態の格納から一定の期間が経過したことである。他の例は、ステップS136において会話状態が格納された後で、ステップS100において受信された音声が、肯定の回答を表すメッセージ以外のメッセージであることである。
【0128】
以上より、対話システム1は、毎日8時にユーザ300に対して問合表現「今日の天気はどうですか、と尋ねたいですか?」を出力する。そして、ユーザ300が「はい。」と回答すると、対話システム1は、ユーザ300に、天気予報用のAPIサーバ800からの回答を提供する。
【0129】
(動作の第2具体例)
対話システム1における動作の第2具体例として、
図7に示された登録情報が格納された場合の動作を説明する。
【0130】
図7の例に従うと、ユーザ端末200は、ポーリングクエリとして、定期的に、気温のデータを送信する。一実現例では、ユーザ端末200は、ユーザ300に関連付けられた居室の気温を計測する機器と通信することにより、気温のデータを取得する。メインサーバ100は、ポーリングクエリに含まれる気温が25℃以上であるかどうかを判断し、25℃以上であると判断すると、ユーザ端末200に、問合表現の出力を指示する。メインサーバ100は、ユーザ端末200に問合表現の出力を指示したことに応じて、ストレージ103に、指示した時刻を格納してもよい。メインサーバ100は、ポーリングクエリに含まれる気温が25℃以上であると判断した場合に、ストレージ103に格納された時刻から一定期間が経過したことを条件として、ユーザ端末200に問合表現の出力を指示してもよい。
【0131】
問合表現として、「エアコンをオンにしたいですか?」が出力される。この問合表現に対してユーザ300が「はい。」と回答した場合、メインサーバ100は、この回答に従った動作を実施する。より具体的には、メインサーバ100は、「はい。」という肯定の回答を受け付けた場合、ステップS136において格納された会話状態を参照する。会話状態は、たとえば、「Query Text」として登録されたクエリを出力されたことを指し示す情報である。そして、メインサーバ100は、肯定の回答を受け付けたことに応じて、「Query Text」として登録されたクエリを処理する。すなわち、メインサーバ100は、クエリ「エアコンをオンにしたい」を処理するために、家電制御用の制御サーバ900に、ユーザ300に関連付けられて登録されているエアコンのONを指示する。
【0132】
以上より、対話システム1は、ユーザ300に関連付けられた居室の気温が25℃以上になると、ユーザ300に対して問合表現「エアコンをオンにしたいですか?」を出力する。そして、ユーザ300が「はい。」と回答すると、対話システム1は、制御サーバ900を利用して、ユーザ300に関連付けられたエアコンをオンにする。
【0133】
(動作の第3具体例)
対話システム1における動作の第3具体例として、
図8に示された登録情報が格納された場合の動作を説明する。
【0134】
図8の例に従うと、ユーザ端末200は、ポーリングクエリとして、定期的に、自動車の速度のデータを送信する。一実現例では、ユーザ端末200は、ユーザ300に関連付けられた車両の速度を計測する機器と通信することにより、自動車の速度のデータを取得する。メインサーバ100は、ポーリングクエリに含まれる速度が40km/h以下であるかどうかを判断し、40km/h以下であると判断すると、ユーザ端末200に、問合表現の出力を指示する。
【0135】
問合表現として、「ラジオをオンにしたいですか?」が出力される。この問合表現に対してユーザ300が「はい。」と回答した場合、メインサーバ100は、この回答に従った動作を実施する。より具体的には、メインサーバ100は、「はい。」という肯定の回答を受け付けた場合、ステップS136において格納された会話状態を参照する。会話状態は、たとえば、「Query Text」として登録されたクエリを出力されたことを指し示す情報である。そして、メインサーバ100は、肯定の回答を受け付けたことに応じて、「Query Text」として登録されたクエリを処理する。すなわち、メインサーバ100は、クエリ「ラジオをオンにしたい」を処理するために、自動車制御用の制御サーバ900に、ユーザ300に関連付けられて登録されている車両のラジオのONを指示する。
【0136】
以上より、対話システム1は、ユーザ300に関連付けられた自動車の速度が40km/h以下になると、ユーザ300に対して問合表現「ラジオをオンにしたいですか?」を出力する。そして、ユーザ300が「はい。」と回答すると、対話システム1は、制御サーバ900を利用して、ユーザ300に関連付けられた自動車のラジオをオンにする。
【0137】
[9.変形例]
上述の実施の形態では、設定表現および問合表現の双方の形態が音声であったが、これらは音声に限定されない。設定表現は、テキストとしてユーザ端末200に入力されてもよい。この場合、ユーザ端末200は、入力されたテキストをメインサーバ100へ送信する。設定表現は、ユーザ端末200を介することなく、メインサーバ100へ直接入力されてもよい。また、問合表現も、テキストとして出力されてもよい。
【0138】
上述の実施の形態では、対話システム1は、設定表現を取得する前に、ステップS202,S204,S100,およびS102において登録用メッセージを認識した後、ステップS206において催促用メッセージを出力した。なお、ユーザ300は、登録用メッセージと設定表現とを一連の音声として発話してもよい。対話システム1は、登録用メッセージを認識した後、直後の表現を、設定表現として扱ってもよい。この場合、催促用メッセージの出力は必要とされない。
【0139】
対話システム1では、また、設定表現に対する自然言語解釈によって、設定表現からクエリおよび条件が抽出された。なお、対話システム1は、クエリおよび条件のそれぞれを入力するための複数の欄を有するユーザインターフェースを(たとえばディスプレイ202に)表示してもよい。対話システム1は、当該複数の欄のそれぞれにユーザ300が入力したデータを取得してもよい。これにより、対話システム1は、設定表現に対する自然言語解釈を実施することなく、
図6~
図8のそれぞれに示されたような登録情報を取得できる。
【0140】
上述の実施の形態において、対話システム1には、2以上のユーザが想定されてもよい。ストレージ103において、2以上のユーザのそれぞれに対応する登録情報が、各ユーザに関連付けられて格納されていてもよい。
図16~
図19を参照して説明された処理は、ユーザごとに実施されてもよい。一実現例では、対話システム1において複数のユーザ端末200が存在し、各ユーザ端末200はメインサーバ100に向けて各ユーザのユーザIDとともに情報を送信する。メインサーバ100は、ユーザ端末200から送信された情報に含まれるユーザIDを用いて、処理対象のユーザを識別する。また、メインサーバ100は、ステップS120における判断に利用されるリストとして、2以上のリストの中から、ユーザ端末200から送信されたユーザIDに基づいてリストを特定してもよい。
【0141】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0142】
1 対話システム、100 メインサーバ、200 ユーザ端末、300 ユーザ、800 APIサーバ、900 制御サーバ。