(57)【特許請求の範囲】
【請求項１】
ユーザと音声またはテキストで対話する対話装置であって、
当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完部と、
所定の判定条件に基づき、上記発話補完部が補完した上記ユーザの発話の正誤を判定する正誤判定部と、
上記ユーザの発話は正しいと上記正誤判定部が判定した場合、上記ユーザの発話の情報を発話データベースに保存する発話保存部と、
上記発話保存部が上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成部と、
を備えたことを特徴とする対話装置。
【請求項２】
上記発話補完部は、当該対話装置およびユーザの少なくとも一方の上記先の発話に含まれる単語に基づいて、上記ユーザの発話を補完することを特徴とする請求項１に記載の対話装置。
【請求項３】
上記正誤判定部は、
(a)単語と該単語のカテゴリとの対応関係を示す情報を参照して、
(b)上記発話補完部が補完した上記ユーザの発話に含まれる単語のカテゴリが、上記対話装置およびユーザの少なくとも一方の上記先の発話に含まれる単語のカテゴリと一致する場合、上記ユーザの発話は正しいと判定することを特徴とする請求項１または２に記載の対話装置。
【請求項４】
上記発話保存部は、上記ユーザの発話とともに、(i)上記ユーザの発話に含まれる１または複数の単語のカテゴリを示す情報、(ii)上記ユーザの発話が入力された日時または場所を示す情報、および、(iii)上記ユーザの識別情報のうちの少なくとも１つを、上記発話データベースに保存することを特徴とする請求項１から３のいずれか１項に記載の対話装置。
【請求項５】
上記正誤判定部は、
(a)単語と該単語のカテゴリとの対応関係を示す情報を参照して、
(b)上記発話補完部が補完した上記ユーザの発話に含まれる複数の単語と対応するカテゴリの組合せが、上記発話データベースに保存されている当該対話装置およびユーザの少なくとも一方の１つの発話に含まれる複数の単語と対応するカテゴリの組合せと一致する場合、上記ユーザの発話は正しいと判定することを特徴とする請求項１から４のいずれか１項に記載の対話装置。
【請求項６】
上記正誤判定部は、
(a)上記発話補完部が補完した上記ユーザの発話の正誤をユーザに確認する当該対話装置の発話を出力し、
(b)上記発話補完部が補完した上記ユーザの発話は正しいことを認めるユーザの発話が当該対話装置に入力された場合、上記ユーザの発話は正しいと判定することを特徴とする請求項１から５のいずれか１項に記載の対話装置。
【請求項７】
ユーザと音声またはテキストで対話する対話装置の制御方法であって、
当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完ステップと、
所定の条件に基づいて、上記発話補完ステップにおいて補完した上記ユーザの発話の正誤を判定する正誤判定ステップと、
上記正誤判定ステップにおいて上記ユーザの発話は正しいと判定した場合、上記ユーザの発話の情報を、当該対話装置の発話を生成するための発話データベースに保存する発話保存ステップと、
上記発話保存ステップにおいて上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成ステップと、
を含むことを特徴とする対話装置の制御方法。
【請求項８】
請求項１〜６のいずれか１項に記載の対話装置としてコンピュータを機能させるための制御プログラムであって、上記各部としてコンピュータを機能させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話装置、対話装置の制御方法、および制御プログラムに関し、例えば、ユーザと音声またはテキストで対話する対話装置に関する。
【背景技術】
【０００２】
従来、ユーザと音声またはテキストで対話する対話装置が開発されている。例えば、特許文献１には、ユーザと音声で対話する対話装置が開示されている。対話装置の中には、ユーザの発話をデータベースに保存し、データベースに保存した過去のユーザの発話を、対話装置の発話を生成するために利用するものもある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】日本国公開特許公報「特開２０１５−８７７２８号公報（２０１５年５月７日公開）」
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ユーザの発話において、文節が省略される場合がある。例えば、「（あなたは）リンゴが好き？」と対話装置が発話した場合、ユーザは、「（私は）リンゴが好きです」と回答するのではなく、「好き」（主語の省略）、あるいは「はい」（回答の省略）等と発話する場合がある。この場合、対話装置は、ユーザの発話を、対話装置の発話を生成するために有効利用することができない場合がある。より利用価値のあるデータベースを構築するために、ユーザの発話を補完して、データベースに保存することが考えられる。しかしながら、対話装置が、ユーザの発話において省略された文節を補完した場合、補完したユーザの発話が誤りである可能性がある。すなわち、補完したユーザの発話は、ユーザの意図から外れる可能性がある。誤って補完されたユーザの発話は、対話装置の発話を生成するために有効利用できない場合がある。【０００５】
本発明は、前記の問題点に鑑みてなされたものであり、その目的は、ユーザの発話を、省略および誤りのない状態で保存することにより、対話装置の発話を生成するために、保存した過去のユーザの発話を有効利用することにある。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様に係る対話装置は、ユーザと音声またはテキストで対話する対話装置であって、当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完部と、所定の判定条件に基づき、上記発話補完部が補完した上記ユーザの発話の正誤を判定する正誤判定部と、上記ユーザの発話は正しいと上記正誤判定部が判定した場合、上記ユーザの発話の情報を発話データベースに保存する発話保存部と、上記発話保存部が上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成部と、を備える。【０００７】
また、上記の課題を解決するために、本発明の一態様に係る対話装置の制御方法は、ユーザと音声またはテキストで対話する対話装置の制御方法であって、当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完ステップと、所定の条件に基づいて、上記発話補完ステップにおいて補完した上記ユーザの発話の正誤を判定する正誤判定ステップと、上記正誤判定ステップにおいて上記ユーザの発話は正しいと判定した場合、上記ユーザの発話の情報を、当該対話装置の発話を生成するための発話データベースに保存する発話保存ステップと、上記発話保存ステップにおいて上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成ステップと、を含む。
【発明の効果】
【０００８】
本発明の一態様によれば、ユーザの発話を、省略および誤りのない状態で保存することにより、対話装置の発話を生成するために、保存した過去のユーザの発話を有効利用することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態１に係る対話装置の構成を示すブロック図である。
【図２】実施形態１に係る対話装置の制御部が実行する発話情報取得処理の流れを示すフローチャートである。
【図３】図２に示す発話情報取得処理において実行される発話生成処理の流れを示すフローチャートである。
【図４】実施形態１に係る対話装置に保存されるシナリオデータベースのデータ構造の一例を示す図である。
【図５】図２に示す発話情報取得処理において実行される発話補完処理の流れを示すフローチャートである。
【図６】図２に示す発話情報取得処理において実行される発話保存処理の流れを示すフローチャートである。
【図７】実施形態１に係る対話装置に保存される発話データベースのデータ構造の一例を示す図である。
【図８】実施形態１に係る対話装置が備えたカテゴリ表のデータ構造の一例を示す図である。
【図９】実施形態２に係る発話保存処理の流れを示すフローチャートである。
【図１０】実施形態３に係る発話確認処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
〔実施形態１〕
以下、本発明の実施の形態について、詳細に説明する。
【００１１】
（対話装置１の構成）
図１を用いて、本実施形態に係る対話装置１の構成を説明する。対話装置１は、ユーザと音声で対話する機械（例えば、ロボット）である。図１は、対話装置１の構成を示すブロック図である。なお、一変形例では、対話装置１は、ユーザとテキストで対話してもよい。
【００１２】
図１に示すように、対話装置１は、音声入力部１０、制御部２０、および音声出力部３０を備えている。また、対話装置１には、シナリオデータベース４０、発話データベース５０、およびカテゴリ表６０が保存されている。また、図示しないが、後述する音声認識部２１がユーザの音声を認識するために、認識辞書も保存されている。認識辞書は、音声入力部１０が検出する音声と、その音声が示す単語または文節との対応関係を記載している。
【００１３】
音声入力部１０は、ユーザの発話を検出して、ユーザの発話に対応する音声データを生成する。音声入力部１０は、具体的にはマイクロフォンである。音声入力部１０が検出した音声データは制御部２０に送信される。
【００１４】
制御部２０は、対話装置１の発話を生成する。また、音声入力部１０が検出したユーザの発話を音声認識し、音声認識の結果として得られたユーザの発話の情報を、発話データベース５０に保存する。図１に示すように、制御部２０は、音声認識部２１、形態素解析部２２、補完処理部２３（発話補完部）、発話生成部２４、発話保存部２５、および正誤判定部２６を含む。制御部２０の各部が行う処理については、後述する発話情報取得処理の説明中で説明する。
【００１５】
音声出力部３０は、制御部２０が生成した対話装置１の発話を、音声に変換して出力する。音声出力部３０は、具体的にはスピーカである。一変形例では、対話装置１は、対話装置１の発話を、テキストに変換して出力してもよい。
【００１６】
シナリオデータベース４０には、対話装置１の発話を生成するためのシナリオが保存されている。シナリオは、後述する質問用シナリオ（図４参照）を含む。発話データベース５０には、過去の対話装置１の発話の情報および過去のユーザの発話の情報が保存されている。カテゴリ表６０では、単語と、その単語のカテゴリとが対応付けられている。発話中の単語のカテゴリは、その発話の話題に関係する場合が多い。単語のカテゴリを、以下では、話題カテゴリと呼ぶ。シナリオデータベース４０、発話データベース５０、およびカテゴリ表６０の一例をそれぞれ後述する。なお、シナリオデータベース４０、発話データベース５０、およびカテゴリ表６０等のデータの一部または全部は、ネットワーク上に分散して保存されていてよい。また、この構成では、シナリオデータベース４０、発話データベース５０、およびカテゴリ表６０等のデータは、インターネットを通じて、定期的または不定期的に、対話装置１に提供されてもよい。また、制御部２０も、インターネット上のサーバ内にあってもよい。この構成では、サーバ内の制御部２０が、インターネット、およびホームネットワーク（例えば、無線ＬＡＮ）等を介して、対話装置１の音声入力部１０および音声出力部３０を制御してもよい。
【００１７】
（発話情報取得処理の流れ）
図２を用いて、制御部２０が実行する発話情報取得処理の流れを説明する。図２は、発話情報取得処理の流れを示すフローチャートである。
【００１８】
図２に示すように、発話情報取得処理では、まず、発話生成部２４が対話装置１の発話を生成する（Ｓ１）。あるいは、ユーザが先に対話装置１に対して発話をしてもよい。どちらの場合であっても、音声入力部１０は、ユーザの発話を検出して、ユーザの発話に対応する音声データを生成する。発話生成処理（Ｓ１）の流れを後で説明する。
【００１９】
音声認識部２１は、音声入力部１０から、ユーザの発話に対応する音声データを受信する（Ｓ２、発話取得ステップ）。音声認識部２１は、音声入力部１０から受信した音声データに対し、音声認識処理を実行することにより、ユーザの発話に対応する音声データを、テキストデータに変換する（Ｓ３）。音声認識部２１は、音声認識処理を失敗した場合、表示または音声等を用いた報知によって、ユーザに対し、再度発話することを要求してもよいし、ユーザが再度発話するまで待機してもよい。音声認識部２１は、音声認識の結果、すなわち、ユーザの発話に対応するテキストデータを、形態素解析部２２に出力する。音声認識部２１は、音声認識処理を失敗した場合であっても、音声認識の結果を形態素解析部２２に出力してもよい。なお、対話装置１がユーザとテキストで対話する機械である場合、Ｓ２において、形態素解析部２２は、ユーザが入力したテキストを受信する。また、上述したＳ３は省略される。以下では、音声認識またはユーザのテキスト入力の結果として得られるテキストデータを、ユーザの発話データと呼ぶ。
【００２０】
形態素解析部２２は、音声認識部２１から取得したユーザの発話データに対し、形態素化解析を実行する（Ｓ４）。すなわち、形態素解析部２２は、ユーザの発話を、言語として意味を持つ最小単位である形態素（例えば、単語）に分割する。なお、形態素解析は従来から存在する技術であるから、ここでは、形態素解析に関する説明を省略する。
【００２１】
続いて、形態素解析部２２は、形態素解析の結果を評価する（Ｓ５）。具体的には、形態素解析部２２は、ユーザの発話において省略された文節があるかどうかを判定する。ここで、文節は、１または複数の単語で構成される。
【００２２】
ユーザの発話において省略された文節がある場合（Ｓ６でＹｅｓ）、補完処理部２３は、直前の対話装置１の発話、および、過去のユーザの発話の少なくとも一方に基づいて、省略された文節（例えば、主語、述語、修飾語）を補完する（Ｓ７、発話補完ステップ）。なお、補完処理部２３による発話補完処理（Ｓ７）の流れを後で説明する。一方、ユーザの発話において省略された文節がない場合（Ｓ６でＮｏ）、補完処理部２３は発話補完処理を行わない。
【００２３】
発話保存部２５は、補完処理部２３から、ユーザの発話データを取得する。前述したように、ユーザの発話において省略された文節がある場合、Ｓ７において、補完処理部２３が省略された文節を補完する。したがって、発話保存部２５が取得するユーザの発話は、省略された文節がない、完全な状態である。
【００２４】
次に、発話保存部２５は、カテゴリ表６０（図８参照）を参照して、ユーザの発話に含まれる各単語の話題カテゴリを特定する。発話保存部２５は、ユーザの発話の情報に、該ユーザの発話に含まれる全ての単語の話題カテゴリの情報を、付属情報として付加する。例えば、ユーザの発話が「私はリンゴが好きです」である場合、発話保存部２５は、ユーザの発話の情報に、「リンゴ」の話題カテゴリである“果物”、および、「好き」の話題カテゴリである“嗜好”の各付属情報を付加する。発話保存部２５は、付属情報を付加したユーザの発話の情報を、発話データベース５０（図７参照）に保存する（Ｓ８、発話保存ステップ）。なお、付属情報は、対話装置１の発話を生成するために利用されてよい。例えば、発話データベース５０において、「ケーキを買った」という過去のユーザの発話の情報に、ユーザの発話が入力された時間の付属情報が付加されている場合、対話装置１は、シナリオデータベース４０から、ユーザの発話と同じ話題カテゴリのシナリオを取得して、「昨日買ったケーキをもう食べた？」といった発話や、「去年の誕生日に買ったケーキはおいしかったね」といった発話を生成することができる。また、発話データベース５０において、「ここの景色はきれいだね」という過去のユーザの発話の情報に、ユーザの発話が入力された場所および時間の付属情報が付加されている場合、対話装置１は、シナリオデータベース４０から、ユーザの発話と同じ話題カテゴリのシナリオを取得して、「先月の夕方に見た瀬戸大橋はきれいだったね」といった発話を生成することができる。
【００２５】
Ｓ７において、補完処理部２３がユーザの発話を補完した場合、補完したユーザの発話は、ユーザの意図から外れている可能性がある。例えば、ユーザが「甘い」と発話した場合、補完処理部２３は、ユーザの発話において省略された主語を補完する。しかしながら、補完処理部２３が補完する主語は、ユーザの意図する主語とは異なる可能性がある。そこで、正誤判定部２６は、所定の判定条件に基づいて、補完したユーザの発話の正誤を判定して、補完したユーザの発話が正しい場合のみ、補完したユーザの発話の情報を、発話データベース５０に保存する。正誤判定部２６は、補完したユーザの発話の正誤を、どのような判定条件に基づいて判定してもよい。例えば、正誤判定部２６は、補完したユーザの発話の正誤を判定するために、直前のユーザまたは対話装置１の発話の情報を利用してもよい。正誤判定部２６による発話保存処理（Ｓ８）の一例を後で説明する。以上で、発話情報取得処理が終了する。
【００２６】
上述した発話情報取得処理によれば、ユーザの発話を、完全な状態、つまり、文節が省略されていない状態で、発話データベース５０に保存することができる。発話データベース５０に保存された過去のユーザの発話の情報は、対話装置１の発話を生成するために利用することができる。発話データベース５０に保存されている過去のユーザの発話の情報を用いて、対話装置１の発話を生成する方法については、後で説明する。
【００２７】
（Ｓ１；発話生成処理の流れ）
図３および図４を用いて、前述した発話情報取得処理（図２参照）のＳ１、すなわち発話生成処理の流れを説明する。図３は、発話生成処理Ｓ１の流れを示すフローチャートである。図４は、シナリオデータベース４０のデータ構造の一例を示す図である。図４に示すように、シナリオデータベース４０は、対話装置１からユーザへの質問のシナリオを含む複数のシナリオを含む。なお、図示しないが、シナリオデータベース４０は、質問以外の対話装置１の発話（例えば、呼びかけ、報知等）を生成するためのシナリオをさらに含んでいてもよい。
【００２８】
図３に示すように、発話生成処理では、まず、発話生成部２４は、発話データベース５０において、直前の（つまり、発話データベース５０に保存されている過去のユーザの発話の情報の中で、最後に保存された）ユーザの発話の情報に対応付けられた話題カテゴリの情報を参照する。
【００２９】
次に、発話生成部２４は、図４に示すシナリオデータベース４０中から、直前のユーザの発話に対応付けられた話題カテゴリと同じ話題カテゴリのシナリオを検索する（Ｓ２０１）。シナリオデータベース４０中に、直前のユーザの発話に対応付けられた話題カテゴリと同じ話題カテゴリのシナリオがない場合（Ｓ２０１でＮｏ）、発話生成部２４は、シナリオデータベース４０から、直前のユーザの発話に対応する話題カテゴリとは異なる話題カテゴリ（例えば、図４の「なんでも」の話題カテゴリ）のシナリオを選択する（Ｓ２０５）。この場合、発話生成部２４が生成する対話装置１の発話の話題カテゴリは、例えば、直前のユーザの発話の話題カテゴリと類似する（すなわち、直前のユーザの発話の話題カテゴリと同じ上位概念カテゴリ（後述）に含まれる）ことが好ましい。
【００３０】
発話生成部２４は、Ｓ２０５において選択したシナリオの話題カテゴリを、対話装置１またはユーザの先の発話の話題カテゴリに置き換えることによって、対話装置１の次の発話を生成する（Ｓ２０６、発話生成ステップ）。なお、シナリオデータベース４０中に、直前のユーザの発話に対応付けられた話題カテゴリと同じ話題カテゴリのシナリオがない場合（Ｓ２０１でＮｏ）、対話装置１は、発話をせずに、相槌等の動作で、ユーザの発話に応答してもよい。あるいは、対話装置１の次の発話の話題カテゴリが、直前のユーザの発話の話題カテゴリと大きく異なる場合、発話生成部２４は、話題を変えることをユーザに伝えるための発話（例えば、「ところで」）を生成してもよい。
【００３１】
一方、シナリオデータベース４０中に、直前のユーザの発話に対応する話題カテゴリと同じ話題カテゴリのシナリオがある場合（Ｓ２０１でＹｅｓ）、発話生成部２４は、シナリオデータベース４０から、シナリオと対応付けられた条件および結果（図４参照）を抽出する（Ｓ２０２）。また、発話生成部２４は、発話データベース５０中から、Ｓ２０２において抽出したシナリオの条件を満たす対話装置１またはユーザの先の発話の情報を検索する（Ｓ２０３）。
【００３２】
発話データベース５０中に、Ｓ２０２において抽出したシナリオに対応する条件および結果と一致する対話装置１またはユーザの先の発話の情報がない場合（Ｓ２０３でＮＯ）、発話生成部２４は、シナリオデータベース４０から、直前のユーザの発話に対応する話題カテゴリとは異なる話題カテゴリのシナリオを選択する（Ｓ２０５）。一方、発話データベース５０中、Ｓ２０２において抽出したシナリオに対応する条件および結果と一致する対話装置１またはユーザの先の発話の情報がある場合（Ｓ２０３でＹＥＳ）、発話生成部２４は、抽出したシナリオの中から、いずれかのシナリオを選択する（Ｓ２０４）。その後、発話生成部２４は、Ｓ２０４またはＳ２０５において選択したシナリオの話題カテゴリを、対話装置１またはユーザの先の発話の話題カテゴリに置き換えることによって、対話装置１の次の発話を生成する（Ｓ２０６、発話生成ステップ）。以上で、発話生成処理は終了する。
【００３３】
（Ｓ７；発話補完処理の流れ）
図５を用いて、前述した発話情報取得処理（図２参照）のＳ７、すなわち発話補完処理の流れを説明する。図５は、発話補完処理Ｓ７の流れを示すフローチャートである。
【００３４】
図５に示すように、発話補完処理では、まず、補完処理部２３は、形態素解析部２２による形態素解析の結果として得られたユーザの発話において、主語が省略されたかどうかを判定する（Ｓ３０１）。ユーザの発話において、主語が省略された場合（Ｓ３０１でＹｅｓ）、補完処理部２３は、ユーザの発話に主語を補完する（Ｓ３０２）。
【００３５】
具体的には、補完処理部２３は、発話データベース５０を参照して、直前の（つまり、発話データベース５０に保存されている過去の対話装置１の発話の情報の中で、最後に保存された）対話装置１の発話の情報を取得する。そして、直前の対話装置１の発話の主語に基づいて、ユーザの発話の主語を補完する。例えば、対話装置１が図４に示すシナリオデータベース４０の“シナリオ２”にしたがって「あなたはブドウが好きですか」と発話した後、ユーザが「それ（ブドウ）が好きです」と発話した場合、補完処理部２３は、ユーザの発話において省略された主語「あなた」を補完して、「ＸＸ（ユーザの登録名）はブドウが好きです」という、補完したユーザの発話を生成してよい。あるいは、補完処理部２３は、補完したユーザの発話にユーザの登録名を含めずに、「ブドウが好きです」という発話を生成してもよい。また、別の例では、ユーザが「リンゴは美味しい」と発話した後、「大好き」と発話した場合、補完処理部２３は、ユーザの「大好き」という発話を、「リンゴは美味しい」というユーザの先の発話に基づいて、「リンゴは大好き」という補完したユーザの発話を生成してよい。この例のように、補完処理部２３は、対話装置１の質問以外の（対話装置１またはユーザの）先の発話に基づいて、ユーザの発話を補完してもよい。一変形例では、シナリオデータベース４０において、各シナリオに対し、ユーザの発話を補完するための補完用シナリオが対応付けられている場合、補完処理部２３は、補完用シナリオにしたがって、ユーザの発話を補完してもよい。例えば、補完用シナリオでは、文の一部の品詞（単語）または文節が空白になっており、ユーザの発話に基づいて、空白が埋められることで、補完したユーザの発話に対応する一文が完成するように構成されていてよい。
【００３６】
ユーザの発話において、主語が省略されていない場合（Ｓ３０１でＮｏ）、補完処理部２３は、次に、ユーザの発話において、述語が省略されたかどうかを判定する（Ｓ３０３）。ユーザの発話において、述語が省略された場合（Ｓ３０３でＹｅｓ）、補完処理部２３は、直前の対話装置１の発話に基づいて、ユーザの発話に述語を補完する（Ｓ３０４）。例えば、直前の対話装置１の発話が、「あなたはブドウが好きですか？」であり、ユーザが「私は好きです」と発話した場合、補完処理部２３は、「ＸＸ（ユーザの登録名）はブドウが好きです」という補完したユーザの発話を生成する。なお、図示しないが、補完処理部２３は、ユーザの発話に修飾語を補完する工程をさらに行ってもよい。
【００３７】
ユーザの発話において、述語が省略されていない場合（Ｓ３０３でＮｏ）、補完処理部２３は、次に、ユーザの発話において、回答が省略されたかどうかを判定する（Ｓ３０５）。つまり、補完処理部２３は、ユーザの発話が「はい」またはその他の肯定であるか、「いいえ」またはその他の否定であるかを判定する。ユーザの発話において、回答が省略された場合（Ｓ３０５でＹｅｓ）、補完処理部２３は、発話データベース５０（図７参照）を参照して、直前の対話装置１の発話の情報を取得する。そして、直前の対話装置１の発話に基づいて、ユーザの発話を補完する（Ｓ３０６）。例えば、直前の対話装置１の発話が「あなたはブドウが好きですか？」であり、ユーザが「いいえ」（否定）と発話した場合、補完処理部２３は、「ＸＸ（ユーザの登録名）はブドウが嫌いです」という補完したユーザの発話を生成する。
【００３８】
ユーザの発話において、いずれの文節も省略されていない場合（Ｓ３０５でＮｏ）、補完処理部２３は、ユーザの発話に対する発話補完処理を行わない。
【００３９】
（Ｓ８；発話保存処理の流れ）
図６を用いて、前述した発話情報取得処理のＳ８、すなわち発話保存処理の流れを説明する。図６は、発話保存処理Ｓ８の流れを示すフローチャートである。以下では、補完処理部２３がユーザの発話を補完した場合の発話保存処理の流れを説明する。
【００４０】
図６に示すように、発話保存処理では、まず、正誤判定部２６は、発話データベース５０から、補完処理部２３が補完したユーザの発話に含まれる単語の話題カテゴリと同じ話題カテゴリと対応付けられた過去のユーザの発話の情報を検索する（Ｓ４０１、正誤判定ステップ）。
【００４１】
正誤判定部２６は、補完したユーザの発話に含まれる単語の話題カテゴリと同じ話題カテゴリと対応付けられた過去のユーザの発話の情報を発見しなかった場合（Ｓ４０２でＮｏ）、補完したユーザの発話は誤りであると判定する。この場合、発話保存部２５は、補完したユーザの発話の情報を発話データベース５０に保存しない（Ｓ４０３）。ただし、正誤判定部２６が補完したユーザの発話は誤りであると判定した場合、補完したユーザの発話の適否をユーザに確認してもよい。この構成では、ユーザが補完したユーザの発話は適切であると回答した場合、発話保存部２５は、正誤判定部２６が誤りであると判定した補完したユーザの発話も発話データベース５０に保存する。なお、この構成については、後の実施形態３で説明する。
【００４２】
一方、正誤判定部２６は、補完したユーザの発話に含まれる単語の話題カテゴリと同じ話題カテゴリと対応付けられた過去のユーザの発話の情報を発見した場合（Ｓ４０２でＹｅｓ）、補完したユーザの発話は正しいと判定する。この場合、発話保存部２５は、補完処理部２３が補完したユーザの発話の情報を発話データベース５０に保存する（Ｓ４０４）。なお、発話情報取得処理のＳ７において、補完処理部２３がユーザの発話を補完しなかった場合、正誤判定部２６は、ユーザの発話の正誤を判定せず、発話保存部２５は、補完しないユーザの発話を保存してよい。
【００４３】
（変形例）
一変形例では、正誤判定部２６は、補完したユーザの発話が、どんな話題カテゴリに関するかという条件に加えて、だれ（どのユーザ）が発話したかという条件に基づいて、補完したユーザの発話の正誤を判定してもよい。本変形例の構成によれば、補完したユーザの発話の正誤を判定する条件の数が増えるので、補完したユーザの発話の正誤をより正確に判定することができる。
【００４４】
本変形例では、正誤判定部２６は、補完したユーザの発話の話題カテゴリと同じ話題カテゴリと対応付けられた過去のユーザの発話の情報を発話データベース５０から発見することができた場合（図６のＳ４０２でＹｅｓ）、発見した過去のユーザの発話の情報に付加された付属情報を参照して、発見した過去のユーザの発話が、だれ（つまり、どのユーザ）の発話であるかを特定する。そして、正誤判定部２６は、発話したユーザと、発見した過去のユーザの発話との間で、発話をしたユーザ（だれ）が一致する場合に、補完したユーザの発話は正しいと判定する。なお、正誤判定部２６は、発見した過去の発話がだれの発話であるかを特定するために、例えば、対話装置１に予め登録されたユーザの識別情報（登録名または登録番号など）を参照してもよい。
【００４５】
（発話データベース５０の一例）
図７は、対話装置１および過去のユーザの発話の情報が保存された発話データベース５０のデータ構造の一例を示す図である。ここで、図７に示す発話データベース５０の“Ｗｈｏ”の項目に記載した「ロボット」は、対話装置１に対応する。図７に示すように、発話データベース５０には、ロボット（すなわち、対話装置１）およびユーザによる各発話の情報が保存されている。また、図７に示す発話データベース５０では、ロボットおよびユーザによる各発話の情報に対し、“Ｗｈｅｎ”（発話された日時）、“Ｗｈｅｒｅ”（発話された場所）、“Ｗｈｏ”（発話の主体）、および“Ｗｈａｔ”（発話と対応付けられた話題カテゴリ）についての各付属情報が付加されている。なお、図７において、各発話の情報には、複数の話題カテゴリ（“Ｗｈａｔ”）の情報が、付属情報として付加されている。また、図７において、ある発話の話題カテゴリ（“Ｗｈａｔ”）の項目に記載された“Ａ＝Ｂ”は、上記ある発話が、話題カテゴリの“Ａ”と対応付けられた１つの単語、および話題カテゴリの“Ｂ”と対応付けられた他の単語を含むことを示す。また、他の発話の話題カテゴリ（“Ｗｈａｔ”）の項目に記載された“ＡＢ＝Ｃ”は、上記ある発話が、話題カテゴリの“Ａ”および“Ｂ”と対応付けられた１つの単語、および話題カテゴリの“Ｃ”と対応付けられた他の単語を含むことを示す。
【００４６】
図示しないが、発話データベース５０において、過去のユーザの発話の情報には、その発話が、どのような手段（音声入力か、またはテキスト入力か）で対話装置１に入力されたかを示す付属情報、または、その発話がどのような状態（補完されたか、または補完されなかったか）で発話データベース５０に保存されたかを示す付属情報が付加されてもよい。
【００４７】
（カテゴリ表６０の一例）
図８は、単語と該単語の話題カテゴリとの対応関係を示すカテゴリ表６０のデータ構造の一例を示す図である。例えば、図８では、“リンゴ”という単語に対し、“果物”という話題カテゴリが対応付けられている。図８に示すカテゴリ表６０では、各単語にそれぞれ１つの話題カテゴリが対応付けられているが、各単語の情報には、１または複数の話題カテゴリの情報が対応付けられていてよい。
【００４８】
また、話題カテゴリには包含関係があってもよい。すなわち、ある話題カテゴリに対応付けられた単語は、他の話題カテゴリ（上位概念カテゴリ）に対応付けられた単語の一部であってもよい。例えば、図８に示す話題カテゴリの“甘み”、“酸味”、および“うま味”は、図示しない上位概念カテゴリの“味覚”に含まれていてもよい。同じ上位概念カテゴリに含まれる話題カテゴリ同士（“甘み”と“酸味”、“甘み”と“うま味”など）は類似する。前述した発話生成部２４は、対話装置１の発話を生成する際、直前のユーザの発話の話題カテゴリと同じかまたは類似する話題カテゴリのシナリオにしたがって、対話装置１の発話を生成することが好ましい。
【００４９】
〔実施形態２〕
前記実施形態１の発話保存処理Ｓ８において、正誤判定部２６は、補完したユーザの発話に含まれる単語の話題カテゴリが、過去のユーザの発話の話題カテゴリと一致する場合に、補完したユーザの発話は正しいと判定した（図６参照）。本実施形態では、正誤判定部２６が、前記実施形態１で説明した方法とは異なる方法で、補完したユーザの発話の正誤を判定する構成を説明する。
【００５０】
（Ｓ８；発話保存処理の流れ）
図９を用いて、本実施形態に係る発話保存処理Ｓ８の流れを説明する。図９は、本実施形態に係る発話保存処理の流れを示すフローチャートである。以下では、補完処理部２３がユーザの発話を補完した場合の発話保存処理の流れを説明する。
【００５１】
図９に示すように、本実施形態に係る発話保存処理では、まず、正誤判定部２６は、発話データベース５０において、直前の（つまり、発話データベース５０に保存されている過去の対話装置１の発話の情報の中で、最後に保存された）対話装置１の発話と対応付けられた話題カテゴリの組合せの情報を参照する（Ｓ５０１）。
【００５２】
補完したユーザの発話に含まれる複数の単語の話題カテゴリの組合せが、直前の対話装置１の発話と対応付けられた話題カテゴリの組合せと同じでない場合（Ｓ５０２でＮｏ）、発話保存部２５は、補完したユーザの発話の情報を発話データベース５０に保存しない（Ｓ５０３）。なお、実施形態３で説明するように、正誤判定部２６が補完したユーザの発話は誤りであると判定した場合、補完したユーザの発話の適否をユーザに確認してもよい。この構成では、ユーザが補完したユーザの発話は適切であると回答した場合、発話保存部２５は、正誤判定部２６が誤りであると判定した補完したユーザの発話も発話データベース５０に保存する。
【００５３】
一方、補完したユーザの発話に含まれる複数の単語の話題カテゴリの組合せが、直前の対話装置１の発話と対応付けられた話題カテゴリの組合せと同じである場合（Ｓ５０２でＹｅｓ）、発話保存部２５は、補完したユーザの発話の情報を発話データベース５０に保存する（Ｓ５０４）。なお、発話情報取得処理のＳ７において、補完処理部２３がユーザの発話を補完しなかった場合、正誤判定部２６は、ユーザの発話の正誤を判定してもよいし、しなくてもよい。正誤判定部２６がユーザの発話の正誤を判定しない場合、発話保存部２５は、補完されていないユーザの発話を保存してもよい。
【００５４】
対話装置１とユーザとが同一の話題に関して対話を継続している場合、ユーザの発話は、直前の対話装置１の発話と関連性が高い。一方、ユーザが話題を切り替えた場合、ユーザの発話は、直前の対話装置１の発話と関連性が低い。前述したように、補完処理部２３は、直前の対話装置１の発話に基づいて、ユーザの発話を補完するので、前者の場合には、ユーザの発話を正しく補完することができる可能性が高いが、後者の場合には、ユーザの発話を正しく補完することができる可能性が低い。本実施形態の構成によれば、補完したユーザの発話に含まれる単語の話題カテゴリが、直前の対話装置１の発話に含まれる単語の話題カテゴリと同じである場合、すなわち、前者の場合のみ、発話保存部２５は、補完したユーザの発話を発話データベース５０に保存する。したがって、発話保存部２５は、正しく補完された可能性が高いユーザの発話の情報のみを、発話データベース５０に保存することができる。
【００５５】
なお、本実施形態で説明した発話保存処理と、前記実施形態１で説明した発話保存処理とを組み合わせてもよい。例えば、正誤判定部２６は、まず、前記実施形態１で説明したように、補完したユーザの発話に含まれる単語の話題カテゴリが、過去のユーザの発話の話題カテゴリと一致するか否かを判定する。補完したユーザの発話に含まれる単語の話題カテゴリが、過去のユーザの発話の話題カテゴリと一致する場合、正誤判定部２６は、補完したユーザの発話は正しいと判定する。一方、補完したユーザの発話に含まれる単語の話題カテゴリが、過去のユーザの発話の話題カテゴリと一致しない場合、正誤判定部２６は、本実施形態で説明した方法で、補完したユーザの発話の正誤をさらに判定する。この構成では、正誤判定部２６は、補完したユーザの発話の正誤をより正確に判定することができる。
【００５６】
〔実施形態３〕
本実施形態では、前記実施形態１および２で説明した発話情報取得処理（図２参照）の発話保存処理Ｓ８において、発話保存部２５が、補完したユーザの発話を保存しないことを決定した場合、発話生成部２４が、補完したユーザの発話の正誤をユーザに確認する構成を説明する。
【００５７】
（発話確認処理）
図１０を用いて、本実施形態に係る発話確認処理の流れを説明する。前記実施形態１または２で説明した発話保存処理（図６および図９参照）において、発話保存部２５が、補完したユーザの発話を保存しないことを決定した場合、制御部２０は、以下で説明する発話確認処理を実行する。
【００５８】
図１０に示すように、発話確認処理では、まず、発話生成部２４は、シナリオデータベース４０から、補完したユーザの発話に含まれる単語の話題カテゴリと同じ話題カテゴリまたは類似する話題カテゴリのシナリオを検索する（Ｓ６０１）。
【００５９】
発話生成部２４が、シナリオデータベース４０から、補完したユーザの発話に含まれる単語の話題カテゴリと同じ話題カテゴリのシナリオを発見しなかった場合（Ｓ６０２でＮｏ）、発話生成部２４は、ユーザの発話の話題カテゴリに基づいて、対話装置１の発話を生成する（Ｓ６０３）。例えば、補完したユーザの発話が「レモンは甘い」であった場合、発話生成部２４は、「レモン」の話題カテゴリ（例えば、果物）および「甘い」の話題カテゴリ（例えば、甘み）に基づいて、対話装置１の発話を生成する。例えば、発話生成部２４は、対話装置１の発話として、「レモンは甘いの？」を生成してもよい。また、補完しないユーザの発話が「甘い」であった場合、形態素解析部２２が、ユーザの発話に対する形態素解析を実行することにより、ユーザの発話において主語（［何］）が省略されたことを特定する。そして、発話生成部２４は、形態素解析部２２による形態素解析の結果と、ユーザの発話である「甘い」の話題カテゴリとに基づいて、対話装置１の発話として、「何が甘いの？」を生成してもよい。
【００６０】
また、発話生成部２４が、シナリオデータベース４０から、補完したユーザの発話と同じ話題カテゴリの質問用シナリオを発見した場合（Ｓ６０２でＹｅｓ）、発話生成部２４は、発見した質問用シナリオにしたがって、対話装置１の発話を生成する（Ｓ６０４）。例えば、補完したユーザの発話が「レモンは甘い」である場合、発話生成部２４は、シナリオデータベース４０から、「レモン」および「甘い」に対応する話題カテゴリ（例えば、果物、甘み、酸味、うま味等）の質問用シナリオを取得する。そして、発話生成部２４は、取得した質問用シナリオにしたがって、対話装置１の発話を生成してもよい。例えば、発話生成部２４が取得した質問用シナリオが「［Ａ］は［Ｂ］なの？」である場合、発話生成部２４は、上記［Ａ］を「レモン」に置き換え、上記［Ｂ］を「甘い」に置き換えることによって、対話装置１の発話として、「レモンは甘いの？」を生成してよい。
【００６１】
発話生成部２４は、このようにして生成した対話装置１の発話（質問）を、音声出力部３０に出力させる（Ｓ６０５）。その後の一定時間、対話装置１の制御部２０は、対話装置１の発話に対するユーザの返答を待つ。
【００６２】
対話装置１が発話をしてから一定時間、ユーザが返答をしなかった場合（Ｓ６０６でＮｏ）、発話保存処理は終了する。一方、ユーザが返答をした場合（Ｓ６０６でＹｅｓ）、正誤判定部２６は、ユーザの返答が肯定（「はい」、「うん」等）であるか、それとも否定（「いいえ」「ちがう」等）であるかを判定する（Ｓ６０７）。ユーザの返答が肯定である場合（Ｓ６０７でＹｅｓ）、発話保存部２５は、補完したユーザの発話を発話データベース５０に保存する（Ｓ６０８）。一方、ユーザの返答が否定である場合（Ｓ６０７でＮｏ）、発話保存部２５は、補完したユーザの発話を発話データベース５０に保存しない。
【００６３】
本実施形態の構成によれば、正誤判定部２６が、補完したユーザの発話は誤りであると判定した場合、発話生成部２４は、補完したユーザの発話の正誤をユーザに確認する。そして、ユーザが、補完したユーザの発話は正しいと返答した場合に、発話保存部２５は、ユーザの発話を発話データベース５０に保存する。そのため、補完したユーザの発話の正誤をより正確に判定することができる。また、誤りでない（つまり、正しい）ユーザの発話の情報が発話データベース５０に保存されない可能性を低減することができる。
【００６４】
〔ソフトウェアによる実現例〕
対話装置１の制御部２０は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【００６５】
後者の場合、対話装置１は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００６６】
〔まとめ〕
本発明の態様１に係る対話装置（１）は、ユーザと音声またはテキストで対話する対話装置であって、当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完部（補完処理部２３）と、所定の判定条件に基づき、上記発話補完部が補完した上記ユーザの発話の正誤を判定する正誤判定部（２６）と、上記ユーザの発話は正しいと上記正誤判定部が判定した場合、上記ユーザの発話の情報を発話データベース（５０）に保存する発話保存部（２５）と、上記発話保存部が上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成部（２４）と、を備える。
【００６７】
上記の構成によれば、対話装置に入力されたユーザの発話の情報を用いて、対話装置の発話を生成することができる。また、ユーザの発話に不足している文節がある場合、該ユーザの発話は補完される。したがって、発話データベースには、文節が不足していない完全なユーザの発話の情報が保存される。これにより、対話装置は、発話データベースに保存されているユーザの発話を有効に利用して、対話装置の発話を生成することができる。
【００６８】
本発明の態様２に係る対話装置は、上記態様１において、上記発話補完部は、当該対話装置およびユーザの少なくとも一方の上記先の発話に含まれる単語に基づいて、上記ユーザの発話を補完してもよい。なお、発話データベースに、対話装置およびユーザの両方の発話の情報が保存される場合、発話補完部は、発話データベースに最後に保存された対話装置またはユーザの発話に基づいて、ユーザの発話を補完してもよい。
【００６９】
上記の構成によれば、過去の対話装置とユーザとの対話の話題に基づいて、ユーザの発話を簡単に補完することができる。例えば、対話装置およびユーザの少なくとも一方が、ある単語に関係する話題を先に発話していた場合、続くユーザの発話にも上記ある単語が含まれる可能性が高い。したがって、ユーザの発話に上記ある単語を補完した場合、補完したユーザの発話は正しい可能性が高い。
【００７０】
本発明の態様３に係る対話装置は、上記態様１または２において、上記正誤判定部は、(a)単語と該単語のカテゴリとの対応関係を示す情報を参照して、(b)上記発話補完部が補完した上記ユーザの発話に含まれる単語のカテゴリが、上記対話装置およびユーザの少なくとも一方の上記先の発話に含まれる単語のカテゴリと一致する場合、上記ユーザの発話は正しいと判定してもよい。
【００７１】
上記の構成によれば、補完したユーザの発話の正誤を簡単に判定することができる。そのため、正しい可能性が高いユーザの発話の情報のみを、発話データベースに選択的に保存することができる。
【００７２】
本発明の態様４に係る対話装置は、上記態様１から３のいずれかにおいて、上記発話保存部は、上記ユーザの発話とともに、(i)上記ユーザの発話に含まれる１または複数の単語のカテゴリを示す情報、(ii)上記ユーザの発話が入力された日時または場所を示す情報、および、(iii)上記ユーザの識別情報のうちの少なくとも１つを、上記発話データベースに保存してもよい。
【００７３】
上記の構成によれば、発話データベースに保存された上記情報を利用して、ユーザの発話の正誤を判定する精度を向上させることができる。
【００７４】
本発明の態様５に係る対話装置は、上記態様１から４のいずれかにおいて、上記正誤判定部は、(a)単語と該単語のカテゴリとの対応関係を示す情報を参照して、(b)上記発話補完部が補完した上記ユーザの発話に含まれる複数の単語と対応するカテゴリの組合せが、上記発話データベースに保存されている当該対話装置およびユーザの少なくとも一方の１つの発話に含まれる複数の単語と対応するカテゴリの組合せと一致する場合、上記ユーザの発話は正しいと判定してもよい。
【００７５】
上記の構成によれば、対話装置およびユーザの少なくとも一方の先の発話に含まれる複数の単語のカテゴリの組合せに基づいて、ユーザの発話の正誤をより正確に判定することができる。
【００７６】
本発明の態様６に係る対話装置は、上記態様１から５のいずれかにおいて、上記正誤判定部は、(a)上記発話補完部が補完した上記ユーザの発話の正誤をユーザに確認する当該対話装置の発話を出力し、(b)上記発話補完部が補完した上記ユーザの発話は正しいことを認めるユーザの発話が当該対話装置に入力された場合、上記ユーザの発話は正しいと判定してもよい。
【００７７】
上記の構成によれば、補完したユーザの発話の正誤をより正確に判定することができる。
【００７８】
本発明の態様７に係る対話装置の制御方法は、ユーザと音声またはテキストで対話する対話装置（１）の制御方法であって、当該対話装置に入力されたユーザの発話に不足している文節がある場合、当該対話装置およびユーザの少なくとも一方の先の発話に基づいて、上記ユーザの発話を補完する発話補完ステップと、所定の条件に基づいて、上記発話補完ステップにおいて補完した上記ユーザの発話の正誤を判定する正誤判定ステップと、上記正誤判定ステップにおいて上記ユーザの発話は正しいと判定した場合、上記ユーザの発話の情報を、当該対話装置の発話を生成するための発話データベース（５０）に保存する発話保存ステップと、上記発話保存ステップにおいて上記発話データベースに保存した上記ユーザの発話を用いて、当該対話装置の発話を生成する発話生成ステップと、を含む。上記の構成によれば、上記態様１に係る対話装置と同様の効果を奏することができる。
【００７９】
本発明の各態様に係る対話装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記対話装置が備える各部（ソフトウェア要素）として動作させることにより上記対話装置をコンピュータにて実現させる対話装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【００８０】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。
【符号の説明】
【００８１】
１  対話装置
２３  補完処理部（発話補完部）
２４  発話生成部
２５  発話保存部
２６  正誤判定部
５０  発話データベース
【図１】
0006715943.tif 000002
【図２】
0006715943.tif 000003
【図３】
0006715943.tif 000004
【図４】
0006715943.tif 000005
【図５】
0006715943.tif 000006
【図６】
0006715943.tif 000007
【図７】
0006715943.tif 000008
【図８】
0006715943.tif 000009
【図９】
0006715943.tif 000010
【図１０】
0006715943.tif 000011