(58)【調査した分野】(Int.Cl.,DB名)
前記更新部は、前記オントロジーにおいて、前記感情判定部による判定結果に対応する発話ノードのPN値と共に、当該発話ノードとリンクしているノードのPN値も更新する、請求項1から請求項4のいずれか記載の対話装置。
前記発話生成部による発話の生成で用いられた関連ノードと、当該関連ノードに対応する発話ノードとの対応関係に応じて、当該発話の生成に関する理由である理由情報を生成する理由情報生成部と、
前記理由情報を出力する理由情報出力部と、をさらに備えた、請求項1から請求項5のいずれか記載の対話装置。
発話テキストの受け付けと、発話の出力とが繰り返された後に、前記オントロジーにおけるPN値のグラフであるPN値グラフを用いて、発話者の特徴を取得する特徴取得部と、
前記特徴取得部によって取得された、発話者の特徴を出力する特徴出力部と、をさらに備えた、請求項1から請求項7のいずれか記載の対話装置。
【発明を実施するための形態】
【0018】
以下、本発明による対話装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による対話装置は、発話者の発話テキストに含まれる名詞について感情判定を行った結果に応じて、オントロジーの各ノードに対応付けられているPN値を更新し、そのPN値を用いて、発話を生成するものである。
【0019】
図1は、本実施の形態による対話装置1の構成を示すブロック図である。本実施の形態による対話装置1は、音声認識部11と、受付部12と、抽出部13と、感情判定部14と、記憶部15と、属性取得部16と、発話ノード特定部17と、更新部18と、関連ノード特定部19と、発話生成部20と、発話出力部21と、理由情報生成部22と、理由情報出力部23と、特徴取得部24と、特徴出力部25とを備える。
【0020】
音声認識部11は、発話者の発話した音声の信号を受け付け、その音声についての音声認識の結果である発話テキストを取得する。なお、発話テキストは、発話者の発話した音声に対応したテキストである。また、音声認識については、すでに公知であり、その詳細な説明を省略する。音声認識部11は、音声認識の処理を、ローカルで行ってもよく、または、音声の情報を、通信回線を介してサーバ等に送信し、その音声に対する音声認識の結果をそのサーバ等から受信することによって、音声認識結果を取得してもよい。すなわち、音声認識部11は、例えば、音声認識の処理を実行するものであってもよく、その処理の実行を他のサーバ等に依頼するものであってもよい。
【0021】
受付部12は、発話者の発話テキストを受け付ける。本実施の形態では、受付部12が、音声認識の結果である発話テキストを音声認識部11から受け付ける場合について主に説明するが、そうでなくてもよい。受付部12は、発話テキストを、他の装置等(例えば、音声認識を行う装置等)から受け付けてもよい。また、発話テキストは、音声認識の結果でなくてもよい。発話テキストは、例えば、キーボード等を介して入力されたものであってもよい。したがって、本実施の形態での対話は、通常、音声での対話であるが、例えば、チャットなどのようなテキスト情報の入出力での対話であってもよい。また、本実施の形態では、受付部12が、一人の発話者からの発話テキストを受け付ける場合について主に説明するが、後述するように、受付部12は、複数の発話者の発話テキストを受け付けてもよい。なお、受付部12が、音声認識部11以外から発話テキストを受けつける場合には、対話装置1は、音声認識部11を備えていなくてもよい。
【0022】
受付部12は、例えば、音声認識部11から出力された発話テキストを受け付けてもよく、有線または無線の通信回線を介して送信された発話テキストを受信してもよく、入力デバイス(例えば、キーボードやマウス、タッチパネルなど)から入力された発話テキストを受け付けてもよい。なお、受付部12は、受け付けを行うためのデバイス(例えば、モデムやネットワークカードなど)を含んでもよく、または含まなくてもよい。また、受付部12は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【0023】
抽出部13は、発話テキストから名詞を抽出する。抽出部13は、発話テキストに対して形態素解析を行い、その解析結果を用いて名詞を抽出してもよい。より具体的には、発話テキストについて形態素解析を行うことによって、発話テキストを形態素ごとに分割することができ、また、各形態素の品詞を特定することができる。そして、品詞が名詞である形態素を抽出することによって、発話テキストから名詞を抽出することができる。抽出部13は、名詞を抽出する際に、固有名詞と普通名詞とをそれぞれ抽出してもよい。なお、形態素解析は、例えば、「MeCab」や「ChaSen(茶筌)」、「JUMAN」などの公知の形態素解析システムを用いて実現できるため、詳細な説明を省略する。
【0024】
感情判定部14は、抽出部13によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する。なお、感情判定部14は、抽出された名詞に関して、発話者の感情が、ポジティブか、ネガティブか、ニュートラル(中立)かを判定してもよい。本実施の形態では、感情判定部14がこのような3段階の判定を行う場合について主に説明する。なお、ニュートラルとは、感情判定結果が、ポジティブでもネガティブでもないことである。また、感情判定結果がポジティブであるとは、発話者がよい印象を持っていることを示しており、ネガティブであるとは、発話者が悪い印象を持っていることを示している。
【0025】
具体的な感情判定処理は、例えば、次のように行われてもよい。感情判定部14は、発話テキストにおいて係り受け解析を行い、抽出された名詞に関する係り受けを取得する。その係り受けの取得とは、例えば、抽出された名詞に係る形態素や、抽出された名詞の係る形態素の特定であってもよい。その後、感情判定部14は、単語がポジティブかネガティブかを分類した情報を用いて、抽出された名詞に係る形態素や、抽出された名詞の係る形態素がポジティブであるのか、ネガティブであるのかを判定する。そして、感情判定部14は、その形態素に関する判定結果に応じて、抽出された名詞に関する発話者の感情の判定を行ってもよい。すなわち、感情判定部14は、その形態素に関する判定結果がポジティブであれば、抽出された名詞に関する発話者の感情もポジティブであると判定し、その形態素に関する判定結果がネガティブであれば、抽出された名詞に関する発話者の感情もネガティブであると判定してもよい。なお、単語がポジティブかネガティブかを分類した情報としては、例えば、各単語に関して、ポジティブであるほど+1に近い値を割り当て、ネガティブであるほど−1に近い値を割り当てた単語感情極性対応表などが知られている(例えば、URL:http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.htmlを参照されたい)。したがって、その単語感情極性対応表を用いて、形態素に対応する−1から1までの範囲の値を取得でき、その値を用いて、ポジティブ、ネガティブ、ニュートラルを判定することができる。例えば、その値が、−εからεまでの範囲であればニュートラルと判定され、+εよりも大きければポジティブと判定され、−εより小さければネガティブと判定されてもよい。なお、εは、1より小さいあらかじめ決められた正の実数である。また、抽出された名詞と係り受け関係にある形態素が2以上存在する場合には、その2以上の値の合計に基づいて、感情判定が行われてもよい。例えば、その値の合計が1に近ければ、ポジティブであると判定されてもよい。
【0026】
また、感情判定部14は、発話テキストの全体、または発話テキストに含まれる一文について感情解析を行い、感情解析の結果が、解析対象に含まれる各名詞に関する、発話者の感情であるとしてもよい。例えば、発話テキストの全体がポジティブと判定された場合には、その発話テキストに含まれる各単語に関する発話者の感情もポジティブと判定されてもよい。なお、発話テキストの全体、または発話テキストに含まれる一文に関してポジティブやネガティブなどの感情解析の結果を取得する方法はすでに公知であり、その詳細な説明を省略する。例えば、Google(登録商標)の提供しているCloud Natural Language(https://cloud.google.com/natural-language/?hl=ja)などを用いて取得することができる。
【0027】
記憶部15では、後述するオントロジーや、発話パターンなどが記憶されている。それらの詳細については、後述する。なお、記憶部15に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部15で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部15で記憶されるようになってもよく、または、入力デバイスを介して入力された情報が記憶部15で記憶されるようになってもよい。また、例えば、対話装置1の各構成要素によって、記憶部15に情報が追加されてもよく、記憶部15で記憶されている情報が更新されてもよい。また、記憶部15での記憶は、RAM等における一時的な記憶でもよく、または、長期的な記憶でもよい。また、記憶部15は、所定の記録媒体(例えば、半導体メモリや磁気ディスクなど)によって実現されうる。
【0028】
属性取得部16は、発話テキストを用いて、発話テキストに対応する発話者の属性を取得する。発話者の属性は、例えば、性別、年代、居住地域、収入、職業、学歴などのデモグラフィック属性であってもよく、または、その他の属性であってもよい。本実施の形態では、その属性が性別である場合について主に説明する。属性取得部16は、例えば、単語と、発話者の属性とを対応付けた情報を用いて、発話テキストに含まれる単語に対応する属性を取得することによって、発話者の属性を取得してもよい。例えば、単語ごとに、−1から1までの性別スコアが対応付けられており、その性別スコアは、−1に近いほど女性がよく使用する単語であり、+1に近いほど男性がよく使用する単語であってもよい。そして、属性取得部16は、1以上の発話テキストに含まれる単語について、性別スコアの合計を取得し、その合計が正の値であれば、発話者の性別が男性であると判断し、負の値であれば、発話者の性別が女性であると判断してもよい。同様にして、例えば、年代が高いのか低いのか、居住地域が西日本であるのか東日本であるのか、収入が多いのか少ないのかなどを判断することもできる。
【0029】
発話ノード特定部17は、記憶部15で記憶されているオントロジーにおいて、抽出部13によって抽出された名詞に対応するノードである発話ノードを特定する。なお、オントロジーは、クラス(基本概念)またはインスタンス(実体)であるノードの階層構造を有している。その階層構造によって、例えば、クラスやインスタンスの上位下位の関係や、包含関係が示されると考えてもよい。また、オントロジーにおいて、ノードごとに、感情がポジティブ、ネガティブである程度を示すPN値が対応付けられている。オントロジーの階層構造は、通常、ツリー構造(木構造)であるが、それ以外であってもよい。また、オントロジーの階層構造がツリー構造である場合には、インスタンスは、子ノードを持たないリーフノードとなる。記憶部15で記憶されているのは、厳密には、オントロジーを示す情報であるが、ここでは、説明の便宜上、それをオントロジーと呼ぶことにする。オントロジーとしては、例えば、DBpedia、Freebase等の既存のオントロジーを用いてもよく、または、対話装置1用に生成されたオントロジーを用いてもよい。また、本実施の形態では、オントロジーが記憶部15で記憶されている場合について主に説明するが、オントロジーは、対話装置1以外のサーバ等の装置で保持されていてもよい。その場合には、発話ノードの特定や、関連ノードの特定、PN値の更新などは、その外部で保持されているオントロジーにアクセスすることによって行われてもよい。
【0030】
PN値は、結果として、PN値に対応しているノードに関する感情がポジティブやネガティブである程度を知ることができるのであれば、どのような値であってもよい。PN値は、例えば、ポジティブの程度を示す値であってもよく、ネガティブの程度を示す値であってもよく、その両方であってもよい。本実施の形態では、PN値が、−100から+100までの整数で示され、+100に近いほどポジティブの程度が大きく、−100に近いほどネガティブの程度が大きいものである場合について主に説明する。なお、PN値の更新が行われていない状況でのPN値、すなわちオントロジーにおけるPN値の初期値は、ニュートラルの値(上記の例では「0」)に設定されることが好適である。
【0031】
抽出された名詞に対応するノードとは、その名詞に相当するノードのことであり、例えば、抽出された名詞と一致するノードであってもよく、抽出された名詞と実質的に一致するノードであってもよく、または、抽出された名詞と類似するノードであってもよい。例えば、オントロジーにノード「野球」が存在する場合に、抽出された名詞が「野球」であれば、その名詞に一致する発話ノード「野球」が特定され、抽出された名詞が「ベースボール」であれば、その名詞に実質的に一致する発話ノード「野球」が特定され、抽出された名詞が「ソフトボール」であり、オントロジーにノード「ソフトボール」が含まれない場合には、その名詞「ソフトボール」と類似する発話ノード「野球」が特定されてもよい。なお、抽出された名詞と一致するノードや、実質的に一致するノード、類似するノードが存在しない場合には、発話ノード特定部17は、抽出された名詞に対応するノードが存在しないと判断してもよい。また、複数の名詞が抽出された場合には、発話ノード特定部17は、各名詞について、発話ノードの特定を行ってもよい。
【0032】
また、オントロジーにおいて、ノードごとに、属性が対応付けられていてもよい。ある属性を有する発話者が、ポジティブな印象を有すると考えられるノードに、その属性が対応付けられてもよい。例えば、男性の発話者は、ノード「スポーツ」にポジティブな印象を有すると考えられるため、ノード「スポーツ」に、属性「男性」が対応付けられてもよい。また、ある属性を有する発話者が、ネガティブな印象を有すると考えられるノードに、その属性が対応付けられてもよい。例えば、女性の発話者は、ノード「ゴキブリ」「クモ」にネガティブな印象を有すると考えられるため、ノード「ゴキブリ」「クモ」に、属性「女性」が対応付けられてもよい。なお、あるノードに対応付けられている属性を有する発話者が、そのノードに対してポジティブな印象を有するのか、ネガティブな印象を有するのかがあらかじめ決められていてもよく、または、属性ごとに設定されてもよい。また、ノードには、2以上の属性が対応付けられてもよい。また、属性の対応付けられていないノードが存在してもよい。
【0033】
更新部18は、感情判定部14による判定結果に応じて、その判定結果に対応する発話ノードのPN値を更新する。判定結果に対応する発話ノードとは、判定結果の判定対象となる名詞に対応する発話ノードのことである。すなわち、抽出された名詞に関する感情解析の判定結果がポジティブ(または、ネガティブ)であった場合に、更新部18は、その抽出された名詞に対応する発話ノードのPN値を、よりポジティブ側(または、よりネガティブ側)となるように更新してもよい。上記のようにPN値が−100から+100までの整数である場合には、判定結果がポジティブであるときに、PN値に所定の正の値を加算し、判定結果がネガティブであるときに、PN値から所定の正の値を減算してもよい。その所定の正の値は、判定結果に関わらずに一定であってもよく、または、判定結果に応じて変化してもよい。後者の場合には、その所定の値は、よりポジティブ度やネガティブ度が高いほど、より大きい値となってもよい。また、更新後のPN値が、PN値の上限値より大きくなる場合(または下限値より小さくなる場合)には、更新部18は、PN値が上限値(または下限値)となるように更新してもよい。
【0034】
更新部18は、オントロジーにおいて、感情判定部14による判定結果に対応する発話ノードのPN値と共に、その発話ノードとリンクしているノードのPN値も更新してもよい。例えば、発話者が発話ノードについてポジティブな印象を持っている場合には、それとリンクされているノードについてもポジティブな印象を持っている可能性があるからである。発話ノードとリンクしているノードとは、発話ノードとエッジで繋がっているノードのことであってもよい。発話ノードとリンクしているノードは、例えば、発話ノードの近傍のノードのみであってもよく、または、そうでなくてもよい。前者の場合には、例えば、発話ノードからN個以内のエッジで繋がるノードについてのみ、PN値が更新されてもよい。Nは、1以上の整数であり、通常、あまり大きくない値(例えば、2や3など)である。また、発話ノードから離れるほど、PN値の更新の程度が小さくなってもよい。例えば、発話ノードでは、PN値が+10だけ加算された場合には、発話ノードに1個のエッジで繋がるノードについては、PN値が+5だけ加算され、発話ノードに2個のエッジで繋がるノードについては、PN値が+2だけ加算されてもよい。このように、発話ノードから離れるほど、所定の割引率で割り引かれたPN値の更新が行われるようにしてもよい。上記の例の場合には、発話ノードからのエッジ数が1個増えるごとに、PN値の更新の程度が50%ずつ割り引かれている。なお、PN値を整数に限定しているため、上記の例では、小数点以下は切り捨てている。本実施の形態では、PN値の更新が、加減算によって行われる場合について主に説明するが、PN値の更新は、PN値に所定の値を乗算することによって行われてもよい。例えば、PN値が0以上の実数や整数である場合には、PN値に1より大きい値や、1より小さい値を乗算することによって、PN値を更新してもよい。PN値が整数である場合には、その乗算結果において、小数点以下を切り捨てたり、四捨五入したりしてもよい。
【0035】
また、発話ノード以外についてもPN値の更新を行う場合に、オントロジーの階層構造において、発話ノードから上位の方(すなわち、ルートの方)に進むのか、または、発話ノードから下位の方(すなわち、リーフの方)に進むのかに応じて、PN値の更新の方法が変更されてもよい。例えば、発話ノードから上位の方向に進む場合には、上記のように所定の割引率で割り引かれたPN値の更新が行われるようにすると共に、発話ノードから下位の方向に進む場合には、割引なしで、発話ノードと同じPN値の更新が行われるようにしてもよい。例えば、発話ノードが「球技」であり、その球技に対応する判定結果がポジティブである場合には、球技の下位方向のノードである「サッカー」や「野球」についても、発話者はよい印象を持っていると考えられるが、球技の上位方向のノードである「スポーツ」や、そのスポーツの下位のノードである「陸上競技」などについては、発話者が必ずしもよい印象を持っているとは限らないからである。本実施の形態では、このように、発話ノード以外についてもPN値の更新が行われる場合について主に説明する。なお、発話ノードから上位方向に進む場合には、発話ノードの直近の上位ノードから先は、上位側に進んでもよく、下位側に進んでもよいものとする。
【0036】
更新部18は、属性取得部16によって取得された属性の対応付けられているノードのPN値を変更する。そのPN値の変更は、例えば、PN値をポジティブ側の値に変更することであってもよく、PN値をネガティブ側の値に変更することであってもよい。オントロジーにおいて、ある属性を有している発話者については、PN値がポジティブ側の値となると考えられるノードに、その属性が対応付けられている場合には、例えば、属性取得部16によって、発話者の属性「女性」が取得されたときに、更新部18は、オントロジーにおいて、「女性」に対応するノード(例えば、「花」や「チューリップ」に対応するノードなど)のPN値をポジティブ側の値に更新してもよい。反対に、オントロジーにおいて、ある属性を有している発話者については、PN値がネガティブ側の値となると考えられるノードに、その属性が対応付けられている場合には、例えば、属性取得部16によって、発話者の属性「女性」が取得されたときに、更新部18は、オントロジーにおいて、「女性」に対応するノード(例えば、「ハエ」や「ゴキブリ」に対応するノードなど)のPN値をネガティブ側の値に更新してもよい。また、オントロジーにおいて、発話者がある属性を有している場合に、PN値をポジティブ側の値に変更するのか、または、ネガティブ側の値に変更するのかが設定されていてもよい。例えば、「トカゲ」に対応するノードに、属性「男性」を有する発話者に対しては、PN値をポジティブ側の値に変更する旨と、属性「女性」を有する発話者に対しては、PN値をネガティブ側の値に変更する旨とが対応付けられていてもよい。PN値の更新は、例えば、所定の値の加減算によって行われてもよく、所定の値の乗算によって行われてもよい。具体的には、「女性」に対応するノードのPN値をポジティブ側の値に変更する場合には、PN値が+5だけ加算されてもよく、「女性」に対応するノードのPN値をネガティブ側の値に変更する場合には、PN値が−5だけ減算されてもよい。なお、取得された属性に応じてPN値を変更する場合には、ニュートラルに対応するPN値のみを変更してもよい。そのようにすることで、まだ対話をしていないノードの領域についても、属性を用いてあらかじめPN値をニュートラルでない値にすることができる。本実施の形態では、オントロジーにおいて、ある属性を有している発話者については、PN値がポジティブ側の値となると考えられるノードに、その属性が対応付けられており、属性取得部16によって取得された発話者の属性に応じて、その属性の対応付けられているノードのPN値がポジティブ側の値に更新される場合について主に説明する。
【0037】
関連ノード特定部19は、オントロジーにおいて、PN値を用いて、発話ノード特定部17によって特定された発話ノードに関連したノードである関連ノードを特定する。このように、オントロジーにおいて、発話ノードを基点として、関連ノードが特定されることになる。その発話ノードは、関連ノードの特定を行う直前に特定された発話ノードであってもよい。関連ノードの特定の方法としては、通常、次の3つがある。なお、関連ノード特定部19は、それまでに関連ノードとして特定していない関連ノードを特定してもよい。すなわち、オントロジーにおいて、関連ノードとして特定されるのは、1度に限定されてもよく、または、そうでなくてもよい。
【0038】
(1)上位化(抽象化)による関連ノードの特定
この場合には、関連ノード特定部19は、オントロジーにおいて、発話ノードの上位ノードである関連ノードを特定してもよい。その関連ノードは、発話ノードの直近の上位ノードであってもよい。
【0039】
(2)下位化(具体化)による関連ノードの特定
この場合には、関連ノード特定部19は、オントロジーにおいて、発話ノードの下位ノードである関連ノードを特定してもよい。その関連ノードは、発話ノードの直近の下位ノードであってもよい。なお、発話ノードには、2以上の直近の下位ノードが存在することもある。そのような場合には、関連ノード特定部19は、2以上の直近の下位ノードから、ランダムに、または、PN値を用いて関連ノードを選択してもよい。
【0040】
(3)横展開による関連ノードの特定
この場合には、関連ノード特定部19は、オントロジーにおいて、発話ノードと同程度の階層にある他のノードである関連ノードを特定してもよい。同程度の階層とは、同じ階層や、1階層上、または、1階層下であってもよい。具体的には、関連ノード特定部19は、発話ノードからM階層だけ上位側のノードを特定し、その特定したノードからK階層だけ下位側のノードである関連ノードを特定してもよい。その際に、発話ノードから関連ノードまで、同じノードを2回通らないようにして、関連ノードの特定が行われてもよい。また、|M−K|≦1となるようにすることで、発話ノードと関連ノードとの階層が±1以内で同じになることになる。なお、M,Kは、それぞれ1以上の整数である。
【0041】
関連ノード特定部19は、例えば、発話ノードに対応する抽出された名詞が固有名詞である場合には、上記(1)によって関連ノードの特定を行ってもよい。また、関連ノード特定部19は、例えば、発話ノードがリーフノード(すなわち、オントロジーにおけるインスタンス)である場合に、上記(1)によって関連ノードの特定を行ってもよい。また、関連ノード特定部19は、例えば、発話ノードに対応する抽出された名詞が普通名詞である場合には、上記(2)によって関連ノードの特定を行ってもよい。また、関連ノード特定部19は、例えば、発話ノードが上位のノードである場合に、上記(2)によって関連ノードの特定を行ってもよい。
【0042】
また、関連ノードの特定において、関連ノード特定部19は、中立よりもポジティブ側のPN値に対応する発話ノードに関連する関連ノードを特定してもよい。例えば、発話テキストから複数の名詞が抽出され、各名詞に対応する発話ノードが特定された場合において、ある発話ノードのPN値は、中立(ニュートラル)よりもポジティブ側であり、別の発話ノードのPN値は、中立よりもネガティブ側であるとすると、関連ノード特定部19は、PN値が中立よりもポジティブ側である発話ノードを基点として関連ノードの特定を行ってもよい。発話者がポジティブな印象を持っている単語に関連した発話を生成する方が、より活発な会話になると考えられるからである。このようにして、PN値を用いた関連ノードの特定が行われてもよい。
【0043】
また、中立よりもネガティブ側のPN値に対応する発話ノードのみが特定された場合などのように、中立よりもネガティブ側のPN値に対応する発話ノードに関連する関連オードの特定を行う場合には、関連ノード特定部19は、上記(3)によって関連ノードの特定を行ってもよい。発話ノードにできるだけ関連しないノードに対応する発話を生成した方が適切であると考えられるからである。このようにして、PN値を用いた関連ノードの特定が行われてもよい。
【0044】
また、関連ノードの特定において、関連ノード特定部19は、中立であるPN値に対応する関連ノードを特定するようにしてもよい。このようにすることで、オントロジーにおいて、発話者の好みの分かっていない領域(すなわち、中立であるPN値に対応するノードの領域)についても、発話者の好みを知ることができ、より発話者の好みに沿った発話の生成を行うことができるようになるからである。また、関連ノード特定部19は、PN値が中立またはポジティブ側の値である関連ノードを特定するようにしてもよい。発話者がネガティブな印象を持っている単語に関連した発話が生成されない方がよいと考えられるからである。このようにして、PN値を用いた関連ノードの特定が行われてもよい。
【0045】
発話生成部20は、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、発話ノード特定部17によって特定された発話ノードと、関連ノード特定部19によって特定された関連ノードとの対応関係に応じた発話パターンを特定し、その特定した発話パターンと、特定された関連ノードとを用いて発話を生成する。本実施の形態では、その複数の発話パターンが記憶部15で記憶されている場合について主に説明するが、複数の発話パターンは、対話装置1以外のサーバ等の装置で保持されていてもよい。その場合には、発話パターンの特定は、その外部で保持されている複数の発話パターンにアクセスすることによって行われてもよい。発話ノードと関連ノードとの対応関係は、例えば、上記(1)〜(3)の対応関係であってもよい。すなわち、上記(1)〜(3)の対応関係に対応する発話パターンが、あらかじめ用意されていてもよい。なお、1個の対応関係に対して、1個の発話パターンが対応付けられていてもよく、2個以上の発話パターンが対応付けられていてもよい。発話パターンは、例えば、発話のテンプレートであり、関連ノードの文字列を挿入することによって、発話を生成することができるものであってもよい。発話パターンは、例えば、「<関連ノード>はお好きですか?」であってもよい。そして、<関連ノード>の箇所に関連ノードを挿入することによって、発話が生成されてもよい。なお、特定された発話ノードと、特定された関連ノードとの対応関係に応じた発話パターンが複数存在する場合には、発話生成部20は、ランダムに1つを選択して用いるようにしてもよい。
【0046】
発話生成部20は、発話ノードと関連ノードとの対応関係に応じた接続詞を有する発話を生成してもよい。その場合には、発話生成部20は、例えば、発話ノード特定部17によって特定された発話ノードと、関連ノード特定部19によって特定された関連ノードとの対応関係に応じた接続詞を特定し、その特定した接続詞と、上記のようにして、発話パターンと関連ノードとを用いて生成した発話とを結合することによって、最終的な発話を生成してもよい。その場合にも、上記(1)〜(3)の対応関係に対応する接続詞が記憶部15等で記憶されており、発話生成部20は、それらの情報を用いて、接続詞を特定してもよい。また、発話生成部20は、対話装置1以外のサーバ等の装置で保持されていてる接続詞にアクセスすることによって、発話ノードと関連ノードとの対応関係に応じた接続詞を取得してもよい。なお、特定された発話ノードと、特定された関連ノードとの対応関係に応じた接続詞が複数存在する場合には、発話生成部20は、ランダムに1つを選択して用いるようにしてもよい。また、その接続詞は、あらかじめ発話パターンに含められていてもよい。
【0047】
発話出力部21は、発話生成部20によって生成された発話を出力する。この発話の出力は、例えば、発話を示すテキストの出力であってもよく、その発話を音声に変換した音声信号の出力であってもよい。後者の場合には、発話のテキストに応じた音声合成が行われてもよい。本実施の形態では、発話出力部21が、生成された発話に応じた音声合成を行い、生成した音声信号をスピーカに出力する場合について主に説明する。
【0048】
ここで、この出力は、例えば、スピーカによる音声出力でもよく、所定の機器への通信回線を介した送信でもよく、表示デバイスへの表示でもよく、プリンタによる印刷でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、発話出力部21は、出力を行うデバイス(例えば、通信デバイスなど)を含んでもよく、または含まなくてもよい。また、発話出力部21は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【0049】
理由情報生成部22は、発話生成部20による発話の生成で用いられた関連ノードと、その関連ノードに対応する発話ノードとの対応関係に応じて、発話の生成に関する理由である理由情報を生成する。関連ノードに対応する発話ノードとは、その関連ノードの特定時に、出発点として用いられた発話ノードのことである。したがって、例えば、ある発話ノードに基づいて、関連ノードが特定された場合には、その発話ノードが、特定された関連ノードに対応する発話ノードとなる。この理由情報の生成は、例えば、発話の生成方法に対応したテンプレートを用意しておき、そのテンプレートを用いて行われてもよい。より具体的には、発話ノードと関連ノードとの対応関係(例えば、上位化、下位化、横展開等)に対応する理由情報パターンが用意されている場合には、理由情報生成部22は、発話ノード特定部17によって特定された発話ノードと、関連ノード特定部19によって特定された関連ノードとの対応関係に応じた理由情報パターンを特定し、その特定した理由情報パターンに、発話ノードや関連ノードの文字列を挿入することによって、理由情報を生成してもよい。理由情報の生成は、例えば、発話の生成ごとに行われてもよく、または、一連の複数の発話が生成された後に行われてもよい。後者の場合には、発話の生成ごとに、理由情報の生成に必要となる情報、例えば、発話ノードや関連ノード等を保持しておき、一連の複数の発話が生成された後に、その保持している情報を用いて、理由情報の生成が行われてもよい。
【0050】
理由情報出力部23は、理由情報生成部22によって生成された理由情報を出力する。ここで、この出力は、例えば、表示デバイス(例えば、液晶ディスプレイや有機ELディスプレイなど)への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、スピーカによる音声出力でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、理由情報出力部23は、出力を行うデバイス(例えば、表示デバイスやプリンタなど)を含んでもよく、または含まなくてもよい。また、理由情報出力部23は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【0051】
特徴取得部24は、発話テキストの受け付けと、発話の出力とが繰り返された後、すなわちオントロジーにおけるPN値の更新が繰り返された後に、オントロジーにおけるPN値のグラフであるPN値グラフを用いて、発話者の特徴を取得する。発話テキストの受け付け、発話の出力が繰り返されることによって、抽出された名詞の感情解析の結果に応じたPN値の更新が繰り返して行われることになる。また、属性に応じたPN値の更新も行われることもある。そのようにして更新されたPN値は、発話者の個性を示すものになる。したがって、そのPN値のグラフ(ノードとエッジから構成されるグラフであって、ノードにPN値が対応付けられているグラフ)を用いて、発話者の特徴(個性)を取得することができることになる。PN値グラフを用いて、発話者の特徴を取得する具体的な方法としては、例えば、(A)PN値グラフの類似関係を用いる方法、(B)グラフコンボリューションを用いる方法がある。以下、それぞれについて説明する。
【0052】
(A)PN値グラフの類似関係を用いて、発話者の特徴を取得する方法
この場合には、まず、所定の特徴を有する発話者のPN値グラフを用意する必要がある。その特徴としては、例えば、「専門家タイプ」「調整タイプ」「自己実現タイプ」などであってもよい。そして、複数の発話者について、あらかじめ自己申告により、または、カウンセラーなどによる客観評価により特徴を取得すると共に、各発話者のPN値グラフを取得しておく。なお、ある特徴に分類された発話者が複数人存在する場合には、例えば、PN値グラフの各ノードのPN値について、複数のPN値グラフを用いた代表値が取得されることによって、1つのPN値グラフにマージされてもよく、または、その複数のPN値グラフがそのまま保持されてもよい。
【0053】
その後、特徴の分かっていない発話者について、発話テキストの受け付けと、発話の出力とが繰り返されることによって、オントロジーにおける各ノードのPN値が更新され、PN値グラフが取得されたとする。すると、特徴取得部24は、取得されたPN値グラフと最も類似する、あらかじめ保持されているPN値グラフを特定する。PN値グラフが類似するかどうかは、例えば、PN値グラフにおける各ノードのPN値を成分とするベクトルに関するコサイン距離などの類似度を算出することによって判断されてもよい。例えば、取得されたPN値グラフのベクトルと類似度が最も高いベクトルに対応する、あらかじめ保持されているPN値グラフが、取得されたPN値グラフに最も類似するPN値グラフであると判断されてもよい。そして、その取得されたPN値グラフに最も類似する、あらかじめ保持されているPN値グラフに対応する特徴が、発話者の特徴として取得されてもよい。
【0054】
(B)グラフコンボリューションを用いて、発話者の特徴を取得する方法
この場合にも、まず、上記のようにして、所定の特徴を有する発話者のPN値グラフを用意する。そして、その用意したPN値グラフについて、特徴ごとにグラフコンボリューションの学習を行う。その学習における訓練用入力情報は、PN値グラフである。また、その学習における訓練用出力情報は、訓練用入力情報であるPN値グラフに対応する特徴である。その学習は、グラフコンボリューションによって行われる。グラフコンボリューションの学習の詳細については、例えば、次の文献を参照されたい。
文献:M. Schlichtkrull et al., "Modeling Relational Data with Graph Convolutional Networks", arXiv preprint arXiv:1703.06103, 2017
【0055】
次に、特徴取得部24は、その学習結果である学習器を用いて、特徴の取得を行う。具体的には、特徴の分かっていない発話者について、発話テキストの受け付けと、発話の出力とが繰り返されることによって、オントロジーにおける各ノードのPN値が更新され、PN値グラフが取得されたとすると、特徴取得部24は、そのPN値グラフを、学習器に適用する。PN値グラフを学習器に適用するとは、そのPN値グラフを学習器に入力することである。そして、その入力されたPN値グラフに対する出力を取得することによって、その入力であるPN値グラフに対応する特徴を取得することができる。
【0056】
なお、ここでは、上記(A),(B)の方法を一例として示したが、それら以外の方法によってPN値グラフに対応する発話者の特徴の取得が行われてもよいことは言うまでもない。また、発話者の特徴についても、上記の例示に限定されないことは言うまでもない。例えば、特徴は、発話者が認知症であるかどうかなどであってもよい。その場合には、PN値グラフを用いて、発話者が認知症であるかどうかについて判断することができるようになる。
【0057】
特徴出力部25は、特徴取得部24によって取得された、発話者の特徴を出力する。ここで、この出力は、例えば、表示デバイス(例えば、液晶ディスプレイや有機ELディスプレイなど)への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、スピーカによる音声出力でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、特徴出力部25は、出力を行うデバイス(例えば、表示デバイスやプリンタなど)を含んでもよく、または含まなくてもよい。また、特徴出力部25は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【0058】
次に、対話装置1の動作について
図2のフローチャートを用いて説明する。
(ステップS101)音声認識部11は、発話者の音声信号を受け付けたかどうか判断する。そして、発話者の音声信号を受け付けた場合には、ステップS102に進み、そうでない場合には、ステップS113に進む。なお、音声認識部11は、発話者の音声信号を受け付けた場合に、一区切りの音声信号を受け付け終わるまで、受け付けの処理を継続してもよい。
【0059】
(ステップS102)音声認識部11は、ステップS101で受け付けた発話者の音声信号に対する音声認識を行い、発話テキストを取得する。
【0060】
(ステップS103)音声認識部11は、発話テキストを出力し、受付部12は、その出力された発話テキストを受け付ける。
【0061】
(ステップS104)抽出部13は、受付部12によって受け付けられた発話テキストから名詞を抽出する。
【0062】
(ステップS105)感情判定部14は、抽出部13によって抽出された名詞に関して感情解析を行い、ポジティブやネガティブの判定結果を取得する。
【0063】
(ステップS106)発話ノード特定部17は、オントロジーにおいて、ステップS104で抽出された名詞に対応する発話ノードを特定する。
【0064】
(ステップS107)更新部18は、ステップS106で特定された発話ノード、及びその発話ノードにリンクされているノードのPN値を、ステップS105の判定結果を用いて更新する。
【0065】
(ステップS108)関連ノード特定部19は、オントロジーにおいて、ステップS106で特定された発話ノードを基点として、ステップS107で更新された後のPN値を用いて、関連ノードを特定する。
【0066】
(ステップS109)発話生成部20は、ステップS106で特定された発話ノードと、ステップS108で特定された関連ノードとの対応関係に応じた発話パターンを特定し、その特定した発話パターンと、その関連ノードとを用いて、発話を生成する。
【0067】
(ステップS110)発話出力部21は、ステップS109で生成された発話を出力する。発話出力部21は、例えば、発話に応じた音声合成を行い、その音声合成した音声信号をスピーカ等に出力してもよい。
【0068】
(ステップS111)理由情報生成部22は、ステップS109での発話の生成に応じた理由情報を生成する。
【0069】
(ステップS112)理由情報出力部23は、ステップS111で生成された理由情報を出力する。そして、ステップS101に戻る。
【0070】
(ステップS113)属性取得部16は、属性の取得を行うかどうか判断する。そして、属性の取得を行う場合には、ステップS114に進み、そうでない場合には、ステップS116に進む。なお、属性取得部16は、例えば、あらかじめ決められた量以上の発話テキストが受け付けられた後に、属性の取得を行うと判断してもよい。受け付けられた発話テキストの量が少ない場合には、適切な属性の取得を行うことができないからである。あらかじめ決められた量は、例えば、文字数や、データ容量等によって示されてもよい。また、ある発話者について、一度、属性の取得を行った後には、属性取得部15は、属性の取得を行うと判断しなくてもよい。
【0071】
(ステップS114)属性取得部16は、それまでに受け付けられた発話テキストを用いて属性を取得する。
【0072】
(ステップS115)更新部18は、オントロジーにおいて、ステップS114で取得された属性の対応付けられているノードのPN値を変更する。そして、ステップS101に戻る。
【0073】
(ステップS116)特徴取得部24は、オントロジーにおけるPN値グラフを用いた特徴の取得を行うかどうか判断する。そして、特徴の取得を行う場合には、ステップS117に進み、そうでない場合には、ステップS101に戻る。なお、特徴取得部24は、例えば、オントロジーにおいて、あらかじめ決められた割合を超えるノードのPN値が中立ではなくなった場合に、特徴の取得を行うと判断してもよい。また、ある発話者について、一度、特徴の取得を行った後には、特徴取得部24は、特徴の取得を行うと判断しなくてもよく、または、一度、特徴の取得を行った後であっても、定期的に特徴の取得を行うと判断してもよい。発話者の特徴が変化することも考えられるからである。
【0074】
(ステップS117)特徴取得部24は、オントロジーにおけるPN値グラフを用いて、発話者の特徴を取得する。
【0075】
(ステップS118)特徴出力部25は、ステップS117で取得された特徴を出力する。そして、ステップS101に戻る。
なお、
図2のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、
図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0076】
次に、本実施の形態による対話装置1の動作について、具体例を用いて説明する。
この具体例では、記憶部15において、
図3で示されるオントロジーが記憶されている場合について説明する。
図3は、オントロジーのデータ構造の一例を示す図である。
図3において、各レコードが、1個のノードに対応している。そして、各レコードには、そのノードを識別するノード識別子と、そのノード名(厳密には、クラス名、またはインスタンス名)と、そのノードの直近の上位ノードを識別する上位ノード識別子と、そのノードに対応するPN値と、そのノードに対応する属性とが含まれている。例えば、ノード識別子「N1024」で識別されるノードは、「花」のノードであり、その上位のノードは、ノード識別子「N1023」で識別されるノードであり、そのノード識別子「N1024」で識別されるノードのPN値は「0」であり、そのノードの属性は「女性」であることが示されている。なお、
図3のPN値は、すべて初期値であり、ニュートラルな値である「0」に設定されている。この具体例では、正であるPN値がポジティブであることを示しており、負であるPN値がネガティブであることを示しているものとする。なお、
図3で示されるオントロジーは、
図7Aで示される木構造となっている。
図7Aにおいて、各ノードの右上または左上に表示されている数字は、各ノードに対応するPN値である。
【0077】
また、この具体例では、記憶部15において、
図4で示される発話パターンが記憶されている場合について説明する。
図4は、発話ノードと関連ノードとの対応関係と、発話パターンとの対応の一例を示す図である。
図4において、例えば、対応関係「上位化」に、発話パターン「<関連ノード>が好きなのですね?」などが対応付けられている。
【0078】
また、この具体例では、記憶部15において、
図5で示される接続詞が記憶されている場合について説明する。
図5は、発話ノードと関連ノードとの対応関係と、接続詞との対応の一例を示す図である。
図5において、例えば、対応関係「上位化」に、接続詞「と言うことは」などが対応付けられている。
【0079】
また、この具体例では、記憶部15において、
図6で示される理由情報が記憶されている場合について説明する。
図6は、発話ノードと関連ノードとの対応関係と、理由情報パターンとの対応の一例を示す図である。
図6において、例えば、対応関係「上位化」に、理由情報パターン「<発話ノード>の上位の概念として<関連ノード>が存在し、<発話ノード>に関するポジティブな発話を行っているため、その<発話ノード>の上位概念である<関連ノード>に関する発話を行った。」などが対応付けられている。
【0080】
まず、
図8で示されるように、発話者が「きれいなチューリップを買ってきましたの」という発話U101を行ったとする。すると、その発話U101の音声は、マイクを介して音声認識部11で受け付けられ、音声認識が行われて、音声に応じた発話テキスト「きれいなチューリップを買ってきましたの」が取得される(ステップS101,S102)。その発話テキストは、受付部12によって受け付けられ、抽出部13及び感情判定部14に渡される(ステップS103)。発話テキストを受け取ると、抽出部13は、形態素解析を行い、発話テキストから名詞「チューリップ」を取得し、その抽出した名詞を、感情判定部14及び発話ノード特定部17に渡す(ステップS104)。名詞「チューリップ」を受け取ると、感情判定部14は、受付部12から受け取った発話テキストについて、係り受け解析を行い、名詞「チューリップ」に係る形態素「きれいな」と、名詞「チューリップ」の係る形態素「買って」を特定する。そして、感情判定部14は、特定した形態素「きれいな」「買って」がポジティブであるのか、ネガティブであるのかを判定する。ここでは、「きれいな」がポジティブと判定され、「買って」がニュートラルと判定されたとする。すると、感情判定部14は、抽出された名詞「チューリップ」の感情解析の結果がポジティブであると判定し、その結果を更新部18に渡す(ステップS105)。
【0081】
その後、発話ノード特定部17は、記憶部15で記憶されているオントロジーにおいて、抽出された名詞「チューリップ」に対応するノードを特定する。すなわち、発話ノード特定部17は、
図3で示されるオントロジーにおいて、抽出された名詞「チューリップ」を検索キーとして検索を行い、ヒットしたレコードのノード識別子「N1025」を取得することによって、「チューリップ」に対応するノードの特定を行う(ステップS106)。そして、発話ノード特定部17は、特定したレコードのノード識別子「N1025」を、更新部18と、関連ノード特定部19と、発話生成部20とに渡す。
【0082】
更新部18は、発話ノード特定部17からノード識別子「N1025」を受け取ると、あらかじめ受け取っていた判定結果「ポジティブ」に応じて、ノード識別子「N1025」に対応するPN値に「10」を加算する。なお、この具体例では、更新部18は、発話ノードから上位の方に進む場合には、50%の割引率で割り引いたPN値の更新を、発話ノードから2個目のノードまでについて行うと共に、発話ノードから下位の方向に進む場合には、割引なしで、発話ノードと同じPN値の更新を行うものとする。したがって、更新部18は、ノード識別子「N1025」で識別されるノードの上位ノードである「花」のノードのPN値に、「5」(=10/2)を加算する。さらに、更新部18は、「花」のノードに繋がっているノードのPN値に、「2」(≒5/2)をそれぞれ換算する(ステップS107)。その結果、オントロジーの各ノードに関するPN値は、
図7Bで示されるように更新される。
【0083】
その後、関連ノード特定部19は、発話ノードのPN値が0より大きいポジティブ側であり、発話ノードがリーフノードであるため、上記(1)によって関連ノードの特定を行う。すなわち、関連ノード特定部19は、発話ノード「チューリップ」の上位ノードである、ノード識別子「N1024」によって識別される関連ノード「花」を特定する(ステップS108)。そして、関連ノード特定部19は、関連ノードのノード識別子「N1024」と、上位化による関連ノードの特定を行った旨とを発話生成部20に渡す。それらの情報を受け取ると、発話生成部20は、
図4で示される、対応関係「上位化」に対応する複数の発話パターンから、発話パターン「<関連ノード>が好きなのですね?」をランダムに選択すると共に、
図5で示される、対応関係「上位化」に対応する複数の接続詞から、接続詞「と言うことは」をランダムに選択し、それらを繋げると共に、<関連ノード>に、関連ノード特定部19から受け取ったノード識別子「N1024」のノード名「花」を挿入することによって、発話「と言うことは 花が好きなのですね?」を生成して、発話出力部21に渡す(ステップS109)。また、発話生成部20は、発話ノード特定部17から受け取った発話ノードのノード識別子と、関連ノード特定部19から受け取った関連ノードのノード識別子及び対応関係とを、理由情報生成部22に渡す。
【0084】
発話を受け取ると、発話出力部21は、音声合成を行うことによって発話に応じた音声を合成し、その合成した音声信号をスピーカに出力する(ステップS110)。その結果、スピーカから、
図8の発話U102に対応する音声「と言うことは 花が好きなのですね?」が出力されることになる。
【0085】
その後、理由情報生成部22は、
図6で示される、発話ノード及び関連ノードの対応関係と理由情報パターンとを対応付ける情報を参照し、受け取った対応関係「上位化」に対応する理由情報パターンを読み出し、その理由情報パターンに、受け取ったノード識別子に対応する発話ノードと関連ノードとを挿入することによって、理由情報「チューリップの上位の概念として花が存在し、チューリップに関するポジティブな発話を行っているため、そのチューリップの上位概念である花に関する発話を行った。」を生成して、理由情報出力部23に渡す(ステップS111)。本実施の形態では、理由情報の出力は、理由情報の蓄積であるとする。すると、理由情報を受け取った理由情報出力部23は、その理由情報を図示しない記録媒体に蓄積する(ステップS112)。したがって、蓄積された理由情報を確認することによって、各発話の生成された理由を知ることができるようになる。
【0086】
対話装置1から出力された発話U102に対して、
図8で示されるように、発話者が「花は好きですわ」という発話U103を行ったとする。すると、上記と同様にして、その音声の音声認識が行われて発話テキストが取得され、名詞「花」が抽出されると共に、その名詞に対する感情判定が行われ、ポジティブである旨の判定結果が取得される(ステップS101〜S105)。そして、発話ノード「花」が特定されると共に、その判定結果に応じて、発話ノード及び発話ノードと繋がっているノードのPN値が、
図7Cで示されるように更新される(ステップS106,S107)。その後、関連ノード特定部19が横展開による関連ノードの特定を決定し、関連ノードとして、「昆虫」のノードを選択したとすると、それに応じて、発話パターン及び接続詞が選択され、発話「ところで 昆虫はいかがですか?」が生成されて、音声合成が行われ、
図8の発話U104に対応する音声が出力される(ステップS108〜S110)。また、それに応じた理由情報も生成されて出力される(ステップS111,S112)。
【0087】
その後、
図8で示されるように、発話者がハエに関するネガティブな発話U105を行ったとすると、それに応じて、オントロジーのPN値が
図7Dで示されるように更新される(ステップS101〜S107)。そして、その更新後のPN値を用いて、横展開による関連ノード「レモンの木」の特定が行われ、それに応じて、
図8の発話U106が生成され、出力されたとする(ステップS108〜S110)。また、その発話の生成に応じた理由情報の生成、及び出力も行われる(ステップS111,S112)。
【0088】
その後も、同様にして、
図8で示されるように、発話者による発話U107が行われ、また、それに応じた発話U108の生成、出力が行われ、さらに、発話者による発話U109が行われたとする。そして、発話U107に応じて、オントロジーのPN値が
図7Eで示されるように更新され、発話U109に応じて、オントロジーのPN値が
図7Fで示されるように更新される。このようにして、オントロジーのPN値は、発話者の好みを反映したものに更新されていくことになる。
【0089】
その後、発話者からの十分な量の発話が受け付けられたため、属性取得部16が、属性の取得を行うと判断したとする(ステップS113)。すると、属性取得部16は、発話者からの発話U101等を用いて、発話者の属性である性別の判定を行う。具体的には、上記のように、属性取得部16は、発話に含まれる各単語に対応する性別スコアの合計を算出することによって性別の判定を行い、発話者が女性であると判定したとする(ステップS114)。すると、更新部18は、オントロジーにおいて、属性「女性」の対応付けられている各ノードのうち、PN値が「0」であるノードについて、PN値に「5」を加算することによってPN値の更新を行う(ステップS115)。このようにして、オントロジーにおいて、まだ対話が行われていない領域についても、一般的な傾向に応じたPN値の更新を行うことができ、発話者に適した発話の生成を行うことができるようになると考えられる。
【0090】
また、発話者と対話装置1との一連の対話が終了した後に、特徴取得部24は、発話者の特徴を取得すると判断したとする(ステップS116)。この具体例では、グラフコンボリューションを用いて発話者の特徴を取得するとする。そのため、特徴取得部24は、更新後のPN値グラフを、あらかじめ保持している学習器に適用し、その学習器の出力である発話者の特徴を取得して、特徴出力部25に渡す(ステップS117)。発話者の特徴を受け取ると、特徴取得部24は、その発話者の特徴を、図示しない記録媒体に蓄積する(ステップS118)。このようにして、その記録媒体にアクセスすることによって、発話者の特徴について知ることができるようになる。
【0091】
以上のように、本実施の形態による対話装置1によれば、オントロジーを用いて発話を生成するため、発話がどのような理由によって生成されたのかを知ることができるようになる。その結果、仮に不適切な発話が生成された場合には、発話の生成に関する設定を変更することによって、不適切な発話の生成が行われないように修正することができ、機械学習モデルを用いた発話の生成よりも、メンテナンス性に優れていることになる。また、オントロジーのPN値の更新することによって、発話者の好き嫌いを知ることができるようになるため、それを用いることにより、例えば、発話者の好まない話題を避けた発話の生成を行うことができるようになり、発話者とのより長い対話を実現することができるようになる。また、そのように、より長い対話を実現できることによって、オントロジーにおいて、PN値の更新された領域が増えることになり、発話者の好みをより詳細に知ることもできるようになる。
【0092】
なお、本実施の形態では、感情判定部14による判定結果や、属性取得部によって取得された属性に応じてPN値が更新される場合について説明したが、それ以外のPN値の更新が行われてもよい。例えば、更新部18は、複数の発話者について、発話テキストの受け付けと、発話の出力とが繰り返された後に、オントロジーにおける、第1の発話者に関するPN値グラフである第1のPN値グラフと、第2の発話者に関するPN値グラフである第2のPN値グラフとが部分一致する場合に、第1のPN値グラフにおけるPN値が初期値である部分について、第2のPN値グラフにおける対応する部分の初期値以外のPN値に応じて更新してもよい。なお、この場合には、オントロジーにおいて、発話者ごとにPN値が対応付けられていることが好適である。例えば、ノード「花」について、AさんのPN値、BさんのPN値、…というように、各発話者のPN値が対応付けられていることが好適である。また、PN値が部分一致するとは、第1のPN値グラフの一部分と、第2のPN値グラフにおける、その一部分に相当する部分とのPN値が完全に一致することであってもよく、両者の類似度が、あらかじめ決められた閾値を超えることであってもよい。両者の類似度は、対比する部分に含まれる各ノードに関するPN値の差の絶対値の平均が小さいほど、大きくなる値であってもよく、上記のように、コサイン距離などを用いて算出されてもよい。
【0093】
例えば、AさんのPN値グラフが
図7Eで示されるものであり、BさんのPN値グラフのうち、ノード「動物」より下位側は、Aさんの
図7Eで示されるPN値グラフと一致しているが、ノード「植物」より下位側は、PN値が初期値の「0」であったとする。そのような場合には、更新部18は、BさんのPN値グラフにおけるノード「植物」より下位側のPN値を、AさんのPN値グラフにおけるノード「植物」より下位側に応じて更新してもよい。具体的には、更新部18は、BさんのPN値グラフにおけるノード「植物」より下位側のPN値が、AさんのPN値グラフにおけるノード「植物」より下位側と同じになるように更新を行ってもよく、または、AさんのPN値グラフにおけるノード「植物」より下位側の各ノードのPN値の影響がより小さくなるように、BさんのPN値グラフを更新してもよい。後者の場合には、例えば、BさんのPN値グラフにおけるノード「植物」より下位側のPN値が、AさんのPN値グラフにおけるノード「植物」より下位側の各ノードのPN値に1より小さい正の値を乗算した結果となるように、更新を行ってもよい。このような更新が行われることによって、例えば、Bさんに対して、花やチューリップが好きであろうという仮定の下に、それらに関する発話を行うこともできるようになる。
【0094】
また、本実施の形態による発話の生成では、ルールに基づいて発話の生成を行っており、場合によっては、不適切な発話、例えば、「ところで 杉を食べるのは好きですか?」といった発話が生成される可能性もあり得る。そのため、発話生成部20は、例えば、生成した発話について、既存の文書における検索を行い、ヒットしなかった場合には、別の発話を生成するようにしてもよい。既存の文書は、例えば、インターネットで公開されている文書や、大規模コーパスなどであってもよい。また、発話を検索するとは、発話を検索キーとして検索を行うことであってもよい。また、発話に接続詞が含まれている場合には、その接続詞を除いて検索を行ってもよい。
【0095】
また、本実施の形態では、オントロジーにおけるPN値グラフを用いて、発話者の特徴の取得を行う場合について説明したが、そうでなくてもよい。発話者の特徴の取得を行わない場合には、対話装置1は、特徴取得部24や特徴出力部25を備えていなくてもよい。
【0096】
また、本実施の形態では、取得された属性に応じてPN値が更新される場合について説明したが、そうでなくてもよい。取得された属性に応じたPN値の更新を行わない場合には、対話装置1は、属性取得部16を備えていなくてもよい。
【0097】
また、本実施の形態では、発話の生成に関する理由情報が生成され、出力される場合について説明したが、そうでなくてもよい。理由情報の生成や出力が行われない場合には、対話装置1は、理由情報生成部22や理由情報出力部23を備えていなくてもよい。
【0098】
また、上記実施の形態では、対話装置1がスタンドアロンである場合について説明したが、対話装置1は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、受付部や出力部は、通信回線を介して入力や情報を受け付けたり、情報を出力したりしてもよい。
【0099】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0100】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【0101】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【0102】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【0103】
また、上記実施の形態において、対話装置1に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【0104】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における対話装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、発話者の発話テキストを受け付ける受付部、発話テキストから名詞を抽出する抽出部、抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する感情判定部、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すPN値が対応付けられているオントロジーにおいて、抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部、感情判定部による判定結果に応じて、判定結果に対応する発話ノードのPN値を更新する更新部、オントロジーにおいて、PN値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、特定された発話ノードと特定された関連ノードとの対応関係に応じた発話パターンを特定し、特定した発話パターンと、特定された関連ノードとを用いて発話を生成する発話生成部、発話生成部によって生成された発話を出力する発話出力部として機能させるためのプログラムである。
【0105】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を受け付ける受付部、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
【0106】
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【0107】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【0108】
図9は、上記プログラムを実行して、上記実施の形態による対話装置1を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【0109】
図9において、コンピュータシステム900は、CD−ROMドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904と、マイクと、スピーカとを備える。
【0110】
図10は、コンピュータシステム900の内部構成を示す図である。
図10において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANやWAN等への接続を提供する図示しないネットワークカードを含んでいてもよい。
【0111】
コンピュータシステム900に、上記実施の形態による対話装置1の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。また、CD−ROM921に代えて他の記録媒体(例えば、DVD等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
【0112】
プログラムは、コンピュータ901に、上記実施の形態による対話装置1の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
【0113】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【解決手段】対話装置1は、発話テキストから抽出された名詞に関して、発話者の感情のポジティブ/ネガティブを判定する感情判定部14、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ/ネガティブである程度を示すPN値が対応付けられているオントロジーにおいて、抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部17、感情の判定結果に応じて、発話ノードのPN値を更新する更新部18、オントロジーにおいて、PN値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部19、発話ノードと関連ノードとの対応関係に応じた発話を、関連ノードを用いて生成する発話生成部20を備える。