会話処理装置および方法、並びに記録媒体
【課題】 ユーザに楽しく自然な会話を提供する。
【解決手段】 ロボット1のプロファイルメモリ121には、ユーザの趣向に関するデータ(プロファイルデータ)が記憶されている。サーバ101の話題データベース110には、話題となる情報が記憶されており、その情報は、ロボット1に対してインターネットなどを介して提供される。ロボット1は、提供された情報のうち、プロファイルメモリ121に記憶されているプロファイルデータをフィルタとし、フィルタ112Bによりフィルタリングした結果、残った情報のみが、話題メモリ76に記憶される。話題メモリ76に記憶されている情報は、ユーザと会話している時に用いられる。
【解決手段】 ロボット1のプロファイルメモリ121には、ユーザの趣向に関するデータ(プロファイルデータ)が記憶されている。サーバ101の話題データベース110には、話題となる情報が記憶されており、その情報は、ロボット1に対してインターネットなどを介して提供される。ロボット1は、提供された情報のうち、プロファイルメモリ121に記憶されているプロファイルデータをフィルタとし、フィルタ112Bによりフィルタリングした結果、残った情報のみが、話題メモリ76に記憶される。話題メモリ76に記憶されている情報は、ユーザと会話している時に用いられる。
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は会話処理装置および方法、並びに記録媒体に関し、特に、ユーザと会話を行うロボットなどに用いて好適な会話処理装置および方法、並びに記録媒体。
【0002】
【従来の技術】従来より、玩具等として、タッチスイッチが押圧操作されると、合成音を出力するロボット(ぬいぐるみ状のものを含む)が数多く製品化されている。
【0003】また、コンピュータとの定型的な会話方式(タスクオリエンテッド)が用いられ、航空券の予約が行なわれたり、旅行案内のサービスを提供するなどのサービスがある。これは、予め決められたことを話すだけで、雑談を含む人間との自然な会話を行うものではなかった。コンピュータと人間とが、雑談を含む自然な会話を行うための試みとして、Eliza(James Allen:Natural Language Understanding,6乃至9頁などに開示されている)などの実験的なものがある。
【0004】
【発明が解決しようとする課題】上述したElizaなどは、人間(ユーザ)とやりとりしている会話の内容は、殆ど理解しておらず、換言すれば、オウム返し的な会話しかできないので、ユーザは、すぐに飽きてしまうといった課題があった。
【0005】ユーザが飽きないような、かつ自然な流れでの会話を行うには、1つの話題を長々と話したり、逆に、話題を次々と変えていったりといったことがないようにすることが必要である。すなわち、自然な話題遷移が、自然な会話を行うためには大切な要素となる。また、話題を遷移するためには、コンピュータ側でユーザに提供するための、会話が楽しくなるような話題を記憶しておく必要がある。
【0006】本発明はこのような状況に鑑みてなされたものであり、会話の話題となりうる情報をネットワークを介してダウンロードすることにより、ユーザに提供する話題を新鮮なものとし、もって、ユーザに楽しく、自然な会話を提供することを目的とする。
【0007】
【課題を解決するための手段】請求項1に記載の会話処理装置は、ユーザと会話する話題に関する情報を記憶する記憶手段と、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得手段と、ユーザの発話を認識する認識手段と、記憶手段により記憶されている情報、または、認識手段による認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成手段とを含むことを特徴とする。
【0008】他の装置と通信する通信手段をさらに含み、記憶手段は、他の装置が、取得手段により取得されたユーザのプライベートな情報を基に選択した話題に関する情報を記憶するようにすることができる。
【0009】前記記憶手段は、他の装置から送信された話題に関する情報の中から、取得手段により取得されたユーザのプライベートな情報を基に、所定の情報を選択し、記憶するようにすることができる。
【0010】会話は、音声または文字により行われるようにすることができる。
【0011】ロボットに内蔵されるようにすることができる。
【0012】請求項6に記載の会話処理方法は、ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得ステップと、ユーザの発話を認識する認識ステップと、記憶制御ステップの処理で記憶された情報、または、認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする。
【0013】請求項7に記載の記録媒体のプログラムは、ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得ステップと、ユーザの発話を認識する認識ステップと、記憶制御ステップの処理で記憶された情報、または、認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする。
【0014】請求項1に記載の会話処理装置、請求項6に記載の会話処理方法、および請求項7に記載の記録媒体においては、ユーザと会話する話題に関する情報が記憶され、ユーザのプライベートな情報が、ユーザとの会話のなかから取得され、ユーザの発話が認識され、記憶されている情報、または、認識結果のうち、少なくとも一方が用いられて、ユーザと会話するための応答文が生成される。
【0015】
【発明の実施の形態】図1は、本発明を適用したロボットの一実施の形態の外観構成例を示しており、図2は、その電気的構成例を示している。
【0016】本実施の形態では、ロボットは、犬形状のものとされており、胴体部ユニット2の前後左右に、それぞれ脚部ユニット3A,3B,3C,3Dが連結されるとともに、胴体部ユニット2の前端部と後端部に、それぞれ頭部ユニット4と尻尾部ユニット5が連結されることにより構成されている。
【0017】尻尾部ユニット5は、胴体部ユニット2の上面に設けられたベース部5Bから、2自由度をもって湾曲または揺動自在に引き出されている。胴体部ユニット2には、ロボット全体の制御を行うコントローラ10、ロボットの動力源となるバッテリ11、並びにバッテリセンサ12および熱センサ13からなる内部センサ部14などが収納されている。
【0018】頭部ユニット4には、「耳」に相当するマイク(マイクロフォン)15、「目」に相当するCCD(Charge Coupled Device)カメラ16、触覚に相当するタッチセンサ17、「口」に相当するスピーカ18などが、それぞれ所定位置に配設されている。
【0019】脚部ユニット3A乃至3Dそれぞれの関節部分や、脚部ユニット3A乃至3Dそれぞれと胴体部ユニット2の連結部分、頭部ユニット4と胴体部ユニット2の連結部分、並びに尻尾部ユニット5と胴体部ユニット2の連結部分などには、図2に示すように、それぞれアクチュエータ3AA1乃至3AAK、3BA1乃至3BAK、3CA1乃至3CAK、3DA1乃至3DAK、4A1乃至4AL、5A1および5A2が配設されており、これにより、各連結部分は、所定の自由度をもって回転することができるようになっている。
【0020】頭部ユニット4におけるマイク15は、ユーザからの発話を含む周囲の音声(音)を集音し、得られた音声信号を、コントローラ10に送出する。CCDカメラ16は、周囲の状況を撮像し、得られた画像信号を、コントローラ10に送出する。
【0021】タッチセンサ17は、例えば、頭部ユニット4の上部に設けられており、ユーザからの「なでる」や「たたく」といった物理的な働きかけにより受けた圧力を検出し、その検出結果を圧力検出信号としてコントローラ10に送出する。
【0022】胴体部ユニット2におけるバッテリセンサ12は、バッテリ11の残量を検出し、その検出結果を、バッテリ残量検出信号としてコントローラ10に送出する。熱センサ13は、ロボット内部の熱を検出し、その検出結果を、熱検出信号としてコントローラ10に送出する。
【0023】コントローラ10は、CPU(Central Processing Unit)10Aやメモリ10B等を内蔵しており、CPU10Aにおいて、メモリ10Bに記憶された制御プログラムが実行されることにより、各種の処理を行う。即ち、コントローラ10は、マイク15や、CCDカメラ16、タッチセンサ17、バッテリセンサ12、熱センサ13から与えられる音声信号、画像信号、圧力検出信号、バッテリ残量検出信号、熱検出信号に基づいて、周囲の状況や、ユーザからの指令、ユーザからの働きかけなどの有無を判断する。
【0024】さらに、コントローラ10は、この判断結果等に基づいて、続く行動を決定し、その決定結果に基づいて、アクチュエータ3AA1乃至3AAK、3BA1乃至3BAK、3CA1乃至3CAK、3DA1乃至3DAK、4A1乃至4AL、5A1、5A2のうちの必要なものを駆動させ、これにより、頭部ユニット4を上下左右に振らせたり、尻尾部ユニット5を動かせたり、各脚部ユニット3A乃至3Dを駆動して、ロボットを歩行させるなどの行動を行わせる。
【0025】また、コントローラ10は、必要に応じて、合成音を生成し、スピーカ18に供給して出力させたり、ロボットの「目」の位置に設けられた図示しないLED(Light Emitting Diode)を点灯、消灯または点滅させる。
【0026】以上のようにして、ロボットは、周囲の状況等に基づいて自律的に行動をとることができるようになっている。
【0027】次に、図3は、図2のコントローラ10の機能的構成例を示している。なお、図3に示す機能的構成は、CPU10Aが、メモリ10Bに記憶された制御プログラムを実行することで実現されるようになっている。
【0028】コントローラ10は、特定の外部状態を認識するセンサ入力処理部31、センサ入力処理部31の認識結果等を累積して、感情および本能の状態を表現する感情/本能モデル部32、センサ入力処理部31の認識結果等に基づいて、続く行動を決定する行動決定機構部33、行動決定機構部33の決定結果に基づいて、実際にロボットに行動を起こさせる姿勢遷移機構部34、各アクチュエータ3AA1乃至5A1および5A2を駆動制御する制御機構部35、合成音を生成する音声合成部36、並びに音声合成部36の出力を制御する音響処理部37から構成されている。
【0029】センサ入力処理部31は、マイク15や、CCDカメラ16、タッチセンサ17等から与えられる音声信号、画像信号、圧力検出信号等に基づいて、特定の外部状態や、ユーザからの特定の働きかけ、ユーザからの指示等を認識し、その認識結果を表す状態認識情報を、感情/本能モデル部32および行動決定機構部33に通知する。
【0030】即ち、センサ入力処理部31は、音声認識部31Aを有しており、音声認識部31Aは、行動決定機構部33からの制御にしたがい、マイク15から与えられる音声信号を用いて、音声認識を行う。そして、音声認識部31Aは、その音声認識結果としての、例えば、「歩け」、「伏せ」、「ボールを追いかけろ」等の指令その他を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0031】音声認識部31Aは、また、音声認識を行った認識結果を、会話処理部38にも出力する。これは、後述するユーザとの会話を行うためである。
【0032】また、センサ入力処理部31は、画像認識部31Bを有しており、画像認識部31Bは、CCDカメラ16から与えられる画像信号を用いて、画像認識処理を行う。そして、画像認識部31Bは、その処理の結果、例えば、「赤い丸いもの」や、「地面に対して垂直なかつ所定高さ以上の平面」等を検出したときには、「ボールがある」や、「壁がある」等の画像認識結果を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0033】さらに、センサ入力処理部31は、圧力処理部31Cを有しており、圧力処理部31Cは、タッチセンサ17から与えられる圧力検出信号を処理する。そして、圧力処理部31Cは、その処理の結果、所定の閾値以上で、かつ短時間の圧力を検出したときには、「たたかれた(しかられた)」と認識し、所定の閾値未満で、かつ長時間の圧力を検出したときには、「なでられた(ほめられた)」と認識して、その認識結果を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0034】感情/本能モデル部32は、ロボットの感情と本能の状態を表現する感情モデルと本能モデルをそれぞれ管理している。行動決定機構部33は、センサ入力処理部31からの状態認識情報や、感情/本能モデル部32からの感情/本能状態情報、時間経過等に基づいて、次の行動を決定し、決定された行動の内容を行動指令情報として、姿勢遷移機構部34に送出する。
【0035】姿勢遷移機構部34は、行動決定機構部33から供給される行動指令情報に基づいて、ロボットの姿勢を、現在の姿勢から次の姿勢に遷移させるための姿勢遷移情報を生成し、これを制御機構部35に出力する。制御機構部35は、姿勢遷移機構部34からの姿勢遷移情報に従って、アクチュエータ3AA1乃至5A1および5A2を駆動するための制御信号を生成し、これをアクチュエータ3AA1乃至5A1および5A2に送出する。これにより、アクチュエータ3AA1乃至5A1および5A2は、制御信号に従って、駆動し、ロボットは、自律的に行動を起こす。
【0036】上述したような構成をもつことにより、ロボット1は、動作すると共に、ユーザと会話することもできる。会話を行うための音声会話システムは、音声認識部31A、会話処理部38、音声合成部36、および音響処理部37から構成される。
【0037】図4は、音声認識部31Aの詳細な構成を示す図である。ユーザの発話は、マイク15に入力され、マイク15では、その発話が、電気信号としての音声信号に変換される。この音声信号は、音声認識部31AのAD(Analog Digital)変換部51に供給される。AD変換部51では、マイク15からのアナログ信号である音声信号がサンプリング、量子化され、デジタル信号である音声データに変換される。この音声データは、特徴抽出部52に供給される。
【0038】特徴抽出部52は、AD変換部51からの音声データについて、適当なフレームごとに、例えば、スペクトルや、線形予測係数、ケプストラム係数、線スペクトル対等の特徴パラメータを抽出し、特徴量バッファ53およびマッチング部54に供給する。特徴量バッファ53では、特徴抽出部52からの特徴パラメータが一時記憶される。
【0039】マッチング部54は、特徴抽出部52からの特徴パラメータ、または特徴量バッファ53に記憶された特徴パラメータに基づき、音響モデルデータベース55、辞書データベース56、および文法データベース57を必要に応じて参照しながら、マイク15に入力された音声(入力音声)を認識する。
【0040】即ち、音響モデルデータベース55は、音声認識する音声の言語における個々の音素や音節などの音響的な特徴を表す音響モデルを記憶している。ここで、音響モデルとしては、例えば、HMM(Hidden Markov Model)などを用いることができる。辞書データベース56は、認識対象の各単語について、その発音に関する情報が記述された単語辞書を記憶している。文法データベース57は、辞書データベース56の単語辞書に登録されている各単語が、どのように連鎖する(つながる)かを記述した文法規則を記憶している。ここで、文法規則としては、例えば、文脈自由文法(CFG)や、統計的な単語連鎖確率(N-gram)などに基づく規則を用いることができる。
【0041】マッチング部54は、辞書データベース56の単語辞書を参照することにより、音響モデルデータベース55に記憶されている音響モデルを接続することで、単語の音響モデル(単語モデル)を構成する。さらに、マッチング部54は、幾つかの単語モデルを、文法データベース57に記憶された文法規則を参照することにより接続し、そのようにして接続された単語モデルを用いて、特徴パラメータに基づき、例えば、HMM法等によって、マイク15に入力された音声を認識する。そして、マッチング部54による音声認識結果は、例えば、テキスト等で出力される。
【0042】なお、マッチング部54は、会話処理部38から、そこで得られる情報を受信することができるようになっており、その会話管理情報に基づいて、精度の高い音声認識を行うことができるようになっている。また、マッチング部54は、入力された音声を対象として、再度、処理を行うことが必要な場合は、特徴量バッファ53に記憶された特徴パラメータを用いて処理を行うようになっており、これにより、ユーザに再度の発話を要求せずに済むようになっている。
【0043】図5は、会話処理部38の詳細な構成を示す図である。音声認識部31Aから出力された認識結果(テキストデータ)は、会話処理部38の言語処理部71に入力される。言語処理部71は、辞書データベース72と解析用文法データベース73に記憶されているデータを基に、入力された音声認識結果を、形態素解析、構文解析などの解析を行うことにより、単語の情報や構文の情報などの言語情報を抽出する。また、辞書に記述された内容を基に、入力の音声発話の意味、意図なども抽出する。
【0044】すなわち、辞書データベース72には、単語の表記や解析用文法を適用するために必要な品詞情報などの情報、単語の個別の意味情報などを記憶されており、解析用文法データベース73には、辞書データベース72に記憶されている各単語の情報を基に、単語連鎖に関する制約を記述したデータが記憶されている。これらのデータを用いて言語処理部71は、入力された音声認識結果のテキストデータを解析する。
【0045】解析用文法データベース73に記憶されているデータは、正規文法、文脈自由文法、統計的な単語連鎖確立、意味的な解析までを含める場合はHPSGなどの意味論を含んだ言語理論などを用いる、テキスト解析に必要なデータである。
【0046】言語処理部71により抽出された情報に基づき、話題管理部74は、現在の話題を会話中話題メモリ77に管理、更新させると共に、次の話題遷移(詳細は後述する)に備えて、会話履歴メモリ75に管理されている情報を適宜更新する。また、話題管理部74は、話題遷移を起こす場合、話題メモリ76に記憶されている情報を参照して遷移する話題を決定する。
【0047】会話履歴メモリ75は、会話された会話の内容自身、あるいは、会話から抽出された情報が蓄積されており、現在会話されている話題(会話中話題メモリ77に記憶されてる話題)より以前の会話で、どのような話題が話されたのかを調査し、話題の遷移をコントロールする際に用いられるデータが記憶されている。
【0048】話題メモリ76は、ユーザと会話を実行している際、その会話の内容に一貫性を保つための情報が複数格納されている。話題メモリ76は、話題管理部74から話題の遷移を起こす際の遷移先の話題を探索するとき、或いは、ユーザからの話題の変更に追従して話題を変更するときに、参照される情報を蓄積しているメモリである。この話題メモリ76に記憶されている情報は、後述する方法により追加、更新される。
【0049】会話中話題メモリ77は、現在話している話題に関する情報が格納されている。具体的には、話題メモリ76に記憶されている話題に関する情報から1つ、話題管理部74により選択された情報を記憶している。話題管理部74は、会話中話題メモリ77に記憶されている情報を基に、ユーザとの会話を進めていく。そのため、会話でやりとりされる情報により、例えば、どの内容を既に話し終わったかなどを管理し、その情報は、適宜更新される。
【0050】会話生成部78は、会話中話題メモリ77で管理されている会話中の話題に関する情報と、直前のユーザの発話から言語処理部71により抽出された情報などに基づき、辞書データベース79と会話生成規則データベース80に記憶されているデータを参照して適切な応答文(テキストデータ)を生成する。
【0051】辞書データベース79は、応答文を作成するのに必要な単語情報が記憶されている。辞書データベース72と辞書データベース79は、同じ情報を記憶するようにしても良い。従って、共用することも可能である。
【0052】会話生成規則データベース80は、会話中話題メモリ77の内容に基づいて、どのような応答文を、どのように生成するのかに関する規則が記憶されている。例えば、話題の中の、まだ話していない内容を話す、相槌を最初に入れる、などの話題に対する話の進め方と共に、仮に、話題が意味的なフレーム構造などで管理されているなら、そこから自然言語文を生成する規則なども書かれている。この意味構造から自然言語文を生成する方法は、言語処理部71により行われる処理の逆の処理として行うことにより、実現することが可能である。
【0053】このようにして、会話生成部78により生成された、テキストデータとしての応答文は、音声合成部36に出力される。
【0054】図6は、音声合成部36の構成例を示している。テキスト解析部91には、会話処理部38が出力するテキストが、音声合成処理の対象として入力されるようになっており、テキスト解析部91は、辞書データベース92や解析用文法データベース93を参照しながら、そのテキストを解析する。
【0055】即ち、辞書データベース92には、各単語の品詞情報や、読み、アクセント等の情報が記述された単語辞書が記憶されており、また、解析用文法データベース93には、辞書データベース92の単語辞書に記述された単語について、単語連鎖に関する制約等の解析用文法規則が記憶されている。そして、テキスト解析部91は、この単語辞書および解析用文法規則に基づいて、そこに入力されるテキストの形態素解析や構文解析等の解析を行い、後段の規則合成部94で行われる規則音声合成に必要な情報を抽出する。ここで、規則音声合成に必要な情報としては、例えば、ポーズの位置や、アクセントおよびイントネーションを制御するための情報、その他の韻律情報や、各単語の発音等の音韻情報などがある。
【0056】テキスト解析部91で得られた情報は、規則合成部94に供給され、規則合成部94では、音素片データベース95を用いて、テキスト解析部91に入力されたテキストに対応する合成音の音声データ(デジタルデータ)が生成される。
【0057】即ち、音素片データベース95には、例えば、CV(Consonant, Vowel)や、VCV、CVC等の形で音素片データが記憶されており、規則合成部94は、テキスト解析部91からの情報に基づいて、必要な音素片データを接続し、さらに、ポーズ、アクセント、イントネーション等を適切に付加することで、テキスト解析部91に入力されたテキストに対応する合成音の音声データを生成する。
【0058】この音声データは、DA変換部96に供給され、そこで、アナログ信号としての音声信号に変換される。この音声信号は、図示せぬスピーカに供給され、これにより、テキスト解析部91に入力されたテキストに対応する合成音が出力される。
【0059】上述したように、音声会話システムは構成される。ロボット1は、音声会話システムを備えることにより、ユーザと会話を行うことができるのだが、ここで、人と人との会話について考える。人と人とが会話しているとき、1つの話題を永遠と話していることはなく、きりのいいところで、話題を変えることが一般的である。話題を変える際、全く関連性のない話題に切り変わる場合もあるが、関連性がある話題に切り変わることの方が自然な会話である。このようなことは、人(ユーザ)とロボット1との間で交わされる会話においても当てはまることである。
【0060】そこで、ロボット1は、ユーザと会話をしているとき、適切な場面で話題を変える(遷移)する機能をもつ。その為には、話題となる情報を記憶しておく必要がある。また、その話題となる情報は、ユーザと話を合わせる上で、ユーザが知っている情報は勿論、ユーザに話題を提供する上で、ユーザが知らないような情報も記憶しておく必要がある。従って、古い情報ばかりでなく、最新の情報を記憶する必要性も出てくる。
【0061】そこで、ロボット1には、最新の情報(以下、適宜、情報nと記述する)を取得するために、通信機能(図2の通信部19)を備える。ここでは、情報nを提供するサーバから、その情報nをダウンロードする場合を説明する。図7(A)は、ロボット1に備えられた通信部19が、直接サーバ101と通信を行う場合を示し、図7(B)は、通信ネットワークとして、例えば、インターネット102を介して通信部19とサーバ101が通信を行う場合を示している。
【0062】図7(A)に示したような構成にした場合、ロボット1の通信部19は、例えば、PHS(Personal Handyphone System)に用いられている技術を流用することにより実現することができる。例えば、通信部19は、ロボット1が充電している間に、サーバ101のダイヤルをダイヤリングすることで、サーバ101と接続し、情報nをダウンロードする。
【0063】図7(B)に示したような構成の場合、通信装置103とロボット1は、有線または無線により通信が行われる。例えば、通信装置103をパーソナルコンピュータで構成する。まず、ユーザは、パーソナルコンピュータを、インターネット102を介してサーバ101と接続させる。そして、サーバ101から、情報nをダウンロードし、パーソナルコンピュータ内の記憶装置に、一旦記憶させる。その記憶された情報nを、例えば、赤外線による無線や、 USB(Universal Serial Bus)などの有線によりロボット1の通信部19に送信する。このようにしてロボット1が情報nを取得することができる。
【0064】さらに、通信装置103は、所定の時間に、自動的にサーバ101と接続し、情報nをダウンロードし、ロボット1に送信するようにしても良い。
【0065】次に、ダウンロードされる情報nについて説明する。情報nとして、全てのユーザに、同一の情報nを提供するようにしても良いが、全てのユーザに対して、その情報nが有効な情報であるとは限らない。換言すれば、ユーザ毎に趣向は異なり、ユーザとの会話を成り立たせるには、そのユーザの趣向に合った情報nのみをダウンロードし記憶する、または、全ての情報nをダウンロードした後、選択し、ユーザの趣向に合った情報nのみを記憶するようにすればよい。
【0066】図8は、サーバ101側で、ロボット1に提供する情報nを選択する場合のシステム構成を示す図である。サーバ101は、話題データベース110、プロファイルメモリ111、およびフィルタ112Aを備えている。話題データベース110は、情報nを記憶している。情報nは、芸能情報、経済情報といったカテゴリ毎に記憶されている。これらの情報nは、後述するように、ロボット1が、情報nを用いて、ユーザに話題を提供することにより、ユーザが知らなかった情報を提供することができ、宣伝効果がある。従って、宣伝を行いたい会社などを含む提供者から、話題データベース110に記憶される情報nは提供される。
【0067】プロファイルメモリ111は、ユーザの趣向などの情報を記憶している。プロファイルは、ロボット1から供給され、適宜、更新される。また、プロファイルは、ロボット1が、ユーザと会話を重ねていくうえで、何度も出てくる話題(キーワード)を記憶することで作成するようにしても良いし、ユーザが、ロボット1に入力し、記憶させるような機能を備えるようにしても良い。また、会話形式で、ロボット1がユーザに対して質問し、その質問に対して答えたユーザの答えをプロファイルとして作成するようにしても良い。
【0068】フィルタ112Aは、プロファイルメモリ111に記憶されているプロファイルを基に、話題データベース110に記憶されている情報nの中から、そのプロファイルに適した情報n、すなわちユーザの趣向に合った情報nを選択して出力する。
【0069】図7を参照して説明したような方法により、フィルタ112Aから出力された情報nは、ロボット1の通信部19に受信される。通信部19に受信された情報nは、メモリ10B内の話題メモリ76に記憶される。記憶メモリ76に記憶された情報nは、話題を遷移させる時に用いられる。
【0070】会話処理部38により処理され、出力された情報は、適宜、プロファイル作成部123に出力される。上述したように、ユーザと会話を交わすなかで、プロファイルが作成される場合、プロファイル作成部123によりプロファイルが作成され、プロファイルメモリ121に記憶される。プロファイルメモリ121に記憶されたプロファイルは、適宜、通信部19を介して、サーバ101のプロファイルメモリ111に送信されることにより、プロファイルメモリ111内の、ロボット1のユーザに対応するプロファイルが更新される。
【0071】図8に示したような構成にした場合、プロファイルメモリ111に記憶されているプロファイル(ユーザ情報)が、外部に漏れる可能性があり、プライバシーを保護するという観点から、問題が生じる可能性がある。そこで、プロファイルをサーバ101に管理させないような構成とすることも可能である。図9は、サーバ101側でプロファイルを管理しない場合のシステム構成を示す図である。
【0072】図9に示した構成では、サーバ101は、話題データベース110のみを備える。ロボット1のコントローラ10は、フィルタ112Bを備える構成となり、ロボット1のコントローラ10は、フィルタ112Bを新たに備える構成となる。このような構成にした場合、サーバ101は、話題データベース110に記憶されている全ての情報nを、ロボット1に対して提供する。ロボット1の通信部19により受信された情報nは、フィルタ112Bにより、フィルタリングされ、その結果、残った情報nのみが、話題メモリ76に記憶される。
【0073】このように、ロボット1の方で、情報nを選択するようにすれば、ユーザのプロファイルを、外部に送信することがない(外部で管理することがない)ので、ユーザのプライバシーは守られる。
【0074】ここで、プロファイルとして扱う情報について説明する。プロファイルの情報としては、年齢、性別、出身地、好きな俳優、好きなスポーツ、好きな場所、好きな食べ物、趣味、最寄り駅などであり、また、経済情報、芸能情報、スポーツ情報などに対して、どの程度興味があるか数値で表した情報も含まれる。
【0075】このようなプロファイルに基づき、選択されることにより、ユーザの趣向に合った情報nのみが、話題メモリ76に記憶される。ロボット1は、話題メモリ76に記憶された情報nを基に、ユーザとの会話が自然に流れるように、話題を遷移する。会話を自然に行うためには、話題を遷移するタイミングも大切である。次に、話題を遷移させるタイミングの決定の仕方について説明する。
【0076】話題を遷移させるための処理として、ロボット1は、ユーザとの会話が開始されると、自分用のフレームとユーザ用のフレームを作成する。フレームについて、図10を参照して説明する。時刻t1において、ロボット1が、ユーザに対して、”昨日、成田で、事故があったんだって”という新しい話題を持ちかけたとする。このとき、ロボット用フレーム141とユーザ用フレーム142が話題管理部74内に作成される。
【0077】ロボット用フレーム141とユーザ用フレーム142には、同一の項目が用意されており、すなわち、”いつ”、”どこで”、”だれが”、”どうした”、”なぜ”という5項目が用意されている。ロボット1側が、”昨日、成田で、事故があったんだって”という話題を提供したことにより、ロボット側のフレーム141の各項目は0.5に設定される。なお、ここでは、各項目に設定される値は、0.0乃至1.0の値をとるとする。値が0.0の場合は、その項目について全く知らない(全く話していない)ことを示し、1.0の場合は、全ての情報を知っている(その項目については、話し尽くした)ことを示す。
【0078】ロボット1が話題を提供した場合、ロボット1は、その話題についての情報を得ていることを示している。換言すれば、提供した話題は、話題メモリ76に記憶されている(話題メモリ76に記憶されていたが、現在話している話題となることにより、会話中話題メモリ77に移され、記憶されている)ことになる。
【0079】その記憶されている情報は、その情報に関する情報をユーザは、さらに多く知っている場合も想定されるし、そうでない場合も想定される。従って、ロボット1が話題を提供した場合、その話題に関するロボット用フレーム141の各項目には、初期値として0.5が設定され、ユーザ側は何もしらないと想定し、ユーザ用フレーム142の各項目は0.0に設定される。
【0080】初期値として設定される値として、ここでは、0.5としたが、その他の値を設定するようにしても良い。また、例えば、”いつ”という項目は、具体的には、通常、”年”、”月”、”日”、”時”、”分”の5つの情報(”秒”も含めれば6つの情報になるが、会話では、通常、秒まで、話題になることはないと仮定し、ここでは、含めない)がそろえば、”いつ”という項目に対しては、全ての情報がそろったとしても良い。そこで、単純に、1.0を5等分した0.2を、1つの情報に当てはめ、例えば、”昨日”という単語には、”年”、”月”、”日”の3つの情報を含むと判断し、0.6という値を設定するようにしても良い。
【0081】また、上述した説明においては、初期値として全ての項目に0.5を設定したが、話題メモリ76内に、その時、話題にしていることに関して、例えば、”いつ”という項目にあたるキーワードが存在しないときは、その項目には0.0を設定するようにしても良い。
【0082】このように、会話が開始されると、その話題に関して、フレームと、そのフレーム内の各項目の値が設定される。ユーザは、ロボット1の”昨日、成田で、事故が、あったんだって”という発話に対し、ユーザが、時刻t2において、”えっ?”という、言われた事を聞き返すような場合に用いられる発話をしたとすると、ロボット1は、時刻t3において、もう一度、同じ発話を繰り返す。
【0083】繰り返し発話された事により、ユーザがロボット1が発話したことを理解し、時刻t4において、”そうだね”という、発話された事を理解したという場合に用いられる発話をしたとすると、ユーザ用フレーム142が書き換えられる。ユーザ側は、”昨日”という情報から”いつ”という項目が、”成田で”という情報から”どこ”という項目が、”事故があった”という情報から”どうした”という項目が、それぞれ知り得たと判断し、それらの項目の値が0.2に設定される。
【0084】0.2に設定されるというのは、一例であり、その他の値が設定されるようにしても良い。例えば、現在話している話題のうち、”いつ”という項目に対してロボット1が知り得ている情報の全てを発話してしまった場合、その項目に関しては、同じ値を設定するようにしても良い。例えば、この場合、ロボット1が”いつ”という項目に対して”昨日”というキーワードしか取得していなかった場合、既に、ユーザに対して発話してしまっているので、ユーザ用フレーム142の”いつ”という項目の値は、ロボット用フレーム141の”いつ”という項目に設定されている0.5が設定される。
【0085】ここで、ユーザが時刻t4に、”そうだね”ではなく、図11に示すように、”何時ごろ?”と質問してきた場合、ユーザ用フレーム142に設定される値が異なってくる。すなわち、ロボット1は、今、ユーザは、”いつ”の項目に関わる質問をしてきたので、”いつ”という項目に関する情報に興味があると判断し、ユーザ用フレーム142の”いつ”という項目の値を、他の項目に設定される値である0.2よりも大きい0.4に設定する。このように、会話の内容により、それぞれのフレームの項目に設定される値は異なる。
【0086】上述した説明では、ロボット1側からユーザに対して話題を提供した場合を説明したが、ユーザ側からロボット1に対して話題を提供した場合を説明する。図12に示すように、時刻t1において、ユーザが”成田で、事故が、あったんだって”とロボット1に対して発話したとする。その発話を受けて、ロボット1は、ロボット用フレーム141とユーザ用フレーム142を作成する。
【0087】まず、ユーザ用フレーム142の各項目の値についてだが、”成田”という情報から”どこで”という項目の値が、”事故があった”という情報から”どうした”という項目の値が、それぞれ設定される。同様の判断に基づき、ロボット用フレーム141内の各項目も、ユーザ用フレーム142内の各項目の値と同じ値に設定される。
【0088】このようなユーザの発音に対し、ロボット1が、時刻t2において返答を行う。ロボット1は、各フレーム内の項目のなかで、値が0.0という項目がなくなるような方向で会話が進むように、返答文を作成する。この場合、まず、”いつ”という項目の値が、ロボット用フレーム141、ユーザ用フレーム142共に0.0であるので、ロボット1は、時刻t2において、”いつ?”という質問をユーザに対してする。
【0089】この質問に対し、ユーザは、時刻t3において、”昨日”という発話をしたとすると、その発話を受けて、フレーム内の各項目の値が設定し直される。即ち、”昨日”という、”いつ”という項目に関する情報が得られた事により、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値が0.0から0.2に設定し直される。
【0090】さらに、時刻t4(図13)においてロボット1が”何時頃?”という質問をユーザにし、ユーザが時刻t5において、”夜8時過ぎ”と返答した場合、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値が、0.2より高い値の0.6に設定し直される。このように、ロボット1が質問をユーザにすることにより、値が0.0である項目がなくなる方向で話が進められる事により、自然な会話が成立する。
【0091】なお、時刻t5において、ユーザが”知らない”という返答をした場合にも、上述したように、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値は0.6に設定される。このようにするのは、互いに知らない事に対して再度、質問するようなことがないようにする、換言すれば、値が小さいままにしておくと、再度、質問するようなことが想定されるため、そのような事を防ぐために行う。従って、”知らない”というような返答を受けた場合は、その項目に関する会話は、それ以上できないと判断することが可能なので、そのような項目の値は、1.0に設定されるようにしても良い。
【0092】このような会話が続けられることにより、ロボット用フレーム141とユーザ用フレーム142の各項目の値が1.0に近づいていくことになる。全ての項目の値が1.0になるということは、その話題に付いては、語り尽くした事を示す。そのような場合は、話題を遷移する事が自然の会話の流れである。また、語り尽くす前に、話題を遷移する場合があるというのも、自然の会話の流れである。換言すれば、1つの話題に対して、常に語り尽くさなければ、次の話題に遷移できないという設定にしてしまうと、会話はしつこくなり、楽しくなくなる場合が想定されるので、語り尽くす前に(全ての項目の値が1.0になる前に)、話題を遷移する場合もあるように設定しておく。
【0093】図14のフローチャートを参照して、上述したようなフレームを用いて、話題の遷移を行うタイミングを制御する方法について説明する。ステップS1において、新しい話題に対して会話が開始されると、ステップS2において、ロボット用フレーム141とユーザ用フレーム142が話題管理部74に生成され、各項目の値が設定される。ステップS3において、平均値が算出される。平均値は、ロボット用フレーム141とユーザ用フレーム142の各項目、この場合10項目の値の平均値である。
【0094】平均値が算出されたら、ステップS4において、話題を遷移するか否かが判断される。平均値の値が、閾値T1以上になったら、話題を遷移するという規則を設けて話題を遷移するか否かを判断しても良いが、閾値T1を小さく設定した場合、会話が中途半端な状態で遷移してしまうことが多くなり、逆に、閾値T1を大きく設定した場合、会話にしつこさが出てきてしまうことが多くなるといったような不都合が生じる事が想定される。
【0095】そこで、本実施の形態においては、図15に示したような関数を用い、平均値により、話題が遷移する確率を変動させる。すなわち、平均値が0.0乃至0.2の間の値の場合、話題が遷移する確率は0なので、話題は遷移しない。平均値が、0.2乃至0.5の間の値の場合、0.1の確率で話題が遷移する。平均値が、0.5乃至0.8の間の値の場合、確率=3×平均値−1.4の式に従って確率が算出され、その確率に従って、話題が遷移する。平均値が、0.8乃至1.0の間の値の場合、1.0の確率、すなわち、必ず話題が遷移する。
【0096】このように、平均値と確率値を用いることにより、話題が遷移するタイミングを、異ならせることが可能となり、より自然な会話を行わせる事が可能となる。なお、図15に示したのは、一例であり、他の関数にしたがっても良い。また、平均値が0.2以上の値の場合、確率値は0.0ではないが、例えば、フレーム内の10項目のうち、4項目の値が0.0の場合は、話題が遷移する確率値を0.0にするなどの規則を設けるようにしても良い。
【0097】さらに、会話が行われる時刻により、用いられる関数を変化させるようにしてもよい。例えば、朝と夜とで異なる関数を用いることにより、朝は、夜と比べて、浅く広い会話ができるといった機能を持たせる事も可能である。
【0098】図14のフローチャートの説明に戻り、ステップS4において、話題を遷移すると判断された場合、話題を遷移し(遷移する先の話題の抽出の仕方については後述する)、その遷移した先の話題について、ステップS1以下の処理が繰り返される。一方、ステップS4において、話題を遷移しないと判断された場合、ステップS5に進み、新たな発話に対してフレーム内の項目の値が設定し直され、その値に対してステップS3以下の処理が繰り返される。
【0099】上述した話題を遷移するタイミングの決定の方法は、フレームというものを用いて行ったが、他の方法を用いても良い。ロボット1とユーザとの間で会話が行われているとき、その会話が交わされた回数をカウントするようにしても良い。これは、通常、会話が交わされる回数が増せば、その話題については十分話し合ったと判断することが可能であるので、会話が交わされた回数で、話題を遷移するか否かを判断することも可能である。
【0100】会話が交わされた回数をカウントした値をカウント値Nとした場合、そのカウント値Nが、単に所定の閾値を越えたとき、話題を遷移するようにしても良いし、P=1−1/Nという式により算出される値Pを、図15の平均値の代わりに用いて話題を遷移するようにしても良い。
【0101】会話が交わされた回数をカウントする代わりに、会話が交わされている時間をカウントすることにより、話題を遷移するタイミングを決定するようにしても良い。ロボット1が発話した時間と、ユーザが発話した時間を累積加算する。その累積加算した加算値Tを、上述したカウンタ値Nの代わりに用いるようにする。加算値Tが所定の閾値を越えた場合に話題を遷移するようにしても良いし、基準会話時間Trという値を設け、P=T/Trという式に基づいて算出された値Pを、図15R>5の平均値の代わりに用いるようにしても良い。
【0102】このようにカウント値Nまたは加算値Tを用いた場合、話題を遷移させるタイミングを決定する処理は、図14のフローチャートを参照して説明したのと基本的に同様だが、ステップS2のフレームを作成するという処理が、カウンタ値N(加算値T)を0に初期化する処理となり、ステップS3の処理は省略され、ステップS5の処理が、カウンタ値N(加算値T)を更新する処理となる。
【0103】会話のなかでは、相槌というのも、話している内容に興味があるかないかを判断するのに重要な要素となるものであり、興味がないと判断される時には、話題を遷移することが好ましい。そこで、話題を遷移するタイミングを決定する方法として、ユーザの発話の音圧の時変化を用いる方法もある。図16(A)に示すように、入力されたユーザの発話(入力パターン)を、区間正規化することにより入力パターンの解析を行う。
【0104】ユーザの発話(相槌)に関して、正規化した解析結果として想定されるのは、例えば、図16(B)に示したように、肯定を意図するパターン、無関心を意図するパターン、標準(意志表現を含まない、単なる相槌)を意図するパターン、および疑問を意図するパターンの4パターンである。入力された入力パターンを区間正規化した結果が、どのパターンに近似しているかは、例えば、いくつかの基準関数との内積値をベクトルとして距離を計算するなどの方法を用いて行う事が可能である。
【0105】入力された入力パターンが、無関心を意図するパターンであると判断された場合、すぐに話題を遷移するようにしても良いし、無関心を意図するパターンであると判断された回数を累積し、その累積値Qが所定値以上になった時に、話題を遷移するようにしても良い。さらに、対話回数もカウントするようにし、累積値Qをカウンタ値Nで割った数値を度数Rとし、その度数Rが所定値以上になったときに話題を遷移させるようにしても良いし、その度数を図15の平均値の代わりとして用いて、話題を遷移させるようにしても良い。
【0106】会話をしているときに、相手が発話したことに対して同じ事を言う(オウム返しする)ようなことは、その話題に興味がないことを示していることが多い。このような事を利用し、ロボット1が発話した事と、その発話に対してユーザが発話した事の一致度を測定し、スコア値を得、そのスコア値を用いて話題を遷移させる。スコア値の算出の仕方としては、例えば、ロボット1が発話した言葉の文字の並びと、ユーザが発話した言葉の文字の並びを単純に比較し、一致する文字数をスコア値とする。
【0107】このようにして得られたスコア値を用いて、上述した方法と同じく、所定の閾値以上になったら話題を遷移させる、または、図15の平均値の代わりに用いて話題を遷移させる。
【0108】上述した方法では、無関心を意図するパターン(音圧と時間との関係におけるパターン)を用いたが、無関心を意図する言葉をトリガーとして話題を遷移させるようにしても良い。無関心を意図する言葉としては、「ふーん」、「へえ」、「あ、そう」、「はいはい」などであり、これらの言葉を無関心を意図する言葉の群として登録しておく。この登録された群内の言葉が、ユーザから発せられたと判断された場合には、話題が遷移されるようにする。
【0109】さらに会話をしている場合に、その会話が止まった、換言すれば、返答に時間がかかったとき、ユーザは、その話題に関して興味がなく、返答したくないといった意思表示であると考える事ができる。そこで、ロボット1は、自己が発話した事に対して、ユーザが返答するまでの時間を測定し、その測定時間に応じて、話題を遷移させるか否かを判断するようにしても良い。
【0110】例えば、図17に示すように、返答までにかかった時間が、0.0乃至1.0秒のときは話題を遷移させない、1.0乃至12.0秒のときは所定の関数により算出される確率値に従い話題を遷移させる、12.0秒以上のときは、必ず話題を遷移させる。図17に示した例は一例であり、用いる関数や秒の設定は、どのようなものを用いても良い。
【0111】上述した方法のうち、1つ、または、複数の組み合わせにより、話題を遷移させるタイミングが決定される。
【0112】なお、ユーザが、「もうその話題はいいよ」、「いいかげんにしろ」、「話題変えようよ」など、話題を遷移することが望まれる発話を受けた場合は、上述した方法による、話題を遷移させるタイミングでないときにも関わらず、話題を遷移させる。
【0113】次に、ロボット1の38により、会話処理部話題を遷移させると判断された際、遷移先の話題の抽出の仕方について説明する。その時話している話題Aから他の話題Bに遷移する場合、話題Aと話題Bとの間に、全く関連性がなくても良いが、多少ながら関連性がある話題に遷移するのが会話の流れを妨げず、自然の流れとなる場合が多い。そこで、本実施の形態では、話題Aに関連がある話題Bに遷移するようにする。
【0114】話題を遷移するための情報は、話題メモリ76に記憶されており、会話処理部38は、上述したような方法で、話題を遷移すると判断した場合、話題メモリ76に記憶されている情報を基に、遷移先の話題を抽出する。ここで、話題メモリ76に記憶されている情報について説明する。
【0115】上述したように、話題メモリ76に記憶されている情報は、インターネットなどの通信ネットワークを介してダウンロードされ、記憶されている。図18は、話題メモリ76内の情報について説明する図である。この場合、話題メモリ76には、4つの情報が記憶されている。各情報は、”事項”、”いつ”、”どこで”、”だれが”、”どうした”といった項目から構成されており、”事項”以外の項目は、ロボット用フレーム141(ユーザ用フレーム142)内の項目と同じである。
【0116】事項は、タイトル的な意味合いをもち、その情報の内容を識別するために設けられたものである。各情報は、その内容を代表する属性をもつ。図19に示した例では、属性としてキーワードを用いた場合を示している。キーワードとしては、各情報に含まれる自立語(名詞や動詞などで、単独で意味を持つ単語)が選択され、設定される。各情報は、その内容を表すテキスト形式で保持しても良いが、図18に示した例では、項目とその値(属性:キーワード)の対で構成したフレーム構造に内容を抽出して保持している。
【0117】図20のフローチャートを参照して、ロボット1側から話題を遷移させる場合の、会話処理部38において行われる処理について説明する。会話処理部38の話題管理部74は、ステップS11において、上述したような方法を用いて、話題の遷移を起こすか否かを判断する。ステップS11において、話題の遷移を起こすと判断された場合、ステップS12に進み、現在の話題の情報と、話題メモリ76内に記憶されている話題の情報との関連度を計算する。ここで、関連度の計算の仕方について説明する。
【0118】関連度の計算としては、例えば、情報の属性であるキーワードのベクトルが成す角、分類の一致度(同じ分類や近い分類がなされている情報が近似している情報であると判断)などを用いる方法が考えられる。また、キーワード間の関連度をテーブルとして定義し、そのテーブルを用いて、現在の話題の情報のキーワードと、話題メモリ76内に記憶されている話題の情報のキーワードとの関連度を計算する方法もある。このような方法を採ると、異なるキーワード間の結び付きまで含めた関連度の計算ができるので、自然な流れで話題を遷移させる事が可能となる。
【0119】ここでは、キーワード間の関連度を定義したテーブルに基づく方法について説明する。図21に、テーブルの一例を示す。図21には、”事項”という項目が”バスの事故”という情報と、”飛行機事故”という情報による作成されたテーブルである。このテーブルとして選択される情報は、現在話されている話題の情報と次の話題となる可能性のある情報、換言すれば、会話中話題メモリ77(図5)に記憶されている情報と、話題メモリ76に記憶されている情報である。
【0120】事項が”バスの事故”という情報には、”バス”、”事故”、”2月”、”10日”、”札幌”、”乗客”、”10人”、”けが”、”スリップ”という9個のキーワードが存在し、事項が”飛行機事故”という情報には、”飛行機”、”事故”、”2月”、”10日”、”インド”、”乗客”、”100人”、”けが”という8個のキーワードが存在する。
【0121】それぞれのキーワードによる組み合わせは、72(=9×8)通りある。各キーワード間には、関連度のスコアが記載されている。これらのスコアの総和を、それらの2つの情報の関連度とする。図21に示したようなテーブルは、情報を提供するサーバ101(図7)において作成し、その作成されたテーブルと共に、情報をロボット1に提供するようにして良いし、ロボット1側で、サーバ101からダウンロードした情報を記憶する際、テーブルを作成し、記憶するようにしても良い。
【0122】予めテーブルを作成しておく場合、会話中話題メモリ77に記憶されている情報と、話題メモリ76に記憶されている情報との両方の情報が、サーバ101からダウンロードされたものであるということが前提である。換言すれば、話題遷移を起こしたのが、ロボット1の場合、また、ユーザが話題遷移を起こした場合でも、話題メモリ76に、ユーザが話しているだろうと判断される話題の情報が記憶されている場合は、予め作成されたテーブルを用いることが可能である。しかしながら、ユーザが話題遷移を起こし、その話題が話題メモリ76に記憶されていないと判断される場合は、予め作成されたテーブルが存在しないので、新たに作成する必要がある。そのような処理については後述する。
【0123】テーブルは、シソーラス(Thesaurus)(語句を意味により分類し、配列したもの。分類語彙表)を参考に、大量のコーバスから統計的に同じ文脈に現れやすい言葉の関連度を取得するなどして作成される。
【0124】次に、具体的に、図21に示したテーブルを参照して、関連度の計算の仕方について説明する。上述したように、”バスの事故”という情報と”飛行機事故”という情報との間でのキーワードの組み合わせとしては、例えば、「バス」と「飛行機」、「バス」と「事故」など、72通り存在する。図21に示した例では、「バス」と「飛行機」の関連度は0.5、「バス」と「事故」の関係度が0.3というようになっている。
【0125】このように、会話中話題メモリ77と、話題メモリ76に、それぞれ記憶されている情報により、テーブルを作成し、そのスコアの総和を算出する。ただし、このようにして総和を算出するようにすると、キーワードの数が多い話題(情報)だと、大きなスコアを持つ可能性が高くなり、キーワードの数が少ない話題だと関連度が低いスコアしか持たない可能性が高くなる。そこで、総和を算出する際、関連度を計算するときに用いられたキーワードの組み合わせの個数(図21に示した例では72)で除算するなどして、正規化するようにしても良い。
【0126】話題Aから話題Bへと遷移する場合の、各キーワード間の関連度を関連度abとし、話題Bから話題Aへと遷移する場合の、各キーワード間の関連度を関連度baとしたとき、関連度abと関連度baが同じスコア値をとる時は、図21に示したように、図中左下半分(或いは右上半分)を用いるようにする。しかし、話題の遷移に方向性を持たせると設定した場合、テーブルの全面を使用する必要がる。しかしながら、テーブルの一部分を用いる場合でも、テーブルの全面を用いる場合でも、同じアルゴリズムにより処理できる。
【0127】図21に示したようなテーブルを作成し、総和を算出する場合、単に総和を算出するのではなく、現在話している話題の流れを考慮し、キーワードに重み付けをして総和を算出するようにしても良い。例えば、現在、話している話題が、”バスの事故が起きたこと”であるとする。その内容に含まれるキーワードとして、「バス」、「事故」があるわけだが、それらのキーワードに重み付けをすることにより、それらのキーワードを含むようなテーブルの総和が高くなる。例えば、重み付けを2と設定すると、図21のテーブルにおいて、「バス」と「飛行機」の関連度は0.5であるが、重み付けを行うことにより、2倍の1.0となる。
【0128】このように重み付けを行うことにより、遷移する前の話題と遷移した後の話題との内容が、関連性のあるものとなり、話題遷移を伴う会話の自然性を増すことができる。なお、重み付けしたものをテーブルとして用いても良い(テーブルを書き換えるようにしても良い)し、テーブルは書き換えずに、関連度の総和を計算する際に重み付けを行うようにしても良い。
【0129】図20のフローチャートの説明に戻り、ステップS12において、上述したように、現在の話題と別の話題との関連度が計算されると、ステップS13において、関連度が最も高い話題、換言すれば、総和値が一番高いテーブルの情報を選択し、その選択した話題を遷移先の話題として設定する。そして、ステップS14において、設定された話題に遷移し、新たな会話が開始される。
【0130】ステップS15において、以前の話題遷移の評価と、その評価に従って、関連度のテーブルの更新が行われる。このようなステップを設けるのは、同じ話題でも、ユーザにより感じ方が異なるため、自然な会話を行うためには、ユーザ毎に適したテーブルが作成される必要があるからである。例えば、「事故」というキーワードに対して、ユーザAは「列車事故」を思い出し、ユーザBは「飛行機事故」を思い出し、ユーザCは「交通事故」を思い出すというように、ユーザにより異なる。また、ユーザAが札幌に旅行に行く計画をたて、実際にその計画に従って旅行に出かけた場合、「札幌」というキーワードに対して、同じユーザAであっても、旅行に行く前と後とでは、思い出すこと、会話の内容の進め方が異なってくる。
【0131】即ち、同一の話題であっても、全ユーザに対して共通の感じ方をするわけではなく、また、同一ユーザにおいても、時間や、その時の状況により感じ方は変化するので、テーブルの関連度は動的に変化させるようにした方が、より自然に、かつ、ユーザにとって楽しい会話を提供することができる。そこで、ステップS15の処理を設ける。図22は、ステップS15の処理の詳細を説明するフローチャートである。
【0132】ステップS21において、話題の遷移は妥当であったか否かが判断される。この判断は、ステップS14において遷移した話題(話題Tとする)を基準とした場合、その前の話題T-1と、さらに前の話題T-2の間で判断される。この判断は、例えば、ロボット1側で、話題T-2に関して記憶していた情報を、どの程度ユーザに伝えたか、例えば、話題T-2に関するキーワードが10個であった場合、その10個のキーワードの内、何個のキーワードを、ユーザに伝えた時点で話題T-1に遷移したかを調査することにより判断することができる。
【0133】また、キーワードを多く伝えられたと判断される場合は、会話時間が長かったということになる。そこで、話題T-2についての会話が、長時間続いた後に話題T-1に遷移したか否かを判断することにより遷移が妥当であったか否かを判断することもできる。このような判断は、ユーザが話題T-2に関して、好意的であったか否かを判断していることになる。
【0134】このような判断の方法を用い、ステップS21において、話題遷移が妥当であったと判断された場合、ステップS22に進み、話題T-1と話題T-2との間のキーワード対を全て作成し、ステップS23において、その対の部分のスコア値が大きくなるように関連度テーブルを更新する。このように、関連度テーブルを更新することにより、次から類似の組み合わせでの遷移が起こりやすくなる。
【0135】なお、ステップS21において、話題遷移は妥当ではなかったと判断された場合、関連度テーブルの更新処理は行われない。これは、妥当ではないと判断された話題遷移に関する情報を用いないようにするためである。
【0136】このように、話題を遷移するために、会話中話題メモリ77に記憶されている情報と、話題メモリ76に記憶されている全ての話題の情報との関連度を計算し、その総和を比べることにより、遷移先の話題を決定するのは、計算コストが高くなってしまう。そこで、話題メモリ76に記憶されている全ての情報について総和を計算してから、遷移先の話題を決定するのではなく、遷移先の対象となる話題を選択しながら、話題の遷移を行うようにすることにより、計算コストを低く抑えるようにする。そのような場合の会話処理部38の動作について、図23のフローチャートを参照して説明する。
【0137】ステップS31において、話題管理部74は、既に上述したような方法により、話題の遷移を起こすか否かを判断し、話題の遷移を起こすと判断した場合、ステップS32に進む。ステップS32において、話題メモリ76から1つの話題の情報を選択する。その選択された情報と、会話中話題メモリ77に記憶されている情報との関連度を、ステップS33において計算する。ステップS33において行われる関連度の計算、および総和は、図20のフローチャートを参照して説明した場合と同様に行われる。
【0138】ステップS34において、ステップS33において計算された総和値が、閾値を越えたか否かが判断される。ステップS33において、総和値が閾値を越えてはいないと判断された場合、ステップS32に戻り、新たな話題に関する情報が話題メモリ76から読み出され、その情報に対して処理が行われる。
【0139】一方、ステップS34において、総和値が閾値を越えたと判断された場合、ステップS35に進み、最近話した話題であるか否かが判断される。例えば、ステップS32における処理で、話題メモリ76から読み出された話題の情報が、現在話している話題の前の話題であったという場合が想定される。同じ話題が繰り返されるというのは不自然であり、会話を不愉快なものにしてしまう原因となるので、そのような事を防ぐために、ステップS35における処理を設ける。
【0140】ステップS35の処理は、会話履歴メモリ75(図5)を調査することにより行われる。会話履歴メモリ75内の情報を調査することにより、最近話した話題ではないと判断された場合、ステップS36に進み、最近話した話題であると判断された場合、ステップS32に戻り、それ以降の処理が繰り返される。ステップS36において、選択された話題に遷移される。
【0141】図24にロボット1とユーザとの間で交わされる会話の一例を示す。時刻t1において、ロボット1が、話題メモリ76に記憶されている情報のなかで、事項(図19)という項目が”バスの事故”というのを選択し、会話を始める。まず、ロボット1が、”札幌でバスの事故がありましたね。”と発話し、それに対してユーザが、時刻t2において、”いつ?”と質問する。ロボット1は、その質問に対し、時刻t3において、”12月10日”と答え、ユーザは、その答えを受けて、時刻t4において、”けがをした人はいたの?”と新たな質問をする。
【0142】ロボット1は、時刻t5において”10人です”と返答する。ユーザは、時刻t6において、”ふーん”と相づちを打つ。このような会話が交わされている間、上述したような処理が繰り返し行われている。そして、ロボット1が、時刻t7において、話題の遷移を起こすと判断し、新たな話題として、事項という項目が”飛行機事故”という話題を選択する。これは、上述したように、遷移する前と後とでの話題には、”事故”、”2月”、”10日”、”けが”といったキーワードが一致し、関連度が高いと判断されるからである。
【0143】ロボット1は、話題の遷移を起こした結果、時刻t7において、”同じ日に、飛行機事故もあったんですよね”と発話する。それに対し、ユーザは、時刻t8において、”インドのやつ?”と興味を持ち、確認するような発話をする。そこで、ロボット1は、さらに会話を続けるために、ユーザの質問に対し、時刻t9において、”そうです、原因がわからない事故です”と肯定し、さらに、原因不明である事実を、ユーザに提供する。ユーザは、時刻t10におて、”どれくらいけがしたの?”と質問し、ロボット1が、時刻t11において、”100人です”と返答する。
【0144】このように、上述した方法により話題を遷移させることにより、自然な会話を成立させる事が可能となる。
【0145】なお、図24に示した会話例において、ユーザが、時刻t8において、”ちょっと待ってよ。バスの事故の原因はなんだったの?”といったような、話題の遷移を受け入れず、遷移前の話題に戻るような明示的な発話がなされたり、または、遷移した話題に対しての応答に時間が空いたような場合、遷移した話題がユーザに受け入れられなかったと判断し、遷移する前の話題に戻り、会話を続ける。
【0146】上述して説明(全ての話題に関するテーブルを作成し、その中で総和値が最も高いのを遷移先の話題として選択する場合の説明)では、話題を遷移させるとき、話題メモリ76に、遷移させるのに適した話題の情報がある、換言すれば、関連度が低い情報でも、他の情報に比べて高ければ、遷移先の話題として選択されるので、場合によっては、自然な会話の流れではなくなる(全く異なる話題に遷移される)時が想定される。
【0147】そのような事を防ぐため、例えば、関連度(総和値)が所定値以下の話題しか、選択できないような状況の場合、または、上述した説明で、1つの話題を選択し、その話題の総和値が閾値以上であれば、その話題を遷移先の話題とする方法において、閾値以上の話題が見つからなかったような場合、”ところで”、”そういえば”などの言葉を発話し、全く異なる話題をユーザに提供するようにしても良い。
【0148】また、上述した説明では、ロボット1が話題を遷移する場合を説明したが、ユーザが話題を遷移する場合も想定される。図25のフローチャートを参照して、ユーザが話題を遷移させた場合に対応した処理を行うために会話処理部38が行う動作について説明する。ステップS41において、ロボット1の話題管理部74は、ユーザが発話した話題が、現在会話している話題(会話中話題メモリ77に記憶されている話題)と関連しているか否かを判断する。この判断は、上述したロボット1が自発的に話題を遷移させる際に用いた、話題間(キーワード)間の関連度の計算の方法と同様の方法を用いて行う事が可能である。
【0149】すなわち、ユーザの単発の発話から取り出されたキーワード群と、現在話されている話題のキーワードとの関連度を計算し、所定の閾値の条件を満たすなら、関連性があると判断する。例えば、ユーザが、”そういえば、札幌で雪祭りがあるんだよね”と発話したとする。その発話からキーワードを抽出した場合、「札幌」、「雪祭り」などがある。これらのキーワードと、現在話している話題のキーワード群とを用いて、話題間の関連度の計算を行い、その計算結果により関連性があるか否かを判断する。
【0150】ステップS41において、現在の話題と関連していると判断された場合、ユーザの話題遷移に追従する処理を行う必要はないので、フローチャートの処理は終了される。一方、ステップS41において、現在話している話題と関連していないと判断された場合、ステップS42に進む。ステップS42において、話題の遷移を許容するか否かが判断される。
【0151】話題の遷移を許容するか否かの判断は、例えば、ロボット1側が、現在話している話題に対して、まだ話す情報がある場合は許容しないなどの規則を設けることにより行われる。また、上述したロボット1側から話題を遷移する場合の処理と、同様に行うようにしても良い。すなわち、ロボット1側で、話題を遷移するタイミングではないと判断される場合は、話題の遷移を許容しないようにする。しかしながら、このように設定してしまうと、話題の遷移の決定は、ロボット1側のみしか行えないことになるので、ロボット1側から話題を遷移する場合に対して、ユーザ側から話題を遷移する場合は、遷移しやすいように、確率値を設定するなどの処理が必要である。
【0152】ステップS42において、話題の遷移を許容しないと判断された場合、話題を遷移しないので、このフローチャートの処理は終了される。一方、ステップS42において、話題の遷移を許容すると判断された場合、ユーザが話している話題を認識する必要があるので、ステップS43において、ユーザが話している話題を話題メモリ76から検索する。
【0153】話題メモリ76から、ユーザが話している話題を検索する方法としては、ステップS41において行った方法と同じように、ユーザの発話から抽出されたキーワードと話題メモリ76に記憶されている全ての話題(情報)のキーワード群との関連度(の総和)を計算することにより、その計算結果が最も大きい値の情報を、まずユーザが話している話題の候補とし、その候補の計算結果が所定値以上であれば、その情報をユーザが話している話題であるとして決定する。このような方法は、ユーザが話している話題と一致する確率が高く、信頼性があるが、計算コストが高くなる。
【0154】そこで、話題メモリ76から、1つの情報を選択し、その情報のキーワード群との関連度を計算し、その計算結果が所定値以上であれば、その話題をユーザが話している話題として決定する。このような処理を所定値以上である情報が検出されるまで繰り返し行うことにより、ユーザが遷移したであろう話題を検索する。
【0155】このような検索処理が行われることにより、ユーザが話している話題であると推定される話題が検索されたか否かが、ステップS44において行われる。ステップS44において、話題が検索されたと判断された場合、ステップS45に進み、その検索された話題(情報)を会話中話題メモリ77に移すことにより、話題を遷移したこととする。
【0156】一方、ステップS44において、話題が検索されなかったと判断された場合、換言すれば、関連度の総和値が所定値を越えた情報がなかったと判断された場合、ステップS46に進む。ステップS46の処理に来るということは、ロボット1が知り得ている情報以外の情報を、ユーザが話していると言うことなので、ロボット1にとっては未知の話題に遷移したとして、会話中話題メモリ77内の情報をクリアする。
【0157】未知の話題に遷移した場合、ロボット1は、ユーザに対して質問をするなどして会話を続ける。また、会話を交わすなかで、会話中話題メモリ77に話題に関する情報を記憶していく。ロボット1は、このようして新しい話題が入力された場合、上述した関連度のテーブルを更新する。図26のフローチャートを参照して、新しく入力された話題によりテーブルが更新される際の処理について説明する。ステップS51において、新しい話題が入力される。新しい話題が入力される状況としては、このように、ユーザがロボット1が取得していない情報の話題を話す場合と、ネットワークなどを介して情報nをダウンロードした場合などが想定される。
【0158】新しい話題が入力されると、ステップS52において、その入力された話題からキーワードが抽出される。そして、ステップS53において、抽出されたキーワードの対が全て生成される。その結果を受けてステップS54において、キーワード間の関連度テーブルが更新される。ステップS54の処理は、図21に示したフローチャートのステップS23の処理と同様なので、その説明は省略する。
【0159】このように、話題の遷移は、ロボット1側から起こす場合と、ユーザ側から起こす場合とが、実際の会話のなかでは混在している。そこで、会話処理部38が行う話題の遷移に関する大筋の流れとしては、図26R>6のフローチャートに従う。すなわち、ステップS61において、ユーザ側の話題遷移への追従処理が行われる。この処理は、図25のフローチャートの処理のことである。
【0160】ステップS61の処理の結果、ステップS62において、ユーザが話題を遷移させたか否かが判断される。すなわち、図25のフローチャートにおいて、ステップS41において、現在の話題と関連していると判断された場合、ステップS62では、話題を遷移させてはいないと判断され、ステップS41において、現在の話題と関連していないと判断され、それ以降の処理がされた場合、ステップS62では、話題を遷移させたとして判断される。
【0161】ステップS62において、話題は遷移されていないと判断された場合、ステップS63に進み、ロボット1側の自発的な話題遷移が行われる。この処理は、図20または図23のフローチャートの処理のことである。
【0162】このように、ユーザの話題遷移をロボット1の話題遷移よりも優先することは、ユーザ側に会話の主導権を与えていることになる。ステップS61とステップS63の処理を入れ替えた場合、ロボット1側に会話の主導権を与えていることになる。このようなことを利用し、例えば、ユーザの接し方により、ロボット1がわがままに育ってしまった場合、ロボット1が会話の主導権を握るように設定され、ロボット1にしつけが行き届いている場合、ユーザが会話の主導権を握るように設定されるようにしても良い。
【0163】上述した説明においては、属性として情報に含まれるキーワードを用いる場合を説明したが、属性として、図28に示すように、分類、場所、時間などを用いるようにしても良い。このような属性を用いた場合、図28に示した例では、1つの情報に、1つ又は2つの値しか持たない時が多い。このような場合においても、キーワードの場合と同じように処理することが可能である。例えば、属性として分類の場合、基本的に1つの値しか持たないが、キーワードのように複数の値を持つ場合の特殊な例として扱うことが可能なため、上述したキーワードの場合と同様に扱うこと(テーブルを作成すること)が可能である。
【0164】属性は、例えば、キーワードと分類というように複数併用するようにしても良い。複数の属性を併用する場合、それぞれの属性において、関連度の計算をし、重み付け線形和をとって最終的な判断結果として用いるようにする。
【0165】自然な会話を行うために、また、自然な話題遷移を行うために、話題メモリ76には、ユーザの趣向(プロファイル)にあった話題(情報)が記憶されていることは上述した。また、そのプロファイルは、ロボット1とユーザとの会話のなかで取得する、または、ロボット1がコンピュータと接続され、そのコンピュータを用いてユーザがロボット1に入力するなどされるということも上述した。ここでは、ユーザとの会話により、ロボット1が、そのユーザのプロファイルを作成する場合を、具体例を挙げて説明する。
【0166】図29に示すように、時刻t1において、ロボット1が、”昨日、何かおもしろいことがあった?”とユーザに対して質問する。この質問に対して、ユーザが時刻t2において、”タイトルAという映画を見たよ”と返答する。この返答から、ユーザのプロファイルに「タイトルA」という情報が追加される。さらに、時刻t3において、ロボット1が”おもしろかった?”と質問すると、ユーザは、時刻t4において、”おもしろかったよ。特に、B役で出ていた俳優Cさんが良い演技をしていたよ”と返答する。この返答から、「俳優C」という情報がプロファイルに追加される。
【0167】このようにして、ロボット1は、会話の中からユーザの趣向を取得していく。なお、趣向を取得するという目的から、図29に示した会話例において、ユーザが時刻t4において、”おもしろくなかった”と返答した場合、「タイトルA」をプロファイルに追加しないようにしても良い。
【0168】数日後、このようなプロファイルに従い、サーバ101からロボット1に、例えば、”俳優C主演の最新作「タイトルB」、明日公開、新宿では○○館で上映”という情報がダウンロードされたとする。ロボット1は、その情報から、ユーザに対して、時刻t1’において、”俳優Cさんが主演している新しい映画が公開されるよ”と話かける。ユーザは、数日前に、俳優Cさんの演技をほめていることから、その話題に興味を持ち、時刻t2’において、”いつから?”と質問する。ロボット1は、既にいつ公開されるのかの情報を取得している。また、既にユーザの最寄り駅の情報(プロファイル)から、最寄りの映画館の情報も取得することが可能であり、この例では、既に取得している。
【0169】ロボット1は、時刻t3’において、ユーザの質問に対し、取得している情報を基に、”明日からです。新宿だと、○○館で上映しますよ”と返答する。ユーザは、その情報を得て、時刻t4’において、”見たいなー”と発話する。
【0170】このようにして、ユーザのプロファイルに基づく情報を、会話という方法で伝えることにより、自然な宣伝を行うことが可能となる。すなわち、上述した会話例では、”タイトルB”という映画の宣伝を行えたことになる。
【0171】なお、サーバ101に記憶されたプロファイル、または、ユーザが自発的に提供したプロファイルを用いて、広告代理店などは、ユーザに対して自社の製品宣伝などのダイレクトメールを送付できるようにしても良い。
【0172】上述した実施の形態のにおいては、ユーザと音声により会話を行う場合を説明したが、文字により会話を行う場合にも、本発明は適用できる。
【0173】上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0174】この記録媒体は、図30に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク211(フロッピディスクを含む)、光ディスク212(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク213(MD(Mini-Disk)を含む)、若しくは半導体メモリ214などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM202や記憶部208が含まれるハードディスクなどで構成される。
【0175】なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0176】また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0177】
【発明の効果】以上の如く請求項1に記載の会話処理装置、請求項6に記載の会話処理方法、および請求項7に記載の記録媒体によれば、ユーザと会話する話題に関する情報を記憶し、ユーザのプライベートな情報を、ユーザとの会話のなかから取得し、ユーザの発話を認識し、記憶されている情報、または、認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成するようにしたので、ユーザに自然で、楽しい会話を提供することが可能となる。
【図面の簡単な説明】
【図1】本発明を適用したロボットの一実施の形態の外観構成例を示す斜視図である。
【図2】図1のロボットの内部構成例を示すブロック図である。
【図3】図2のコントローラ10の機能的構成例を示すブロック図である。
【図4】音声認識部31Aの内部構成を示すブロック図である。
【図5】会話処理部38の内部構成を示すブロック図である。
【図6】音声合成部36の内部構成を示すブロック図である。
【図7】情報nをダウンロードする際のシステム構成を示すブロック図である。
【図8】図7のシステムの詳細な構成を示す図である。
【図9】図7のシステムの詳細な他の構成を示す図である。
【図10】話題遷移のタイミングについて説明する図である。
【図11】話題遷移のタイミングについて説明する図である。
【図12】話題遷移のタイミングについて説明する図である。
【図13】話題遷移のタイミングについて説明する図である。
【図14】話題遷移のタイミングを説明するフローチャートである。
【図15】話題遷移のタイミングを決定する平均値と確率値との関係を示す図である。
【図16】発話パターンを説明する図である。
【図17】話題遷移のタイミングを決定する会話が途絶えた時間と確率値との関係を示す図である。
【図18】話題メモリ76に記憶された情報について説明する図である。
【図19】属性がキーワードである場合について説明する図である。
【図20】話題遷移について説明するフローチャートである。
【図21】テーブルについて説明する図である。
【図22】図20のフローチャートのステップS15の処理の詳細を示すフローチャートである。
【図23】話題遷移について説明する他のフローチャートである。
【図24】ロボット1とユーザの間で交わされる会話の一例を説明する図である。
【図25】ユーザ側が話題遷移した場合のロボット1の動作について説明するフローチャートである。
【図26】関連度テーブルの更新について説明するフローチャートである。
【図27】会話処理部38の動作について説明するフローチャートである。
【図28】属性について説明する図である。
【図29】ロボット1とユーザの間で交わされる会話の一例を説明する図である。
【図30】媒体を説明する図である。
【符号の説明】
10 コントローラ, 10A CPU, 10B メモリ, 15 マイク,16 CCD, 17 タッチセンサ, 18 スピーカ, 19 通信部,31 センサ入力処理部, 31A 音声認識部, 31B 画像認識部, 31C 圧力処理部, 32 感情/本能モデル部, 33 行動決定機構部,34 姿勢遷移機構部, 35 制御機構部, 36 音声合成部, 37 音響処理部, 38 会話処理部, 74 話題管理部, 75 会話履歴メモリ, 76 話題メモリ, 77 会話中話題メモリ, 101 サーバ, 103 通信装置, 110 話題データベース, 111 プロファイルメモリ,112 フィルタ、 141 ロボット用フレーム, 142 ユーザ用フレーム
【0001】
【発明の属する技術分野】本発明は会話処理装置および方法、並びに記録媒体に関し、特に、ユーザと会話を行うロボットなどに用いて好適な会話処理装置および方法、並びに記録媒体。
【0002】
【従来の技術】従来より、玩具等として、タッチスイッチが押圧操作されると、合成音を出力するロボット(ぬいぐるみ状のものを含む)が数多く製品化されている。
【0003】また、コンピュータとの定型的な会話方式(タスクオリエンテッド)が用いられ、航空券の予約が行なわれたり、旅行案内のサービスを提供するなどのサービスがある。これは、予め決められたことを話すだけで、雑談を含む人間との自然な会話を行うものではなかった。コンピュータと人間とが、雑談を含む自然な会話を行うための試みとして、Eliza(James Allen:Natural Language Understanding,6乃至9頁などに開示されている)などの実験的なものがある。
【0004】
【発明が解決しようとする課題】上述したElizaなどは、人間(ユーザ)とやりとりしている会話の内容は、殆ど理解しておらず、換言すれば、オウム返し的な会話しかできないので、ユーザは、すぐに飽きてしまうといった課題があった。
【0005】ユーザが飽きないような、かつ自然な流れでの会話を行うには、1つの話題を長々と話したり、逆に、話題を次々と変えていったりといったことがないようにすることが必要である。すなわち、自然な話題遷移が、自然な会話を行うためには大切な要素となる。また、話題を遷移するためには、コンピュータ側でユーザに提供するための、会話が楽しくなるような話題を記憶しておく必要がある。
【0006】本発明はこのような状況に鑑みてなされたものであり、会話の話題となりうる情報をネットワークを介してダウンロードすることにより、ユーザに提供する話題を新鮮なものとし、もって、ユーザに楽しく、自然な会話を提供することを目的とする。
【0007】
【課題を解決するための手段】請求項1に記載の会話処理装置は、ユーザと会話する話題に関する情報を記憶する記憶手段と、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得手段と、ユーザの発話を認識する認識手段と、記憶手段により記憶されている情報、または、認識手段による認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成手段とを含むことを特徴とする。
【0008】他の装置と通信する通信手段をさらに含み、記憶手段は、他の装置が、取得手段により取得されたユーザのプライベートな情報を基に選択した話題に関する情報を記憶するようにすることができる。
【0009】前記記憶手段は、他の装置から送信された話題に関する情報の中から、取得手段により取得されたユーザのプライベートな情報を基に、所定の情報を選択し、記憶するようにすることができる。
【0010】会話は、音声または文字により行われるようにすることができる。
【0011】ロボットに内蔵されるようにすることができる。
【0012】請求項6に記載の会話処理方法は、ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得ステップと、ユーザの発話を認識する認識ステップと、記憶制御ステップの処理で記憶された情報、または、認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする。
【0013】請求項7に記載の記録媒体のプログラムは、ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、ユーザのプライベートな情報を、ユーザとの会話のなかから取得する取得ステップと、ユーザの発話を認識する認識ステップと、記憶制御ステップの処理で記憶された情報、または、認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする。
【0014】請求項1に記載の会話処理装置、請求項6に記載の会話処理方法、および請求項7に記載の記録媒体においては、ユーザと会話する話題に関する情報が記憶され、ユーザのプライベートな情報が、ユーザとの会話のなかから取得され、ユーザの発話が認識され、記憶されている情報、または、認識結果のうち、少なくとも一方が用いられて、ユーザと会話するための応答文が生成される。
【0015】
【発明の実施の形態】図1は、本発明を適用したロボットの一実施の形態の外観構成例を示しており、図2は、その電気的構成例を示している。
【0016】本実施の形態では、ロボットは、犬形状のものとされており、胴体部ユニット2の前後左右に、それぞれ脚部ユニット3A,3B,3C,3Dが連結されるとともに、胴体部ユニット2の前端部と後端部に、それぞれ頭部ユニット4と尻尾部ユニット5が連結されることにより構成されている。
【0017】尻尾部ユニット5は、胴体部ユニット2の上面に設けられたベース部5Bから、2自由度をもって湾曲または揺動自在に引き出されている。胴体部ユニット2には、ロボット全体の制御を行うコントローラ10、ロボットの動力源となるバッテリ11、並びにバッテリセンサ12および熱センサ13からなる内部センサ部14などが収納されている。
【0018】頭部ユニット4には、「耳」に相当するマイク(マイクロフォン)15、「目」に相当するCCD(Charge Coupled Device)カメラ16、触覚に相当するタッチセンサ17、「口」に相当するスピーカ18などが、それぞれ所定位置に配設されている。
【0019】脚部ユニット3A乃至3Dそれぞれの関節部分や、脚部ユニット3A乃至3Dそれぞれと胴体部ユニット2の連結部分、頭部ユニット4と胴体部ユニット2の連結部分、並びに尻尾部ユニット5と胴体部ユニット2の連結部分などには、図2に示すように、それぞれアクチュエータ3AA1乃至3AAK、3BA1乃至3BAK、3CA1乃至3CAK、3DA1乃至3DAK、4A1乃至4AL、5A1および5A2が配設されており、これにより、各連結部分は、所定の自由度をもって回転することができるようになっている。
【0020】頭部ユニット4におけるマイク15は、ユーザからの発話を含む周囲の音声(音)を集音し、得られた音声信号を、コントローラ10に送出する。CCDカメラ16は、周囲の状況を撮像し、得られた画像信号を、コントローラ10に送出する。
【0021】タッチセンサ17は、例えば、頭部ユニット4の上部に設けられており、ユーザからの「なでる」や「たたく」といった物理的な働きかけにより受けた圧力を検出し、その検出結果を圧力検出信号としてコントローラ10に送出する。
【0022】胴体部ユニット2におけるバッテリセンサ12は、バッテリ11の残量を検出し、その検出結果を、バッテリ残量検出信号としてコントローラ10に送出する。熱センサ13は、ロボット内部の熱を検出し、その検出結果を、熱検出信号としてコントローラ10に送出する。
【0023】コントローラ10は、CPU(Central Processing Unit)10Aやメモリ10B等を内蔵しており、CPU10Aにおいて、メモリ10Bに記憶された制御プログラムが実行されることにより、各種の処理を行う。即ち、コントローラ10は、マイク15や、CCDカメラ16、タッチセンサ17、バッテリセンサ12、熱センサ13から与えられる音声信号、画像信号、圧力検出信号、バッテリ残量検出信号、熱検出信号に基づいて、周囲の状況や、ユーザからの指令、ユーザからの働きかけなどの有無を判断する。
【0024】さらに、コントローラ10は、この判断結果等に基づいて、続く行動を決定し、その決定結果に基づいて、アクチュエータ3AA1乃至3AAK、3BA1乃至3BAK、3CA1乃至3CAK、3DA1乃至3DAK、4A1乃至4AL、5A1、5A2のうちの必要なものを駆動させ、これにより、頭部ユニット4を上下左右に振らせたり、尻尾部ユニット5を動かせたり、各脚部ユニット3A乃至3Dを駆動して、ロボットを歩行させるなどの行動を行わせる。
【0025】また、コントローラ10は、必要に応じて、合成音を生成し、スピーカ18に供給して出力させたり、ロボットの「目」の位置に設けられた図示しないLED(Light Emitting Diode)を点灯、消灯または点滅させる。
【0026】以上のようにして、ロボットは、周囲の状況等に基づいて自律的に行動をとることができるようになっている。
【0027】次に、図3は、図2のコントローラ10の機能的構成例を示している。なお、図3に示す機能的構成は、CPU10Aが、メモリ10Bに記憶された制御プログラムを実行することで実現されるようになっている。
【0028】コントローラ10は、特定の外部状態を認識するセンサ入力処理部31、センサ入力処理部31の認識結果等を累積して、感情および本能の状態を表現する感情/本能モデル部32、センサ入力処理部31の認識結果等に基づいて、続く行動を決定する行動決定機構部33、行動決定機構部33の決定結果に基づいて、実際にロボットに行動を起こさせる姿勢遷移機構部34、各アクチュエータ3AA1乃至5A1および5A2を駆動制御する制御機構部35、合成音を生成する音声合成部36、並びに音声合成部36の出力を制御する音響処理部37から構成されている。
【0029】センサ入力処理部31は、マイク15や、CCDカメラ16、タッチセンサ17等から与えられる音声信号、画像信号、圧力検出信号等に基づいて、特定の外部状態や、ユーザからの特定の働きかけ、ユーザからの指示等を認識し、その認識結果を表す状態認識情報を、感情/本能モデル部32および行動決定機構部33に通知する。
【0030】即ち、センサ入力処理部31は、音声認識部31Aを有しており、音声認識部31Aは、行動決定機構部33からの制御にしたがい、マイク15から与えられる音声信号を用いて、音声認識を行う。そして、音声認識部31Aは、その音声認識結果としての、例えば、「歩け」、「伏せ」、「ボールを追いかけろ」等の指令その他を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0031】音声認識部31Aは、また、音声認識を行った認識結果を、会話処理部38にも出力する。これは、後述するユーザとの会話を行うためである。
【0032】また、センサ入力処理部31は、画像認識部31Bを有しており、画像認識部31Bは、CCDカメラ16から与えられる画像信号を用いて、画像認識処理を行う。そして、画像認識部31Bは、その処理の結果、例えば、「赤い丸いもの」や、「地面に対して垂直なかつ所定高さ以上の平面」等を検出したときには、「ボールがある」や、「壁がある」等の画像認識結果を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0033】さらに、センサ入力処理部31は、圧力処理部31Cを有しており、圧力処理部31Cは、タッチセンサ17から与えられる圧力検出信号を処理する。そして、圧力処理部31Cは、その処理の結果、所定の閾値以上で、かつ短時間の圧力を検出したときには、「たたかれた(しかられた)」と認識し、所定の閾値未満で、かつ長時間の圧力を検出したときには、「なでられた(ほめられた)」と認識して、その認識結果を、状態認識情報として、感情/本能モデル部32および行動決定機構部33に通知する。
【0034】感情/本能モデル部32は、ロボットの感情と本能の状態を表現する感情モデルと本能モデルをそれぞれ管理している。行動決定機構部33は、センサ入力処理部31からの状態認識情報や、感情/本能モデル部32からの感情/本能状態情報、時間経過等に基づいて、次の行動を決定し、決定された行動の内容を行動指令情報として、姿勢遷移機構部34に送出する。
【0035】姿勢遷移機構部34は、行動決定機構部33から供給される行動指令情報に基づいて、ロボットの姿勢を、現在の姿勢から次の姿勢に遷移させるための姿勢遷移情報を生成し、これを制御機構部35に出力する。制御機構部35は、姿勢遷移機構部34からの姿勢遷移情報に従って、アクチュエータ3AA1乃至5A1および5A2を駆動するための制御信号を生成し、これをアクチュエータ3AA1乃至5A1および5A2に送出する。これにより、アクチュエータ3AA1乃至5A1および5A2は、制御信号に従って、駆動し、ロボットは、自律的に行動を起こす。
【0036】上述したような構成をもつことにより、ロボット1は、動作すると共に、ユーザと会話することもできる。会話を行うための音声会話システムは、音声認識部31A、会話処理部38、音声合成部36、および音響処理部37から構成される。
【0037】図4は、音声認識部31Aの詳細な構成を示す図である。ユーザの発話は、マイク15に入力され、マイク15では、その発話が、電気信号としての音声信号に変換される。この音声信号は、音声認識部31AのAD(Analog Digital)変換部51に供給される。AD変換部51では、マイク15からのアナログ信号である音声信号がサンプリング、量子化され、デジタル信号である音声データに変換される。この音声データは、特徴抽出部52に供給される。
【0038】特徴抽出部52は、AD変換部51からの音声データについて、適当なフレームごとに、例えば、スペクトルや、線形予測係数、ケプストラム係数、線スペクトル対等の特徴パラメータを抽出し、特徴量バッファ53およびマッチング部54に供給する。特徴量バッファ53では、特徴抽出部52からの特徴パラメータが一時記憶される。
【0039】マッチング部54は、特徴抽出部52からの特徴パラメータ、または特徴量バッファ53に記憶された特徴パラメータに基づき、音響モデルデータベース55、辞書データベース56、および文法データベース57を必要に応じて参照しながら、マイク15に入力された音声(入力音声)を認識する。
【0040】即ち、音響モデルデータベース55は、音声認識する音声の言語における個々の音素や音節などの音響的な特徴を表す音響モデルを記憶している。ここで、音響モデルとしては、例えば、HMM(Hidden Markov Model)などを用いることができる。辞書データベース56は、認識対象の各単語について、その発音に関する情報が記述された単語辞書を記憶している。文法データベース57は、辞書データベース56の単語辞書に登録されている各単語が、どのように連鎖する(つながる)かを記述した文法規則を記憶している。ここで、文法規則としては、例えば、文脈自由文法(CFG)や、統計的な単語連鎖確率(N-gram)などに基づく規則を用いることができる。
【0041】マッチング部54は、辞書データベース56の単語辞書を参照することにより、音響モデルデータベース55に記憶されている音響モデルを接続することで、単語の音響モデル(単語モデル)を構成する。さらに、マッチング部54は、幾つかの単語モデルを、文法データベース57に記憶された文法規則を参照することにより接続し、そのようにして接続された単語モデルを用いて、特徴パラメータに基づき、例えば、HMM法等によって、マイク15に入力された音声を認識する。そして、マッチング部54による音声認識結果は、例えば、テキスト等で出力される。
【0042】なお、マッチング部54は、会話処理部38から、そこで得られる情報を受信することができるようになっており、その会話管理情報に基づいて、精度の高い音声認識を行うことができるようになっている。また、マッチング部54は、入力された音声を対象として、再度、処理を行うことが必要な場合は、特徴量バッファ53に記憶された特徴パラメータを用いて処理を行うようになっており、これにより、ユーザに再度の発話を要求せずに済むようになっている。
【0043】図5は、会話処理部38の詳細な構成を示す図である。音声認識部31Aから出力された認識結果(テキストデータ)は、会話処理部38の言語処理部71に入力される。言語処理部71は、辞書データベース72と解析用文法データベース73に記憶されているデータを基に、入力された音声認識結果を、形態素解析、構文解析などの解析を行うことにより、単語の情報や構文の情報などの言語情報を抽出する。また、辞書に記述された内容を基に、入力の音声発話の意味、意図なども抽出する。
【0044】すなわち、辞書データベース72には、単語の表記や解析用文法を適用するために必要な品詞情報などの情報、単語の個別の意味情報などを記憶されており、解析用文法データベース73には、辞書データベース72に記憶されている各単語の情報を基に、単語連鎖に関する制約を記述したデータが記憶されている。これらのデータを用いて言語処理部71は、入力された音声認識結果のテキストデータを解析する。
【0045】解析用文法データベース73に記憶されているデータは、正規文法、文脈自由文法、統計的な単語連鎖確立、意味的な解析までを含める場合はHPSGなどの意味論を含んだ言語理論などを用いる、テキスト解析に必要なデータである。
【0046】言語処理部71により抽出された情報に基づき、話題管理部74は、現在の話題を会話中話題メモリ77に管理、更新させると共に、次の話題遷移(詳細は後述する)に備えて、会話履歴メモリ75に管理されている情報を適宜更新する。また、話題管理部74は、話題遷移を起こす場合、話題メモリ76に記憶されている情報を参照して遷移する話題を決定する。
【0047】会話履歴メモリ75は、会話された会話の内容自身、あるいは、会話から抽出された情報が蓄積されており、現在会話されている話題(会話中話題メモリ77に記憶されてる話題)より以前の会話で、どのような話題が話されたのかを調査し、話題の遷移をコントロールする際に用いられるデータが記憶されている。
【0048】話題メモリ76は、ユーザと会話を実行している際、その会話の内容に一貫性を保つための情報が複数格納されている。話題メモリ76は、話題管理部74から話題の遷移を起こす際の遷移先の話題を探索するとき、或いは、ユーザからの話題の変更に追従して話題を変更するときに、参照される情報を蓄積しているメモリである。この話題メモリ76に記憶されている情報は、後述する方法により追加、更新される。
【0049】会話中話題メモリ77は、現在話している話題に関する情報が格納されている。具体的には、話題メモリ76に記憶されている話題に関する情報から1つ、話題管理部74により選択された情報を記憶している。話題管理部74は、会話中話題メモリ77に記憶されている情報を基に、ユーザとの会話を進めていく。そのため、会話でやりとりされる情報により、例えば、どの内容を既に話し終わったかなどを管理し、その情報は、適宜更新される。
【0050】会話生成部78は、会話中話題メモリ77で管理されている会話中の話題に関する情報と、直前のユーザの発話から言語処理部71により抽出された情報などに基づき、辞書データベース79と会話生成規則データベース80に記憶されているデータを参照して適切な応答文(テキストデータ)を生成する。
【0051】辞書データベース79は、応答文を作成するのに必要な単語情報が記憶されている。辞書データベース72と辞書データベース79は、同じ情報を記憶するようにしても良い。従って、共用することも可能である。
【0052】会話生成規則データベース80は、会話中話題メモリ77の内容に基づいて、どのような応答文を、どのように生成するのかに関する規則が記憶されている。例えば、話題の中の、まだ話していない内容を話す、相槌を最初に入れる、などの話題に対する話の進め方と共に、仮に、話題が意味的なフレーム構造などで管理されているなら、そこから自然言語文を生成する規則なども書かれている。この意味構造から自然言語文を生成する方法は、言語処理部71により行われる処理の逆の処理として行うことにより、実現することが可能である。
【0053】このようにして、会話生成部78により生成された、テキストデータとしての応答文は、音声合成部36に出力される。
【0054】図6は、音声合成部36の構成例を示している。テキスト解析部91には、会話処理部38が出力するテキストが、音声合成処理の対象として入力されるようになっており、テキスト解析部91は、辞書データベース92や解析用文法データベース93を参照しながら、そのテキストを解析する。
【0055】即ち、辞書データベース92には、各単語の品詞情報や、読み、アクセント等の情報が記述された単語辞書が記憶されており、また、解析用文法データベース93には、辞書データベース92の単語辞書に記述された単語について、単語連鎖に関する制約等の解析用文法規則が記憶されている。そして、テキスト解析部91は、この単語辞書および解析用文法規則に基づいて、そこに入力されるテキストの形態素解析や構文解析等の解析を行い、後段の規則合成部94で行われる規則音声合成に必要な情報を抽出する。ここで、規則音声合成に必要な情報としては、例えば、ポーズの位置や、アクセントおよびイントネーションを制御するための情報、その他の韻律情報や、各単語の発音等の音韻情報などがある。
【0056】テキスト解析部91で得られた情報は、規則合成部94に供給され、規則合成部94では、音素片データベース95を用いて、テキスト解析部91に入力されたテキストに対応する合成音の音声データ(デジタルデータ)が生成される。
【0057】即ち、音素片データベース95には、例えば、CV(Consonant, Vowel)や、VCV、CVC等の形で音素片データが記憶されており、規則合成部94は、テキスト解析部91からの情報に基づいて、必要な音素片データを接続し、さらに、ポーズ、アクセント、イントネーション等を適切に付加することで、テキスト解析部91に入力されたテキストに対応する合成音の音声データを生成する。
【0058】この音声データは、DA変換部96に供給され、そこで、アナログ信号としての音声信号に変換される。この音声信号は、図示せぬスピーカに供給され、これにより、テキスト解析部91に入力されたテキストに対応する合成音が出力される。
【0059】上述したように、音声会話システムは構成される。ロボット1は、音声会話システムを備えることにより、ユーザと会話を行うことができるのだが、ここで、人と人との会話について考える。人と人とが会話しているとき、1つの話題を永遠と話していることはなく、きりのいいところで、話題を変えることが一般的である。話題を変える際、全く関連性のない話題に切り変わる場合もあるが、関連性がある話題に切り変わることの方が自然な会話である。このようなことは、人(ユーザ)とロボット1との間で交わされる会話においても当てはまることである。
【0060】そこで、ロボット1は、ユーザと会話をしているとき、適切な場面で話題を変える(遷移)する機能をもつ。その為には、話題となる情報を記憶しておく必要がある。また、その話題となる情報は、ユーザと話を合わせる上で、ユーザが知っている情報は勿論、ユーザに話題を提供する上で、ユーザが知らないような情報も記憶しておく必要がある。従って、古い情報ばかりでなく、最新の情報を記憶する必要性も出てくる。
【0061】そこで、ロボット1には、最新の情報(以下、適宜、情報nと記述する)を取得するために、通信機能(図2の通信部19)を備える。ここでは、情報nを提供するサーバから、その情報nをダウンロードする場合を説明する。図7(A)は、ロボット1に備えられた通信部19が、直接サーバ101と通信を行う場合を示し、図7(B)は、通信ネットワークとして、例えば、インターネット102を介して通信部19とサーバ101が通信を行う場合を示している。
【0062】図7(A)に示したような構成にした場合、ロボット1の通信部19は、例えば、PHS(Personal Handyphone System)に用いられている技術を流用することにより実現することができる。例えば、通信部19は、ロボット1が充電している間に、サーバ101のダイヤルをダイヤリングすることで、サーバ101と接続し、情報nをダウンロードする。
【0063】図7(B)に示したような構成の場合、通信装置103とロボット1は、有線または無線により通信が行われる。例えば、通信装置103をパーソナルコンピュータで構成する。まず、ユーザは、パーソナルコンピュータを、インターネット102を介してサーバ101と接続させる。そして、サーバ101から、情報nをダウンロードし、パーソナルコンピュータ内の記憶装置に、一旦記憶させる。その記憶された情報nを、例えば、赤外線による無線や、 USB(Universal Serial Bus)などの有線によりロボット1の通信部19に送信する。このようにしてロボット1が情報nを取得することができる。
【0064】さらに、通信装置103は、所定の時間に、自動的にサーバ101と接続し、情報nをダウンロードし、ロボット1に送信するようにしても良い。
【0065】次に、ダウンロードされる情報nについて説明する。情報nとして、全てのユーザに、同一の情報nを提供するようにしても良いが、全てのユーザに対して、その情報nが有効な情報であるとは限らない。換言すれば、ユーザ毎に趣向は異なり、ユーザとの会話を成り立たせるには、そのユーザの趣向に合った情報nのみをダウンロードし記憶する、または、全ての情報nをダウンロードした後、選択し、ユーザの趣向に合った情報nのみを記憶するようにすればよい。
【0066】図8は、サーバ101側で、ロボット1に提供する情報nを選択する場合のシステム構成を示す図である。サーバ101は、話題データベース110、プロファイルメモリ111、およびフィルタ112Aを備えている。話題データベース110は、情報nを記憶している。情報nは、芸能情報、経済情報といったカテゴリ毎に記憶されている。これらの情報nは、後述するように、ロボット1が、情報nを用いて、ユーザに話題を提供することにより、ユーザが知らなかった情報を提供することができ、宣伝効果がある。従って、宣伝を行いたい会社などを含む提供者から、話題データベース110に記憶される情報nは提供される。
【0067】プロファイルメモリ111は、ユーザの趣向などの情報を記憶している。プロファイルは、ロボット1から供給され、適宜、更新される。また、プロファイルは、ロボット1が、ユーザと会話を重ねていくうえで、何度も出てくる話題(キーワード)を記憶することで作成するようにしても良いし、ユーザが、ロボット1に入力し、記憶させるような機能を備えるようにしても良い。また、会話形式で、ロボット1がユーザに対して質問し、その質問に対して答えたユーザの答えをプロファイルとして作成するようにしても良い。
【0068】フィルタ112Aは、プロファイルメモリ111に記憶されているプロファイルを基に、話題データベース110に記憶されている情報nの中から、そのプロファイルに適した情報n、すなわちユーザの趣向に合った情報nを選択して出力する。
【0069】図7を参照して説明したような方法により、フィルタ112Aから出力された情報nは、ロボット1の通信部19に受信される。通信部19に受信された情報nは、メモリ10B内の話題メモリ76に記憶される。記憶メモリ76に記憶された情報nは、話題を遷移させる時に用いられる。
【0070】会話処理部38により処理され、出力された情報は、適宜、プロファイル作成部123に出力される。上述したように、ユーザと会話を交わすなかで、プロファイルが作成される場合、プロファイル作成部123によりプロファイルが作成され、プロファイルメモリ121に記憶される。プロファイルメモリ121に記憶されたプロファイルは、適宜、通信部19を介して、サーバ101のプロファイルメモリ111に送信されることにより、プロファイルメモリ111内の、ロボット1のユーザに対応するプロファイルが更新される。
【0071】図8に示したような構成にした場合、プロファイルメモリ111に記憶されているプロファイル(ユーザ情報)が、外部に漏れる可能性があり、プライバシーを保護するという観点から、問題が生じる可能性がある。そこで、プロファイルをサーバ101に管理させないような構成とすることも可能である。図9は、サーバ101側でプロファイルを管理しない場合のシステム構成を示す図である。
【0072】図9に示した構成では、サーバ101は、話題データベース110のみを備える。ロボット1のコントローラ10は、フィルタ112Bを備える構成となり、ロボット1のコントローラ10は、フィルタ112Bを新たに備える構成となる。このような構成にした場合、サーバ101は、話題データベース110に記憶されている全ての情報nを、ロボット1に対して提供する。ロボット1の通信部19により受信された情報nは、フィルタ112Bにより、フィルタリングされ、その結果、残った情報nのみが、話題メモリ76に記憶される。
【0073】このように、ロボット1の方で、情報nを選択するようにすれば、ユーザのプロファイルを、外部に送信することがない(外部で管理することがない)ので、ユーザのプライバシーは守られる。
【0074】ここで、プロファイルとして扱う情報について説明する。プロファイルの情報としては、年齢、性別、出身地、好きな俳優、好きなスポーツ、好きな場所、好きな食べ物、趣味、最寄り駅などであり、また、経済情報、芸能情報、スポーツ情報などに対して、どの程度興味があるか数値で表した情報も含まれる。
【0075】このようなプロファイルに基づき、選択されることにより、ユーザの趣向に合った情報nのみが、話題メモリ76に記憶される。ロボット1は、話題メモリ76に記憶された情報nを基に、ユーザとの会話が自然に流れるように、話題を遷移する。会話を自然に行うためには、話題を遷移するタイミングも大切である。次に、話題を遷移させるタイミングの決定の仕方について説明する。
【0076】話題を遷移させるための処理として、ロボット1は、ユーザとの会話が開始されると、自分用のフレームとユーザ用のフレームを作成する。フレームについて、図10を参照して説明する。時刻t1において、ロボット1が、ユーザに対して、”昨日、成田で、事故があったんだって”という新しい話題を持ちかけたとする。このとき、ロボット用フレーム141とユーザ用フレーム142が話題管理部74内に作成される。
【0077】ロボット用フレーム141とユーザ用フレーム142には、同一の項目が用意されており、すなわち、”いつ”、”どこで”、”だれが”、”どうした”、”なぜ”という5項目が用意されている。ロボット1側が、”昨日、成田で、事故があったんだって”という話題を提供したことにより、ロボット側のフレーム141の各項目は0.5に設定される。なお、ここでは、各項目に設定される値は、0.0乃至1.0の値をとるとする。値が0.0の場合は、その項目について全く知らない(全く話していない)ことを示し、1.0の場合は、全ての情報を知っている(その項目については、話し尽くした)ことを示す。
【0078】ロボット1が話題を提供した場合、ロボット1は、その話題についての情報を得ていることを示している。換言すれば、提供した話題は、話題メモリ76に記憶されている(話題メモリ76に記憶されていたが、現在話している話題となることにより、会話中話題メモリ77に移され、記憶されている)ことになる。
【0079】その記憶されている情報は、その情報に関する情報をユーザは、さらに多く知っている場合も想定されるし、そうでない場合も想定される。従って、ロボット1が話題を提供した場合、その話題に関するロボット用フレーム141の各項目には、初期値として0.5が設定され、ユーザ側は何もしらないと想定し、ユーザ用フレーム142の各項目は0.0に設定される。
【0080】初期値として設定される値として、ここでは、0.5としたが、その他の値を設定するようにしても良い。また、例えば、”いつ”という項目は、具体的には、通常、”年”、”月”、”日”、”時”、”分”の5つの情報(”秒”も含めれば6つの情報になるが、会話では、通常、秒まで、話題になることはないと仮定し、ここでは、含めない)がそろえば、”いつ”という項目に対しては、全ての情報がそろったとしても良い。そこで、単純に、1.0を5等分した0.2を、1つの情報に当てはめ、例えば、”昨日”という単語には、”年”、”月”、”日”の3つの情報を含むと判断し、0.6という値を設定するようにしても良い。
【0081】また、上述した説明においては、初期値として全ての項目に0.5を設定したが、話題メモリ76内に、その時、話題にしていることに関して、例えば、”いつ”という項目にあたるキーワードが存在しないときは、その項目には0.0を設定するようにしても良い。
【0082】このように、会話が開始されると、その話題に関して、フレームと、そのフレーム内の各項目の値が設定される。ユーザは、ロボット1の”昨日、成田で、事故が、あったんだって”という発話に対し、ユーザが、時刻t2において、”えっ?”という、言われた事を聞き返すような場合に用いられる発話をしたとすると、ロボット1は、時刻t3において、もう一度、同じ発話を繰り返す。
【0083】繰り返し発話された事により、ユーザがロボット1が発話したことを理解し、時刻t4において、”そうだね”という、発話された事を理解したという場合に用いられる発話をしたとすると、ユーザ用フレーム142が書き換えられる。ユーザ側は、”昨日”という情報から”いつ”という項目が、”成田で”という情報から”どこ”という項目が、”事故があった”という情報から”どうした”という項目が、それぞれ知り得たと判断し、それらの項目の値が0.2に設定される。
【0084】0.2に設定されるというのは、一例であり、その他の値が設定されるようにしても良い。例えば、現在話している話題のうち、”いつ”という項目に対してロボット1が知り得ている情報の全てを発話してしまった場合、その項目に関しては、同じ値を設定するようにしても良い。例えば、この場合、ロボット1が”いつ”という項目に対して”昨日”というキーワードしか取得していなかった場合、既に、ユーザに対して発話してしまっているので、ユーザ用フレーム142の”いつ”という項目の値は、ロボット用フレーム141の”いつ”という項目に設定されている0.5が設定される。
【0085】ここで、ユーザが時刻t4に、”そうだね”ではなく、図11に示すように、”何時ごろ?”と質問してきた場合、ユーザ用フレーム142に設定される値が異なってくる。すなわち、ロボット1は、今、ユーザは、”いつ”の項目に関わる質問をしてきたので、”いつ”という項目に関する情報に興味があると判断し、ユーザ用フレーム142の”いつ”という項目の値を、他の項目に設定される値である0.2よりも大きい0.4に設定する。このように、会話の内容により、それぞれのフレームの項目に設定される値は異なる。
【0086】上述した説明では、ロボット1側からユーザに対して話題を提供した場合を説明したが、ユーザ側からロボット1に対して話題を提供した場合を説明する。図12に示すように、時刻t1において、ユーザが”成田で、事故が、あったんだって”とロボット1に対して発話したとする。その発話を受けて、ロボット1は、ロボット用フレーム141とユーザ用フレーム142を作成する。
【0087】まず、ユーザ用フレーム142の各項目の値についてだが、”成田”という情報から”どこで”という項目の値が、”事故があった”という情報から”どうした”という項目の値が、それぞれ設定される。同様の判断に基づき、ロボット用フレーム141内の各項目も、ユーザ用フレーム142内の各項目の値と同じ値に設定される。
【0088】このようなユーザの発音に対し、ロボット1が、時刻t2において返答を行う。ロボット1は、各フレーム内の項目のなかで、値が0.0という項目がなくなるような方向で会話が進むように、返答文を作成する。この場合、まず、”いつ”という項目の値が、ロボット用フレーム141、ユーザ用フレーム142共に0.0であるので、ロボット1は、時刻t2において、”いつ?”という質問をユーザに対してする。
【0089】この質問に対し、ユーザは、時刻t3において、”昨日”という発話をしたとすると、その発話を受けて、フレーム内の各項目の値が設定し直される。即ち、”昨日”という、”いつ”という項目に関する情報が得られた事により、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値が0.0から0.2に設定し直される。
【0090】さらに、時刻t4(図13)においてロボット1が”何時頃?”という質問をユーザにし、ユーザが時刻t5において、”夜8時過ぎ”と返答した場合、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値が、0.2より高い値の0.6に設定し直される。このように、ロボット1が質問をユーザにすることにより、値が0.0である項目がなくなる方向で話が進められる事により、自然な会話が成立する。
【0091】なお、時刻t5において、ユーザが”知らない”という返答をした場合にも、上述したように、ロボット用フレーム141とユーザ用フレーム142の”いつ”という項目の値は0.6に設定される。このようにするのは、互いに知らない事に対して再度、質問するようなことがないようにする、換言すれば、値が小さいままにしておくと、再度、質問するようなことが想定されるため、そのような事を防ぐために行う。従って、”知らない”というような返答を受けた場合は、その項目に関する会話は、それ以上できないと判断することが可能なので、そのような項目の値は、1.0に設定されるようにしても良い。
【0092】このような会話が続けられることにより、ロボット用フレーム141とユーザ用フレーム142の各項目の値が1.0に近づいていくことになる。全ての項目の値が1.0になるということは、その話題に付いては、語り尽くした事を示す。そのような場合は、話題を遷移する事が自然の会話の流れである。また、語り尽くす前に、話題を遷移する場合があるというのも、自然の会話の流れである。換言すれば、1つの話題に対して、常に語り尽くさなければ、次の話題に遷移できないという設定にしてしまうと、会話はしつこくなり、楽しくなくなる場合が想定されるので、語り尽くす前に(全ての項目の値が1.0になる前に)、話題を遷移する場合もあるように設定しておく。
【0093】図14のフローチャートを参照して、上述したようなフレームを用いて、話題の遷移を行うタイミングを制御する方法について説明する。ステップS1において、新しい話題に対して会話が開始されると、ステップS2において、ロボット用フレーム141とユーザ用フレーム142が話題管理部74に生成され、各項目の値が設定される。ステップS3において、平均値が算出される。平均値は、ロボット用フレーム141とユーザ用フレーム142の各項目、この場合10項目の値の平均値である。
【0094】平均値が算出されたら、ステップS4において、話題を遷移するか否かが判断される。平均値の値が、閾値T1以上になったら、話題を遷移するという規則を設けて話題を遷移するか否かを判断しても良いが、閾値T1を小さく設定した場合、会話が中途半端な状態で遷移してしまうことが多くなり、逆に、閾値T1を大きく設定した場合、会話にしつこさが出てきてしまうことが多くなるといったような不都合が生じる事が想定される。
【0095】そこで、本実施の形態においては、図15に示したような関数を用い、平均値により、話題が遷移する確率を変動させる。すなわち、平均値が0.0乃至0.2の間の値の場合、話題が遷移する確率は0なので、話題は遷移しない。平均値が、0.2乃至0.5の間の値の場合、0.1の確率で話題が遷移する。平均値が、0.5乃至0.8の間の値の場合、確率=3×平均値−1.4の式に従って確率が算出され、その確率に従って、話題が遷移する。平均値が、0.8乃至1.0の間の値の場合、1.0の確率、すなわち、必ず話題が遷移する。
【0096】このように、平均値と確率値を用いることにより、話題が遷移するタイミングを、異ならせることが可能となり、より自然な会話を行わせる事が可能となる。なお、図15に示したのは、一例であり、他の関数にしたがっても良い。また、平均値が0.2以上の値の場合、確率値は0.0ではないが、例えば、フレーム内の10項目のうち、4項目の値が0.0の場合は、話題が遷移する確率値を0.0にするなどの規則を設けるようにしても良い。
【0097】さらに、会話が行われる時刻により、用いられる関数を変化させるようにしてもよい。例えば、朝と夜とで異なる関数を用いることにより、朝は、夜と比べて、浅く広い会話ができるといった機能を持たせる事も可能である。
【0098】図14のフローチャートの説明に戻り、ステップS4において、話題を遷移すると判断された場合、話題を遷移し(遷移する先の話題の抽出の仕方については後述する)、その遷移した先の話題について、ステップS1以下の処理が繰り返される。一方、ステップS4において、話題を遷移しないと判断された場合、ステップS5に進み、新たな発話に対してフレーム内の項目の値が設定し直され、その値に対してステップS3以下の処理が繰り返される。
【0099】上述した話題を遷移するタイミングの決定の方法は、フレームというものを用いて行ったが、他の方法を用いても良い。ロボット1とユーザとの間で会話が行われているとき、その会話が交わされた回数をカウントするようにしても良い。これは、通常、会話が交わされる回数が増せば、その話題については十分話し合ったと判断することが可能であるので、会話が交わされた回数で、話題を遷移するか否かを判断することも可能である。
【0100】会話が交わされた回数をカウントした値をカウント値Nとした場合、そのカウント値Nが、単に所定の閾値を越えたとき、話題を遷移するようにしても良いし、P=1−1/Nという式により算出される値Pを、図15の平均値の代わりに用いて話題を遷移するようにしても良い。
【0101】会話が交わされた回数をカウントする代わりに、会話が交わされている時間をカウントすることにより、話題を遷移するタイミングを決定するようにしても良い。ロボット1が発話した時間と、ユーザが発話した時間を累積加算する。その累積加算した加算値Tを、上述したカウンタ値Nの代わりに用いるようにする。加算値Tが所定の閾値を越えた場合に話題を遷移するようにしても良いし、基準会話時間Trという値を設け、P=T/Trという式に基づいて算出された値Pを、図15R>5の平均値の代わりに用いるようにしても良い。
【0102】このようにカウント値Nまたは加算値Tを用いた場合、話題を遷移させるタイミングを決定する処理は、図14のフローチャートを参照して説明したのと基本的に同様だが、ステップS2のフレームを作成するという処理が、カウンタ値N(加算値T)を0に初期化する処理となり、ステップS3の処理は省略され、ステップS5の処理が、カウンタ値N(加算値T)を更新する処理となる。
【0103】会話のなかでは、相槌というのも、話している内容に興味があるかないかを判断するのに重要な要素となるものであり、興味がないと判断される時には、話題を遷移することが好ましい。そこで、話題を遷移するタイミングを決定する方法として、ユーザの発話の音圧の時変化を用いる方法もある。図16(A)に示すように、入力されたユーザの発話(入力パターン)を、区間正規化することにより入力パターンの解析を行う。
【0104】ユーザの発話(相槌)に関して、正規化した解析結果として想定されるのは、例えば、図16(B)に示したように、肯定を意図するパターン、無関心を意図するパターン、標準(意志表現を含まない、単なる相槌)を意図するパターン、および疑問を意図するパターンの4パターンである。入力された入力パターンを区間正規化した結果が、どのパターンに近似しているかは、例えば、いくつかの基準関数との内積値をベクトルとして距離を計算するなどの方法を用いて行う事が可能である。
【0105】入力された入力パターンが、無関心を意図するパターンであると判断された場合、すぐに話題を遷移するようにしても良いし、無関心を意図するパターンであると判断された回数を累積し、その累積値Qが所定値以上になった時に、話題を遷移するようにしても良い。さらに、対話回数もカウントするようにし、累積値Qをカウンタ値Nで割った数値を度数Rとし、その度数Rが所定値以上になったときに話題を遷移させるようにしても良いし、その度数を図15の平均値の代わりとして用いて、話題を遷移させるようにしても良い。
【0106】会話をしているときに、相手が発話したことに対して同じ事を言う(オウム返しする)ようなことは、その話題に興味がないことを示していることが多い。このような事を利用し、ロボット1が発話した事と、その発話に対してユーザが発話した事の一致度を測定し、スコア値を得、そのスコア値を用いて話題を遷移させる。スコア値の算出の仕方としては、例えば、ロボット1が発話した言葉の文字の並びと、ユーザが発話した言葉の文字の並びを単純に比較し、一致する文字数をスコア値とする。
【0107】このようにして得られたスコア値を用いて、上述した方法と同じく、所定の閾値以上になったら話題を遷移させる、または、図15の平均値の代わりに用いて話題を遷移させる。
【0108】上述した方法では、無関心を意図するパターン(音圧と時間との関係におけるパターン)を用いたが、無関心を意図する言葉をトリガーとして話題を遷移させるようにしても良い。無関心を意図する言葉としては、「ふーん」、「へえ」、「あ、そう」、「はいはい」などであり、これらの言葉を無関心を意図する言葉の群として登録しておく。この登録された群内の言葉が、ユーザから発せられたと判断された場合には、話題が遷移されるようにする。
【0109】さらに会話をしている場合に、その会話が止まった、換言すれば、返答に時間がかかったとき、ユーザは、その話題に関して興味がなく、返答したくないといった意思表示であると考える事ができる。そこで、ロボット1は、自己が発話した事に対して、ユーザが返答するまでの時間を測定し、その測定時間に応じて、話題を遷移させるか否かを判断するようにしても良い。
【0110】例えば、図17に示すように、返答までにかかった時間が、0.0乃至1.0秒のときは話題を遷移させない、1.0乃至12.0秒のときは所定の関数により算出される確率値に従い話題を遷移させる、12.0秒以上のときは、必ず話題を遷移させる。図17に示した例は一例であり、用いる関数や秒の設定は、どのようなものを用いても良い。
【0111】上述した方法のうち、1つ、または、複数の組み合わせにより、話題を遷移させるタイミングが決定される。
【0112】なお、ユーザが、「もうその話題はいいよ」、「いいかげんにしろ」、「話題変えようよ」など、話題を遷移することが望まれる発話を受けた場合は、上述した方法による、話題を遷移させるタイミングでないときにも関わらず、話題を遷移させる。
【0113】次に、ロボット1の38により、会話処理部話題を遷移させると判断された際、遷移先の話題の抽出の仕方について説明する。その時話している話題Aから他の話題Bに遷移する場合、話題Aと話題Bとの間に、全く関連性がなくても良いが、多少ながら関連性がある話題に遷移するのが会話の流れを妨げず、自然の流れとなる場合が多い。そこで、本実施の形態では、話題Aに関連がある話題Bに遷移するようにする。
【0114】話題を遷移するための情報は、話題メモリ76に記憶されており、会話処理部38は、上述したような方法で、話題を遷移すると判断した場合、話題メモリ76に記憶されている情報を基に、遷移先の話題を抽出する。ここで、話題メモリ76に記憶されている情報について説明する。
【0115】上述したように、話題メモリ76に記憶されている情報は、インターネットなどの通信ネットワークを介してダウンロードされ、記憶されている。図18は、話題メモリ76内の情報について説明する図である。この場合、話題メモリ76には、4つの情報が記憶されている。各情報は、”事項”、”いつ”、”どこで”、”だれが”、”どうした”といった項目から構成されており、”事項”以外の項目は、ロボット用フレーム141(ユーザ用フレーム142)内の項目と同じである。
【0116】事項は、タイトル的な意味合いをもち、その情報の内容を識別するために設けられたものである。各情報は、その内容を代表する属性をもつ。図19に示した例では、属性としてキーワードを用いた場合を示している。キーワードとしては、各情報に含まれる自立語(名詞や動詞などで、単独で意味を持つ単語)が選択され、設定される。各情報は、その内容を表すテキスト形式で保持しても良いが、図18に示した例では、項目とその値(属性:キーワード)の対で構成したフレーム構造に内容を抽出して保持している。
【0117】図20のフローチャートを参照して、ロボット1側から話題を遷移させる場合の、会話処理部38において行われる処理について説明する。会話処理部38の話題管理部74は、ステップS11において、上述したような方法を用いて、話題の遷移を起こすか否かを判断する。ステップS11において、話題の遷移を起こすと判断された場合、ステップS12に進み、現在の話題の情報と、話題メモリ76内に記憶されている話題の情報との関連度を計算する。ここで、関連度の計算の仕方について説明する。
【0118】関連度の計算としては、例えば、情報の属性であるキーワードのベクトルが成す角、分類の一致度(同じ分類や近い分類がなされている情報が近似している情報であると判断)などを用いる方法が考えられる。また、キーワード間の関連度をテーブルとして定義し、そのテーブルを用いて、現在の話題の情報のキーワードと、話題メモリ76内に記憶されている話題の情報のキーワードとの関連度を計算する方法もある。このような方法を採ると、異なるキーワード間の結び付きまで含めた関連度の計算ができるので、自然な流れで話題を遷移させる事が可能となる。
【0119】ここでは、キーワード間の関連度を定義したテーブルに基づく方法について説明する。図21に、テーブルの一例を示す。図21には、”事項”という項目が”バスの事故”という情報と、”飛行機事故”という情報による作成されたテーブルである。このテーブルとして選択される情報は、現在話されている話題の情報と次の話題となる可能性のある情報、換言すれば、会話中話題メモリ77(図5)に記憶されている情報と、話題メモリ76に記憶されている情報である。
【0120】事項が”バスの事故”という情報には、”バス”、”事故”、”2月”、”10日”、”札幌”、”乗客”、”10人”、”けが”、”スリップ”という9個のキーワードが存在し、事項が”飛行機事故”という情報には、”飛行機”、”事故”、”2月”、”10日”、”インド”、”乗客”、”100人”、”けが”という8個のキーワードが存在する。
【0121】それぞれのキーワードによる組み合わせは、72(=9×8)通りある。各キーワード間には、関連度のスコアが記載されている。これらのスコアの総和を、それらの2つの情報の関連度とする。図21に示したようなテーブルは、情報を提供するサーバ101(図7)において作成し、その作成されたテーブルと共に、情報をロボット1に提供するようにして良いし、ロボット1側で、サーバ101からダウンロードした情報を記憶する際、テーブルを作成し、記憶するようにしても良い。
【0122】予めテーブルを作成しておく場合、会話中話題メモリ77に記憶されている情報と、話題メモリ76に記憶されている情報との両方の情報が、サーバ101からダウンロードされたものであるということが前提である。換言すれば、話題遷移を起こしたのが、ロボット1の場合、また、ユーザが話題遷移を起こした場合でも、話題メモリ76に、ユーザが話しているだろうと判断される話題の情報が記憶されている場合は、予め作成されたテーブルを用いることが可能である。しかしながら、ユーザが話題遷移を起こし、その話題が話題メモリ76に記憶されていないと判断される場合は、予め作成されたテーブルが存在しないので、新たに作成する必要がある。そのような処理については後述する。
【0123】テーブルは、シソーラス(Thesaurus)(語句を意味により分類し、配列したもの。分類語彙表)を参考に、大量のコーバスから統計的に同じ文脈に現れやすい言葉の関連度を取得するなどして作成される。
【0124】次に、具体的に、図21に示したテーブルを参照して、関連度の計算の仕方について説明する。上述したように、”バスの事故”という情報と”飛行機事故”という情報との間でのキーワードの組み合わせとしては、例えば、「バス」と「飛行機」、「バス」と「事故」など、72通り存在する。図21に示した例では、「バス」と「飛行機」の関連度は0.5、「バス」と「事故」の関係度が0.3というようになっている。
【0125】このように、会話中話題メモリ77と、話題メモリ76に、それぞれ記憶されている情報により、テーブルを作成し、そのスコアの総和を算出する。ただし、このようにして総和を算出するようにすると、キーワードの数が多い話題(情報)だと、大きなスコアを持つ可能性が高くなり、キーワードの数が少ない話題だと関連度が低いスコアしか持たない可能性が高くなる。そこで、総和を算出する際、関連度を計算するときに用いられたキーワードの組み合わせの個数(図21に示した例では72)で除算するなどして、正規化するようにしても良い。
【0126】話題Aから話題Bへと遷移する場合の、各キーワード間の関連度を関連度abとし、話題Bから話題Aへと遷移する場合の、各キーワード間の関連度を関連度baとしたとき、関連度abと関連度baが同じスコア値をとる時は、図21に示したように、図中左下半分(或いは右上半分)を用いるようにする。しかし、話題の遷移に方向性を持たせると設定した場合、テーブルの全面を使用する必要がる。しかしながら、テーブルの一部分を用いる場合でも、テーブルの全面を用いる場合でも、同じアルゴリズムにより処理できる。
【0127】図21に示したようなテーブルを作成し、総和を算出する場合、単に総和を算出するのではなく、現在話している話題の流れを考慮し、キーワードに重み付けをして総和を算出するようにしても良い。例えば、現在、話している話題が、”バスの事故が起きたこと”であるとする。その内容に含まれるキーワードとして、「バス」、「事故」があるわけだが、それらのキーワードに重み付けをすることにより、それらのキーワードを含むようなテーブルの総和が高くなる。例えば、重み付けを2と設定すると、図21のテーブルにおいて、「バス」と「飛行機」の関連度は0.5であるが、重み付けを行うことにより、2倍の1.0となる。
【0128】このように重み付けを行うことにより、遷移する前の話題と遷移した後の話題との内容が、関連性のあるものとなり、話題遷移を伴う会話の自然性を増すことができる。なお、重み付けしたものをテーブルとして用いても良い(テーブルを書き換えるようにしても良い)し、テーブルは書き換えずに、関連度の総和を計算する際に重み付けを行うようにしても良い。
【0129】図20のフローチャートの説明に戻り、ステップS12において、上述したように、現在の話題と別の話題との関連度が計算されると、ステップS13において、関連度が最も高い話題、換言すれば、総和値が一番高いテーブルの情報を選択し、その選択した話題を遷移先の話題として設定する。そして、ステップS14において、設定された話題に遷移し、新たな会話が開始される。
【0130】ステップS15において、以前の話題遷移の評価と、その評価に従って、関連度のテーブルの更新が行われる。このようなステップを設けるのは、同じ話題でも、ユーザにより感じ方が異なるため、自然な会話を行うためには、ユーザ毎に適したテーブルが作成される必要があるからである。例えば、「事故」というキーワードに対して、ユーザAは「列車事故」を思い出し、ユーザBは「飛行機事故」を思い出し、ユーザCは「交通事故」を思い出すというように、ユーザにより異なる。また、ユーザAが札幌に旅行に行く計画をたて、実際にその計画に従って旅行に出かけた場合、「札幌」というキーワードに対して、同じユーザAであっても、旅行に行く前と後とでは、思い出すこと、会話の内容の進め方が異なってくる。
【0131】即ち、同一の話題であっても、全ユーザに対して共通の感じ方をするわけではなく、また、同一ユーザにおいても、時間や、その時の状況により感じ方は変化するので、テーブルの関連度は動的に変化させるようにした方が、より自然に、かつ、ユーザにとって楽しい会話を提供することができる。そこで、ステップS15の処理を設ける。図22は、ステップS15の処理の詳細を説明するフローチャートである。
【0132】ステップS21において、話題の遷移は妥当であったか否かが判断される。この判断は、ステップS14において遷移した話題(話題Tとする)を基準とした場合、その前の話題T-1と、さらに前の話題T-2の間で判断される。この判断は、例えば、ロボット1側で、話題T-2に関して記憶していた情報を、どの程度ユーザに伝えたか、例えば、話題T-2に関するキーワードが10個であった場合、その10個のキーワードの内、何個のキーワードを、ユーザに伝えた時点で話題T-1に遷移したかを調査することにより判断することができる。
【0133】また、キーワードを多く伝えられたと判断される場合は、会話時間が長かったということになる。そこで、話題T-2についての会話が、長時間続いた後に話題T-1に遷移したか否かを判断することにより遷移が妥当であったか否かを判断することもできる。このような判断は、ユーザが話題T-2に関して、好意的であったか否かを判断していることになる。
【0134】このような判断の方法を用い、ステップS21において、話題遷移が妥当であったと判断された場合、ステップS22に進み、話題T-1と話題T-2との間のキーワード対を全て作成し、ステップS23において、その対の部分のスコア値が大きくなるように関連度テーブルを更新する。このように、関連度テーブルを更新することにより、次から類似の組み合わせでの遷移が起こりやすくなる。
【0135】なお、ステップS21において、話題遷移は妥当ではなかったと判断された場合、関連度テーブルの更新処理は行われない。これは、妥当ではないと判断された話題遷移に関する情報を用いないようにするためである。
【0136】このように、話題を遷移するために、会話中話題メモリ77に記憶されている情報と、話題メモリ76に記憶されている全ての話題の情報との関連度を計算し、その総和を比べることにより、遷移先の話題を決定するのは、計算コストが高くなってしまう。そこで、話題メモリ76に記憶されている全ての情報について総和を計算してから、遷移先の話題を決定するのではなく、遷移先の対象となる話題を選択しながら、話題の遷移を行うようにすることにより、計算コストを低く抑えるようにする。そのような場合の会話処理部38の動作について、図23のフローチャートを参照して説明する。
【0137】ステップS31において、話題管理部74は、既に上述したような方法により、話題の遷移を起こすか否かを判断し、話題の遷移を起こすと判断した場合、ステップS32に進む。ステップS32において、話題メモリ76から1つの話題の情報を選択する。その選択された情報と、会話中話題メモリ77に記憶されている情報との関連度を、ステップS33において計算する。ステップS33において行われる関連度の計算、および総和は、図20のフローチャートを参照して説明した場合と同様に行われる。
【0138】ステップS34において、ステップS33において計算された総和値が、閾値を越えたか否かが判断される。ステップS33において、総和値が閾値を越えてはいないと判断された場合、ステップS32に戻り、新たな話題に関する情報が話題メモリ76から読み出され、その情報に対して処理が行われる。
【0139】一方、ステップS34において、総和値が閾値を越えたと判断された場合、ステップS35に進み、最近話した話題であるか否かが判断される。例えば、ステップS32における処理で、話題メモリ76から読み出された話題の情報が、現在話している話題の前の話題であったという場合が想定される。同じ話題が繰り返されるというのは不自然であり、会話を不愉快なものにしてしまう原因となるので、そのような事を防ぐために、ステップS35における処理を設ける。
【0140】ステップS35の処理は、会話履歴メモリ75(図5)を調査することにより行われる。会話履歴メモリ75内の情報を調査することにより、最近話した話題ではないと判断された場合、ステップS36に進み、最近話した話題であると判断された場合、ステップS32に戻り、それ以降の処理が繰り返される。ステップS36において、選択された話題に遷移される。
【0141】図24にロボット1とユーザとの間で交わされる会話の一例を示す。時刻t1において、ロボット1が、話題メモリ76に記憶されている情報のなかで、事項(図19)という項目が”バスの事故”というのを選択し、会話を始める。まず、ロボット1が、”札幌でバスの事故がありましたね。”と発話し、それに対してユーザが、時刻t2において、”いつ?”と質問する。ロボット1は、その質問に対し、時刻t3において、”12月10日”と答え、ユーザは、その答えを受けて、時刻t4において、”けがをした人はいたの?”と新たな質問をする。
【0142】ロボット1は、時刻t5において”10人です”と返答する。ユーザは、時刻t6において、”ふーん”と相づちを打つ。このような会話が交わされている間、上述したような処理が繰り返し行われている。そして、ロボット1が、時刻t7において、話題の遷移を起こすと判断し、新たな話題として、事項という項目が”飛行機事故”という話題を選択する。これは、上述したように、遷移する前と後とでの話題には、”事故”、”2月”、”10日”、”けが”といったキーワードが一致し、関連度が高いと判断されるからである。
【0143】ロボット1は、話題の遷移を起こした結果、時刻t7において、”同じ日に、飛行機事故もあったんですよね”と発話する。それに対し、ユーザは、時刻t8において、”インドのやつ?”と興味を持ち、確認するような発話をする。そこで、ロボット1は、さらに会話を続けるために、ユーザの質問に対し、時刻t9において、”そうです、原因がわからない事故です”と肯定し、さらに、原因不明である事実を、ユーザに提供する。ユーザは、時刻t10におて、”どれくらいけがしたの?”と質問し、ロボット1が、時刻t11において、”100人です”と返答する。
【0144】このように、上述した方法により話題を遷移させることにより、自然な会話を成立させる事が可能となる。
【0145】なお、図24に示した会話例において、ユーザが、時刻t8において、”ちょっと待ってよ。バスの事故の原因はなんだったの?”といったような、話題の遷移を受け入れず、遷移前の話題に戻るような明示的な発話がなされたり、または、遷移した話題に対しての応答に時間が空いたような場合、遷移した話題がユーザに受け入れられなかったと判断し、遷移する前の話題に戻り、会話を続ける。
【0146】上述して説明(全ての話題に関するテーブルを作成し、その中で総和値が最も高いのを遷移先の話題として選択する場合の説明)では、話題を遷移させるとき、話題メモリ76に、遷移させるのに適した話題の情報がある、換言すれば、関連度が低い情報でも、他の情報に比べて高ければ、遷移先の話題として選択されるので、場合によっては、自然な会話の流れではなくなる(全く異なる話題に遷移される)時が想定される。
【0147】そのような事を防ぐため、例えば、関連度(総和値)が所定値以下の話題しか、選択できないような状況の場合、または、上述した説明で、1つの話題を選択し、その話題の総和値が閾値以上であれば、その話題を遷移先の話題とする方法において、閾値以上の話題が見つからなかったような場合、”ところで”、”そういえば”などの言葉を発話し、全く異なる話題をユーザに提供するようにしても良い。
【0148】また、上述した説明では、ロボット1が話題を遷移する場合を説明したが、ユーザが話題を遷移する場合も想定される。図25のフローチャートを参照して、ユーザが話題を遷移させた場合に対応した処理を行うために会話処理部38が行う動作について説明する。ステップS41において、ロボット1の話題管理部74は、ユーザが発話した話題が、現在会話している話題(会話中話題メモリ77に記憶されている話題)と関連しているか否かを判断する。この判断は、上述したロボット1が自発的に話題を遷移させる際に用いた、話題間(キーワード)間の関連度の計算の方法と同様の方法を用いて行う事が可能である。
【0149】すなわち、ユーザの単発の発話から取り出されたキーワード群と、現在話されている話題のキーワードとの関連度を計算し、所定の閾値の条件を満たすなら、関連性があると判断する。例えば、ユーザが、”そういえば、札幌で雪祭りがあるんだよね”と発話したとする。その発話からキーワードを抽出した場合、「札幌」、「雪祭り」などがある。これらのキーワードと、現在話している話題のキーワード群とを用いて、話題間の関連度の計算を行い、その計算結果により関連性があるか否かを判断する。
【0150】ステップS41において、現在の話題と関連していると判断された場合、ユーザの話題遷移に追従する処理を行う必要はないので、フローチャートの処理は終了される。一方、ステップS41において、現在話している話題と関連していないと判断された場合、ステップS42に進む。ステップS42において、話題の遷移を許容するか否かが判断される。
【0151】話題の遷移を許容するか否かの判断は、例えば、ロボット1側が、現在話している話題に対して、まだ話す情報がある場合は許容しないなどの規則を設けることにより行われる。また、上述したロボット1側から話題を遷移する場合の処理と、同様に行うようにしても良い。すなわち、ロボット1側で、話題を遷移するタイミングではないと判断される場合は、話題の遷移を許容しないようにする。しかしながら、このように設定してしまうと、話題の遷移の決定は、ロボット1側のみしか行えないことになるので、ロボット1側から話題を遷移する場合に対して、ユーザ側から話題を遷移する場合は、遷移しやすいように、確率値を設定するなどの処理が必要である。
【0152】ステップS42において、話題の遷移を許容しないと判断された場合、話題を遷移しないので、このフローチャートの処理は終了される。一方、ステップS42において、話題の遷移を許容すると判断された場合、ユーザが話している話題を認識する必要があるので、ステップS43において、ユーザが話している話題を話題メモリ76から検索する。
【0153】話題メモリ76から、ユーザが話している話題を検索する方法としては、ステップS41において行った方法と同じように、ユーザの発話から抽出されたキーワードと話題メモリ76に記憶されている全ての話題(情報)のキーワード群との関連度(の総和)を計算することにより、その計算結果が最も大きい値の情報を、まずユーザが話している話題の候補とし、その候補の計算結果が所定値以上であれば、その情報をユーザが話している話題であるとして決定する。このような方法は、ユーザが話している話題と一致する確率が高く、信頼性があるが、計算コストが高くなる。
【0154】そこで、話題メモリ76から、1つの情報を選択し、その情報のキーワード群との関連度を計算し、その計算結果が所定値以上であれば、その話題をユーザが話している話題として決定する。このような処理を所定値以上である情報が検出されるまで繰り返し行うことにより、ユーザが遷移したであろう話題を検索する。
【0155】このような検索処理が行われることにより、ユーザが話している話題であると推定される話題が検索されたか否かが、ステップS44において行われる。ステップS44において、話題が検索されたと判断された場合、ステップS45に進み、その検索された話題(情報)を会話中話題メモリ77に移すことにより、話題を遷移したこととする。
【0156】一方、ステップS44において、話題が検索されなかったと判断された場合、換言すれば、関連度の総和値が所定値を越えた情報がなかったと判断された場合、ステップS46に進む。ステップS46の処理に来るということは、ロボット1が知り得ている情報以外の情報を、ユーザが話していると言うことなので、ロボット1にとっては未知の話題に遷移したとして、会話中話題メモリ77内の情報をクリアする。
【0157】未知の話題に遷移した場合、ロボット1は、ユーザに対して質問をするなどして会話を続ける。また、会話を交わすなかで、会話中話題メモリ77に話題に関する情報を記憶していく。ロボット1は、このようして新しい話題が入力された場合、上述した関連度のテーブルを更新する。図26のフローチャートを参照して、新しく入力された話題によりテーブルが更新される際の処理について説明する。ステップS51において、新しい話題が入力される。新しい話題が入力される状況としては、このように、ユーザがロボット1が取得していない情報の話題を話す場合と、ネットワークなどを介して情報nをダウンロードした場合などが想定される。
【0158】新しい話題が入力されると、ステップS52において、その入力された話題からキーワードが抽出される。そして、ステップS53において、抽出されたキーワードの対が全て生成される。その結果を受けてステップS54において、キーワード間の関連度テーブルが更新される。ステップS54の処理は、図21に示したフローチャートのステップS23の処理と同様なので、その説明は省略する。
【0159】このように、話題の遷移は、ロボット1側から起こす場合と、ユーザ側から起こす場合とが、実際の会話のなかでは混在している。そこで、会話処理部38が行う話題の遷移に関する大筋の流れとしては、図26R>6のフローチャートに従う。すなわち、ステップS61において、ユーザ側の話題遷移への追従処理が行われる。この処理は、図25のフローチャートの処理のことである。
【0160】ステップS61の処理の結果、ステップS62において、ユーザが話題を遷移させたか否かが判断される。すなわち、図25のフローチャートにおいて、ステップS41において、現在の話題と関連していると判断された場合、ステップS62では、話題を遷移させてはいないと判断され、ステップS41において、現在の話題と関連していないと判断され、それ以降の処理がされた場合、ステップS62では、話題を遷移させたとして判断される。
【0161】ステップS62において、話題は遷移されていないと判断された場合、ステップS63に進み、ロボット1側の自発的な話題遷移が行われる。この処理は、図20または図23のフローチャートの処理のことである。
【0162】このように、ユーザの話題遷移をロボット1の話題遷移よりも優先することは、ユーザ側に会話の主導権を与えていることになる。ステップS61とステップS63の処理を入れ替えた場合、ロボット1側に会話の主導権を与えていることになる。このようなことを利用し、例えば、ユーザの接し方により、ロボット1がわがままに育ってしまった場合、ロボット1が会話の主導権を握るように設定され、ロボット1にしつけが行き届いている場合、ユーザが会話の主導権を握るように設定されるようにしても良い。
【0163】上述した説明においては、属性として情報に含まれるキーワードを用いる場合を説明したが、属性として、図28に示すように、分類、場所、時間などを用いるようにしても良い。このような属性を用いた場合、図28に示した例では、1つの情報に、1つ又は2つの値しか持たない時が多い。このような場合においても、キーワードの場合と同じように処理することが可能である。例えば、属性として分類の場合、基本的に1つの値しか持たないが、キーワードのように複数の値を持つ場合の特殊な例として扱うことが可能なため、上述したキーワードの場合と同様に扱うこと(テーブルを作成すること)が可能である。
【0164】属性は、例えば、キーワードと分類というように複数併用するようにしても良い。複数の属性を併用する場合、それぞれの属性において、関連度の計算をし、重み付け線形和をとって最終的な判断結果として用いるようにする。
【0165】自然な会話を行うために、また、自然な話題遷移を行うために、話題メモリ76には、ユーザの趣向(プロファイル)にあった話題(情報)が記憶されていることは上述した。また、そのプロファイルは、ロボット1とユーザとの会話のなかで取得する、または、ロボット1がコンピュータと接続され、そのコンピュータを用いてユーザがロボット1に入力するなどされるということも上述した。ここでは、ユーザとの会話により、ロボット1が、そのユーザのプロファイルを作成する場合を、具体例を挙げて説明する。
【0166】図29に示すように、時刻t1において、ロボット1が、”昨日、何かおもしろいことがあった?”とユーザに対して質問する。この質問に対して、ユーザが時刻t2において、”タイトルAという映画を見たよ”と返答する。この返答から、ユーザのプロファイルに「タイトルA」という情報が追加される。さらに、時刻t3において、ロボット1が”おもしろかった?”と質問すると、ユーザは、時刻t4において、”おもしろかったよ。特に、B役で出ていた俳優Cさんが良い演技をしていたよ”と返答する。この返答から、「俳優C」という情報がプロファイルに追加される。
【0167】このようにして、ロボット1は、会話の中からユーザの趣向を取得していく。なお、趣向を取得するという目的から、図29に示した会話例において、ユーザが時刻t4において、”おもしろくなかった”と返答した場合、「タイトルA」をプロファイルに追加しないようにしても良い。
【0168】数日後、このようなプロファイルに従い、サーバ101からロボット1に、例えば、”俳優C主演の最新作「タイトルB」、明日公開、新宿では○○館で上映”という情報がダウンロードされたとする。ロボット1は、その情報から、ユーザに対して、時刻t1’において、”俳優Cさんが主演している新しい映画が公開されるよ”と話かける。ユーザは、数日前に、俳優Cさんの演技をほめていることから、その話題に興味を持ち、時刻t2’において、”いつから?”と質問する。ロボット1は、既にいつ公開されるのかの情報を取得している。また、既にユーザの最寄り駅の情報(プロファイル)から、最寄りの映画館の情報も取得することが可能であり、この例では、既に取得している。
【0169】ロボット1は、時刻t3’において、ユーザの質問に対し、取得している情報を基に、”明日からです。新宿だと、○○館で上映しますよ”と返答する。ユーザは、その情報を得て、時刻t4’において、”見たいなー”と発話する。
【0170】このようにして、ユーザのプロファイルに基づく情報を、会話という方法で伝えることにより、自然な宣伝を行うことが可能となる。すなわち、上述した会話例では、”タイトルB”という映画の宣伝を行えたことになる。
【0171】なお、サーバ101に記憶されたプロファイル、または、ユーザが自発的に提供したプロファイルを用いて、広告代理店などは、ユーザに対して自社の製品宣伝などのダイレクトメールを送付できるようにしても良い。
【0172】上述した実施の形態のにおいては、ユーザと音声により会話を行う場合を説明したが、文字により会話を行う場合にも、本発明は適用できる。
【0173】上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0174】この記録媒体は、図30に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク211(フロッピディスクを含む)、光ディスク212(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク213(MD(Mini-Disk)を含む)、若しくは半導体メモリ214などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM202や記憶部208が含まれるハードディスクなどで構成される。
【0175】なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0176】また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0177】
【発明の効果】以上の如く請求項1に記載の会話処理装置、請求項6に記載の会話処理方法、および請求項7に記載の記録媒体によれば、ユーザと会話する話題に関する情報を記憶し、ユーザのプライベートな情報を、ユーザとの会話のなかから取得し、ユーザの発話を認識し、記憶されている情報、または、認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成するようにしたので、ユーザに自然で、楽しい会話を提供することが可能となる。
【図面の簡単な説明】
【図1】本発明を適用したロボットの一実施の形態の外観構成例を示す斜視図である。
【図2】図1のロボットの内部構成例を示すブロック図である。
【図3】図2のコントローラ10の機能的構成例を示すブロック図である。
【図4】音声認識部31Aの内部構成を示すブロック図である。
【図5】会話処理部38の内部構成を示すブロック図である。
【図6】音声合成部36の内部構成を示すブロック図である。
【図7】情報nをダウンロードする際のシステム構成を示すブロック図である。
【図8】図7のシステムの詳細な構成を示す図である。
【図9】図7のシステムの詳細な他の構成を示す図である。
【図10】話題遷移のタイミングについて説明する図である。
【図11】話題遷移のタイミングについて説明する図である。
【図12】話題遷移のタイミングについて説明する図である。
【図13】話題遷移のタイミングについて説明する図である。
【図14】話題遷移のタイミングを説明するフローチャートである。
【図15】話題遷移のタイミングを決定する平均値と確率値との関係を示す図である。
【図16】発話パターンを説明する図である。
【図17】話題遷移のタイミングを決定する会話が途絶えた時間と確率値との関係を示す図である。
【図18】話題メモリ76に記憶された情報について説明する図である。
【図19】属性がキーワードである場合について説明する図である。
【図20】話題遷移について説明するフローチャートである。
【図21】テーブルについて説明する図である。
【図22】図20のフローチャートのステップS15の処理の詳細を示すフローチャートである。
【図23】話題遷移について説明する他のフローチャートである。
【図24】ロボット1とユーザの間で交わされる会話の一例を説明する図である。
【図25】ユーザ側が話題遷移した場合のロボット1の動作について説明するフローチャートである。
【図26】関連度テーブルの更新について説明するフローチャートである。
【図27】会話処理部38の動作について説明するフローチャートである。
【図28】属性について説明する図である。
【図29】ロボット1とユーザの間で交わされる会話の一例を説明する図である。
【図30】媒体を説明する図である。
【符号の説明】
10 コントローラ, 10A CPU, 10B メモリ, 15 マイク,16 CCD, 17 タッチセンサ, 18 スピーカ, 19 通信部,31 センサ入力処理部, 31A 音声認識部, 31B 画像認識部, 31C 圧力処理部, 32 感情/本能モデル部, 33 行動決定機構部,34 姿勢遷移機構部, 35 制御機構部, 36 音声合成部, 37 音響処理部, 38 会話処理部, 74 話題管理部, 75 会話履歴メモリ, 76 話題メモリ, 77 会話中話題メモリ, 101 サーバ, 103 通信装置, 110 話題データベース, 111 プロファイルメモリ,112 フィルタ、 141 ロボット用フレーム, 142 ユーザ用フレーム
【特許請求の範囲】
【請求項1】 ユーザと会話を行う会話処理装置において、前記ユーザと会話する話題に関する情報を記憶する記憶手段と、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得手段と、前記ユーザの発話を認識する認識手段と、前記記憶手段により記憶されている前記情報、または、前記認識手段による認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成手段とを含むことを特徴とする会話処理装置。
【請求項2】 他の装置と通信する通信手段をさらに含み、前記記憶手段は、前記他の装置が、前記取得手段により取得された前記ユーザのプライベートな情報を基に選択した前記話題に関する情報を記憶することを特徴とする請求項1に記載の会話処理装置。
【請求項3】 前記記憶手段は、他の装置から送信された前記話題に関する情報の中から、前記取得手段により取得された前記ユーザのプライベートな情報を基に、所定の情報を選択し、記憶することを特徴とする請求項1に記載の会話処理装置。
【請求項4】 前記会話は、音声または文字により行われることを特徴とする請求項1に記載の会話処理装置。
【請求項5】 ロボットに内蔵されることを特徴とする請求項1に記載の会話処理装置。
【請求項6】 ユーザと会話を行う会話処理装置の会話処理方法において、前記ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得ステップと、前記ユーザの発話を認識する認識ステップと、前記記憶制御ステップの処理で記憶された前記情報、または、前記認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする会話処理方法。
【請求項7】 ユーザと会話を行う会話処理用のプログラムであって、前記ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得ステップと、前記ユーザの発話を認識する認識ステップと、前記記憶制御ステップの処理で記憶された前記情報、または、前記認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項1】 ユーザと会話を行う会話処理装置において、前記ユーザと会話する話題に関する情報を記憶する記憶手段と、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得手段と、前記ユーザの発話を認識する認識手段と、前記記憶手段により記憶されている前記情報、または、前記認識手段による認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成手段とを含むことを特徴とする会話処理装置。
【請求項2】 他の装置と通信する通信手段をさらに含み、前記記憶手段は、前記他の装置が、前記取得手段により取得された前記ユーザのプライベートな情報を基に選択した前記話題に関する情報を記憶することを特徴とする請求項1に記載の会話処理装置。
【請求項3】 前記記憶手段は、他の装置から送信された前記話題に関する情報の中から、前記取得手段により取得された前記ユーザのプライベートな情報を基に、所定の情報を選択し、記憶することを特徴とする請求項1に記載の会話処理装置。
【請求項4】 前記会話は、音声または文字により行われることを特徴とする請求項1に記載の会話処理装置。
【請求項5】 ロボットに内蔵されることを特徴とする請求項1に記載の会話処理装置。
【請求項6】 ユーザと会話を行う会話処理装置の会話処理方法において、前記ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得ステップと、前記ユーザの発話を認識する認識ステップと、前記記憶制御ステップの処理で記憶された前記情報、または、前記認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とする会話処理方法。
【請求項7】 ユーザと会話を行う会話処理用のプログラムであって、前記ユーザと会話する話題に関する情報の記憶を制御する記憶制御ステップと、前記ユーザのプライベートな情報を、前記ユーザとの会話のなかから取得する取得ステップと、前記ユーザの発話を認識する認識ステップと、前記記憶制御ステップの処理で記憶された前記情報、または、前記認識ステップの処理で認識結果のうち、少なくとも一方を用いて、ユーザと会話するための応答文を生成する生成ステップとを含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【図1】
【図3】
【図2】
【図4】
【図5】
【図6】
【図7】
【図11】
【図13】
【図8】
【図9】
【図14】
【図15】
【図26】
【図10】
【図12】
【図16】
【図27】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図28】
【図29】
【図30】
【図3】
【図2】
【図4】
【図5】
【図6】
【図7】
【図11】
【図13】
【図8】
【図9】
【図14】
【図15】
【図26】
【図10】
【図12】
【図16】
【図27】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図28】
【図29】
【図30】
【公開番号】特開2001−188787(P2001−188787A)
【公開日】平成13年7月10日(2001.7.10)
【国際特許分類】
【出願番号】特願平11−375770
【出願日】平成11年12月28日(1999.12.28)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成13年7月10日(2001.7.10)
【国際特許分類】
【出願日】平成11年12月28日(1999.12.28)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]