(57)【要約】  動作の速さには個人差があっても、適切に対話を制御する。  発明に係る対話システムは、たとえば請求項に記載の構成を採用することができる。具体的には、対話システムであって、ユーザに処理を出力する出力部と、ユーザからの入力を検出する検出部と、ユーザの状態を判定する判定部と、処理を実行する処理部を有し、前記出力部は、第１の処理を出力し、前記検出部は、第１の処理を出力中あるいは出力後にユーザから第１の入力を検出し、前記出力部は、ユーザからの入力後に第２の処理を出力し、前記検出部は、第２の処理を出力中あるいは出力後に、ユーザからの第２の入力を検出し、前記判定部は第１の入力と第２の入力に基づいて第２の処理に対するユーザの状態を判定し、前記処理部は前記判定結果から第３の処理を選択し、前記出力部は第３の処理を出力する。
2016021058.tif 000002
【特許請求の範囲】
【請求項１】
ユーザに処理を出力する出力部と、
前記ユーザからの入力を検出する検出部と、
前記ユーザの状態を判定する判定部と、
処理を決定する処理部とを有し、
前記出力部は、第１の処理を出力し、
前記検出部は、第１の処理を出力中あるいは出力後にユーザから第１の入力を検出し、
前記出力部は、ユーザからの第１の入力を検出した後に第２の処理を出力し、
前記検出部は、第２の処理を出力中あるいは出力後にユーザからの第２の入力を検出し、
前記判定部は、第１の入力と第２の入力に基づいて第２の処理に対するユーザの状態を判定し、
前記処理部は、前記判定結果から第３の処理を選択し、
前記出力部は、第３の処理を出力することを特徴とする対話システム。
【請求項２】
請求項１において、
前記処理部は、前記第２の処理に対する前記ユーザの状態を想定し、前記想定結果と前記判定結果から、前記第３の処理を選択することを特徴とする対話システム。
【請求項３】
請求項２において、
前記処理部は、前記処理に対してレベルを事前に設定しておき、前記第２の処理に設定されているレベルに基づいて、前記第２の処理に対する前記ユーザの状態を想定することを特徴とする対話システム。
【請求項４】
請求項２において、
前記処理部は、前記ユーザごとにあらかじめ初期状態を用意し、前記判定結果に応じて逐次状態を更新し、前記更新された状態から前記第２の処理に対する前記ユーザの状態を想定することを特徴とする対話システム。
【請求項５】
請求項２において、
前記処理部は、前記処理に対してレベルを事前に設定しておき、前記ユーザごとにあらかじめ初期状態を用意し、前記判定結果に応じて逐次状態を更新し、前記第２の処理に設定されているレベルと前記更新された状態に基づいて、前記第２の処理に対する前記ユーザの状態を想定することを特徴とする対話システム。
【請求項６】
請求項１において、
前記検出部は前記ユーザからの第１の入力として第１のユーザの動きを用い、前記ユーザからの第２の入力として第２のユーザの動きを用いることを特徴とする対話システム。
【請求項７】
請求項6において、
前記第１のユーザの動きと前記第２のユーザの動きが同じ方向、かつ、前記第１のユーザの動きと前記第２のユーザの動きの大きさに違いがある場合に、前記ユーザの状態の判定する基準を変えることを特徴とする対話システム。
【請求項８】
請求項１において、
前記ユーザが複数いる場合
前記検出部は、前記第１の処理を出力中あるいは出力後に、全ての前記ユーザから前記第１の入力を検出し、
前記検出部は、前記第２の処理を出力中あるいは出力後に、全ての前記ユーザから前記第２の入力を検出し、
前記判定部は、前記ユーザごとに前記第１の入力と前記第２の入力に基づいて前記第２の処理に対する前記ユーザの状態を判定し、
前記処理部は、前記ユーザごとの判定結果から前記第３の処理を選択し、
前記出力部は、前記第３の処理を出力することを特徴とする対話システム。
【請求項９】
請求項１において、
前記ユーザが複数いる場合
前記検出部は、前記第１の処理を出力中あるいは出力後に、全ての前記ユーザから前記第１の入力を検出し、
前記検出部は、前記第２の処理を出力中あるいは出力後に、全ての前記ユーザから前記第２の入力を検出し、
前記判定部は、前記ユーザごとに前記第１の入力と前記第２の入力に基づいて前記第２の処理に対する前記ユーザの状態を判定し、
前記処理部は、前記ユーザごとの判定結果から１つを抽出し、前記抽出された１つの判定結果から前記第３の処理を選択し、
前記出力部は、前記第３の処理を出力することを特徴とする対話システム。
【請求項１０】
請求項１において、
前記判定部は、前記第１の入力と前記第２の入力と過去に蓄積された同一ユーザからの入力に基づいて前記第２の処理に対する前記ユーザの状態を判定することを特徴とする対話システム。
【請求項１１】
画像を取得するカメラと、
前記画像から、ユーザの動きを検出する検出部と、
前記ユーザに対して文章を出力する出力部と、
前記ユーザからの入力を認識する認識部と、
前記ユーザの状態を判定する判定部と、を有する対話システムであって、
前記検出部は、第１の文章を出力している間またはその後に前記カメラで取得した画像に基づき、前記ユーザの第１の動きを検出し、
前記検出部は、第２の文章を出力している間またはその後に前記カメラで取得した画像に基づき、前記ユーザの第２の動きを検出し、
前記第１の文章の出力は前記第２の文章の出力に対して時間的に先行し、
前記認識部は、前記第２の文章に対するユーザからの入力を認識し、
前記判定部は、前記第１の動きおよび前記第２の動きに基づいて前記ユーザの状態を判定し、前記判定に応じて前記ユーザからの入力に対する処理内容を決定することを特徴とする対話システム。
【請求項１２】
ユーザに情報を出力する出力装置と、
前記ユーザからの情報を入力する入力装置と、
前記ユーザの状態を判定する判定部と、
前記出力する情報を決定する処理部を有し、
前記ユーザへの複数回の情報の出力と、前記ユーザからの複数回の情報の入力によって、ユーザと対話を行う対話システムにおける情報処理方法であって、
前記判定部は、前記出力装置からの第１の情報の出力に対する、前記ユーザの第１の反応を検知し、
前記判定部は、前記出力装置からの第１の情報の出力以降に行われる第２の情報の出力に対する、前記ユーザの第２の反応を検知し、
前記判定部は、前記検知した第１の反応と前記第２の反応に基づいて、前記ユーザの状態を判定し、
前記処理部は、前記判定されたユーザの状態に基づいて、前記出力する情報を決定する対話システムにおける情報処理方法。
【請求項１３】
前記ユーザの第１の反応および第２の反応は、カメラによって撮影された画像に基づく前記ユーザの動きである、
請求項１２記載の対話システムにおける情報処理方法。
【請求項１４】
前記第２の情報は、予め定められた内容で準備された複数の文章から選択される文章であり、
前記複数の文章には、其々当該文章を認知した前記ユーザの状態を想定する想定状態の情報が予め付されており、
前記処理部は、前記第１の反応と前記第２の反応に基づいて前記判定部によって判定されたユーザの状態と、前記第２の情報に付された想定状態の情報に基づいて、前記出力する情報を決定する、
請求項１２記載の対話システムにおける情報処理方法。
【請求項１５】
前記出力する情報は、少なくともメイントピック、プロセス、内容レベル、および出力内容である文章を組にして格納したテーブルから文章を選択して決定され、
前記第２の情報の出力に対する前記ユーザからの情報の入力により、前記メイントピックが決定され、
前記第１の反応と前記第２の反応に基づいて判定された前記ユーザの状態により、前記プロセスと内容レベルが決定され、
これらの決定に基づいて、前記文章を選択する、
請求項１２記載の対話システムにおける情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザと機械との間の対話技術に関する。
【背景技術】
【０００２】
近年、ユーザの反応を検出し、対話を制御する対話システムの研究が進みつつある。例えば、特許文献１では、ユーザの相槌の動きを検出し、前記相槌の動きから対話の進行を判定し、終了と判定された場合に、次のユーザに対話の終了を予告する対話システムが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２２８４４９号  公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、対話システムが発話中もしく発話後の相槌動作の速さが、所定のしきい値より大きいか否かが、対話を終了する基準となっている。しかし、相槌動作の速さには個人差があるため、単一のしきい値では、対応できない人が出る。
【課題を解決するための手段】
【０００５】
本発明は、上記のような課題を解決するためになされたものであり、ロボットがユーザに対して第１の出力を行い、第１の出力を実行中あるいは実行後にユーザから第１の入力を検出する。また、ユーザからの入力後にロボットが第２の出力を行い、第２の出力を実行中あるいは実行後に、ユーザからの第２の入力を検出する。そして、第１の入力と第２の入力に基づいて第２の出力に対するユーザの状態を判定し、判定されたユーザの状態に応じて選択されたロボットの処理を実行する。これにより、対話システムにおいて、ユーザごとに適した対話制御実行する。【０００６】
本発明の他の側面は、ユーザに処理を出力する出力部と、ユーザからの入力を検出する検出部と、ユーザの状態を判定する判定部と、処理を決定する処理部とを有するシステムである。出力部は第１の処理を出力し、検出部は第１の処理を出力中あるいは出力後にユーザから第１の入力を検出する。また、出力部はユーザからの第１の入力を検出した後に第２の処理を出力し、検出部は第２の処理を出力中あるいは出力後にユーザからの第２の入力を検出する。判定部は第１の入力と第２の入力に基づいて第２の処理に対するユーザの状態を判定し、処理部は判定結果から第３の処理を選択し、出力部は第３の処理を出力する。【０００７】
このようなシステムの好ましい形態では、処理部は第２の処理に対するユーザの状態（例えば理解度）を想定しておき、想定結果と判定結果から、第３の処理を選択する。また、さらに好ましい形態では、処理部は、処理に対してレベル（例えば難易度）を事前に設定しておき、第２の処理に設定されているレベルに基づいて、第２の処理に対するユーザの状態を想定する。【０００８】
また、別の好ましい形態では、検出部はユーザからの第１の入力として第１のユーザの動きを用い、ユーザからの第２の入力として第２のユーザの動きを用いる。理解度を測る手法としては、言語的な反応より、非言語的な反応のほうが有用であることがある。特にシステム側が発話している間の、ユーザの反応を判定するためには有効である。【０００９】
第１の入力と第２の入力のタイミングは、第１の入力が時間的に先行している以外は制限がない。対話開始時に採集した入力を第１の入力としてもよい。この方式は制御がシンプルになる。また、第２の入力の直前の入力を第１の入力としてもよい。この方式は、ユーザの反応に時間的な変化（例えば疲労等）がみられるときには有効である。また、第１の入力と第２の入力と過去に蓄積された同一ユーザからの入力に基づいて第２の処理に対するユーザの状態を判定してもよい。例えば、ユーザからの入力を逐次蓄積しておき、類似する状況におけるユーザの入力を判定に用いると、正確な判定が期待できる。【００１０】
本発明の他の側面は、画像を取得するカメラと、画像から、ユーザの動きを検出する検出部と、ユーザに対して文章を出力する出力部と、ユーザからの入力を認識する認識部と、ユーザの状態を判定する判定部と、を有する対話システムである。検出部は、第１の文章を出力している間またはその後にカメラで取得した画像に基づき、ユーザの第１の動きを検出する。検出部は、第２の文章を出力している間またはその後にカメラで取得した画像に基づき、ユーザの第２の動きを検出する。第１の文章の出力は第２の文章の出力に対して時間的に先行し、認識部は、第２の文章に対するユーザからの入力を認識し、判定部は、第１の動きおよび第２の動きに基づいてユーザの状態を判定し、判定に応じてユーザからの入力に対する処理内容を決定する。【００１１】
本発明の他の側面は、ユーザに情報を出力する出力装置と、ユーザからの情報を入力する入力装置と、ユーザの状態を判定する判定部と、出力する情報を決定する処理部を有し、ユーザへの複数回の情報の出力と、ユーザからの複数回の情報の入力によって、ユーザと対話を行う対話システムにおける情報処理方法である。【００１２】
判定部は、出力装置からの第１の情報の出力に対する、ユーザの第１の反応を検知する。判定部は、出力装置からの第１の情報の出力以降に行われる第２の情報の出力に対する、ユーザの第２の反応を検知する。判定部は、検知した第１の反応と第２の反応に基づいて、ユーザの状態を判定し、処理部は、判定されたユーザの状態に基づいて、出力する情報を決定する。
【発明の効果】
【００１３】
本発明に係る対話システムによれば、ユーザの状態に応じて選択された処理を出力することで、ユーザに適した対話制御を実現することができる。
【図面の簡単な説明】
【００１４】
【図１Ａ】本発明の第１の実施形態に係る、対話システムの構成を示すブロック図である。
【図１Ｂ】図１Ａの情報処理装置のハード構成を示すブロック図である。
【図２】図１Ａの情報処理部の機能構成を示すブロック図である。
【図３Ａ】ユーザ状態管理テーブルの構成を示す表図である。
【図３Ｂ】出力設定テーブルの構成を示す表図である。
【図４】対話シナリオの集合４０１の一例を示すグラフ図である。
【図５】第１の実施形態において対話ロボット１００がユーザと対話する動作を示す流れ図である。
【図６】検出部２２２が出力内容とその内容レベルを決定するフローを示した流れ図である。
【図７】サブプロセスと内容のレベルを求める条件を列挙したテーブルを示す表図である。
【図８Ａ】ユーザの頭部の動きを検出する処理の流れの一例を示す概念図である。
【図８Ｂ】ユーザの頭部の動きを検出する特徴点と動きベクトルの例を示す概念図である。
【図８Ｃ】頭部の動きの量子化に用いる方向の一例を示す平面図である。
【図８Ｄ】検出された動きベクトルを１つの系列として取り扱う様子の一例を示す概念図である。
【図９】データベース２１３が持つユーザ状態管理テーブルにデータが格納される様子を示す表図である。
【図１０Ａ】対話ロボット１００がユーザに最初の説明を実行し、ユーザから質問を受け付け、回答をした直後の状態のユーザ状態管理テーブルを示すに示す表図である。
【図１０Ｂ】対話ロボット１００がユーザに説明を実行し、その後、質問応答を何回か実行した後、ユーザから質問を受け付けて回答をした直後のユーザ状態管理テーブルを示すに示す表図である。
【図１１】動きの分類フローを示す流れ図である。
【図１２】ユーザの状態を判定するルールをテーブルに示す表図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を、図面を用いて説明する。なお、各図面において、同一の符号が付されている構成要素は同一の機能を有することとする。重複する説明は省略することがある。また、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１６】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられることがあり、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００１７】
典型的な実施例では、ユーザに対して第１の処理を出力し、第１の処理を出力中あるいは出力後にユーザから第１の入力を検出し、検出された第１の入力を蓄積し、ユーザから第１の入力を受けた後にユーザに対して第２の処理を出力し、第２の処理を出力中あるいは出力後に、ユーザからの第２の入力を検出し、第１の入力と第２の入力に基づいてユーザの状態を判定し、判定されたユーザの状態に応じて選択された処理を出力することで、ユーザに適した対話制御を実現する構成を説明する。
【００１８】
また、対話システム構成としては、ユーザに処理を出力する出力部と、ユーザからの入力を検出する検出部と、ユーザの状態を判定する判定部と、処理を選択する処理部とを有し、出力部は、第１の処理を出力し、検出部は、第１の処理を出力中あるいは出力後にユーザから第１の入力を検出し、出力部は、ユーザからの入力後に第２の処理を出力し、検出部は、第２の処理を出力中あるいは出力後にユーザからの第２の入力を検出し、判定部は第１の入力と第２の入力に基づいて第２の処理に対するユーザの状態を判定し、処理部は、判定結果から第３の処理を選択し、出力部は、第３の処理を出力する。
【００１９】
図１Ａは、本発明の第１の実施形態に係る対話システム１０００の構成を示すブロック図である。
【００２０】
図１Ｂは、図１Ａの情報処理装置123のハードウェア構成を示すブロック図である。
【００２１】
対話システム１０００は、対話ロボット１００を備える。対話ロボット１００は、ユーザからの音、ジェスチャ、文字の検出、あるいは、コントローラからの操作などにより入力を受ける。また、音による出力、表示装置への提示による出力、あるいは、ジェスチャ、コントローラへのフィードバックなどによる出力をユーザに行う。対話ロボット１００は、入力装置１２１、出力装置１２２、情報処理装置１２３、動作機構１２４、制御部１２５、記憶部１２６を備える。
【００２２】
入力装置群１２１は、ユーザからの入力を受ける装置の集合である。例えば、音を受け付けるマイク、対話ロボット周辺の様子やユーザのジェスチャを撮影するカメラ、ネットワークを経由して情報を受けとるネットワーク送受信装置、対話ロボットに対する操作を入力するコントローラ、文字を入力するキーボードなどのうち、一つあるいは複数個で実現される。
【００２３】
出力装置群１２２は、ユーザに出力する装置の集合である。例えば、音を出力するスピーカ、画面に情報を提示する表示装置、対話ロボットの動きを実現するための動作機構１２４の制御信号出力装置、対話ロボットから振動などのフィードバックを受けて動くコントローラなどのうち、一つあるいは複数個で実現される。
【００２４】
動作機構１２４は、対話ロボット１００自体を動作させる機構である。制御部１２５は、対話ロボット１００が備える各機能部を制御する。
【００２５】
図１Ｂに示したように、情報処理装置１２３は、ＣＰＵ１３１、主記憶部１３２、補助記憶部１３３、バス１３４を備える。上記１３１から１３３までの各装置はバス１３４によって接続され、各装置間で相互にデータの送受信が行われる。また、ＣＰＵ１３１と別の補助演算部を備えてもよい。
【００２６】
ＣＰＵ１３１は、主記憶部１３２または補助記憶部１３３に格納されているプログラムを読み出し、演算を実行し、主記憶部１３２や補助記憶部１３３や制御部１２５に演算結果を出力する。
【００２７】
主記憶部１３２は、ＣＰＵ１３１によって実行されるプログラムや、ＣＰＵ１３１によって実行される演算結果や、情報処理装置１２３で利用される設定情報を格納する。主記憶部１３２は、たとえば、ランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）等で実現される。
【００２８】
補助記憶部１３３、ＣＰＵ１３１によって実行されるプログラムや、ＣＰＵ１３１によって実行される演算結果や、情報処理装置１２３で利用される設定情報を格納する。とくに、主記憶１３２に格納しきれないデータの格納や、電源遮断された状態でもデータを保持する目的で使用される。補助記憶部１３３は、たとえば、ハードディスク（ＨＤＤ）などの磁気ディスクドライブ、あるいはフラッシュメモリ等の不揮発性メモリ等を、単体あるいは複数組み合わせて構成される。補助記憶部１３３には、後述するユーザの状態を判定するためのルールや、後述するデータベース等も設定されている 。
【００２９】
記憶装置１２６は、対話ロボット１００が動作を行うための動作制御用の処理プログラムや設定情報等のデータや空間地図などを格納する。記憶装置１２６は、ハードディスク（ＨＤＤ）などの記憶装置を用いて実現することができる。なお、補助記憶部１３３に設定されているユーザの状態を判定するためのルールや、後述するデータベースに関する情報を、記憶装置１２６に設定してもよい。
【００３０】
対話ロボット１００の構成はこれに限られるものではなく、入力機能、出力機能を備えていればよい。また、有線または無線のネットワークを介して、機能の一部をロボット100外部に分離してもよい。
【００３１】
図２は、情報処理装置１２３のＣＰＵ１３１が、主記憶部１３２または補助記憶部１３３に格納されている処理プログラムを実行することにより実現される、対話処理部２０１の機能構成を示すブロック図である。
【００３２】
対話処理部２０１は、動作処理部２０２と、操作処理部２０３、データベース２１３、ユーザ状態判定部２１４、処理部２１５、出力部２１６、を備える。
【００３３】
入力装置群１２１にはカメラ２９１、複数のマイクから構成されるマイクアレイ２９２が含まれる。また、コントローラ、キーボードを備えてもよい。
【００３４】
出力装置群１２２には、スピーカが含まれる。また、表示装置２８２、コントローラに付加する出力機能を備えてもよい。
【００３５】
動作処理部２０２は、入力部２１１、検出部２１２、を備え、ユーザの動きや動作に関する情報が入力され、処理する機能ブロックである。入力部２１１には、カメラ２９１により対話ロボット１００の前方を撮影した映像が入力される。
【００３６】
検出部２１２は、カメラ２９１が取得したフレーム画像からユーザの存在を認識し、ユーザが存在する場合は、ユーザの同一性を判定し、さらに、カメラ２９１が取得した２枚以上のフレーム画像それぞれを用いて、ユーザの頭部の動きを検出する。ユーザが存在すると判定された時だけ、ユーザ状態判定部２１４に対してユーザの頭部の動きを送信する。
【００３７】
フレーム画像からユーザの存在を認識する方法は、例えば、公知の顔検出技術を用いて顔を検出し、顔が検出されれば、ユーザが存在すると判定する。ユーザの同一性を判定する方法は、例えば、検出された顔と、直前に検出された顔との間で照合することで、実現できる。また、ユーザが複数存在すると判定された場合は、それぞれのユーザについて頭部の動きを検出し、対話ロボット１００に図示しない外界測定装置で前方との距離を測定し、最も近い位置のユーザの頭部の動きだけを送信する。または、それぞれのユーザについて検出された頭部の動きを送信してもよい。
【００３８】
上記の例では、動作処理部202はカメラ291からの画像を基に情報を処理するが、マイクアレイ292からの音声等を基に情報を処理する構成としてもよい。例えば、頭部の動きのかわりに、「はい」「いいえ」等の音声や、キーボードからの入力等を基に情報を処理する構成としてもよい。
【００３９】
操作処理部２０３は、入力部２２１、検出部２２２、を備え、対話システム１０００に対する操作に関する情報が入力され、処理する機能ブロックである。入力部２２１は、マイクアレイ２９２によりユーザからの音声信号が入力される。
【００４０】
検出部２２２は、マイクアレイ２９２が取得した音声信号から、ユーザが発話した文章を認識し、その文章から会話のトピックを複数検出する。検出された各トピックは、事前に階層関係を設定しておくことで、検出された段階でトピック間の階層関係を決めることができる。検出されるトピックの階層が２つの場合、上位階層をメイン、下位階層をサブとする。例えば、メインは「富士山」で、サブは「富士山の高さ」や「富士山の天気」である。
【００４１】
また、ユーザが発話した文章が、相槌の際に発せられる傾向の高い「んー」「そー」「へぇー」などの場合は、会話のトピックを“相槌”に設定する。また、ユーザが複数人いる場合は、マイクアレイ２９２により各方向から来た音声信号を検出し、それぞれの音声信号に対して、ユーザが発話した文章を認識し、その文章から会話のトピックを複数検出する。
【００４２】
上記の例では、操作処理部203はマイクアレイ292からの音声を基に情報を処理するが、カメラ291からの画像等を基に情報を処理する構成としてもよい。例えば、音声による会話のかわりに、ジェスチャによる手話の画像や、キーボードからの入力等を基に情報を処理する構成としてもよい。  データベース２１３は、ユーザの状態を管理するユーザ状態管理テーブルと、ユーザへの出力内容を設定するための出力設定テーブルを持つ。ユーザ状態管理テーブルはユーザごとに持つ。また、出力設定テーブルは、トピック（メイントピックとサブトピックの組み合わせ）毎に準備する。存在するユーザが新規の場合は、新たにテーブルを用意する。また、対話システム管理者からの指示を受けてデータの一部またはすべてを削除可能とする。
【００４３】
図３にユーザ状態管理テーブルと出力設定テーブルの構成を示す。
【００４４】
図３Ａに示すユーザ状態管理テーブル3000は、ユーザへの出力内容と、その内容レベルと、出力に対して想定されるユーザの状態と、ユーザからの入力である動きベクトルの系列、ユーザの実際の状態を１つの組として構成したテーブルである。
【００４５】
出力内容はユーザに対して出力する内容を表しており、図３Ａでは、一例として、スピーカ２８１で出力される音を合成するためのテキストが示されている。この出力内容には、表示装置２８２に表示する画像や、動作機構１２４に送る動きの情報や、コントローラの出力機能に対する振動情報なども設定できる。
【００４６】
内容レベルは、ユーザに出力される内容にレベルを表す数値を設定する。図３Ａでは、レベルの一例として難易度を用いる。難易度は数値が大きいほど理解するのが難しいことを表し、最小は１、最大は５である。
【００４７】
出力に対して想定されるユーザの状態には、ユーザが持っている状態をランク付けした数値を設定する。図３Ａでは、ユーザの状態の一例として、出力に対する理解度を用いる。出力に対する理解度は、値が大きいほどユーザがよく理解していることを表し、最小が０、最大が５である。動きベクトルの系列は、ユーザの反応である動きのベクトルを表す記号の系列が設定される。
【００４８】
ユーザの実際の状態は、ユーザの反応である動きのベクトルに基づいてユーザが持っている状態を観測し、ランク付けした数値を設定する。図３Ａでは出力に対して想定されるユーザの状態と同じ尺度を用いる。
【００４９】
以降では、図３Ａに示される各カラムの名称で説明をする。出力内容と内容レベルと想定状態は処理部２１５から取得され、ユーザ実状態はユーザ状態判定部２１４から取得され、動きベクトル系列は検出部２１３から取得され、逐次情報が更新される。ユーザ状態管理テーブルの各情報は、機能ブロックからの問い合わせに応じて、必要な情報が出力される。
【００５０】
ユーザ状態管理テーブル3000は、ユーザが複数いる場合はユーザ毎に作成することができる。作成においては、検出部212は、第１の処理を出力中あるいは出力後に全てのユーザから第１の入力を検出する。また、検出部222は、第２の処理を出力中あるいは出力後に全てのユーザからの第２の入力を検出する。これらの入力に基づいて、ユーザ状態判定部214は、ユーザごとに第１の入力と第２の入力に基づいて第２の処理に対するユーザの状態を判定し、複数のユーザ状態管理テーブル3000を生成することができる。
【００５１】
ユーザ状態管理テーブル3000では、処理の内容レベルとユーザ想定状態は１対１に予め決めておいてもよい。例えば、難易度と理解度は逆の相関があると考えられるので、内容レベルが高い（難しい）処理については、想定状態を低く（理解度が小さい）設定する。また、ユーザが複数おり、ユーザ状態管理テーブル3000を複数生成する場合には、個人差を想定してユーザ毎に異なる想定状態を設定してもよい。
【００５２】
図３Ｂに示す出力設定テーブル3010は、検出部２２２から検出されるトピックが２つだけであり、そのうち上位階層側はメイントピック、下位階層側をサブトピックとした場合の構成を示している。その構成はメイントピックと、プロセスと、内容レベルと、ユーザへの出力内容を１つの組として構成したテーブルである。以降の説明では、図３Ｂに示される各カラムの名称で説明をする。メイントピックとサブトピックの組み合わせで、１つのトピックを構成する。図３Ｂの例では、一つのメイントピックAと二つのサブトピック01と02の組み合わせで、２つのトピックが検出される。サブトピックの数は３以上に増やしてもよい。また、サブトピックの階層を省略してメイントピックのみとしてもよいし、メイントピック・サブトピックの階層を、図３Ｂの例のように２階層でなく、３階層以上としてもよい。
【００５３】
メイントピックは、ユーザの発話内容に対する主要なトピックを指す。たとえば「富士山」である。
【００５４】
プロセスは、主要なトピックに対する回答を複数にカテゴリ分けするための項目であり、サブプロセス名とサブトピック名の組み合わせで表現される。サブプロセス名は「メイン」「捕捉」等である。サブトピックはたとえば「富士山の高さ」「富士山の天気」であり、出力設定テーブルでは「０１」「０２」などの番号で示している。
【００５５】
内容レベルと出力内容は図３Ａと同様である。内容レベルは出力内容ごとに設定される。出力設定テーブルは、メイントピックとプロセスと内容レベルをキーにすることで、出力内容が一意に決定されるように設定する。各項目は対話システム１０００が動作する前の段階で設定しておくか、もしくは、必要に応じて適宜追加する。
【００５６】
図２に戻って説明を続ける。ユーザ状態判定部２１４は、データベース２１３からユーザ状態管理テーブル3000に格納されている動きベクトル系列の集合を取得し、取得した動きベクトル系列の集合から第１の動きを抽出し、検出部２１２から第２の動きベクトルの系列を取得し、取得した第２の動きベクトルの系列から第２の動きを判定し、第１の動きと第２の動きから直前の処理に対するユーザの状態を判定する。本実施形態では、ユーザの状態として図３Ａに示した出力に対する理解度を用いる。検出部２１２からそれぞれのユーザの頭部の動きが取得された場合は、ユーザごとに状態を判定する。
【００５７】
処理部２１５は、検出部２２２が検出したトピックの集合と、データベース２１３からユーザ状態管理テーブルに格納されている直前のタイミングの想定状態と、ユーザ状態判定部２１４で判定されたユーザ実状態と、対話シナリオにおける現在のポジションから、出力内容と内容レベルを決定する。また、ユーザ状態判定部２１４が複数のユーザの状態を判定した場合は、ユーザごとに出力内容と内容レベルを決定し、最後に多数決を取って、最終的な出力内容と内容レベルを決定する。もしくは、ユーザごとに出力内容と内容レベルを決定し、出力内容にユーザのいる方向を向く動作をロボットに指示する信号を入れ、ユーザごとに出力を行うようにしてもよい。
【００５８】
図４は対話シナリオの集合４０１の一例を示す図である。対話シナリオはトピックごとに用意される。同じメイントピックでサブトピックが異なる場合は、別々に用意される。対話シナリオにおいて、ポジションが丸で示され、矢印はあるポジションから別のポジションに遷移可能な方向を表す。ただし、サブプロセスが、矢印に記載された名称と一致するときだけポジションが遷移する。
【００５９】
出力部２１６は、処理部２１５から出力内容を取得し、出力装置群１２２および制御部１２５に内容を送信する。
【００６０】
図５は、対話処理部２０１の処理の流れ、換言すると、対話ロボット１００がユーザと対話する動作を示すフローチャート図である。
【００６１】
操作処理部２０３がマイクアレイ２９2からユーザの音声信号を入力、トピックを複数検出する（Ｓ５０１）。
【００６２】
処理部２１５は、操作処理部２０３からトピックの集合を取得し、出力内容を決定する（Ｓ５０２）。
【００６３】
出力部２１６は、処理部２１５から出力内容を取得し、出力装置群１２２および制御部１２５に送信する（Ｓ５０３）。
【００６４】
カメラ２９１が対話ロボット１０００の前方を撮影する（Ｓ５０４）。
【００６５】
動作処理部２０２が、カメラ２９１で撮影された映像からユーザの存在を認識する（Ｓ５０５）。
【００６６】
ユーザが存在しなかった場合（Ｓ５０６Ｎ）、ステップＳ５０１に戻る。
【００６７】
ユーザが存在していた場合（Ｓ５０６Ｙ）、例えばユーザの頭部の動きを検出し、動きベクトル系列の形式でデータベース２１３とユーザ状態判定部２１４に送信する。データベース213ではユーザ状態管理テーブル3000に動きベクトル系列を登録する（Ｓ５０７）。
【００６８】
ユーザ状態判定部２１４が、画像処理部２０２から動きベクトル系列を取得し、データベース２１３から過去の動きベクトル系列を取得し、これらからユーザの状態を判定する（Ｓ５０８）。ユーザの状態判定の具体例については、後に図１０で説明する。
【００６９】
処理部２１５が、ステップＳ５０２で取得したトピックの集合と、データベース２１３から取得した最新の想定状態と、ユーザ状態判定部２１４から取得したユーザの状態から、出力内容とその内容レベルを決定する（Ｓ５０９）。出力内容とその内容レベルを決定するためには、まずサブプロセスと内容レベルを決定し（図７で説明する）、サブプロセスと内容レベルから出力内容を決定する。
【００７０】
出力部２１６は、処理部２１５からステップＳ５０９で決定された出力内容を取得し、出力装置群１２２および制御部１２５に送信する（Ｓ５１０）。ステップＳ５１０と同じタイミングで、データベース２１３は、処理部２１５から取得した出力内容とその内容レベルをユーザ状態管理テーブル3000に格納する（Ｓ５１１）。
【００７１】
質問に対する回答を出力している間のユーザの動きだけでは、ユーザの個人差により理解度判定が困難である。そこで、本実施例では、時間的に過去のユーザの動きを元に、ユーザの新しい動きを分析して、ユーザの状態を判定する。これにより、ユーザの個人差を補償して、理解度判定を容易に行うことができる。時間的に過去のユーザの動きは、例えばユーザに対する説明を出力している間の動きを用いることができる。
【００７２】
図６は、検出されるトピックが２つだけの場合を例にとり、ステップＳ５０２およびステップＳ５０９で出力内容とその内容レベルを決定するフローを示した図である。以下、各ステップについて、図２〜図４を参照しながら、関連する一連の動作毎に説明する。
【００７３】
まず、検出部２２２からメイントピックが入力され、主記憶部１３２または補助記憶部１３３に蓄積する（Ｓ６０１）。
【００７４】
入力されたメイントピックと、主記憶部１３２または補助記憶部１３３に蓄積されている１つ前のタイミングで入力されたメイントピックを比較する（Ｓ６０２）。
【００７５】
比較の結果、１つ前のタイミングの入力とメイントピックに違いがある場合（Ｓ６０３Ｙ）、対話シナリオ集合４０１からメイントピックに対応した対話シナリオが選択され（Ｓ６０４）、選択された対話シナリオのポジションをＳに設定する（Ｓ６０５）。
【００７６】
１つ前のタイミングの入力とメイントピックが同じなら（Ｓ６０３Ｎ）、メイントピックに対応する対話シナリオの中で現在、位置しているポジションを取り出す（Ｓ６０６）。
【００７７】
現在のポジションがＥの場合（Ｓ６０７Ｎ）は、ステップＳ６０５を処理する。これは同じトピックで違う会話を始めることに相当する。
【００７８】
現在のポジションがＥでない場合は（Ｓ６０７Ｙ）は、ステップＳ６０８以降を処理する。
【００７９】
ユーザ状態管理テーブル3000から次に設定したいサブプロセスと内容レベルを求める（Ｓ６０８）。このとき、サブプロセスと検出部２２２が検出したサブトピックと合わせてプロセスが設定される。例えば、求められたサブプロセスが“メイン”であり、検出されたサブトピックが“０１”の場合、プロセス名は“メイン０１”となる。
【００８０】
ステップＳ６０８で求められたサブプロセスと一致する矢印に沿ってポジションに遷移する（Ｓ６０９）。例えば、図４に示したメイントピックＡの対話シナリオにおいて、現在のポジションがＳであり、かつ、サブプロセスがメインの場合は、ポジション（４３１）から１のポジション（４３２）に遷移する。
【００８１】
Ｓ６０８で求められた内容レベルと、メイントピックとプロセスと合わせてキーに設定し、出力内容設定テーブルから出力内容を取り出し、出力部２１６に送信する（Ｓ６１０）。図３Ｂに示した出力内容設定テーブルの場合、メイントピックが“Ａ”、プロセスが“メイン０１”、内容レベルが“４”のときは、出力内容は“ＡはＸＸです”となる。
【００８２】
Ｓ６０８で求められた内容レベルを用いて想定状態を計算し、取り出した出力内容とともにデータベースに送信する（Ｓ６１１）。想定状態の計算式は、内容レベルとして難易度を用い、レベルが大きいほど難易度が高いことを表す場合を例に説明する。レベルが大きいとき、つまり、出力内容が難しいときは、ユーザに理解してもらえる可能性が低い、すなわち、想定されるユーザの状態は小さくなる性質を持つ式を設定する。逆に、内容レベルが小さいとき、つまり、出力内容が易しいときは、ユーザに理解してもらえる可能性が高い、すなわち、想定されるユーザの状態は大きくなる性質を持つ式を設定する。また、ユーザの情報があれば、それを踏まえた式とする。例えば、下記の式で計算される。
【００８３】
想定状態＝ユーザ状態の最大値−内容レベル×ユーザの理解度重み
上記の式において、ユーザ状態の最大値とはユーザが最も理解したときの値である。そこから、内容レベルの大きさを引くことで、前述の性質を満たす。ただし、内容レベルの最大値はユーザ状態の最大値とする。既知ユーザ重みとは、対話ロボット１０００に対面しているユーザの情報を反映した重みであり、値域は０から１である。ユーザが難しい説明でも理解してくれる人ならば重みを０．５より小さくし、理解度できなさそうな人なら重みを０．５より大きくする。
【００８４】
理解してくれやすいユーザか否かを知る方法としては、例えば、ユーザ状態管理テーブルから対象のユーザの想定状態とユーザ実状態をすべて取得し、想定状態＜ユーザ実状態の数を用いて判断する。これは、想定状態＜ユーザ実状態の数は、対話システム１０００の想定よりも実際にユーザがよく理解してくれた数を表しており、理解しやすいユーザと判断できる基準として有用である。
【００８５】
また、ユーザ実状態が所定の大きさ以上がＮ回連続したか否かを用いることでもできる。これは、こちらの説明に対して高い理解度を示し続けたか否かを表しており、理解しやすいユーザと判断できる基準として有用である。また、内容レベルが高い時に対するユーザの実状態が高い場合の数も用いることでもできる。これは、難しい内容の出力に対して理解した数を表しており、理解しやすいユーザと判断できる基準として有用である。以上説明した基準をそれぞれ足し合わせて、重みを設定してもよい。
【００８６】
また、トピックが２つより多い場合は、例えば、メイントピックを複数のトピックを組合せたものとして扱い、メイントピックに扱われなかったトピック集合はプロセス内のサブトピック名として連結して扱うことで、上記と同様のフローで処理可能である。
【００８７】
図７は、ユーザ状態管理テーブル3000から次に設定したいサブプロセスと内容レベルを求める条件を列挙したテーブルを示す図である。条件を満たす場合に、対応するサブプロセスと内容レベルを設定する。また、備考に情報がある場合はその処理を実行する。
【００８８】
条件１は、想定状態の値が実状態より小さい場合である。これは、想定よりも理解をしてくれたことを表す。したがって、興味がある、もしくは、やや難しめの内容を説明しても理解してくれそうと判断し、備考にある所定のコメントを発話して、サブプロセスに補足、内容レベルを４に設定する。コメントは、意外だった感想を示す内容とする。このように、想定結果と判定結果が一致しない場合などに、出力部は、通常のサブプロセスの処理の実行前に、付加的な処理を行うこともできる。また、判定結果から、ある処理に従属する処理を処理として選択することもできる。
【００８９】
条件２は想定状態の値が実状態より大きい場合である。これは、想定よりも理解してくれなかったことを表す。したがって、説明を易しくした方がいいと判断し、備考にある所定のコメントを発話して、サブプロセスに平易化、内容レベルを２に設定する。コメントは、自分の説明が難しかったことを示す内容とする。
【００９０】
条件３は直前の実状態が連続して高い値であり、かつ、次の話題（異なるメイントピックとサブトピックの組み合わせ）に移る場合である。ユーザに刺激を与えた方がいいと判断し、あえて内容レベルの高い説明を選択するため、サブプロセスにメイン、内容レベルを５に設定する。
【００９１】
条件４、５は、想定状態と実状態が同じであり、かつ、実状態が高い場合である。これは、ユーザは、興味を持ったので補足説明をした方がいいと判断し、サブプロセスに補足、内容レベルは実状態−１を設定する。
【００９２】
条件６は想定状態と実状態が同じであり、実状態が３の場合である。これは、ユーザは直前の説明に納得し、興味もほどほどなので、対話を終了した方がいいと判断し、サブプロセスに終了を設定する。このように、判定結果によっては、処理を行わない選択肢を設けることもできる。
【００９３】
条件７、８は、想定状態と実状態が同じであり、かつ、実状態が低い場合である。これは、ユーザは直前の出力がわからなかったので、説明を易しくした方がいいと判断し、サブプロセスに平易化、内容レベルは実状態＋１を設定する。
【００９４】
条件１０は、最初の対話のときの場合である。サブプロセスにメイン、内容レベルは３を設定する。条件１１は、ｊ対話システム１０００と過去に話したことのあるユーザと、対話し始めた場合である。これは、知っているユーザなので、多少難しい内容を説明しても理解してくれると判断し、サブプロセスにメイン、内容レベルは４を設定する。条件は、これに限られるものではなく、想定状態、実状態、対話シナリオのポジションのいずれかが用いられていればよい。
【００９５】
図７に示したテーブルを参照することにより、サブプロセスと内容レベルが定まる。サブプロセスと内容レベルにメイントピックの情報を加え、キーとして出力内容テーブル（図３Ｂ）を参照すると、出力内容が定まる。
【００９６】
図７にみられるように、処理部215は、処理に対して内容レベルを事前に設定しておき、過去の判定結果に基づいてレベルを決定し、レベルが設定された処理を選択するように構成することができる。このとき、過去の複数回の判定結果を用いてレベルを決定してもよい。例えば、過去の複数回の判定結果の平均値や最頻値を用いることができる。
【００９７】
なお、複数ユーザがいる場合は、処理部215は、ユーザ毎に生成されたユーザ状態管理テーブル3000を用い、ユーザ毎に条件判定を行い、その結果からユーザ毎に処理を選択して出力することができる。また、ユーザの人数が多く処理が煩雑な場合などは、ユーザ毎の判定結果から１つを抽出し、抽出された１つの判定結果に基づいて一つの処理を選択し出力することもできる。
【００９８】
図８Ａは、ステップＳ５０７のユーザの頭部の動きを検出する処理の流れの一例を示す図である。最初に、処理８０１のように、時間的に連続する２つのフレーム画像のうちの一方のフレーム画像から顔を検出する。検出された結果は８１１で示される。次に、処理８０２に示すように、検出された顔内部の領域において特徴点を複数検出する。最後に、処理８０３に示すように検出されたそれぞれの特徴点が、他方のフレーム画像で存在する位置までのベクトルを求めて、前記ベクトルを平均したものを頭部の動きベクトルとして用いることができる。
【００９９】
図８Ｂは、処理803を拡大表示したものである。丸や三角やバツで示される各特徴点に対して、矢印で示す動きベクトルが示される。
【０１００】
図８Ｃは、動きベクトルを量子化して表現する例を示す。動きベクトルは例えば、図８Ｃに示すように、４方向に量子化する。処理８０２および処理８０３を行う方法は、下記参考文献１に記されている方法を用いることができる。
［参考文献１］J. Shi and C. Tomasi, "Good Features to Track," CVPR'94, pp.593-600。
【０１０１】
図８Ｄに示すように、検出された動きベクトルは、所定の時間分をまとめて１つの系列として取り扱う。動きベクトルが求められた時間ごとに、動きベクトルの系列をデータベース２１３とユーザ状態判定部２１４に送信する。ユーザの頭部の動きを検出する処理の流れは、これに限られるものではない。
【０１０２】
図９は、データベース２１３が持つユーザ状態管理テーブル3000にデータが格納される様子を表す図である。ユーザ状態管理テーブルの構造は、図３Ａで示した構造と同様である。まず、ステップＳ５０２で複数のトピックに基づいて、出力内容を決定した後、処理部２１５から出力内容とその内容レベルと想定状態を取得したタイミングｔ１で、取得したデータを格納する。
【０１０３】
次に、ステップＳ５０７で撮影された映像からユーザの頭部の動きを検出した後、検出部２１３から動きベクトル系列を受け取ったタイミングｔ２で、動きベクトル系列を格納する。
【０１０４】
続いて、ステップＳ５０８で動きベクトル系列と過去の動きベクトルから、ユーザの状態を判定した後、ユーザ状態判定部２１４からユーザ実状態を取得したタイミングｔ３で、ユーザ実状態を格納する。この一連の流れを逐次実行する。
【０１０５】
以上の例では、処理部は、処理に対してレベルを事前に設定しておき、ユーザごとにあらかじめ初期状態のテーブルを用意し、判定結果に応じて逐次テーブルを更新し、設定されている内容レベルや更新されたユーザの実状態に基づいて、各処理に対するユーザの状態を想定することができる。
【０１０６】
ステップＳ５０８で過去の動きベクトルの系列を取り出す方法について、図１０に示すデータベース２１３内のユーザ状態管理テーブルを用いて説明する。
【０１０７】
図１０Ａは、対話ロボット１００がユーザに最初の説明（出力）を実行し、その後、ユーザからの質問に回答した直後の状態の、ユーザ状態管理テーブル3000を示す図である。ユーザ状態管理テーブル3000には、ユーザに最初の説明を実行した際の情報が１行目に格納され、ユーザからの質問に回答した情報が、２行目の出力内容、内容レベル、想定状態に格納されている。この状態では、第１の動きを判定するために必要な動きベクトル系列として、１行目の動きベクトル系列１００１を用いる。２行目の出力内容を出力する段階では、ユーザからは１つの動きしか得られていないので、ユーザ状態判定部214は、後に図１２のユーザ状態判定テーブルで説明する、理解度判定ルールが利用できない。この場合は、２行目の出力内容は、例えばユーザの実状態（理解度）は暫定的に中間値（例えば２または３）として決定すればよい。あるいは、第１の動きのみで実状態（理解度）を判定する別のテーブルを準備すればよい。あるいは、図１２のテーブルで、第１の動き「なし」として第２の動きのみで判定すればよい。
【０１０８】
ユーザ状態管理テーブル3000は、処理部215によりユーザ毎に作成され、其々あらかじめ初期状態を用意する。テーブルは、判定結果に応じて逐次状態を更新し、更新された状態から次の処理を想定するように構成することができる。
【０１０９】
図１０Ｂは、対話ロボット１００がユーザに説明を実行し、その後、質問の受付と回答を何回か繰り返した後に、ユーザからの質問に回答した直後の状態の、ユーザ状態管理テーブルを示す図である。ユーザ状態管理テーブルには、１行目から複数行にわたって情報が格納され、Ｋ行目の出力内容、内容レベル、想定状態に情報が格納されている。
【０１１０】
この状態では、Ｋ行目の内容レベルと同じ値を持つ行を１行目からＫ−１行目までの範囲で検索し、見つかった行のうち、最もＫに近いＪ行目の動きベクトル系列１００２を用いることができる。これは、現在説明している出力内容と同じ内容レベルを過去に説明したときのユーザの動きを第１の動きとして用いることを意味する。
【０１１１】
現在の説明と同じ内容レベルで説明した時のユーザの動きを用いてユーザの理解度を判定することで、ユーザに適した理解度の推定が可能となる。また、Ｋ行目の内容レベルと同じ値を持つ行がなかった場合、例えば、１行目の動きベクトル系列を用いればよい。あるいは、内容レベルが最も近い、かつ、最もＫに近い行の動きベクトル系列を用いるように設定してもよい。上記では、動きベクトル系列を１つ選択する方法を説明したが、過去の動きベクトル系列を複数個用いてもよい。例えば、平均値あるいは、最頻出の値を使用すればよい。このように、過去に蓄積された同一ユーザからの入力を有効に利用することができる。
【０１１２】
また、「わたしの言うことがわかりますか？」などの理解度判定用の出力を設定しておき、これに対する応答を、第１の動きとして用いることもできる。
【０１１３】
以上の方法で選択された動きベクトル系列から動きを分類する。過去の動きベクトル系列を複数利用する場合は、利用する動きベクトル系列をまとめて一つの動きベクトル系列を生成し、生成された動きベクトル系列を用いて動きの分類を行う。
【０１１４】
図１１は、動きの分類フローを示す図である。動きベクトル系列が入力される（Ｓ１１０１）。動きベクトル系列の中で最も回数の多い方向を求める（Ｓ１１０２）。図８Ｃで説明した動きベクトルの量子化に従うと、前記方向が０の場合（Ｓ１１０３、Ｄ＝０）、動きは“なし”と判定する（Ｓ１１０４）。前記方向が左右、つまり１または３の場合（Ｓ１１０３，Ｄ＝１）、動きを“左右あり”と判定する（Ｓ１１０５）。前記方向が上下、つまり２または４の場合（Ｓ１１０３、Ｄ＝２）、前記回数が所定のしきい値Ｔ１以上の場合（Ｓ１１０６、Ｙ）は、第１の動きを“上下大”と判定する（Ｓ１１０８）。前記回数が所定のしきい値Ｔ１より小さい場合（Ｓ１１０６、Ｎ）、かつ、前記回数が所定のしきい値Ｔ２以上の場合（Ｓ１１０７、Ｙ）、第１の動きを“上下中”と判定する（Ｓ１１０９）。前記回数が所定のしきい値Ｔ１より小さい場合（Ｓ１１０６、Ｎ）、かつ、前記回数が所定のしきい値Ｔ２より小さい場合（Ｓ１１０７、Ｎ）、動きを“上下小”と判定する（Ｓ１１１０）。
【０１１５】
図１２は、ユーザ状態として出力に対する理解度を設定した場合の、ステップＳ５０８において、ユーザ状態判定部214がユーザの状態を判定するルールをテーブルに示した図である。図１２では、テーブルの行が第１の動きに対応し、テーブルの列が第２の動きに対応する。このテーブルにおいて動きは、上下方向、左右、動きなしの３種類の大きな分類と、上下方向の動きについては、その周期が大、中、小の３種類の分類、すなわち合計５つのカテゴリで表現されている。また、テーブルの値は、理解度の大きさを表しており、数字が大きいほど理解度が高いことを示す。
【０１１６】
図１２では、理解度がニュートラル（理解したか、しなかったか不明）の場合が１、理解がされなかった場合は０、理解度が２以上は理解があったとしている。例えば、図１２の１２０１で示した場所は、第１の動きが上下方向で周期が中、第２の動きが上下方向で周期が小に対応しており、そのときの理解度は２である。
【０１１７】
このテーブルの値の設定基準について説明する。まず、第２の動きが左右の場合は、第１の動きに関わらず理解度に０が設定されている。これは、左右の動きは首をかしげる動作に対応しており、首をかしげた場合は、第１の動きに関わらず理解できなかったと判断したためである。続いて、第１の動きが上下にある場合について説明する。多くの日本人の場合、理解した時は上下の動きをしてくれる傾向が強いことから、この場合は、理解した時は上下の動きをするタイプのユーザと判断する。第２の動きがない場合は、このタイプのユーザが動かない場合は理解できなかったと判断し、０が設定されている。また、第２の動きが上下かつ、第１の動きより周期が小さい場合は、前よりも動きの周期が小さいので、あまり理解してもらえなかった、もしくはどちらかわからないと判断し、低めの値が設定されている。第２の動きが上下かつ、第１の動きと周期が同じ場合は、周期の大きさに応じた値が設定されている。第２の動きが上下かつ、第１の動きより周期が大きい場合は、前よりも動きの周期が大きいので、理解度が高いと判断し、図５の値が設定されている。
【０１１８】
次に第１の動きが左右にある場合と、動きがなしの場合について説明する。この場合は、理解したときにどのような反応をするかわからないタイプのユーザと判断し、上下方向の動きの周期が大きいほど理解度が高く、動きがない場合は理解したかどうか判断できないとして、図１２の値が設定されている。ユーザの理解度を判定する方法は、これに限られるものではなく、判定に用いられるデータは、データベース２１３に格納されている過去の動きベクトルの系列と、検出部２１２から取得する動きベクトルの系列があればよい。
【０１１９】
以上の例では、図５のステップＳ５０８においてユーザ状態としてユーザの理解度を判定している。この結果は、図５のＳ５０９で出力内容と内容レベルを決定する処理で使用される。具体例としては、ユーザの理解度は図７のテーブルの実状態に代入され、条件を満たすサブプロセスと内容レベルが決定される。
【０１２０】
以上のように、本実施形態に係る対話システム１０００は、ユーザに出力する出力部と、ユーザからの入力を検出する検出部と、ユーザの状態を判定する判定部と、処理を選択する処理部とを有し、前記出力部は、第１の出力を行い、前記検出部は、第１の出力を実行中あるいは実行後にユーザから第１の入力を検出し、前記出力部は、ユーザからの入力後に第２の出力を行い、前記検出部は、第２の出力を実行中あるいは実行後に、ユーザからの第２の入力を検出し、前記判定部は第１の入力と第２の入力に基づいて第２の出力に対するユーザの状態を判定し、前記処理部は、前記判定結果から処理を選択し、前記出力部は、前記処理を実行して出力することを特徴とする。
【０１２１】
かかる特徴によれば、ユーザに対して第１の出力を行い、第２の出力を実行中あるいは実行後にユーザから第１の入力を検出し、検出された第１の入力を蓄積し、ユーザからの入力後にロボットが第２の出力を行い、第２の出力を実行中あるいは実行後に、ユーザからの第２の入力を検出し、第１の入力と第２の入力に基づいて、ユーザの過去の反応をも参酌してユーザの状態を判定することで、ユーザに適した対話制御を実現する。
【０１２２】
また、判定されたユーザの状態に応じてロボットの処理を選択することで、ユーザに適した対話制御を実現する。
【０１２３】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、操作処理部２０３は、対話システム１０００に対する操作や応答に関する情報が入力され、処理する機能ブロックであればよい。例えば、入力装置群にキーボードを用意し、キーボードから複数の文字コードの入力を受ける入力部、入力された複数の文字コードから文章を生成し、トピックを複数検出する検出部としてもよい。また、入力装置群にカメラを用意し、カメラで撮影された映像を受ける入力部、入力された映像からジェスチャを認識して文章を生成し、トピックを複数検出する検出部としてもよい。いずれもの場合も、対話シナリオの集合４０１、ユーザ状態管理テーブル、出力内容設定テーブルをそのまま用いることができる。また、入力装置群に対話システム１０００を操作するためのコントローラ２９３を用意し、コントローラ２９３から信号を受ける入力部、入力された信号から対話ロボットの操作コマンドを検出する検出部としてもよい。この場合は、対話シナリオの集合４０１、ユーザ状態管理テーブル、出力内容設定テーブルは、操作に合わせた内容にすることで、構造をそのまま利用できる。
【０１２４】
また、動作処理部２０２は、ユーザの動きや動作に関する情報が入力され、処理する機能ブロックであればよい。例えば、入力装置群に対話システム１０００を操作するためのコントローラ２９３を用意し、コントローラ２９３から信号を受ける入力部、入力された信号からユーザのコントローラ２９３に対する動作を検出する検出部としてもよい。また、第１の実施形態における検出部２１２は、ユーザの頭部の動きを検出していたが、ユーザの目の動きや、体全体の動きを用いてもよい。いずれの場合も、動きベクトル系列の表現を検出する動作に応じた形式に変えれば、各機能ブロックは同様でよい。
【０１２５】
また、第１の実施形態におけるユーザ状態判定部２１４で判定されるユーザの状態として出力に対する理解度を用いていたが、対話システムに対して信頼度合いを測る信頼度や、ユーザのストレス度合いとしてもよい。この場合、出力内容設定テーブルを設定された尺度に沿ったルールにすれば、機能ブロックは同様でよい。
【０１２６】
上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
【０１２７】
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１２８】
以上の構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
【産業上の利用可能性】
【０１２９】
本発明は、ユーザと機械との間の対話技術全般に利用することができる。
【符号の説明】
【０１３０】
１００：ロボット
１２１：入力装置群
１２２：出力装置群
１２３：情報処理装置
１２４：動作機構
１２５：制御部
１２６：記憶部
２０２：動作処理部
２０３：操作処理部
２１３：データベース
２１４：ユーザ状態判定部
２１５：処理部
２１６：出力部
１０００：対話システム
【図１Ａ】
2016021058.tif 000003
【図１Ｂ】
2016021058.tif 000004
【図２】
2016021058.tif 000005
【図３Ａ】
2016021058.tif 000006
【図３Ｂ】
2016021058.tif 000007
【図４】
2016021058.tif 000008
【図５】
2016021058.tif 000009
【図６】
2016021058.tif 000010
【図７】
2016021058.tif 000011
【図８Ａ】
2016021058.tif 000012
【図８Ｂ】
2016021058.tif 000013
【図８Ｃ】
2016021058.tif 000014
【図８Ｄ】
2016021058.tif 000015
【図９】
2016021058.tif 000016
【図１０Ａ】
2016021058.tif 000017
【図１０Ｂ】
2016021058.tif 000018
【図１１】
2016021058.tif 000019
【図１２】
2016021058.tif 000020
【国際調査報告】
2016021058.tif 000021
2016021058.tif 000022