(57)【要約】【課題】機械学習モデルを用いないで発話者の発話テキストに対する発話を生成する対話装置を提供する。【解決手段】対話装置１は、発話テキストから抽出された名詞に関して、発話者の感情のポジティブ／ネガティブを判定する感情判定部１４、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ／ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部１７、感情の判定結果に応じて、発話ノードのＰＮ値を更新する更新部１８、オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部１９、発話ノードと関連ノードとの対応関係に応じた発話を、関連ノードを用いて生成する発話生成部２０を備える。【選択図】図１
2020187500.tif 000002
【特許請求の範囲】
【請求項１】
発話者の発話テキストを受け付ける受付部と、
発話テキストから名詞を抽出する抽出部と、
前記抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する感情判定部と、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、前記抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部と、
前記感情判定部による判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新する更新部と、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部と、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成する発話生成部と、
前記発話生成部によって生成された発話を出力する発話出力部と、を備えた対話装置。
【請求項２】
前記関連ノード特定部は、中立よりもポジティブ側のＰＮ値に対応する発話ノードに関連する関連ノードを特定する、請求項１記載の対話装置。
【請求項３】
前記関連ノード特定部は、中立であるＰＮ値に対応する関連ノードを特定する、請求項１または請求項２記載の対話装置。
【請求項４】
前記発話生成部は、発話ノードと関連ノードとの対応関係に応じた接続詞を有する発話を生成する、請求項１から請求項３のいずれか記載の対話装置。
【請求項５】
前記更新部は、前記オントロジーにおいて、前記感情判定部による判定結果に対応する発話ノードのＰＮ値と共に、当該発話ノードとリンクしているノードのＰＮ値も更新する、請求項１から請求項４のいずれか記載の対話装置。
【請求項６】
前記発話生成部による発話の生成で用いられた関連ノードと、当該関連ノードに対応する発話ノードとの対応関係に応じて、当該発話の生成に関する理由である理由情報を生成する理由情報生成部と、
前記理由情報を出力する理由情報出力部と、をさらに備えた、請求項１から請求項５のいずれか記載の対話装置。
【請求項７】
前記オントロジーの各ノードには、属性が対応付けられており、
発話テキストを用いて、当該発話テキストに対応する発話者の属性を取得する属性取得部をさらに備え、
前記更新部は、前記属性取得部によって取得された属性の対応付けられているノードのＰＮ値を変更する、請求項１から請求項６のいずれか記載の対話装置。
【請求項８】
発話テキストの受け付けと、発話の出力とが繰り返された後に、前記オントロジーにおけるＰＮ値のグラフであるＰＮ値グラフを用いて、発話者の特徴を取得する特徴取得部と、
前記特徴取得部によって取得された、発話者の特徴を出力する特徴出力部と、をさらに備えた、請求項１から請求項７のいずれか記載の対話装置。
【請求項９】
前記受付部は、複数の発話者の発話テキストを受け付け、
前記オントロジーにおいて、発話者ごとにＰＮ値が対応付けられており、
前記更新部は、複数の発話者について、発話テキストの受け付けと、発話の出力とが繰り返された後に、前記オントロジーにおける、第１の発話者に関するＰＮ値のグラフであるＰＮ値グラフと、第２の発話者に関するＰＮ値グラフとが部分一致する場合に、前記第１の発話者のＰＮ値グラフにおけるＰＮ値が初期値である部分について、前記第２の発話者のＰＮ値グラフにおける対応する部分の初期値以外のＰＮ値に応じて更新する、請求項１から請求項８のいずれか記載の対話装置。
【請求項１０】
発話者の発話テキストを受け付けるステップと、
発話テキストから名詞を抽出するステップと、
抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定するステップと、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出された名詞に対応するノードである発話ノードを特定するステップと、
前記判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新するステップと、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定するステップと、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成するステップと、
前記生成された発話を出力するステップと、を備えた発話生成方法。
【請求項１１】
コンピュータを、
発話者の発話テキストを受け付ける受付部、
発話テキストから名詞を抽出する抽出部、
前記抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する感情判定部、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、前記抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部、
前記感情判定部による判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新する更新部、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成する発話生成部、
前記発話生成部によって生成された発話を出力する発話出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、発話者の発話テキストに対する発話を生成する対話装置等に関する。
【背景技術】
【０００２】
従来、発話者の発話文に応答するための文を生成する対話装置が知られている。その対話装置として、例えば、機械学習モデルを用いて応答文を作成することも行われている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−０４０５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、対話のための発話が機械学習モデルを用いて生成された場合には、どのような仕組みによって応答が生成されたのかを詳細に知ることができないため、生成された発話が不適切であるときには、モデル自体を変更したり、より多くの訓練データを用いた学習を行ったりすることによって、適切な発話が生成されるようにする必要があり、メンテナンス性がよくないという問題があった。
【０００５】
本発明は、上記課題を解決するためになされたものであり、機械学習モデルを用いないで対話のための発話を生成することができる対話装置等を適用することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明による対話装置は、発話者の発話テキストを受け付ける受付部と、発話テキストから名詞を抽出する抽出部と、抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する感情判定部と、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部と、感情判定部による判定結果に応じて、判定結果に対応する発話ノードのＰＮ値を更新する更新部と、オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部と、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、特定された発話ノードと特定された関連ノードとの対応関係に応じた発話パターンを特定し、特定した発話パターンと、特定された関連ノードとを用いて発話を生成する発話生成部と、発話生成部によって生成された発話を出力する発話出力部と、を備えたものである。
このような構成により、機械学習モデルを用いることなく発話を生成することができるようになる。その結果、例えば、発話がどのような理由によって生成されたのかを知ることができ、仮に不適切な発話が生成された場合には、発話生成の設定を容易に変更することができ、メンテナンス性が向上することになる。また、オントロジーの各ノードのＰＮ値を更新することによって、発話者の好みを知ることができ、そのＰＮ値を用いることによって、より適切な発話を行うことができるようになる。
【０００７】
また、本発明による対話装置では、関連ノード特定部は、中立よりもポジティブ側のＰＮ値に対応する発話ノードに関連する関連ノードを特定してもよい。
このような構成により、発話者が好んでいる名詞を発話ノードとして発話を生成することができるため、発話者の好みにあった応答を生成することができるようになる。
【０００８】
また、本発明による対話装置では、関連ノード特定部は、中立であるＰＮ値に対応する関連ノードを特定してもよい。
このような構成により、ＰＮ値が更新されていないノードに関する発話が生成されることになり、その結果、そのようなノードについても、ＰＮ値が更新されるようになる。このようにして、オントロジーにおけるより広い範囲について、発話者の嗜好を取得することができるようになる。
【０００９】
また、本発明による対話装置では、発話生成部は、発話ノードと関連ノードとの対応関係に応じた接続詞を有する発話を生成してもよい。
このような構成により、発話ノードと関連ノードとの対応関係に応じた適切な接続詞を用いることができ、発話者への応答を、より自然な会話に近づけることができるようになる。
【００１０】
また、本発明による対話装置では、更新部は、オントロジーにおいて、感情判定部による判定結果に対応する発話ノードのＰＮ値と共に、発話ノードとリンクしているノードのＰＮ値も更新してもよい。
このような構成により、一つのノードについて得られた感情の判定結果に応じて、より広範囲のノードのＰＮ値を更新することができるようになる。その結果、より少ない会話によって、より広範囲のＰＮ値を更新することができるようになる。
【００１１】
また、本発明による対話装置では、発話生成部による発話の生成で用いられた関連ノードと、関連ノードに対応する発話ノードとの対応関係に応じて、発話の生成に関する理由である理由情報を生成する理由情報生成部と、理由情報を出力する理由情報出力部と、をさらに備えてもよい。
このような構成により、発話の生成された理由を知ることができるようになる。また、その理由を用いることによって、例えば、対話装置の設定を変更することもでき、対話装置の設定変更をより容易に実現することができるようになる。
【００１２】
また、本発明による対話装置では、オントロジーの各ノードには、属性が対応付けられており、発話テキストを用いて、発話テキストに対応する発話者の属性を取得する属性取得部をさらに備え、更新部は、属性取得部によって取得された属性の対応付けられているノードのＰＮ値を変更してもよい。
このような構成により、発話者の属性に応じて、あらかじめＰＮ値を変更することができるようになる。例えば、発話者が女性であることが分かった場合には、一般的に女性が好むと考えられるノードのＰＮ値をポジティブ側に変更することにより、女性の発話者により適した応答を生成することができるようになる。
【００１３】
また、本発明による対話装置では、発話テキストの受け付けと、発話の出力とが繰り返された後に、オントロジーにおけるＰＮ値のグラフであるＰＮ値グラフを用いて、発話者の特徴を取得する特徴取得部と、特徴取得部によって取得された、発話者の特徴を出力する特徴出力部と、をさらに備えてもよい。
このような構成により、発話者の特徴を知ることができるようになる。例えば、発話者の性格などを、ＰＮ値グラフを用いて知ることができるようになる。
【００１４】
また、本発明による対話装置では、受付部は、複数の発話者の発話テキストを受け付け、オントロジーにおいて、発話者ごとにＰＮ値が対応付けられており、更新部は、複数の発話者について、発話テキストの受け付けと、発話の出力とが繰り返された後に、オントロジーにおける、第１の発話者に関するＰＮ値のグラフであるＰＮ値グラフと、第２の発話者に関するＰＮ値グラフとが部分一致する場合に、第１の発話者のＰＮ値グラフにおけるＰＮ値が初期値である部分について、第２の発話者のＰＮ値グラフにおける対応する部分の初期値以外のＰＮ値に応じて更新してもよい。
このような構成により、ＰＮ値グラフが部分一致している発話者は、他の部分のＰＮ値も似ているという仮定の下、対話を行っていない箇所のＰＮ値についても更新することができる。
【００１５】
また、本発明による発話生成方法は、発話者の発話テキストを受け付けるステップと、発話テキストから名詞を抽出するステップと、抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定するステップと、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出された名詞に対応するノードである発話ノードを特定するステップと、判定結果に応じて、判定結果に対応する発話ノードのＰＮ値を更新するステップと、オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定するステップと、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、特定された発話ノードと特定された関連ノードとの対応関係に応じた発話パターンを特定し、特定した発話パターンと、特定された関連ノードとを用いて発話を生成するステップと、生成された発話を出力するステップと、を備えたものである。
【発明の効果】
【００１６】
本発明による対話装置等によれば、機械学習モデルを用いることなく発話を生成することができるようになる。また、オントロジーの各ノードのＰＮ値を更新することによって、発話者の好みを知ることができ、そのＰＮ値を用いることによって、より適切な発話を行うことができるようになる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態による対話装置の構成を示すブロック図
【図２】同実施の形態による対話装置の動作を示すフローチャート
【図３】同実施の形態におけるオントロジーのデータ構造の一例を示す図
【図４】同実施の形態における発話ノードと関連ノードとの対応関係と、発話パターンとの対応の一例を示す図
【図５】同実施の形態における発話ノードと関連ノードとの対応関係と、接続詞との対応の一例を示す図
【図６】同実施の形態における発話ノードと関連ノードとの対応関係と、理由情報パターンとの対応の一例を示す図
【図７Ａ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図７Ｂ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図７Ｃ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図７Ｄ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図７Ｅ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図７Ｆ】同実施の形態におけるＰＮ値の更新等について説明するための図
【図８】同実施の形態における対話の一例を示す図
【図９】同実施の形態におけるコンピュータシステムの外観一例を示す模式図
【図１０】同実施の形態におけるコンピュータシステムの構成の一例を示す図
【発明を実施するための形態】
【００１８】
以下、本発明による対話装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態による対話装置は、発話者の発話テキストに含まれる名詞について感情判定を行った結果に応じて、オントロジーの各ノードに対応付けられているＰＮ値を更新し、そのＰＮ値を用いて、発話を生成するものである。
【００１９】
図１は、本実施の形態による対話装置１の構成を示すブロック図である。本実施の形態による対話装置１は、音声認識部１１と、受付部１２と、抽出部１３と、感情判定部１４と、記憶部１５と、属性取得部１６と、発話ノード特定部１７と、更新部１８と、関連ノード特定部１９と、発話生成部２０と、発話出力部２１と、理由情報生成部２２と、理由情報出力部２３と、特徴取得部２４と、特徴出力部２５とを備える。
【００２０】
音声認識部１１は、発話者の発話した音声の信号を受け付け、その音声についての音声認識の結果である発話テキストを取得する。なお、発話テキストは、発話者の発話した音声に対応したテキストである。また、音声認識については、すでに公知であり、その詳細な説明を省略する。音声認識部１１は、音声認識の処理を、ローカルで行ってもよく、または、音声の情報を、通信回線を介してサーバ等に送信し、その音声に対する音声認識の結果をそのサーバ等から受信することによって、音声認識結果を取得してもよい。すなわち、音声認識部１１は、例えば、音声認識の処理を実行するものであってもよく、その処理の実行を他のサーバ等に依頼するものであってもよい。
【００２１】
受付部１２は、発話者の発話テキストを受け付ける。本実施の形態では、受付部１２が、音声認識の結果である発話テキストを音声認識部１１から受け付ける場合について主に説明するが、そうでなくてもよい。受付部１２は、発話テキストを、他の装置等（例えば、音声認識を行う装置等）から受け付けてもよい。また、発話テキストは、音声認識の結果でなくてもよい。発話テキストは、例えば、キーボード等を介して入力されたものであってもよい。したがって、本実施の形態での対話は、通常、音声での対話であるが、例えば、チャットなどのようなテキスト情報の入出力での対話であってもよい。また、本実施の形態では、受付部１２が、一人の発話者からの発話テキストを受け付ける場合について主に説明するが、後述するように、受付部１２は、複数の発話者の発話テキストを受け付けてもよい。なお、受付部１２が、音声認識部１１以外から発話テキストを受けつける場合には、対話装置１は、音声認識部１１を備えていなくてもよい。
【００２２】
受付部１２は、例えば、音声認識部１１から出力された発話テキストを受け付けてもよく、有線または無線の通信回線を介して送信された発話テキストを受信してもよく、入力デバイス（例えば、キーボードやマウス、タッチパネルなど）から入力された発話テキストを受け付けてもよい。なお、受付部１２は、受け付けを行うためのデバイス（例えば、モデムやネットワークカードなど）を含んでもよく、または含まなくてもよい。また、受付部１２は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００２３】
抽出部１３は、発話テキストから名詞を抽出する。抽出部１３は、発話テキストに対して形態素解析を行い、その解析結果を用いて名詞を抽出してもよい。より具体的には、発話テキストについて形態素解析を行うことによって、発話テキストを形態素ごとに分割することができ、また、各形態素の品詞を特定することができる。そして、品詞が名詞である形態素を抽出することによって、発話テキストから名詞を抽出することができる。抽出部１３は、名詞を抽出する際に、固有名詞と普通名詞とをそれぞれ抽出してもよい。なお、形態素解析は、例えば、「ＭｅＣａｂ」や「ＣｈａＳｅｎ（茶筌）」、「ＪＵＭＡＮ」などの公知の形態素解析システムを用いて実現できるため、詳細な説明を省略する。
【００２４】
感情判定部１４は、抽出部１３によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する。なお、感情判定部１４は、抽出された名詞に関して、発話者の感情が、ポジティブか、ネガティブか、ニュートラル（中立）かを判定してもよい。本実施の形態では、感情判定部１４がこのような３段階の判定を行う場合について主に説明する。なお、ニュートラルとは、感情判定結果が、ポジティブでもネガティブでもないことである。また、感情判定結果がポジティブであるとは、発話者がよい印象を持っていることを示しており、ネガティブであるとは、発話者が悪い印象を持っていることを示している。
【００２５】
具体的な感情判定処理は、例えば、次のように行われてもよい。感情判定部１４は、発話テキストにおいて係り受け解析を行い、抽出された名詞に関する係り受けを取得する。その係り受けの取得とは、例えば、抽出された名詞に係る形態素や、抽出された名詞の係る形態素の特定であってもよい。その後、感情判定部１４は、単語がポジティブかネガティブかを分類した情報を用いて、抽出された名詞に係る形態素や、抽出された名詞の係る形態素がポジティブであるのか、ネガティブであるのかを判定する。そして、感情判定部１４は、その形態素に関する判定結果に応じて、抽出された名詞に関する発話者の感情の判定を行ってもよい。すなわち、感情判定部１４は、その形態素に関する判定結果がポジティブであれば、抽出された名詞に関する発話者の感情もポジティブであると判定し、その形態素に関する判定結果がネガティブであれば、抽出された名詞に関する発話者の感情もネガティブであると判定してもよい。なお、単語がポジティブかネガティブかを分類した情報としては、例えば、各単語に関して、ポジティブであるほど＋１に近い値を割り当て、ネガティブであるほど−１に近い値を割り当てた単語感情極性対応表などが知られている（例えば、ＵＲＬ：http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.htmlを参照されたい）。したがって、その単語感情極性対応表を用いて、形態素に対応する−１から１までの範囲の値を取得でき、その値を用いて、ポジティブ、ネガティブ、ニュートラルを判定することができる。例えば、その値が、−εからεまでの範囲であればニュートラルと判定され、＋εよりも大きければポジティブと判定され、−εより小さければネガティブと判定されてもよい。なお、εは、１より小さいあらかじめ決められた正の実数である。また、抽出された名詞と係り受け関係にある形態素が２以上存在する場合には、その２以上の値の合計に基づいて、感情判定が行われてもよい。例えば、その値の合計が１に近ければ、ポジティブであると判定されてもよい。
【００２６】
また、感情判定部１４は、発話テキストの全体、または発話テキストに含まれる一文について感情解析を行い、感情解析の結果が、解析対象に含まれる各名詞に関する、発話者の感情であるとしてもよい。例えば、発話テキストの全体がポジティブと判定された場合には、その発話テキストに含まれる各単語に関する発話者の感情もポジティブと判定されてもよい。なお、発話テキストの全体、または発話テキストに含まれる一文に関してポジティブやネガティブなどの感情解析の結果を取得する方法はすでに公知であり、その詳細な説明を省略する。例えば、Ｇｏｏｇｌｅ（登録商標）の提供しているCloud Natural Language（https://cloud.google.com/natural-language/?hl=ja）などを用いて取得することができる。
【００２７】
記憶部１５では、後述するオントロジーや、発話パターンなどが記憶されている。それらの詳細については、後述する。なお、記憶部１５に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が記憶部１５で記憶されるようになってもよく、通信回線等を介して送信された情報が記憶部１５で記憶されるようになってもよく、または、入力デバイスを介して入力された情報が記憶部１５で記憶されるようになってもよい。また、例えば、対話装置１の各構成要素によって、記憶部１５に情報が追加されてもよく、記憶部１５で記憶されている情報が更新されてもよい。また、記憶部１５での記憶は、ＲＡＭ等における一時的な記憶でもよく、または、長期的な記憶でもよい。また、記憶部１５は、所定の記録媒体（例えば、半導体メモリや磁気ディスクなど）によって実現されうる。
【００２８】
属性取得部１６は、発話テキストを用いて、発話テキストに対応する発話者の属性を取得する。発話者の属性は、例えば、性別、年代、居住地域、収入、職業、学歴などのデモグラフィック属性であってもよく、または、その他の属性であってもよい。本実施の形態では、その属性が性別である場合について主に説明する。属性取得部１６は、例えば、単語と、発話者の属性とを対応付けた情報を用いて、発話テキストに含まれる単語に対応する属性を取得することによって、発話者の属性を取得してもよい。例えば、単語ごとに、−１から１までの性別スコアが対応付けられており、その性別スコアは、−１に近いほど女性がよく使用する単語であり、＋１に近いほど男性がよく使用する単語であってもよい。そして、属性取得部１６は、１以上の発話テキストに含まれる単語について、性別スコアの合計を取得し、その合計が正の値であれば、発話者の性別が男性であると判断し、負の値であれば、発話者の性別が女性であると判断してもよい。同様にして、例えば、年代が高いのか低いのか、居住地域が西日本であるのか東日本であるのか、収入が多いのか少ないのかなどを判断することもできる。
【００２９】
発話ノード特定部１７は、記憶部１５で記憶されているオントロジーにおいて、抽出部１３によって抽出された名詞に対応するノードである発話ノードを特定する。なお、オントロジーは、クラス（基本概念）またはインスタンス（実体）であるノードの階層構造を有している。その階層構造によって、例えば、クラスやインスタンスの上位下位の関係や、包含関係が示されると考えてもよい。また、オントロジーにおいて、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられている。オントロジーの階層構造は、通常、ツリー構造（木構造）であるが、それ以外であってもよい。また、オントロジーの階層構造がツリー構造である場合には、インスタンスは、子ノードを持たないリーフノードとなる。記憶部１５で記憶されているのは、厳密には、オントロジーを示す情報であるが、ここでは、説明の便宜上、それをオントロジーと呼ぶことにする。オントロジーとしては、例えば、ＤＢｐｅｄｉａ、Ｆｒｅｅｂａｓｅ等の既存のオントロジーを用いてもよく、または、対話装置１用に生成されたオントロジーを用いてもよい。また、本実施の形態では、オントロジーが記憶部１５で記憶されている場合について主に説明するが、オントロジーは、対話装置１以外のサーバ等の装置で保持されていてもよい。その場合には、発話ノードの特定や、関連ノードの特定、ＰＮ値の更新などは、その外部で保持されているオントロジーにアクセスすることによって行われてもよい。
【００３０】
ＰＮ値は、結果として、ＰＮ値に対応しているノードに関する感情がポジティブやネガティブである程度を知ることができるのであれば、どのような値であってもよい。ＰＮ値は、例えば、ポジティブの程度を示す値であってもよく、ネガティブの程度を示す値であってもよく、その両方であってもよい。本実施の形態では、ＰＮ値が、−１００から＋１００までの整数で示され、＋１００に近いほどポジティブの程度が大きく、−１００に近いほどネガティブの程度が大きいものである場合について主に説明する。なお、ＰＮ値の更新が行われていない状況でのＰＮ値、すなわちオントロジーにおけるＰＮ値の初期値は、ニュートラルの値（上記の例では「０」）に設定されることが好適である。
【００３１】
抽出された名詞に対応するノードとは、その名詞に相当するノードのことであり、例えば、抽出された名詞と一致するノードであってもよく、抽出された名詞と実質的に一致するノードであってもよく、または、抽出された名詞と類似するノードであってもよい。例えば、オントロジーにノード「野球」が存在する場合に、抽出された名詞が「野球」であれば、その名詞に一致する発話ノード「野球」が特定され、抽出された名詞が「ベースボール」であれば、その名詞に実質的に一致する発話ノード「野球」が特定され、抽出された名詞が「ソフトボール」であり、オントロジーにノード「ソフトボール」が含まれない場合には、その名詞「ソフトボール」と類似する発話ノード「野球」が特定されてもよい。なお、抽出された名詞と一致するノードや、実質的に一致するノード、類似するノードが存在しない場合には、発話ノード特定部１７は、抽出された名詞に対応するノードが存在しないと判断してもよい。また、複数の名詞が抽出された場合には、発話ノード特定部１７は、各名詞について、発話ノードの特定を行ってもよい。
【００３２】
また、オントロジーにおいて、ノードごとに、属性が対応付けられていてもよい。ある属性を有する発話者が、ポジティブな印象を有すると考えられるノードに、その属性が対応付けられてもよい。例えば、男性の発話者は、ノード「スポーツ」にポジティブな印象を有すると考えられるため、ノード「スポーツ」に、属性「男性」が対応付けられてもよい。また、ある属性を有する発話者が、ネガティブな印象を有すると考えられるノードに、その属性が対応付けられてもよい。例えば、女性の発話者は、ノード「ゴキブリ」「クモ」にネガティブな印象を有すると考えられるため、ノード「ゴキブリ」「クモ」に、属性「女性」が対応付けられてもよい。なお、あるノードに対応付けられている属性を有する発話者が、そのノードに対してポジティブな印象を有するのか、ネガティブな印象を有するのかがあらかじめ決められていてもよく、または、属性ごとに設定されてもよい。また、ノードには、２以上の属性が対応付けられてもよい。また、属性の対応付けられていないノードが存在してもよい。
【００３３】
更新部１８は、感情判定部１４による判定結果に応じて、その判定結果に対応する発話ノードのＰＮ値を更新する。判定結果に対応する発話ノードとは、判定結果の判定対象となる名詞に対応する発話ノードのことである。すなわち、抽出された名詞に関する感情解析の判定結果がポジティブ（または、ネガティブ）であった場合に、更新部１８は、その抽出された名詞に対応する発話ノードのＰＮ値を、よりポジティブ側（または、よりネガティブ側）となるように更新してもよい。上記のようにＰＮ値が−１００から＋１００までの整数である場合には、判定結果がポジティブであるときに、ＰＮ値に所定の正の値を加算し、判定結果がネガティブであるときに、ＰＮ値から所定の正の値を減算してもよい。その所定の正の値は、判定結果に関わらずに一定であってもよく、または、判定結果に応じて変化してもよい。後者の場合には、その所定の値は、よりポジティブ度やネガティブ度が高いほど、より大きい値となってもよい。また、更新後のＰＮ値が、ＰＮ値の上限値より大きくなる場合（または下限値より小さくなる場合）には、更新部１８は、ＰＮ値が上限値（または下限値）となるように更新してもよい。
【００３４】
更新部１８は、オントロジーにおいて、感情判定部１４による判定結果に対応する発話ノードのＰＮ値と共に、その発話ノードとリンクしているノードのＰＮ値も更新してもよい。例えば、発話者が発話ノードについてポジティブな印象を持っている場合には、それとリンクされているノードについてもポジティブな印象を持っている可能性があるからである。発話ノードとリンクしているノードとは、発話ノードとエッジで繋がっているノードのことであってもよい。発話ノードとリンクしているノードは、例えば、発話ノードの近傍のノードのみであってもよく、または、そうでなくてもよい。前者の場合には、例えば、発話ノードからＮ個以内のエッジで繋がるノードについてのみ、ＰＮ値が更新されてもよい。Ｎは、１以上の整数であり、通常、あまり大きくない値（例えば、２や３など）である。また、発話ノードから離れるほど、ＰＮ値の更新の程度が小さくなってもよい。例えば、発話ノードでは、ＰＮ値が＋１０だけ加算された場合には、発話ノードに１個のエッジで繋がるノードについては、ＰＮ値が＋５だけ加算され、発話ノードに２個のエッジで繋がるノードについては、ＰＮ値が＋２だけ加算されてもよい。このように、発話ノードから離れるほど、所定の割引率で割り引かれたＰＮ値の更新が行われるようにしてもよい。上記の例の場合には、発話ノードからのエッジ数が１個増えるごとに、ＰＮ値の更新の程度が５０％ずつ割り引かれている。なお、ＰＮ値を整数に限定しているため、上記の例では、小数点以下は切り捨てている。本実施の形態では、ＰＮ値の更新が、加減算によって行われる場合について主に説明するが、ＰＮ値の更新は、ＰＮ値に所定の値を乗算することによって行われてもよい。例えば、ＰＮ値が０以上の実数や整数である場合には、ＰＮ値に１より大きい値や、１より小さい値を乗算することによって、ＰＮ値を更新してもよい。ＰＮ値が整数である場合には、その乗算結果において、小数点以下を切り捨てたり、四捨五入したりしてもよい。
【００３５】
また、発話ノード以外についてもＰＮ値の更新を行う場合に、オントロジーの階層構造において、発話ノードから上位の方（すなわち、ルートの方）に進むのか、または、発話ノードから下位の方（すなわち、リーフの方）に進むのかに応じて、ＰＮ値の更新の方法が変更されてもよい。例えば、発話ノードから上位の方向に進む場合には、上記のように所定の割引率で割り引かれたＰＮ値の更新が行われるようにすると共に、発話ノードから下位の方向に進む場合には、割引なしで、発話ノードと同じＰＮ値の更新が行われるようにしてもよい。例えば、発話ノードが「球技」であり、その球技に対応する判定結果がポジティブである場合には、球技の下位方向のノードである「サッカー」や「野球」についても、発話者はよい印象を持っていると考えられるが、球技の上位方向のノードである「スポーツ」や、そのスポーツの下位のノードである「陸上競技」などについては、発話者が必ずしもよい印象を持っているとは限らないからである。本実施の形態では、このように、発話ノード以外についてもＰＮ値の更新が行われる場合について主に説明する。なお、発話ノードから上位方向に進む場合には、発話ノードの直近の上位ノードから先は、上位側に進んでもよく、下位側に進んでもよいものとする。
【００３６】
更新部１８は、属性取得部１６によって取得された属性の対応付けられているノードのＰＮ値を変更する。そのＰＮ値の変更は、例えば、ＰＮ値をポジティブ側の値に変更することであってもよく、ＰＮ値をネガティブ側の値に変更することであってもよい。オントロジーにおいて、ある属性を有している発話者については、ＰＮ値がポジティブ側の値となると考えられるノードに、その属性が対応付けられている場合には、例えば、属性取得部１６によって、発話者の属性「女性」が取得されたときに、更新部１８は、オントロジーにおいて、「女性」に対応するノード（例えば、「花」や「チューリップ」に対応するノードなど）のＰＮ値をポジティブ側の値に更新してもよい。反対に、オントロジーにおいて、ある属性を有している発話者については、ＰＮ値がネガティブ側の値となると考えられるノードに、その属性が対応付けられている場合には、例えば、属性取得部１６によって、発話者の属性「女性」が取得されたときに、更新部１８は、オントロジーにおいて、「女性」に対応するノード（例えば、「ハエ」や「ゴキブリ」に対応するノードなど）のＰＮ値をネガティブ側の値に更新してもよい。また、オントロジーにおいて、発話者がある属性を有している場合に、ＰＮ値をポジティブ側の値に変更するのか、または、ネガティブ側の値に変更するのかが設定されていてもよい。例えば、「トカゲ」に対応するノードに、属性「男性」を有する発話者に対しては、ＰＮ値をポジティブ側の値に変更する旨と、属性「女性」を有する発話者に対しては、ＰＮ値をネガティブ側の値に変更する旨とが対応付けられていてもよい。ＰＮ値の更新は、例えば、所定の値の加減算によって行われてもよく、所定の値の乗算によって行われてもよい。具体的には、「女性」に対応するノードのＰＮ値をポジティブ側の値に変更する場合には、ＰＮ値が＋５だけ加算されてもよく、「女性」に対応するノードのＰＮ値をネガティブ側の値に変更する場合には、ＰＮ値が−５だけ減算されてもよい。なお、取得された属性に応じてＰＮ値を変更する場合には、ニュートラルに対応するＰＮ値のみを変更してもよい。そのようにすることで、まだ対話をしていないノードの領域についても、属性を用いてあらかじめＰＮ値をニュートラルでない値にすることができる。本実施の形態では、オントロジーにおいて、ある属性を有している発話者については、ＰＮ値がポジティブ側の値となると考えられるノードに、その属性が対応付けられており、属性取得部１６によって取得された発話者の属性に応じて、その属性の対応付けられているノードのＰＮ値がポジティブ側の値に更新される場合について主に説明する。
【００３７】
関連ノード特定部１９は、オントロジーにおいて、ＰＮ値を用いて、発話ノード特定部１７によって特定された発話ノードに関連したノードである関連ノードを特定する。このように、オントロジーにおいて、発話ノードを基点として、関連ノードが特定されることになる。その発話ノードは、関連ノードの特定を行う直前に特定された発話ノードであってもよい。関連ノードの特定の方法としては、通常、次の３つがある。なお、関連ノード特定部１９は、それまでに関連ノードとして特定していない関連ノードを特定してもよい。すなわち、オントロジーにおいて、関連ノードとして特定されるのは、１度に限定されてもよく、または、そうでなくてもよい。
【００３８】
（１）上位化（抽象化）による関連ノードの特定
この場合には、関連ノード特定部１９は、オントロジーにおいて、発話ノードの上位ノードである関連ノードを特定してもよい。その関連ノードは、発話ノードの直近の上位ノードであってもよい。
【００３９】
（２）下位化（具体化）による関連ノードの特定
この場合には、関連ノード特定部１９は、オントロジーにおいて、発話ノードの下位ノードである関連ノードを特定してもよい。その関連ノードは、発話ノードの直近の下位ノードであってもよい。なお、発話ノードには、２以上の直近の下位ノードが存在することもある。そのような場合には、関連ノード特定部１９は、２以上の直近の下位ノードから、ランダムに、または、ＰＮ値を用いて関連ノードを選択してもよい。
【００４０】
（３）横展開による関連ノードの特定
この場合には、関連ノード特定部１９は、オントロジーにおいて、発話ノードと同程度の階層にある他のノードである関連ノードを特定してもよい。同程度の階層とは、同じ階層や、１階層上、または、１階層下であってもよい。具体的には、関連ノード特定部１９は、発話ノードからＭ階層だけ上位側のノードを特定し、その特定したノードからＫ階層だけ下位側のノードである関連ノードを特定してもよい。その際に、発話ノードから関連ノードまで、同じノードを２回通らないようにして、関連ノードの特定が行われてもよい。また、｜Ｍ−Ｋ｜≦１となるようにすることで、発話ノードと関連ノードとの階層が±１以内で同じになることになる。なお、Ｍ，Ｋは、それぞれ１以上の整数である。
【００４１】
関連ノード特定部１９は、例えば、発話ノードに対応する抽出された名詞が固有名詞である場合には、上記（１）によって関連ノードの特定を行ってもよい。また、関連ノード特定部１９は、例えば、発話ノードがリーフノード（すなわち、オントロジーにおけるインスタンス）である場合に、上記（１）によって関連ノードの特定を行ってもよい。また、関連ノード特定部１９は、例えば、発話ノードに対応する抽出された名詞が普通名詞である場合には、上記（２）によって関連ノードの特定を行ってもよい。また、関連ノード特定部１９は、例えば、発話ノードが上位のノードである場合に、上記（２）によって関連ノードの特定を行ってもよい。
【００４２】
また、関連ノードの特定において、関連ノード特定部１９は、中立よりもポジティブ側のＰＮ値に対応する発話ノードに関連する関連ノードを特定してもよい。例えば、発話テキストから複数の名詞が抽出され、各名詞に対応する発話ノードが特定された場合において、ある発話ノードのＰＮ値は、中立（ニュートラル）よりもポジティブ側であり、別の発話ノードのＰＮ値は、中立よりもネガティブ側であるとすると、関連ノード特定部１９は、ＰＮ値が中立よりもポジティブ側である発話ノードを基点として関連ノードの特定を行ってもよい。発話者がポジティブな印象を持っている単語に関連した発話を生成する方が、より活発な会話になると考えられるからである。このようにして、ＰＮ値を用いた関連ノードの特定が行われてもよい。
【００４３】
また、中立よりもネガティブ側のＰＮ値に対応する発話ノードのみが特定された場合などのように、中立よりもネガティブ側のＰＮ値に対応する発話ノードに関連する関連オードの特定を行う場合には、関連ノード特定部１９は、上記（３）によって関連ノードの特定を行ってもよい。発話ノードにできるだけ関連しないノードに対応する発話を生成した方が適切であると考えられるからである。このようにして、ＰＮ値を用いた関連ノードの特定が行われてもよい。
【００４４】
また、関連ノードの特定において、関連ノード特定部１９は、中立であるＰＮ値に対応する関連ノードを特定するようにしてもよい。このようにすることで、オントロジーにおいて、発話者の好みの分かっていない領域（すなわち、中立であるＰＮ値に対応するノードの領域）についても、発話者の好みを知ることができ、より発話者の好みに沿った発話の生成を行うことができるようになるからである。また、関連ノード特定部１９は、ＰＮ値が中立またはポジティブ側の値である関連ノードを特定するようにしてもよい。発話者がネガティブな印象を持っている単語に関連した発話が生成されない方がよいと考えられるからである。このようにして、ＰＮ値を用いた関連ノードの特定が行われてもよい。
【００４５】
発話生成部２０は、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、発話ノード特定部１７によって特定された発話ノードと、関連ノード特定部１９によって特定された関連ノードとの対応関係に応じた発話パターンを特定し、その特定した発話パターンと、特定された関連ノードとを用いて発話を生成する。本実施の形態では、その複数の発話パターンが記憶部１５で記憶されている場合について主に説明するが、複数の発話パターンは、対話装置１以外のサーバ等の装置で保持されていてもよい。その場合には、発話パターンの特定は、その外部で保持されている複数の発話パターンにアクセスすることによって行われてもよい。発話ノードと関連ノードとの対応関係は、例えば、上記（１）〜（３）の対応関係であってもよい。すなわち、上記（１）〜（３）の対応関係に対応する発話パターンが、あらかじめ用意されていてもよい。なお、１個の対応関係に対して、１個の発話パターンが対応付けられていてもよく、２個以上の発話パターンが対応付けられていてもよい。発話パターンは、例えば、発話のテンプレートであり、関連ノードの文字列を挿入することによって、発話を生成することができるものであってもよい。発話パターンは、例えば、「＜関連ノード＞はお好きですか？」であってもよい。そして、＜関連ノード＞の箇所に関連ノードを挿入することによって、発話が生成されてもよい。なお、特定された発話ノードと、特定された関連ノードとの対応関係に応じた発話パターンが複数存在する場合には、発話生成部２０は、ランダムに１つを選択して用いるようにしてもよい。
【００４６】
発話生成部２０は、発話ノードと関連ノードとの対応関係に応じた接続詞を有する発話を生成してもよい。その場合には、発話生成部２０は、例えば、発話ノード特定部１７によって特定された発話ノードと、関連ノード特定部１９によって特定された関連ノードとの対応関係に応じた接続詞を特定し、その特定した接続詞と、上記のようにして、発話パターンと関連ノードとを用いて生成した発話とを結合することによって、最終的な発話を生成してもよい。その場合にも、上記（１）〜（３）の対応関係に対応する接続詞が記憶部１５等で記憶されており、発話生成部２０は、それらの情報を用いて、接続詞を特定してもよい。また、発話生成部２０は、対話装置１以外のサーバ等の装置で保持されていてる接続詞にアクセスすることによって、発話ノードと関連ノードとの対応関係に応じた接続詞を取得してもよい。なお、特定された発話ノードと、特定された関連ノードとの対応関係に応じた接続詞が複数存在する場合には、発話生成部２０は、ランダムに１つを選択して用いるようにしてもよい。また、その接続詞は、あらかじめ発話パターンに含められていてもよい。
【００４７】
発話出力部２１は、発話生成部２０によって生成された発話を出力する。この発話の出力は、例えば、発話を示すテキストの出力であってもよく、その発話を音声に変換した音声信号の出力であってもよい。後者の場合には、発話のテキストに応じた音声合成が行われてもよい。本実施の形態では、発話出力部２１が、生成された発話に応じた音声合成を行い、生成した音声信号をスピーカに出力する場合について主に説明する。
【００４８】
ここで、この出力は、例えば、スピーカによる音声出力でもよく、所定の機器への通信回線を介した送信でもよく、表示デバイスへの表示でもよく、プリンタによる印刷でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、発話出力部２１は、出力を行うデバイス（例えば、通信デバイスなど）を含んでもよく、または含まなくてもよい。また、発話出力部２１は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００４９】
理由情報生成部２２は、発話生成部２０による発話の生成で用いられた関連ノードと、その関連ノードに対応する発話ノードとの対応関係に応じて、発話の生成に関する理由である理由情報を生成する。関連ノードに対応する発話ノードとは、その関連ノードの特定時に、出発点として用いられた発話ノードのことである。したがって、例えば、ある発話ノードに基づいて、関連ノードが特定された場合には、その発話ノードが、特定された関連ノードに対応する発話ノードとなる。この理由情報の生成は、例えば、発話の生成方法に対応したテンプレートを用意しておき、そのテンプレートを用いて行われてもよい。より具体的には、発話ノードと関連ノードとの対応関係（例えば、上位化、下位化、横展開等）に対応する理由情報パターンが用意されている場合には、理由情報生成部２２は、発話ノード特定部１７によって特定された発話ノードと、関連ノード特定部１９によって特定された関連ノードとの対応関係に応じた理由情報パターンを特定し、その特定した理由情報パターンに、発話ノードや関連ノードの文字列を挿入することによって、理由情報を生成してもよい。理由情報の生成は、例えば、発話の生成ごとに行われてもよく、または、一連の複数の発話が生成された後に行われてもよい。後者の場合には、発話の生成ごとに、理由情報の生成に必要となる情報、例えば、発話ノードや関連ノード等を保持しておき、一連の複数の発話が生成された後に、その保持している情報を用いて、理由情報の生成が行われてもよい。
【００５０】
理由情報出力部２３は、理由情報生成部２２によって生成された理由情報を出力する。ここで、この出力は、例えば、表示デバイス（例えば、液晶ディスプレイや有機ＥＬディスプレイなど）への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、スピーカによる音声出力でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、理由情報出力部２３は、出力を行うデバイス（例えば、表示デバイスやプリンタなど）を含んでもよく、または含まなくてもよい。また、理由情報出力部２３は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００５１】
特徴取得部２４は、発話テキストの受け付けと、発話の出力とが繰り返された後、すなわちオントロジーにおけるＰＮ値の更新が繰り返された後に、オントロジーにおけるＰＮ値のグラフであるＰＮ値グラフを用いて、発話者の特徴を取得する。発話テキストの受け付け、発話の出力が繰り返されることによって、抽出された名詞の感情解析の結果に応じたＰＮ値の更新が繰り返して行われることになる。また、属性に応じたＰＮ値の更新も行われることもある。そのようにして更新されたＰＮ値は、発話者の個性を示すものになる。したがって、そのＰＮ値のグラフ（ノードとエッジから構成されるグラフであって、ノードにＰＮ値が対応付けられているグラフ）を用いて、発話者の特徴（個性）を取得することができることになる。ＰＮ値グラフを用いて、発話者の特徴を取得する具体的な方法としては、例えば、（Ａ）ＰＮ値グラフの類似関係を用いる方法、（Ｂ）グラフコンボリューションを用いる方法がある。以下、それぞれについて説明する。
【００５２】
（Ａ）ＰＮ値グラフの類似関係を用いて、発話者の特徴を取得する方法
この場合には、まず、所定の特徴を有する発話者のＰＮ値グラフを用意する必要がある。その特徴としては、例えば、「専門家タイプ」「調整タイプ」「自己実現タイプ」などであってもよい。そして、複数の発話者について、あらかじめ自己申告により、または、カウンセラーなどによる客観評価により特徴を取得すると共に、各発話者のＰＮ値グラフを取得しておく。なお、ある特徴に分類された発話者が複数人存在する場合には、例えば、ＰＮ値グラフの各ノードのＰＮ値について、複数のＰＮ値グラフを用いた代表値が取得されることによって、１つのＰＮ値グラフにマージされてもよく、または、その複数のＰＮ値グラフがそのまま保持されてもよい。
【００５３】
その後、特徴の分かっていない発話者について、発話テキストの受け付けと、発話の出力とが繰り返されることによって、オントロジーにおける各ノードのＰＮ値が更新され、ＰＮ値グラフが取得されたとする。すると、特徴取得部２４は、取得されたＰＮ値グラフと最も類似する、あらかじめ保持されているＰＮ値グラフを特定する。ＰＮ値グラフが類似するかどうかは、例えば、ＰＮ値グラフにおける各ノードのＰＮ値を成分とするベクトルに関するコサイン距離などの類似度を算出することによって判断されてもよい。例えば、取得されたＰＮ値グラフのベクトルと類似度が最も高いベクトルに対応する、あらかじめ保持されているＰＮ値グラフが、取得されたＰＮ値グラフに最も類似するＰＮ値グラフであると判断されてもよい。そして、その取得されたＰＮ値グラフに最も類似する、あらかじめ保持されているＰＮ値グラフに対応する特徴が、発話者の特徴として取得されてもよい。
【００５４】
（Ｂ）グラフコンボリューションを用いて、発話者の特徴を取得する方法
この場合にも、まず、上記のようにして、所定の特徴を有する発話者のＰＮ値グラフを用意する。そして、その用意したＰＮ値グラフについて、特徴ごとにグラフコンボリューションの学習を行う。その学習における訓練用入力情報は、ＰＮ値グラフである。また、その学習における訓練用出力情報は、訓練用入力情報であるＰＮ値グラフに対応する特徴である。その学習は、グラフコンボリューションによって行われる。グラフコンボリューションの学習の詳細については、例えば、次の文献を参照されたい。
文献：M. Schlichtkrull et al., "Modeling Relational Data with Graph Convolutional Networks", arXiv preprint arXiv:1703.06103, 2017
【００５５】
次に、特徴取得部２４は、その学習結果である学習器を用いて、特徴の取得を行う。具体的には、特徴の分かっていない発話者について、発話テキストの受け付けと、発話の出力とが繰り返されることによって、オントロジーにおける各ノードのＰＮ値が更新され、ＰＮ値グラフが取得されたとすると、特徴取得部２４は、そのＰＮ値グラフを、学習器に適用する。ＰＮ値グラフを学習器に適用するとは、そのＰＮ値グラフを学習器に入力することである。そして、その入力されたＰＮ値グラフに対する出力を取得することによって、その入力であるＰＮ値グラフに対応する特徴を取得することができる。
【００５６】
なお、ここでは、上記（Ａ），（Ｂ）の方法を一例として示したが、それら以外の方法によってＰＮ値グラフに対応する発話者の特徴の取得が行われてもよいことは言うまでもない。また、発話者の特徴についても、上記の例示に限定されないことは言うまでもない。例えば、特徴は、発話者が認知症であるかどうかなどであってもよい。その場合には、ＰＮ値グラフを用いて、発話者が認知症であるかどうかについて判断することができるようになる。
【００５７】
特徴出力部２５は、特徴取得部２４によって取得された、発話者の特徴を出力する。ここで、この出力は、例えば、表示デバイス（例えば、液晶ディスプレイや有機ＥＬディスプレイなど）への表示でもよく、所定の機器への通信回線を介した送信でもよく、プリンタによる印刷でもよく、スピーカによる音声出力でもよく、記録媒体への蓄積でもよく、他の構成要素への引き渡しでもよい。なお、特徴出力部２５は、出力を行うデバイス（例えば、表示デバイスやプリンタなど）を含んでもよく、または含まなくてもよい。また、特徴出力部２５は、ハードウェアによって実現されてもよく、または、それらのデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００５８】
次に、対話装置１の動作について図２のフローチャートを用いて説明する。
（ステップＳ１０１）音声認識部１１は、発話者の音声信号を受け付けたかどうか判断する。そして、発話者の音声信号を受け付けた場合には、ステップＳ１０２に進み、そうでない場合には、ステップＳ１１３に進む。なお、音声認識部１１は、発話者の音声信号を受け付けた場合に、一区切りの音声信号を受け付け終わるまで、受け付けの処理を継続してもよい。
【００５９】
（ステップＳ１０２）音声認識部１１は、ステップＳ１０１で受け付けた発話者の音声信号に対する音声認識を行い、発話テキストを取得する。
【００６０】
（ステップＳ１０３）音声認識部１１は、発話テキストを出力し、受付部１２は、その出力された発話テキストを受け付ける。
【００６１】
（ステップＳ１０４）抽出部１３は、受付部１２によって受け付けられた発話テキストから名詞を抽出する。
【００６２】
（ステップＳ１０５）感情判定部１４は、抽出部１３によって抽出された名詞に関して感情解析を行い、ポジティブやネガティブの判定結果を取得する。
【００６３】
（ステップＳ１０６）発話ノード特定部１７は、オントロジーにおいて、ステップＳ１０４で抽出された名詞に対応する発話ノードを特定する。
【００６４】
（ステップＳ１０７）更新部１８は、ステップＳ１０６で特定された発話ノード、及びその発話ノードにリンクされているノードのＰＮ値を、ステップＳ１０５の判定結果を用いて更新する。
【００６５】
（ステップＳ１０８）関連ノード特定部１９は、オントロジーにおいて、ステップＳ１０６で特定された発話ノードを基点として、ステップＳ１０７で更新された後のＰＮ値を用いて、関連ノードを特定する。
【００６６】
（ステップＳ１０９）発話生成部２０は、ステップＳ１０６で特定された発話ノードと、ステップＳ１０８で特定された関連ノードとの対応関係に応じた発話パターンを特定し、その特定した発話パターンと、その関連ノードとを用いて、発話を生成する。
【００６７】
（ステップＳ１１０）発話出力部２１は、ステップＳ１０９で生成された発話を出力する。発話出力部２１は、例えば、発話に応じた音声合成を行い、その音声合成した音声信号をスピーカ等に出力してもよい。
【００６８】
（ステップＳ１１１）理由情報生成部２２は、ステップＳ１０９での発話の生成に応じた理由情報を生成する。
【００６９】
（ステップＳ１１２）理由情報出力部２３は、ステップＳ１１１で生成された理由情報を出力する。そして、ステップＳ１０１に戻る。
【００７０】
（ステップＳ１１３）属性取得部１６は、属性の取得を行うかどうか判断する。そして、属性の取得を行う場合には、ステップＳ１１４に進み、そうでない場合には、ステップＳ１１６に進む。なお、属性取得部１６は、例えば、あらかじめ決められた量以上の発話テキストが受け付けられた後に、属性の取得を行うと判断してもよい。受け付けられた発話テキストの量が少ない場合には、適切な属性の取得を行うことができないからである。あらかじめ決められた量は、例えば、文字数や、データ容量等によって示されてもよい。また、ある発話者について、一度、属性の取得を行った後には、属性取得部１５は、属性の取得を行うと判断しなくてもよい。
【００７１】
（ステップＳ１１４）属性取得部１６は、それまでに受け付けられた発話テキストを用いて属性を取得する。
【００７２】
（ステップＳ１１５）更新部１８は、オントロジーにおいて、ステップＳ１１４で取得された属性の対応付けられているノードのＰＮ値を変更する。そして、ステップＳ１０１に戻る。
【００７３】
（ステップＳ１１６）特徴取得部２４は、オントロジーにおけるＰＮ値グラフを用いた特徴の取得を行うかどうか判断する。そして、特徴の取得を行う場合には、ステップＳ１１７に進み、そうでない場合には、ステップＳ１０１に戻る。なお、特徴取得部２４は、例えば、オントロジーにおいて、あらかじめ決められた割合を超えるノードのＰＮ値が中立ではなくなった場合に、特徴の取得を行うと判断してもよい。また、ある発話者について、一度、特徴の取得を行った後には、特徴取得部２４は、特徴の取得を行うと判断しなくてもよく、または、一度、特徴の取得を行った後であっても、定期的に特徴の取得を行うと判断してもよい。発話者の特徴が変化することも考えられるからである。
【００７４】
（ステップＳ１１７）特徴取得部２４は、オントロジーにおけるＰＮ値グラフを用いて、発話者の特徴を取得する。
【００７５】
（ステップＳ１１８）特徴出力部２５は、ステップＳ１１７で取得された特徴を出力する。そして、ステップＳ１０１に戻る。
なお、図２のフローチャートにおける処理の順序は一例であり、同様の結果を得られるのであれば、各ステップの順序を変更してもよい。また、図２のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【００７６】
次に、本実施の形態による対話装置１の動作について、具体例を用いて説明する。
この具体例では、記憶部１５において、図３で示されるオントロジーが記憶されている場合について説明する。図３は、オントロジーのデータ構造の一例を示す図である。図３において、各レコードが、１個のノードに対応している。そして、各レコードには、そのノードを識別するノード識別子と、そのノード名（厳密には、クラス名、またはインスタンス名）と、そのノードの直近の上位ノードを識別する上位ノード識別子と、そのノードに対応するＰＮ値と、そのノードに対応する属性とが含まれている。例えば、ノード識別子「Ｎ１０２４」で識別されるノードは、「花」のノードであり、その上位のノードは、ノード識別子「Ｎ１０２３」で識別されるノードであり、そのノード識別子「Ｎ１０２４」で識別されるノードのＰＮ値は「０」であり、そのノードの属性は「女性」であることが示されている。なお、図３のＰＮ値は、すべて初期値であり、ニュートラルな値である「０」に設定されている。この具体例では、正であるＰＮ値がポジティブであることを示しており、負であるＰＮ値がネガティブであることを示しているものとする。なお、図３で示されるオントロジーは、図７Ａで示される木構造となっている。図７Ａにおいて、各ノードの右上または左上に表示されている数字は、各ノードに対応するＰＮ値である。
【００７７】
また、この具体例では、記憶部１５において、図４で示される発話パターンが記憶されている場合について説明する。図４は、発話ノードと関連ノードとの対応関係と、発話パターンとの対応の一例を示す図である。図４において、例えば、対応関係「上位化」に、発話パターン「＜関連ノード＞が好きなのですね？」などが対応付けられている。
【００７８】
また、この具体例では、記憶部１５において、図５で示される接続詞が記憶されている場合について説明する。図５は、発話ノードと関連ノードとの対応関係と、接続詞との対応の一例を示す図である。図５において、例えば、対応関係「上位化」に、接続詞「と言うことは」などが対応付けられている。
【００７９】
また、この具体例では、記憶部１５において、図６で示される理由情報が記憶されている場合について説明する。図６は、発話ノードと関連ノードとの対応関係と、理由情報パターンとの対応の一例を示す図である。図６において、例えば、対応関係「上位化」に、理由情報パターン「＜発話ノード＞の上位の概念として＜関連ノード＞が存在し、＜発話ノード＞に関するポジティブな発話を行っているため、その＜発話ノード＞の上位概念である＜関連ノード＞に関する発話を行った。」などが対応付けられている。
【００８０】
まず、図８で示されるように、発話者が「きれいなチューリップを買ってきましたの」という発話Ｕ１０１を行ったとする。すると、その発話Ｕ１０１の音声は、マイクを介して音声認識部１１で受け付けられ、音声認識が行われて、音声に応じた発話テキスト「きれいなチューリップを買ってきましたの」が取得される（ステップＳ１０１，Ｓ１０２）。その発話テキストは、受付部１２によって受け付けられ、抽出部１３及び感情判定部１４に渡される（ステップＳ１０３）。発話テキストを受け取ると、抽出部１３は、形態素解析を行い、発話テキストから名詞「チューリップ」を取得し、その抽出した名詞を、感情判定部１４及び発話ノード特定部１７に渡す（ステップＳ１０４）。名詞「チューリップ」を受け取ると、感情判定部１４は、受付部１２から受け取った発話テキストについて、係り受け解析を行い、名詞「チューリップ」に係る形態素「きれいな」と、名詞「チューリップ」の係る形態素「買って」を特定する。そして、感情判定部１４は、特定した形態素「きれいな」「買って」がポジティブであるのか、ネガティブであるのかを判定する。ここでは、「きれいな」がポジティブと判定され、「買って」がニュートラルと判定されたとする。すると、感情判定部１４は、抽出された名詞「チューリップ」の感情解析の結果がポジティブであると判定し、その結果を更新部１８に渡す（ステップＳ１０５）。
【００８１】
その後、発話ノード特定部１７は、記憶部１５で記憶されているオントロジーにおいて、抽出された名詞「チューリップ」に対応するノードを特定する。すなわち、発話ノード特定部１７は、図３で示されるオントロジーにおいて、抽出された名詞「チューリップ」を検索キーとして検索を行い、ヒットしたレコードのノード識別子「Ｎ１０２５」を取得することによって、「チューリップ」に対応するノードの特定を行う（ステップＳ１０６）。そして、発話ノード特定部１７は、特定したレコードのノード識別子「Ｎ１０２５」を、更新部１８と、関連ノード特定部１９と、発話生成部２０とに渡す。
【００８２】
更新部１８は、発話ノード特定部１７からノード識別子「Ｎ１０２５」を受け取ると、あらかじめ受け取っていた判定結果「ポジティブ」に応じて、ノード識別子「Ｎ１０２５」に対応するＰＮ値に「１０」を加算する。なお、この具体例では、更新部１８は、発話ノードから上位の方に進む場合には、５０％の割引率で割り引いたＰＮ値の更新を、発話ノードから２個目のノードまでについて行うと共に、発話ノードから下位の方向に進む場合には、割引なしで、発話ノードと同じＰＮ値の更新を行うものとする。したがって、更新部１８は、ノード識別子「Ｎ１０２５」で識別されるノードの上位ノードである「花」のノードのＰＮ値に、「５」（＝１０／２）を加算する。さらに、更新部１８は、「花」のノードに繋がっているノードのＰＮ値に、「２」（≒５／２）をそれぞれ換算する（ステップＳ１０７）。その結果、オントロジーの各ノードに関するＰＮ値は、図７Ｂで示されるように更新される。
【００８３】
その後、関連ノード特定部１９は、発話ノードのＰＮ値が０より大きいポジティブ側であり、発話ノードがリーフノードであるため、上記（１）によって関連ノードの特定を行う。すなわち、関連ノード特定部１９は、発話ノード「チューリップ」の上位ノードである、ノード識別子「Ｎ１０２４」によって識別される関連ノード「花」を特定する（ステップＳ１０８）。そして、関連ノード特定部１９は、関連ノードのノード識別子「Ｎ１０２４」と、上位化による関連ノードの特定を行った旨とを発話生成部２０に渡す。それらの情報を受け取ると、発話生成部２０は、図４で示される、対応関係「上位化」に対応する複数の発話パターンから、発話パターン「＜関連ノード＞が好きなのですね？」をランダムに選択すると共に、図５で示される、対応関係「上位化」に対応する複数の接続詞から、接続詞「と言うことは」をランダムに選択し、それらを繋げると共に、＜関連ノード＞に、関連ノード特定部１９から受け取ったノード識別子「Ｎ１０２４」のノード名「花」を挿入することによって、発話「と言うことは  花が好きなのですね？」を生成して、発話出力部２１に渡す（ステップＳ１０９）。また、発話生成部２０は、発話ノード特定部１７から受け取った発話ノードのノード識別子と、関連ノード特定部１９から受け取った関連ノードのノード識別子及び対応関係とを、理由情報生成部２２に渡す。
【００８４】
発話を受け取ると、発話出力部２１は、音声合成を行うことによって発話に応じた音声を合成し、その合成した音声信号をスピーカに出力する（ステップＳ１１０）。その結果、スピーカから、図８の発話Ｕ１０２に対応する音声「と言うことは  花が好きなのですね？」が出力されることになる。
【００８５】
その後、理由情報生成部２２は、図６で示される、発話ノード及び関連ノードの対応関係と理由情報パターンとを対応付ける情報を参照し、受け取った対応関係「上位化」に対応する理由情報パターンを読み出し、その理由情報パターンに、受け取ったノード識別子に対応する発話ノードと関連ノードとを挿入することによって、理由情報「チューリップの上位の概念として花が存在し、チューリップに関するポジティブな発話を行っているため、そのチューリップの上位概念である花に関する発話を行った。」を生成して、理由情報出力部２３に渡す（ステップＳ１１１）。本実施の形態では、理由情報の出力は、理由情報の蓄積であるとする。すると、理由情報を受け取った理由情報出力部２３は、その理由情報を図示しない記録媒体に蓄積する（ステップＳ１１２）。したがって、蓄積された理由情報を確認することによって、各発話の生成された理由を知ることができるようになる。
【００８６】
対話装置１から出力された発話Ｕ１０２に対して、図８で示されるように、発話者が「花は好きですわ」という発話Ｕ１０３を行ったとする。すると、上記と同様にして、その音声の音声認識が行われて発話テキストが取得され、名詞「花」が抽出されると共に、その名詞に対する感情判定が行われ、ポジティブである旨の判定結果が取得される（ステップＳ１０１〜Ｓ１０５）。そして、発話ノード「花」が特定されると共に、その判定結果に応じて、発話ノード及び発話ノードと繋がっているノードのＰＮ値が、図７Ｃで示されるように更新される（ステップＳ１０６，Ｓ１０７）。その後、関連ノード特定部１９が横展開による関連ノードの特定を決定し、関連ノードとして、「昆虫」のノードを選択したとすると、それに応じて、発話パターン及び接続詞が選択され、発話「ところで  昆虫はいかがですか？」が生成されて、音声合成が行われ、図８の発話Ｕ１０４に対応する音声が出力される（ステップＳ１０８〜Ｓ１１０）。また、それに応じた理由情報も生成されて出力される（ステップＳ１１１，Ｓ１１２）。
【００８７】
その後、図８で示されるように、発話者がハエに関するネガティブな発話Ｕ１０５を行ったとすると、それに応じて、オントロジーのＰＮ値が図７Ｄで示されるように更新される（ステップＳ１０１〜Ｓ１０７）。そして、その更新後のＰＮ値を用いて、横展開による関連ノード「レモンの木」の特定が行われ、それに応じて、図８の発話Ｕ１０６が生成され、出力されたとする（ステップＳ１０８〜Ｓ１１０）。また、その発話の生成に応じた理由情報の生成、及び出力も行われる（ステップＳ１１１，Ｓ１１２）。
【００８８】
その後も、同様にして、図８で示されるように、発話者による発話Ｕ１０７が行われ、また、それに応じた発話Ｕ１０８の生成、出力が行われ、さらに、発話者による発話Ｕ１０９が行われたとする。そして、発話Ｕ１０７に応じて、オントロジーのＰＮ値が図７Ｅで示されるように更新され、発話Ｕ１０９に応じて、オントロジーのＰＮ値が図７Ｆで示されるように更新される。このようにして、オントロジーのＰＮ値は、発話者の好みを反映したものに更新されていくことになる。
【００８９】
その後、発話者からの十分な量の発話が受け付けられたため、属性取得部１６が、属性の取得を行うと判断したとする（ステップＳ１１３）。すると、属性取得部１６は、発話者からの発話Ｕ１０１等を用いて、発話者の属性である性別の判定を行う。具体的には、上記のように、属性取得部１６は、発話に含まれる各単語に対応する性別スコアの合計を算出することによって性別の判定を行い、発話者が女性であると判定したとする（ステップＳ１１４）。すると、更新部１８は、オントロジーにおいて、属性「女性」の対応付けられている各ノードのうち、ＰＮ値が「０」であるノードについて、ＰＮ値に「５」を加算することによってＰＮ値の更新を行う（ステップＳ１１５）。このようにして、オントロジーにおいて、まだ対話が行われていない領域についても、一般的な傾向に応じたＰＮ値の更新を行うことができ、発話者に適した発話の生成を行うことができるようになると考えられる。
【００９０】
また、発話者と対話装置１との一連の対話が終了した後に、特徴取得部２４は、発話者の特徴を取得すると判断したとする（ステップＳ１１６）。この具体例では、グラフコンボリューションを用いて発話者の特徴を取得するとする。そのため、特徴取得部２４は、更新後のＰＮ値グラフを、あらかじめ保持している学習器に適用し、その学習器の出力である発話者の特徴を取得して、特徴出力部２５に渡す（ステップＳ１１７）。発話者の特徴を受け取ると、特徴取得部２４は、その発話者の特徴を、図示しない記録媒体に蓄積する（ステップＳ１１８）。このようにして、その記録媒体にアクセスすることによって、発話者の特徴について知ることができるようになる。
【００９１】
以上のように、本実施の形態による対話装置１によれば、オントロジーを用いて発話を生成するため、発話がどのような理由によって生成されたのかを知ることができるようになる。その結果、仮に不適切な発話が生成された場合には、発話の生成に関する設定を変更することによって、不適切な発話の生成が行われないように修正することができ、機械学習モデルを用いた発話の生成よりも、メンテナンス性に優れていることになる。また、オントロジーのＰＮ値の更新することによって、発話者の好き嫌いを知ることができるようになるため、それを用いることにより、例えば、発話者の好まない話題を避けた発話の生成を行うことができるようになり、発話者とのより長い対話を実現することができるようになる。また、そのように、より長い対話を実現できることによって、オントロジーにおいて、ＰＮ値の更新された領域が増えることになり、発話者の好みをより詳細に知ることもできるようになる。
【００９２】
なお、本実施の形態では、感情判定部１４による判定結果や、属性取得部によって取得された属性に応じてＰＮ値が更新される場合について説明したが、それ以外のＰＮ値の更新が行われてもよい。例えば、更新部１８は、複数の発話者について、発話テキストの受け付けと、発話の出力とが繰り返された後に、オントロジーにおける、第１の発話者に関するＰＮ値グラフである第１のＰＮ値グラフと、第２の発話者に関するＰＮ値グラフである第２のＰＮ値グラフとが部分一致する場合に、第１のＰＮ値グラフにおけるＰＮ値が初期値である部分について、第２のＰＮ値グラフにおける対応する部分の初期値以外のＰＮ値に応じて更新してもよい。なお、この場合には、オントロジーにおいて、発話者ごとにＰＮ値が対応付けられていることが好適である。例えば、ノード「花」について、ＡさんのＰＮ値、ＢさんのＰＮ値、…というように、各発話者のＰＮ値が対応付けられていることが好適である。また、ＰＮ値が部分一致するとは、第１のＰＮ値グラフの一部分と、第２のＰＮ値グラフにおける、その一部分に相当する部分とのＰＮ値が完全に一致することであってもよく、両者の類似度が、あらかじめ決められた閾値を超えることであってもよい。両者の類似度は、対比する部分に含まれる各ノードに関するＰＮ値の差の絶対値の平均が小さいほど、大きくなる値であってもよく、上記のように、コサイン距離などを用いて算出されてもよい。
【００９３】
例えば、ＡさんのＰＮ値グラフが図７Ｅで示されるものであり、ＢさんのＰＮ値グラフのうち、ノード「動物」より下位側は、Ａさんの図７Ｅで示されるＰＮ値グラフと一致しているが、ノード「植物」より下位側は、ＰＮ値が初期値の「０」であったとする。そのような場合には、更新部１８は、ＢさんのＰＮ値グラフにおけるノード「植物」より下位側のＰＮ値を、ＡさんのＰＮ値グラフにおけるノード「植物」より下位側に応じて更新してもよい。具体的には、更新部１８は、ＢさんのＰＮ値グラフにおけるノード「植物」より下位側のＰＮ値が、ＡさんのＰＮ値グラフにおけるノード「植物」より下位側と同じになるように更新を行ってもよく、または、ＡさんのＰＮ値グラフにおけるノード「植物」より下位側の各ノードのＰＮ値の影響がより小さくなるように、ＢさんのＰＮ値グラフを更新してもよい。後者の場合には、例えば、ＢさんのＰＮ値グラフにおけるノード「植物」より下位側のＰＮ値が、ＡさんのＰＮ値グラフにおけるノード「植物」より下位側の各ノードのＰＮ値に１より小さい正の値を乗算した結果となるように、更新を行ってもよい。このような更新が行われることによって、例えば、Ｂさんに対して、花やチューリップが好きであろうという仮定の下に、それらに関する発話を行うこともできるようになる。
【００９４】
また、本実施の形態による発話の生成では、ルールに基づいて発話の生成を行っており、場合によっては、不適切な発話、例えば、「ところで  杉を食べるのは好きですか？」といった発話が生成される可能性もあり得る。そのため、発話生成部２０は、例えば、生成した発話について、既存の文書における検索を行い、ヒットしなかった場合には、別の発話を生成するようにしてもよい。既存の文書は、例えば、インターネットで公開されている文書や、大規模コーパスなどであってもよい。また、発話を検索するとは、発話を検索キーとして検索を行うことであってもよい。また、発話に接続詞が含まれている場合には、その接続詞を除いて検索を行ってもよい。
【００９５】
また、本実施の形態では、オントロジーにおけるＰＮ値グラフを用いて、発話者の特徴の取得を行う場合について説明したが、そうでなくてもよい。発話者の特徴の取得を行わない場合には、対話装置１は、特徴取得部２４や特徴出力部２５を備えていなくてもよい。
【００９６】
また、本実施の形態では、取得された属性に応じてＰＮ値が更新される場合について説明したが、そうでなくてもよい。取得された属性に応じたＰＮ値の更新を行わない場合には、対話装置１は、属性取得部１６を備えていなくてもよい。
【００９７】
また、本実施の形態では、発話の生成に関する理由情報が生成され、出力される場合について説明したが、そうでなくてもよい。理由情報の生成や出力が行われない場合には、対話装置１は、理由情報生成部２２や理由情報出力部２３を備えていなくてもよい。
【００９８】
また、上記実施の形態では、対話装置１がスタンドアロンである場合について説明したが、対話装置１は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、受付部や出力部は、通信回線を介して入力や情報を受け付けたり、情報を出力したりしてもよい。
【００９９】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【０１００】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【０１０１】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【０１０２】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【０１０３】
また、上記実施の形態において、対話装置１に含まれる２以上の構成要素が通信デバイスや入力デバイス等を有する場合に、２以上の構成要素が物理的に単一のデバイスを有してもよく、または、別々のデバイスを有してもよい。
【０１０４】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。なお、上記実施の形態における対話装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、発話者の発話テキストを受け付ける受付部、発話テキストから名詞を抽出する抽出部、抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを判定する感情判定部、クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部、感情判定部による判定結果に応じて、判定結果に対応する発話ノードのＰＮ値を更新する更新部、オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部、発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、特定された発話ノードと特定された関連ノードとの対応関係に応じた発話パターンを特定し、特定した発話パターンと、特定された関連ノードとを用いて発話を生成する発話生成部、発話生成部によって生成された発話を出力する発話出力部として機能させるためのプログラムである。
【０１０５】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を受け付ける受付部、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には少なくとも含まれない。
【０１０６】
また、このプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
【０１０７】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【０１０８】
図９は、上記プログラムを実行して、上記実施の形態による対話装置１を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０１０９】
図９において、コンピュータシステム９００は、ＣＤ−ＲＯＭドライブ９０５を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４と、マイクと、スピーカとを備える。
【０１１０】
図１０は、コンピュータシステム９００の内部構成を示す図である。図１０において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮやＷＡＮ等への接続を提供する図示しないネットワークカードを含んでいてもよい。
【０１１１】
コンピュータシステム９００に、上記実施の形態による対話装置１の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１に記憶されて、ＣＤ−ＲＯＭドライブ９０５に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１、またはネットワークから直接、ロードされてもよい。また、ＣＤ−ＲＯＭ９２１に代えて他の記録媒体（例えば、ＤＶＤ等）を介して、プログラムがコンピュータシステム９００に読み込まれてもよい。
【０１１２】
プログラムは、コンピュータ９０１に、上記実施の形態による対話装置１の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【０１１３】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１１４】
以上より、本発明による対話装置等によれば、機械学習モデルを用いないで発話を生成することができるという効果が得られ、例えば、発話者との対話を自動的に行う装置等として有用である。
【符号の説明】
【０１１５】
１  対話装置
１１  音声認識部
１２  受付部
１３  抽出部
１４  感情判定部
１５  記憶部
１６  属性取得部
１７  発話ノード特定部
１８  更新部
１９  関連ノード特定部
２０  発話生成部
２１  発話出力部
２２  理由情報生成部
２３  理由情報出力部
２４  特徴取得部
２５  特徴出力部
【図１】
2020187500.tif 000003
【図２】
2020187500.tif 000004
【図３】
2020187500.tif 000005
【図４】
2020187500.tif 000006
【図５】
2020187500.tif 000007
【図６】
2020187500.tif 000008
【図７Ａ】
2020187500.tif 000009
【図７Ｂ】
2020187500.tif 000010
【図７Ｃ】
2020187500.tif 000011
【図７Ｄ】
2020187500.tif 000012
【図７Ｅ】
2020187500.tif 000013
【図７Ｆ】
2020187500.tif 000014
【図８】
2020187500.tif 000015
【図９】
2020187500.tif 000016
【図１０】
2020187500.tif 000017
【手続補正書】
【提出日】令和1年11月20日(2019.11.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
発話者の発話テキストを受け付ける受付部と、
発話テキストから名詞を抽出する抽出部と、
前記抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを、抽出された名詞と係り受け関係にある形態素がポジティブであるのかネガティブであるのかによって、または、抽出された名詞を含む発話テキストの全体もしくは発話テキストの一文についての感情解析の結果によって判定する感情判定部と、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、前記抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部と、
前記感情判定部による判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新する更新部と、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部と、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成する発話生成部と、
前記発話生成部によって生成された発話を出力する発話出力部と、を備えた対話装置。
【請求項２】
前記関連ノード特定部は、中立よりもポジティブ側のＰＮ値に対応する発話ノードに関連する関連ノードを特定する、請求項１記載の対話装置。
【請求項３】
前記関連ノード特定部は、中立であるＰＮ値に対応する関連ノードを特定する、請求項１または請求項２記載の対話装置。
【請求項４】
前記発話生成部は、発話ノードと関連ノードとの対応関係に応じた接続詞を有する発話を生成する、請求項１から請求項３のいずれか記載の対話装置。
【請求項５】
前記更新部は、前記オントロジーにおいて、前記感情判定部による判定結果に対応する発話ノードのＰＮ値と共に、当該発話ノードとリンクしているノードのＰＮ値も更新する、請求項１から請求項４のいずれか記載の対話装置。
【請求項６】
前記発話生成部による発話の生成で用いられた関連ノードと、当該関連ノードに対応する発話ノードとの対応関係に応じて、当該発話の生成に関する理由である理由情報を生成する理由情報生成部と、
前記理由情報を出力する理由情報出力部と、をさらに備えた、請求項１から請求項５のいずれか記載の対話装置。
【請求項７】
前記オントロジーの各ノードには、属性が対応付けられており、
単語と、発話者の属性とを対応付けた情報を用いて、発話テキストに含まれる単語に対応する属性を取得することによって、当該発話テキストに対応する発話者の属性を取得する属性取得部をさらに備え、
前記更新部は、前記属性取得部によって取得された属性の対応付けられているノードのＰＮ値を変更する、請求項１から請求項６のいずれか記載の対話装置。
【請求項８】
発話テキストの受け付けと、発話の出力とが繰り返された後に、前記オントロジーにおけるＰＮ値のグラフであるＰＮ値グラフを用いて、発話者の特徴を取得する特徴取得部と、
前記特徴取得部によって取得された、発話者の特徴を出力する特徴出力部と、をさらに備えた、請求項１から請求項７のいずれか記載の対話装置。
【請求項９】
前記受付部は、複数の発話者の発話テキストを受け付け、
前記オントロジーにおいて、発話者ごとにＰＮ値が対応付けられており、
前記更新部は、複数の発話者について、発話テキストの受け付けと、発話の出力とが繰り返された後に、前記オントロジーにおける、第１の発話者に関するＰＮ値のグラフであるＰＮ値グラフと、第２の発話者に関するＰＮ値グラフとが部分一致する場合に、前記第１の発話者のＰＮ値グラフにおけるＰＮ値が初期値である部分について、前記第２の発話者のＰＮ値グラフにおける対応する部分の初期値以外のＰＮ値に応じて更新する、請求項１から請求項８のいずれか記載の対話装置。
【請求項１０】
発話者の発話テキストを受け付けるステップと、
発話テキストから名詞を抽出するステップと、
抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを、抽出された名詞と係り受け関係にある形態素がポジティブであるのかネガティブであるのかによって、または、抽出された名詞を含む発話テキストの全体もしくは発話テキストの一文についての感情解析の結果によって判定するステップと、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、抽出された名詞に対応するノードである発話ノードを特定するステップと、
前記判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新するステップと、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定するステップと、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成するステップと、
前記生成された発話を出力するステップと、を備えた発話生成方法。
【請求項１１】
コンピュータを、
発話者の発話テキストを受け付ける受付部、
発話テキストから名詞を抽出する抽出部、
前記抽出部によって抽出された名詞に関して、発話者の感情がポジティブであるのか、ネガティブであるのかを、抽出された名詞と係り受け関係にある形態素がポジティブであるのかネガティブであるのかによって、または、抽出された名詞を含む発話テキストの全体もしくは発話テキストの一文についての感情解析の結果によって判定する感情判定部、
クラスまたはインスタンスであるノードの階層構造を有しており、ノードごとに、感情がポジティブ、ネガティブである程度を示すＰＮ値が対応付けられているオントロジーにおいて、前記抽出部によって抽出された名詞に対応するノードである発話ノードを特定する発話ノード特定部、
前記感情判定部による判定結果に応じて、当該判定結果に対応する発話ノードのＰＮ値を更新する更新部、
前記オントロジーにおいて、ＰＮ値を用いて、発話ノードに関連したノードである関連ノードを特定する関連ノード特定部、
発話ノードと関連ノードとの対応関係に応じた複数の発話パターンから、前記特定された発話ノードと前記特定された関連ノードとの対応関係に応じた発話パターンを特定し、当該特定した発話パターンと、前記特定された関連ノードとを用いて発話を生成する発話生成部、
前記発話生成部によって生成された発話を出力する発話出力部として機能させるためのプログラム。