(57)【要約】【課題】できる限り自然な対話の中で、固定的な対話ノードの間に動的な対話ノードを挿入する対話プログラム、サーバ及び方法を提供する。【解決手段】複数の固定対話ノードを蓄積する対話シナリオ蓄積手段と、対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積手段と、第１の固定対話ノードの文からの行きの遷移確率が高い所定数の動的対話ノードを検索する動的対話ノード検索手段と、検索された各動的対話ノードの文から第２の固定対話ノードへの戻りの遷移確率を算出する戻り遷移確率算出手段と、行きの遷移確率と戻りの遷移確率との組み合わせが、所定条件下で最大となる動的対話ノードを選択する動的対話ノード選択手段と、第１の固定対話ノードから、選択された動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する対話シナリオ進行手段としてコンピュータを機能させる。【選択図】図１
2014191271.tif 000002
【特許請求の範囲】
【請求項１】
ユーザと対話的にシナリオを進行するようにコンピュータを機能させる対話プログラムであって、
ユーザへ明示すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積手段と、
前記対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積手段と、
前記動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する動的対話ノード選択手段と、
第１の固定対話ノードから、選択された前記動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する対話シナリオ進行手段と
してコンピュータを機能させることを特徴とする対話プログラム。
【請求項２】
前記動的対話ノード選択手段は、
前記動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）が高い所定数の動的対話ノードを検索する動的対話ノード検索手段と、
検索された各動的対話ノードの文から第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）を算出する戻り遷移確率算出手段と、
第１の固定対話ノードからの行きの遷移確率と、第２の固定対話ノードからの戻りの遷移確率との組み合わせが、所定条件下で最大となる動的対話ノードを決定する動的対話ノード決定手段と
を含むようにコンピュータを機能させることを特徴とする請求項１に記載の対話プログラム。
【請求項３】
前記動的対話ノード検索手段及び前記戻り遷移確率算出手段における遷移確率は、固定対話ノードの文と、動的対話ノードの文との間のコサイン距離に基づくものであるようにコンピュータを機能させることを特徴とする請求項２に記載の対話プログラム。
【請求項４】
対話コーパスにおける出現頻度が高い重要語（名詞）を蓄積した重要語辞書を用いて、前記コサイン距離は、各文の中から抽出された重要語及びそのカテゴリに応じて算出されるようにコンピュータを機能させることを特徴とする請求項３に記載の対話プログラム。
【請求項５】
第１の固定対話ノード毎に、そのノードに含まれる文の次に、動的対話ノードに基づく質問を挿入することの適否を表す質問適合度が付与されており、
第１の固定対話ノードの前記質問適合度が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する挿入判定手段を更に有し、
前記動的対話ノード検索手段は、前記挿入判定手段によって真と判定された場合にのみ機能する
ようにコンピュータを機能させることを特徴とする請求項１から４のいずれか１項に記載の対話プログラム。
【請求項６】
第１の固定対話ノードの文に対するユーザの回答の内容が、肯定的か又は否定的かを判定するするポジネガ判定手段を更に有し、
前記挿入判定手段は、前記質問適合度に、ポジ／ネガそれぞれに割り当てられた係数を乗算し、その乗算値が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する
ようにコンピュータを機能させることを特徴とする請求項１から５のいずれか１項に記載の対話プログラム。
【請求項７】
ユーザ操作に基づく端末との間で、対話的にシナリオを進行する対話サーバであって、
前記端末へ送信すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積手段と、
前記対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積手段と、
前記動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する動的対話ノード選択手段と、
第１の固定対話ノードから、選択された前記動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する対話シナリオ進行手段と
を有することを特徴とする対話サーバ。
【請求項８】
装置を用いて、ユーザと対話的にシナリオを進行する対話方法であって、
ユーザへ明示すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積部と、
前記対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積部と、
前記動的対話ノード蓄積部から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する第１のステップと、
第１の固定対話ノードから、選択された前記動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する第２のステップと
を有することを特徴とする対話方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話シナリオを用いてユーザと対話する対話システムの技術に関する。
【背景技術】
【０００２】
人間に対して自然な対話を実現した対話システムが、特にスマートフォンやタブレット端末で一般的に普及しつつある。その中でも、対話シナリオに従ってユーザとの間で交互に対話プロセスを進めることによって、ユーザから必要な情報を取得する技術がある（例えば特許文献１参照）。この技術によれば、共通の対話シナリオを備える対話システム間で、対話プロセスの遷移を可能とし、現在進行中の対話プロセスを、遷移後の対話システムで継続することができる。あくまで、事前に設定された固定的な対話シナリオに従って実行される。
【０００３】
また、対話シナリオにおける予測範囲以外の任意の入力に対しても、適切に応答することができる技術もある（例えば特許文献２参照）。この技術によれば、対話ノードを大量に用意し、現在の対話ノードに対して遷移確率が最大となる対話ノードへ遷移することによって、自然な対話を進めることができる。遷移確率は、過去の判別結果も考慮されて更新されていく。そのために、システム管理者が固定的な対話シナリオを作成する手間が少なくなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２１２８０２号公報
【特許文献２】特開２００９−１９８６１４号公報
【非特許文献】
【０００５】
【非特許文献１】「ベクトル空間法による文書の類似度の算出」、[online]、［平成２５年２月２４日検索］、インターネット＜URL:http://www.gifu-nct.ac.jp/elec/deguchi/sotsuron/hayashi/node20.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された技術によれば、固定的な対話シナリオであるために、長期的に使用された場合、ユーザが飽きやすいという問題がある。そのような問題に対しては、対話システムの運用者が、対話シナリオの分岐やセリフのバリエーションを増やすことが必要となり、人手がかかることとなる。また、特許文献２に記載された技術によれば、対話シナリオの遷移の全てが、確率モデルに依存するために、対話シナリオの部分的な修正が難しいという問題もある。
【０００７】
これに対し、発明者らは、特許文献１に基づく固定的な対話ノードの進行の間に、特許文献２に基づく遷移確率が最大となる動的な対話ノードを挿入することも考えた。動的な対話ノードとしては、ユーザの情報を取得するべく、例えば、ユーザの趣味や嗜好などプロフィール情報を収集するための会話や、ユーザが興味ありそうな情報提供する会話を挿入する。これによって、固定的な対話シナリオが部分的に且つ自動的に修正され、対話のバリエーションを増やす手間も少なくなる。
【０００８】
しかしながら、固定的な第１の対話ノードから、遷移確率の高い動的な対話ノードへ、自然な感じでシナリオを進めることができたとしても、その動的な対話ノードから、固定的な第２の対話ノードへ戻る際に、急に、対話の自然性が落ちることが発生する。即ち、動的な対話ノードと、戻り先の固定的な第２の対話ノードとの間で、会話の関連性が無い又は少ないことが原因となっている。
【０００９】
そこで、本発明は、できる限り自然な対話の中で、固定的な対話ノードの間に動的な対話ノードを挿入することができる対話プログラム、サーバ及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によれば、ユーザと対話的にシナリオを進行するようにコンピュータを機能させる対話プログラムであって、
ユーザへ明示すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積手段と、
対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積手段と、
動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する動的対話ノード選択手段と、
第１の固定対話ノードから、選択された動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する対話シナリオ進行手段と
してコンピュータを機能させることを特徴とする。
【００１１】
本発明の対話プログラムにおける他の実施形態によれば、
動的対話ノード選択手段は、
動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）が高い所定数の動的対話ノードを検索する動的対話ノード検索手段と、
検索された各動的対話ノードの文から第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）を算出する戻り遷移確率算出手段と、
第１の固定対話ノードからの行きの遷移確率と、第２の固定対話ノードからの戻りの遷移確率との組み合わせが、所定条件下で最大となる動的対話ノードを決定する動的対話ノード決定手段と
を含むようにコンピュータを機能させることも好ましい。
【００１２】
本発明の対話プログラムにおける他の実施形態によれば、
動的対話ノード検索手段及び戻り遷移確率算出手段における遷移確率は、固定対話ノードの文と、動的対話ノードの文との間のコサイン距離に基づくものであるようにコンピュータを機能させることも好ましい。
【００１３】
本発明の対話プログラムにおける他の実施形態によれば、
対話コーパスにおける出現頻度が高い重要語（名詞）を蓄積した重要語辞書を用いて、コサイン距離は、各文の中から抽出された重要語及びそのカテゴリに応じて算出されるようにコンピュータを機能させることも好ましい。
【００１４】
本発明の対話プログラムにおける他の実施形態によれば、
第１の固定対話ノード毎に、そのノードに含まれる文の次に、動的対話ノードに基づく質問を挿入することの適否を表す質問適合度が付与されており、
第１の固定対話ノードの質問適合度が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する挿入判定手段を更に有し、
動的対話ノード検索手段は、挿入判定手段によって真と判定された場合にのみ機能する
ようにコンピュータを機能させることも好ましい。
【００１５】
本発明の対話プログラムにおける他の実施形態によれば、
第１の固定対話ノードの文に対するユーザの回答の内容が、肯定的か又は否定的かを判定するするポジネガ判定手段を更に有し、
挿入判定手段は、質問適合度に、ポジ／ネガそれぞれに割り当てられた係数を乗算し、その乗算値が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する
ようにコンピュータを機能させることも好ましい。
【００１６】
本発明によれば、ユーザ操作に基づく端末との間で、対話的にシナリオを進行する対話サーバであって、
端末へ送信すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積手段と、
対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積手段と、
動的対話ノード蓄積手段から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する動的対話ノード選択手段と、
第１の固定対話ノードから、選択された動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する対話シナリオ進行手段と
を有することを特徴とする。
【００１７】
本発明によれば、装置を用いて、ユーザと対話的にシナリオを進行する対話方法であって、
ユーザへ明示すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けた対話シナリオ蓄積部と、
対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する動的対話ノード蓄積部と、
動的対話ノード蓄積部から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する第１のステップと、
第１の固定対話ノードから、選択された動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する第２のステップと
を有することを特徴とする。
【発明の効果】
【００１８】
本発明の対話プログラム、サーバ及び方法によれば、動的対話ノードから固定対話ノードへ戻る際の遷移確率を考慮することによって、できる限り自然な対話の中で、固定的な対話ノードの間に動的な対話ノードを挿入することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明における対話システムの構成図である。
【図２】対話シナリオ蓄積部に記憶された複数の固定対話ノードを表す説明図である。
【図３】固定対話ノード間に挿入すべき動的対話ノードを検索する説明図である。
【図４】検索された各動的対話ノードについて、戻りの遷移確率を算出した説明図である。
【図５】動的対話ノードに対する遷移確率を総当たり的に算出した説明図である。
【図６】図２の固定対話ノード間に、動的対話ノードが挿入された最終的な対話シナリオを表す説明図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００２１】
図１は、本発明における対話システムの構成図である。
【００２２】
図１によれば、対話サーバモジュールプログラム１と、端末モジュールプログラム２とから構成されている。例えば、対話サーバモジュールプログラム１は、ユーザと対話的にシナリオを進行するものであって、例えばサーバによって実行される。一方で、端末モジュールプログラム２は、スマートフォンやタブレット端末によって実行されるものであって、ネットワークを介してサーバと通信する。対話サーバモジュールプログラム１は、端末２を通じて、ユーザと対話する。尚、両モジュールプログラム１及び２が、単体装置の１つのコンピュータによって一体的に実行されるものであってもよい。本発明によれば、サーバモジュールプログラムと端末モジュールプログラムとそれぞれが実行されるべき対象装置が、特定されるものではない。
【００２３】
端末モジュールプログラム２は、ユーザに対する入力デバイス及び出力デバイスを有する。入力デバイスがマイクである場合、入力音声処理部は、マイクによって取得された音声信号を回答文に変換し、その回答文を対話サーバモジュールプログラム１へ送信する。また、出力デバイスがスピーカである場合、対話サーバモジュールプログラム１から受信した回答文を音声信号に変換し、その音声信号がスピーカから出力される。
【００２４】
図１によれば、対話サーバモジュールプログラム１は、対話シナリオ蓄積部１０と、動的対話ノード蓄積部１１と、動的対話ノード選択部１２と、対話シナリオ進行部１３と、質問文送信部１４と、回答文受信部１５と、ポジネガ判定部１６と、挿入判定部１７とを有する。尚、質問文送信部１４は、対話シナリオ進行部１３に基づくユーザへの質問文を、端末モジュールプログラム２へ送信する。また、回答文受信部１５は、端末モジュールプログラム２から、ユーザからの回答文を受信する。
【００２５】
［対話シナリオ蓄積部１０］
対話シナリオ蓄積部１０は、ユーザへ明示すべき文を対応付けた複数の固定対話ノードを蓄積し、第１の固定対話ノードから第２の固定対話ノードへシナリオとして結び付けている。「対話シナリオ」とは、質問及び回答からなる対話ノードをツリー状に構成したものである。
【００２６】
図２は、対話シナリオ蓄積部に記憶された複数の固定対話ノードを表す説明図である。
【００２７】
図２によれば、各固定対話ノードの結び付きによって、以下のようにシナリオが進んでいる。
（システム）「予定を入れてください」
（ユーザ）  「土曜日８時に軽井沢でゴルフをする」
（システム）「プレー開始２時間前にアラームを設定しますか？」
（ユーザ）  「はい」
例えば、システムにおける「予定を入れてください」の質問に対して、ユーザが何も返答しなければ、このシナリオは終了することなる。このような対話シナリオは、固定対話ノードの結び付きによって、対話シナリオ蓄積部１０に予め蓄積されている。
【００２８】
［動的対話ノード蓄積部１１］
動的対話ノード蓄積部１１は、対話ノード同士の間に挿入可能な複数の動的対話ノードを蓄積する。動的対話ノードも、固定対話ノードと構造としては同じであるが、対話ノード同士が予め結び付いているものではない。
【００２９】
尚、固定対話ノード及び動的対話ノードの各々は、ユーザへの質問に対する複数の回答によって短い対話シナリオを構成している。従って、１つのノードの中でも、質問と回答とがツリー状に対話シナリオとして構成されている。
【００３０】
ここで、オプション的に、ポジネガ判定部１６及び挿入判定部１７を更に備えるものであってもよい。ポジネガ判定部１６及び挿入判定部１７は、固定対話ノードの間に、動的対話ノードを挿入してよいか否かを判定する。即ち、ユーザの対話の反応によっては、動的対話ノードを挿入すべきでない場合もあるからである。例えば、ユーザがネガティブな反応をする場合、あえて、動的対話ノードを挿入することによって、ユーザに更なる質問をすることは好ましくない。以下では、２つの判定方法について説明する。
【００３１】
＜挿入判定部１７のみ＞
第１の固定対話ノード毎に、そのノードに含まれる文の次に、動的対話ノードに基づく質問を挿入することの適否を表す質問適合度が付与されている。例えば、以下のように、質問適合度が付与されている。
（固定対話ノード）      （質問適用度）
「予定を入れてください」：      １
「具合が悪いのですか」  ：      ０．５
「ゴルフは好きですか」  ：      ２
質問適用度とは、その固定対話ノードの対話の後に、ユーザに対して更なる質問をすることが適切である場合ほど、高い値となる。例えば「ゴルフは好きですか」のような固定対話ノードが実行される場合には、ユーザに比較的余裕がある状態であって、質問適用度は高い値となる。一方で、その固定対話ノードの対話の後に、更なる質問をすることが適切でない場合ほど、低い値となる。例えば「具合が悪いのですか」のような固定対話ノードが実行される場合には、ユーザに比較的余裕がない状態であって、質問適用度は低い値となる。
【００３２】
ここで、挿入判定部１７は、第１の固定対話ノードの質問適合度が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する。所定閾値は、例えば「０．８」であってもよい。その場合、「具合が悪いのですか」の質問の後に、動的対話ノードが挿入されることはない。
【００３３】
最終的に、挿入判定部１７によって、真と判定された場合にのみ、動的対話ノード選択部１２が実行される。
【００３４】
＜ポジネガ判定部１６＋挿入判定部１７＞
ポジネガ判定部１６は、第１の固定対話ノードの文に対するユーザの回答の内容が、肯定的か又は否定的かを判定する。ポジネガ判定部１６は、評価語に、ポジティブ（肯定的）／ネガティブ（否定的）の意味属性が対応付けられた評価極性辞書を有する。例えば以下のようなものである。
（評価語）      （意味属性）
いじめる        ネガティブ
結婚            ポジティブ
貧乏            ネガティブ
よろこぶ        ポジティブ
また、意味属性には、以下のような係数が対応付けられている。
ポジティブ（肯定的）＝２
ネガティブ（否定的）＝０．５
【００３５】
次に、挿入判定部１７によれば、前述と同様に、第１の固定対話ノード毎に、そのノードに含まれる文の次に、動的対話ノードに基づく質問を挿入することの適否を表す質問適合度が付与されている。そして、挿入判定部１７は、その質問適合度に、ポジ／ネガそれぞれに割り当てられた係数を乗算する。
（対話例１）
「予定を入れてください」：質問適用度＝１
「日曜日に結婚式がある」：ポジティブ＝２
質問適用度＝１×２＝２
（対話例２）
「具合が悪いのですか」  ：質問適用度＝０．５
「いじめられた」        ：ネガティブ＝０．５
質問適用度＝０．５×０．５＝０．２５
（対話例３）
「ゴルフは好きですか」  ：質問適用度＝２
「貧乏だからできない」  ：ネガティブ＝０．５
質問適用度＝２×０．５＝１
ここで、挿入判定部１７は、第１の固定対話ノードの質問適合度が所定閾値以上の場合にのみ、第１の固定対話ノードの次に動的対話ノードを挿入すると判定する。所定閾値は、例えば「０．８」であってもよい。その場合、「いじめられた」の回答の後に、動的対話ノードが挿入されることはない。一方で、「日曜日に結婚式がある」「貧乏だからできない」の後には、動的対話ノードが挿入されることとなる。
【００３６】
最終的に、挿入判定部１７によって、真と判定された場合にのみ、動的対話ノード選択部１２が実行される。
【００３７】
［動的対話ノード選択部１２］
動的対話ノード選択部１２は、動的対話ノード検索部１２１と、戻り遷移確率算出部１２２と、動的対話ノード決定部１２３とを有する。
【００３８】
＜動的対話ノード検索部１２１＞
動的対話ノード検索部１２１は、動的対話ノード蓄積部１１から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）が高い所定数の動的対話ノードを検索する。
【００３９】
図３は、固定対話ノード間に挿入すべき動的対話ノードを検索する説明図である。
【００４０】
図３によれば、７つの動的対話ノードが、動的対話ノード蓄積部１１に蓄積されているとする。［］は、名詞に属するカテゴリを表す。
（Ｓ１）ゴルフ［スポーツ］は趣味ですか？
（Ｓ２）軽井沢［場所］で働いていますか？
（Ｓ３）よく軽井沢［場所］でスポーツ［スポーツ］をしますか？
（Ｓ４）＊＊＊［人名］は友達ですか？
（Ｓ５）毎日［時間］電車［物］に乗る時、アラーム［時間］を設定しますか？
（Ｓ６）どこか具合が悪いですか？
（Ｓ７）いつも休日［時間］に早起き［目覚まし］でゴルフ［スポーツ］をしますか？
【００４１】
各文は、形態素に区分された後、対話コーパスにおける出現頻度が高い重要語（名詞）を蓄積した重要語辞書を用いて、重要語が検出される。勿論、あえて重要語として検出することなく、形態素の名詞を全て、コサイン距離を算出するための要素としてもよい。コサイン距離は、各文の中から抽出された重要語及びその名詞種別に応じて算出される。例えば以下のような概念式で算出される。
固定対話ノードの文の重要語の特徴ベクトル：Ｄ
動的対話ノードの文の重要語の特徴ベクトル：Ｅ
２つの文の類似度：sim(Ｄ,Ｅ)
sim(Ｄ,Ｅ)＝cosθ＝（Ｄ・Ｅ）／(|Ｄ||Ｅ|)
コサイン距離は、同じ単語同士である場合には類似度重みを１とし、同じカテゴリ同士である場合にも類似度重みを１とする。勿論、同じ単語カテゴリの類似度重みは、０〜１の間の値で設定可能である。
【００４２】
ここで、動的対話ノード検索部１２１は、固定対話ノードの回答文「土曜日８時に軽井沢でゴルフをする」と、各動的対話ノードの質問文との間のコサイン距離を算出する。休日［時間］と土曜日［時間］との場合、同じカテゴリ同士であるので、類似度重みは１とする。
【００４３】
例えば「予定を入れてください」及び「土曜日８時に軽井沢でゴルフをする」について、以下の重要語が検出される。
「土曜日」：［時間］
「軽井沢」：［場所］
「ゴルフ」：［スポーツ］
「予定」  ：［予定］
【００４４】
ここで、「予定を入れてください」及び「土曜日８時に軽井沢でゴルフをする」に対する、各動的対話ノードのコサイン距離を算出する。
（Ｓ１）ゴルフ［スポーツ］は趣味ですか？
＝「ゴルフ」：コサイン距離＝０．５０
（Ｓ２）軽井沢［場所］で働いていますか？
＝「軽井沢」：コサイン距離＝０．５０
（Ｓ３）よく軽井沢でスポーツをしますか？
＝「軽井沢」「スポーツ」：コサイン距離＝０．７１
（Ｓ４）＊＊＊［人名］は友達ですか？
＝＊＊＊：コサイン距離＝０．０
（Ｓ５）毎日［時間］電車［乗物］に乗る時、アラーム［時間］を設定しますか？
＝「毎日」「電車」「アラーム」：コサイン距離＝０．２９
（Ｓ６）どこか具合が悪いですか？
＝コサイン距離＝０．０
（Ｓ７）いつも休日［時間］に早起き［目覚まし］でゴルフ［スポーツ］をしますか？
＝「休日」「早起き」「ゴルフ」：コサイン距離＝０．５８
【００４５】
図３によれば、例えば、検索されるコサイン距離の閾値「０．５」が設定されているとする。この場合、Ｓ１、Ｓ２、Ｓ３及びＳ７が、動的対話ノードの候補として検索される。尚、文の間のコサイン距離の算出方法としては、ベクトル空間法を用いた類似度の算出方法がある（例えば非特許文献１参照）。
【００４６】
＜戻り遷移確率算出部１２２＞
戻り遷移確率算出部１２２は、検索された各動的対話ノードの文から第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）を算出する。戻り遷移確率算出部１２２も、動的対話ノード検索部１２１と同様に、遷移確率は、固定対話ノードの文と、動的対話ノードの文との間のコサイン距離に基づくものである。
【００４７】
図４は、検索された各動的対話ノードについて、戻りの遷移確率を算出した説明図である。
【００４８】
ここで、戻り遷移確率算出部１２２は、各動的対話ノードの質問文と、戻り（第２）の固定対話ノードの質問文「プレー開始２時間前にアラームを設定しますか？」との間のコサイン距離を算出する。例えば以下のように算出される。
「プレー開始２時間前にアラームを設定しますか？」＝「プレー」「時間」「アラーム」
（Ｓ１）ゴルフ［スポーツ］は趣味ですか？
＝「ゴルフ」：コサイン距離＝０．５８
（Ｓ２）軽井沢［場所］で働いていますか？
＝「軽井沢」：コサイン距離＝０．０
（Ｓ３）よく軽井沢［場所］でスポーツ［スポーツ］をしますか？
＝「軽井沢」「スポーツ」：コサイン距離＝０．４１
（Ｓ７）いつも休日［時間］に早起き［目覚まし］でゴルフ［スポーツ］をしますか？
＝「休日」「早起き」「ゴルフ」：コサイン距離＝１．０
【００４９】
ここでは、「ゴルフ」と「プレー」とは、［スポーツ］という同一のカテゴリに属する。また、「２時間」と「休日」とは、［時間］という同一のカテゴリに属する。「早起き」と「アラーム」とは、「目覚まし」という同一のカテゴリに属する。同一カテゴリの単語同士は、コサイン距離が短くなる。そうすると、結果的に、「いつも休日にゴルフをしますか？」と、「プレー開始２時間前にアラームを設定しますか？」との文同士の間のコサイン距離が、最も短く（高い値）となる。
【００５０】
＜動的対話ノード決定部１２３＞
動的対話ノード決定部１２３は、第１の固定対話ノードからの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードからの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する。例えば、所定条件を乗算値として、行きの遷移確率Ｐ（Ａ，Ｓｉ）と戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との乗算値が、最大となる動的対話ノードを選択するものであってもよい。
Ｐ（Ａ，Ｓｉ）×Ｐ（Ｓｉ，Ｂ）
（Ｓ１）ゴルフは趣味ですか？                  ＝０．５０×０．５８＝０．２９
（Ｓ２）軽井沢で働いていますか？              ＝０．５０×０＝０
（Ｓ３）よく軽井沢でスポーツをしますか？      ＝０．７１×０．４１＝０．２９
★（Ｓ７）いつも休日に早起きでゴルフをしますか？＝０．５８×１．００＝０．５８
最終的に、Ｓ７の動的対話ノードに決定される。
【００５１】
また、行きの遷移確率Ｐ（Ａ，Ｓｉ）に重み付けて、戻り遷移確率Ｐ（Ｓｉ，Ｂ）との乗算値であってもよい。更に、行きの遷移確率Ｐ（Ａ，Ｓｉ）と戻り遷移確率Ｐ（Ｓｉ，Ｂ）との加算値であってもよい。ここでの「所定条件下で最大となる」とは、様々な算出方法を採用することができる。
【００５２】
＜動的対話ノード選択部１２の上位概念的な算出方法＞
前述した動的対話ノード選択部１２は、３つのステップを実行するものとして説明したが、上位概念的に、最初から、行きの遷移確率と戻りの遷移確率とを組み合わせて、動的対話ノードを選択するものであってよい。即ち、動的対話ノード選択部１２は、動的対話ノード蓄積部１１から、第１の固定対話ノードの文からの行きの遷移確率Ｐ（Ａ，Ｓｉ）と、第２の固定対話ノードへの戻りの遷移確率Ｐ（Ｓｉ，Ｂ）との組み合わせが、所定条件下で最大となる動的対話ノードを選択する。
【００５３】
図５は、動的対話ノードに対する遷移確率を総当たり的に算出した説明図である。
【００５４】
図５によれば、動的対話ノード選択部１２は、固定対話ノードの回答文「土曜日８時に軽井沢でゴルフをする」と、全ての動的対話ノードの質問文との間のコサイン距離を算出する。また、動的対話ノード選択部１２は、全ての動的対話ノードの質問文と、戻り（第２）の固定対話ノードの質問文「プレー開始２時間前にアラームを設定しますか？」との間のコサイン距離を算出する。そして、各動的対話ノードについて、例えば２つのコサイン距離の乗算値（加算値や所定条件）を算出する。そして、例えば乗算値が最大となる動的対話ノードが選択される。
【００５５】
［対話シナリオ進行部１３］
対話シナリオ進行部１３は、第１の固定対話ノードから、選択された動的対話ノードを挿入し、第２の固定対話ノードへ、シナリオを進行する。
【００５６】
図６は、図２の固定対話ノード間に、動的対話ノードが挿入された最終的な対話シナリオを表す説明図である。
【００５７】
図６によれば、以下のように対話シナリオが進行している。
（システム）「予定を入れてください」（固定対話ノード）
（ユーザ）  「土曜日８時に軽井沢でゴルフをする」
（システム）「いつも休日に早起きでゴルフをしますか？」（動的対話ノード）
（ユーザ）  「いつもは平日だなあ」
（システム）「プレー開始２時間前にアラームを設定しますか？」（固定対話ノード）
（ユーザ）  「はい」
ここで、対話システムは、動的対話ノードによって、当該ユーザは「ゴルフを普段平日にしている」という情報（ユーザの趣味や嗜好などプロフィール情報）を収集することができる。
【００５８】
以上、詳細に説明したように、本発明の対話プログラム、サーバ及び方法によれば、動的対話ノードから固定対話ノードへ戻る際の遷移確率を考慮することによって、できる限り自然な対話の中で、固定的な対話ノードの間に動的な対話ノードを挿入することができる。
【００５９】
尚、本発明は、ユーザ操作に基づく端末のディスプレイに「キャラクタ・エージェント」を表示し、ユーザとエージェントとが音声による対話を進める、音声対話システムに適する。勿論、本発明は、音声対話に限定されるものではなく、テキスト対話であってもよい。
【００６０】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【００６１】
１  対話サーバモジュールプログラム
１０  対話シナリオ蓄積部
１１  動的対話ノード蓄積部
１２  動的対話ノード選択部
１２１  動的対話ノード検索部
１２２  戻り遷移確率算出部
１２３  動的対話ノード決定部
１３  対話シナリオ進行部
１４  質問文送信部
１５  回答文受信部
１６  ポジネガ判定部
１７  挿入判定部
２  端末モジュールプログラム
【図１】
2014191271.tif 000003
【図２】
2014191271.tif 000004
【図３】
2014191271.tif 000005
【図４】
2014191271.tif 000006
【図５】
2014191271.tif 000007
【図６】
2014191271.tif 000008