(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-10-23
(45)【発行日】2024-10-31
(54)【発明の名称】話題モジュールセット作成装置、対話装置、話題モジュールセット作成方法、対話方法及びコンピュータプログラム
(51)【国際特許分類】
G10L 15/22 20060101AFI20241024BHJP
G10L 15/10 20060101ALI20241024BHJP
G06F 3/16 20060101ALI20241024BHJP
【FI】
G10L15/22 300Z
G10L15/10 500Z
G06F3/16 650
(21)【出願番号】P 2023095767
(22)【出願日】2023-06-09
【審査請求日】2023-06-09
【新規性喪失の例外の表示】特許法第30条第2項適用 発行日(公開日) 2023年5月3日 刊行物名 日本ロボット学会誌 41巻 3号 2023年4月号 P.291~302 一般社団法人日本ロボット学会 〔Web公開〕 URL:https://www.jstage.jst.go.jp/article/jrsj/41/3/41_41_291/_article/-char/ja DOI: https://doi.org/10.7210/jrsj.41.291 <資 料> 日本ロボット学会誌 掲載 学術・技術論文
(73)【特許権者】
【識別番号】500149555
【氏名又は名称】株式会社サイバーエージェント
(73)【特許権者】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100141139
【氏名又は名称】及川 周
(72)【発明者】
【氏名】馬場 惇
(72)【発明者】
【氏名】挾間 智久
(72)【発明者】
【氏名】中西 惇也
(72)【発明者】
【氏名】吉川 雄一郎
(72)【発明者】
【氏名】石黒 浩
【審査官】土井 悠生
(56)【参考文献】
【文献】特開2022-129957(JP,A)
【文献】特開2022-101137(JP,A)
【文献】特開2018-167339(JP,A)
【文献】特開2007-047488(JP,A)
【文献】特開2020-077272(JP,A)
【文献】特開2019-174732(JP,A)
【文献】特開2019-067433(JP,A)
【文献】特開2018-072560(JP,A)
【文献】特開2010-048980(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10L 15/00-17/26
G06F 3/16
(57)【特許請求の範囲】
【請求項1】
一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成する話題モジュールセット作成部、
を備え
、
少なくとも1つ以上の話題モジュールには、前記ユーザ又はシステムの状態を表すための候補状態と変数の組み合わせを少なくとも1つ含む起動条件が設定され、
前記話題モジュールセット作成部は、話題モジュールに示された前記話題に応じた内容を各話題モジュールに対応付けることによって前記候補状態と前記話題のセットである話題モジュールを複数作成し、作成した複数の前記話題モジュールを所定の優先順位で階層構造に配置することによって前記話題モジュールセットを作成する、話題モジュールセット作成装置。
【請求項2】
請求項1に記載の話題モジュールセット作成装置と、
前記話題モジュールセット作成装置によって作成された前記話題モジュールセットと、少なくとも前記ユーザ又はシステムの状態を表す状態情報とに基づいて、前記ユーザの状態又は前記システム
の状態に応じた話題を決定する話題決定部と、
決定された前記話題に応じた内容を出力させる出力部と、
を備える対話装置。
【請求項3】
1つのシナリオは、複数の話題で構成され、
前記シナリオを構成する各話題を候補状態とし、各候補状態に変数を対応付けることによって前記状態情報を作成する状態情報作成部、をさらに備える、
請求項
2に記載の対話装置。
【請求項4】
前記状態情報作成部は、前記状態情報を作成する際に、前記シナリオを構成する各話題のうち、同様の意味を示す複数の話題を1つの話題に統合する、
請求項
3に記載の対話装置。
【請求項5】
少なくとも前記ユーザの発話内容又はテキストにより入力された内容に応じて前記ユーザに関する状態情報を更新し、前記システムにおける発話内容又は動作に応じて前記システムに関する状態情報を更新する状態更新部をさらに備え、
前記状態更新部は、前記ユーザの発話内容もしくはテキストにより入力された内容又は前記システムにおける発話内容もしくは動作に応じた候補状態の変数を更新することによって前記状態情報を更新する、
請求項
2に記載の対話装置。
【請求項6】
前記話題決定部は、前記状態情報に基づいて、満たされた起動条件に対応付けられた話題のうち、優先順位の高い話題を前記ユーザ又は前記システムの状態に応じた話題として決定する、
請求項
2に記載の対話装置。
【請求項7】
前記話題決定部は、第1のシナリオに基づく対話中において第2のシナリオを構成する話題への転換が必要な場合には、前記状態情報に基づいて、前記第2のシナリオを構成する話題の中から次の話題を決定する、
請求項
2に記載の対話装置。
【請求項8】
前記話題決定部は、起動条件を満たす話題モジュールがない場合に、前記起動条件が設定されていない対話モジュールを選択する、
請求項
2に記載の対話装置。
【請求項9】
前記話題決定部により決定された話題又は話題に基づく情報に基づいて、自装置に接続されたロボット、表示装置に表示されたエージェント又は音声出力装置の動作を制御する動作制御部をさらに備える、
請求項
2に記載の対話装置。
【請求項10】
コンピュータが、
一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成
し、
少なくとも1つ以上の話題モジュールには、前記ユーザ又はシステムの状態を表すための候補状態と変数の組み合わせを少なくとも1つ含む起動条件が設定され、
話題モジュールに示された前記話題に応じた内容を各話題モジュールに対応付けることによって前記候補状態と前記話題のセットである話題モジュールを複数作成し、作成した複数の前記話題モジュールを所定の優先順位で階層構造に配置することによって前記話題モジュールセットを作成する、話題モジュールセット作成方法。
【請求項11】
コンピュータが、
請求項10に記載の話題モジュールセット作成方法によって作成された前記話題モジュールセッ
トと、少なくとも前記ユーザ又はシステムの状態を表す状態情報とに基づいて、前記ユーザ又は前記システムの状態に応じた話題を決定し、
決定された前記話題に応じた内容を出力させる、対話方法。
【請求項12】
コンピュータを、
請求項1に記載の話題モジュールセット作成装置、または、請求項
2に記載の対話装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、話題モジュールセット作成装置、対話装置、話題モジュールセット作成方法、対話方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
従来、人と対話ロボットによる対話システムに関する研究がなされている(例えば、非特許文献1参照)。対話システムの実装アプローチとして、機械学習を用いる方法や、有限状態マシンを用いる方法等が挙げられる。機械学習を用いる方法では、学習したパターンでシステムを制御でき、人の発話に応じて何らかの応答を返すことができるため対話を続けることができる。一方で、機械学習を用いる方法では、学習パターンに依存してしまうため、設計者の意図した対話ができない場合もある。さらに、特定の振る舞いを修正したい場合であっても簡単に修正することができない。
【0003】
それに対して、有限状態マシンを用いる方法では、設計者が手動でルールを記述するため、設計者の意図した対話を実現しやすい。さらに、特定の振る舞いを修正したい場合には、その特定の振る舞いに関するルールを修正するだけでよい。そのため、有限状態マシンを用いる方法もよく利用されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】駒谷 和範, “音声対話システムの構成と今後”, [online], [令和5年6月9日検索], インターネット<URL: https://system.jpaa.or.jp/patent/viewPdf/3307>, Vol. 72 No. 8
【発明の概要】
【発明が解決しようとする課題】
【0005】
有限状態マシンを用いる方法では、話題の遷移の前後関係を全て設計する必要がある。そのため、想定する遷移パターンの増大に伴い、設計が複雑になってしまうことが考えられる。実際の運用上、遷移パターンを全て網羅するように設計することは困難であり、このような場合、未設計の箇所においては話題遷移ができずに対話が破綻してしまうという問題があった。このような問題は、人と対話ロボットとの発話による対話に限らず、テキストによる対話においても共通する問題である。
【0006】
上記事情に鑑み、本発明は、複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させることができる技術の提供を目的としている。
【課題を解決するための手段】
【0007】
本発明の一態様は、一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成する話題モジュールセット作成部、を備え、少なくとも1つ以上の話題モジュールには、前記ユーザ又はシステムの状態を表すための候補状態と変数の組み合わせを少なくとも1つ含む起動条件が設定され、前記話題モジュールセット作成部は、話題モジュールに示された前記話題に応じた内容を各話題モジュールに対応付けることによって前記候補状態と前記話題のセットである話題モジュールを複数作成し、作成した複数の前記話題モジュールを所定の優先順位で階層構造に配置することによって前記話題モジュールセットを作成する、話題モジュールセット作成装置である。
【0009】
本発明の一態様は、上記の話題モジュールセット作成装置と、前記話題モジュールセット作成装置によって作成された前記話題モジュールセットと、少なくとも前記ユーザ又はシステムの状態を表す状態情報とに基づいて、前記ユーザの状態又は前記システムの状態に応じた話題を決定する話題決定部と、決定された前記話題に応じた内容を出力させる出力部と、を備える対話装置である。
【0010】
本発明の一態様は、上記の対話装置であって、少なくとも1つ以上の話題モジュールには、前記ユーザ又は前記システムの状態を表すための候補状態と変数の組み合わせを少なくとも1つ含む起動条件が設定され、前記話題モジュールセット作成部は、話題モジュールに示された前記話題に応じた内容を各話題モジュールに対応付けて、所定の優先順位で複数の話題モジュールを階層構造に配置することによって前記話題モジュールセットを作成する。
【0011】
本発明の一態様は、上記の対話装置であって、1つのシナリオは、複数の話題で構成され、前記シナリオを構成する各話題を前記候補状態とし、各候補状態に変数を対応付けることによって前記状態情報を作成する状態情報作成部、をさらに備える。
【0012】
本発明の一態様は、上記の対話装置であって、前記状態情報作成部は、前記状態情報を作成する際に、前記シナリオを構成する各話題のうち、同様の意味を示す複数の話題を1つの話題に統合する。
【0013】
本発明の一態様は、上記の対話装置であって、少なくとも前記ユーザの発話内容又はテキストにより入力された内容に応じて前記ユーザに関する状態情報を更新し、前記システムにおける発話内容又は動作に応じて前記システムに関する状態情報を更新する状態更新部をさらに備え、前記状態更新部は、前記ユーザの発話内容もしくはテキストにより入力された内容又は前記システムにおける発話内容もしくは動作に応じた候補状態の変数を更新することによって前記状態情報を更新する。
【0014】
本発明の一態様は、上記の対話装置であって、前記話題決定部は、前記状態情報に基づいて、満たされた起動条件に対応付けられた話題のうち、優先順位の高い話題を前記ユーザ又は前記システムの状態に応じた話題として決定する。
【0015】
本発明の一態様は、上記の対話装置であって、前記話題決定部は、前記起動条件を満たす話題モジュールがない場合に、前記起動条件が設定されていない対話モジュールを選択する。
【0016】
本発明の一態様は、上記の対話装置であって、前記話題決定部により決定された話題又は話題に基づく情報に基づいて、自装置に接続されたロボット、表示装置に表示されたエージェント又は音声出力装置の動作を制御する動作制御部をさらに備える。
【0017】
本発明の一態様は、コンピュータが、一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成し、少なくとも1つ以上の話題モジュールには、前記ユーザ又はシステムの状態を表すための候補状態と変数の組み合わせを少なくとも1つ含む起動条件が設定され、話題モジュールに示された前記話題に応じた内容を各話題モジュールに対応付けることによって前記候補状態と前記話題のセットである話題モジュールを複数作成し、作成した複数の前記話題モジュールを所定の優先順位で階層構造に配置することによって前記話題モジュールセットを作成する、話題モジュールセット作成方法である。
【0018】
本発明の一態様は、コンピュータが、上記の話題モジュールセット作成方法によって作成された前記話題モジュールセットと、少なくとも前記ユーザ又はシステムの状態を表す状態情報とに基づいて、前記ユーザ又は前記システムの状態に応じた話題を決定し、決定された前記話題に応じた内容を出力させる、対話方法である。
【0019】
本発明の一態様は、上記の話題モジュールセット作成装置、または、上記の対話装置として機能させるためのコンピュータプログラムである。
【発明の効果】
【0020】
本発明により、複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させることが可能となる。
【図面の簡単な説明】
【0021】
【
図1】実施形態における対話システムの構成の一例を示す図である。
【
図2】実施形態における状態情報の一例を示す図である。
【
図3】実施形態における話題モジュールセットの一例(その1)を示す図である。
【
図4】実施形態における出力言語情報の一例を示す図である。
【
図5】実施形態におけるシナリオの一例を示す図である。
【
図6】実施形態における状態情報の作成方法を説明するための図である。
【
図7】実施形態における状態情報の作成方法を説明するための図である。
【
図8】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図9】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図10】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図11】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図12】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図13】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図14】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図15】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図16】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図17】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図18】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図19】実施形態における話題モジュールセットの作成方法を説明するための図である。
【
図20】実施形態における対話システムの処理の流れを示すシーケンス図(その1)である。
【
図21】実施形態における状態情報の更新の一例を示す図である。
【
図22】実施形態における話題モジュールセットの一例(その2)を示す図である。
【
図23】実施形態における対話システムの処理の流れを示すシーケンス図(その1)である。
【
図24】実施形態における状態情報の更新の一例を示す図である。
【
図25】実施形態における状態情報の更新の一例を示す図である。
【
図26】実施形態における話題モジュールセットの一例(その3)を示す図である。
【
図27】実施形態における対話システムの処理の流れを示すシーケンス図(その3)である。
【
図28】実施形態における状態情報の更新の一例を示す図である。
【
図29】実施形態における話題モジュールセットの一例(その4)を示す図である。
【
図30】実施形態における対話システムの処理の流れを示すシーケンス図(その4)である。
【
図31】実施形態における状態情報の更新の一例を示す図である。
【
図32】変形例における対話システムの構成の一例を示す図である。
【
図33】変形例における話題モジュールセットの一例(その5)を示す図である。
【発明を実施するための形態】
【0022】
以下、本発明の一実施形態を、図面を参照しながら説明する。
(要約)
本発明における対話装置では、所定の条件が満たされた場合に、対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットと、ユーザの動作、ユーザの発話内容又はテキストにより入力された内容に応じたユーザの状態を表す状態情報とに基づいて、ユーザに対して提供する話題を決定し、決定した話題に基づく内容をユーザに出力(音声出力又はテキスト出力)する。対話の相手であるユーザに提供する話題は、ユーザと対話するための材料であり、どのような事柄であってもよい。話題モジュールセットは、複数の話題モジュールが、優先順位に応じて階層構造で配置されて構成される。
【0023】
本発明における対話には、ユーザと対話装置との音声による対話と、ユーザと対話装置とのテキストによる対話と、ユーザ又は対話装置が音声による対話を行い、他方がテキストによる対話を行うことを含む。一実施形態の説明では、ユーザと対話装置との音声による対話を例に説明する。
【0024】
さらに、本発明における対話装置では、一方向の対話の流れが記述された1以上のシナリオに基づいて、話題モジュールセット及び状態情報を作成する。ここで一方向の対話の流れとは、ある対象が、対話の相手との対話で達成したいゴールに向かうまでにやり取りされることが想定される話題の流れを表す。例えば、対話の相手との対話で達成したいゴールが、「ラーメン店を推薦する」であるとする。この場合、ゴールに向かうためにやり取りされることが想定される一方向の対話の話題として、「お腹空いている?」、「ラーメン食べたい?」、「ラーメン店紹介OK?」等が考えられる。一方向の対話の流れとしては、「お腹空いている?」と聞いた後に、「ラーメン食べたい?」と聞き、その後に「ラーメン店紹介OK?」と聞いて「ラーメン店を推薦する」といった流れが考えられる。
【0025】
本発明における対話装置では、上述したような一方向の対話の流れが記述されたシナリオを1つ以上用いて、話題モジュールセット及び状態情報を作成する。そして、対話装置は、作成した話題モジュールセット及び状態情報を用いて、ユーザに対して提供する話題を決定し、決定した話題に基づく内容をユーザに出力(音声出力又はテキスト出力)する。
【0026】
話題モジュールセットは、移動ロボットの分野で利用されるサブサンプションアーキテクチャの技術を元に作成されるものである。本発明における話題モジュールセットが、従来のサブサンプションアーキテクチャの技術で作成されるモジュールセットと異なる点は、シナリオに基づいて自動的に話題モジュールセットを作成できる点と、ユーザの状態が加味されている点である。例えば、移動ロボットの分野で利用されるサブサンプションアーキテクチャでは、予め作成された各モジュールを所定の優先順位に応じて並べることによってモジュールセットを構成している。それに対して、本発明における対話システムでは、一方向の対話の流れが記述されたシナリオに基づいて自動的に話題モジュールセットを作成することができる。
【0027】
さらに、移動ロボットの分野で利用されるサブサンプションアーキテクチャでは、モジュールセットを構成する各モジュールに入力された情報(例えば、センサの出力)のみで起動条件が満たされたか否かが判定され、条件が満たされた振る舞いの情報が出力される。それに対して、本発明における対話システムでは、話題モジュールセットを構成する各話題モジュールに入力された情報(例えば、ユーザの発話内容に応じたユーザの状態=現在の状態)と、その前までに行われたユーザとの対話の履歴情報(例えば、過去の対話におけるユーザの状態=過去の状態)等のユーザの状態を表すための複数の候補となる状態に基づいて所定の条件を満たすか否かが判定され、所定の条件が満たされた振る舞いの情報が出力される。このように、本発明における対話システムでは、過去の対話の流れからユーザに対して次に提供する話題を決定するため、複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させることが可能となる。
以下、各実施形態について詳細に説明する。
【0028】
(実施形態)
[対話システム100の構成]
図1は、実施形態における対話システム100の構成の一例を示す図である。対話システム100は、対話装置10と、カメラ20と、マイク30と、スピーカー40と、表示装置50とを備える。カメラ20と、マイク30と、スピーカー40と、表示装置50とは、有線又は無線により対話装置10に接続される。
【0029】
対話装置10は、対話の対象となるユーザに対して提供する話題を決定し、決定した話題に応じた内容を出力させることでユーザとの対話を実現する。例えば、対話装置10は、決定した話題に応じた内容の音声を出力させることでユーザとの対話を実現する。対話装置10は、例えばパーソナルコンピュータ等の情報処理装置を用いて構成される。
【0030】
カメラ20は、対話装置10の周辺の動画像を撮像する。カメラ20は、撮像した動画像に応じた映像信号を生成し、映像信号に基づく画像情報を対話装置10に入力する。
【0031】
マイク30は、対話装置10の周辺の音声を収音する。例えば、マイク30は、対話装置10に近づいたユーザの音声を取得する。マイク30は、取得した音声に基づいて音声信号を生成する。マイク30は、生成した音声信号を対話装置10に出力する。なお、マイク30は、対話装置10の内部に備えられてもよい。
【0032】
スピーカー40は、対話装置10により生成される音声信号を出力する。例えば、スピーカー40は、決定された話題による内容を音声出力する。スピーカー40は、表示装置50の近傍(例えば、表示装置50の横や表示装置50の後方)に備えられる。
【0033】
表示装置50は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、電子泳動方式ディスプレイ等の画像表示装置である。表示装置50は、二次元で表現されたエージェントを表示する。二次元で表現されたエージェントは、例えば表示装置50の画面上に表示されたキャラクタである。なお、スピーカー40と表示装置50とは、一体化されていてもよい。
【0034】
次に、対話装置10の機能構成について説明する。対話装置10は、記憶部11と、制御部12とを備える。記憶部11には、辞書111と、状態情報112と、話題モジュールセット113と、出力言語情報114と、動作制御情報115等が記憶される。記憶部11は、磁気記憶装置や半導体記憶装置などの記憶装置を用いて構成される。
【0035】
辞書111は、自然言語処理の意味解析に用いられる辞書である。
【0036】
状態情報112は、ユーザの状態を表す情報である。ここでいうユーザとは、対話装置10と対話を行う対象となるユーザである。
図2は、状態情報112の一例を示す図である。
図2に示すように、状態情報112は、ユーザの状態を表すための複数の候補状態と、複数の候補状態それぞれに対応付けられた変数とで構成される。なお、
図2に示す例では、候補状態としてユーザの発話に基づいて判断されるユーザの状態を示しているが、候補状態にはカメラ20により得られる画像から検知されるユーザの動作(例えば、人物が近づいてくる、人物が立ち止まる、人物が手を振る等)に関する状態が含まれてもよい。候補状態は、例えばユーザとの対話で達成したいゴールに向かうまでにやり取りされることが想定される話題でユーザが取り得る状態を表す。
【0037】
例えば、ユーザとの対話で達成したいゴールが、「ラーメン店を推薦する」や「パスタ店を推薦する」であるとする。この場合、ゴールに向かうためにやり取りされることが想定される話題として、「疲れた?」、「お腹空いている?」、「ラーメン食べたい?」、「パスタ食べたい?」、「ラーメン店紹介OK?」、「パスタ店紹介OK?」等が考えられる。これらの話題を踏まえると、ユーザは、疲れている状態、お腹が空いている状態、ラーメンを食べたいと思っている状態、パスタを食べたいと思っている状態、ラーメン店を紹介してほしいと思っている状態、パスタ店を紹介してほしいと思っている状態、ラーメン店の推薦を聞いた状態、パスタ店の推薦を聞いた状態が、候補状態として挙げられる。
【0038】
変数としては、ユーザの状態が、対応付けられている候補状態であることを表すY(Yes)と、ユーザの状態が、対応付けられている候補状態ではないことを表すN(No)と、ユーザの状態が、対応付けられている候補状態であるか否かが特定されていないことを表すU(Unknown)とが用いられる。Yは、第1変数の一態様であり、Nは、第2変数の一態様であり、Uは、第3変数の一態様である。対話装置10による処理開始時には、候補状態は変数が全て初期値(例えば、U)となっている。
【0039】
上述した話題及び候補状態の内容は、一例であり、設計者が自由に話題及び候補状態の内容を設定すればよい。以下の説明では、上述した話題及び候補状態の内容を用いて構成を例に説明する。
【0040】
図1に戻って説明を続ける。話題モジュールセット113は、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含んで構成される。
図3は、話題モジュールセット113の一例(その1)を示す図である。話題モジュールセット113は、例えば、
図3に示すように予め定められた優先順位で各話題モジュール113-1~113-9が階層構造に配置されて構成される。どのような優先順位で階層構造に並べるのかは、設計者の目的に応じて自由に変更可能である。
【0041】
図3に示す例では、全ての話題モジュール113-n(nは1以上の整数)を、ゴールから近い距離(ゴールまでに経由する話題の数)順に並べている。例えば、ユーザとの対話で達成したいゴールが、「ラーメン店を推薦する」と「パスタ店を推薦する」とであり、「ラーメン店を推薦する」というゴールに至るまでの話題が「お腹空いている?」⇒「ラーメン食べたい?」⇒「ラーメン店紹介OK?」⇒「ラーメン店を推薦する」であり、「パスタ店を推薦する」というゴールに至るまでの話題が「疲れた?」⇒「お腹空いている?」⇒「パスタ食べたい?」⇒「パスタ店紹介OK?」⇒「パスタ店を推薦する」であるとする。
【0042】
この場合、「疲れた?」との話題が最もゴールまでの距離が遠く(距離=4)、「お腹空いている?」との話題が次にゴールまでの距離が遠く(距離=3)、「ラーメン食べたい?」及び「パスタ食べたい?」との話題が次にゴールまでの距離が遠く(距離=2)、「ラーメン店紹介OK?」及び「パスタ店紹介OK?」との話題が最もゴールまでの距離が近い(距離=1)。そして、各話題を予め定められた優先順位(例えば、ゴールから近い距離順、かつ、パスタよりラーメン優先)で並べて、対応する起動条件を設定することで
図3に示す構成となる。
【0043】
起動条件は、対応付けられた話題の内容をユーザに対して出力するための条件であり、例えば状態情報112で示される各状態のいずれか2つ以上の組み合わせで構成される。起動条件は、上記のように話題の並べ方に応じて変更する必要があるが、ユーザの発話内容を加味した条件とすることができる。
【0044】
図1に戻って説明を続ける。出力言語情報114は、話題モジュールセット113に基づいて決定された話題に応じた対話用の文字列の情報である。
図4は、出力言語情報114の一例を示す図である。
図4に示すように、出力言語情報114は話題と、出力音声文字列とが対応付けられる。例えば、話題モジュールセット113に基づいて決定された話題が“疲れているか聞く”である場合、対話用の文字列として“疲れてない?”が選択されることが表されている。
【0045】
図1に戻って説明を続ける。動作制御情報115は、表示装置50に表示させるエージェントの動作を制御するための情報を含む。例えば、動作制御情報115は、話題又は出力音声文字列と、制御内容とが対応付けられたテーブルであってもよい。制御内容は、エージェントの動作(例えば、表情、身振り手振りなど)を制御するための内容である。
【0046】
図1に戻って説明を続ける。制御部12は、対話装置10全体を制御する。制御部12は、CPU(Central Processing Unit)等のプロセッサやメモリを用いて構成される。制御部12は、プログラムを実行することによって、話題モジュールセット作成部120と、状態情報作成部121と、検出部122と、音声認識部123と、解析部124と、状態更新部125と、話題決定部126と、言語生成部127と、音声合成部128と、動作制御部129の機能を実現する。
【0047】
話題モジュールセット作成部120、状態情報作成部121、検出部122、音声認識部123、解析部124、状態更新部125、話題決定部126、言語生成部127、音声合成部128及び動作制御部129のうち一部または全部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)などのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアとの協働によって実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置などの非一時的な記憶媒体である。プログラムは、電気通信回線を介して送信されてもよい。
【0048】
話題モジュールセット作成部120、状態情報作成部121、検出部122、音声認識部123、解析部124、状態更新部125、話題決定部126、言語生成部127、音声合成部128及び動作制御部129の機能の一部は、予め対話装置10に搭載されている必要はなく、追加のアプリケーションプログラムが対話装置10にインストールされることで実現されてもよい。
【0049】
話題モジュールセット作成部120は、一方向の対話の流れが記述された1以上のシナリオに基づいて話題モジュールセットを作成する。話題モジュールセット作成部120は、作成した話題モジュールセットを記憶部11に記憶する。話題モジュールセット作成部120によって作成された話題モジュールセットが、記憶部11に記憶されている話題モジュールセット113である。シナリオは、予めユーザによって作成される。シナリオは、外部の装置で作成されて対話装置10に入力されてもよいし、ユーザが対話装置10を操作して作成してもよい。
【0050】
状態情報作成部121は、シナリオを構成する各話題を候補状態とし、各候補状態に変数を対応付けることによって状態情報を作成する。状態情報作成部121は、作成した状態情報を記憶部11に記憶する。状態情報作成部121によって作成された状態情報が、記憶部11に記憶されている状態情報112である。
【0051】
検出部122は、カメラ20によって撮像された動画像に基づいて人物の行動を検知する。人物の行動としては、例えば対話装置10に人物が近づいてくる、人物が立ち止まる、人物が手を振る等の人物が行う動作や振る舞いである。なお、人物の行動を検知する方法は、これに限られず、人物を検知できる方法であればどのような方法であってもよい。例えば、検出部122は、不図示のセンサにより検出された情報に基づいて人物の行動を検知してもよい。例えば、検出部122は、他の装置からユーザの行動に関する情報が入力されたことを契機に、人物の行動を検知してもよい。
【0052】
音声認識部123は、音声認識処理を実行する。音声認識処理は、音声信号に基づいて文字列を生成する処理である。音声認識部123は、音声認識処理を実行することで、マイク30から出力された音声信号に基づいて文字列を生成する。音声認識部123は、公知の手法を用いて文字列を生成してもよい。
【0053】
解析部124は、音声認識部123により生成された文字列と、記憶部11に記憶されている辞書111とを用いて自然言語処理を行うことでユーザの発話内容を解析する。
【0054】
状態更新部125は、解析部124により解析された発話内容(ユーザの発話内容)又は検出部122により検知された人物の行動に基づいて、状態情報112を更新する。具体的には、状態更新部125は、解析部124により解析された発話内容に基づいて、発話内容に応じた候補状態の変数を更新する。さらに、状態更新部125は、検出部122により検知された人物の行動に基づいて、発話内容に応じた候補状態の変数を更新する。例えば、検出部122により検知された人物の行動が「人物が手を振っている」動作である場合、状態更新部125は状態情報112における「人物が手を振っている動作」に対応付けられている変数を更新する。状態更新部125は、状態情報112を更新したことを話題決定部126に通知する。
【0055】
話題決定部126は、状態更新部125により状態情報112が更新されたことに応じて、状態情報112と話題モジュールセット113とに基づいて、ユーザの状態に応じた話題を決定する。具体的には、話題決定部126は、状態情報112で示されるユーザの状態に基づいて話題モジュールセット113を構成する話題モジュール113-nにおけるいずれかの起動条件を満たすか否かを判定し、条件が満たされた起動条件に対応付けられた話題のうち、優先順位の高い話題をユーザの状態に応じた話題として決定する。
【0056】
言語生成部127は、話題決定部126により決定された話題と、出力言語情報114とに基づいて、音声出力させる文字列を生成する。
【0057】
音声合成部128は、言語生成部127により生成された文字列に対応する音声信号を生成する。音声合成部128により生成された音声信号は、スピーカー40から出力される。すなわち、音声合成部128は、決定された話題による内容をスピーカー40から出力させる。音声合成部128は、出力部の位置態様である。
【0058】
動作制御部129は、話題決定部126により決定された話題又は話題に基づく情報と、動作制御情報115とに基づいて、表示装置50に表示させるエージェントの動作を制御する。具体的には、動作制御部129は、動作制御情報115を参照し、話題決定部126により決定された話題に対応付けられた制御内容を取得する。動作制御部129は、取得した制御内容に応じた動作を行うエージェントの映像情報を生成して、生成した映像情報を表示装置50に表示させることによって、エージェントの動作を制御する。
【0059】
なお、動作制御情報115として、出力音声文字列と、制御内容とが対応付けられたテーブルが用いられる場合、動作制御部129は、出力言語情報114を参照し、話題決定部126により決定された話題に対応付けられた出力音声文字列を取得する。動作制御部129は、動作制御情報115を参照し、取得した出力音声文字列に対応付けられた制御内容を取得する。動作制御部129は、取得した制御内容に応じた動作を行うエージェントの映像情報を生成して、生成した映像情報を表示装置50に表示させることによって、エージェントの動作を制御する。
【0060】
[話題モジュールセット及び状態情報の作成]
次に話題モジュールセット及び状態情報を作成する方法について具体的に説明する。話題モジュールセット及び状態情報を作成するために、話題モジュールセット作成部120が用いるシナリオを
図5に示す。
図5は、実施形態におけるシナリオの一例を示す図である。
図5には、3つのシナリオSC1,SC2,SC3を示している。シナリオSC1は、ユーザとの対話で達成したいゴールが「ラーメン店を推薦する」ことを想定したシナリオである。そこで、シナリオSC1において、ゴールに向かうためにやり取りされることが想定される一方向の対話の流れの一例として、「お腹空いている?」⇒「ラーメン食べたい?」⇒「ラーメン店紹介OK?」⇒「ラーメン店を推薦する」といった順番で話題が設定されている。このように1つのシナリオSCは、複数の話題で構成されている。
【0061】
シナリオSC2は、ユーザとの対話で達成したいゴールが「パスタ店を推薦する」ことを想定したシナリオである。そこで、シナリオSC2において、ゴールに向かうためにやり取りされることが想定される一方向の対話の流れの一例として、「疲れた?」⇒「お腹空いている?」⇒「パスタ食べたい?」⇒「パスタ店紹介OK?」⇒「パスタ店を推薦する」といった順番で話題が設定されている。
【0062】
シナリオSC3は、ユーザとの対話で達成したいゴールが「マッサージ店を推薦する」ことを想定したシナリオである。そこで、シナリオSC3において、ゴールに向かうためにやり取りされることが想定される一方向の対話の流れの一例として、「疲れてない?」⇒「癒す方法を知りたい?」⇒「マッサージ店紹介OK?」⇒「マッサージ店を推薦する」といった順番で話題が設定されている。
【0063】
図5に示すように、各シナリオSCには、話題を変えるといったような分岐はない。話題を変えるといったような分岐をさせたい場合には、途中から別の流れになるシナリオSCを新たに作成すればよい。
図5に示す各シナリオSCは、1つの話題に応じた内容に対して対話の相手であるユーザが肯定的な意見を応答する場合のみを想定して作成している。シナリオSC1では、例えば、「お腹空いている?」という話題に応じた内容(例えば、「お腹空いている?」)に対して、対話の相手であるユーザが「はい」や「お腹空いている」といったような肯定的な意見を応答することを想定し、「お腹空いている?」という話題の次に「ラーメン食べたい?」といった話題を設定している。
【0064】
なお、否定的な意見(例えば、「いいえ」や「違う」等)を応答する場合を想定してシナリオSCを作成することもできるが、簡潔で明快な説明のため以下で説明するシナリオSCとしては、対話の相手であるユーザが肯定的な意見を応答する場合のみを想定したシナリオSCを例に説明する。
図5に示した各シナリオSCは一例であり、シナリオSC内の話題は適宜変更されてもよい。
【0065】
まず状態情報の作成方法について
図6及び
図7を用いて説明する。状態情報作成部121は、上述したように作成された1以上のシナリオSCを入力とする。状態情報作成部121は、入力したシナリオSCに基づいて、シナリオSCを構成する各話題を候補状態とし、各候補状態に変数を対応付けることによって状態情報を作成する。具体的には、
図6に示すように、まず状態情報作成部121は、入力した各シナリオSCを話題毎に分割する。次に、状態情報作成部121は、分割した各話題を候補状態として、各候補状態に対して変数(例えば、初期値として「U」)を対応付ける。変数Uは、上述したように、ユーザの状態が、対応付けられている候補状態であるか否かが特定されていないことを表す変数である。次に、状態情報作成部121は、
図7に示すように、複数の候補状態の中で同じ意味になる候補状態を検索する。
【0066】
状態情報作成部121は、複数の候補状態の中で同じ意味になる候補状態を検索する方法は、特に限定されない。例えば、事前学習済み言語モデルが用いられてもよいし、2変数が同じ意味であることを示す教師ラベルを学習させた学習済みモデルが用いられてもよい。事前学習済み言語モデルを用いる場合、状態情報作成部121は、ベクトルの類似度によって、複数の候補状態の中で同じ意味になる候補状態を検索する。言語モデルは、Transfomerベースのモデルであってもよい。状態情報作成部121は、上述したいずれかの方法によって同じ意味になる候補状態を検索する。
図7に示す例では、状態情報作成部121は、「お腹空いている?」という2つの候補状態が同じ意味の候補状態であると検索され、「疲れた?」と「疲れてない?」という2つの候補状態が同じ意味の候補状態であると検索される。
【0067】
状態情報作成部121は、検索結果として得られた同じ意味の複数の候補状態のうち、1つの候補状態を選択し、残りの候補状態を削除する。
図7に示す例では、状態情報作成部121は、例えば「お腹空いている?」という2つの候補状態のうち、「お腹空いている?」を示す1つの候補状態を選択し、残りの「お腹空いている?」を示す候補状態を削除する。さらに、
図7に示す例では、状態情報作成部121は、例えば「疲れた?」と「疲れてない?」という2つの候補状態のうち、「疲れた?」を示す1つの候補状態を選択し、残りの「疲れてない?」を示す候補状態を削除する。このようにして、状態情報作成部121は、同じ意味の候補状態が複数存在しないように調整を行う。そして、状態情報作成部121は、上述した処理の結果として得られた候補状態と変数の組み合わせをまとめることによって
図2に示す状態情報112を作成する。
【0068】
次に話題モジュールセットの作成方法について
図8~
図19を用いて説明する。話題モジュールセット作成部120は、上述したように作成された1以上のシナリオSCを入力とする。話題モジュールセット作成部120は、入力した1以上のシナリオSCを構成する各話題を話題モジュールとして作成する。この際、話題モジュールセット作成部120は、同じ意味を示す話題については用語を統一して話題モジュールとして作成してもよい。例えば、シナリオSC2を構成する話題の1つである「疲れた?」と、シナリオSC3を構成する話題の1つである「疲れてない?」とは同じ意味を示す話題である。そこで、話題モジュールセット作成部120は、「疲れた?」又は「疲れてない?」のいずれかの用語に統一して話題モジュールとして作成する。
図8では、SC3を構成する話題の1つである「疲れてない?」を「疲れた?」に変更して話題モジュールとして作成した場合を示している。
【0069】
次に、話題モジュールセット作成部120は、話題のつながりに基づいて、各話題モジュールに対して起動条件を設定する。話題モジュールセット作成部120は、起動条件を設定するための手順として、3つの手順(起動条件の設定1~設定3)を行う。まず話題モジュールセット作成部120は、起動条件の設定1として、
図9及び
図10に示すように、各話題モジュールに対して、起動条件(IF:話題に対応する変数==Unknown)を対応付ける。起動条件の設定1の目的は、ユーザが一度答えた話題を繰り返さないことである。
【0070】
例えば、「お腹空いている?」と聞いた後に、再度「お腹空いている?」と聞かないようにするために、「お腹空いている?」という話題に対応する内容を出力するための起動条件として、話題モジュールセット作成部120は、「お腹空いている?」という話題に対してIF:お腹空いている==Unknownを設定する。これは、ユーザの状態が、お腹空いている状態か否かが特定されていない場合にのみ起動することを意味する。例えば、お腹空いているか否かを一度ユーザに問い合わせた場合、ユーザの回答に応じてユーザの状態が変化(候補状態に対応付けられた変数が変化)するため、IF:お腹空いている==Unknownという条件を満たさなくなる。その結果、「お腹空いている?」という話題を選択しなくなる。これにより、起動条件の設定1の目的であるユーザが一度答えた話題を繰り返さないことを満たすことができる。ここでは、「お腹空いている?」という話題を例に説明したが、
図9及び
図10に示すように他の話題モジュールに対しても同様に、ユーザが一度答えた話題を繰り返さないようにするための起動条件が設定される。
【0071】
次に話題モジュールセット作成部120は、起動条件の設定2として、
図11~
図13に示すように、各シナリオSCを構成する各話題を基準として、達成したいゴールへ向かう話題に関する起動条件(IF:各話題の未来の話題==Unknown)を追加する。例えば、シナリオSC1のように「お腹空いている?」⇒「ラーメン食べたい?」⇒「ラーメン店紹介OK?」⇒「ラーメン店を推薦する」といった順番で話題が設定されている場合、「お腹空いている?」を基準として、達成したいゴール(「ラーメン店を推薦する」)へ向かうために想定される話題は、「ラーメン食べたい?」と、「ラーメン店紹介OK?」と、「ラーメン店を推薦する」である。そこで、話題モジュールセット作成部120は、「お腹空いている?」の話題に対応付けられている起動条件に対して、ラーメン食べたい==Unknownと、ラーメン店紹介OK==Unknownと、ラーメン店推薦聞いた==Unknownという条件を追加で設定する。
【0072】
同様に、「ラーメン食べたい?」を基準として、達成したいゴール(「ラーメン店を推薦する」)へ向かうために想定される話題は、「ラーメン店紹介OK?」と、「ラーメン店を推薦する」である。そこで、話題モジュールセット作成部120は、「ラーメン食べたい?」の話題に対応付けられている起動条件に対して、ラーメン店紹介OK==Unknownと、ラーメン店推薦聞いた==Unknownという条件を追加で設定する。同様に、「ラーメン店紹介OK?」を基準として、達成したいゴール(「ラーメン店を推薦する」)へ向かうために想定される話題は、「ラーメン店を推薦する」である。そこで、話題モジュールセット作成部120は、「ラーメン店紹介OK?」の話題に対応付けられている起動条件に対して、ラーメン店推薦聞いた==Unknownという条件を追加で設定する。
【0073】
以上の説明はシナリオSC1に関する内容であるが、話題モジュールセット作成部120は同様の処理を他のシナリオSC(例えば、シナリオSC2及びシナリオSC3)に対しても行う。これにより、
図11~
図13に示すように起動条件が追加で設定される。設定2の目的は、到達したい話題が到達済みとなっている話題モジュールを選択しないこと、である。例えば、「お腹空いている?」という話題は、「お腹空いている==YES or NO」に関連する次の話題をシステムが有しているとユーザは想起できると考えられる。そのため、「お腹空いている?」に返答をした際に、「お腹空いている」に関連しない次の話題が続くと、ユーザは「お腹空いている?」という話題が何のために行われたか不思議に感じられると思われる。そのような事態を防ぐために、設定2の起動条件を付け、到達したい話題がなくなっている(到達済みになっている)話題モジュールを判別する。
【0074】
次に話題モジュールセット作成部120は、起動条件の設定3として、
図14~
図16に示すように、各シナリオSCを構成する各話題のうち2個目以降の話題に対応付けられている起動条件で定義されている条件を追加で設定する。起動条件の設定3の目的は、起動条件が対応付けられている2個目以降の話題を話す根拠となる定義を設定することである。2個目以降の話題に対応する内容を出力するためには、直前の話題に対して対話の相手から肯定的な回答(例えば、「はい」や「空いている」等)が得られることが条件となる。
【0075】
例えば、シナリオSC1を構成する2個目の話題である「ラーメン食べたい?」という話題に対応する内容を出力するためには、シナリオSC1を構成する1個目の話題である「お腹空いている?」という話題に対して対話の相手から肯定的な回答(例えば、「はい」や「空いている」等)が得られることが条件となる。さらに、シナリオSC1を構成する3個目の話題である「ラーメン店紹介OK?」という話題に対応する内容を出力するためには、シナリオSC1を構成する2個目の話題である「ラーメン食べたい?」という話題に対して対話の相手から肯定的な回答(例えば、「はい」や「空いている」等)が得られることが条件となる。さらに、シナリオSC1を構成する4個目の話題である「ラーメン店を推薦する」という話題に対応する内容を出力するためには、シナリオSC1を構成する3個目の話題である「ラーメン店紹介OK?」という話題に対して対話の相手から肯定的な回答(例えば、「はい」や「空いている」等)が得られることが条件となる。そこで、話題モジュールセット作成部120は、2個目以降の話題に対応付けられている起動条件で定義されている内容のうち、直前の話題に関する定義内容を「YES」(直前の話題==YES)と追加で設定する。
【0076】
話題モジュールセット作成部120は、例えば、
図14に示す「ラーメン食べたい?」という話題に対応付けられている起動条件の定義の内容うち、直前の話題である「お腹空いている?」という内容を“お腹空いている==Unknown”を“お腹空いている==Yes”と追加で設定する。これにより、直前の話題である「お腹空いている?」という話題に対して対話の相手から肯定的な回答が得られた場合に、「ラーメン食べたい?」という話題に対応する内容を出力するための起動条件が満たされるように設定することができる。
【0077】
同様に、話題モジュールセット作成部120は、例えば、
図14に示す「ラーメン店紹介OK?」という話題に対応付けられている起動条件の定義の内容うち、直前の話題である「ラーメン食べたい?」という内容を“ラーメン食べたい==Unknown”を“ラーメン食べたい==Yes”と追加で設定する。これにより、直前の話題である「ラーメン食べたい?」という話題に対して対話の相手から肯定的な回答が得られた場合に、「ラーメン店紹介OK?」という話題に対応する内容を出力するための起動条件が満たされるように設定することができる。
【0078】
同様に、話題モジュールセット作成部120は、例えば、
図14に示す「ラーメン店を推薦する」という話題に対応付けられている起動条件の定義の内容うち、直前の話題である「ラーメン店紹介OK?」という内容を“ラーメン店紹介OK==Unknown”を“ラーメン店紹介OK==Yes”と追加で設定する。これにより、直前の話題である「ラーメン店紹介OK?」という話題に対して対話の相手から肯定的な回答が得られた場合に、「ラーメン店を推薦する」という話題に対応する内容を出力するための起動条件が満たされるように設定することができる。
【0079】
以上の説明はシナリオSC1に関する内容であるが、話題モジュールセット作成部120は同様の処理を他のシナリオSC(例えば、シナリオSC2及びシナリオSC3)に対しても行う。これにより、
図14~
図16に示すように起動条件で定義された内容を追加で設定することができる。以上のように、話題モジュールセット作成部120は、起動条件の設定1~設定3の処理を行うことによって各話題モジュールに対して起動条件を設定する。
【0080】
次に、話題モジュールセット作成部120は、
図17~
図19に示すように、各話題モジュールに対して出力音声文字列を設定する。これは、話題モジュールの起動条件が満たされた場合に、対話装置10が音声で出力するための文字列である。話題モジュールセット作成部120は、対話の文脈に応じた出力音声文字列を自動生成してもよいし、設計者等がシナリオSCと一緒に作成した文字列を用いて設定してもよい。出力音声文字列を自動生成する場合には、言語モデルや生成モデルが用いられてもよい。設計者等がシナリオSCと一緒に作成した文字列を用いる場合には、設計者はシナリオSCを構成する各話題に対応付けて文字列を作成する。話題モジュールセット作成部120は、各話題に対応付けて文字列をそのまま出力音声文字列として各話題モジュールに対して設定する。
【0081】
話題モジュールセット作成部120は、
図8~
図19で説明した処理が終了すると、所定の優先順位で複数の話題モジュールを階層構造に配置することによって、起動条件と話題モジュールと出力音声文字列が対応付けられたリストを生成する。話題モジュールセット作成部120は、生成したリストのうち、話題モジュールの内容と、出力音声文字列との組み合わせを出力言語情報として作成する。話題モジュールセット作成部120は、作成した出力言語情報を記憶部11に記憶する。さらに、話題モジュールセット作成部120は、生成したリストのうち、起動条件と、話題モジュールとの組み合わせを話題モジュールセットとして作成する。話題モジュールセット作成部120は、作成した話題モジュールセットを記憶部11に記憶する。なお、以下の説明では、説明の簡単化のため、シナリオSC1及びシナリオSC2の内容のみで作成した話題モジュールセットを用いて説明する。なお、必要に応じてシナリオSC3を用いて作成した話題モジュールセットで説明する場合もある。
【0082】
[対話システム100の処理(その1)]
図20は、実施形態における対話システム100の処理の流れを示すシーケンス図(その1)である。なお、
図20の処理の説明では、話題モジュール113-nが
図3に示す階層構造で配置されているものとする。
図20において、ユーザから対話装置10に向かう矢印上の文字列は対話装置10が出力する音声であり、対話装置10からユーザに向かう矢印上の文字列は対話装置10が解析したユーザの発話内容である。さらに、
図20の処理開始時の状態情報112で示される各状態の変数は初期値(例えば、U)であるものとする。
【0083】
対話装置10の話題決定部126は、処理開始時において検出部122によりユーザの行動が検知されて状態更新部125により状態情報112の情報が更新されたことを契機に、状態情報112と話題モジュールセット113とに基づいて話題を決定する。
図20の処理開始時の状態情報112で示される各状態の変数は、
図21(A)に示す通り“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の高い話題モジュール113-nを選択する。例えば、話題決定部126は、
図21(A)に示す状態情報112における各候補状態に対応付けられている変数(例えば、各候補状態が“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-7を選択する。話題決定部126は、選択した話題モジュール113-7における話題(例えば、“お腹空いているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0084】
言語生成部127は、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いてない?”という音声がスピーカー40から出力される(ステップS101)。
【0085】
ユーザは、スピーカー40から出力された音声に応じて、“空いた”と発話したとする(ステップS102)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“空いた”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0086】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“お腹空いているか聞く”であり、解析部124により解析された発話内容が“空いた”である。そこで、状態更新部125は、該当する候補状態として“お腹空いている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0087】
状態更新部125は、
図21(B)に示すように、状態情報112で示される状態“お腹空いている”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図21(B)に示す通り、状態情報112で示される状態“お腹空いている”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0088】
例えば、話題決定部126は、
図21(B)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-5を選択する。話題決定部126は、選択した話題モジュール113-5における話題(例えば、“ラーメン食べたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0089】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いているなら、ラーメン食べたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いているなら、ラーメン食べたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いているなら、ラーメン食べたくない?”という音声がスピーカー40から出力される(ステップS103)。
【0090】
ユーザは、スピーカー40から出力された音声に応じて、“食べたい”と発話したとする(ステップS104)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“食べたい”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0091】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン食べたいか聞く”であり、解析部124により解析された発話内容が“食べたい”である。そこで、状態更新部125は、該当する候補状態として“ラーメン食べたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0092】
状態更新部125は、
図21(C)に示すように、状態情報112で示される状態“ラーメン食べたい”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図21(C)に示す通り、状態情報112で示される状態“お腹空いている”及び“ラーメン食べたい”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0093】
例えば、話題決定部126は、
図21(C)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”及び“ラーメン食べたい”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-3を選択する。話題決定部126は、選択した話題モジュール113-3における話題(例えば、“ラーメン店紹介OKか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0094】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン店紹介OKか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン店紹介OKか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“ラーメン食べたいなら、ラーメン店紹介してもいい?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“ラーメン食べたいなら、ラーメン店紹介してもいい?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“ラーメン食べたいなら、ラーメン店紹介してもいい?”という音声がスピーカー40から出力される(ステップS105)。
【0095】
ユーザは、スピーカー40から出力された音声に応じて、“いいよ”と発話したとする(ステップS106)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“いいよ”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0096】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン店紹介OKか聞く”であり、解析部124により解析された発話内容が“いいよ”である。そこで、状態更新部125は、該当する候補状態として“ラーメン店紹介OK”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0097】
状態更新部125は、
図21(D)に示すように、状態情報112で示される状態“ラーメン店紹介OK”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図21(D)に示す通り、状態情報112で示される状態“お腹空いている”、“ラーメン食べたい”及び“ラーメン店紹介OK”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0098】
例えば、話題決定部126は、
図21(D)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”、“ラーメン食べたい”及び“ラーメン店紹介OK”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-1を選択する。話題決定部126は、選択した話題モジュール113-1における話題(例えば、“ラーメン店を推薦する”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0099】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン店を推薦する”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン店を推薦する”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”という音声がスピーカー40から出力される(ステップS107)。
【0100】
ユーザは、スピーカー40から出力された音声に応じて、“分かった”と発話したとする(ステップS108)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“分かった”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0101】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン店を推薦する”であり、解析部124により解析された発話内容が“分かった”である。そこで、状態更新部125は、該当する候補状態として“ラーメン店推薦聞いた”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0102】
状態更新部125は、
図21(E)に示すように、状態情報112で示される状態“ラーメン店推薦聞いた”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図21(E)に示す通り、状態情報112で示される状態“お腹空いている”、“ラーメン食べたい”、“ラーメン店紹介OK”及び“ラーメン店推薦聞いた”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0103】
ところが、現時点においては選択可能な話題がない。この場合、対話装置10はユーザとの対話を終了する。なお、状態更新部125は、対話終了時には、状態情報112で示される各状態における変数を全て初期化する。これにより、新たなユーザと対話する際においても対応可能になる。
【0104】
図22は、話題モジュールセット113の一例(その2)を示す図である。
図22に示す例では、全ての話題モジュール113-nを、ゴールから遠い距離(ゴールまでに経由する話題の数)順に並べている。このような順に並べることでできるだけ多くユーザの状態に関する情報を取得することができる。
【0105】
[対話システム100の処理(その2)]
図23は、実施形態における対話システム100の処理の流れを示すシーケンス図(その2)である。なお、
図23の処理の説明では、話題モジュール113-nが
図22に示す階層構造で配置されているものとする。
図23において、ユーザから対話装置10に向かう矢印上の文字列は対話装置10が出力する音声であり、対話装置10からユーザに向かう矢印上の文字列は対話装置10が解析したユーザの発話内容である。さらに、
図23の処理開始時の状態情報112で示される各状態の変数は初期値であるものとする。
【0106】
対話装置10の話題決定部126は、検出部122によりユーザの行動が検知されて状態更新部125により状態情報112の情報が更新されたことを契機に、状態情報112と話題モジュールセット113とに基づいて話題を決定する。
図23の処理開始時の状態情報112で示される各状態の変数は、
図24(A)に示す通り“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。例えば、話題決定部126は、
図24(A)に示す状態情報112における各候補状態に対応付けられている変数(例えば、各候補状態が“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-9を選択する。話題決定部126は、選択した話題モジュール113-9における話題(例えば、“疲れているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0107】
言語生成部127は、話題決定部126により決定された話題(例えば、“疲れているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“疲れているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“疲れてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“疲れてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“疲れてない?”という音声がスピーカー40から出力される(ステップS201)。
【0108】
ユーザは、スピーカー40から出力された音声に応じて、“疲れている”と発話したとする(ステップS202)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“疲れている”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0109】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“疲れているか聞く”であり、解析部124により解析された発話内容が“疲れている”である。そこで、状態更新部125は、該当する候補状態として“疲れている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0110】
状態更新部125は、
図24(B)に示すように、状態情報112で示される状態“疲れている”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図24(B)に示す通り、状態情報112で示される状態“疲れている”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0111】
例えば、話題決定部126は、
図24(B)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-8を選択する。話題決定部126は、選択した話題モジュール113-8における話題(例えば、“お腹空いているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0112】
言語生成部127は、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いてない?”という音声がスピーカー40から出力される(ステップS203)。
【0113】
ユーザは、スピーカー40から出力された音声に応じて、“空いた”と発話したとする(ステップS204)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“空いた”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0114】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“お腹空いているか聞く”であり、解析部124により解析された発話内容が“空いた”である。そこで、状態更新部125は、該当する候補状態として“お腹空いている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0115】
状態更新部125は、
図24(C)に示すように、状態情報112で示される状態“お腹空いている”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図24(C)に示す通り、状態情報112で示される状態“疲れている”及び“お腹空いている”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0116】
例えば、話題決定部126は、
図24(C)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”及び“お腹空いている”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-5を選択する。話題決定部126は、選択した話題モジュール113-5における話題(例えば、“ラーメン食べたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0117】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いているなら、ラーメン食べたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いているなら、ラーメン食べたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いているなら、ラーメン食べたくない?”という音声がスピーカー40から出力される(ステップS205)。
【0118】
ユーザは、スピーカー40から出力された音声に応じて、“食べたい”と発話したとする(ステップS206)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“食べたい”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0119】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン食べたいか聞く”であり、解析部124により解析された発話内容が“食べたい”である。そこで、状態更新部125は、該当する候補状態として“ラーメン食べたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0120】
状態更新部125は、
図24(D)に示すように、状態情報112で示される状態“ラーメン食べたい”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図24(D)に示す通り、状態情報112で示される状態“疲れている”、“お腹空いている”及び“ラーメン食べたい”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0121】
例えば、話題決定部126は、
図24(D)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”、“お腹空いている”及び“ラーメン食べたい”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-6を選択する。話題決定部126は、選択した話題モジュール113-6における話題(例えば、“パスタ食べたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0122】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ食べたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ食べたいか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いているなら、パスタ食べたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いているなら、パスタ食べたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いているなら、パスタ食べたくない?”という音声がスピーカー40から出力される(ステップS207)。
【0123】
ユーザは、スピーカー40から出力された音声に応じて、“食べたい”と発話したとする(ステップS208)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“食べたい”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0124】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ食べたいか聞く”であり、解析部124により解析された発話内容が“食べたい”である。そこで、状態更新部125は、該当する候補状態として“パスタ食べたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0125】
状態更新部125は、
図24(E)に示すように、状態情報112で示される状態“パスタ食べたい”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図24(E)に示す通り、状態情報112で示される状態“疲れている”、“お腹空いている”、“ラーメン食べたい”及び“パスタ食べたい”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0126】
例えば、話題決定部126は、
図24(E)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”、“お腹空いている”、“ラーメン食べたい”及び“パスタ食べたい”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-3を選択する。話題決定部126は、選択した話題モジュール113-3における話題(例えば、“ラーメン店紹介OKか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0127】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン店紹介OKか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン店紹介OKか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“ラーメン食べたいなら、ラーメン店紹介してもいい?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“ラーメン食べたいなら、ラーメン店紹介してもいい?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“ラーメン食べたいなら、ラーメン店紹介してもいい?”という音声がスピーカー40から出力される(ステップS209)。
【0128】
ユーザは、スピーカー40から出力された音声に応じて、“いいよ”と発話したとする(ステップS210)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“いいよ”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0129】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン店紹介OKか聞く”であり、解析部124により解析された発話内容が“いいよ”である。そこで、状態更新部125は、該当する候補状態として“ラーメン店紹介OK”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0130】
状態更新部125は、
図24(F)に示すように、状態情報112で示される状態“ラーメン店紹介OK”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図24(F)に示す通り、状態情報112で示される状態“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”及び“ラーメン店紹介OK”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0131】
例えば、話題決定部126は、
図24(F)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”及び“ラーメン店紹介OK”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-4を選択する。話題決定部126は、選択した話題モジュール113-4における話題(例えば、“パスタ店紹介OKか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0132】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ店紹介OKか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ店紹介OKか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“パスタ食べたいなら、パスタ店紹介してもいい?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“パスタ食べたいなら、パスタ店紹介してもいい?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“パスタ食べたいなら、パスタ店紹介してもいい?”という音声がスピーカー40から出力される(ステップS211)。
【0133】
ユーザは、スピーカー40から出力された音声に応じて、“いいよ”と発話したとする(ステップS212)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“いいよ”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0134】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ店紹介OKか聞く”であり、解析部124により解析された発話内容が“いいよ”である。そこで、状態更新部125は、該当する候補状態として“パスタ店紹介OK”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0135】
状態更新部125は、
図25(A)に示すように、状態情報112で示される状態“パスタ店紹介OK”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図25(A)に示す通り、状態情報112で示される状態“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”、“ラーメン店紹介OK”及び“パスタ店紹介OK”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0136】
例えば、話題決定部126は、
図25(A)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態が“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”、“ラーメン店紹介OK”及び“パスタ店紹介OK”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-1を選択する。話題決定部126は、選択した話題モジュール113-1における話題(例えば、“ラーメン店を推薦する”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0137】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン店を推薦する”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン店を推薦する”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“ラーメン店紹介OKなら、〇〇っていうラーメン屋がおすすめ”という音声がスピーカー40から出力される(ステップS213)。
【0138】
ユーザは、スピーカー40から出力された音声に応じて、“分かった”と発話したとする(ステップS214)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“分かった”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0139】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン店を推薦する”であり、解析部124により解析された発話内容が“分かった”である。そこで、状態更新部125は、該当する候補状態として“ラーメン店推薦聞いた”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0140】
状態更新部125は、
図25(B)に示すように、状態情報112で示される状態“ラーメン店推薦”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図25(B)に示す通り、状態情報112で示される状態“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”、“ラーメン店紹介OK”、“パスタ店紹介OK”及び“ラーメン店推薦”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0141】
例えば、話題決定部126は、
図25(B)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“疲れている”、“お腹空いている”、“ラーメン食べたい”、“パスタ食べたい”、“ラーメン店紹介OK”、“パスタ店紹介OK”及び“ラーメン店推薦”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-2を選択する。話題決定部126は、選択した話題モジュール113-2における話題(例えば、“パスタ店を推薦する”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0142】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ店を推薦する”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ店を推薦する”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”という音声がスピーカー40から出力される(ステップS215)。
【0143】
ユーザは、スピーカー40から出力された音声に応じて、“分かった”と発話したとする(ステップS216)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“分かった”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0144】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ店を推薦する”であり、解析部124により解析された発話内容が“分かった”である。そこで、状態更新部125は、該当する候補状態として“パスタ店推薦聞いた”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0145】
状態更新部125は、
図25(C)に示すように、状態情報112で示される状態“パスタ店推薦聞いた”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図25(C)に示す通り、状態情報112で示される状態“お腹空いている”、“ラーメン食べたい”、“ラーメン店紹介OK”、“ラーメン店推薦聞いた”及び“パスタ店推薦聞いた”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0146】
ところが、現時点においては選択可能な話題がない。この場合、対話装置10はユーザとの対話を終了する。なお、状態更新部125は、対話終了時には、状態情報112で示される各状態における変数を全て初期化する。これにより、新たなユーザと対話する際においても対応可能になる。
【0147】
図26は、話題モジュールセット113の一例(その3)を示す図である。
図26に示す例では、全ての話題モジュール113-nを、優先したいゴールに関する話題を優先的に並べている。
図26では、「ラーメン店を推薦する」というゴールを「パスタ店を推薦する」というゴールよりも優先するような配置としている。このような順に並べることで、複数あるゴールのうちどれだけゴールまでの距離が遠くてもいいので優先度の高いゴールを最優先とすることができる。
【0148】
[対話システム100の処理(その3)]
図27は、実施形態における対話システム100の処理の流れを示すシーケンス図(その3)である。なお、
図27の処理の説明では、話題モジュール113-nが
図26に示す階層構造で配置されているものとする。
図27において、ユーザから対話装置10に向かう矢印上の文字列は対話装置10が出力する音声であり、対話装置10からユーザに向かう矢印上の文字列は対話装置10が解析したユーザの発話内容である。さらに、
図27の処理開始時の状態情報112で示される各状態の変数は初期値であるものとする。
【0149】
対話装置10の話題決定部126は、検出部122によりユーザの行動が検知されて状態更新部125により状態情報112の情報が更新されたことを契機に、状態情報112と話題モジュールセット113とに基づいて話題を決定する。
図27の処理開始時の状態情報112で示される各状態の変数は、
図28(A)に示す通り“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。例えば、話題決定部126は、
図28(A)に示す状態情報112における各候補状態に対応付けられている変数(例えば、各候補状態が“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-7を選択する。話題決定部126は、選択した話題モジュール113-7における話題(例えば、“お腹空いているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0150】
言語生成部127は、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いてない?”という音声がスピーカー40から出力される(ステップS301)。
【0151】
ユーザは、スピーカー40から出力された音声に応じて、“空いた”と発話したとする(ステップS302)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“空いた”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0152】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“お腹空いているか聞く”であり、解析部124により解析された発話内容が“空いた”である。そこで、状態更新部125は、該当する候補状態として“お腹空いている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0153】
状態更新部125は、
図28(B)に示すように、状態情報112で示される状態“お腹空いている”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図28(B)に示す通り、状態情報112で示される状態“お腹空いている”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0154】
例えば、話題決定部126は、
図28(B)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“Y”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-5を選択する。話題決定部126は、選択した話題モジュール113-5における話題(例えば、“ラーメン食べたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0155】
言語生成部127は、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“ラーメン食べたいか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いているなら、ラーメン食べたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いているなら、ラーメン食べたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いているなら、ラーメン食べたくない?”という音声がスピーカー40から出力される(ステップS303)。
【0156】
ユーザは、スピーカー40から出力された音声に応じて、“食べたくない”と発話したとする(ステップS304)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“食べたくない”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0157】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“ラーメン食べたいか聞く”であり、解析部124により解析された発話内容が“食べたくない”である。そこで、状態更新部125は、該当する候補状態として“ラーメン食べたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0158】
状態更新部125は、
図28(C)に示すように、状態情報112で示される状態“ラーメン食べたい”に対応付けられている変数“U”を“N”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図28(C)に示す通り、状態情報112で示される状態“お腹空いている”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0159】
例えば、話題決定部126は、
図28(C)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態が“お腹空いている”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-6を選択する。話題決定部126は、選択した話題モジュール113-6における話題(例えば、“パスタ食べたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0160】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ食べたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ食べたいか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いているなら、パスタ食べたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いているなら、パスタ食べたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いているなら、パスタ食べたくない?”という音声がスピーカー40から出力される(ステップS305)。
【0161】
ユーザは、スピーカー40から出力された音声に応じて、“食べたい”と発話したとする(ステップS206)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“食べたい”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0162】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ食べたいか聞く”であり、解析部124により解析された発話内容が“食べたい”である。そこで、状態更新部125は、該当する候補状態として“パスタ食べたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0163】
状態更新部125は、
図28(D)に示すように、状態情報112で示される状態“パスタ食べたい”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図28(D)に示す通り、状態情報112で示される状態“お腹空いている”及び“パスタ食べたい”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0164】
例えば、話題決定部126は、
図28(D)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”及び“パスタ食べたい”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-4を選択する。話題決定部126は、選択した話題モジュール113-4における話題(例えば、“パスタ店紹介OKか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0165】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ店紹介OKか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ店紹介OKか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“パスタ食べたいなら、パスタ店紹介してもいい?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“パスタ食べたいなら、パスタ店紹介してもいい?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“パスタ食べたいなら、パスタ店紹介してもいい?”という音声がスピーカー40から出力される(ステップS307)。
【0166】
ユーザは、スピーカー40から出力された音声に応じて、“いいよ”と発話したとする(ステップS208)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“いいよ”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0167】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ店紹介OKか聞く”であり、解析部124により解析された発話内容が“いいよ”である。そこで、状態更新部125は、該当する候補状態として“パスタ店紹介OK”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0168】
状態更新部125は、
図28(E)に示すように、状態情報112で示される状態“パスタ店紹介OK”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図28(E)に示す通り、状態情報112で示される状態“お腹空いている”、“パスタ食べたい”及び“パスタ店紹介OK”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0169】
例えば、話題決定部126は、
図28(E)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”、“パスタ食べたい”及び“パスタ店紹介OK”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”)の組み合わせを参照して、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-2を選択する。話題決定部126は、選択した話題モジュール113-2における話題(例えば、“パスタ店を推薦する”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0170】
言語生成部127は、話題決定部126により決定された話題(例えば、“パスタ店を推薦する”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“パスタ店を推薦する”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“パスタ店紹介OKなら、〇〇っていうパスタ屋がおすすめ”という音声がスピーカー40から出力される(ステップS309)。
【0171】
ユーザは、スピーカー40から出力された音声に応じて、“分かった”と発話したとする(ステップS310)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“分かった”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0172】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“パスタ店を推薦する”であり、解析部124により解析された発話内容が“分かった”である。そこで、状態更新部125は、該当する候補状態として“パスタ店推薦聞いた”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0173】
状態更新部125は、
図28(F)に示すように、状態情報112で示される状態“パスタ店推薦聞いた”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図28(F)に示す通り、状態情報112で示される状態“お腹空いている”、“パスタ食べたい”、“パスタ店紹介OK”及び“パスタ店推薦聞いた”が“Y”であり、状態情報112で示される状態“ラーメン食べたい”が“N”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0174】
ところが、現時点においては選択可能な話題がない。この場合、対話装置10はユーザとの対話を終了する。なお、状態更新部125は、対話終了時には、状態情報112で示される各状態における変数を全て初期化する。これにより、新たなユーザと対話する際においても対応可能になる。
【0175】
上述した説明では、ユーザが対話装置10からの出力に対して肯定的な回答のみをする場合の処理を示していた。一般的な対話では、否定的な回答がなされることも想定される。本発明における対話装置10では、話題モジュールセットを構成する話題モジュールの組み合わせによって、否定的な回答がなされた場合においても自然な話題転換が可能である。以下、詳細に説明する。まず説明するにあたり、
図29に示すような話題モジュールセット113を用いる。
図29は、実施形態における話題モジュールセット113の一例(その4)を示す図である。話題モジュールセット113は、例えば、
図29に示すように予め定められた優先順位で各話題モジュール113-11~113-18が階層構造に配置されて構成される。
【0176】
図29に示す例では、全ての話題モジュール113-11~113-18を、ゴールから近い距離(ゴールまでに経由する話題の数)順に並べている。例えば、ユーザとの対話で達成したいゴールが、「ラーメン店を推薦する」と「マッサージ店を推薦する」とであり、「ラーメン店を推薦する」というゴールに至るまでの話題が「お腹空いている?」⇒「ラーメン食べたい?」⇒「ラーメン店紹介OK?」⇒「ラーメン店を推薦する」であり、「マッサージ店を推薦する」というゴールに至るまでの話題が「疲れた?」⇒「癒す方法を知りたい?」⇒「マッサージ店紹介OK?」⇒「マッサージ店を推薦する」であるとする。
【0177】
この場合、「疲れた?」及び「お腹空いている?」の話題が最もゴールまでの距離が遠く(距離=3)、「ラーメン食べたい?」及び「癒す方法を知りたい?」との話題が次にゴールまでの距離が遠く(距離=2)、「ラーメン店紹介OK?」及び「マッサージ店紹介OK?」との話題が最もゴールまでの距離が近い(距離=1)。そして、各話題を予め定められた優先順位(例えば、ゴールから近い距離順、かつ、マッサージよりラーメン優先)で並べて、対応する起動条件を設定することで
図29に示す構成となる。
【0178】
[対話システム100の処理(その4)]
図30は、実施形態における対話システム100の処理の流れを示すシーケンス図(その4)である。なお、
図30の処理の説明では、話題モジュール113-nが
図29に示す階層構造で配置されているものとする。
図30において、ユーザから対話装置10に向かう矢印上の文字列は対話装置10が出力する音声であり、対話装置10からユーザに向かう矢印上の文字列は対話装置10が解析したユーザの発話内容である。さらに、
図30の処理開始時の状態情報112で示される各状態の変数は初期値(例えば、U)であるものとする。
【0179】
対話装置10の話題決定部126は、処理開始時において検出部122によりユーザの行動が検知されて状態更新部125により状態情報112の情報が更新されたことを契機に、状態情報112と話題モジュールセット113とに基づいて話題を決定する。
図30の処理開始時の状態情報112で示される各状態の変数は、
図31(A)に示す通り“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の高い話題モジュール113-nを選択する。例えば、話題決定部126は、
図31(A)に示す状態情報112における各候補状態に対応付けられている変数(例えば、各候補状態が“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-17を選択する。話題決定部126は、選択した話題モジュール113-17における話題(例えば、“お腹空いているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0180】
言語生成部127は、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“お腹空いているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“お腹空いてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“お腹空いてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“お腹空いてない?”という音声がスピーカー40から出力される(ステップS401)。
【0181】
ユーザは、スピーカー40から出力された音声に応じて、“空いてない”と発話したとする(ステップS402)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“空いてない”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0182】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“お腹空いているか聞く”であり、解析部124により解析された発話内容が“空いてない”である。そこで、状態更新部125は、該当する候補状態として“お腹空いている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0183】
状態更新部125は、
図31(B)に示すように、状態情報112で示される状態“お腹空いている”に対応付けられている変数“U”を“N”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図31(B)に示す通り、状態情報112で示される状態“お腹空いている”が“N”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0184】
例えば、話題決定部126は、
図31(B)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“N”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-18を選択する。話題決定部126は、選択した話題モジュール113-18における話題(例えば、“疲れているか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0185】
言語生成部127は、話題決定部126により決定された話題(例えば、“疲れているか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図4に示す出力言語情報114を参照し、話題決定部126により決定された話題(例えば、“疲れているか聞く”)に対応する出力音声文字列を選択する。
図4に示す例では、出力言語情報114は、出力音声文字列として“疲れてない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“疲れてない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“疲れてない?”という音声がスピーカー40から出力される(ステップS403)。
【0186】
ユーザは、スピーカー40から出力された音声に応じて、“疲れている”と発話したとする(ステップS404)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“疲れている”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0187】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“疲れているか聞く”であり、解析部124により解析された発話内容が“疲れている”である。そこで、状態更新部125は、該当する候補状態として“疲れている”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0188】
状態更新部125は、
図31(C)に示すように、状態情報112で示される状態“疲れている”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図31(C)に示す通り、状態情報112で示される状態“お腹空いている”が“N”であり、“疲れている”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0189】
例えば、話題決定部126は、
図31(C)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“N”であり、“疲れている”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-16を選択する。話題決定部126は、選択した話題モジュール113-16における話題(例えば、“癒す方法を知りたいか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0190】
言語生成部127は、話題決定部126により決定された話題(例えば、“癒す方法を知りたいか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。ここで、
図4に示す出力言語情報114には、シナリオSC3に相当する出力音声文字列が示されていない(説明の都合上省略していた)が、
図19にはシナリオSC3に相当する出力音声文字列を示している。
図29のようにシナリオSC3に相当する内容が話題モジュールセットに含まれる場合には、話題モジュールセット作成部120において
図19にはシナリオSC3に相当する出力音声文字列が出力言語情報114に含まれるように生成される。ここで、シナリオSC3に相当する出力音声文字列については
図19を参照して説明する。
【0191】
具体的には、言語生成部127は、
図19に示す出力音声文字列を参照し、話題決定部126により決定された話題(例えば、“癒す方法を知りたいか聞く”)に対応する出力音声文字列を選択する。
図19に示す例では、決定された話題(例えば、“癒す方法を知りたいか聞く”)に対応する出力音声文字列として“疲れているなら、癒す方法知りたくない?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“疲れているなら、癒す方法知りたくない?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“疲れているなら、癒す方法知りたくない?”という音声がスピーカー40から出力される(ステップS405)。
【0192】
ユーザは、スピーカー40から出力された音声に応じて、“知りたい”と発話したとする(ステップS406)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“知りたい”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0193】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“癒す方法を知りたいか聞く”であり、解析部124により解析された発話内容が“知りたい”である。そこで、状態更新部125は、該当する候補状態として“癒す方法知りたい”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0194】
状態更新部125は、
図31(D)に示すように、状態情報112で示される状態“癒す方法知りたい”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図31(D)に示す通り、状態情報112で示される状態“お腹空いている”が“N”であり、“疲れている”及び“癒す方法知りたい”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0195】
例えば、話題決定部126は、
図31(D)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“N”であり、“疲れている”及び“癒す方法知りたい”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-14を選択する。話題決定部126は、選択した話題モジュール113-14における話題(例えば、“マッサージ店紹介OKか聞く”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0196】
言語生成部127は、話題決定部126により決定された話題(例えば、“マッサージ店紹介OKか聞く”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図19に示す出力音声文字列を参照し、話題決定部126により決定された話題(例えば、“マッサージ店紹介OKか聞く”)に対応する出力音声文字列を選択する。
図19に示す例では、話題決定部126により決定された話題(例えば、“マッサージ店紹介OKか聞く”)に対応する出力音声文字列として“癒す方法知りたいなら、マッサージ店紹介してもいい?”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“癒す方法知りたいなら、マッサージ店紹介してもいい?”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“癒す方法知りたいなら、マッサージ店紹介してもいい?”という音声がスピーカー40から出力される(ステップS407)。
【0197】
ユーザは、スピーカー40から出力された音声に応じて、“いいよ”と発話したとする(ステップS408)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“いいよ”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0198】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“マッサージ店紹介OKか聞く”であり、解析部124により解析された発話内容が“いいよ”である。そこで、状態更新部125は、該当する候補状態として“マッサージ店紹介OK”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0199】
状態更新部125は、
図31(E)に示すように、状態情報112で示される状態“マッサージ店紹介OK”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図31(E)に示す通り、状態情報112で示される状態“お腹空いている”が“N”であり、“疲れている”、“癒す方法知りたい”及び“マッサージ店紹介OK”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0200】
例えば、話題決定部126は、
図31(E)に示す状態情報112における各候補状態に対応付けられている変数(例えば、候補状態“お腹空いている”が“N”であり、“疲れている”、“癒す方法知りたい”及び“マッサージ店紹介OK”が“Y”であり、それ以外の状態は“U”)の組み合わせであって、起動条件として定義されている変数の組み合わせを満たす条件を含む話題モジュール113-nのうち、優先順位の最も高い話題モジュール113-12を選択する。話題決定部126は、選択した話題モジュール113-12における話題(例えば、“マッサージ店を推薦する”)を、出力対象の話題として決定する。話題決定部126は、決定した話題に関する情報を状態更新部125に出力する。
【0201】
言語生成部127は、話題決定部126により決定された話題(例えば、“マッサージ店を推薦する”)と、出力言語情報114とに基づいて音声出力させる文字列を生成する。具体的には、言語生成部127は、
図19に示す出力音声文字列を参照し、話題決定部126により決定された話題(例えば、“マッサージ店を推薦する”)に対応する出力音声文字列を選択する。
図19に示す例では、話題決定部126により決定された話題(例えば、“マッサージ店を推薦する”)に対応する出力音声文字列として“マッサージ店紹介OKなら、〇〇っていうマッサージ店がおすすめ”を選択する。音声合成部128は、言語生成部127により選択された出力音声文字列“マッサージ店紹介OKなら、〇〇っていうマッサージ店がおすすめ”に対応する音声信号を生成し、生成した音声信号を、スピーカー40を介して出力する。これにより、“マッサージ店紹介OKなら、〇〇っていうマッサージ店がおすすめ”という音声がスピーカー40から出力される(ステップS409)。
【0202】
ユーザは、スピーカー40から出力された音声に応じて、“分かった”と発話したとする(ステップS410)。ユーザにより発話された音声はマイク30を介して対話装置10に入力される。音声認識部123は、音声認識処理によりユーザが発話した音声に対応する文字列を生成する。音声認識部123により生成された文字列は、解析部124による自然言語処理で解析される。これにより、ユーザが“分かった”と発話したことが解析される。状態更新部125は、解析部124により解析された発話内容に基づいて、状態情報112を更新する。
【0203】
具体的には、状態更新部125は、話題決定部126から出力された話題に関する情報と、解析部124により解析された発話内容とを踏まえて、状態情報112で示される候補状態の中から該当する候補状態を選択する。例えば、話題決定部126から出力された話題に関する情報が“マッサージ店を推薦する”であり、解析部124により解析された発話内容が“分かった”である。そこで、状態更新部125は、該当する候補状態として“マッサージ店推薦聞いた”を選択する。なお、話題モジュール113-nにおける話題と、状態情報112で示される各候補状態とが予め対応付けられている場合には、状態更新部125は、話題決定部126から出力された話題に関する情報に対応付けられている候補状態を選択すればよい。
【0204】
状態更新部125は、
図31(F)に示すように、状態情報112で示される状態“マッサージ店推薦聞いた”に対応付けられている変数“U”を“Y”に更新する。話題決定部126は、状態更新部125により状態情報112が更新されると、更新後の状態情報112と、話題モジュールセット113とに基づいて次に話すべき話題を決定する。この時点の状態情報112で示される各状態の変数は、
図31(F)に示す通り、状態情報112で示される状態“お腹空いている”が“N”であり、“疲れている”、“癒す方法知りたい”、“マッサージ店紹介OK”及び“マッサージ店推薦聞いた”が“Y”であり、それ以外の状態は“U”である。話題決定部126は、話題モジュールセット113を参照し、状態情報112における各候補状態に対応付けられている変数の組み合わせで満たされる条件を含む話題モジュール113-nであって、かつ、優先順位の最も高い話題モジュール113-nを選択する。
【0205】
ところが、現時点においては選択可能な話題がない。この場合、対話装置10はユーザとの対話を終了する。なお、状態更新部125は、他の装置又は機能部からの指示で一部または全ての変数の初期化を行ってもよい。このように、
図30に示す処理では、ユーザから否定的な回答が得られた場合においても、自然に他の話題に転換して対話を続けることができる。
【0206】
(ユーザと対話装置10とがテキストによる対話を行う構成)
以上が、対話装置10が、ユーザの発話内容に応じて話題を決定し、決定された話題による内容を音声出力させる構成の一実施形態の説明である。次に、ユーザと対話装置10とがテキストによる対話を行う構成について説明する。このように構成される場合、対話システム100は、マイク30及びスピーカー40を備えなくてよい。さらに、対話装置10は、音声認識部123及び音声合成部128を備えなくてよい。テキストにより話題に関する内容を出力する手段として、チャットボット等のテキスト出力手段が用いられる。
【0207】
ユーザと対話装置10とがテキストによる対話を行う場合には、ユーザは、自身が保持するスマートフォン等の通信装置、又は、対話装置10に接続されるキーボード等の入力装置を介して、対話内容に関する文字列を対話装置10に入力する。対話装置10の解析部124は、入力された文字列と、記憶部11に記憶されている辞書111とを用いて自然言語処理を行うことでユーザが入力した内容を解析する。解析部124による内容の解析から言語生成部127による文字列を生成までの処理は、音声及び発話をテキストに置き換えれば処理は上述した処理と同じである。その後、対話装置10は、不図示の表示制御部により、言語生成部127により生成された文字列を表示装置50に表示させる。表示制御部は、制御部12で実現される機能である。
【0208】
このように構成される場合、聴覚に障害があるユーザにおいても、対話システム100を利用することが可能になる。このように、対話システム100の利便性を向上させることが可能になる。
【0209】
(ユーザが音声による対話を行い、対話装置10がテキストによる対話を行う構成)
ユーザが音声による対話を行い、対話装置10がテキストによる対話を行う構成について説明する。このように構成される場合、対話システム100は、スピーカー40を備えなくてよい。さらに、対話装置10は、音声合成部128を備えなくてよい。ユーザが音声による対話を行い、対話装置10がテキストによる対話を行う場合には、マイク30による音声入力から言語生成部127による文字列を生成までの処理は、上述した実施形態の処理と同じである。その後、対話装置10は、不図示の表示制御部により、言語生成部127により生成された文字列を表示装置50に表示させる。表示制御部は、制御部12で実現される機能である。
【0210】
このように構成される場合、聴覚に障害があるユーザにおいても、対話システム100を利用することが可能になる。このように、対話システム100の利便性を向上させることが可能になる。
【0211】
(ユーザがテキストによる対話を行い、対話装置10が音声出力による対話を行う構成)
ユーザがテキストによる対話を行い、対話装置10が音声出力による対話を行う構成について説明する。このように構成される場合、対話システム100は、マイク30を備えなくてよい。さらに、対話装置10は、音声認識部123を備えなくてよい。ユーザがテキストによる対話を行い、対話装置10が音声出力による対話を行う場合には、ユーザは、自身が保持するスマートフォン等の通信装置、又は、対話装置10に接続されるキーボード等の入力装置を介して、対話内容に関する文字列を対話装置10に入力する。対話装置10の解析部124は、入力された文字列と、記憶部11に記憶されている辞書111とを用いて自然言語処理を行うことでユーザが入力した内容を解析する。以降の処理は、上述した実施形態に記載の処理と同じである。
【0212】
このように構成される場合、発話が困難なユーザにおいても、対話システム100を利用することが可能になる。このように、対話システム100の利便性を向上させることが可能になる。
【0213】
以上のように構成された対話システム100によれば、対話装置10の話題モジュールセット作成部120が、一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成する。対話装置10は、状態情報112と話題モジュールセット113とに基づいて、ユーザの状態に応じた話題を決定し、決定された話題による内容を出力させる。このように、対話装置10では、状態情報112を参照して、複数の話題モジュール113-nの中から起動条件を満たした話題による内容を出力することができる。したがって、ユーザの状態に応じた話題による内容を出力することができる。さらに、対話装置10は、起動条件を満たしたいずれかの話題による内容を出力することができるため、複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させることが可能になる。
【0214】
上述したように、対話装置10は、一方向の対話の流れが記述された1以上のシナリオSCを用いる。これにより、設計者は、複雑な分岐を含むシナリオSCを作成する必要がなく、単に一方向の対話の流れが記述された1以上のシナリオSCを作成すればよい。そして、対話装置10は、一方向の対話の流れが記述された1以上のシナリオSCを用いることで容易に話題モジュールセットを作成することができる。
【0215】
対話装置10は、ユーザの発話内容又はテキストにより入力された内容に応じて状態情報112を更新する。これにより、対話履歴を加味した話題を決定することができる。したがって、対話装置10は、過去の会話と関係ない話題を選択してしまう確率を低減することができる。そのため、対話を継続させることが可能になる。
【0216】
話題モジュールセットは、定められた優先順位で各話題モジュールが階層構造に配置されており、対話装置10は、状態情報に基づいて、満たされた起動条件に対応付けられた話題のうち、優先順位の最も高い話題をユーザの状態に応じた話題として決定する。これにより、設計者の意図に沿って対話を進めることができる。
【0217】
<変形例1>
話題モジュールセット113を構成する話題モジュール113-nの並び順は、処理の前後又は処理の途中で変更されてもよい。例えば、対話装置10は、処理開始時において話題モジュール113-nの並び順が
図3の並び順であったとして、処理の途中又は処理の終了後に話題モジュール113-nの並び順を
図22の並び順に変更してもよい。このように構成される場合、対話装置10は、話題モジュール113-nの並び順に関する情報を複数保持しておき、並び替え条件が満たされたタイミングで話題モジュール113-nの並び順を変更すればよい。並び替え条件は、例えば1つの処理(例えば、
図20、
図23及び
図27等の処理)が終了することであってもよいし、予め定められた時刻になったことであってもよいし、外部から変更の指示がなされたことであってもよい。
このように構成されることによって、対話の進め方の自由度を広げることができる。そのため、利便性を向上させることが可能になる。
【0218】
<変形例2>
上述した対話システム100では、表示装置50に二次元で表現されたエージェントを表示して、エージェントが話しかけているように見せていた。これに対して、表示装置50に代えて、対話装置10の近傍にロボットを設置し、ロボットが話しかけているように構成されてもよい。
図30は、変形例における対話システム100aの構成の一例を示す図である。対話システム100aは、対話装置10aと、カメラ20と、マイク30と、スピーカー40と、ロボット60とを備える。カメラ20と、マイク30と、スピーカー40と、ロボット60とは、有線又は無線により対話装置10aに接続される。
【0219】
ロボット60は、対話装置10aによって送信された制御情報に応じて、各駆動機構や発光部、スピーカー又はカメラ等のロボット60に設けられた機能を制御することによって、所定の動作を実行する。例えば、ロボット60は、首、肩又は腕の各関節部に設けられた駆動機構を作動することによって動作する。ロボット60は、例えば、肩又は脚等の各関節部に設けられた駆動機構を作動して歩行する動物の形状であってもよい。ロボット60は、肩又は脚等の各関節部に設けられた駆動機構を作動して自立歩行する二足歩行等のロボット(ヒューマノイド)であってもよい。ロボット60は、車輪又は無限軌道で移動できるような移動型ロボット(エージェント化されたロボット)であってもよい。ロボット60は、例えばテーブルや受付台等の板状の台の上に設置される。
【0220】
対話装置10aは、記憶部11aと、制御部12aとを備える。記憶部11aには、辞書111、状態情報112、話題モジュールセット113、出力言語情報114及び動作制御情報115a等が記憶される。記憶部11aは、磁気記憶装置や半導体記憶装置などの記憶装置を用いて構成される。動作制御情報115aは、ロボット60を制御するための情報を含む。例えば、動作制御情報115aは、話題又は出力音声文字列と、制御内容とが対応付けられたテーブルであってもよい。制御内容は、各駆動機構や発光部、スピーカー又はカメラ等のロボット60に設けられた機能を制御するための内容である。
【0221】
制御部12aは、対話装置10a全体を制御する。制御部12aは、CPU等のプロセッサやメモリを用いて構成される。制御部12aは、プログラムを実行することによって、話題モジュールセット作成部120と、状態情報作成部121と、検出部122と、音声認識部123と、解析部124と、状態更新部125と、話題決定部126と、言語生成部127と、音声合成部128と、動作制御部129aの機能を実現する。
【0222】
話題モジュールセット作成部120、状態情報作成部121、検出部122、音声認識部123、解析部124、状態更新部125、話題決定部126、言語生成部127、音声合成部128及び動作制御部129aのうち一部または全部は、ASICやPLD、FPGAなどのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアとの協働によって実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置などの非一時的な記憶媒体である。プログラムは、電気通信回線を介して送信されてもよい。
【0223】
話題モジュールセット作成部120、状態情報作成部121、検出部122、音声認識部123、解析部124、状態更新部125、話題決定部126、言語生成部127、音声合成部128及び動作制御部129aの機能の一部は、予め対話装置10aに搭載されている必要はなく、追加のアプリケーションプログラムが対話装置10aにインストールされることで実現されてもよい。
【0224】
動作制御部129aは、話題決定部126により決定された話題又は話題に基づく情報と、動作制御情報115aとに基づいて、ロボット60の動作を制御する。具体的には、動作制御部129は、動作制御情報115aを参照し、話題決定部126により決定された話題に対応付けられた制御内容を取得する。動作制御部129aは、取得した制御内容を実行させるための制御情報を生成する。動作制御部129aは、生成した制御情報をロボット60に出力することによって、ロボット60の動作を制御する。
【0225】
なお、動作制御情報115aとして、出力音声文字列と、制御内容とが対応付けられたテーブルが用いられる場合、動作制御部129aは、出力言語情報114を参照し、話題決定部126により決定された話題に対応付けられた出力音声文字列を取得する。動作制御部129aは、動作制御情報115aを参照し、取得した出力音声文字列に対応付けられた制御内容を取得する。動作制御部129aは、取得した制御内容を実行させるための制御情報を生成する。動作制御部129aは、生成した制御情報をロボット60に出力することによって、ロボット60の動作を制御する。
【0226】
<変形例3>
上述した実施形態では、ある話題に関するユーザ状態の情報が既に得られている場合でも、処理の流れによってはその話題に関する内容を音声出力してしまい、対話として不自然になる可能性がある。このような現象は、話題をスキップしたことにより、途中に確認すべき話題を飛ばして先の話題に関する内容を聞いてしまった際に起こりうる。例えば、シーケンス中の「パスタ屋知りたい?」という話題へのユーザ回答が既に得られているとする。上述した構成では、そのような状況であっても、「パスタ屋知りたい?」という話題の前に想定された「パスタ食べたい?」や「お腹空いた?」の話題モジュール113-nが起動条件を満たしている場合、それらの話題が選択・出力される可能性がある。したがって、「お腹空いた?」→「パスタ食べたい?」というようなパスタ店の紹介が予想できるような話題展開にもかかわらず、本来それらの次に選択される「パスタ屋知りたい?」は選択されずに、「ラーメン食べたい?」のような別の話題シーケンスのものになってしまうことがあり、ユーザがその話題展開を拍子抜けで不自然だと感じる可能性がある。
【0227】
そこで、上述した実施形態において、各話題モジュール113-nの起動条件として、シーケンス中でその話題モジュール113-nよりも後に登場する話題への回答が埋まっていないことを&で追加する方法がある。例えば、「パスタ食べたい?」という話題を持つ話題モジュール113-nは一つ後の話題の回答を記録する状態変数「パスタ屋知りたい」=初期値という条件を&で追加する。同様に、「お腹空いた?」という話題を持つ話題モジュール113-nは、それ以降の話題の回答を記録する状態変数「パスタ食べたい」=初期値、「パスタ屋知りたい」=初期値という条件を&で追加する。これらの起動条件よって、各シーケンスで後に登場する話題へのユーザ回答が既に得られている場合、それ以前の話題は選択されなくすることができる。
【0228】
<変形例4>
上述した実施形態では、ユーザからの話題転換に対応できない場合がある。これは、上述した話題の選択ルールでは必ずしもユーザの直前の発話内容に基づいて対話装置10、10aにおいて次の話題が選択されるとは限らないためである。具体的には、現在選択されている話題モジュール13-nよりも優先度の低い話題モジュール13-nを起動させるようなユーザの発話内容が得られた場合、対話装置10、10aは直前の話題をそのまま繰り返すため、ユーザの直前の発話を反映した話題は選択できない。例えば、あるシーケンスの最後のステップに該当する話題「パスタ屋知りたい?」を実行中である場合を考える。この時、ユーザが話題を転換して、別のシーケンスの話題の根拠となるような「ラーメンも食べたい」という趣旨の発言をしたとしても、次のターンでは階層構造でより優先度の高い現在の話題「パスタ屋知りたい?」が優先されるため、直前のユーザの発話「ラーメンも食べたい」を即座に反映した話題変更は行なわれない。その結果、対話装置10、10aとしては、ユーザの話題転換の意図を受け付けず、対話装置10、10a自身の意図を優先させて話題を提示するように振舞ってしまうことになる。このような状況では、ユーザの対話意欲を低減させる可能性が高い。その一方で、ユーザの発言を常に踏まえ続けていると、話題誘導が全く達成できない可能性もある。一定の割合で対話装置10、10aの意図を押し通すことが、対話システム100における意図や欲求が強調され、対話感の向上に繋がる可能性もある。
【0229】
そこで、話題決定部126は、状態情報112における変数がアップデートされたことを知らせる発話(例えば、「ラーメン食べたい」の変数が“Y”にアップデートされた際に、「そっか、ラーメン食べたいんだ」との発話)を行うように話題を決定してもよい。これによって、「そっか、ラーメン食べたいんだ。えっと、今の話だけど、パスタは食べたい?」のように、対話装置10、10aがユーザからの話題転換に応じない場合でも、ユーザの発言自体は理解できていることをユーザに示せるため、対話感を維持することができる。
【0230】
<変形例5>
上述した実施形態では、継続的にターゲットの話題に可能な限り早く辿り着けるような話題を必ず選択する。しかし、これが何度も続くと、対話システム100側に何かしらの目標の話題へ誘導しようとする意図(例えば、デートの誘い、宣伝)があるとユーザが感づく可能性がある。例えば、宣伝においては、その意図を隠すことが宣伝成功の可否にもかかわるため、この振る舞いによって宣伝の成功率が低下する恐れがある。この振る舞いの改善のために、例えば、多くの時間は宣伝の意図性が低い話題で雑談的に振る舞い、稀に宣伝に誘導する話題展開を行うというような制御が考えられる。
【0231】
そこで、このような機能を実現するための方法として、二つの方法について説明する。一つは、話題モジュール群を設定し、それらの優先順位をダイナミックに入れ替える方法である。話題モジュール群とは、同様の機能を持つ複数の話題モジュール113-nをまとめて一つのグループとして捉えた単位である。例えば、各シーケンスの序盤の話題で構成された話題モジュール113-nの階層をまとめて雑談話題モジュール群、シーケンス終盤の話題の階層構造を宣伝話題モジュール群と定義する。対話開始時や宣伝完了時から一定の話題数をこなすまでは、雑談話題モジュール群の優先順位を宣伝話題モジュール群よりも高く設定する。その後、一定の話題数をこなすと、宣伝話題モジュール群を相対的に高い優先順位に変更する。これによって、多くの時間は宣伝の意図性が低い各シーケンスの序盤の話題を集中的に選び続け、比較的小さい頻度でターゲットの話題へ誘導するシーケンスを実行することが可能となる。
【0232】
もう一つは、雑談を目的とした話題戦略シーケンスを設計し、それらのシーケンスの優先順位を高く設定するというものである。これによって、対話の初期には雑談を目的にしたシーケンスが実行・消費され、その後に宣伝を目的にしたシーケンスが実行される、といった振る舞いを実現可能である。
【0233】
<変形例6>
上述した実施形態では、話題誘導対話を対象としている一方で、店舗の場所や商品の特徴など、肝心の宣伝の内容やユーザからの質問への回答などといった話題は対象としていない。そこで、対話装置10、10aにおいて、このような話題を音声出力するように構成されてもよい。ユーザからの質問への回答は、対話装置10、10aが提示する他のどの話題よりも常に優先されるのが望ましい。そこで、対話装置10、10aにおいて、上述した話題モジュールセット113(例えば、話題誘導対話のモジュールセット)のより上位に、回答モジュールセットを配置する。回答話題モジュールとは、ユーザからの質問を検知した際に、話題モジュールセット113と同様に、当てはまる話題(回答)を出力するものである。回答話題モジュールを話題誘導対話の各モジュールよりも上位に配置することで、回答話題モジュールの出力が常に話題誘導対話の出力よりも優先されて選択されるため、ユーザからの質問にいつでも回答できるようになる。
【0234】
上述した実施形態では、一度回答が得られた話題は選択されないようになっているが、時間の経過や対話の流れの中で、同じ話題を再び選びたい場合があると想定される。例えば、「お腹空いた?」「お疲れですか?」という質問は、一度回答を得ていたとしても、一定の時間経過で再び行いたい話題である。そこで、対話装置10、10aにおいて所定の時間が経過したタイミングで、状態情報112で示される変数の一部又は全てを初期化するように構成されてもよい。
【0235】
<変形例7>
上述した実施形態では、ロボットや表示装置に表示されたエージェントから話題に応じた内容をユーザに提供する構成を示したが、話題に応じた内容をユーザに提供する手段としては、他の手段が用いられてもよい。他の手段として、例えばスマートスピーカー(音声出力装置)が用いられてもよい。スマートスピーカーが用いられる場合、音声合成部128は、決定された話題による内容をスマートスピーカーから出力させる。スマートスピーカーが用いられる場合、対話システム100においてはカメラ20、スピーカー40及び表示装置50を備えなくてよく、対話システム100aにおいてはカメラ20及びスピーカー40を備えなくてよい。対話システム100,100aによる対話の開始は、ユーザからの発話をスマートスピーカーで認識したことを契機に実行される。このように構成される場合、動作制御部129、129aは、スマートスピーカーの動作を制御する。
【0236】
上述した構成では、ユーザの発話内容又はテキストにより入力された内容に基づいて話題を決定する構成を示した。話題決定部126は、ユーザの発話内容又はテキストにより入力された内容の他に、ユーザの動作を加味して話題を決定するように構成されてもよい。このように構成される場合、ユーザの動作を起動条件とし、ユーザの動作に関する起動条件が満たされた場合にユーザに提供する話題を起動条件に対応付けた話題モジュールが必要になる。さらに、状態情報112には、ユーザの動作を状態とした情報が設定されることになる。
【0237】
ユーザの動作を起動条件とした話題モジュールとしては、起動条件として、例えば、「ロボットに手が伸びてきた」、「ロボットの電源を抜こうとしている」等のロボットに対するユーザの動作が設定される。さらに、起動条件が満たされた場合の話題として、例えば、「注意する」等のユーザの動作に対するロボットの危機回避用の話題が設定される。「注意する」という話題に応じた出力音声文字列として、出力言語情報114には「触らないで」や「抜かないで」等が設定される。
【0238】
このように作成されたロボットにとっての危機回避用の話題モジュールを話題モジュールセット113において最優先に配置することで、ロボット60に手が伸びてきたという動作が検出部122により検知されると、状態更新部125は、検出部122により検知されたユーザの動作に基づいて状態情報112を更新する。話題決定部126は、話題モジュールセット113を参照し、「ロボットに手が伸びてきた」が“Y”である起動条件に対応付けられた「注意する」を話題として決定する。そして、言語生成部127は、決定された話題「注意する」に対応付けられた「触らないで」という内容を音声又はテキストにより出力させる。
【0239】
同様に、ロボット60の電源を抜こうとしているという動作が検出部122により検知されると、状態更新部125は、検出部122により検知されたユーザの動作に基づいて状態情報112を更新する。話題決定部126は、話題モジュールセット113を参照し、「ロボットの電源を抜こうとしている」が“Y”である起動条件に対応付けられた「注意する」を話題として決定する。そして、言語生成部127は、決定された話題「注意する」に対応付けられた「抜かないで」という内容を音声又はテキストにより出力させる。ユーザの動作は、上述したように検出部122により検知される。
【0240】
別例として、ユーザの動作を起動条件とした話題モジュールとして以下のような構成が用いられてもよい。例えば、起動条件として、例えば、「ロボット60や表示装置50に表示されたエージェントに対して手を振ってきた」、「ロボット60や表示装置50に表示されたエージェントに対して顔を近づけてきた」等のロボットに対するユーザの動作が設定され、起動条件が満たされた場合の話題として、例えば、「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」等のユーザの動作に対する話題が設定された話題モジュールが用いられてもよい。「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」という話題に応じた動作制御として、「手を振りかえす」や「首を傾げる」等が挙げられる。なお、話題に応じた動作制御については、動作制御情報115,115aに含まれる。
【0241】
このように作成された話題モジュールを話題モジュールセット113に配置することで、ユーザがロボット60や表示装置50に表示されたエージェントに対して手を振ってきたら、話題決定部126は、話題モジュールセット113を参照し、ロボット60や表示装置50に表示されたエージェントに対して手を振ってきたという動作が検出部122により検知されると、状態更新部125は、検出部122により検知されたユーザの動作に基づいて状態情報112を更新する。話題決定部126は、話題モジュールセット113を参照し、「ロボット60や表示装置50に表示されたエージェントに対して手を振ってきた」が“Y”である起動条件に対応付けられた「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」を話題として決定する。そして、動作制御部129,129aは、動作制御情報115,115aを参照し、決定された話題「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」に対応付けられた「手を振りかえす」という内容に基づく動作を行うようにロボット60又はエージェントを制御する。
【0242】
同様に、ユーザがロボット60や表示装置50に表示されたエージェントに対して顔を近づけてきたという動作が検出部122により検知されると、状態更新部125は、検出部122により検知されたユーザの動作に基づいて状態情報112を更新する。話題決定部126は、話題モジュールセット113を参照し、「ロボット60や表示装置50に表示されたエージェントに対して顔を近づけてきた」が“Y”である起動条件に対応付けられた「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」を話題として決定する。そして、動作制御部129,129aは、動作制御情報115,115aを参照し、決定された話題「ロボット、エージェント又は音声出力装置のいずれかの動作を制御する」に対応付けられた「首を傾げる」という内容に基づく動作を行うようにロボット60又はエージェントを制御する。
【0243】
以上のように構成されることによって、ユーザの動作に応じて話題を決定することも可能になる。そのため、様々な状況に応じた対話が可能になる。
【0244】
<変形例8>
上述した実施形態では、状態情報112がユーザの状態を表す情報である場合を例に説明したが、状態情報112には、ユーザの状態だけでなく対話システム100の状態を表す情報が含まれてもよい。ここで、対話システム100の状態とは、対話システム100が行った動作に応じた状態を表す。例えば、対話システム100の状態の一例として、「XX回〇〇と発話した」や、「YY回△△の動作を行った」等が挙げられる。実際の運用時には、一人のユーザに対して対話装置10が複数回同じ内容を発話することや複数回同じ動作を実行することも想定される。このような対話システム100を構成する装置(例えば、対話装置10等)が行った発話や動作の状態も加味して、ユーザに対する発話内容を決定することで、ユーザの状態だけで発話内容を決定するよりも発話の幅を広げることができる。このように構成される場合、対話装置10の記憶部11には、状態情報112としてユーザの状態と対話システム100の状態を表す情報が記憶される。さらに、話題モジュールセット113を構成する話題モジュールには、対話システム100の状態も含めた起動条件が登録される。状態更新部125は、ユーザの発話内容又はテキストにより入力された内容に応じてユーザの状態情報の変数を更新し、対話システム100における発話内容又は動作に応じて対話システム100の状態情報の変数を更新する。話題決定部126は、状態情報112と話題モジュールセット113とに基づいて、ユーザの状態と対話システム100の状態に応じた話題を決定する。
【0245】
話題決定部126は、状態情報112と話題モジュールセット113とに基づいて、対話システム100の状態に応じた話題を決定してもよい。対話システム100aにおいても、状態情報112には、ユーザの状態だけでなく対話システム100の状態を表す情報が含まれてもよい。
【0246】
<変形例9>
上述した実施形態では、起動条件が、状態情報112で示される各状態のいずれか2つ以上の組み合わせで構成される例を示したが、起動条件は少なくとも1つの候補状態を含んでいればよい。
【0247】
<変形例10>
上述した実施形態では、話題モジュールセット113を構成する各話題モジュールに対して起動条件が対応付けられる構成を示したが、起動条件が対応付けられない話題モジュールを含む話題モジュールセット113があってもよい。
図33は、変形例におけるにおける話題モジュールセットの一例(その5)を示す図である。
図33に示す話題モジュールセット113は、
図2に示す話題モジュールセット113に、新たに話題モジュール113-20が追加された構成である。話題モジュール113-20には、起動条件が設定されておらず、優先順位が最も低い位置に配置されている。そのため、話題モジュール113-20は、話題モジュール113-20より優先順位の高い話題モジュール113-1~113-9の全てにおいて起動条件が満たされなかった場合に実行されることになる。なお、起動条件が設定されていない話題モジュール113-nの配置位置は、どこであってもよい。
【0248】
図33に示すように、起動条件が設定されていない話題モジュール113-nとして、AIによる応答が設定されてもよい。例えば、AIによる応答としては、ChatGPTのような入力された内容に応じて自動で文章作成を行う人工知能が用いられてもよい。このように、人工知能が、ユーザからの対話内容に応じた文章を自動で作成し、対話装置10の音声合成部128が、生成された文字列に対応する音声信号を生成する。そして、音声合成部128により生成された音声信号は、スピーカー40から出力される。このような構成により、シナリオで作成できていない内容であっても対話を継続させることが可能になる。
【0249】
<変形例11>
上述した実施形態では、対話装置10が話題モジュールセット作成部120を備える構成を示した。話題モジュールセット作成部120は、対話装置10とは異なる装置に実装されてもよい。このように構成される場合、話題モジュールセット作成部120を備える装置を話題モジュールセット作成装置としてもよい。話題モジュールセット作成装置が備える話題モジュールセット作成部120は、上述した方法により話題モジュールセットを作成する。話題モジュールセット作成部120によって作成された話題モジュールセットは、記録媒体を介して対話装置10に保存されてもよいし、話題モジュールセット作成装置から対話装置10に対して通信により送信されてもよい。記録媒体は、例えばUSB(Universal Serial Bus)、SDカード、ハードディスク等である。
【0250】
このように構成されることによって、対話装置10とは異なる装置で話題モジュールセットを作成するため、実際にユーザとの対話を行う対話装置10において話題モジュールセットを作成する必要がない。そのため、対話装置10の処理負荷を軽減することができる。さらに、話題モジュールセットを備える話題モジュールセット作成装置では、一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成する。これにより、設計者は、複雑な分岐を含むシナリオSCを作成する必要がなく、単に一方向の対話の流れが記述された1以上のシナリオSCを作成すればよい。そして、話題モジュールセット作成装置は、一方向の対話の流れが記述された1以上のシナリオSCを用いることで容易に話題モジュールセットを作成することができる。話題モジュールセットは、起動条件を満たしたいずれかの話題による内容を出力することができるように構成されている。そのため、実際の運用上において、複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させることが可能になる。
【0251】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0252】
10、10a…対話装置, 20…カメラ, 30…マイク, 40…スピーカー, 50…表示装置, 60…ロボット, 11、11a…記憶部, 12、12a…制御部, 120…話題モジュールセット作成部, 121…状態情報作成部, 122…検出部, 123…音声認識部, 124…解析部, 125…状態更新部, 126…話題決定部, 127…言語生成部, 128…音声合成部, 129、129a…動作制御部
【要約】
【課題】複雑な話題の遷移パターンを想定しきれていない場合であっても対話を継続させること。
【解決手段】一方向の対話の流れが記述された1以上のシナリオに基づいて、所定の条件が満たされた場合に対話の相手であるユーザに提供する話題が示された話題モジュールを複数含む話題モジュールセットを作成する話題モジュールセット作成部と、話題モジュールセット作成部によって作成された話題モジュールセットと、少なくともユーザ又はシステムの状態を表す状態情報とに基づいて、ユーザの状態又はシステムに応じた話題を決定する話題決定部と、決定された話題に応じた内容を出力させる出力部と、を備える対話装置。
【選択図】
図1