(57)【要約】【課題】ユーザからの入力に応じた応答文を出力する対話装置、対話方法、及びプログラムに関し、話題が唐突に切り替わるのを抑制することによって、ユーザと自然に対話できる対話装置を提供する。【解決手段】対話装置１００は、互いに異なるオートマトンの状態に対応付けられた複数のルールデータ１１０を記憶し、オートマトンの状態の遷移先の状態が定義されたデータベース１０１を備え、所定の対象から入力された入力発話情報１１５を取得し、複数のルールデータ１１０から、オートマトンの現在の状態を含む所定の状態と、取得された入力発話情報１１５とに応じて、応答ルールデータ１１３を選択する。また、オートマトンの状態を順次記憶し、所定の状態は記憶された複数の状態を含み、複数のルールデータ１１０のうちの、対応するオートマトンの状態が記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、応答ルールデータ１１３として優先的に選択する。【選択図】図１
2020119221.tif 000002
【特許請求の範囲】
【請求項１】
応答文をそれぞれ含み、互いに異なるオートマトンの状態に対応付けられた複数のルールデータを記憶し、前記オートマトンの状態の遷移先の状態が定義されたデータベースと、
所定の対象から入力された入力発話情報を取得する取得手段と、
前記複数のルールデータから、前記オートマトンの現在の状態を含む所定の状態と、前記取得された入力発話情報とに応じて、応答ルールデータを選択し、選択した応答ルールデータに含まれる前記応答文を前記所定の対象に対して出力する応答文出力手段と、
前記オートマトンの状態を順次記憶するための記憶手段と、を備え、
前記所定の状態は、前記記憶手段に記憶された複数の状態を含み、
前記応答文出力手段は、前記複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、前記応答ルールデータとして優先的に選択する、
対話装置。
【請求項２】
前記応答文出力手段は、
前記複数のルールデータのうちの、前記オートマトンの現在の状態を含む所定の状態に対応する前記複数のルールデータよりも少ない複数のルールデータから、前記取得された入力発話情報に応じて、前記応答ルールデータの候補となる応答候補の複数のルールデータを検索して取得するデータ取得手段を有し、
前記取得した応答候補の複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示す応答候補ルールデータを、前記応答ルールデータとして優先的に選択する、
請求項１に記載の対話装置。
【請求項３】
前記応答文出力手段は、
前記応答ルールデータを選択するための指標を示すスコアを、前記ルールデータ毎に算出し、前記複数のルールデータのうちの、前記記憶手段に記憶された複数の状態のうちのより過去に記憶された状態と同じ状態を示す前記オートマトンの状態に対応する前記ルールデータが前記応答ルールデータとして選択されにくくなるように、前記スコアを算出する、
請求項１又は２に記載の対話装置。
【請求項４】
前記複数のルールデータの各々は、前記オートマトンの状態及び前記応答文に対応付けられた、前記所定の対象から入力されると想定される想定入力発話文を含み、
前記取得された入力発話情報に基づいて、前記所定の対象の発話文中に含まれる入力単語を抽出する抽出手段と、
抽出された前記入力単語毎に重みを設定する重み設定手段と、
前記入力単語毎に設定された前記重みに応じて、前記入力単語を含む前記所定の対象の発話に対する前記想定入力発話文の類似度を示す類似度パラメータを算出する類似度パラメータ算出手段と、をさらに備え、
前記応答文出力手段は、前記設定された前記類似度パラメータに応じて、前記スコアを算出する、
請求項３に記載の対話装置。
【請求項５】
前記選択された応答ルールデータに基づいて生成された応答文を過去所定回数分記憶する応答文記憶手段を更に備え、
前記応答文出力手段は、前記応答文記憶手段を参照することにより、前記応答候補ルールデータからの前記応答ルールデータの選択を、同じ応答文が繰り返し出力されないように、行う、請求項１乃至４の何れか１項に記載の対話装置。
【請求項６】
マイクロフォンをさらに備え、
前記取得手段は、前記マイクロフォンを介して入力された前記所定の対象の音声に基づいて、前記入力発話情報を取得する、
請求項１乃至５のいずれか１項に記載の対話装置。
【請求項７】
スピーカをさらに備え、
前記応答文出力手段は、前記応答文に対応する音声を、前記スピーカを介して前記所定の対象に対して出力する、
請求項１乃至６の何れか1項に記載の対話装置。
【請求項８】
所定の対象から入力された入力発話情報を取得する処理と、
応答文をそれぞれ含み、互いに異なるオートマトンの状態に対応付けられた複数のルールデータを記憶し、前記オートマトンの状態の遷移先の状態が定義されたデータベースを用い、前記複数のルールデータから、前記オートマトンの現在の状態を含む所定の状態と、前記取得された入力発話情報とに応じて、応答ルールデータを選択し、選択した応答ルールデータに含まれる前記応答文を前記所定の対象に対して出力する出力処理と、
前記オートマトンの状態を記憶手段に順次記憶する処理と、を含み、
前記所定の状態は、前記記憶手段に記憶された複数の状態を含み、
前記出力処理は、前記複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、前記応答ルールデータとして優先的に選択する処理を含む、
対話方法。
【請求項９】
コンピュータに、請求項８に記載の対話方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザからの入力に応じた応答文を出力する対話装置、対話方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ユーザからの入力に応じた応答文を出力する対話装置として、例えば特許文献１に開示されたものが知られている。この従来の対話装置は、車両のナビゲーション装置に適用されたものであり、有限オートマトンで構成された対話シナリオデータを備えている。従来の対話装置では、そのときどきのユーザからの入力に応じ、対話シナリオデータに従って、ユーザとの対話が実行される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３２９４７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この種の有限オートマトンを備えた対話装置では、対話シナリオデータを用いて取得される遷移先の応答ルールに基づいて、ユーザに対する応答文が作成される。一方、雑談の対話では、その話題が様々に変化する傾向にあるため、対話シナリオデータの構成によっては、遷移先の応答ルールだけでは不足する可能性がある。
【０００５】
このような問題は、広範囲の話題を取得できるように上記の対話シナリオデータを構成することによって回避することができるが、その場合には、話題が唐突に切り替わることによって、ユーザとの対話が不自然になるおそれがある。
【０００６】
そこで、本発明は、話題が唐突に切り替わるのを抑制することによって、ユーザと自然に対話できる対話装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
態様の一例の対話装置は、応答文をそれぞれ含み、互いに異なるオートマトンの状態に対応付けられた複数のルールデータを記憶し、オートマトンの状態の遷移先の状態が定義されたデータベースと、所定の対象から入力された入力発話情報を取得する取得手段と、複数のルールデータから、オートマトンの現在の状態を含む所定の状態と、取得された入力発話情報とに応じて、応答ルールデータを選択し、選択した応答ルールデータに含まれる応答文を所定の対象に対して出力する応答文出力手段と、オートマトンの状態を順次記憶するための記憶手段と、を備え、所定の状態は、記憶手段に記憶された複数の状態を含み、応答文出力手段は、複数のルールデータのうちの、対応するオートマトンの状態が記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、応答ルールデータとして優先的に選択する。
【発明の効果】
【０００８】
本発明によれば、話題が唐突に切り替わるのを抑制することによって、ユーザと自然に対話できる対話装置を提供することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】対話装置の一実施形態を示すブロック図である。
【図２】対話装置を実現可能なコンピュータのハードウェア例を示す図である。
【図３】制御データ、入力単語データ、及びルールデータのデータフォーマットの例を示す図である。
【図４】対話処理の例を示すメインフローチャートである。
【図５】前処理の詳細例を示すフローチャートである。
【図６】ルール検索処理の詳細例を示すフローチャートである。
【図７】応答文出力処理の詳細例を示すフローチャートである。
【図８】オートマトンによる対話データベースの一実施形態を示す図（その１）である。
【図９】オートマトンによる対話データベースの一実施形態を示す図（その２）である。
【図１０】オートマトンによる対話データベースの一実施形態を示す図（その３）である。
【図１１】対話装置の動作例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図１は、対話装置の一実施形態を示すブロック図である。対話装置１００は、データベース１０１（データベース）、取得部１０６（取得手段）、抽出部１０７（抽出手段）、データ取得部１０２（データ取得手段）を含む応答文出力部１０３（応答文出力手段）、及び記憶部１０４（記憶手段）を備え、所定の対象、例えばユーザと対話可能に構成されている。この対話装置１００は例えば、家庭用の対話機能付きスピーカーや、ロボットの対話機能に組み込んで使用することができる。ロボットである場合、上記所定の対象は例えば、他のロボットであってもよい。
【００１１】
データベース１０１は、複数のルールデータ１１０を記憶しており、各ルールデータ１１０には、想定入力単語組（想定入力発話文）と、応答文と、オートマトンの状態番号と、オートマトンの次回の遷移先の状態番号（以下「次遷移先状態番号」という）とが含まれる。この想定入力単語組は、ユーザから入力されると想定される複数の入力単語で構成され、応答文は、ユーザの発話に対する応答文であり、これらの想定入力単語組、応答文、オートマトンの状態番号、及びオートマトンの次遷移先状態番号が、互いに対応付けられて、ルールデータ１１０として記憶されている。オートマトンの状態番号及び次遷移先状態番号は、ユーザとの対話中に、複数のルールデータ１１０のうちのいずれを選択して応答すべきかを規定するものであり、次遷移先状態番号は、次回の応答時に選択すべきルールデータ１１０に含まれるオートマトンの状態番号を表して（定義して）いる。この場合、オートマトンの状態番号と次遷移先状態番号は、同じ番号であったり、異なる番号であったりする。各ルールデータ１１０のオートマトンの状態番号及び次遷移先状態番号、並びに、それらの各々に対応する応答文は、ユーザとの対話における話題を適切に変化させながら自然な応答が行われるように、設定されている。ここで、例えば様々な話題のユーザの発話に対応できるように、同一のオートマトンの状態番号を含む複数のルールデータ１１０が、データベース１０１に記憶されていてもよい。
【００１２】
取得部１０６は、ユーザの入力発話情報１１５を、例えばマイクロフォン（図示せず）を介して取得する。
【００１３】
抽出部１０７は、上記入力発話情報１１５を、増幅器及びＡ／Ｄ（アナログ／デジタル）変換器等を介してデジタル化してデジタル音声に変換する。次に、抽出部１０７は、このデジタル音声に対して、音声認識処理を実行することにより、入力文のテキストデータを取得し、取得した入力文のテキストデータに対して形態素解析を実行することにより、発話を単語ごと（例えば名詞や動詞、形容詞、副詞等）に分かち書きした形式で、複数の入力単語からなる入力単語組１１１のテキストデータを抽出する。
【００１４】
応答文出力部１０３は、複数のルールデータ１１０から、オートマトンの現在の状態を含む所定の状態と、取得部１０６にて取得された入力発話情報１１５とに応じて、応答ルールデータ１１３を選択し、選択した応答ルールデータ１１３に含まれる応答文１１４を所定の対象に対して出力する。
【００１５】
ここで、応答文出力部１０３は、次のようなデータ取得部１０２を有してよい。データ取得部１０２は、複数のルールデータ１１０のうちの、オートマトンの現在の状態を含む所定の状態に対応する複数のルールデータよりも少ない複数のルールデータから、取得された入力発話情報１１５に応じて、応答ルールデータ１１３の候補となる応答候補の複数のルールデータである応答候補ルールデータ１１２を検索して取得する。この検索は、例えば次のようにして行われる。まず、取得した入力単語組１１１に包含される想定入力単語組を有するルールデータ１１０を、応答候補ルールデータ１１２の暫定候補データとして検索する。この場合、「入力単語組１１１に包含される想定入力単語組」は、想定入力単語組の単語数が入力単語組の単語数以下であって、かつ、想定入力単語組のすべての単語が入力単語組の一部またはすべての単語と一致する想定入力単語のことである。データ取得部１０２は、このようにして検索された1つ以上の暫定候補データに対し、更に後述するように記憶部１０４を参照して、応答候補ルールデータ１１２を検索する。
【００１６】
応答文出力部１０３は、データ取得部１０２で検索された応答候補ルールデータ１１２から応答ルールデータ１１３を選択し、その応答ルールデータ１１３に含まれる応答文（図１のルールデータ１１０に含まれる応答文を参照）を、ユーザの発話に対する応答文１１４として出力する。このようにして出力された応答文１１４のデータ（例えばテキストデータ）に対して、音声合成処理部からＤ／Ａ変換器、増幅器、及びスピーカを介して、応答文１１４に対応する音声が発声される。なお、対話装置１００が例えばロボットの対話機能として組み込まれている場合、ロボットはユーザが周囲に存在することをセンサ等によって検出している状態で、上記音声の発声を対話装置１００に行わせる。これと共に、応答文出力部１０３は、応答ルールデータ１１３に含まれるオートマトンの次遷移先状態番号（図１参照）を、スタック状態番号ＮＳＡとして、記憶部１０４に順次記憶する。このように、記憶部１０４は、オートマトンの状態番号をスタックするスタックとして機能する。記憶部１０４に記憶された複数のスタック状態番号ＮＳＡは、ユーザの発話の話題が辿るのに応じて遷移したオートマトンの状態番号の履歴を示すと同時に、これらの複数のスタック状態番号ＮＳＡのうち、最も新しく記憶されたスタック状態番号ＮＳＡは、遷移したオートマトンの現在の状態番号（＝例えば話題）を示している。
【００１７】
ここで、データ取得部１０２は、前述したようにして検索された1つ以上の暫定候補データ（ルールデータ１１０）のうち、その対応するオートマトンの状態番号（図１参照）が記憶部１０４中の複数のスタック状態番号ＮＳＡのうちの何れかに一致する暫定候補データを、応答候補ルールデータ１１２として検索する。記憶部１０４中の各スタック状態番号ＮＳＡは、ユーザの発話の話題が辿るのに応じて遷移したオートマトンの状態番号（＝例えば話題）を示している。従って、データ取得部１０２は、データベース１０１に記憶されているルールデータ１１０のうち、いままで発生したオートマトンの状態番号（スタック状態番号ＮＳＡ）と同じ状態番号を含むルールデータ１１０、すなわち、例えばいままで話題にのぼったルールデータ１１０から、応答候補ルールデータ１１２を選択することになる。
【００１８】
最も望ましいのは、記憶部１０４に最も新しく記憶されているスタック状態番号ＮＳＡ、すなわちオートマトンの現在の状態番号と同じ状態番号を含むルールデータ１１０が検索されることである。しかしながら、ユーザによる入力単語組１１１に対応するルールデータ１１０に含まれるオートマトンの状態番号が、オートマトンの現在の状態番号と必ずしも一致するとは限らない。このような場合に、データ取得部１０２は、記憶部１０４が記憶するスタック状態番号ＮＳＡが示す過去に辿ってきたオートマトンの状態番号と一致するオートマトンの状態番号を含むとともに、入力単語組１１１に対応する想定入力単語組を有するルールデータ１１０を応答候補ルールデータ１１２として検索する。この対話装置１００の構成により、ユーザとの例えば対話における話の流れに沿った応答候補ルールデータ１１２を検索することができる。
【００１９】
この場合、データ取得部１０２は更に、対応するオートマトンの状態番号が上述のように記憶部１０４中の複数のスタック状態番号ＮＳＡの何れかに一致する複数の応答候補ルールデータ１１２（ルールデータ１１０）が存在する場合に、これらの応答候補ルールデータ１１２のうち、より新しく記憶されたスタック状態番号ＮＳＡに一致する状態番号に対応する応答候補ルールデータ１１２が、応答ルールデータ１１３として優先的に選択されるように、各応答候補ルールデータ１１２のスコアを算出する。
【００２０】
より具体的には、データ取得部１０２は、例えば、入力単語組１１１に含まれる入力単語の各々に、後述するＴＦ−ＩＤＦ手法などの所定の手法によって、重み係数を設定する。これにより、複数の入力単語の各々の重み係数は、その重要度に応じて、互いに同じ値に設定されたり、互いに異なる値に設定されたりする。また、データ取得部１０２は、応答候補ルールデータ１１２としてのルールデータ１１０に含まれる想定入力単語組（図１のルールデータ１１０の想定入力単語組を参照）の入力単語組１１１に対する類似度を示すコサイン類似度を、設定した重み係数に応じて、応答候補ルールデータ１１２毎に算出する。また、データ取得部１０２は、算出したコサイン類似度に応じて、応答候補ルールデータ１１２毎に、応答ルールデータ１１３を選択するための指標を示すスコアを算出する（コサイン類似度をスコアとして算出する）。さらに、データ取得部１０２は、複数の応答候補ルールデータ１１２（ルールデータ１１０）のうちの、記憶部１０４に記憶された複数のスタック状態番号ＮＳＡのうちのより過去に記憶されたスタック状態番号ＮＳＡに一致する状態番号に対応する応答候補ルールデータ１１２のスコアを、より小さな値に算出する。そして、応答文出力部１０３は、応答候補ルールデータ１１２毎に算出された上記スコアに基づいて、最大のスコアを有する応答候補ルールデータ１１２を応答ルールデータ１１３として選択する。この対話装置１００の構成によって、応答文出力部１０３は、データ取得部１０２により検索された１つ以上の応答候補ルールデータ１１２のうち、オートマトンの現在の状態番号（＝例えば現在の話題）により近い状態番号（＝例えばより近い話題）に対応する応答候補ルールデータ１１２を、応答ルールデータ１１３として優先的に選択することができ、よりユーザとの話題に沿った自然な対話が行える対話装置１００を提供することが可能となる。
【００２１】
ここまでの構成に加えて、選択された応答ルールデータ１１３に基づいて生成された応答文１１４を過去所定回数分記憶する応答文記憶部１０４（応答文記憶手段）を更に備えてよい。そして、データ取得部１０２は、応答文記憶部１０４を参照することにより、１つ以上の応答候補ルールデータ１１２中の各応答候補ルールデータ１１２が応答ルールデータ１１３として選択されるときの優先度（例えば前述したスコア）を、応答候補ルールデータ１１２の応答文１１４が過去何回目に生成されたかに応じて変更してよい。この対話装置１００の構成により、同じ応答ルールデータ１１３による応答文１１４が繰り返し出力されるのを防ぐことができる。
【００２２】
ここまでの構成に加えて、データベース１０１には、所定の複数の非想定用ルール（後述するワイルドカードリスト、スーパーワイルドカードリスト）が含まれてもよい。そして、データ取得部１０２は、ユーザによる発話の内容が想定外の内容である場合、すなわち、入力単語組１１１の複数の単語が、いずれのルールデータ１１０の想定用入力単語組の複数の単語を包含していない場合には、複数の非想定用ルールのうち、前回に選択された応答ルールデータに対応するものを、応答候補ルールデータとして取得してよい。
【００２３】
図２は、図２の対話装置１００を実現可能なコンピュータのハードウェア例を示す図である。このコンピュータは、通常のパーソナルコンピュータのほか、スマートフォン、タブレット端末、デジタルカメラなどを含む。図２に示されるコンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ＣＰＵ２０１、メモリ２０２、入力装置２０３、出力装置２０４、補助情報記憶装置２０５、可搬型記録媒体２１１が挿入される媒体駆動装置２０６、ネットワーク接続装置２０７、音声入力装置２０８、及び音声出力装置２０９を有する。これらの構成要素は、バス２１０により相互に接続されている。図２に示される構成は図２の対話装置１００を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【００２４】
メモリ２０２は、例えば、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、例えば、後述する図４〜図７のフローチャートの処理に対応するプログラム、及び後述する図３に対応する各種データを格納する。
【００２５】
ＣＰＵ（プロセッサ）１０１は、例えば、メモリ２０２を利用して、図２の対話装置１００に用いられる後述する図４〜図７のフローチャートの処理に対応するプログラムを実行することにより、図２に示される各処理ブロックとして動作する。
【００２６】
入力装置２０３は、例えば、タッチパネル入力装置であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置２０４は、例えば、上記タッチパネル入力装置と一体に形成される液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などのディスプレイ装置であり、オペレータ又はユーザへの問合せ又は処理結果の出力に用いられる。
【００２７】
補助情報記憶装置２０５は、例えば、半導体記憶装置、ハードディスク記憶装置、磁気ディスク記憶装置、光ディスク装置、光磁気ディスク装置などであり、例えば、図１で説明したデータベース１０１を記憶する記憶装置、或いは、図１の記憶部１０４又は応答文記憶部１０５として動作する。図２の対話装置１００は、補助情報記憶装置２０５に図２の対話装置１００に用いられる例えば図４から図７のフローチャートの処理を実行するプログラム及び図３で後述する各種データなどのデータを格納しておき、それらをメモリ２０２にロードして使用してもよい。
【００２８】
媒体駆動装置２０６は、可搬型記録媒体２１１を駆動し、その記録内容にアクセスする。可搬型記録媒体２１１は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体２１１は、Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ）、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ（ＤＶＤ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体２１１に上述のプログラム及びデータを格納しておき、メモリ２０２にロードして使用することができる。
【００２９】
このように、上述のプログラム及びデータを格納するコンピュータ読取り可能な記録媒体は、メモリ２０２、補助情報記憶装置２０５、又は可搬型記録媒体２１１のような、物理的な（非一時的な）記録媒体である。
【００３０】
ネットワーク接続装置２０７は、例えばＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。図２の対話装置１００は、上述のプログラム又はデータを外部の装置からネットワーク接続装置２０７を介して受信し、それらをメモリ２０２にロードして使用することができる。
【００３１】
音声入力装置２０８は、ユーザが喋る音声をアナログ入力音声信号として入力するマイクロフォン／アンプ、アナログ入力音声信号をデジタル入力音声信号に変換するＡ／Ｄ（アナログ／デジタル）変換器、デジタル入力音声信号をユーザからの入力としてＣＰＵ２０１に引き渡すためのインタフェース回路などである。
【００３２】
音声出力装置２０９は、図２の対話装置１００が生成した応答文１１４に対応するデジタル音声信号を合成する音声合成処理装置、デジタル音声信号をアナログ音声信号に変換するＤ／Ａ（デジタル／アナログ）変換器、アナログ音声信号をユーザに向かって放音するためのアンプ／スピーカなどである。
【００３３】
なお、図２の対話装置１００が図２の全ての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示又は情報を入力する必要がない場合は、入力装置２０３の一部又は全部や出力装置２０４の一部又は全部が省略されてもよい。可搬型記録媒体２１１又は通信ネットワークを利用しない場合は、媒体駆動装置２０６又はネットワーク接続装置２０７が省略されてもよい。
【００３４】
図３は、図２のコンピュータが実現する図２の対話装置１００の制御に必要な主要な各種データのフォーマットの例を示す図である。
【００３５】
図３（ａ）は、制御データのデータフォーマット例である。制御データの先頭ポインタＣｔｒｌのアドレスから順に、以下の各種データが図２のメモリ２０２に記憶される。
【００３６】
ｔｒａｎｓｉｔｉｏｎ：対話データベースへのポインタ。図２の補助情報記憶装置２０５などに記憶される図２のデータベース１０１内のルールデータ１１０の先頭へのポインタである。ルールデータ１１０は、図１を用いて前述したように、オートマトンの状態番号毎に、ユーザが発話すると想定される単語の組（想定入力単語組）と、それに対応する応答文と、次に遷移するオートマトンの状態番号（次遷移先状態番号）を管理する。
【００３７】
ｉｎｐｕｔＷｏｒｄＣｏｕｎｔ：入力単語数。入力されたユーザ発話の単語(形態素)数である。
【００３８】
ｉｎｐｕｔＷｏｒｄｓ［ｉｎｐｕｔＷｏｒｄＣｏｕｎｔ］：図３（ｂ）の入力単語データへのポインタ。入力されたユーザ発話に含まれる単語(形態素)群の実体アドレスである。上記入力単語数ｉｎｐｕｔＷｏｒｄＣｏｕｎｔ分の入力単語データ配列である。
【００３９】
ｔｒａｎｓＣａｎｄｉｄａｔｅｓ：応答候補ルールデータリスト。当該の入力による条件に合致する１つ以上の応答候補ルールデータ１１２（図１参照）を格納するためのリストである。各リストの要素は、各ルールデータｔｒａｎｓｉｔｉｏｎ［ｉ］（図３（ｃ）参照）へのポインタのほかに、各応答候補ルールデータ１１２の一致単語数の値や、各応答候補ルールデータ１１２のスコアの値も含む。
【００４０】
ｓｔａｔｅ＿ｉｄ：状態番号のスタック配列。記憶部１０４に記憶されるスタック状態番号ＮＳＡ（図１参照）を管理するスタック配列である。
【００４１】
ｓｃｏｒｅ＿ｃｏｅｆ：評価係数。各応答候補ルールデータ１１２を評価するためのコサイン距離を計算する際の、入力側分母成分である。
【００４２】
図３（ｂ）は、ユーザの発話に基づいて検出される図１の入力単語組１１１を示す入力単語データのデータフォーマット例である。各入力単語データの先頭ポインタはｉｎｐｕｔＷｏｒｄｓ［ｉ］（ｉ＝０、１、２、・・・）で示され、入力単語データ毎に、このアドレスから順に以下の各種データが、図２のメモリ２０２に記憶される。
【００４３】
ｗｏｒｄ：入力単語。形態素解析処理により設定される、形態素単位のテキストデータ列である。
【００４４】
ｗｅｉｇｈｔ：重み係数。そのルール内でのその単語の重要度を示すための係数である。重み係数の値は、例えば品詞に応じて大小が付けられ、例えば名詞や動詞に対しては大きな値、助詞などに対しては小さな値が付けられる。
【００４５】
ｐｒｅｖ：前ポインタ。ユーザの発話において、現在の入力単語の直前に発音された入力単語へのポインタである。
【００４６】
ｎｅｘｔ：次ポインタ。ユーザの発話において、現在の入力単語の直後に発音された入力単語へのポインタである。
【００４７】
図３（ｃ）は、図１のデータベース１０１に記憶されるルールデータ１１０のデータフォーマット例である。各ルールデータ１１０の先頭ポインタはｔｒａｎｓｉｔｉｏｎ［ｉ］（ｉ＝０、１、２、・・・）で示され、ルールデータ１１０毎に、このアドレスから順に以下の各種データが、例えば図２の補助情報記憶装置２０５内（メモリ２０２内でもよい）の図１のデータベース１０１に記憶される。
【００４８】
ｕｓｅｒＷｏｒｄＣｏｕｎｔ：想定入力単語数。ルールデータ１１０の入力として与えられる想定入力単語の数である。
ｕｓｅｒＷｏｒｄｓ［ｕｓｅｒＷｏｒｄＣｏｕｎｔ］：ルールデータ１１０の入力として与えられる想定入力単語のテキストデータの配列である。図１のルールデータ１１０内の想定入力単語組に対応する。
ｓｔａｔｅ＿ｉｄ：オートマトンの現在の状態番号。ルールデータ１１０が属する状態を示す番号である。図１のルールデータ１１０内の状態番号に対応する。
ｂｏｔ＿ｒｅｐｌｙ：応答文。ルールデータ１１０の出力である応答文のテキストデータである。図１のルールデータ１１０内の応答文に対応する。
ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄ：次遷移先状態番号。ルールデータ１１０が選択された後に遷移するオートマトンの遷移先の状態を示す番号である。図１のルールデータ１１０内の次遷移先状態番号に対応する。
【００４９】
ｐｒｅｖ：前ポインタ。現在のルールデータ１１０の直前に接続されるルールデータ１１０へのポインタである。
【００５０】
ｎｅｘｔ：次ポインタ。現在のルールデータ１１０の直後に接続されたルールデータ１１０へのポインタである。
【００５１】
図４から図７は、図２の対話装置１００の動作を実現するために、図２のコンピュータが実行する対話処理の例を示すフローチャートである。この対話処理は、図２のＣＰＵ２０１が、メモリ２０２又は補助情報記憶装置２０５に記憶されている図３で説明した各種データを用いながら、メモリ２０２に記憶された対話処理プログラムを実行する処理である。
【００５２】
図４は、対話処理の例を示すメインフローチャートである。特には図示しないパワースイッチがオンされてシステムが起動すると、ＣＰＵ２０１が、メモリ２０２上の各種変数の初期化、及び必要なデータの補助情報記憶装置２０５からメモリ２０２へのロードを実行する（ステップＳ４０１）。
【００５３】
次に、ＣＰＵ２０１は、図３（ａ）の制御データ上のオートマトンの状態番号のスタック配列ｓｔａｔｅ＿ｉｄに、初期状態を表す状態番号０をプッシュする（ステップＳ４０２）。
【００５４】
ステップＳ４０２の後、ＣＰＵ２０１は、ユーザ発話の入力（ステップＳ４０３）と、対話装置の終了指示（ステップＳ４０４）の待機状態となる（ステップＳ４０３とステップＳ４０４の繰返し処理）。
【００５５】
ユーザが発話を行うと、図２の音声入力装置２０８において、ユーザが喋る音声がマイクロフォン／アンプでアナログ入力音声信号として入力され、Ａ／Ｄ変換器においてそのアナログ入力音声信号がデジタル入力音声信号に変換され、図２のバス２１０を介してＣＰＵ２０１に送られる。そして、ＣＰＵ２０１が、このデジタル入力音声信号の所定閾値以上のパワーを検出したときに、ユーザ発話の入力が検出され、ステップＳ４０４の判定がＹＥＳとなる。ＣＰＵ２０１は、前処理（ステップＳ４０５）、ルール検索処理（ステップＳ４０６）、及び応答文出力処理（ステップＳ４０７）を順次実行し、その後、ステップＳ４０３とＳ４０４の待機処理に戻る。
【００５６】
ユーザが特には図示しないパワースイッチをオフして対話装置１００の終了指示が発生すると、ステップＳ４０３の判定がＹＥＳとなって、ＣＰＵ２０１は、確保したメモリ２０２上の領域等を破棄し、図４に示す対話処理を終了し、システムを終了する。
【００５７】
図５は、図４のステップＳ４０５の前処理の詳細例を示すフローチャートである。この前処理では主に、図３（ｂ）の入力単語データｉｎｐｕｔＷｏｒｄｓ［０］、ｉｎｐｕｔＷｏｒｄｓ［１］、・・・を作成する処理が実行される。
【００５８】
まず、ＣＰＵ２０１は、メモリ２０２上にある図３（ａ）及び（ｂ）の各データ（変数）を初期化する（ステップＳ５０１）。
【００５９】
次に、ＣＰＵ２０１は、図４のステップＳ４０４で入力されたユーザの発話に基づくデジタル音声データに対して、まず音声認識を行って入力文のテキストデータを作成し、更にそのテキストデータに対して形態素解析を実行することにより、形態素に分割された複数の単語から成る入力単語群を抽出する（ステップＳ５０２）。この入力単語群は、図１の入力単語組１１１に対応する。
【００６０】
次に、ＣＰＵ２０１は、初期値１を、メモリ２０２上の変数であるスコア係数にセットする（ステップＳ５０３）。スコア係数については、後述する。
【００６１】
次に、ＣＰＵ２０１は、ステップＳ５０２での形態素解析により抽出した先頭の形態素から順に（ステップＳ５０４）、ステップＳ５０５ですべての形態素の検索が終了したと判定するまで（ステップＳ５０５）、ステップＳ５０９で形態素を順次検索しながら、以下のステップＳ５０６からＳ５０８の一連の処理を、形態素毎に繰り返し実行する。
【００６２】
まず、ＣＰＵ２０１は、図３（ａ）の制御データの入力単語数：ｉｎｐｕｔＷｏｒｄＣｏｕｎｔの値をインクリメントする。また、ＣＰＵ２０１は、図３（ｂ）の入力単語データの新たなエントリ（記憶領域）（例えばｉｎｐｕｔＷｏｒｄｓ［ｉ］）をメモリ２０２上に生成し、そのエントリ内の入力単語：ｗｏｒｄとして、ステップＳ５０４又はＳ５０９で取得した形態素のテキストを登録する（以上、ステップＳ５０６）。なお、ＣＰＵ２０１は、入力単語データの新たなエントリの前ポインタ：ｐｒｅｖを、その直前に生成されているエントリの先頭アドレスに設定し、更にその直前エントリの次ポインタ：ｎｅｘｔの値を上記新たなエントリの先頭アドレスに設定することにより、ユーザ発話に従って順番に接続された入力単語データのエントリのリストを生成する。
【００６３】
次に、ＣＰＵ２０１は、ステップＳ５０４又はＳ５０９で取得した形態素に対応する入力単語の重み係数を設定し、その重み係数を、ステップＳ５０６でメモリ２０２上に生成した図７（ｂ）の入力単語データの新たなエントリの重み係数：ｗｅｉｇｈｔとして設定する（ステップＳ５０７）。上述の重み係数は、対応する形態素の入力単語の、入力された文書内での重要度を示しているといえる。単語の文書内での重要度は、入力文書内で多く出現する単語ほど大きな（重要な）値として設定されるＴＦ（Ｔｅｒｍ  Ｆｒｅｑｕｅｎｃｙ）と呼ばれる良く知られた手法と、いくつもの文書で横断的に使われている単語はそれほど大きな（重要な）値ではなく設定されるＩＤＦ（Ｉｎｖｅｒｓｅ  Ｄｏｃｕｍｅｎｔ  Ｆｒｅｑｕｅｎｃｙ）と呼ばれる良く知られた他の手法とを組合せたＴＦ−ＩＤＦ手法により設定することができる。従って、上述の重み係数は、このようなＴＦ−ＩＤＦ手法により設定されてよい。また、単語の文書内での重要度は、形態素の品詞によっても異なる。重み係数の値は、例えば名詞や動詞に対しては大きな値、助詞などに対しては小さな値が割り当てられる。そこで、上述の重み係数は、例えば図２の補助情報記憶装置２０５に保持している、品詞別の重み係数テーブルや、ＩＤＦ（Ｉｎｖｅｒｓｅ  Ｄｏｃｕｍｅｎｔ  Ｆｒｅｑｕｅｎｃｙ）テーブルなどから設定されてよい。
【００６４】
そして、ＣＰＵ２０１は、ステップＳ５０７で取得した重み係数の２乗値を、ステップＳ５０３で初期設定したメモリ２０２上のスコア係数に加算する（ステップＳ５０８）。スコア係数については後述する。
【００６５】
以上のステップＳ５０６からＳ５０８までの一連の処理が、ステップＳ５０５からＳ５０９までの繰返し処理により入力により得られる全ての形態素について実行されることにより、図３（ｂ）の入力単語データｉｎｐｕｔＷｏｒｄｓ［０］、ｉｎｐｕｔＷｏｒｄｓ［１］、・・・が作成される。図３（ｂ）に示されるように、入力単語データｉｎｐｕｔＷｏｒｄｓ［ｉ］（ｉ＝０、１、・・・）は、形態素解析された現在の形態素のテキストデータである入力単語ｗｏｒｄと、その入力単語に対応してステップＳ５０７で取得された重み係数ｗｅｉｇｈｔと、前後のエントリへのポインタｐｒｅｖ及びｎｅｘｔから構成される。
【００６６】
すべての形態素に対する処理が終了してステップＳ５０５の判定がＹＥＳになると、ＣＰＵ２０１は、メモリ２０２上の変数である、前記ステップＳ５０８で最終的に算出されたスコア係数の平方根を算出し、更にその逆数を算出して、その算出結果を図３（ａ）の制御データ内の評価係数（評価式の分母）：ｓｃｏｒｅ＿ｃｏｅｆとして設定する（ステップＳ５１０）。このようにして算出される評価係数ｓｃｏｒｅ＿ｃｏｅｆは、実質的には、ｃｏｓ（コサイン）距離＝相関係数を求めていることになる。
【００６７】
共分散(分子)と、ルールデータ側の標準偏差は後述するルール検索処理時に算出するものとするが、入力側である入力単語組１１１に対応する分散は、どのルールに対しても共通のものであり、かつ分母の成分として発生するものであるので、まずステップＳ５０３で初期設定の後に、ステップＳ５０８で各入力単語の重み係数の２乗を加算してスコア係数を算出し、算出したスコア係数をステップＳ５１０であらかじめ逆数化して図３（ａ）の評価係数ｓｃｏｒｅ＿ｃｏｅｆとして求めておき、後述する各応答候補ルールデータ１１２のスコアをコサイン類似度に変換する演算（図６のステップＳ６０９参照）において、(計算負荷のかかる除算ではなく、)乗算で処理できるようにするためである。その後、ＣＰＵ２０１は、図５のフローチャートで例示される図４のステップＳ４０５の前処理を終了する。
【００６８】
図６は、図４のステップＳ４０６のルール検索処理の詳細例を示すフローチャートである。このルール検索処理は、図１のデータ取得部１０２の処理機能を実現するものである。図１のデータ取得部１０２の説明で前述したように、データ取得部１０２は、データベース１０１に記憶されているルールデータ１１０を参照しながら、オートマトンと呼ばれる状態モデルに従って動作する。図６のルール検索処理も同様に、メモリ２０２又は補助情報記憶装置２０５上のデータベース１０１に記憶されている図３（ｃ）のルールデータ１１０を参照しながら、オートマトンの状態モデルに従って動作する。ここで、オートマトンとは、状態と遷移と動作の組み合わせからなるモデルであり、ある時点で「現在状態」と呼ぶ何れか1つの状態をとり、何らかのイベントや条件によってある状態から別の状態へと「遷移」し、その状態を規定するのがデータベース１０１上のルールデータ１１０である。また、本実施形態では、後述するようにルールデータ１１０の検索と状態の遷移が、図１で説明した記憶部１０４に記憶されるスタック状態番号ＮＳＡに応じても制御される。
【００６９】
以下、図４のステップＳ４０６のルール検索処理の詳細例である図６のフローチャートの処理について、説明する。
【００７０】
図６において、ＣＰＵ２０１はまず、前述した図５で示される図４のステップＳ４０５の前処理においてユーザの発話から得られた入力単語組について、全てのルール検索が終了したと判定するまで（後述するステップＳ６１３：ＹＥＳ）、ステップＳ６０１からＳ６１２の一連の処理を繰り返し実行する。
【００７１】
この繰返し処理において、ＣＰＵ２０１はまず、メモリ２０２又は補助情報記憶装置２０５に記憶されている図３（ｃ）のルールデータ１１０（図１のデータベース１０１内のルールデータ１１０に対応）において、前述したように上記入力単語組（図１の入力単語組１１１に対応）に包含される想定入力単語組を含むルールデータ１１０を、データベース１０２内から検索する（ステップＳ６０１）。ステップＳ６０１の他の実施形態として、ＣＰＵ２０１は、想定入力単語数（図３（ｃ）参照）が上記入力単語組（図１の入力単語組１１１に対応）の入力単語数（図３（ａ）参照）に一致し、かつ想定入力単語の配列（図３（ｃ）参照）中の全ての想定単語が、入力単語（図３（ｂ）参照）の全てと一致するルールデータを検索してもよい。なお、入力文が日本語である場合には、想定入力単語組と入力単語組の間の単語の順番は問わない。これは、入力文によっては、単語の倒置等が発生する場合に対応するためである。
【００７２】
ステップＳ６０１の検索の結果、ＣＰＵ２０１は、データベース１０２内からルールデータが見つかったか否かを判定する（ステップＳ６０２）。
【００７３】
ルールデータが見つからなかった場合（ステップＳ６０２の判定がＮＯの場合）には、ＣＰＵ２０１は、全てのルールデータの検索が終了したか否かを判定する（ステップＳ６１３）。
【００７４】
全てのルールデータの検索が終了していない場合（ステップＳ６１３の判定がＮＯの場合）には、ＣＰＵ２０１は、ステップＳ６０１の検索処理に戻ってルールデータの検索を繰り返し実行する。
【００７５】
ステップＳ６０１での検索の結果、ルールデータが見つかった場合（ステップＳ６０２の判定がＹＥＳの場合）には、ＣＰＵ２０１は、以下のステップＳ６０３からＳ６１２で示される一連の処理を実行することにより、ステップＳ６０１で見つかったルールデータを応答候補ルールデータ１１２（図１参照）として採用するか否かを判定する。
【００７６】
具体的には、ＣＰＵ２０１はまず、図２のメモリ２０２上に保持している変数である状態番号係数が示す倍率を、初期値である１．０にセットする（ステップＳ６０３）。状態番号係数は、現在の状態以外の過去に発生した状態に対応するルールデータを検索する場合に、その状態をどの程度重要視するかを決定するための重みデータである。
【００７７】
次に、ＣＰＵ２０１は、メモリ２０２（記憶部１０４）上に制御データとして保持している（記憶されている）状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）において、スタック配列中の所定の複数のスタック状態番号ＮＳＡのうち、最初のスタック状態番号ＮＳＡ、すなわち、記憶された最新の状態番号を読み出す（ステップＳ６０４）。
【００７８】
次に、ＣＰＵ２０１は、ステップＳ６０１によって見つかったルールデータ中の状態番号：ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）が、上記ステップＳ６０４又は後述するＳ６１１によって選択された現在のスタック状態番号ＮＳＡと一致するか否かを判定する（ステップＳ６０５）。
【００７９】
ステップＳ６０５の判定がＹＥＳならば、ＣＰＵ２０１は、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓ（図３（ａ）参照）に、当該ルールデータに対応するステップＳ６０１で見つかったルールデータへのポインタ：ｔｒａｎｓｉｔｉｏｎ（図３（ｃ））の値を登録することにより、上記応答候補ルールデータリストに、当該ルールデータを新たな応答候補ルールデータ１１２として追加する（ステップＳ６０６）。
【００８０】
次に、ＣＰＵ２０１は、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓから参照される、今回追加された応答候補ルールデータ１１２のスコアに、図６のステップＳ６０１で見つかったルールデータ１１０の想定入力単語組内の各想定入力単語に対応する各入力単語の各重み係数：ｗｅｉｇｈｔ（図３（ｂ）参照）の２乗値を、全入力単語で累算する（ステップＳ６０７）。なお、応答候補ルールデータ１１２のスコアの初期値は所定値に設定されている。所定値は任意の値を採用可能であり、例えば値０でもよい。
【００８１】
続いて、ＣＰＵ２０１は、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓから参照される、今回追加された応答候補ルールデータ１１２のスコアに、メモリ２０２上に保持されている変数である状態番号係数の２乗値を累算する（ステップＳ６０８）。前述したように、状態番号係数は、オートマトンの現在の状態番号以外の状態番号を含むルールデータ１１０を採用する場合に、その状態番号をどの程度重要視するかを決定するための重みデータである。
【００８２】
次に、ＣＰＵ２０１は、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓから参照される、ステップＳ６０６で追加された応答候補ルールデータ１１２としてのルールデータ１１０のスコアの値を、下記（１）式に従い、コサイン類似度に変換する（ステップＳ６０９）。「ｓｑｒｔ（）」は、平方根を計算する演算を示す。「Ｃｔｒｌ．ｓｃｏｒｅ＿ｃｏｅｆ」は、図３（ａ）の制御データの先頭アドレスＣｔｒｌから参照される評価係数であり、図５のステップＳ５０３、Ｓ５０８、Ｓ５１０などで算出されている値である。また、「ｔｒａｎｓＣａｎｄｉｄａｔｅｓ−＞ｓｃｏｒｅ」は、メモリ２０２上の今回追加された応答候補ルールデータ１１２のスコア変数値を示している。
【００８３】
ｔｒａｎｓＣａｎｄｉｄａｔｅｓ−＞ｓｃｏｒｅ
＝ｓｑｒｔ（ｔｒａｎｓＣａｎｄｉｄａｔｅｓ−＞ｓｃｏｒｅ）
×Ｃｔｒｌ．ｓｃｏｒｅ＿ｃｏｅｆ    ・・・（１）
【００８４】
上記（１）式により、共分散と、新たな応答候補ルールデータ１１２としてのルールデータ１１０に対応する標準偏差がここまでで計算されるので、これに前述した入力単語組に対応する標準偏差の逆数である評価係数が乗算されることにより、相関係数が算出できることになる。
【００８５】
次に、ＣＰＵ２０１は、ステップＳ６１３の処理からステップＳ６０１に戻り、次のルールデータに対する検索処理を繰り返し実行する。
【００８６】
一方、ステップＳ６０５の判定がＮＯ、すなわち、ステップＳ６０１で見つかったルールデータ１１０の状態番号：ｓｔａｔｅ＿ｉｄが、ステップＳ６０４又はＳ６１１によって選択された現在のスタック状態番号ＮＳＡと一致しなければ、ＣＰＵ２０１は、スタック配列中のスタック状態番号ＮＳＡの検索が終了したか否かを判定する（ステップＳ６１０）。このステップＳ６１０の判定がＮＯのときには、そのときに読みだされているスタック状態番号ＮＳＡよりも一つ前に記憶されたスタック状態番号ＮＳＡを読み出す（ステップＳ６１１）とともに、状態番号係数に所定の減衰係数（１．０＞減衰係数＞０）を乗算し（ステップＳ６１２）、ステップＳ６０５に戻る。
【００８７】
一方、上記ステップＳ６１０の判定がＹＥＳで、状態番号のスタック配列中のスタック状態番号ＮＳＡの検索が終了したときには、前記ステップＳ６１３以降を実行する。
【００８８】
一方、ステップＳ６１３の判定がＹＥＳで、全てのルールデータ１１０の検索が終了したときには、ステップＳ６１４及びＳ６１５において、ワイルドカードリスト検索処理及びスーパーワイルドカードリスト検索処理をそれぞれ、後述するようにして実行し、本処理を終了する。
【００８９】
以上により、図６に示すルール検索処理では、ステップ６０１で見つかったルールデータ１１０の状態番号が、ステップＳ６０４で読みだされた最初のスタック状態番号ＮＳＡと、すなわちオートマトンの現在状態と一致する場合（ステップＳ６０５：ＹＥＳ）には、ステップＳ６０３で値１．０に設定された状態番号係数がそのまま用いられ、ステップＳ６０８で累算される。
【００９０】
一方、ステップ６０１で見つかったルールデータの状態番号が最初のスタック状態番号ＮＳＡと一致しない場合（ステップＳ６０５：ＮＯ）には、スタック配列に記憶されたスタック状態番号ＮＳＡが新しいものから順に読みだされ（ステップＳ６１１）、状態番号係数に減衰係数が乗算される(ステップＳ６１２) とともに、再度ステップＳ６０５が実行され、読みだされたスタック状態番号ＮＳＡに、ルールデータ１１０位に含まれるオートマトンの状態番号が一致するか否かが判定される。そして、すべてのスタック状態番号ＮＳＡの検索が終了しない限り（ステップＳ６１０：ＮＯ）、ステップＳ６０５がＹＥＳになるまで、ステップＳ６１１及びＳ６１２が繰り返し実行される。
【００９１】
これにより、ステップＳ６１１で読みだされるスタック状態番号ＮＳＡがより過去のものになるほど、値１．０よりも小さい減衰係数が状態番号係数に乗算される回数がより多くなる結果、状態番号係数は、より小さな値に設定される。この場合、例えば減衰係数が値０．９の場合には、状態番号係数は、ステップＳ６０３で設定される初期値の値１．０から、減衰係数が乗算されるたびに、０．９→０．８１、・・・というように減衰される。そして、ステップＳ６０５の判定がＹＥＳになると、減衰された状態番号係数を用いて応答候補ルールデータ１１２のスコアが算出される（ステップＳ６０８）。
【００９２】
図７は、図４のステップＳ４０７の応答文出力処理の詳細例を示すフローチャートである。まずＣＰＵ２０１は、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓ中の各応答候補ルールデータ１１２としてのルールデータ１１０のスコアに基づいて、最尤の(スコアが最も高い)候補のルールデータ１１０を、図１の応答ルールデータ１１３として決定する（ステップＳ７０１）。
【００９３】
続いて、ＣＰＵ２０１は、ステップＳ７０１の最尤候補のルールデータ１１０が有する応答文：ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）を、図２の音声出力装置２０９に出力する（ステップＳ７０２）。音声出力装置２０９は、応答文：ｂｏｔ＿ｒｅｐｌｙに対応するデジタル音声応答信号を合成し、そのデジタル音声応答信号を内蔵のＤ／Ａ変換器にてアナログ音声応答信号に変換し、そのアナログ音声応答信号をアンプ及びスピーカを介してユーザに向かって放音する。なお、上記応答文：ｂｏｔ＿ｒｅｐｌｙの音声信号を放音せずに、上記応答文：ｂｏｔ＿ｒｅｐｌｙのテキストデータが、出力装置２０４のディスプレイに表示されてもよい。
【００９４】
続いて、ＣＰＵ２０１は、最尤候補のルールデータ１１０の遷移先状態番号：ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）を取得する（ステップＳ７０３）。
【００９５】
そして、ＣＰＵ２０１は、ステップＳ７０２で取得した遷移先状態番号が、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（＝図１のスタック状態番号ＮＳＡ）上で連続しないようにして、遷移先状態番号を、スタック状態番号ＮＳＡとして上記スタック配列にプッシュする（ステップＳ７０４）。この場合、本処理の初回の実行時、すなわち、状態番号のスタック配列に何もスタック状態番号ＮＳＡがスタックされていないときには、現在の状態番号及び遷移先状態番号を、この順にスタック配列にプッシュする。
【００９６】
図８、図９、及び図１０は、上述した処理の動作例を示している。図８（ｂ）、図９、及び図１０は、オートマトンの状態番号が状態番号０から状態番号４まで遷移する場合の動作例を示している。また、図８（ａ）は、図８（ｂ）、図９、及び図１０に示す動作例に関する凡例を示している。太い実線の丸で囲まれた数字（Ｘ＝０、１、２、３、４）はオートマトンの状態番号を示している。また、シャープ記号が付与されている破線枠＃Ｘ−ｉは、オートマトンの状態番号が状態番号Ｘである場合におけるｉ番のルールデータ１１０（図１参照）を示している。このルールデータ１１０において、濃い色の枠は、そのルールデータ１１０が選択されるための「条件」を示している。また、左側に向いている吹出し枠中のテキストは、ユーザから取得される入力発話情報（図１の入力発話情報１１５に対応）に対する形態素解析により得られる入力単語組（図１の入力単語組１１１に対応）がマッチすべき想定入力単語組（図１参照）を示している。そして、右側に向いている吹出し枠中のテキストは、応答文（図１参照）のテキストを示している。
【００９７】
ここで、ユーザによる入力文と入力単語組の取得方法については、前述したとおりである。この入力単語組のテキストデータは、図１の入力単語組１１１に対応しているが、以下単に「入力単語組」と記載したときは図１の入力単語組１１１に対応しているものとする。
【００９８】
例えば、図８（ｂ）に示されるオートマトンの状態番号が０である場合には、会話のスタート時の一般的な話の導入を行うためのルールデータ群が対応付けられている状態である。この状態番号０において、ルールデータ１１０［＃０−０］は、例えばユーザが喋ることにより、入力文に対応する入力単語組として「好き」という単語を含む疑問文が与えられたときには、「どうかな、わからないな」というテキストに対応する応答文を出力するためのルールデータである。また、この動作例では、このルールデータ１１０［＃０−０］による応答文が出力された（図７のステップＳ７０２）後には、ルールデータ１１０［＃０−０］の破線枠から出力する実線矢印として示されるように、オートマトンの状態番号は現在の状態番号０を維持する（図７のステップＳ７０３でルールデータ１１０［＃０−０］から遷移先状態番号＝０が取得され、ステップＳ７０４でスタックにプッシュされる）。この実線矢印は、図１のルールデータ１１０における次遷移先状態番号に対応する。図８（ｂ）に示される状態番号０におけるルールデータ１１０［＃０−１］、［＃０−３］についても同様である。
【００９９】
一方、図８（ｂ）に示される状態番号０におけるルールデータ１１０［＃０−２］は、入力文「動物の話」の疑問文に対応する「動物」「話」という２つの単語を含む入力単語組が与えられたときには、「うん、動物の話をしよう」というテキストに対応する応答文を出力するためのルールである。また、この動作例では、このルールデータ１１０［＃０−２］による応答文が出力された（ステップＳ７０２）後には、ルールデータ１１０［＃０−２］の破線枠から出力する実線矢印を太い破線の丸で囲まれた「１」に付すことで示されるように、オートマトンの状態番号が、現在の状態番号０から図９に示される状態番号１に遷移する（図７のステップＳ７０３でルールデータ１１０［＃０−２］から遷移先状態番号＝１が取得され、ステップＳ７０４でスタックにプッシュされる）。
【０１００】
図９に示されるオートマトンの状態番号が状態番号１である場合は、動物に関する話題を会話するためのルールデータ群が対応付けられている状態である。例えばルールデータ１１０［＃１−０］は、入力文から生成される入力単語組が単語「猫」を含むときに猫に関する一般的な話題として「猫の目って大きいよね」という応答文を出力するためのルールである。また、ルールデータ１１０［＃１−１］は、入力文から生成される入力単語組が単語「目」を含むときに猫の目に関する一般的な話題として「猫の目って大きいよね」という応答文を出力するためのルールである。これらのルールデータ１１０［＃１−０］や［＃１−１］が出力された（図７のステップＳ７０２）後には、ルールデータ１１０［＃１−０］や［＃１−１］の各破線枠から出力する実線矢印を太い破線の丸で囲まれた「２」に付すことで示されるように、オートマトンの状態番号が、図９に示される現在の状態番号１から図１０に示される状態番号２に遷移する（図７のステップＳ７０３でルールデータ１１０［＃１−０］又は［＃１−１］から遷移先状態番号＝２が取得され、ステップＳ７０４でスタックにプッシュされる）。
【０１０１】
一方、図９の状態１において、例えばルールデータ１１０［＃１−２］は、入力文から生成される入力単語組がキーワード「狐」を含むときに狐に関する一般的な話題として「狐って夜に行動するイメージあるよね」という応答文を出力するためのルールである。また、ルールデータ１１０［＃１−３］は、入力文から生成される入力単語組が単語「目」を含むときに狐の目に関する一般的な話題として「狐って目が猫みたいかも」という応答文を出力するためのルールである。これらのルールデータ１１０［＃１−２］や［＃１−３］が出力された（図７のステップＳ７０２）後には、ルールデータ１１０［＃１−２］や［＃１−３］の各破線枠から出力する実線矢印を太い破線の丸で囲まれた「４」に付すことで示されるように、オートマトンの状態番号が、図９に示される現在の状態番号１から図９に示される状態番号４に遷移する（図７のステップＳ７０３でルールデータ１１０［＃１−２］又は［＃１−３］から遷移先状態番号＝４が取得され、ステップＳ７０４でスタックにプッシュされる）。
【０１０２】
なお、猫の話題に関するルールデータ１１０［＃１−１］と狐の話題に関するルールデータ１１０［＃１−３］は、共に入力文から生成される入力単語組が単語「目」を含むときに選択され得るが、どちらが選択されるかは、入力単語組と各ルールデータ１１０の想定入力単語組との類似度（コサイン類似度）を算出するときの条件によって変化し得る（図５及び図６のステップＳ６０７、Ｓ６０８、Ｓ６０９、図７のステップＳ７０１）。このような構成により、対話が画一的になるのを回避している。
【０１０３】
図９の状態番号１におけるルールデータ１１０［＃１−０］又はルールデータ１１０［＃１−１］が選択された後に遷移する図１０の状態番号２の状態、更に状態番号２から遷移する状態番号３の状態は、猫についての更に深い話題に関するルールデータ１１０群に対応している。一方、図９の状態番号１におけるルールデータ１１０［＃１−２］又はルールデータ１１０［＃１−３］が選択された後に遷移する図９の状態番号４の状態は、狐のお話（童話等）についての話題に関するルールデータ１１０群に対応している。
【０１０４】
図９の状態番号１におけるルールデータ１１０［＃１−４］は、入力文として「そうなんだ」というような曖昧な内容に対応する入力単語組が与えられたときに、「そうだと思うの」というような同様の曖昧な応答文を返すためのルールである。ルールデータ１１０［＃１−４］が出力された（図７のステップＳ７０２）後には、ルールデータ１１０［＃１−４］の破線枠から出る実線矢印を太い実線の丸で囲まれた「１」に戻して付することで示されるように、オートマトンの状態番号が、図９に示される状態番号１を維持する（図７のステップＳ７０３でルールデータ１１０［＃１−４］から遷移先状態番号＝１が取得され、ステップＳ７０４でスタックの先頭に１が記憶されたままとされる）。
【０１０５】
図１１は、図８から図９に例示されるオートマトンに対応する図６のルール検索処理の具体的な動作例を示す図である。まず、オートマトンの状態番号０において、ユーザが例えば喋ることにより、入力文Ｉｎ［０］として「動物の話でもしようか」が入力され、これに対応して「動物」「話」という２つの単語からなる入力単語組が形態素解析により生成されたとする。これに対して、メモリ２０２又は補助情報記憶装置２０５に記憶されている図３（ｃ）の複数のルールデータ１１０のうち、その想定入力単語の配列中の想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］、ｕｓｅｒＷｏｒｄｓ［１］（図３（ｃ）参照）が、上記入力単語組「動物」「話」に包含される（ここでは、「一致する」）ルールデータ１１０が検索される（図６のステップＳ６０１）。この結果、現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）が図８（ｂ）のオートマトンの状態番号０と一致し、想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］、ｕｓｅｒＷｏｒｄｓ［１］（図３（ｃ）参照）が入力単語組「動物」「話」に包含される（又は、一致する）１つのルールデータ１１０［＃０−２］が検索される。また、ステップＳ６０１では説明しなかったが、入力文Ｉｎ［０］が「タイプ」として「提案」型の疑問文であり「肯定／否定」項目として「肯定」を有するものと判定され、図１１の入力文Ｉｎ［０］に対応させられて、ルールデータ１１０［＃０−２］が検索され、応答候補ルールデータ１１２とされる（図６のステップＳ６０５の１回目の判定でＹＥＳとなりステップＳ６０６へ）。
【０１０６】
次に、図１１に示されるように、この１つの応答候補ルールデータ１１２［＃０−２］が、入力文Ｉｎ［０］に対応する応答ルールデータ１１３として選択される（図７のステップＳ７０１）。この結果、図１１に示されるように、応答ルールデータ１１３として選択されたルールデータ１１０［＃０−２］の応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［０］＝「うん、動物の話をしよう」（図１１参照）、すなわち応答文１１４（図１参照）として生成され、出力される（ステップＳ７０２）。それに伴い、応答ルールデータ１１３として選択されたルールデータ１１０［＃０−２］が参照され、このルールデータ１１０［＃０−２］に次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄとして値１が含まれるので（図７のステップＳ７０３）、オートマトンの状態番号が、いままでの状態番号０から状態番号１に遷移する（図７のステップＳ７０４）。
【０１０７】
このとき、応答ルールデータ１１３として選択されたルールデータ１１０［＃０−２］のように、初めて選択された応答ルールデータ１１３である場合には、そのルールデータ１１０［＃０−２］の現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）の値０が、まずスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）にプッシュされて記憶され、続いて、ルールデータ１１０［＃０−２］の次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄの値１が、次のスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）に更にプッシュされて記憶される（図７のステップＳ７０４）。この場合、状態番号０が、１回前の過去のスタック状態番号ＮＳＡとして記憶され、次遷移先状態番号１が、最新のスタック状態番号ＮＳＡとして記憶されることになる。
【０１０８】
またこのとき、図７のフローチャートには記載していないが、図１の応答文記憶部１０５に対応するメモリ２０２又は補助情報記憶装置２０５（図２参照）内の応答文記憶部（図示せず）に、応答ルールデータ１１３として選択されたルールデータ＃０−２の応答文Ｏｕｔ［０］＝「うん、動物の話をしよう」が記憶される。
【０１０９】
次に、遷移後のオートマトンの状態番号１において、入力文Ｉｎ［１］として「猫を飼おうと思うんだけど」が入力され、これに対する形態素解析により単語「猫」を含む入力単語組１１１が生成されたとする。これに対して、図３（ｃ）の複数のルールデータ１１０のうち、その想定入力単語の配列中の想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］（図３（ｃ）参照）が上記入力単語組「猫」に包含される（又は、一致する）ルールデータ１１０が検索される（図６のステップＳ６０１）。この結果、現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）が図９のオートマトンの状態番号１と一致し、想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］、ｕｓｅｒＷｏｒｄｓ［１］（図３（ｃ）参照）が入力単語組「猫」に包含される（又は、一致する）１つのルールデータ１１０［＃１−０］が検索される。また、入力文Ｉｎ［１］が「タイプ」として「その他」型の疑問文であり「肯定／否定」項目として「肯定」を有するものと判定され、図１１の入力文Ｉｎ［１］に対応させられて、ルールデータ１１０［＃１−０］が応答候補ルールデータ１１２として検索される（図６のステップＳ６０５の１回目の判定でＹＥＳとなりステップＳ６０６へ）。
【０１１０】
次に、図１１に示されるように、この１つの応答候補ルールデータ１１２［＃１−０］が、入力文Ｉｎ［１］に対応する応答ルールデータ１１３として選択される（図７のステップＳ７０１）。この結果、図１１に示されるように、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−０］の応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［１］＝「猫の目って大きいよね」（図１１参照）、すなわち応答文１１４（図１参照）として生成され、出力される（ステップＳ７０２）。それに伴い、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−０］が参照され、このルールデータ１１０［＃１−０］に次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄとして値２が含まれるので（図７のステップＳ７０３）、オートマトンの状態番号が、いままでの状態番号１から状態番号２に遷移する（図７のステップＳ７０４）。
【０１１１】
このとき、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−０］のように、２回目以降に選択された応答ルールデータ１１３である場合には、そのルールデータ１１０［＃１−０］に含まれる次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄの値２が、最新のスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）にプッシュされて記憶される（ステップＳ７０４）。
【０１１２】
またこのとき、図６のフローチャートには記載していないが、前述した応答文記憶部に、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−０］の応答文Ｏｕｔ［１］＝「猫の目って大きいよね」が記憶される。
【０１１３】
次に、遷移後のオートマトンの状態番号２において、入力文Ｉｎ［２］として「そうだね、目が大きくて可愛いよね」が入力され、単語「目」を含む入力単語組１１１が生成されたとする。これに対して、図３（ｃ）の複数のルールデータ１１０のうち、その想定入力単語の配列中の想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］（図３（ｃ）参照）が上記入力単語組「目」に包含される（又は、一致する）ルールデータ１１０が検索される（ステップＳ６０１）。
【０１１４】
この結果、図６のステップＳ６０１→Ｓ６０２→Ｓ６１３→Ｓ６０１のループ処理により、想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］（図３（ｃ）参照）が入力単語組「目」に包含される（又は、一致する）のに加えて、現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）がオートマトンの状態番号２と一致する１つのルールデータ１１０［＃２−０］と、現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）が状態番号１と一致するルールデータ１１０［＃１−１］、［＃１−３］とが順次検索されて、順次ステップＳ６０２の判定がＹＥＳとなる。続いて、その後のステップＳ６０３からＳ６１２において、ルールデータ１１０［＃２−０］については、そのオートマトンの状態番号２が状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）の一番上にプッシュされている最新のスタック状態番号ＮＳＡ（＝２）と一致し、それにより１回目のステップＳ６０５でＹＥＳと判定される結果、そのスコアに、状態番号係数＝１が累算される（ステップＳ６０８）。同様に、ルールデータ１１０［＃１−１］及び［＃１−３］については、それらのオートマトンの状態番号が状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）の一番上から２番目にプッシュされているスタック状態番号ＮＳＡ（＝１）と一致し、それにより２回目のステップＳ６０５でＹＥＳと判定されることにより、ステップＳ６１２がそれぞれ１回ずつ実行される結果、それぞれのスコアに、状態番号係数＝１×０．９＝０．９が累算される（ステップＳ６１２、Ｓ６０８）。
【０１１５】
以上より、そのスコアが１．０倍されたルールデータ１１０［＃２−０］と、それぞれのスコアが０．９倍されたルールデータ１１０［＃１−１］及び［＃１−３］とが、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓにそれぞれ応答候補ルールデータ１１２として取得される。
【０１１６】
次に、図６のフローチャートには示されていないが、ルールデータ１１０［＃２−０］と、ルールデータ１１０［＃１−１］及び［＃１−３］について、それぞれの応答文１１４が前述した応答文記憶部に登録されているか否かが判定される。これにより、ルールデータ１１０［＃２−０］（図１０）とルールデータ１１０［＃１−１］（図９）の応答文＝「猫の目って大きいよね」が、応答文Ｏｕｔ［１］として出力されていて上記応答文記憶部に登録されていることが判定される。この結果、同じ応答文１１４が続けて出力されてしまうことを避けるために、ルールデータ１１０［＃２−０］（図１０）とルールデータ１１０［＃１−１］（図９）は選択されずに、ルールデータ１１０［＃１−３］が、図１１に示されるように、入力文Ｉｎ［２］に対応する応答ルールデータ１１３として選択される。
【０１１７】
この結果、図１１に示されるように、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−３］の応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［２］＝「狐って目が猫みたいかも」（図１１参照）、すなわち応答文１１４（図１参照）として生成され、出力される（ステップＳ７０２）。それに伴い、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−３］が参照され、このルールデータ１１０［＃１−３］に次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄとして値２が含まれるので（図７のステップＳ７０３）、次に選択すべきルールデータ１１０を表すオートマトンの状態番号が、いままでの状態番号２を維持する（図７のステップＳ７０４）。
【０１１８】
このとき、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−３］は２回目以降に選択された応答ルールデータ１１３であるため、そのルールデータ１１０［＃１−３］に含まれる次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄの値２が、最新のスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）にプッシュされて記憶される（ステップＳ７０４）。
【０１１９】
またこのとき、図６のフローチャートには記載していないが、前述した応答文記憶部に、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−３］の応答文Ｏｕｔ［２］＝「狐って目が猫みたいかも」が記憶される。
【０１２０】
次に、遷移後のオートマトンの状態番号２において、入力文Ｉｎ［３］として「急に狐の話になるのね」が入力され、単語「狐」を含む入力単語組１１１が生成されたとする。これに対して、図３（ｃ）の複数のルールデータ１１０のうち、その想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］（図３（ｃ）参照）が上記入力単語組「狐」に包含される（又は、一致する）ルールデータ１１０が検索される（ステップＳ６０１）。
【０１２１】
この結果、図６のステップＳ６０１→Ｓ６０２→Ｓ６１３→Ｓ６０１のループ処理において、図９のオートマトンの現在の状態番号２を現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）として含むルールデータ１１０には、「狐」を想定入力単語の配列ｕｓｅｒＷｏｒｄｓ［］（図３（ｃ）参照）に含むルールデータ１１０は存在しないが、図９に例示されるように、状態番号１を現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）として含むルールデータ１１０中に、「狐」を想定入力単語の配列ｕｓｅｒＷｏｒｄｓ［］（図３（ｃ）参照）に含むルールデータ１１０［＃１−２］が検索されて、ステップＳ６０２の判定がＹＥＳとなる。続いて、その後のステップＳ６０３からＳ６１２において、ルールデータ１１０［＃１−２］については、そのオートマトンの状態番号１が状態番号のスタック配列：ｓｔａｔｅ＿ｉｄの最新の状態番号２よりも先にプッシュされている過去のスタック状態番号ＮＳＡ（＝１）と一致し、それにより２回目のステップＳ６０５でＹＥＳと判定される結果、ステップＳ６１２が１回実行される結果、そのスコアに、状態番号係数＝１×０．９＝０．９が乗算される（ステップＳ６１２、Ｓ６０８）。
【０１２２】
以上より、ルールデータ１１０［＃１−２］のみが、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓに応答候補ルールデータ１１２として取得される。
【０１２３】
次に、図１１に示されるように、応答候補ルールデータ１１２として取得されたルールデータ１１０［＃１−２］が、入力文Ｉｎ［３］に対応する応答ルールデータ１１３として選択される（ステップＳ７０１）。この結果、図１１に示されるように、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−２］の応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［３］＝「狐って夜に行動するイメージあるよね」（図１１参照）、すなわち応答文１１４（図１参照）として生成され、出力される（ステップＳ７０２）。その後、応答ルールとして選択されたルールデータ１１０［＃１−２］が参照され、このルールデータ１１０［＃１−２］に次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄとして値４が含まれるので（図７のステップＳ７０３）、オートマトンの状態番号が、いままでの状態番号２から状態番号４に遷移する（図７のステップＳ７０４）。
【０１２４】
このとき、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−２］は２回目以降に選択された応答ルールデータ１１３であるため、そのルールデータ１１０［＃１−２］に含まれる次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄの値４が、最新のスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄにプッシュされて記憶される（ステップＳ７０４）。
【０１２５】
またこのとき、前述した応答文記憶部に、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−２］の応答文Ｏｕｔ［１］＝「狐って夜に行動するイメージあるよね」が記憶される。
【０１２６】
更に続いて、遷移後の状態番号１において、入力文Ｉｎ［４］として「そうなんだ、よく知ってるね」が入力され、単語「そうなんだ」を含む入力単語組１１１が生成されたとする。これに対して、図３（ｃ）の複数のルールデータ１１０のうち、その想定入力単語の配列中の想定入力単語組ｕｓｅｒＷｏｒｄｓ［０］（図３（ｃ）参照）が上記入力単語組「そうなんだ」に包含される（又は、一致する）ルールデータ１１０が検索される（ステップＳ６０１）。
【０１２７】
この結果、図６のステップＳ６０１→Ｓ６０２→Ｓ６１３→Ｓ６０１のループ処理において、図９のオートマトンの現在の状態番号４を現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）として含むルールデータ１１０には、「そうなんだ」を想定入力単語の配列ｕｓｅｒＷｏｒｄｓ［］（図３（ｃ）参照）に含むルールデータ１１０は見つからないが、図９に例示されるように、オートマトンの状態番号１を現在の状態番号ｓｔａｔｅ＿ｉｄ（図３（ｃ）参照）として含むルールデータ１１０中に、「そうなんだ」を想定入力単語の配列ｕｓｅｒＷｏｒｄｓ［］（図３（ｃ）参照）に含むルールデータ１１０［＃１−４］が検索されて、ステップＳ６０２の判定がＹＥＳとなる。続いて、その後のステップＳ６０３からＳ６１２において、ルールデータ１１０［＃１−４］については、そのオートマトンの状態番号１が状態番号のスタック配列：ｓｔａｔｅ＿ｉｄの最新のスタック状態番号ＮＳＡ（＝４）よりも先にプッシュされている過去のスタック状態番号ＮＳＡ（＝１）と一致し、それにより３回目のステップＳ６０５でＹＥＳと判定される結果、ステップＳ６１２が２回実行される結果、そのスコアに状態番号係数＝１×０．９×０．９＝０．８１が乗算される（ステップＳ６１２、Ｓ６０８）。
【０１２８】
以上より、ルールデータ１１０［＃１−４］が、応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓに応答候補ルールデータ１１２として取得される。
【０１２９】
次に、図１１に示されるように、応答候補ルールデータ１１２として取得されたルールデータ１１０［＃１−４］について、その応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［４］＝「そうだと思うの」が前述した応答文記憶部に登録されているか否かがチェックされる。この結果、上記の応答文Ｏｕｔ［４］＝「そうだと思うの」が応答文記憶部に登録されていないことが、判定される。この結果、オートマトンの状態番号１を含むルールデータ１１０［＃１−４］が、図１１に示されるように、入力文Ｉｎ［４］に対応する応答ルールデータ１１３として選択される（ステップＳ７０１）。そして、図１１に示されるように、ルールデータ１１３として選択されたルールデータ１１０［＃１−４］の応答文ｂｏｔ＿ｒｅｐｌｙ（図３（ｃ）参照）が、応答文Ｏｕｔ［４］＝「そうだと思うの」（図１１参照）、すなわち応答文１１４（図１参照）として生成され、出力される（ステップＳ７０２）。そそれに伴い、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−４］が参照され、このルールデータ１１０［＃１−４］に次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄとして値１が含まれるので（図７のステップＳ７０３）、次に選択すべきルールデータ１１０を表すオートマトンの状態番号が、いままでの状態番号１を維持する（図７のステップＳ７０４）。
【０１３０】
このとき、応答ルールデータ１１３として選択されたルールデータ１１０［＃１−４］は２回目以降に選択された応答ルールデータ１１３であるため、そのルールデータ１１０［＃１−４］に含まれる次遷移先状態番号ｎｅｘｔ＿ｓｔａｔｅ＿ｉｄの値１が、最新のスタック状態番号ＮＳＡとして、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（図３（ａ）参照）にプッシュされて記憶される（ステップＳ７０４）。
【０１３１】
またこのとき、図６のフローチャートには記載していないが、前述した応答文記憶部に、応答ルールデータ１１３として選択されたルールデータ＃１−４の応答文Ｏｕｔ［４］＝「そうだと思うの」（応答文１１４）が記憶される。
【０１３２】
また、図８（ｂ）に示されるオートマトンの状態番号０を含むルールデータ１１０［＃０−３］は、入力文の項目が「＊」になっている。これは、「どんな単語(形態素)でも該当するものとして扱う」という単語一致条件を持つルールである。そして、例えば、入力文として、状態番号０を含む他のどのルールデータ１１０［＃０−０］〜［＃０−２］にも設定されていないキーワード（かつ疑問文等の条件は無し）が与えられた場合に、「え、何か言った？」というような応答文を出力するためのルールである。この「＊」をワイルドカードと呼ぶ。ルールデータ１１０［＃０−３］の破線枠から出る実線矢印によって、ルールデータ１１０［＃０−３］が選択された後は、選択前と同じ状態番号０を維持することが示されている（すなわち、次遷移先状態番号が０）。このようなワイルドカードのルールデータを設定することにより、曖昧な対話を実現することが可能となる。
【０１３３】
図１０に示されるオートマトンの状態番号３を含むルールデータ１１０［＃３−２］は、入力文の項目が「＃」になっている。これをスーパーワイルドカードと呼ぶ。スーパーワイルドカードは、ワイルドカードの場合と同様の「どんな単語(形態素)でも該当するものとして扱う」という単語一致条件を持つが、ルールデータ１１０として、オートマトンの現在の状態番号と一致する状態番号を含むもののみが応答候補ルールデータ１１２として追加され、このルールデータ１１０が候補に追加された段階で、他の状態のルールデータ１１０は応答候補ルールデータリストから削除される。上述のワイルドカードに似て、入力文として、状態番号３を含む他のどのルールデータ１１０［＃３−０］〜［＃３−１］にも設定されていないキーワード（かつ疑問文等の条件は無し）が与えられた場合に、「触ってみたいよう」というような応答文を出力するためのルールである。ここで例えば、ルールデータ１１０［＃３−３］の破線枠から出る実線矢印によって、ルールデータ１１０［＃３−３］が選択された後は、選択前とは異なる状態番号（例えば状態番号２）に遷移する。このように、スーパーワイルドカードのルールデータ１１０にしかるべき遷移先が記載されているときには、他の状態番号に遷移する挙動が実現できる。このようなスーパーワイルドカードのルールデータ１１０を設定することにより、対話が詰まったときに話題を大きく変えるような対話を実現することが可能となる。或いは、例えばシステム的に満足のいく回答が得られるまで同じ状態に滞留する、すなわち同じ質問を繰り返すなどの挙動を実現することも可能である。
【０１３４】
図６のルール検索処理において、現在の入力単語組に対して全てのルールデータの検索が終了しステップＳ６１３の判定がＹＥＳになった後に、ＣＰＵ２０１は、上述したワイルドカード及びスーパーワイルドカードについても、前述のステップＳ６０１からＳ６１３の処理の場合と同様の検索処理を実行する。その詳細については省略する。
【０１３５】
なお、前述しようたに、スーパーワイルドカードは、それに対応するルールデータ１１０が応答ルールデータ１１３（図１参照）として選択された後は、選択前とは異なる状態番号にオートマトンの状態番号が遷移するという性格上、このルールデータ１１０に含まれる状態番号は、状態番号のスタック配列：ｓｔａｔｅ＿ｉｄ（＝図１のスタック状態番号ＮＳＡ）に同じ番号のスタック状態番号ＮＳＡが含まれているか否かにかかわらず、現在の状態番号と一致しないルールは応答候補ルールデータリストｔｒａｎｓＣａｎｄｉｄａｔｅｓに追加しないように制御されてよい。また、このリストにスーパーワイルドカードのルールが追加された段階で、リストからは、現在の状態番号以外の状態番号を有するルールを排除するように制御されてよい。
【０１３６】
以上、本実施形態では、データベース１０２に記憶される複数のルールデータ１１０のうち入力発話情報１１５に応じたルールデータ１１０、例えば入力発話情報１１５中の入力単語の組に対応した想定入力単語の組が設定されているルールデータ１１０が、応答ルールデータ１１３の候補（応答候補ルールデータ１１２）として選択される。また、上記複数のルールデータ１１０のうちオートマトンの現在の状態を含む所定の状態、例えば現在の状態又はオートマトンの状態を順次記憶する記憶部１０４に記憶された複数の状態に含まれる状態を示すルールデータ１１０が、応答ルールデータ１１３の候補（応答候補ルールデータ１１２）として選択される。そして、そのように選択された応答ルールデータ１１３に含まれる応答文１１４が出力される。これにより、本実施形態では、ユーザとの例えば対話における話の流れに沿った応答ルールデータ１１３に基づく応答文１１４を出力することができる。このとき、本実施形態では、複数のルールデータ１１０のうち、対応するオートマトンの状態が記憶部１０４に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを応答ルールデータ１１３として優先的に選択することができる。これにより、現在の話題により良く対応する応答ルールデータ１１３に基づく応答文１１４を出力することができる。
【０１３７】
本実施形態の場合と異なり、従来の対話装置では、例えば、オートマトンの現在の状態番号を含むルールデータとして適切なルールデータが設定されていないために、現在の状態番号のルールデータ１１０が応答ルールデータ１１３として選択されなかった場合には、例えばランダムに他の状態番号を含むルールデータを検索せざるを得ず、その結果、話題が唐突に切り替わるというような事態が発生していた。これに対して、本実施形態では、上述したようにして応答ルールデータ１１３の選択を行うことができるので、話題が唐突に切り替わるのを抑制することができ、ユーザと自然に対話できる対話装置１００を提供することが可能となる。
【０１３８】
また、本実施形態では、応答ルールデータ１１３を選択するための指標を示すスコアがルールデータ１１０毎に算出され、複数のルールデータ１１０のうちの、記憶部１０４に記憶された複数の状態のうちのより過去に記憶された状態と同じ状態を示すオートマトンの状態に対応するルールデータ１１０が応答ルールデータとして選択されにくくなるようにスコアが算出される。例えば、各ルールデータ１１０において、そのルールデータ１１０が示す状態が記憶部１０４においてより過去に記憶された状態であるほど値が減衰する減衰係数が、そのルールデータ１１０の状態番号係数に乗算され、乗算された状態番号係数がそのルールデータ１１０のスコアに累算される。そして、複数のルールデータ１１０のうち最大のスコアを有するルールデータ１１０が、応答ルールデータ１１３として選択される。このため、過去に辿ってきたユーザとの話題に基づき、かつより最近の話題により良く沿った、自然な対話が行える対話装置１００を提供することが可能となる。
【０１３９】
また、本実施形態では、入力文（入力発話情報１１５）の文脈に応じてその入力文を構成する入力単語毎に可変の重みが設定され、応答候補ルールデータ１１２毎に、その応答候補ルールデータ１１２中の各想定入力単語に対応する各入力単語の重みが累算されてその応答候補ルールデータ１１２の入力文に対する類似度を示す類似度パラメータが算出され、その類似度パラメータに応じてその応答候補ルールデータ１１２に対するスコアが算出される。そして、各応答候補ルールデータ１１２のスコア値のうち最大のスコアを有する応答候補ルールデータ１１２が応答ルールデータ１１３として選択される。このため、入力文の文脈に応じた正しい応答ルールデータ１１３を選択することが可能となる。
【０１４０】
更に、本実施形態では、複数のルールデータ１１０の各々に含まれる想定入力単語と、入力文からの形態素解析により抽出された入力単語組１１１中の複数の入力単語との比較結果に基づいて、データベース１０１中の複数のルールデータ１１０から応答候補ルールデータ１１２が検索される。このようにして、本実施形態では、単語同士の比較により応答候補ルールデータ１１２が検索されるので、話題に含まれる適切な単語に基づく対話ルールの決定が可能となる。
【０１４１】
加えて、本実施形態では、応答候補ルールデータ１１２からの応答ルールデータ１１３の選択において過去所定回数分の応答文を記憶した応答文記憶部１０５を参照することにより同じ応答文１１４が繰り返し出力されないようにすることができるので、対話が単調になるのを防ぐことが可能となる。
【０１４２】
本実施形態では、入力単語毎に重み係数を設定しているが、全ての入力単語に一律に同じ重み係数を設定してもよい。
【０１４３】
本実施形態では、各応答候補ルールデータのスコアとしてコサイン類似度を算出し、その大小によって複数の応答候補ルールデータ１１２から応答ルールデータ１１３が選択されるようにしたが、テキストマッチングのための各種類似度の演算が適用されてもよい。
【０１４４】
本実施形態では、応答候補ルールデータ１１２の状態が記憶部１０４に記憶されている複数のスタック状態番号ＮＳＡのうちのより過去に記憶されたスタック状態番号ＮＳＡであるほど値が減衰する減衰係数を状態番号係数に乗算し、この状態番号係数を応答候補ルールデータ１１２のスコアに累算し、そのスコアに応じて複数の応答候補ルールデータ１１２から応答ルールデータ１１３を選択するようにしたが、複数の状態履歴から他のアルゴリズムに基づいて過去の特定の状態に対応する応答候補ルールデータ１１２が優先的に応答ルールデータ１１３として選択されるようにしてもよい。
【０１４５】
本実施形態では、ルールデータ１１０毎に設定された想定入力単語組が入力単語組１１１と比較されることにより応答候補ルールデータ１１２が選択されるようにしたが、想定入力単語組ではなく、例えばルールデータ１１０中の応答文から形態素解析により得られる単語組が入力単語組１１１と比較されてもよい。その他、様々に設定された単語組や文と入力単語組とが比較されてもよい。
【０１４６】
本実施形態では、ユーザによる発話の内容が想定外の内容である場合（入力単語組１１１の複数の単語が、いずれのルールデータ１１０の想定用入力単語組の複数の単語を包含していない場合）に非想定用ルール（ワイルドカードリスト、スーパーワイルドカードリスト）が参照されるようにしたが、想定外の内容である場合にそれらを参照せずに、所定のルールに従って対話が行われるようにしてもよく、あるいは、何も発話しないようにしてもよい。
【０１４７】
本実施形態では、応答候補ルールデータ１１２からの応答ルールデータ１１３の選択において過去所定回数分の応答文を記憶した応答文記憶部１０５を参照することにより同じ応答文１１４が繰り返し出力されないようにしたが、所定のアルゴリズムに従って同じ応答文を繰り返し出力されるようにしてもよい。
【０１４８】
本実施形態では、データベース１０１中の複数のルールデータ１１０から入力単語組１１１に対応する応答候補ルールデータ１１２を選択し、複数の応答候補ルールデータ１１２の中から応答ルールデータ１１３を最終的に選択する手法として、図６及び図７のフローチャートで示されるアルゴリズムの手法を示したが、記憶部１０４に記憶された複数のスタック状態番号ＮＳＡのうちのより新しく記憶されたスタック状態番号ＮＳＡに対応する応答候補ルールデータ１１２が応答ルールデータ１１３として優先的に選択されるという条件で、様々なアルゴリズムの手法を採用することが可能である。例えば、データベース１０２中のルールデータ１１０から応答候補ルールデータ１１２を検索する段階から、記憶部１０４に記憶された複数のスタック状態番号ＮＳＡ中の各状態とルールデータ１１２中の各状態とが比較されながら検索が行われてもよい。
【０１４９】
上記本実施形態の構成に加えて、現在の状態番号と同じ状態番号を含むルールデータがみつかったらその時点で応答候補ルールデータリスト１１２の検索を終了し、記憶部１０４に記憶されたスタック状態番号ＮＳＡを考慮しない手法が採用されてもよい。
【０１５０】
上記本実施形態では、図６において全てのルール検索が終了するまで入力単語組に包含される想定入力単語組を含むルールデータ１１０を検索するステップＳ６０１の処理が繰り返し実行されている。これに対して、オートマトンの現在の状態番号及びスタック配列に含まれるスタック状態番号ＮＳＡのいずれかと一致する状態番号を含むルールデータ１１０についてのみ、入力単語組に応じた検索が行われるようにしてもよい。
【０１５１】
更に、上記本実施形態では、減衰係数を反映させたコサイン類似度がスコアとして算出されているが、応答候補ルールデータ１１２毎に一旦コサイン類似度が算出されてから減衰係数を用いてスコアが減衰させられるような処理が実行されてもよい。また、減衰係数を乗算項として用いているが、減算項として用いてスコアを算出するように、スコアの算出式を設定してもよい。
【０１５２】
上述の実施形態において、マイクロフォンをさらに備え、取得部１０６がマイクロフォンを介して入力された例えばユーザのである所定の対象の音声に基づいて、入力発話情報１１５を取得するようにしてよい。
また、上述の実施形態において、スピーカをさらに備え、応答文出力部１０３は、応答文１１４に対応する音声を、スピーカを介して例えばユーザである所定の対象に対して出力するようにしてもよい。
これらの構成により、例えば本実施形態による対話装置１００を、ロボットやスマートフォンの対話アプリとして実現することが可能となる。
【０１５３】
本実施形態では、対話装置１００を図２のハードウェア構成例を有するコンピュータによって実行されるコンピュータプログラムとして提供することも可能となる。
【０１５４】
本実施形態では、ユーザからの入力文は音声データとして与えられそれに対して音声認識が実行されることにより入力文のテキストデータが与えられたが、これに限られるものではなく、ネットワークなどからメールシステムや各種メッセージングシステム、又はＳＮＳシステムなどを介して入力文のテキストデータが直接与えられてもよい。
【０１５５】
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができる。
【０１５６】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【０１５７】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
応答文をそれぞれ含み、互いに異なるオートマトンの状態に対応付けられた複数のルールデータを記憶し、前記オートマトンの状態の遷移先の状態が定義されたデータベースと、
所定の対象から入力された入力発話情報を取得する取得手段と、
前記複数のルールデータから、前記オートマトンの現在の状態を含む所定の状態と、前記取得された入力発話情報とに応じて、応答ルールデータを選択し、選択した応答ルールデータに含まれる前記応答文を前記所定の対象に対して出力する応答文出力手段と、
前記オートマトンの状態を順次記憶するための記憶手段と、を備え、
前記所定の状態は、前記記憶手段に記憶された複数の状態を含み、
前記応答文出力手段は、前記複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、前記応答ルールデータとして優先的に選択する、
対話装置。
（付記２）
前記応答文出力手段は、
前記複数のルールデータのうちの、前記オートマトンの現在の状態を含む所定の状態に対応する前記複数のルールデータよりも少ない複数のルールデータから、前記取得された入力発話情報に応じて、前記応答ルールデータの候補となる応答候補の複数のルールデータを検索して取得するデータ取得手段を有し、
前記取得した応答候補の複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示す応答候補ルールデータを、前記応答ルールデータとして優先的に選択する、
付記１に記載の対話装置。
（付記３）
前記応答文出力手段は、
前記応答ルールデータを選択するための指標を示すスコアを、前記ルールデータ毎に算出し、前記複数のルールデータのうちの、前記記憶手段に記憶された複数の状態のうちのより過去に記憶された状態と同じ状態を示す前記オートマトンの状態に対応する前記ルールデータが前記応答ルールデータとして選択されにくくなるように、前記スコアを算出する、
付記１又は２に記載の対話装置。
（付記４）
前記複数のルールデータの各々は、前記オートマトンの状態及び前記応答文に対応付けられた、前記所定の対象から入力されると想定される想定入力発話文を含み、
前記取得された入力発話情報に基づいて、前記所定の対象の発話文中に含まれる入力単語を抽出する抽出手段と、
抽出された前記入力単語毎に重みを設定する重み設定手段と、
前記入力単語毎に設定された前記重みに応じて、前記入力単語を含む前記所定の対象の発話に対する前記想定入力発話文の類似度を示す類似度パラメータを算出する類似度パラメータ算出手段と、をさらに備え、
前記応答文出力手段は、前記設定された前記類似度パラメータに応じて、前記スコアを算出する、
付記３に記載の対話装置。
（付記５）
前記選択された応答ルールデータに基づいて生成された応答文を過去所定回数分記憶する応答文記憶手段を更に備え、
前記応答文出力手段は、前記応答文記憶手段を参照することにより、前記応答候補ルールデータからの前記応答ルールデータの選択を、同じ応答文が繰り返し出力されないように、行う、付記１乃至４の何れか１項に記載の対話装置。
（付記６）
マイクロフォンをさらに備え、
前記取得手段は、前記マイクロフォンを介して入力された前記所定の対象の音声に基づいて、前記入力発話情報を取得する、
付記１乃至５のいずれか１項に記載の対話装置。
（付記７）
スピーカをさらに備え、
前記応答文出力手段は、前記応答文に対応する音声を、前記スピーカを介して前記所定の対象に対して出力する、
付記１乃至６の何れか1項に記載の対話装置。
（付記８）
所定の対象から入力された入力発話情報を取得する処理と、
応答文をそれぞれ含み、互いに異なるオートマトンの状態に対応付けられた複数のルールデータを記憶し、前記オートマトンの状態の遷移先の状態が定義されたデータベースを用い、前記複数のルールデータから、前記オートマトンの現在の状態を含む所定の状態と、前記取得された入力発話情報とに応じて、応答ルールデータを選択し、選択した応答ルールデータに含まれる前記応答文を前記所定の対象に対して出力する出力処理と、
前記オートマトンの状態を記憶手段に順次記憶する処理と、を含み、
前記所定の状態は、前記記憶手段に記憶された複数の状態を含み、
前記出力処理は、前記複数のルールデータのうちの、対応する前記オートマトンの状態が前記記憶手段に記憶された複数の状態のうちのより新しく記憶された状態と同じ状態を示すルールデータを、前記応答ルールデータとして優先的に選択する処理を含む、
対話方法。
（付記９）
コンピュータに、付記８に記載の対話方法を実行させるためのプログラム。
【符号の説明】
【０１５８】
１００  対話装置
１０１  データベース
１０２  データ取得部
１０３  応答文出力部
１０４  記憶部
１０５  応答文記憶部
１０６  取得部
１０７  抽出部
１１０  ルールデータ
１１１  入力単語組
１１２  応答候補ルールデータ
１１３  応答ルールデータ
１１４  応答文
１１５  入力発話情報
ＮＳＡ  スタック状態番号
２０１  ＣＰＵ
２０２  メモリ
２０３  入力装置
２０４  出力装置
２０５  補助情報記憶装置
２０６  媒体駆動装置
２０７  ネットワーク接続装置
２０８  音声入力装置
２０９  音声出力装置
２１０  バス
２１１  可搬型記録媒体
【図１】
2020119221.tif 000003
【図２】
2020119221.tif 000004
【図３】
2020119221.tif 000005
【図４】
2020119221.tif 000006
【図５】
2020119221.tif 000007
【図６】
2020119221.tif 000008
【図７】
2020119221.tif 000009
【図８】
2020119221.tif 000010
【図９】
2020119221.tif 000011
【図１０】
2020119221.tif 000012
【図１１】
2020119221.tif 000013