以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
第一実施形態では、この発明の基本的な考え方を抽出した一般的な実施形態を説明し、第二実施形態以降では、この発明の考え方を応用した具体的な実施形態を、具体例を挙げながら説明する。
<第一実施形態>
第一実施形態の対話システムは、複数台の人型ロボットが協調してユーザとの対話を行うシステムである。すなわち、第一実施形態の対話システムは、エージェントが人型ロボットである場合の一例である。対話システム10は、図1に示すように、入力部1、音声認識部2、発話決定部3、音声合成部4、および提示部5を備える。この対話システム10が後述する各ステップの処理を行うことにより第一実施形態の対話方法が実現される。なお、図1に示すように、対話システム10の音声認識部2、発話決定部3、音声合成部4による部分を第一実施形態の対話装置11とする。
対話装置は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。対話装置は、例えば、中央演算処理装置の制御のもとで各処理を実行する。対話装置に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて読み出されて他の処理に利用される。また、対話装置の各処理部の少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
入力部1は、ユーザの発話を対話システムが取得するためのインターフェースである。言い換えれば、入力部1は、ユーザが発話を対話システムへ入力するためのインターフェースである。例えば、入力部1はユーザの発話音声を収音して音声信号とするマイクロホンである。入力部1で収音したユーザの発話音声の音声信号は、音声認識部2へ入力される。
音声認識部2は、入力部1で収音したユーザの発話音声の音声信号をユーザの発話内容を表すテキストに変換する。ユーザの発話内容を表すテキストは、発話決定部3へ入力される。音声認識の方法は既存のいかなる音声認識技術を用いてもよく、利用環境等に合わせて最適なものを適宜選択すればよい。
発話決定部3は、入力されたユーザの発話内容を表すテキストに基づいて、対話システムからの発話内容を表すテキストを決定する。発話決定部3が決定した発話内容を表すテキストは音声合成部4へ入力される。
音声合成部4は、発話決定部3が決定した発話内容を表すテキストを、発話内容を表す音声信号に変換する。発話内容を表す音声信号は、提示部5へ入力される。音声合成の方法は既存のいかなる音声合成技術を用いてもよく、利用環境等に合わせて最適なものを適宜選択すればよい。
提示部5は、発話決定部3が決定した発話内容をユーザへ提示するためのインターフェースである。例えば、提示部5は、人間の形を模して製作された人型ロボットである。この人型ロボットは、発話決定部3が決定した発話内容を表すテキストが音声合成部4により音声信号に変換された発話内容を表す音声信号を、例えば頭部に搭載したスピーカから発音する、すなわち、発話を提示する。提示部5を人型ロボットとした場合には、対話に参加する人格ごとに一台の人型ロボットを用意する。以下では、二人の人格が対話に参加する例として、二台の人型ロボット5−1および5−2が存在するものとする。
入力部1は提示部5と一体として構成してもよい。例えば、提示部5を人型ロボットとした場合、人型ロボットの頭部にマイクロホンを搭載し、入力部1として利用することも可能である。
以下、図2を参照して、第一実施形態の対話方法の処理手続きを説明する。
ステップS1において、対話システムは、複数の発話を複数の人型ロボット5−1及び5−2に分散させて提示する。すなわち、対話システムは、複数の発話のそれぞれについて、発話内容を表す音声を人型ロボット5−1及び5−2の何れかのスピーカから出力する。より具体的には、人型ロボット5−1は、対話システムが提示する複数の発話のうち、少なくとも一つの発話の内容を表す音声信号をスピーカから出力し、人型ロボット5−2は、対話システムが提示する複数の発話のうち、人型ロボット5−1が出力した発話を除く、少なくとも一つの発話の内容を表す音声をスピーカから出力する。人型ロボット5−1と人型ロボット5−2が発話内容を表す音声を出力する順番は限定されず、人型ロボット5−2が人型ロボット5−1より先に発話内容を表す音声を出力してもよい。人型ロボット5−1の発話と人型ロボット5−2の発話との間にユーザの発話を受け付けるステップが実行されてもよい。
対話システムが提示する発話の内容を表すテキストは、発話決定部3が、例えば、予め定められ発話決定部3内の図示しない記憶部に記憶された定型文から任意に選択してもよいし、直前までの発話内容に応じて決定してもよい。直前までの発話内容に応じて発話内容を決定する技術は、従来の対話システムにおいて用いられているものを利用すればよく、例えば、非特許文献1に記載されたシナリオ対話システムや非特許文献2または3に記載された雑談対話システムなどを用いることができる。発話決定部3がシナリオ対話システムにおいて用いられている技術を用いる場合は、例えば、発話決定部3は、直前の5発話程度を含む対話について、各発話に含まれる単語や各発話を構成する焦点語と発話決定部3内の図示しない記憶部に記憶された各シナリオに含まれる単語や焦点語との単語間距離が所定の距離より近いシナリオを選択し、選択したシナリオに含まれるテキストを選択することにより対話システムが提示する発話の内容を表すテキストを決定する。発話決定部3が雑談対話システムにおいて用いられている技術を用いる場合は、発話決定部3は、例えば、ユーザの発話に含まれる単語をトリガーとして、あらかじめ記述して発話決定部3内の図示しない記憶部に記憶しておいたルールに従って対話システムが提示する発話の内容を表すテキストを決定してもよいし、ユーザの発話に含まれる単語と共起関係や係り受け関係にある単語に基づいて自動的にルールを生成し、そのルールに従って対話システムが提示する発話の内容を表すテキストを決定してもよい。
対話システム10は、各発話を提示する人型ロボットを、複数の人型ロボットからランダムに選択してもよいし、複数の人型ロボットから同じ人型ロボットが連続して出力しないように制御して選択してもよい。また、対話システムが提示する複数の発話が、発話決定部3がシナリオ対話システムにおいて用いられている技術により選択したシナリオに沿って決定するものであって、いずれかの発話を提示する人型ロボットがシナリオにより指定される場合には、対話システム10は、提示する人型ロボットが指定されていない発話のみを複数の人型ロボットに分散して出力すればよい。
例えば、対話システムが複数の質問をユーザへ行う場合には、人型ロボット5−1が複数の質問に含まれる第一の質問の内容を表す音声をスピーカから出力し、ユーザがその第一の質問に対する返答を発話した後に、人型ロボット5−2が複数の質問に含まれる第二の質問の内容を表す音声をスピーカから出力する。これにより、一台の人型ロボットが第一の質問も第二の質問も提示する場合と比較して、一人に質問攻めにされているような負担感が軽減する。
また、例えば、人型ロボット5−1が質問の内容を表す音声をスピーカから出力し、人型ロボット5−2がその質問に対する返答の内容を表す音声を、ユーザの返答の前にスピーカから出力する。これにより、人型ロボットとユーザが一対一で対話する場合と比較して、「何か質問をされたら発話しなければいけない」という負担感が軽減する。このとき、人型ロボット5−2が、人型ロボット5−1の質問に対する回答をユーザがしやすいようにサポートする発話の内容を表す音声をスピーカから出力してもよい。これにより、「ロボットが望む内容の発話をしなければいけない」という負担感が軽減する。
<第二実施形態>
第二実施形態の対話システムおよび方法は、対話システムから出力する複数の発話を、人型ロボット5−1が曖昧語を含む発話を行い、人型ロボット5−2が具体語を含む発話を行うように分散する。この場合、ユーザは曖昧語を含む発話には答える必要がないため、「必ず発話しなければいけない」という負担感が軽減する。
第二実施形態の対話システムでは、ユーザと対話する対話システムであって、複数のロボットである人型ロボット5−1と人型ロボット5−2とを備える対話システムに、対話システムが決定する発話文(元の発話文)をそのまま発話させるのではなく、元の発話文の少なくとも一部を曖昧化する、または/および、元の発話文に含まれる語を当該語の意味を有さない語に置き換えることにより生成した文(以下、これらの方法により生成した文を「曖昧化した文」ともいう)に変換し、変換した文をあるロボットに発話させる。そしてその後に、一意に解釈できていないことを表出する文を他のロボットに発話させる、または/および、曖昧化した文を発話したロボットに元の発話文を発話させる(言い直しさせる)。このようにすれば、対話システムが生成する発話文を増やさずに、ユーザに納得感を与えるロボットの発話を増やすことができ、結果としてユーザと対話システムとの対話のターンを増やすことができる。曖昧化した文とは、例えば、元の発話文の一部を(i)指示語で置換した文、(ii)言い間違った語で置換した文、あるいは(iii)省略した文等である。なお、(i)指示語で置換した文の場合、すなわち、元の発話文を提示することなく元の発話文の一部を指示語で置換した文を提示した場合には、指示語が何を意味するのかにより、二つ以上の意味に解釈される。(ii)言い間違った語で置換した文の場合、すなわち、元の発話文を提示することなく元の発話文の一部を言い間違った語で置換した文を提示した場合には、少なくとも(a)前後の文脈を考慮して、言い間違いのない本来の意味に解釈可能な文と、(b)言い間違った語で置換した文との二つの意味に解釈される。なお、言い間違った語が元の言葉とあまりにも違うと、対話感に影響が出るので、以下に例示するように、元の言葉と一音違う意味のある言葉等、音が似ている語を言い間違った語として用いることが望ましい。(iii)省略した文の場合、すなわち、元の発話文を提示することなく元の発話文の一部を省略した文を提示した場合には、省略した部分に何が補われるのかにより、二つ以上の意味に解釈される。以下、元の発話文と変換した発話文の例を示す。
元の発話文:「『車』、燃費が大事だよね」
(i)指示語で置換した文:「『あれ』、燃費が大事だよね」
(ii)言い間違った語で置換した文:「『くるみ』、燃費が大事だよね」
(iii)省略した文:「『省略』燃費が大事だよね」
対話のターンを増やすために、この実施形態の対話システムにおいては、ある人型ロボット5−1に発話させるために生成された発話文を、曖昧化した文に変換し、曖昧化した文を人型ロボット5−1が発話する。そして、人型ロボット5−1による曖昧化した文の発話の後に、曖昧化した文の内容を確認する発話文を別の人型ロボット5−2が発話する。ただし、対話システムに人型ロボット5−1一体しか含まれない場合は、人型ロボット5−1による曖昧化した文の発話の後に、人型ロボット5−1自身が曖昧化した文の内容を確認する発話文を発話してもよい。
なお、ユーザと対話システムとの対話中の任意のタイミングで曖昧化した文の発話を挿入してよいが、対話が長くなりすぎないように留意する必要があり、元の発話をそのまま発しても、ユーザがロボットの発話を理解あるいはそれに共感を持ちにくいと判断される場合に曖昧化した文の発話を挿入すると特に効果的である。例えば、(A)対話システムが話題を転換する(例えば、シナリオ対話を開始する)タイミング、(B)対話システムの発話に対するユーザの返答が対話システムの予測する返答からはずれているとき、(C)対話システムが話題の変化を検出したとき、などにロボットに曖昧化した文の発話させるとよい。対話システムが話題の変化を検出する方法としては、例えば、対話中の文や単語を利用して、(a)word2vecを利用した話題語間の距離、(b)文全体の単語をword2vecにかけて平均を取った場合の文間距離、(c)単語のcos類似度などを求め、距離が所定の値以上の場合またはcos類似度が所定の値以下の場合(要は、二つの発話が関連していない、または、二つの発話の関連が薄いことを所定の指標が示している場合)、話題が変化したと判定する方法がある。上述の(A)〜(C)等のタイミングは、ユーザが対話システムの発話内容を理解しづらくなるタイミングであるため、人型ロボット5−1に曖昧化した文を発話させて、人型ロボット5−1と人型ロボット5−2との間の対話を挿入することで、人と対話システムとの間の対話のターン数を増やすとともに、人に対話システムの発話内容の理解を促すことができる。
前述のように、元の発話文を(i)指示語で置換した文、(ii)言い間違った語で置換した文、(iii)省略した文に変換するとき、指示語の対象となる語、言い間違いの対象となる語、省略の対象となる語に特に限定はないが、例えば、主要な語を対象とする。例えば、tf-idf(文書中の単語に関する重み)に基づき、元の発話文に含まれる語のうちの重みの大きい語を対象となる語として選択してもよい。また、元の発話文に含まれる語のうちで、他の語との関係で、上位概念となる語を対象となる語として選択してもよい。例えば、元の発話文に『セダン』と『車』とが含まれる場合、語『セダン』との関係で、上位概念となる語『車』を対象となる語として選択することができる。
以下、この実施形態による対話内容の具体例を示す。ここで、Rはロボットを表し、Hはユーザを表す。Rの後の数字は人型ロボットの識別子である。X→YはXがYに話しかけていることを表す。すなわち、「R1→H」は人型ロボット5−1がユーザへ話しかけていることを表す。『 』内に曖昧語である指示語、言い間違い、省略の何れかを示す。
(例1:指示語)
R1→R2:僕、『あれ』、セダンが好きなんだよね
R2→R1:それって車の話?
R1→R2:そう、車。僕、車、セダンがすきなんだよね
(例2:省略)
R1→R2:僕、『省略』セダンが好きなんだよね
R2→R1:それって何の話?
R1→R2:うん、車。僕、車、セダンがすきなんだよね
(例3:言い間違い)
R1→R2:僕、『くるみ』、セダンが好きなんだよね
R2→R1:え、何の話?
R1→R2:ごめん、車。僕、車、セダンがすきなんだよね
なお、例1〜3では、曖昧化した発話の直後に対話システムが行う発話(この例ではロボットR2の発話)は、曖昧化した発話である第1の発話の曖昧化されている部分を一つの意味に特定する語を含む発話である。しかし、曖昧化した発話の直後に対話システムが行う発話は、このような発話に限らず、一意に解釈できていないことの表出する発話であればよく、例えば、次のような発話でもよい。
(例4:言い間違い)
R1→R2:僕、『くるみ』、セダンが好きなんだよね
R2→R1:ごめん、意味が分からない。
R1→R2:ごめん、車。僕、車、セダンがすきなんだよね
この例では、ロボットR2の発話「ごめん、意味が分からない。」は、曖昧化した発話である第一の発話の曖昧化されている部分を一つの意味に特定する語を含む発話とは言えないが、ロボットR2の発話の対象となった発話をしたロボットであるロボットR1が曖昧化した発話を特定する語を発話せざるを得ないようにする発話である。例1〜4の曖昧化した発話の直後に対話システムが行う発話は、まとめると、一意に解釈できていないことの表出する発話と言え、別の言い方をすると、一つの意味に特定する語を含む発話をさせるための発話と言える。
なお、上述の対話の例には、発話を誰に対して行っているかを記載してあるが、発話を誰に対して行うかを限定する必要はない。例えば、例1はロボットR1とロボットR2との間の対話であるが、ロボットR1とロボットR2とユーザとの間の対話であってもよい。なお、発話を誰に対して行っているかを限定する場合には、例えば、ロボットの頭部や視線の動きにより発話の対象となる相手が誰であるかを表出するようにすればよい。
以下、図3を参照して、第二実施形態の対話方法の処理手続きを説明する。
ステップS11において、発話決定部3は、発話文(テキストデータ)を生成し、音声合成部4に出力する。以下、この発話文をオリジナル発話文ともいう。発話決定部3内には、例えば、非特許文献2および3に記載された「雑談対話システム」と呼ばれる対話システムのように、入力された単語をトリガーとして、あらかじめ記述しておいたルールに従って発話のテキストを生成して出力する対話システムが備えられており、オリジナル発話文は、事前に設定された単語に基づき発話決定部3内に備えられた当該対話システムが生成して出力する。
または、発話決定部3内には、例えば、非特許文献1に記載された「シナリオ対話システム」と呼ばれる対話システムのように、事前に設定された単語が対話システム内に予め記憶されたシナリオの選択肢に対応する場合に、その選択肢に対応して予め記憶された発話のテキストを選択して出力する対話システムが備えられており、発話決定部3内に備えられた当該対話システムが予め記憶しているテキストから選択して出力する。ここで、事前に設定された単語に基づいてオリジナル発話文を生成する例で説明したが、事前に単語を設定していなくてもよい。例えば、オリジナル発話文生成時点が継続中の対話の一時点である場合には、事前に設定した単語に代わり、オリジナル発話文生成時点より前の対話中の単語(トピック等)を用いてもよい。
ステップS12において、発話決定部3は、オリジナル発話文を受け取り、オリジナル発話文の少なくとも一部を曖昧化することにより生成した発話文を変換後発話文(テキストデータ)として得、音声合成部4に出力する。なお、前述の発話文の少なくとも一部を(i)指示語で置換する処理、(ii)言い間違った語で置換する処理、あるいは、(iii)省略する処理、が発話文を曖昧化することに相当する。なお、発話文の少なくとも一部を言い間違った語に置換する処理とは、発話文に含まれる語を当該語の意味を有さない語に置換する処理とも言える。
ステップS13において、音声合成部4は、発話決定部3から入力された変換後発話文(テキストデータ)に対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−1のスピーカから出力する、すなわち、変換後発話文を人型ロボット5−1の発話として提示する。合成音声データの提示先として、変換後発話文の合成音声データに対応する音声を再生したロボット自身を提示先とする場合には、独り言を話しているように処理を行えばよい。
ステップS15において、発話決定部3は、変換後発話文の内容を確認する発話文(以下、「確認発話文」ともいう)を生成し、音声合成部4へ出力する。なお、確認発話文は、変換後発話文を1つの意味に特定するための質問を含む。
音声合成部4は、発話決定部3から入力された確認発話文に対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−2のスピーカから出力する、すなわち、確認発話文を人型ロボット5−2の発話として提示する。
確認発話文とは、例えば、(i)正しい内容を特定して確認を行う発話文、(ii)内容を何ら特定せずに確認を行う発話文、(iii)間違った内容を特定して確認を行う発話文、である。例えば、(i)正しい内容を特定して確認を行う発話文としては「それって、XXのこと?」(ここではXXは正しい内容であり、変換後発話文を1つの意味に特定する語である)との発話文、(ii)内容を何ら特定せずに確認を行う発話文としては「何のこと?」との発話文、(iii)間違った内容を特定して確認を行う発話文としては「それって、YYのこと?」「YYって言った?」「YYって何のこと?」(ここではYYは間違いである)との発話文が有り得る。発話決定部3が(i)から(iii)の何れの種類の確認発話文を具体的にどのように生成するかは、発話決定部3内で予め定めておいてもよいし、発話決定部3外から対話システムの運用者が指定できるようにしておいてもよい。また、正しい内容は、発話決定部3が生成したオリジナル発話文と発話決定部3が生成した変換後発話文とに基づいて、発話決定部3が曖昧化した部分に対応する語をオリジナル発話文から取得することにより決定する。間違った内容は、発話決定部3が生成したオリジナル発話文と発話決定部3が生成した変換後発話文とに基づいて、発話決定部3が曖昧化した部分に対応する語をオリジナル発話文から取得して、取得した語に基づいて生成すればよい。なお、確認発話文は、変換後発話文を1つの意味に特定するための質問を含むが、変換後発話文を1つの意味に特定するものではない。
ステップS16において、発話決定部3は、さらに、確認発話文に応答する発話文(以下、「応答発話文」ともいう)を生成し、音声合成部4に出力する。なお、応答発話文は、確認発話文に含まれる質問の回答であり、かつ、変換後発話文を一つの意味に特定する語を含む。
音声合成部4は、発話決定部3から入力された応答発話文に対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−1のスピーカから出力する、すなわち、応答発話文を人型ロボット5−1の発話として提示する。確認発話文が(i)正しい内容を特定して確認を行う発話文である場合には、応答発話文は、確認内容を肯定した上で、正しい内容を復唱する発話文などであり、例えば、「うん、XX」である。確認発話文が(ii)内容を何ら特定せずに確認を行う発話文である場合や(iii)間違った内容を特定して確認を行う発話文である場合には、応答発話文は、正しい内容を確認する発話文などであり、例えば、「XX」である。
ステップS17において、音声合成部4は、発話決定部3から入力されたオリジナル発話文に対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−1のスピーカから出力する、すなわち、オリジナル発話文を人型ロボット5−1の発話として提示する。
<第二実施形態の変形例1>
以下、第二実施形態の変形例1の対話システムが行う動作の流れを、第一実施形態の対話システムが行う動作の流れと異なる点を中心に説明する。なお、第二実施形態の変形例1の対話システムは、第一実施形態の対話システムの各処理部に加えて、図示していない発話終了検出部をさらに含む。
ステップS13による変換後発話文の提示後に、入力部1において収音されたユーザの発話に対応する音声データは、図示していない発話終了検出部に出力される。
ステップS14において、図示していない発話終了検出部は、入力部1から収音されて取得した音声データを用いて、ユーザの発話の終了を検出するか、または、ユーザの発話がないまま予め定めた時間が経過したこと、すなわち、タイムアウトしたことを検出し、発話決定部3に発話の終了、または、タイムアウトしたことを知らせる制御信号を出力する。発話決定部3に発話終了検出部からの制御信号が入力されると、対話システムは、ステップS15からS17までを行う。すなわち、この変形例では、変換後発話文の提示後にユーザが発話する時間を設けているものの、対話システム10は、ユーザの発話は音声認識せずに、ユーザの発話が終了した時点、または、所定時間経過した時点で、確認発話文を提示する。なお、ユーザの発話内容が曖昧化した部分の正しい内容を含むものであろうと、間違った内容を含むものであろうと、対話システム10が提示する確認発話文と応答発話文は、上記の(i)の場合と同様のものとすればよい。例えば、対話システム10は、「それって、XXのこと?」を確認発話文として提示し、「うん、XX」を応答発話文として提示する。
以下に、ユーザを提示先とする対話の具体例を示す。
(例5)
R1→H:『あれ』、どんなタイプが好き?
H→R1:え、何?
R2→R1:それって車の話?
R1→R2:そう、車。車、どんなタイプが好き?
例5は、ロボットR1が変換後発話文を発話し、ロボットR1が変換後発話文を発話した後にユーザの発話を受け付ける時間を設け、ユーザの発話が終了した時点でロボットR2が確認発話文を発話し、次にロボットR1が発話として応答発話文とオリジナル発話文を発話する例である。
なお、この変形例では、ロボットの確認発話文、応答発話文はユーザの発話には依存しないため、音声認識を必要としない。
<第二実施形態の変形例2>
第二実施形態の変形例1の対話システムでは、変換後発話文の提示後にユーザが発話する時間を設け、ユーザの発話は音声認識せずに、ユーザの発話が終了した時点、または、所定時間経過した時点で、確認発話文を提示した。変形例2では、ユーザが曖昧化した文の内容を確認する発話文を発話した場合には、曖昧化した文の内容を確認する発話文を発話せず、ユーザ発話の後に応答発話文を発話する。
以下、本変形例の対話システムが行う動作の流れを、第二実施形態の対話システムが行う動作の流れと異なる点を中心に説明する。
まず、本変形例の対話システムは、ステップS11〜S13を行う。
ステップS13による変換後発話文の提示後に、入力部1において収音されたユーザの発話に対応する音声データは、音声認識部2へ出力される。
音声認識部2は、入力部1から収音されて取得した音声データを音声認識して、音声認識結果の発話文(ユーザの発話に対応する発話文)を得て、得られた音声認識結果の発話文を発話決定部3へ出力する。
発話決定部3は、音声認識結果の発話文が、生成した確認発話文と同一の内容であるか否かを判断する。音声認識結果の発話文が、生成した確認発話文と同一の内容である場合には、本変形例の対話システムは、ステップS15を行わずに、ステップS16〜S17を行い、音声認識結果の発話文が、生成した確認発話文と同一の内容ではない場合には、本変形例の対話システムは、ステップS15〜S17を行う。すなわち、本変形例の対話システムは、ユーザが曖昧化した文の内容を確認する発話文を発話した場合には、曖昧化した文の内容を確認する発話文を発話せず、ユーザの発話の後に応答発話文を発話する。
なお、本変形例では対話システムによる変換後発話文の提示後にユーザの発話を受け付ける例について説明したが、対話システムによる何れの発話文の提示後にユーザの発話を受け付ける構成としてもよい。また、変換後発話文の提示後のユーザの発話の音声認識結果の発話文が、生成した確認発話文と同一の内容ではない場合などの、ユーザの発話が、対話システムが予め想定した発話以外の発話であった場合には、第二実施形態で説明した確認発話文、応答発話文、オリジナル発話文、の何れでもない発話文を対話システムが発話してもよい。例えば、発話決定部3は、音声認識の結果が肯定してよい内容であれば「うん、XX」を応答発話文とし、否定する必要のある内容であれば「ごめん、XX」を応答発話文として生成し、生成した何れかの応答発話文を人型ロボット5−1の発話として提示すればよい。
なお、対話システムがユーザの発話を受け付ける場合には、例えば、ロボットの頭部や視線をユーザに向ける等の動きによりユーザに発話を促すようにしてもよい。
<第二実施形態の変形例3>
上述の第二実施形態およびその変形例では、対話システムは、発話の前にロボットの発話文(オリジナル発話文、変換後発話文、確認発話文、応答発話文)を生成していたが、最初の発話をする前に、生成、音声合成を行っておき、合成音声データを図示しない記憶部に記憶しておき、実際の対話時には、所定のタイミングで各合成音声データを提示部5−1または5−2が再生する構成としてもよい。また、最初の発話をする前に対話システムからの発話文を生成しておき、発話文を図示しない記憶部に記憶しておき、実際の対話時には、所定のタイミングで各発話文を音声合成して合成音声データを得て、得られた合成音声データを提示部5−1または5−2で再生する構成としてもよい。
<第二実施形態の変形例4>
対話システム10が複数台のロボットを含む構成において、どのロボットが発話しているのかをユーザが判別可能とされていれば、提示部の個数はロボットの個数と同一でなくてもよく、提示部はロボットに設置されていなくてもよい。どのロボットが発話しているのかをユーザが判別可能とする方法としては、合成する音声の声質をロボットごとに異ならせる、複数のスピーカを用いてロボットごとに定位を異ならせる、などの周知の技術を用いればよい。
<第三実施形態>
第三実施形態の対話システムおよび方法は、ユーザの発話に対する人型ロボット5−1の発話がユーザの所望する返答ではないことがユーザの反応から検知された場合、人型ロボット5−2が何らかの表出行動を行う。この場合、ユーザは少なくとも自分の発話が認識されたことは理解できるため、「うまく音声認識できるように発話しなければならない」という負担感が軽減する。
まず、この実施形態による対話内容の具体例を示す。具体例の記述方法は上述の実施形態と同様である。
この実施形態の対話システムは、破綻させたこと自体を話題にする等により、「破綻させたこと」を認識していることをユーザに表明する(下記Case1〜Case6)。この表明により、ユーザに対して、対話システムが正しく自身の発話内容を理解しており、かつ、ユーザの振る舞いに敏感であると示すことができるため、対話におけるユーザの満足度が向上すると考えられる。
さらに、ロボットが二体ある場合には、破綻していること自体をロボット間で話題にすることで、破綻発話を発話していない側のロボットがより賢いロボットであるとの印象をユーザに与えることができる(下記Case1〜Case4)。
また、「破綻させたこと」を対話システムが認識していることをユーザに表明した後に、破綻発話と異なる発話をロボットが行う(下記Case4)。または、話題転換語を前置して破綻発話とは異なる発話を行う(下記Case7)。これらにより、対話システムが対話の内容を理解せずに対話しているとのユーザの印象、すなわち、ロボットに対するユーザの失望、を軽減することができる。裏返せば、対話システムが対話の内容を理解して対話している印象をユーザに与えることができる。
また、破綻発話を発話していない側のロボットが破綻発話の内容を無視して、ユーザとの間で対話を進めることで、対話システム全体に対する失望を軽減することができる(下記Case8)。裏返せば、対話システムが対話の内容を理解して対話している印象をユーザに与えることができる。
加えて、二体のロボットが互いにフォローし合うため、破綻発話を一度しても対話そのものは破綻しにくい(下記Case4、Case8)。それを利用し、ユーザ発話に対するロボットの発話として通常であれば1bestで生成する発話を、2bestや4bestなどの複数候補を生成し、複数候補のうちの一つをユーザ発話に対するロボットの発話とし、複数候補のうちの別のものをロボットの発話が破綻発話であった場合にロボットが行う発話としてもよい。この場合は、類似した候補を選択するよりも、発話間類似度が小さい候補を選択した方が破綻しにくい可能性がある。さらに、複数候補を生成する段階で、あらかじめ発話間類似度が小さくなるように候補を生成する方法も考えられる。
以下、具体例1では人型ロボット5−1が対話を破綻させたこと、または、破綻させた可能性があることを、人型ロボット5−2が表出する例を示す。
(具体例1)
H→R1,R2:「最近ライオンキング(登録商標)見に行ったら、子役の子たちがすごかったです」
R1→H:「メスが狩りをするらしいですね」(「ライオン」に反応した破綻発話)
人型ロボット5−1の発話に対するユーザの反応の認識結果が「人型ロボット5−1の発話がユーザの発話に対応するものではない(人型ロボット5−1が破綻させた)」というものであった場合に、人型ロボット5−2が「人型ロボット5−1の発話がユーザの発話に対応するものではない」旨を表出する行動を行う。
Case1:
R2→R1:「何言ってるの??」
R1→H:「ライオンの話じゃないの?」
Case2:
R2→H:「何言ってんだろうねー」
Case3:
R2:ためいき
Case1では、人型ロボット5−2が、人型ロボット5−1に対する発話として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、明言する。
Case2では、人型ロボット5−2が、ユーザに対する発話として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、明言する。
Case3では、破綻発話を行った者以外(この例では、破綻発話を行った人型ロボット5−1以外のロボットである人型ロボット5−2)が、何れに対する発話でもない発話・意思表出として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、非言語コミュニケーションで明示する。この例では、人型ロボット5−1の発話がユーザの発話に対応するものではない旨を表出する行動として、人型ロボット5−2がため息をつく。
以下、具体例2では人型ロボット5−1が対話を破綻させたこと、または、破綻させた可能性があることを、人型ロボット5−1自身が表出する例を示す。
(具体例2)
H→R1,R2:「最近ライオンキング見に行ったら、子役の子たちがすごかったです」
R1→H:「メスが狩りをするらしいですね」(「ライオン」に反応した破綻発話)
人型ロボット5−1の発話に対するユーザの反応の認識結果が「人型ロボット5−1の発話がユーザの発話に対応するものではない(人型ロボット5−1が破綻させた)」というものであった場合に、人型ロボット5−1が「人型ロボット5−1の発話がユーザの発話に対応するものではない」旨を表出する行動を行う。
Case4:
R1→R2:「あれ?何か変なこと言った??」
R2→H:「その話じゃないよねえ。子役の話だよね」
Case5:
R1→H:「あれ?違いました?」
Case6:
R1:首を振る仕草
Case4では、人型ロボット5−1が、人型ロボット5−2に対する発話として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、明言する。
Case5では、人型ロボット5−1が、ユーザに対する発話として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、明言する。
Case6では、破綻発話を行った者自身(この例では、人型ロボット5−1)が、何れに対する発話でもない発話・意思表出として、人型ロボット5−1が破綻させたこと、または、人型ロボット5−1が破綻させた可能性を、非言語コミュニケーションで明示する。この例では、人型ロボット5−1の発話がユーザの発話に対応するものではない旨を表出する行動として、人型ロボット5−1が首を振る仕草を行う。
具体例2のCase4では、人型ロボット5−1が対話を破綻させたこと、または、破綻させた可能性があることについて、対話システムが明言した上で、対話を継続する例を示したが、具体例3では人型ロボット5−1が対話を破綻させたこと、または、破綻させた可能性があることについて、対話システムが明言せずに対話を継続する例を示す。具体例3では、対話システムが対話の内容を理解して対話している印象をユーザに与えるため、対話システムは、破綻させた発話と異なる発話をすることで、ユーザ発話に対する対話を継続する。具体的には、話題転換語を付した発話をしたり、破綻発話をしたロボットとは別のロボットが破綻発話を無視した発話をすることで、ユーザ発話に対する対話を継続する。
(具体例3)
H→R1,R2:「最近ライオンキング見に行ったら、子役の子たちがすごかったです」
R1→H:「メスが狩りをするらしいですね」(「ライオン」に反応した破綻発話)
人型ロボット5−1の発話に対するユーザの反応の認識結果が「人型ロボット5−1の発話がユーザの発話に対応するものではない(人型ロボット5−1が破綻させた)」というものであった場合に、人型ロボット5−1、人型ロボット5−2ともに破綻を明言せずに対話を継続する。
Case7:
R2→R1:「あ、そういえばこないだサファリパークに行ったら、ライオンが眠ってたよ」
Case8:
R2→H:「子役はかわいいですよね」
Case7では、人型ロボット5−2が、人型ロボット5−1の破綻発話ではなくユーザの発話に関する発話を行う。「そういえば」などの話題転換語を伴うことで、ユーザの話題からずれていることを表出しつつ、話題を遷移させて対話を継続することができ、人型ロボット5−2が対話の内容を理解して対話している印象をユーザに与えることができる。
Case8では、人型ロボット5−2が、人型ロボット5−1の破綻発話ではなくユーザの発話に関する発話を行う。こうすると、人型ロボット5−2が人型ロボット5−1の破綻発話を無視して発話を行い、ユーザは人型ロボット5−2の発話に対応する発話をすることで、対話を継続することができ、人型ロボット5−2が対話の内容を理解して対話している印象を与えることができる。
以下、図4を参照して、第三実施形態の対話方法の処理手続きを説明する。なお、第三実施形態の対話システムは、第一実施形態の対話システムの各処理部に加えて、図示していない反応取得部、行動生成部、および行動部をさらに含む。
ステップS21において、マイクロホン1は、ユーザが発した発話を受け付ける。以下、この発話をユーザ発話と呼ぶ。マイクロホン1で収音したユーザ発話の音声信号は、音声認識部2により認識され、音声認識結果として得られたテキストがユーザ発話の内容を表すテキストとして発話決定部3へ入力される。
ステップS22において、発話決定部3は、音声認識部2からユーザ発話の内容を表すテキストが入力されると、当該ユーザの発話に対する音声認識結果のテキストに少なくとも基づき、当該ユーザ発話の次に対話システムが提示する発話の内容を表すテキストを決定し、音声合成部4へ出力する。以下、この発話を第一発話ともいう。
なお、発話決定部3内には、例えば、非特許文献2に記載された「雑談対話システム」と呼ばれる対話システムのように、入力された発話のテキストに含まれる単語をトリガーとして、あらかじめ記述しておいたルールに従って発話のテキストを生成して出力する対話システムが備えられており、ユーザの発話に対する音声認識結果のテキストに少なくとも基づく発話のテキストは、発話決定部3内に備えられた当該対話システムが生成して出力する。
または、発話決定部3内には、例えば、非特許文献1に記載された「シナリオ対話システム」と呼ばれる対話システムのように、入力された発話のテキストが対話システム内に予め記憶されたシナリオの選択肢に対応する場合に、その選択肢に対応して予め記憶された発話のテキストを選択して出力する対話システムが備えられており、ユーザの発話に対する音声認識結果のテキストに少なくとも基づく発話のテキストは、発話決定部3内に備えられた当該対話システムが予め記憶しているテキストから選択して出力する。
音声合成部4は、発話決定部3から入力されたテキストに対する音声合成を行って合成音声データを得て、得られた合成音声データを人型ロボット5−1のスピーカから出力し、発話文を利用者に提示する。テキストと共に発話決定部3からテキストと当該テキストを発話するロボットを表す情報が入力された場合には、当該情報に対応するロボットの提示部に対して合成音声データを出力する。
ステップS23において、反応取得部は、第一発話に対するユーザの反応を取得し、行動生成部へ出力する。
ステップS24において、行動生成部は、反応取得部から入力されたユーザの反応を表す情報を受け取り、その反応に基づき、第一発話がユーザ発話に対応するものか否かを判定する。
行動生成部は、第一発話がユーザの発話に対応するものか否かを判定するために、例えば、ユーザの表情などの変化や、フィードバック発話(ため息や「ちがうって」のような発話など、意識的・無意識的によらず、システム発話に対する印象を表出する発話)などを利用する。例として、表情の変化を利用するための方法を例示する。反応取得部はカメラを含み、ユーザの顔の時系列の画像を取得する。取得した時系列の画像から特徴(例えば、瞳孔の大きさ、目尻の位置、目頭の位置、口角の位置、口の開き具合等)の変化を取得する。この特徴の変化がユーザの反応に相当する。対話システムの利用に先立ち予め、対象者に対して破綻発話を聴取させ、その前後の特徴の変化を行動生成部内の図示しない記憶部に記憶しておく。なお、対象者は特徴の変化のパターンを取得するための対象となるものを意味し、対話システムのユーザでもよいし、他の者であってもよい。行動生成部は、行動生成部内の図示しない記憶部に記憶した特徴の変化と、反応取得部から入力されたユーザの反応(特徴の変化)との類似度を計算し、行動生成部内の図示しない記憶部に記憶した所定の閾値との大小関係に基づき、類似していると判断したときには、第一発話がユーザ発話に対応するものではないと判定する。例えば、類似度が高いほど類似していることを示す場合には、類似度が所定の閾値よりも大きいときに類似していると判断し、第一発話がユーザ発話に対応するものではないと判定する。また、フィードバック発話を利用する場合には、入力部1は、ユーザが発話したフィードバック発話の音声を収音して、収音された音声データを音声認識部2に出力する。音声認識部2は、入力部1が得た音声データ(フィードバック発話)の入力を受け付け、この音声データに対して音声認識を行い、認識結果のテキストを行動生成部に出力する。行動生成部は、フィードバック発話の認識結果のテキストが入力されると、例えば、参考文献1において用いられる方法を利用して、第一発話がユーザの発話に対応するものか否かを判定する。なお、参考文献1では、フィードバック発話の認識結果のテキストに含まれる単語のNgramや単語クラスの頻度、感情極性の正負とその大きさなどを利用して、第一発話がユーザの発話に対応するものか否かの評価値を推定する。例えば、行動生成部は、この評価値と閾値との大小関係に基づき、第一発話がユーザの発話に対応するものか否かを判定する。
〔参考文献1〕水上雅博, et al. "快適度推定に基づく用例ベース対話システム", 人工知能学会論文誌, Vol. 31, No. 1, 2016.
(具体例1、2の場合)
行動生成部は、ユーザの反応が、第一発話がユーザ発話に対応するものではないことを示す反応である場合に、第一発話がユーザ発話に対応するものではない旨を表出する行動の内容である行動内容を生成し、すなわち、決定し、行動部に出力する。
ユーザの反応が、第一発話がユーザ発話に対応するものではないことを示す反応ではない場合(言い換えると、ユーザの反応が、第一発話がユーザ発話に対応するものであることを示す反応である場合)には、従来の対話システムを用いて対話を継続すればよい(例えば、非特許文献2−3参照)。ここでは、処理の説明を省略する。
ステップS25において、ユーザの反応が、第一発話がユーザ発話に対応するものではないことを示す反応である場合、行動部は、行動生成部が生成した行動内容を受け取り、行動内容の行動を行う。
行動内容は、行動の主体、行動の対象、行動自体等を示す内容である。ただし、対象を必要としない行動の場合には、行動の対象を省略してもよい。例えば、行動の主体として、この実施形態では、人型ロボット5−1や人型ロボット5−2が考えられる。行動の対象としては、人型ロボット5−1や人型ロボット5−2、ユーザ等が考えられる。行動自体としては、言語コミュニケーション(=発話)や非言語コミュニケーションが考えられる。言語コミュニケーションとは、言葉を使ったコミュニケーションの全てを対象とするのであって、必ずしも音声を伴っている必要はない。非言語コミュニケーションとは、言葉以外の手段によるコミュニケーションのことであり、例えば、顔の表情、顔色、視線、身振り、手振り、体の姿勢などである。
第一発話がユーザ発話に対応するものではない旨を表出する言語コミュニケーションとしては、例えば、上述の具体例における発話「何言ってるの??」(Case1)、「何言ってんだろうねー」(Case2)、「あれ?何か変なこと言った??」(Case4)、「あれ?違いました?」(Case5)等が考えられる。第一発話がユーザ発話に対応するものではない旨を表出する非言語コミュニケーションとしては、例えば、上述の具体例におけるため息をつく動作(Case3)、首を振る仕草(Case6)等が考えられる。なお、これらはあくまで例示であって、第一発話がユーザ発話に対応するものではない旨を表出する行動であれば、他の言語コミュニケーションや非言語コミュニケーションであってもよい。
ステップS25において、例えば、Case1,Case2,Case4,Case5の場合には、行動部は、発話決定部3に制御信号を出力し、以下の動作をさせることで、行動内容の生成を行い、行動部は、音声合成部4に制御信号を出力し、以下の動作させることで、行動内容の行動を行う。
発話決定部3は、行動生成部から制御信号を受け取り、Case1,Case2,Case4,Case5の何れかの発話のテキストを発話決定部3内に備えられた対話システムにより生成し、または、発話決定部3内に備えられた対話システムが予め記憶しているテキストから選択して、音声合成部4に出力する。音声合成部4は、行動部から制御信号を受け取り、発話決定部3から出力された発話のテキストを入力とし、その発話のテキストに対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−1(Case4,Case5のとき)または人型ロボット5−2(Case1,Case2のとき)のスピーカから出力する。
Case1,Case4では、さらに、発話決定部3は、Case1,Case4の何れかの行動後に提示する発話のテキストを発話決定部3内に備えられた対話システムにより生成し、または、発話決定部3内に備えられた対話システムが予め記憶しているテキストから選択して、音声合成部4に出力する。音声合成部4は、その発話のテキストに対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−1(Case1のとき)または人型ロボット5−2(Case4のとき)のスピーカから出力する。人型ロボット5−1または人型ロボット5−2では、音声合成部4から入力された三番目の発話のテキストに対応する音声データに対応する合成音声を再生し、行動後に提示する発話を提示する。
また、例えば、Case3の場合には、行動部は、発話決定部3内に備えられた対話システムが予め記憶しているため息に対応する合成音声データを取り出し、人型ロボット5−2のスピーカに出力する。人型ロボット5−2では、ため息の合成音声データを再生し、非言語コミュニケーション(ため息をつく動作)を提示する。この場合、発話決定部3内に備えられた対話システムには、ため息に対応する合成音声データが記憶されているものとする。発話決定部3内に備えられた対話システムが予めため息に対応するテキストを記憶しており、発話決定部3は当該ため息に対応するテキストを選択して、音声合成部4に出力し、音声合成部4は、ため息に対応するテキストに対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−2に出力し、人型ロボット5−2では、音声合成部4から入力されたため息の合成音声データに対応する音声を再生し、非言語コミュニケーション(ため息をつく動作)を提示する形態としてもよい。
また、例えば、Case6の場合には、行動部は、図示していないモーター等に制御信号を出力し、人型ロボット5−1の首を横に振る仕草を行わせ、非言語コミュニケーション(首を振る仕草)を提示する。この場合、人型ロボット5−1には首を振る仕草を行うためのモータ等を設ける。
(具体例3の場合)
行動生成部は、ユーザの反応が、第一発話がユーザ発話に対応するものではないことを示す反応である場合に、第一発話とは異なる発話を生成し、すなわち、決定し、行動部に出力する。
ステップS25において、ユーザの反応が、第一発話がユーザ発話に対応するものではないことを示す反応である場合、行動部は、行動内容を受け取り、行動内容を表す行動を表出する。
第一発話とは異なる発話としては、例えば、具体例3における発話「あ、そういえばこないだサファリパークに行ったら、ライオンが眠ってたよ」(Case7)、「子役はかわいいですよね」(Case8)等が考えられる。また、具体例2における発話「その話じゃないよねえ。子役の話だよね」(Case4)も第一発話とは異なる発話の一例と言える。
Case7の発話「あ、そういえばこないだサファリパークに行ったら、ライオンが眠ってたよ」は、第一発話とは異なる発話であり、より具体的には、「あ、そういえば」という話題転換語(話題を転換する際に用いる語)が前置された、人型ロボット5−1の発話「メスが狩りをするらしいですね」とは異なる発話である。Case7では、人型ロボット5−2の発話に話題転換語を用いることで、人型ロボット5−1の第一発話がユーザの発話「最近ライオンキング見に行ったら、子役の子たちがすごかったです」に対応するものではないことをユーザに示した上で、話題を変える(少なくとも人型ロボット5−1の発話に関連しない話題に変える)ことをユーザに示す。これにより、ユーザは第一発話とは異なる発話に対応する発話をすることで対話を継続することができる。
Case8の発話「子役はかわいいですよね」は、第一発話とは異なる発話であり、より具体的には、人型ロボット5−1の発話「メスが狩りをするらしいですね」とは異なる発話であり、第一発話を発話した人型ロボット5−1とは異なるロボットである人型ロボット5−2が行う発話である。Case8では、破綻発話をした人型ロボット5−1とは異なるロボットである人型ロボット5−2に第一発話とは異なる発話を発話させ、ユーザは第一発話とは異なる発話に対応する発話をすることで対話を継続することができる。
Case4の発話「その話じゃないよねえ。子役の話だよね」は、第一発話とは異なる発話であり、より具体的には、人型ロボット5−1の発話「メスが狩りをするらしいですね」とは異なる発話であり、人型ロボット5−1が対話を破綻させたこと、または、人型ロボット5−1が破綻させた可能性を人型ロボット5−1が第一発話とは異なる発話で表出した後に、人型ロボット5−2が行う発話である。言い換えると、Case4では、第一発話とは異なる発話を提示するよりも、先に、第一発話がユーザの発話に対応するものではない旨を表出する発話を提示する。Case4では、破綻発話であることを明示された発話ではない発話に対応する発話をユーザがすることで対話を継続することができる。
ステップS25において、例えば、Case7,Case8の場合には、行動部は、発話決定部3に制御信号を出力し、以下の動作させることで、行動内容の生成を行い、行動部は、音声合成部4と人型ロボット5−1,5−2に以下の動作させることで、行動内容の行動を行う。
発話決定部3は、行動生成部から制御信号を受け取り、Case7,Case8の何れかの発話に対応するテキストを発話決定部3内に備えられた対話システムにより生成し、または、発話決定部3内に備えられた対話システムが予め記憶しているテキストから選択して、音声合成部4に出力する。音声合成部4は、行動部から制御信号を受け取り、発話決定部3から出力された発話のテキストを入力とし、その発話のテキストに対して音声合成を行い合成音声データを得て、得られた合成音声データを人型ロボット5−2に出力する。人型ロボット5−2では、音声合成部4から入力された発話のテキストに対応する合成音声データに対応する合成音声を再生し、発話を提示する。
<第三実施形態の変形例1>
対話システム10が複数台のロボットを含む構成において、どのロボットが発話しているのかをユーザが判別可能とされていれば、提示部の個数はロボットの個数と同一でなくてもよく、提示部はロボットに設置されていなくてもよい。どのロボットが発話しているのかをユーザが判別可能とする方法としては、合成する音声の声質をロボットごとに異ならせる、複数のスピーカを用いてロボットごとに定位を異ならせる、などの周知の技術を用いればよい。
<第四実施形態>
第四実施形態の対話システムおよび方法は、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないと判定した場合には、ユーザの発話に対してはロボットが「そっか」や「ふーん」などの曖昧な回答や相槌で応答し、その後に、ユーザの発話の直前までの対話の文脈に関連する発話をロボットが行う。これにより、対話システムは、ユーザの発話に対する音声認識結果を用いずに、ユーザの発話を認識したかのように振る舞いつつ、対話の話題を強制的に遷移した上でユーザとの対話を継続することができる。したがって、この実施形態によれば、音声認識が上手くできなかった場合であっても、ユーザは自身の発話が認識されたと感じつつそれまでの話題による対話を継続することができ、ユーザが次発話を考える必要がなく、かつ言い直しをせずとも対話自体を容易に継続可能となるため、ユーザの対話意欲も減少しない効果を奏する。
なお、曖昧な回答や相槌での応答の後にロボットが行う発話をやや限定的な内容とすることで、音声認識を失敗したユーザの発話内容との重複を防ぎやすくなる。これは、ユーザの発話と内容が重複する発話をロボットがしてしまう、すなわち、ユーザの発話と同じ意味の発話や、ユーザの発話内容を直接質問する発話などをしてしまうことで、ロボットがユーザの発話を理解していないという印象をユーザに与えるのを防ぐためである。
この実施形態の対話システムにおける、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないと判定した場合のユーザとロボットとの対話例を以下に示す。具体例の記述方法は上述の実施形態と同様である。
(対話例1)
R1→H:「食べ物だったら何が好き?」
H:「蘭がスキー」(「ラーメンが好き!)の誤認識)
R1→H:「ふむふむ」(相槌)
R2→R1:「僕は●●店の焼き肉が好きだよ!」
R1→R2:「焼き肉も捨てがたいねえ」
R2→R1:「今度どこか食べに行こうよ」
(対話例2)
R1→H:「食べ物だったら何が好き?」
H:「別府」(「別に」の誤認識)
R1→H:「へー、そうなんだ」(相槌)
R2→H:「●●店のラーメンは好き?」(発話をやや限定的な内容としている)
R1→R2:「●●店はこってりラーメンがいいよね」
R1→H:「そう思わない?」
以下、図5を参照して、第四実施形態の対話方法の処理手続きを説明する。なお、第四実施形態の対話システムは、第一実施形態の対話システムの各処理部に加えて、図示していない認識結果判定部および発話記憶部をさらに含む。認識結果判定部は、図示していない対話整合性指標算出部と対話整合性判定部とを含む。
ステップS31において、マイクロホン1は、ユーザが発した発話を受け付ける。以下、この発話をユーザ発話と呼ぶ。マイクロホン1で収音したユーザ発話の音声信号は、音声認識部2へ入力される。
ステップS32において、音声認識部2は、マイクロホン1で収音したユーザ発話の音声信号に対して音声認識を行い、複数個の認識結果のテキストと、各スコアの音声認識結果としての確からしさの高さの順位である優先順位を表す情報と、を認識結果判定部に出力する。
ステップS33において、認識結果判定部は、ユーザの発話に対する所望のレベルの認識結果が得られたか否かを判定し、所望のレベルの認識結果が得られたと判定された場合には、ユーザの発話に対する音声認識結果のテキストを発話決定部3及び発話記憶部に対して出力し、所望のレベルの認識結果が得られていないと判定された場合には、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報を発話決定部3及び発話記憶部に出力する。認識結果判定部は、対話整合性指標算出部と対話整合性判定部とを用いて、所望のレベルの認識結果が得られた否かを判定する。
対話整合性指標算出部には、音声認識部2が出力したユーザの発話に対する複数個の認識結果候補のテキストが入力される。対話整合性指標算出部は、まず、当該ユーザの発話の直前に対話システム10が出力した発話のテキストを発話記憶部から取得する。ここでは、対話整合性指標算出部に入力された複数個の認識結果候補のテキストを「ユーザ発話の候補テキスト」と呼び、対話整合性指標算出部が発話記憶部から取得した当該ユーザの発話の直前に対話システム10が出力した発話のテキストを「直前のシステム発話のテキスト」と呼ぶ。対話整合性指標算出部は、次に、複数個のユーザ発話の候補テキストそれぞれについて、当該ユーザ発話の候補テキストと直前のシステム発話のテキストとの話題の繋がりの良さを表す指標、又は/及び、当該ユーザ発話の候補テキストの直前のシステム発話のテキストから予想される応答からの逸脱の度合い、を算出し、対話整合性判定部に出力する。話題の繋がりの良さを表す指標としては、例えば、参考文献2に記載された発話間の話題の繋がりの良さを用いればよく、予想される応答からの逸脱の度合いとしては、例えば、参考文献3に記載された技術を用いればよく、これらは、ユーザ発話の候補テキストに含まれる単語と直前のシステム発話のテキストに含まれる単語との間の類似度や、ユーザ発話の候補テキストと直前のシステム発話のテキストのそれぞれを抽象化した対話行為(質問・自己開示・挨拶など)の構造としての適切さ、ユーザ発話の候補テキストと直前のシステム発話のテキストのテキスト間の類似度、などに基づいて、Support Vector MachineやDeep Neural Networkを利用して算出することができる。
〔参考文献2〕Ryuichiro Higashinaka, Toyomi Meguro, Kenji Imamura, Hiroaki Sugiyama, Toshiro Makino, Yoshihiro Matsuo "Evaluating Coherence in Open Domain Conversational Systems", Proceedings of Interspeech 2014, pp.130-134, September 2014.
〔参考文献3〕杉山弘晃、「異なる特性を持つデータの組み合わせによる雑談対話の破綻検出」、言語・音声理解と対話処理研究会、SIG-SLUD、2015.
対話整合性判定部には、音声認識部2が出力したユーザの発話に対する複数個の認識結果候補のテキストと、各候補テキストの優先順位と表す情報と、対話整合性指標算出部が算出したそれぞれの候補テキストの話題の繋がりの良さを表す指標、又は/及び、予想される応答からの逸脱の度合いと、が入力される。対話整合性判定部は、まず、話題の繋がりの良さを表す指標、又は/及び、予想される応答からの逸脱の度合いに基づき、複数の認識結果候補の優先順位を並べ替える。例えば、対話整合性判定部は、候補テキストの話題の繋がりの良さを表す指標が大きいものが上位に来るように、又は/及び、予想される応答からの逸脱の度合いが大きいものが下位になるように、複数の認識結果候補の優先順位を並べ替える。対話整合性判定部は、次に、並べ替え後の優先順位が最も高い認識結果の候補テキストが所望のレベルの認識結果であるかを判定し、所望のレベルの認識結果であると判定された場合には、当該候補テキストをユーザの発話に対する音声認識結果のテキストとして発話決定部3及び発話記憶部に対して出力し、所望のレベルの認識結果でないと判定された場合には、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報を発話決定部3及び発話記憶部に出力する。
並べ替え後の優先順位が最も高い認識結果の候補テキストが所望のレベルの認識結果であるかの判定は、例えば、並べ替え後の優先順位が最も高い認識結果の候補テキストの話題の繋がりの良さを表す指標が所定の閾値以上であるかにより判定する。すなわち、並べ替え後の優先順位が最も高い認識結果の候補テキストの話題の繋がりの良さを表す指標が所定の閾値以上である場合には、当該候補テキストをユーザの発話に対する音声認識結果のテキストとして発話決定部3及び発話記憶部に対して出力し、並べ替え後の優先順位が最も高い認識結果の候補テキストの話題の繋がりの良さを表す指標が所定の閾値未満である場合には、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報を発話決定部3及び発話記憶部に出力する。なお、所定の閾値は、話題の繋がりの良さを表す指標と比較するための閾値として、認識結果判定部の図示しない記憶部に予め記憶されているものである。
また、並べ替え後の優先順位が最も高い認識結果の候補テキストが所望のレベルの認識結果であるかの判定は、例えば、並べ替え後の優先順位が最も高い認識結果の候補テキストの予想される応答からの逸脱の度合いが所定の閾値以下であるかにより判定する。すなわち、並べ替え後の優先順位が最も高い認識結果の候補テキストの予想される応答からの逸脱の度合いが所定の閾値以下である場合には、当該候補テキストをユーザの発話に対する音声認識結果のテキストとして発話決定部3及び発話記憶部に対して出力し、並べ替え後の優先順位が最も高い認識結果の候補テキストの予想される応答からの逸脱の度合いが所定の閾値を超える場合には、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報を発話決定部3及び発話記憶部に出力する。なお、所定の閾値は、予想される応答からの逸脱の度合いと比較するための閾値として、認識結果判定部の図示しない記憶部に予め記憶されているものである。
なお、並べ替え後の優先順位が最も高い認識結果の候補テキストが所望のレベルの認識結果であるかの判定を、話題の繋がりの良さを表す指標と予想される応答からの逸脱の度合いの双方を用いて判定するようにしてもよい。具体的には、値を0から1に正規化した話題の繋がりの良さを表す指標cから、値を0から1に正規化した予想される応答からの逸脱の度合いdを、減算(c−d)することで、話題の繋がりのよさと、予想される応答からの逸脱の度合いの小ささがある程度両立する候補を選ぶことができる。また、重みwを用いてdを重み付けし、値を0から1に正規化した話題の繋がりの良さを表す指標cから減算(c−w*d)しても良い。また、値を0から1に正規化した予想される応答からの逸脱の度合いdを1から減算したものを用いて、値を0から1に正規化した話題の繋がりの良さを表す指標cと掛け合わせる(c*(1−d))、あるいは、重み付けして掛け合わせる(c*w(1−d))ことで、話題のつながりの良さの指標の値が大きく、かつ、逸脱の度合いの大きさが小さい時のみ所定の基準を満たし、どちらか一方の値が小さい場合には棄却するような組み合わせ方も考えられる。
ステップS34において、発話決定部3は、認識結果判定部からユーザの発話に対する音声認識結果のテキストが入力された場合、すなわち、ユーザの発話に対する音声認識結果が所望のレベルの認識結果であると判定された場合には、当該ユーザの発話に対する音声認識結果のテキストに少なくとも基づき、当該ユーザの発話の次に対話システム10が提示する発話のテキストを決定し、音声合成部4に出力する。なお、当該発話を行うロボットも決定してもよく、この場合には、発話するロボットを表す情報も音声合成部4に出力する。
ステップS35において、発話決定部3は、認識結果判定部からユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報が入力された場合、すなわち、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないと判定された場合には、当該ユーザの発話の直後に対話システム10が提示する発話のテキストとして、内容語(名詞・形容詞・動詞・副詞のように実質的な内容を表すことば)を含まない発話のテキストを生成または予め発話決定部3内に記憶した複数個の発話のテキストの候補の中から選択して、音声合成部4に出力する。内容語を含まない発話とは、会話の流れを崩さないような発話であり、例えば、相槌等の発話であり、より具体的には、上述の対話例1の「ふむふむ」や対話例2の「へー、そうなんだ」などである。
ステップS36において、発話決定部3は、認識結果判定部からユーザの発話に対する音声認識結果が所望のレベルの認識結果でないことを表す情報が入力された場合、すなわち、ユーザの発話に対する音声認識結果が所望のレベルの認識結果でないと判定された場合には、対話システム10が発話を提示した後に対話システム10が提示する発話のテキストとして、ユーザの発話に基づかずに発話のテキストを生成または予め発話決定部3内に記憶した複数個の発話のテキストの候補の中から選択して、音声合成部4に出力する。すなわち、対話システム10が提示する発話は、ユーザの発話に基づかずに生成または選択された発話である。
ユーザの発話に基づかずに生成または選択された発話の第一例は、ユーザの発話以前にユーザが行った発話と対話システムが提示した発話との少なくとも何れかの少なくとも一部に関連して生成された発話である。例えば、対話例1では、ロボットR2の発話「僕は●●店の焼き肉が好きだよ!」は、ユーザの発話である「ラーメンが好き!」の誤認識結果である発話「蘭がスキー」には基づかない、それ以前にロボットR1が行った発話「食べ物だったら何が好き?」に関連する発話である。この例では、発話のテキストは、発話記憶部に記憶されている過去のユーザの発話の音声認識結果のテキストと発話記憶部に記憶されている過去に発話決定部3が決定した発話のテキストとの少なくとも何れかの少なくとも一部に基づいて、発話決定部3が生成する。具体的には、発話のテキストは、発話決定部3内に備えられた「雑談対話システム」と呼ばれる対話システムにより生成する。
ユーザの発話に基づかずに生成または選択された発話の第二例は、ユーザの発話以前にユーザが行った発話と対話システムが提示した発話との少なくとも何れかの少なくとも一部に関連して選択された発話である。この例では、発話のテキストは、発話記憶部に記憶されている過去のユーザの発話の音声認識結果のテキストと発話記憶部に記憶されている過去に発話決定部3が決定した発話のテキストとの少なくとも何れかの少なくとも一部に基づいて、発話決定部3内に備えられた図示しない記憶部に予め記憶している発話のテキストから発話決定部3が選択する。具体的には、例えば、発話決定部3内に備えられた「シナリオ対話システム」と呼ばれる対話システムにより、発話記憶部に記憶されている過去のユーザの発話の音声認識結果のテキストと発話記憶部に記憶されている過去に発話決定部3が決定した発話のテキストとの少なくとも何れかの少なくとも一部に基づいて対話のトピックを求め、求めたトピックに対応するシナリオの発話用のテキストとして予め記憶している発話のテキストから発話のテキストを選択する。なお、シナリオ対話システムにおいては、発話記憶部に記憶されている過去に発話決定部3が決定した発話は、発話決定部3内に備えられた図示しない記憶部に予め記憶している現在の対話のトピックのシナリオ中の発話のテキストである。従って、発話のテキストは、発話決定部3が現在の対話のトピックに従って、発話決定部3内に備えられた図示しない記憶部に予め記憶している現在のトピックのシナリオ中の発話のテキストから選択すればよい。
第一例及び第二例で対話システムが提示する発話は、ユーザの発話以前にユーザが行った発話と対話システムが提示した発話との少なくとも何れかの少なくとも一部に関連して生成または選択された発話であるため、ユーザの発話以前の対話のトピックに基づく発話である。すなわち、発話は、直前のユーザの発話の内容に直接応えない発話ではあるものの、ユーザの発話と何らかの関係がある発話である。このため、第一例及び第二例によれば、発話が自身の発話に関係のある発話であるとユーザに認識させ、発話に対してユーザが感じる違和感を小さくすることができる。
ユーザの発話に基づかずに生成または選択された発話の第三例は、ユーザの発話以前にユーザが行った発話にも対話システムが提示した発話にも関連しない発話である。この例では、発話のテキストは、発話記憶部に記憶されている過去のユーザの発話にも発話記憶部に記憶されている過去に発話決定部3が決定した発話にも関連しない発話を、発話決定部3内に備えられた図示しない記憶部に予め記憶している発話のテキストから発話決定部3が選択する。具体的には、例えば、発話決定部3内に備えられた「シナリオ対話システム」と呼ばれる対話システムにより、発話記憶部に記憶されている過去のユーザの発話の音声認識結果のテキストにも発話記憶部に記憶されている過去に発話決定部3が決定した発話のテキストにも基づかずに対話のトピックを求め、言い換えると、ユーザの発話以前のユーザと対話システムによる対話のトピックと異なるトピックを求め、求めたトピックに対応するシナリオの発話用のテキストとして予め記憶している発話のテキストから発話のテキストを選択する。
第三例によれば、発話はユーザの発話以前の発話に関連しない発話であるものの、その前の発話がユーザの発話に対して対話システムが応答したとユーザは感じるため、発話で話題を変えてもユーザの違和感を低減することができる。
ステップS37において、音声合成部4は、発話決定部3から入力されたテキストに対する音声合成を行って合成音声データを得て、得られた合成音声データを人型ロボット5−1または人型ロボット5−2に出力する。発話決定部3から複数のテキストとそれらの発話順を表す情報が入力された場合には、当該情報が表す発話順に従って合成音声データを出力する。テキストと共に発話決定部3からテキストと当該テキストを発話するロボットを表す情報が入力された場合には、当該情報に対応するロボットに対して合成音声データを出力する。
ステップS38において、人型ロボット5−1または5−2は、音声合成部4から入力された合成音声データに対応する音声を再生する。これにより、ユーザは人型ロボット5−1または5−2の発話を受聴することになり、ユーザと対話システム10との対話が実現される。
<第四実施形態の変形例1>
第四実施形態では、認識結果判定部が、ユーザの発話に対する所望のレベルの認識結果が得られたか否かを当該ユーザ発話のテキストと直前のシステム発話のテキストとの話題の繋がりの良さを表す指標、又は/及び、当該ユーザの発話のテキストの直前のシステム発話のテキストから予想される応答からの逸脱の度合いを用いて判定する形態を説明したが、第四実施形態とは異なる判定方法でユーザの発話に対する所望のレベルの認識結果が得られたか否かを判定してもよい。
<第四実施形態の変形例2>
対話システム10が複数台のロボットを含む構成において、どのロボットが発話しているのかをユーザが判別可能とされていれば、提示部の個数はロボットの個数と同一でなくてもよく、提示部はロボットに設置されていなくてもよい。どのロボットが発話しているのかをユーザが判別可能とする方法としては、合成する音声の声質をロボットごとに異ならせる、複数のスピーカを用いてロボットごとに定位を異ならせる、などの周知の技術を用いればよい。
<第五実施形態>
第五実施形態の対話システムおよび方法は、ユーザの発話に対する返答を発話決定部3が決定できなかった場合に、人型ロボット5−1が「へー」と相槌を打ち、人型ロボット5−2がユーザの発話の一部に関連した発話を行う。この場合、ユーザの発話に基づいた対話が展開されるため、ユーザは「対話システムが理解できる程度に発話しなければいけない」という負担感が軽減する。
以下、図6を参照して、第五実施形態の対話方法の処理手続きを説明する。
ステップS41において、マイクロホン1は、ユーザが発した発話を受け付ける。以下、この発話をユーザ発話と呼ぶ。マイクロホン1で収音したユーザ発話の音声信号は、音声認識部2により認識され、音声認識結果として得られたテキストがユーザ発話の内容を表すテキストとして発話決定部3へ入力される。
ステップS42において、人型ロボット5−1は、対話成立発話の内容を表す音声をスピーカから出力する。対話成立発話とは、例えば、相槌やフィラーなど、具体的な発話内容(内容語)を含まない発話である。対話成立発話の内容を表すテキストは、発話決定部3が、例えば、あらかじめ定められ発話決定部3内の図示しない記憶部に記憶された定型文から任意に選択することにより決定する。
ステップS43において、人型ロボット5−2は、対話成立発話に続いて、第二発話の内容を表す音声をスピーカから出力する。ステップS43は、ステップS42の後に行われる。すなわち、対話システムは、ユーザ発話を受け付け、対話成立発話の内容を表す音声をスピーカから出力した後に、第二発話の内容を表す音声をスピーカから出力する。第二発話とは、生成対象発話に関連する内容を含む発話である。生成対象発話とは、少なくともユーザ発話を含むユーザ発話以前に人型ロボットとユーザとの間で行われた対話に含まれる発話である。すなわち、生成対象発話の一例は、ユーザ発話である。また、生成対象発話の別の例は、ユーザ発話より前に発話決定部3が決定して提示部5−1または5−2が提示した発話と、ユーザ発話より前にユーザが発話した発話と、のうちの1つ以上の発話と、ユーザ発話と、による2つ以上の発話である。
第二発話の内容を表すテキストは、例えば、発話決定部3へ生成対象発話に含まれる単語を入力し、発話決定部3が、あらかじめ定めたルールに従って、入力された単語に基づいて決定する。直前までの発話内容に応じて発話内容を決定する技術は、従来の対話システムにおいて用いられているものを利用すればよく、例えば、非特許文献1に記載されたシナリオ対話システムや非特許文献2−3に記載された雑談対話システムなどを用いることができる。発話決定部3がシナリオ対話システムにおいて用いられている技術を用いる場合は、例えば、発話決定部3は、直前の5発話程度を含む対話について、各発話に含まれる単語や各発話を構成する焦点語と発話決定部3内の図示しない記憶部に記憶された各シナリオに含まれる単語や焦点語との単語間距離が所定の距離より近いシナリオを選択し、選択したシナリオに含まれるテキストを選択することにより第二発話の内容を表すテキストを決定する。発話決定部3が雑談対話システムにおいて用いられている技術を用いる場合は、発話決定部3は、例えば、ユーザの発話に含まれる単語をトリガーとして、あらかじめ記述して発話決定部3内の図示しない記憶部に記憶しておいたルールに従って第二発話の内容を表すテキストを決定してもよいし、ユーザの発話に含まれる単語と共起関係や係り受け関係にある単語に基づいて自動的にルールを生成し、そのルールに従って第二発話の内容を表すテキストを決定してもよい。
以降、ユーザと対話装置との間で第二発話の内容を話題とした対話が続行される。例えば、第二発話をシナリオ対話システムにおいて用いられている技術により生成した場合には、シナリオ対話システムにおいて用いられている技術により選択したシナリオに沿った対話がユーザと対話装置との間で実行されるように、対話システムはシナリオ対話システムにおいて用いられている技術により決定したシナリオ発話の発話内容を表す音声をスピーカから出力する。また、例えば、第二発話を雑談対話システムにおいて用いられている技術により生成した場合には、ユーザの発話に基づいて雑談対話システムにおいて用いられている技術により決定した雑談発話の発話内容を表す音声をスピーカから出力する。以降の発話を行うロボットは、何れか1つの人型ロボットであってもよいし、複数の人型ロボットであってもよい。
以下、この実施形態の対話システムとユーザとによる対話内容の具体例を示す。具体例の記述方法は上述の実施形態と同様である。
H:「お腹がぐるぐるするー」
R1→H:「へー」(※1)
R2→H:「お腹空いたからラーメンが食べたい」(※2)
※1は対話成立発話である。相槌(「へー」)のみを行い、ユーザの発話を理解していることを示している。※2は第二発話である。ユーザの発話に含まれる「お腹」に対応した発話を返答している。なお、※1以降の人型ロボットの発話は、発話する人型ロボットが逆でもよいし、話しかける相手が人間でも他のロボットでも人間と他のロボットの両方でもよい。
上記の実施形態では、対話システムがユーザの発話に対して常に対話成立発話と第二発話とを出力する例を説明した。しかし、対話システムがユーザ発話に対する返答を生成できない場合や対話システムが決定したユーザ発話に対する返答が適当な内容でない場合、すなわち、生成対象発話の内容を表すテキストに関連させて生成した発話候補のテキストが所定の基準を満たさなかった場合のみに、対話システムの提示部が対話成立発話と第二発話とを提示するように構成してもよい。
この構成では、発話決定部3は、まず、生成対象発話の内容を表すテキストに関連する発話候補のテキストを生成する。発話決定部3は、次に、発話候補のテキストが所定の基準を満たすかを判定する。発話候補のテキストが所定の基準を満たさなかった場合には、発話決定部3は、対話成立発話の内容を表すテキストを決定する。また、発話候補のテキストが所定の基準を満たさなかった場合には、生成対象発話の内容を表すテキストのうちの発話候補を生成する際に関連させた語より少ない語に関連する発話のテキストを生成して、生成された発話のテキストを第二発話のテキストとする。一例として、生成対象発話がL語を含む場合の発話決定部3の動作を説明する。発話決定部3は、まず、L語のうちM語を用いて発話候補のテキストを生成する。発話決定部3は、次に、発話候補のテキストが所定の基準を満たすかを判定する。発話候補のテキストが所定の基準を満たさなかった場合に、発話決定部3は、対話成立発話の内容を表すテキストを出力する。また、発話候補のテキストが所定の基準を満たさなかった場合には、発話決定部3は、生成対象発話の内容を表すテキストに含まれるL語のうちM語よりも少ないN語を用いて発話のテキストを生成して、その生成された発話のテキストを第二発話のテキストとして出力する。ここで、Nは1以上の整数であり、M,Lは2以上の整数であり、N<M≦Lの関係を満たすものとする。
また、例えば、発話決定部3を、すなわち、生成対象発話の内容を表すテキストに関連させて生成した発話候補のテキストが所定の基準を満たさなかった場合に、一旦相槌等の対話成立発話により対話を成立させた後、所定の基準を満たさなかった発話候補であってもそのまま第二発話として出力する構成としてもよい。この構成では、例えば、発話決定部3は、まず、生成対象発話の内容を表すテキストに関連する発話候補のテキストを生成する。発話決定部3は、次に発話候補のテキストが所定の基準を満たすかを判定する。発話候補のテキストが所定の基準を満たさなかった場合には、発話決定部3は、対話成立発話の内容を表すテキストを決定する。また、発話候補のテキストが所定の基準を満たさなかった場合には、発話決定部3は、発話候補のテキストを第二発話のテキストとしてそのまま出力する。発話決定部3は、次に、発話候補のテキストが所定の基準を満たすかを判定する。発話候補のテキストが所定の基準を満たさなかった場合には、発話決定部3は、対話成立発話の内容を表すテキストを決定する。
また、ユーザ発話の一部または全部により構成される発話などのユーザ発話の少なくとも一部を含む発話を対話成立発話としてもよい。すなわち、発話決定部3が、ユーザ発話の内容を表すテキストの少なくとも一部を含む発話を対話成立発話のテキストとして決定するように対話システムを構成してもよい。この構成における対話システムとユーザとによる対話内容の具体例を示す。
H:「博多で食べたとんこつラーメンがめっちゃ美味しかったよ」
R(1→H):「ラーメン」(※1)
R(2→H):「お腹空いたからラーメンが食べたい」(※2)
※1は対話成立発話であり、※2は第二発話である。この具体例では、対話システムは、人の発話に含まれる一部の単語(「ラーメン」)のみを対話成立発話として提示することでユーザの発話を理解していることを示した上で、ユーザの発話に含まれる「ラーメン」に対応した返答を第二発話として提示している。すなわち、この具体例では、発話決定部3が、ユーザ発話の内容を表すテキストに含まれる1つの単語を対話成立発話のテキストとして決定する。
この構成における対話システムとユーザとによる対話内容の別の具体例を示す。
H:「博多で食べたとんこつラーメンがめっちゃ美味しかったよ」
R(1→H):「とんこつラーメン美味しいよね」(※1)
R(2→H):「お腹空いたからラーメンが食べたい」(※2)
※1は対話成立発話であり、※2は第二発話である。この具体例では、対話システムは、人の発話のテキストに含まれる一部の内容語(「とんこつラーメン」「美味しい」)を含み、かつ、人の発話に同意する発話を対話成立発話として提示することでユーザの発話を理解していることを示した上で、ユーザの発話に含まれる「ラーメン」に対応した返答を第二発話として提示している。すなわち、この具体例では、発話決定部3が、ユーザ発話の内容を表すテキストに含まれる一部の単語を含む発話、より具体的には、人の発話のテキストに含まれる一部の内容語を含み、かつ、人の発話に同意する発話を、対話成立発話のテキストとして決定する。
この構成における対話システムとユーザとによる対話内容の別の具体例を示す。
H:「博多で食べたとんこつラーメンがめっちゃ美味しかったよ」
R(1→H):「博多で食べたんだ」(※1)
R(2→H):「お腹空いたからラーメンが食べたい」(※2)
※1は対話成立発話であり、※2は第二発話である。この具体例では、対話システムは、人の発話のテキストに含まれる一部の内容語(「博多」「食べる」)を含み、かつ、人の発話に同意する発話を対話成立発話として提示することでユーザの発話を理解していることを示した上で、ユーザの発話に含まれる「ラーメン」に対応した返答を第二発話として提示している。すなわち、この具体例では、発話決定部3が、ユーザ発話の内容を表すテキストに含まれる一部の単語を含む発話、より具体的には、人の発話のテキストに含まれる一部の内容語を含み、かつ、人の発話に同意する発話を、対話成立発話のテキストとして決定する。
なお、上記の具体例では、ユーザ発話の少なくとも一部を含む発話を対話成立発話とする例を示したが、ユーザ発話の少なくとも一部を含む発話に含まれる語を上位語に置き換えて得られる発話、すなわち、ユーザ発話の一部の上位語を含む発話、を対話成立発話としてもよい。この場合は、例えば、発話決定部3は、ユーザ発話の内容を表すテキストの少なくとも一部の語の上位語を取得し、当該上位語を含む発話文のテキストを得て、得られた発話文のテキストを対話成立発話のテキストとして決定する。
以上の具体例でも説明したように、要するに、この実施形態における対話成立発話は、対話システムがユーザの発話を受け止めたとユーザに感じさせるよう、ユーザ発話の一部または全部を実質的に反復する発話であり、すなわち、ユーザが同意しやすい発話である。なお、ユーザ発話に含まれる単語数が多い場合には、対話成立発話を、ユーザ発話の全部を含まずにユーザ発話の一部を実質的に反復する発話とすることにより、ユーザが同意しやすい発話であり、かつ、単なるオウム返しとユーザに感じさせない程度に情報量を抑えた発話を対話システムが行うことができる。なお、ユーザ発話が十分に短い場合は、対話システムがユーザ発話を単に繰り返したりユーザ発話の上位語を発話したりしても、すなわち、ユーザ発話の全部を実質的に繰り返しても、提示する情報量は少ないため、ユーザにオウム返しとは捉えられない。
対話成立発話の内容を表すテキストは、発話決定部3が、例えば、あらかじめ定められ発話決定部3内の図示しない記憶部に記憶された定型文から任意に選択することにより決定する。なお、相槌やフィラーなどの内容語を含まない発話と、ユーザ発話の少なくとも一部を含む発話と、を含む発話を、対話成立発話としてもよい。
なお、対話システムが複数の人型ロボットを含む構成において、ユーザ発話がある人型ロボットの発話に対する発話である場合には、何れの人型ロボットにも対話成立発話を提示させることなく、ユーザ発話の元となる発話をした人型ロボットとは別の人型ロボットが第二発話を提示する構成としてもよい。例えば、対話システムが人型ロボット5−1と5−2を含む構成において、ユーザ発話が人型ロボット5−1の発話に対する発話である場合には、人型ロボット5−1にも人型ロボット5−2にも対話成立発話を提示させることなく、人型ロボット5−2が第二発話を提示する構成としてもよい。この構成とする場合は、発話決定部3は、第二発話のテキストを決定すればよく、対話成立発話のテキストを決定しなくてもよい。
発話候補の内容が適切であるかを判定するための所定の基準は、例えば、1.ユーザ発話の文脈との不一致、2.常識的知識の欠如、3.時制や事実性の不一致、の何れでもないことである。以下、それぞれの基準について、具体例を挙げて詳しく説明する。
1.ユーザ発話の文脈との不一致とは、生成対象発話の内容を表すテキストに基づいて生成した発話候補のテキストが、ユーザ発話のテキストの文脈と一致しない場合のことである。ユーザ発話の文脈との不一致の具体例を以下に挙げる。
H:「明日は寒くなるみたいだから、コート着なきゃ」
R1→H:「今年のコートの流行はチェスターコートだよ」
この例では、ユーザは「コートを着る理由」を発話しているのに対して、ロボットは「コートの流行」について発話しており、文脈が一致していない。具体的な判定方法としては、発話決定部3が、ユーザ発話のテキストと生成した発話候補のテキストとで、単語(名詞以外を含む)、名詞句、述語項構造を含めて単位とし、話題の連続性を評価することにより行う。例えば、発話決定部3が、話題の連続性の指標値が、発話決定部3内の図示しない記憶部に予め記憶した閾値よりも話題の連続性が低い場合に、発話候補のテキストがユーザ発話の文脈と不一致であると判定する。話題の連続性の評価には、話題を構成する単語同士の単語間距離や、公知の対話破綻検出技術(例えば、上記参考文献3参照)を用いることができる。
2.常識的知識の欠如は、生成対象発話の内容を表すテキストに基づいて生成した発話候補のテキストが、例えば、常識的な事項に関する質問であるなど、常識的な知識が欠如している印象を与える場合である。このような場合、ユーザは対話システムに対する信頼を失うため、ユーザが対話を止めてしまうおそれがある。常識的知識の欠如の具体例を以下に挙げる。
H:「明日は寒くなるみたいだから、コート着なきゃ」
R1→H:「寒いとコートを着るんだね」
この例では、ロボットが「寒いとコートを着る」という人間にとって常識的な事柄について質問をしており、常識的な知識が欠如している印象を与える。具体的な判定方法としては、発話決定部3が、発話候補のテキストを構成する焦点語の組み合わせ(上記の例では「寒い」「コート」「着る」)を、事前に収集して発話決定部3内の図示しない記憶部に記憶した大量のテキスト中から検索し、その出現数が発話決定部3内の図示しない記憶部にあらかじめ記憶した閾値より大きく、かつ、発話候補のテキストが相手に対する確認を意図する内容である場合に、発話候補のテキストは常識的知識が欠如しているものであると判断する。焦点語を検索するために、事前に収集して発話決定部3内の図示しない記憶部に記憶しておくテキストは、例えばTwitter(登録商標)などウェブ上から収集したものであればよい。
3.時制や事実性の不一致は、ユーザ発話のテキストと生成された発話候補のテキストとで時制や事実性が一致しない場合である。時制や事実性の不一致の具体例を以下に挙げる。
H:「昨日は寒くなったから、ダウンを出してきたよ」
R1→H:「ダウンを出したいの?」
この例では、ユーザは「ダウンを出した」という過去のイベントについて発話しているのに対して、ロボットは「ダウンを出したいの?」と完了したイベントについて発生の希望を尋ねており、時制も事実性も一致していない。具体的な判定方法としては、例えば、発話決定部3が、ユーザ発話のテキストと生成された発話候補のテキストとにおいて、述語項構造で表現される発話中のイベントの時制や事実性が異なる場合、もしくは、あらかじめ定めたルールに合致しない場合、時制や事実性の不一致と判断する。
<変形例>
上述した実施形態では、エージェントとしてロボットを用いて音声による対話を行う例を説明したが、上述した実施形態のロボットは身体等を有する人型ロボットであっても、身体等を有さないロボットであってもよい。また、この発明の対話技術はこれらに限定されず、人型ロボットのように身体等の実体がなく、発声機構を備えないエージェントを用いて対話を行う形態とすることも可能である。そのような形態としては、例えば、コンピュータの画面上に表示されたエージェントを用いて対話を行う形態が挙げられる。より具体的には、「LINE」(登録商標)や「2ちゃんねる」(登録商標)のような、複数アカウントがテキストメッセージにより対話を行うグループチャットにおいて、ユーザのアカウントと対話装置のアカウントとが対話を行う形態に適用することも可能である。この形態では、エージェントを表示する画面を有するコンピュータは人の近傍にある必要があるが、当該コンピュータと対話装置とはインターネットなどのネットワークを介して接続されていてもよい。つまり、本対話システムは、人とロボットなどの話者同士が実際に向かい合って話す対話だけではなく、話者同士がネットワークを介してコミュニケーションを行う会話にも適用可能である。
変形例の対話システム20は、図7に示すように、入力部1、発話決定部3、および提示部5を備える。図7の例では、変形例の対話システム20は1台の対話装置21からなり、変形例の対話装置21は、入力部1、発話決定部3、および提示部5を備える。
変形例の対話装置は、例えば、スマートフォンやタブレットのようなモバイル端末、もしくはデスクトップ型やラップトップ型のパーソナルコンピュータなどの情報処理装置である。以下、対話装置がスマートフォンであるものとして説明する。提示部5はスマートフォンが備える液晶ディスプレイである。この液晶ディスプレイにはチャットアプリケーションのウィンドウが表示され、ウィンドウ内にはグループチャットの対話内容が時系列に表示される。グループチャットとは、チャットにおいて複数のアカウントが互いにテキストメッセージを投稿し合い対話を展開する機能である。このグループチャットには、対話装置が制御する仮想的な人格に対応する複数の仮想アカウントと、ユーザのアカウントとが参加しているものとする。すなわち、本変形例は、エージェントが、対話装置であるスマートフォンの液晶ディスプレイに表示された仮想アカウントである場合の一例である。ユーザはソフトウェアキーボードを用いて入力部1へ発話内容を入力し、自らのアカウントを通じてグループチャットへ投稿することができる。発話決定部3はユーザのアカウントからの投稿に基づいて対話装置からの発話内容を決定し、各仮想アカウントを通じてグループチャットへ投稿する。なお、スマートフォンに搭載されたマイクロホンと音声認識機能を用い、ユーザが発声により入力部1へ発話内容を入力する構成としてもよい。また、スマートフォンに搭載されたスピーカと音声合成機能を用い、各対話システムから得た発話内容を、各仮想アカウントに対応する音声でスピーカから出力する構成としてもよい。
なお、エージェントの発話が提示部5(ディスプレイ)に同時に表示されると、対話が活発である、あるいは盛り上がっている、と好意的に感じられる可能性がある一方、ユーザが一度に読み切れないほどの量のテキストが提示されると、ユーザが対話を継続しにくく感じる可能性があるため、ユーザに認知負荷をかけられない場面、落ち着いた雰囲気が求められる場面など、使用される状況に応じて、発話を順次表示することにしてもよい。なお、順次表示する場合には、所定の時間間隔を開けて表示してもよい。時間間隔は固定であっても可変であってもよい。
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。