(57)【要約】【課題】ユーザの入力間違いや音声認識の間違いをユーザが訂正するための入力を受理し、その訂正内容を対話に反映させることが可能であり、このような訂正入力を取り扱う対話シナリオを容易に設計することが可能である対話装置を提供する。【解決手段】  ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話装置であって、前記ユーザの入力との対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加する訂正シナリオ追加手段(１０３)を具備する。【選択図】      図１
2006277519.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話装置であって、
前記ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加する訂正シナリオ追加手段を具備する対話装置。
【請求項２】
前記対話結果を時系列順に記憶した対話結果記憶手段を有し、
前記訂正シナリオ追加手段は、前記対話結果記憶手段に記憶された前記時系列順のうち最新の対話結果に対応する訂正シナリオを追加する請求項１記載の対話装置。
【請求項３】
前記対話シナリオの話題ごとに前記訂正シナリオを記憶した訂正シナリオ記憶手段を有し、
前記訂正シナリオ追加手段は、前記訂正シナリオ記憶手段から前記対話結果の話題と同様の話題の訂正シナリオを抽出する請求項１記載の対話装置。
【請求項４】
前記対話シナリオと共に当該対話シナリオに基づく第１の音声認識文法が記憶された対話シナリオ記憶手段を有し、
更に、前記訂正シナリオ記憶手段は前記訂正シナリオに基づく第２の音声認識文法を記録し、
前記訂正シナリオ追加手段は前記訂正シナリオを追加する場合、前記第１の音声認識文法に前記第２の音声認識文法を追加する請求項３記載の対話装置。
【請求項５】
前記訂正シナリオへの遷移を決定する前記ユーザ入力として、訂正の意図を示す発話を受理する発話受理手段を有する請求項１記載の対話装置。
【請求項６】
前記発話受理手段は、前記訂正シナリオへの遷移を決定する前記ユーザ入力として、訂正対象となる話題の属性名を指定する発話を受理する請求項５記載の対話装置。
【請求項７】
前記対話シナリオの記述様式は、前記訂正シナリオが追加される前の基本シナリオと前記訂正シナリオとに分けて記述する請求項１記載の対話装置。
【請求項８】
前記対話シナリオの記述様式は、前記対話シナリオに基づいて前記対話が進行している時に、指定箇所に対して訂正シナリオとして動作しているか否かを確認する手続きを含む請求項１記載の対話装置。
【請求項９】
ユーザとの対話を行う対話システムの動作を規定する対話シナリオを編集する対話シナリオ編集装置であって、
ユーザとの対話の流れを指定する基本的な対話シナリオを記憶する対話シナリオ記憶手段と、
過去に終了した対話結果を訂正する訂正シナリオを記憶する訂正シナリオ記憶手段と、
前記対話シナリオと前記訂正シナリオのそれぞれを分けて編集する編集手段とを有する対話シナリオ編集装置。
【請求項１０】
前記編集手段により編集が確定した場合、前記基本的な対話シナリオの対話状態に前記訂正シナリオを接続して結果を出力する訂正シナリオ接続手段を有する請求項９記載の対話シナリオ編集装置。
【請求項１１】
ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話方法であって、
前記ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加するステップを具備する対話方法。
【請求項１２】
ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話処理であって、
前記ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加するステップとを具備する対話処理をコンピュータに行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話シナリオに基づいてユーザと対話を行う対話装置、対話方法及びプログラム、及びその対話シナリオや訂正シナリオを編集する対話シナリオ編集装置に関する。
【背景技術】
【０００２】
近年、音声や自然言語入力を可能とするインターフェースに関する研究が盛んである。また、そのようなインターフェースを用いるエキスパートシステムなどが多数開発され、入力された音声やテキストなどを受理する装置が一般向けにも利用可能となっている。特に、音声による入力はユーザにとって利用しやすいものと位置付けられ、音声認識技術を利用し音声入力で動作するシステムが開発されている。
【０００３】
音声による自然言語入力の場合、システムが必要とする全ての条件をユーザが一度に話すことは少なく、ユーザとシステムとの音声による会話のやり取りが必要となる。例えば、ユーザの入力内容に不備がある場合には、その足りない条件をシステムから質問し、その質問に対するユーザの回答を統合するなどの処理が必要となる。この統合処理のためには、今現在行われている対話の内容をシステムが把握することが不可欠である。
【０００４】
音声による自然言語入力における従来の技術として、ユーザとの対話パタンを定める対話シナリオを状態遷移モデルで記述する方法がある(［非特許文献1］)。状態遷移モデルによる対話シナリオは図５のようなグラフで表すことができる。グラフの各ノード(ステート)が対話の状態を表す。ステートはシステムからの発話やコマンド実行などの対話システムの動作を指定する。ステート間をつなぐリンクをユーザ入力とする。ステートからユーザ入力のリンクを辿って別のステートに遷移することで対話が進行する。
【０００５】
この方法によると、あるステートから別のステートへの遷移が可能なリンクによってユーザが次に入力できる値が決定される。対話シナリオはシナリオ設計者が予め作成するため、シナリオ設計者はある状態からユーザが入力し得る値を想定しなければならない。即ち、シナリオ設計者は対話シナリオ設計時に全ての対話状態に対してユーザの入力内容を想定する必要がある。
【非特許文献１】「Voice Extensible Markup Language (VoiceXML) Version 2.0」，http://www.w3.org/TR/voicexml20
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、実際にユーザが対話システムと対話する場合には、ユーザが入力間違いや翻意を起こすことがある。また音声認識を介することによってユーザの発話が正しくとも音声の誤認識が発生する場合もある。ユーザとの対話の際に入力間違いにより対話が進行してしまった場合、その間違いを訂正することを想定していない対話シナリオを利用した対話システムではユーザの訂正入力を受理して動作することができない。ユーザは間違いを訂正することが出来ずに、誤った状態のまま対話システムとの対話を進行しなければならなくなる。その結果ユーザは必要な情報を入力できず、システムからユーザが望む情報を聞き出すことが出来ない。
【０００７】
従って、上記のような間違いの影響を対話から取り除くためには、ユーザが対話状態を初期化するか、間違いが発生する前の対話状態に戻るように指示する必要がある。しかしながら、ユーザが望む状態に対話を戻して対話を再開するためには、ユーザが現在行っている対話のシナリオの全容を把握し、どのような対話を行ってきたかを思い出す必要があり、ユーザに大きな負担となってしまう。更に、戻る回数が多くなると現在の対話状態が対話シナリオのどの部分かがわからなくなり、これにより対話が破綻してしまう場合がある。
【０００８】
ユーザの入力間違いや翻意に対して対話システムがスムーズに対処するためには、シナリオ設計者がそれを訂正するための対話状態を対話シナリオに追加しなければならない。しかし、前述したように対話シナリオは対話システム設計時にシナリオ設計者が予め作成するものである。入力間違いを訂正する入力は対話システム完成後に行われる実際の対話に発生するため、シナリオ設計者が対話シナリオの設計時に予め訂正入力を想定することは極めて困難である。
【０００９】
一方、全ての訂正入力を鑑みて対話シナリオを設計できたとしても、それを実現するために各ステートに訂正のためのステートへの遷移が必要となる。ステートの遷移を追加することで対話シナリオの規模は拡大するため、シナリオ設計者は膨大な量の対話シナリオを管理しなければならなくなり、その管理コストは大幅に増大してしまう。
【００１０】
従って、本発明の目的は、ユーザの入力間違いや音声認識の間違いをユーザが訂正するための入力を受理し、その訂正内容を対話に反映させることにより、ユーザが容易に対話中の間違いを訂正することが可能となり、ユーザの目的に沿った対話を行うことが可能な対話装置を提供することにある。
【００１１】
また、本発明の目的は、ユーザの入力間違いや音声認識の間違いをユーザが訂正するための入力を受理し、その訂正内容を対話に反映させる対話シナリオを容易に設計することが可能である対話装置並びに対話シナリオ編集装置、対話方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
前記課題を解決するために、本発明の一つの観点では、ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話装置であって、前記ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加する訂正シナリオ追加手段を具備する。
【００１３】
また、前記課題を解決するために、本発明の一つの観点では、ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答を前記ユーザに提供する対話方法であって、前記ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加するステップを具備する。
【発明の効果】
【００１４】
本発明によれば、ユーザの入力間違いや音声認識の間違いをユーザが訂正するための入力を受理し、その訂正内容を対話に反映させる訂正シナリオを動的に導入することにより、ユーザが容易に対話中の間違いを訂正することが可能となり、ユーザの目的に沿った対話を行うことが可能な対話装置を提供することができる。
【００１５】
更に、本発明によれば、膨大な量の対話シナリオを必要とせずにユーザによる訂正入力を受理することが可能な対話シナリオを容易に設計できるため、対話シナリオの管理コストを低減させることができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施の形態について説明する。
【００１７】
（第１実施形態）
図１は、本発明の第１実施形態に係る対話装置の概略構成図である。図１に示す対話装置は、ユーザとの対話を行い、一度終了した対話内容についても容易に訂正可能な装置である。先ず、対話装置の対話処理部１０１は、ユーザからの入力があった場合シナリオ管理部１０２で管理されているシナリオに基づいて、ユーザとの対話を行う。また対話処理部１０１は、その話題の対話内容を一時的に記憶する。訂正シナリオ追加部１０３は、対話処理部１０１により対話状態が更新される毎に、訂正を考慮していない基本シナリオに訂正シナリオを追加する。訂正シナリオ追加部１０３は、追加する訂正シナリオを訂正シナリオ管理部１０５で管理された訂正シナリオの中から取得する。この時、訂正シナリオ追加部１０３は、履歴管理部１０４で管理された履歴情報に対応する訂正シナリオを取得する。尚、話題とは、ある目的のために対話を行う場合のその目的のことを指す。但し、本実施例では「住所検索」といったコマンドを話題と対応付けることとする。
【００１８】
次に、対話装置の各構成部での動作について詳細に説明する。対話処理部１０１は、実行された対話処理の中で対話状態が更新された時、訂正シナリオ追加部１０３に動作を依頼する。同時に対話処理部１０１は、この更新が基本シナリオから訂正シナリオへの更新或いは訂正シナリオから別の話題に関する訂正シナリオへの更新であるかどうかを確認する。これらに該当する場合、対話処理部１０１は履歴管理部１０４から訂正対象の対話内容を取得し、現在の対話内容として更新する。その後、訂正シナリオ追加部１０３に対して訂正シナリオの追加を依頼する。また、対話処理部１０１は対話処理中に話題の終了を検出した際に履歴管理部１０４に対して、終了時の対話内容履歴の登録依頼を行う。
【００１９】
シナリオ管理部１０２は、予め管理者によって作成されたシナリオを記録したシナリオデータベース（以下データベースをＤＢと呼ぶ）１０を管理する。シナリオ管理部１０２は、ユーザによる訂正入力を考慮せずに、ユーザとの対話を進行させることを念頭においた基本シナリオを記憶する。基本シナリオの例について図５で説明する。
【００２０】
訂正シナリオ追加部１０３は、対話処理部１０１により対話状態が更新される毎に基本シナリオに訂正シナリオを追加する。修正手順としては、先ず、訂正シナリオ追加部１０３は、履歴管理部１０４で管理されている履歴情報に対応する訂正シナリオを訂正シナリオ管理部１０５から取得する。訂正シナリオ追加部１０３は、取得した訂正シナリオを現在の対話状態に追加する。これによって実行済みの手続きの内容を訂正する訂正シナリオへの遷移を可能とする。訂正シナリオ追加部１０３の詳細な処理について図２、図７〜図９、図１７で詳細に説明する。
【００２１】
履歴管理部１０４は、対話処理部１０１による対話処理で話題が終了した時の対話内容を時系列順に履歴情報ＤＢ１１に記憶する。話題の終了は、対話処理部１０１の対話状態、或いは必要な情報が全て揃っているといった対話内容の状態に基づき検出される。
【００２２】
ここで履歴情報ＤＢ１１に記録される履歴情報の例について図３を参照して説明する。履歴情報は、発話ターン(左側)と対話結果として導出された値(中央)とその時の対話内容(右側)を対にした形式でテーブル３０に格納されている。但し、終了した話題が検索式ではない場合は中央の値は無効としておく。対話内容は話題と引数に分割できる。話題は“（”の左側に表記する。『住所検索』や『ジャンル検索』が相当する。引数は本対話装置が対話によってユーザに問い合わせるべき属性であり、“（）”の内部に相当する。引数の数は話題によって異なり、表記上では各引数を“、”によって区切る。各引数は属性の呼び名である属性名と実際に対話によって指定された値である属性値の組み合わせで定義されており、これを(属性名)：（属性値）と表記する。“住所検索（都道府県名：○○県、市町村名：△△市、番地：１２３町）”は『○○県△△市１２３町の位置を検索する』という内容の話題であることを表現しており、その検索結果として“ichi-ni-san-cho”という値が導出されている。
【００２３】
図１に戻り、訂正シナリオ管理部１０５は、各話題についてその内容を訂正するための訂正シナリオを記憶する訂正シナリオＤＢ１２を管理する。各訂正シナリオは、訂正シナリオ管理部１０５により予め訂正シナリオＤＢ１２に記憶される。訂正シナリオＤＢ１２に格納される訂正シナリオの例については、図４で詳細に説明する。
【００２４】
このように、ユーザとの対話処理により対話状態が更新される毎に、基本シナリオに訂正シナリオを追加することにより、ユーザが容易に対話中の間違いを訂正することが可能となり、ユーザの目的に沿った対話を行うことができる。更に膨大な量の対話シナリオを必要とせずにユーザによる訂正入力を受理することが可能な対話シナリオを容易に設計することができるため、対話シナリオの管理コストを低減させることができる。
【００２５】
ここでカーナビゲーションシステム（以下カーナビ）を例にとり、図２、図４〜図９、図１７を参照して対話処理について詳細に説明する。カーナビで実行する目的地を設定する基本シナリオを図５に示す。この基本シナリオはシナリオＤＢ１０に格納されている。図５ではシナリオは状態遷移モデルで記述されており、現在のステートが対話状態を表している。尚、ステートにはそのステートに遷移してきたときに実行する内容を記述する。指定内容の表記として、システム発話に限りその発話内容を“「」”で囲んだものとし、それ以外のコマンド実行等は“「」”囲みがないものとする。またリンクにはユーザ入力の値を指定する。指定内容の表記として、ユーザ入力の表現そのものを指定する場合は“「」”があるもの（『「はい」』『「いいえ」』）、ユーザ入力の値のカテゴリを指定する場合は“「」”がないもの（『ジャンル』）、ユーザの入力を待たずに遷移する指定の場合は“φ”と指定するものとする。以後の状態遷移モデルを表す図面においても同様の表記を利用する。
【００２６】
図５に示すシナリオではジャンル（レストラン等）を指定して周辺施設を検索する「ジャンル検索」と、住所によって地点を指定する「住所検索」によって場所を検索し、そこへの目的地設定を行うことが可能である。また予めジャンル検索、住所検索に所属するステートが登録されており、ジャンル検索に所属するのはステートＳ２、Ｓ３、住所検索に所属するのはステートＳ５〜Ｓ８である。
【００２７】
ここで、次の対話が行われた場合の訂正シナリオ追加手続きについて説明する。以下に示す対話例１の後にある括弧は発話によって発生するステートの遷移を表している。この対話中にもステートの遷移（対話状態の更新）は生じているが、初期状態で履歴情報ＤＢ１１が空なので訂正対象の話題の選択に失敗するため、訂正シナリオ追加部１０３による訂正シナリオ追加は行われない（図２のＳ３１でＮｏ）。尚、以下の対話例においてユーザ発話の発話ターンを“Ｕｓｒ(数値)”、システム発話の発話ターンを“Ｓｙｓ(数値)”と表記する。
【００２８】
[対話例１]
Ｕｓｒ1：目的地設定(開始→ステートＳ１)、  Ｓｙｓ２：目的地の設定方法をどうぞ、  Ｕｓｒ３：住所検索(ステートＳ１→ステートＳ５)、  Ｓｙｓ４：都道府県名をどうぞ、  Ｕｓｒ５：○○県(ステートＳ５→ステートＳ６)、  Ｓｙｓ６：市町村名をどうぞ、  Ｕｓｒ７：△△市(ステートＳ６→ステートＳ７)、  Ｓｙｓ８：番地をどうぞ、  Ｕｓｒ９：１２３町(ステートＳ７→ステートＳ８)
ここで、対話処理部１０１の制御に応じた履歴管理部１０４による履歴情報登録処理について図６を参照して説明する。図６に示すように対話状態がステートＳ８へ遷移すると、対話処理部１０１は都道府県から番地までの入力結果『○○県△△市１２３町』を利用してカーナビの機能である住所検索コマンドを呼び出す。その結果として“ichi-ni-san-cho”を得たとする。これにより住所検索話題が終了するため、対話処理部１０１は履歴管理部１０４に履歴情報の登録を依頼する。この時の対話内容は“住所検索（都道府県名：○○県、市町村名：△△市、番地：１２３町）”となっているため、図１７のように履歴情報を履歴情報ＤＢ１１に登録する。尚、話題「住所検索」から導出される値は、ユーザによって入力された検索条件から得られる検索結果とする。
【００２９】
ステートＳ８はユーザの入力なしに遷移するように指定されているため、登録後ステートＳ９に遷移する。ステートＳ９はシナリオＤＢ１０にある基本シナリオの一部なので対話処理部１０１による現在の対話内容の上書きは行わない。その後対話処理部１０１は訂正シナリオ追加部１０３に訂正シナリオ追加処理を依頼する。
【００３０】
この時、訂正シナリオ追加部１０３の動作を、図２〜図５、図７、図８、図１７を参照して詳細に説明する。先ず、図２に示すように訂正シナリオ追加部１０３は、履歴情報ＤＢ１１から訂正シナリオの対象となる対話内容を選択する（ステップＳ３０）。その結果、図１７に示す履歴情報の対話内容“住所検索（都道府県名：○○県、市町村名：△△市、番地：１２３町）”が存在するため、この対話内容を選択する（ステップＳ３１）。
【００３１】
続いて選択された話題である住所検索が現在の話題かどうかを判定する（ステップＳ３２）。ここで、現在の対話状態は図５に示すステートＳ９であり、予め住所検索に所属するステートはＳ５〜Ｓ８であると指定されているため、現在の話題は住所検索ではないと判定される。続いて住所検索に対応する訂正シナリオを訂正シナリオＤＢ１２から選択する（ステップＳ３３）。訂正シナリオＤＢ１２には住所検索とジャンル検索が登録されている（図４）ので、住所検索に対応する訂正シナリオを取得する。
【００３２】
住所検索に対応する訂正シナリオを取得し、シナリオ接続処理を行う（ステップＳ３４）。図４に示す訂正シナリオ４０１のステートＳ４０１−５へのリンクを全てステートＳ９に移しかえ、ステートＳ４０１−５は破棄する(図７)。続いてステートＳ４０１−６のリンクを移しかえる。移しかえる先として住所検索話題が終了した時に通過し得るステートの中で最近通ったものを探す。ここで現在のステートＳ９が住所検索終了直後に遷移するステートであるので、ステートＳ９をステートＳ４０１−６のリンクを移しかえる先として選択する。ステートＳ４０１−６のリンクもステートＳ９に移しかえ、ステートＳ４０１−６も破棄する(図８)。これで訂正シナリオ追加部１０３における処理が完了する。
【００３３】
この後、対話処理部１０１に制御がゆだねられ対話処理を進行する。現在のステートがステートＳ９であるので、これに基づきユーザに対して次の発話を返す。Ｓｙｓ１０：「〇〇県△△市１２３町を目的地に設定しますか？」この時にステートＳ９に対して入力可能な値として以下のものが可能となる。
【００３４】
（１）「はい」：ステートＳ１１に遷移する。ichi-ni-san-choを目的地として設定して対話を終了する。
【００３５】
（２）「いいえ」：ステートＳ１０に遷移する。「目的地設定をやり直しますか？」と出力する。
【００３６】
（３）「住所検索」「都道府県名」：ステートＳ４０１−１に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図１７の対話内容に更新する。住所検索の初期段階として「都道府県名をどうぞ」と出力する。
【００３７】
（４）「□□県」（他の都道府県名）：ステートＳ４０１−２に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図１７の対話内容に更新する。都道府県名を□□県に上書きして、□□県内の市町村の情報を得るために「市町村名をどうぞ」と出力する。
【００３８】
（５）「市町村名」：ステートＳ４０１−２に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図１７の対話内容に更新する。この対話内容にある都道府県名の○○県を残して、○○県内の市町村の情報を得るために「市町村名をどうぞ」と出力する。
【００３９】
（６）「××市」(他の市町村名)：ステートＳ４０１−３に遷移する。基本シナリオから訂正シナリオへの遷移なので現在の対話内容を図１７の対話内容に更新する。この対話内容にある都道府県名の○○県を残して、市町村名の△△市を××市で上書きする。××市の番地情報を得ようとする。「番地をどうぞ」と出力する。
【００４０】
（７）「番地」：ステートＳ４０１−３に遷移する。基本シナリオから訂正シナリオへの遷移なので現在の対話内容を図１７の対話内容に更新する。この対話内容にある都道府県名・市町村名である○○県△△市を残して、△△市内の番地情報を得るために「番地をどうぞ」と出力する。
【００４１】
（８）「５６７町」（他の番地名）：ステートＳ４０１−４に遷移する。基本シナリオから訂正シナリオへの遷移のため現在の対話内容を図１７の対話内容に更新する。この対話内容にある都道府県名・市町村名である○○県△△市を残して番地を５６７町で上書きする。その後“住所検索(都道府県名：○○県、市町村名：△△市、番地：５６７町)”で検索し、結果を履歴情報ＤＢ１１に記録してステートＳ９に遷移する。
【００４２】
上記の発話において、（１）（２）のユーザ発話はシステム発話に対する応答であり、対話を進行させる入力である。これらの発話は基本シナリオ上の遷移で対話を進行させている。一方、(３)〜（８）のユーザ発話が一度終了した話題である住所検索の内容を修正する発話である。これらの発話は全て訂正シナリオへの遷移により適切に対話内容を修正している。
【００４３】
以上のように、基本シナリオによって指定されている本来の対話に関する入力のみならず過去に終了した話題を訂正するための入力が行われてもその値を受理し、対話内容を訂正することができる。
【００４４】
履歴情報ＤＢ１１内に記録された履歴情報を用いて訂正シナリオを指定し、現在の対話状態に接続するようにしているため、上記のような直前のものの言い直しだけでなく別の話題に入った状態であっても直前の検索式の訂正入力が可能となる。
【００４５】
次に、対話例２を用いた訂正シナリオ追加手続きについて図２〜図４、図９、図１８を参照して詳細に説明する。
【００４６】
[対話例２]
Ｕｓｒ１１：目的地設定（開始→ステートＳ１）、  Ｓｙｓ１２：目的地の設定方法をどうぞ、  Ｕｓｒ１３：ジャンル検索（ステートＳ１→ステートＳ２）、  Ｓｙｓ１４：検索ジャンルをどうぞ、  Ｕｓｒ１５：レストラン（ステートＳ２→ステートＳ３→ステートＳ４）、  Ｓｙｓ１６：レストランＡを目的地に設定します。よろしいですか？、  Ｕｓｒ１７：いいえ（ステートＳ４→ステートＳ１０）、  Ｓｙｓ１８：目的地設定をやり直しますか？、  Ｕｓｒ１９：はい(ステートＳ１０→ステートＳ１)、  Ｓｙｓ２０：目的地の設定方法をどうぞ、  Ｕｓｒ２１：住所検索(ステートＳ１→ステートＳ５)
この対話例は、一度ジャンル検索で検索した後に住所検索で目的地を決定しようとする対話である。発話Ｕｓｒ２１の訂正シナリオ追加部１０３における処理について説明する。
【００４７】
発話Ｕｓｒ１５のステートＳ３の時点で対話処理部１０１はジャンル検索を実行し、「レストラン」を検索する。その結果“restaurantA”が検索結果として得られたとする。ジャンル検索話題の話題の終了を検出したので、対話処理部１０１は履歴情報ＤＢ１１に履歴情報（図１８）を登録する。尚、話題「ジャンル検索」から導出される値は、ユーザによって入力された検索条件から得られる検索結果とする。
【００４８】
一方、発話Ｕｓｒ２１によって対話状態がステートＳ１からステートＳ５に更新された。ステートＳ５はシナリオＤＢ１０にある基本シナリオの一部のため、対話処理部１０１による現在の対話内容の上書きは行わない。その後対話処理部１０１は訂正シナリオ追加部１０３に訂正シナリオ追加処理を依頼する。
【００４９】
このとき、訂正シナリオ追加部１０３は以下のように動作する。先ず、図２に示すように履歴情報ＤＢ１１から訂正の対象となる対話内容を選択する（ステップＳ３０）。履歴情報ＤＢ１１には図１８に示す情報が存在するため、この対話内容を選択する（ステップＳ３１）。訂正対象の話題はジャンル検索であり、現在のステートＳ５は住所検索に所属するものなので訂正シナリオが追加可能であると判定される（ステップＳ３２）。ジャンル検索に対応する訂正シナリオを訂正シナリオＤＢ１２に存在する場合、図４に示す訂正シナリオ４０２を取得する(ステップＳ３３)。
【００５０】
訂正シナリオ４０２を現在のステートＳ５に接続する（図９）。即ち、ステートＳ４０２−３へのリンクをステートＳ５に移しかえる。更に、ステートＳ４０２−４へのリンクを移しかえる。遷移経路を遡ってジャンル検索話題の直後に遷移するステートを探索する。図９に示すステートＳ５からジャンル検索話題に所属するステートが現れるまで太線のリンクを遡っていくことで探索できる。ステートＳ３がジャンル検索に所属するステートなので、その直後のステートＳ４がステートＳ４０２−４へのリンクを移しかえる先となる。その結果、図９のようにシナリオが修正される。
【００５１】
この後、対話処理部１０１の制御により対話処理が続行する。現在のステートがＳ５であるので、これに基づきユーザに対して、Ｓｙｓ２２：「都道府県名をどうぞ」という発話を返す。この時の対話状態は既にジャンル検索ではなく住所検索である。しかし、訂正シナリオがステートＳ５に追加されているため、例えば、Ｕｓｒ：「やっぱりレストランで」（ステートＳ４０２−２に遷移）、Ｕｓｒ：「やっぱりジャンル検索」(ステートＳ４０２−１に遷移)、Ｕｓｒ：「やっぱり遊園地にする」(ステートＳ４０２−２に遷移)、といった発話を受理することができる。
【００５２】
このように訂正シナリオを追加することで、ユーザの翻意が無くとも、音声の誤認識で「はい」が「いいえ」に間違えられて誤ったステートに進んだ場合でもユーザは直前に決定した場所条件の修正を簡単に行うことが可能である。
【００５３】
直前に終了した対話内容を訂正するだけではなく、対話処理部１０１における「ユーザが現在注目している値」の推定結果に基づき、これを導出した対話内容を訂正することも可能である。以下に、その詳細を説明する。
【００５４】
これは、履歴情報にある値を取り出す指示によって、ユーザの注目する値が最新の終了した話題ではなくなった場合などに有効である。例えば、下記の対話例３では、話題の終了順ではイタリア料理店の検索よりフランス料理店の検索の方が新しい実行履歴であるが、その後の発話Ｕｓｒ２７によってユーザの注目はイタリアンＡ店となっている。このような場合、「駐車場のあるところ」といった設備指定によって「駐車場のあるフランス料理店」ではなく「駐車場のあるイタリア料理店」に変更するためには本対話例では最初に終了した対話内容である「イタリア料理」を訂正シナリオ選択対象にしなければならない。このような場合には「ユーザが現在注目している値」に基づく訂正シナリオ追加を実行することでユーザの訂正入力を取り扱うことができる。
【００５５】
[対話例３]
Ｕｓｒ２３：イタリア料理、  Ｓｙｓ２４：イタリアンＡ店があります。  Ｕｓｒ２５：フランス料理（フランス料理店に注目）、  Ｓｙｓ２６：みつかりませんでした。  Ｕｓｒ２７：イタリアンＡ店に駐車場ある？（イタリアンＡ店に注目）、  Ｓｙｓ２８：ありません。
【００５６】
手順としては訂正シナリオ追加部１０３における訂正シナリオ選択処理（ステップＳ３０）において、対話処理部１０１による推定結果の値をキーにして履歴情報ＤＢ１１から実行履歴を検索する。その結果を訂正シナリオ追加の対象として取り扱えば良い。尚、対話処理部１０１におけるユーザが注目する値の推定方法については既存のものを使用する。
【００５７】
例えば、発話Ｕｓｒ２７で対話処理部１０１はユーザが注目する値がイタリアンＡであると推定すると、その後の対話ではイタリアンＡを検索した対話内容（発話Ｕｓｒ２３）を対象にした訂正シナリオを現在の対話状態に追加することが可能となる。例えば、発話Ｕｓｒ２３の対話内容には料理ジャンルの指定と設備の指定が可能であるとすると、ユーザは発話Ｓｙｓ２８の後に例えば以下の値を入力できる。
【００５８】
（１）「設備追加」(検索条件の属性指定)：発話Ｕｓｒ２３の対話内容に対して設備属性を追加する対話状態に遷移する。
【００５９】
（２）「駐車場のあるところ」(設備属性の指定)：発話Ｕｓｒ２３の対話内容に対して設備属性に駐車場を指定する対話状態に遷移する。その後『駐車場のあるイタリア料理』を検索する。
【００６０】
この例において「ユーザがイタリアンＡ店に注目している」という情報を対話処理部１０１から得られなかった場合は、後に終了した対話内容を訂正シナリオの対象として選択するため、上記の値の入力は検索結果が空であるフランス料理店検索（発話Ｕｓｒ２５）に対する訂正入力として取り扱うことになる。
【００６１】
このように対話処理部１０１におけるユーザが現在注目している内容の解析結果に基づいて訂正シナリオを追加する候補を選択することで、より対話の流れに応じた訂正シナリオを選択することが可能となる。
【００６２】
従って、このように構成された対話装置により、例えば音声入力の誤認識といった誤った入力でシナリオが進んでしまった場合や、ユーザの気が途中で変わった場合であってもユーザは自由に対話内容(条件)の訂正を行うことが可能となる。
【００６３】
また基本シナリオに加えて話題別で小規模な訂正シナリオを予め準備すれば、対話実行時に動的に訂正シナリオへのリンクを作成する。動的に訂正シナリオをリンクする機能を対話装置が持つことで、シナリオ設計者は予めユーザによる訂正を考慮した対話シナリオを設計する必要が無くなる。従って、シナリオ設計者は訂正シナリオを基本シナリオと別に設計、管理することが可能となる。このように本対話装置によれば予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストを低減することができる。
【００６４】
尚、上述の例では一つの状態遷移モデルで対話シナリオを定義する場合について記述しているが、本発明はそのような対話シナリオのモデルに限定されるものではない。例えば、複数の状態遷移モデルのシナリオを動的に組み合わせて対話を続行することが可能な対話装置においても、ユーザによる訂正入力を可能とするためには、ある対話状態から次の入力を待ち受ける時に予め組み合わせ可能なシナリオとして訂正シナリオを追加し、訂正シナリオに遷移する入力内容を受理可能とする必要がある。この組み合わせ可能なシナリオを抽出、追加する処理が本実施例による訂正シナリオ追加部１０３の動作に相当する。
【００６５】
また、別の対話処理の形態として各話題に対して問い合わせるべき属性を列挙したフレームを与え、そのフレームの状態に基づいてユーザへの応答を決定する対話シナリオのモデルも存在する。このモデルを使用した場合について説明する。本実施形態においてフレームを使用する場合、シナリオ設計者は話題毎に異なるフレームのテンプレートを定義する。対話実行時には対話処理部１０１がテンプレートからフレームを具現化し、対話内容に応じた属性値の代入等の編集を行う。フレームの例は図３における対話内容に関する説明と同様であるので詳細な説明は省略する。
【００６６】
対話処理部１０１は対話状態として２種類のフレームを管理する。第一は現在の対話内容に関するフレーム(現在のフレーム)であり、第二は訂正対象のフレームである。対話処理部１０１は現在のフレームに登録されている属性値を確認し、話題解決に必要である属性(必須属性)に属性値が登録されていなければ、その属性値を要求する問合せをユーザに行う。一方、必須属性が全て登録されている場合は、対話処理部１０１はその話題が解決されたと判断し、話題解決時の動作を行うと共に解決された話題を訂正対象フレームに登録する。
【００６７】
また、対話処理部１０１はユーザ発話が入力された時に、現在のフレームに該当する入力かどうかを確認する。該当しなければ訂正対象フレームに該当するかどうかを確認する。対話処理部１０１は現在のフレームに該当すればユーザ入力は現在の話題を進行させるものであると判断し、訂正対象フレームに該当すればユーザ入力は訂正意図をもつものであると判断する。逆に該当しなければユーザ入力はユーザによる新規話題の導入であるとして取り扱う。ユーザ発話がフレームに該当するかどうかは、例えばユーザ発話に含まれる属性値や属性名が当該フレームのものと一致するかどうかを確認することで判定することが可能である。
【００６８】
ユーザ発話が現在の話題を進行させるものの場合には、対話処理部１０１はユーザ発話を現在のフレームに反映させる。ユーザ発話が訂正意図を持つものの場合には、対話処理部１０１は該当する訂正対象フレームを現在のフレームに登録し、その後ユーザ発話を当該フレームに反映させる。新規話題の導入と判定された場合は、対話処理部１０１は入力された話題に関するフレームを現在のフレームに登録する。その後、対話処理部１０１は現在のフレームの内容に応じて、ユーザとの対話を継続する。尚、ユーザ発話が「条件変更」のような訂正意図のみを表す発話であれば、対話処理部１０１は訂正対象フレームを現在のフレームに設定し、どの属性を修正するかを問い合わせると言うふうに振舞う。
【００６９】
このように構成すれば、ユーザが一度終了した話題に対する入力を行った場合には、対話処理部１０１はそれを訂正入力であると判定し、訂正対象フレームを現在のフレームに登録して対話を継続することが可能である。例えばユーザ入力が訂正対象フレームに関する属性値であれば、その値を訂正対象フレームに代入した結果に基づいて対話処理部１０１は対話を継続する。或いはユーザ入力が訂正対象フレームに関する属性名であれば、その属性名に関する問合せを行うように振舞う。
【００７０】
以上の説明において、話題を表すフレームは、それに基づいて対話処理の動作を規定するので対話シナリオに相当する。対話処理部１０１が参照する対話状態である現在のフレーム、訂正対象フレームはシナリオ管理部１０２に相当する。訂正対象フレームに解決した話題を登録する処理が訂正シナリオ追加部１０３の役割に相当する。
【００７１】
本方式は他の対話モデルについても同様に適用することが可能である。例えばルールベース(プランなど)による対話処理指定であっても、話題別のルールを管理し、現在の話題に関するルールと共に訂正対象の話題に関するルールを適用可能な状態にする(この処理が訂正シナリオ追加部１０３に相当)ことで、ユーザの訂正入力に対する動作を実行することが可能となる。
【００７２】
以上のように、本発明の実施形態は対話モデルによらず適用が可能であり、一度決定した対話内容を訂正するためのシナリオの分岐を動的に追加し、それを訂正するためのユーザ入力を受理可能とする対話装置であれば、そのような実施形態は本発明の範囲内である。
【００７３】
また、上記のようなシナリオを動的に組み合わせることが可能な対話装置や、フレームに基づく対話装置の場合、話題別にシナリオや対話状態を定義することができる。このような場合は上述した実施例のような訂正用のシナリオを準備しなくとも本来のシナリオで代用することや、部分的に共有することもできる。或いは本実施例のように複数の話題が一つのシナリオに含まれる場合であっても、各話題の開始、終了を指定することでシナリオから各話題の部分シナリオを抽出することが可能であり、それを訂正シナリオとして代用することや、部分的に共有化することも可能であると考えられる。しかし、このような訂正シナリオが用意されていない場合においても、訂正のための対話状態に遷移可能であるように動作する場合は本発明の範囲内である。
【００７４】
また、訂正シナリオとして図１６のように特定の属性を変更するものではなく、対話内容を訂正したいことの表明を受理できるようにしたものを訂正シナリオＤＢ１２に登録してもよい。図１６に示す訂正シナリオ４０３の各ステートにおいて、図４に示す訂正シナリオ４０１のステートと同様の場合は同符号を付して説明を省略する。図１６に示す訂正シナリオ４０３では、「条件変更」という入力がある場合、ステートＳ４０３−１の「変更するのは都道府県ですか？市町村ですか？番地ですか？」という訂正する属性を決定するためのステートに遷移することが可能なようになっている。このようにすることによって利用者がとっさに対話内容を変更したくなった時に、適切に訂正するための対話を誘導することが可能となる。
【００７５】
また、ユーザとの音声対話を行うためには音声認識で利用する文法（音声認識文法）の設定が必要となる場合がある。本実施例のように動的に訂正シナリオを接続することで、訂正シナリオに遷移するための文法が必要となる。このような場合には、接続した訂正シナリオに対応する文法を基本シナリオによる文法に追加すればよい。尚、訂正シナリオに対応する文法は訂正シナリオＤＢ１２に格納されて、基本シナリオに対応する文法はシナリオＤＢ１０に格納されているものとする。
【００７６】
本実施例は、カーナビの機能の一部について記述しているが、他の如何なるアプリケーションを対象にした対話装置についても適用可能である。また、本実施例では訂正シナリオ追加部１０３で追加した訂正シナリオを消去していないが、訂正シナリオ追加処理の直前に、それまでの段階で追加された訂正シナリオを消去する手続きを追加しても構わない。ただし、現在の状態が訂正シナリオ上であるかどうかを判定して、これに該当しない場合に限り実行する。
【００７７】
また、本実施例では訂正シナリオ終了時の基本シナリオへのリンクを遷移した経路を遡り、訂正シナリオと同じ話題が終了した直後の対話状態を選択しているが、これを選択するために終了時にリンクする可能性がある対話状態を予め指定しておいても良い。或いは訂正シナリオによる対話の結果に基づいて動的に次の対話状態を決定しても良い。
【００７８】
また、本実施例では履歴情報ＤＢ１１から訂正シナリオの対象となる対話内容を一つだけ取り出すように記載しているが、複数の対話内容を対象としても良い。ただし、同じ話題の対話内容が複数存在する場合は登録順に基づき最新のものを採用する。
【００７９】
ここで、本対話装置を動作させる対話シナリオを記述する対話シナリオ記述言語について説明する。対話シナリオ記述言語とは、例えば非特許文献1にあるような対話シナリオをプログラミングするための言語である。シナリオ設計者がこの言語を使用して対話シナリオを記述し、その後対話装置が作成後の対話シナリオを直接読み取るか、コンパイラ等のツールによって対話装置で可読のデータ形式に変換したものを読み取ることで、対話装置がプログラミングした内容の対話手続きを実行することが可能となる。
【００８０】
シナリオ設計者は、直接対話シナリオ記述言語を編集したり、グラフィカルユーザインターフェースで対話シナリオ編集装置のインターフェースを使用し、その結果を一度対話シナリオ記述言語に変換するようにしたりすることで対話シナリオのプログラミングを行うことが可能である。
【００８１】
次に、本対話装置を動作させる対話シナリオ記述言語の記述様式の例を図１５に示す。図１５に示すように本対話シナリオ記述言語には、以下の特徴が含まれる。
【００８２】
（１）基本シナリオを記述するためのフィールドに加え、訂正シナリオを記述するためのフィールド１６０１が存在する。フィールド１６０１は、訂正シナリオと基本シナリオとに分けて記述することが可能となる。
【００８３】
（２）対話実行時に訂正シナリオとして動作中であるかどうかを確認する手続き１６０２を指定できる。これを確認することで訂正シナリオ１６０２のための特別処理を基本シナリオから分岐して指定することが可能となる。例えば、階層的なシナリオ記述によって話題別にシナリオが定義可能である場合などに、基本シナリオと訂正シナリオとを部分的に共有することが可能であるが、共有した記述部分が訂正シナリオとして動作している時に呼び出されたかどうかを確認できる。
【００８４】
このような機能を指定可能な対話シナリオ記述言語によって、訂正シナリオと基本シナリオとを分離して記述することが可能となる。或いは、基本シナリオ内に訂正シナリオの特有の処理を追加することが可能となる。従って、対話シナリオの設計者にとって訂正シナリオの編集、確認が容易となり、対話シナリオの管理コストを削減することができる。
【００８５】
以上のように、本発明の実現形態には上述の例に対して種々の変形が可能であり、過去に終了した話題の対話内容を訂正するための対話状態を動的に追加するという本発明の趣旨に反しない限り本発明の実施形態の範囲内である。
【００８６】
（第２実施形態）
本発明の第２実施形態に係る対話シナリオ編集装置の実施例について説明する。本実施例の概略構成図を図１０に示す。図１０に示すように本発明の対話シナリオ編集装置は、対話実行中にユーザによる訂正入力を可能とするための訂正シナリオを含む対話シナリオを作成・編集する対話シナリオ編集装置をシナリオ設計者に提供するものである。
【００８７】
図１０に示す対話シナリオ編集装置において、先ず、インターフェース・編集処理部１００１はシナリオ設計者の操作に基づいて対話シナリオを作成、編集する。編集対象のシナリオが基本シナリオか訂正シナリオであるかをシナリオ設計者に提示する。また、訂正シナリオの場合はどの話題に関する訂正シナリオであるかをシナリオ設計者に提示する。尚、これらの提示、編集対象選択が可能であるものであれば、ユーザインタフェースの形状は既存のものを使用しても構わない。
【００８８】
基本シナリオを編集する場合、シナリオ管理部１００２はインターフェース・編集処理部１００１からの編集対象の基本シナリオをシナリオＤＢ１００４に管理する。訂正シナリオを編集する場合、訂正シナリオ管理部１００３はインターフェース・編集処理部１００１で作成、編集されたシナリオの各話題についてその内容を訂正するための訂正シナリオを、例えば図４のような形式で訂正シナリオＤＢ１００５に記憶する。
【００８９】
このように構成された対話シナリオ編集装置によれば、編集結果を基本シナリオと訂正シナリオとに分けて出力することができる。また、シナリオ設計者が導入した話題に関する訂正シナリオが登録されていない場合は、その訂正シナリオを作成するように促すことができる。
【００９０】
このように構成された対話シナリオ編集装置によれば、訂正シナリオを基本シナリオと別に設計・管理するインターフェースを提供できる。これにより、予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストも低減させることができる。同時に必要な訂正シナリオが登録されているかどうかのチェックをすることが可能なため、シナリオ設計者のシナリオ設計・管理コストの低減を図ることができる。
【００９１】
（第３の実施形態）
本発明の第３実施形態に係る対話シナリオ編集装置の実施例について説明する。本実施例の概略構成図を図１１に示す。図１１に示すように本発明の対話シナリオ編集装置は、対話実行中にユーザによる訂正入力の受理を可能とする対話シナリオを低コストで生成する手続きをシナリオ設計者に提供するものである。
【００９２】
図１１に示す対話シナリオ編集装置において、先ず、インターフェース・編集処理部１１０１は、シナリオ設計者の操作に基づいて対話シナリオを作成・編集する。尚、ユーザインタフェースの形状は既存のものを使用しても構わない。シナリオ管理部１１０２は、インターフェース・編集処理部１１０１からの編集対象の基本シナリオをシナリオＤＢ１１０５に管理する。訂正シナリオ追加部１１０３はシナリオ設計者の編集が確定した時、訂正シナリオ管理部１１０４で管理されている訂正シナリオを確定したシナリオに接続する。訂正シナリオ追加部１１０３の動作の詳細は後に述べる。訂正シナリオ管理部１１０４は、各話題についてその内容を訂正するための訂正シナリオを、例えば、図４のような形式で訂正シナリオＤＢ１１０６に管理する。
【００９３】
ここで訂正シナリオ追加部１１０３の動作について詳細に説明する。訂正シナリオ追加部１１０３は、シナリオ設計者の編集が確定した時、例えばシナリオ設計者が作成したシナリオの動作テストを行う時や最終的に対話装置に導入する時などに動作する。この時の訂正シナリオ追加部１１０３の動作を表すフローチャートが図１２である。
【００９４】
ここで状態遷移モデルのシナリオを編集する対話シナリオ編集装置を、図４〜図５及び図１２〜図１４を参照して詳細に説明する。本対話シナリオ編集装置により編集処理を行っている基本シナリオを図５に示す。このシナリオはカーナビで実行する目的地を設定するシナリオであり、シナリオＤＢ１１０５に格納されている。このシナリオではジャンルを指定して現在地周辺の施設を検索する「ジャンル検索」と、住所によって地点を指定する「住所検索」とによって場所を検索し、そこへの目的地設定を行うことが可能である。また予めジャンル検索・住所検索に所属するステートがシナリオ設計者により指定・登録されており、ジャンル検索に所属するのは、ステートＳ２、Ｓ３、住所検索に所属するのはステートＳ５〜Ｓ８である。
【００９５】
また、シナリオ設計者によりジャンル検索と住所検索に対する訂正シナリオが設計され、その内容は訂正シナリオＤＢ１１０６に記憶されているものとする。訂正シナリオＤＢ１１０６には図４に示すような情報が記憶されている。ここで図５の状態でシナリオ設計者が動作テストを開始する操作を行ったとする。このときに訂正シナリオ追加部１１０３による処理が行われる。この時の動作を、図１２を参照して説明する。
【００９６】
先ず、編集対象となるステートを順に取り出す（ステップＳ２１）。ここでは図５に示すステートＳ１から順に処理をするものとしてステートＳ１を選択する。次に、ステートＳ１に接続可能な訂正シナリオを訂正シナリオＤＢ１１０６から取り出す（ステップＳ２２）。ステートＳ１はジャンル検索にも住所検索にも所属していないステートなので、訂正シナリオ追加部１１０３は図４にあるジャンル検索用の訂正シナリオ４０２と住所検索用の訂正シナリオ４０１との両方を接続対象として選択する。そして最初の接続対象として住所検索用の訂正シナリオ４０１を選択する。
【００９７】
ここでステートＳ１に訂正シナリオ４０１を接続する（ステップＳ２５）。図１３を参照してこの接続手続きを説明する。訂正シナリオ４０１の初期状態(ステートＳ４０１−５)がステートＳ１であるかのようにリンクを移しかえるため、ステートＳ１からステートＳ４０１−１〜Ｓ４０１−４にリンクする。続いて訂正シナリオ４０１が終了時（ステートＳ４０１−６）の接続先を探索する。ステートＳ１に流入するリンクを遡り、ステートＳ１０→Ｓ９→Ｓ８(図１３中太線のリンク)の順に辿っていくと、ステートＳ８が住所検索に所属するのでステートＳ９が住所検索後に遷移する対話状態であることがわかる。よってステートＳ４０１−６へのリンクをステートＳ９に移しかえるので、ステートＳ４０１−４からステートＳ９にリンクする。これでステートＳ１に対する住所検索の訂正シナリオ接続処理が終了し、その結果図１３のようなシナリオとなる（尚、図１３ではステートＳ５〜Ｓ７の表記を省略している）。
【００９８】
住所検索に関する訂正シナリオ４０１の接続を終了したが、ジャンル検索の訂正シナリオの接続が終了していないので、更に接続を続ける（ステップＳ２３）。ジャンル検索用の訂正シナリオ４０２を取り出し（ステップＳ２４）、ステートＳ１に接続する（ステップＳ２５）。この手続きについて図１４を参照して説明する。訂正シナリオ４０２の初期状態(ステップＳ４０２−３)がステートＳ１であるかのようにリンクを移しかえるため、ステートＳ１からステートＳ４０２−１、Ｓ４０２−２にリンクする。続いて訂正シナリオ４０２が終了した時(ステートＳ４０２−４)の接続先を探索する。ステートＳ１に流入するリンクを遡り、ステートＳ１０→Ｓ４→Ｓ３(図１４中太線のリンク)の順に辿っていくとステートＳ３がジャンル検索に所属するのでステートＳ４がジャンル検索後に遷移する対話状態であることがわかる。よってステートＳ４０２−４へのリンクをステートＳ４に移しかえるので、ステートＳ４０２−２からステートＳ４にリンクする。これでステートＳ１に対するジャンル検索の訂正シナリオ接続処理が終了し、その結果図１４のようなシナリオとなる(尚、図１４においてもステートＳ５〜Ｓ７の表記を省略している)。
【００９９】
ステートＳ１に接続可能な訂正シナリオの接続処理がすべて終了したので、次のステートの接続処理を行う（ステップＳ２３）。以降全てのステートにつき上記のような接続処理を行い、全てのステートにつき処理が終了すると訂正シナリオ追加処理も終了する（ステップＳ２０）。このように全てのステートについて訂正のための訂正シナリオへのリンクを自動的に接続した結果を対話シナリオとして出力することで、以下のような対話例が受理可能となる。
【０１００】
[対話例４]
住所検索で「○○県△△市１２３町」を指定した後、Ｓｙｓ２９：○○県△△市１２３町を目的地に設定します。よろしいですか？(ステートＳ９)、  Ｕｓｒ３０：いいえ(ステートＳ９→ステートＳ１０)、  Ｓｙｓ３１：目的地設定をやり直しますか？  Ｕｓｒ３２：はい(ステートＳ１０→ステートＳ１)、  Ｓｙｓ３３：目的地の設定方法をどうぞ、  Ｕｓｒ３４：５６７町(ステートＳ１→ステートＳ４０１−４→ステートＳ９)、  Ｓｙｓ３５：○○県△△市５６７町を目的地に設定します。よろしいですか？
発話Ｕｓｒ３４が直前に決定した「○○県△△市１２３町」から５６７町に訂正するための発話であり、これを入力することで訂正シナリオのステートであるステートＳ４０１−４に遷移し、その結果を用いた発話がＳｙｓ３５として出力されている。このように基本シナリオ(図５)と訂正シナリオ(図４)とを準備し、自動的に接続することで訂正のための発話を常時受理できるようになる。
【０１０１】
従って、このように構成された対話シナリオ編集装置により、基本シナリオと訂正シナリオを準備するだけで常時条件変更が可能なシナリオを自動生成することが可能となる。これにより、訂正シナリオを基本シナリオと別に設計・管理することが可能となるため、予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストを低減させることができる。
【０１０２】
尚、上述の例では一つの状態遷移モデルで対話シナリオを定義する場合について記述しているが、本発明はそのような対話シナリオのモデルに限定されるものではない。例えば複数の状態遷移モデルのシナリオを動的に組み合わせて対話を進行することが可能な対話方式や、各話題に対して問い合わせるべき属性を列挙したフレームを与え、ユーザによる入力に基づき順不同で属性に値を代入し、不足している属性を検出するとその属性をユーザに問い合わせるといった対話処理方式も存在する。これらの対話方式向けの対話装置についても訂正用のシナリオを設計・管理する必要があり、それをサポートする機能をもつ対話シナリオ編集装置であれば、そのような実施形態は本発明の趣旨の範囲内である。
【０１０３】
また、上記のようなシナリオを動的に組み合わせることが可能な対話装置や、フレームに基づく対話装置の場合は話題別にシナリオや対話状態を定義することが可能であり、このような場合は上述した実施例のような訂正用のシナリオを準備しなくとも本来のシナリオで代用することや、部分的に共有することも可能であると考えられる。或いは本実施例のように複数の話題が一つのシナリオに含まれる場合であっても、各話題の開始・終了を指定することでシナリオから各話題の部分シナリオを抽出することが可能であり、それを訂正シナリオとして代用することや、部分的に共有化することも可能であると考えられる。
【０１０４】
しかしこのような、訂正シナリオの編集処理が必須ではない状態においても、訂正シナリオが準備されていないことを検出した場合に本来のシナリオを代用する場合は、訂正シナリオ管理部１１０４に本来のシナリオと同じ内容のシナリオが格納されているものとみなされるので本発明の趣旨の範囲内である。また基本シナリオに対話内容訂正のための手続きを含めることが可能な場合においても、そのような手続きが指定可能な編集装置であれば訂正シナリオを生成するものであるとみなすことが可能であり、このようなものも本発明の趣旨の範囲内である。
【０１０５】
また、訂正シナリオ終了時の基本シナリオへのリンク先を訂正シナリオと同じ話題が終了した直後の対話状態を選択しているが、これを選択するために終了時にリンクする可能性がある対話状態を予め指定しておいても良い。
【０１０６】
また、本発明の実施形態では静的に訂正シナリオへのリンクを作成しているので、実際に作成後のシナリオで動作させる場合に誤った遷移が発生する場合がある。これに対処するために、例えば訂正シナリオへのリンクには「履歴情報として当該訂正シナリオの話題が登録されていること」を条件として追加する。この条件を対話実行中に評価することで無効な訂正シナリオへの遷移を抑制することが可能となる。
【０１０７】
以上のように、本発明の実現形態には上述の例に対して種々の変形が可能であり、訂正シナリオを別途管理・編集し、編集した訂正シナリオをリンクしたシナリオを出力するという趣旨に反しない限り本発明の実施形態の範囲内である。
【０１０８】
上記実施形態で説明した対話処理は、ハードウェアによって実現することもできるし、コンピュータを用いてソフトウェアにより実行することもできる。すなわち、本発明によると、ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答をユーザに提供する対話処理であって、ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加するステップとを具備する対話処理をコンピュータに行わせるためのプログラムを提供することもできる。
【図面の簡単な説明】
【０１０９】
【図１】本発明の第１実施形態に係る対話装置の概略構成図
【図２】訂正シナリオ追加処理を示すフローチャート
【図３】履歴情報ＤＢに格納されたテーブルを示す図
【図４】訂正シナリオを説明するための図
【図５】対話シナリオの例を説明するための図
【図６】履歴管理部による履歴情報登録を説明するための図
【図７】訂正シナリオ追加手続きの一部を説明するための図
【図８】訂正シナリオ追加手続きの一部を説明するための図
【図９】訂正シナリオ追加手続きを説明するための図
【図１０】本発明の第２実施形態に係る対話シナリオ編集装置の概略構成図
【図１１】本発明の第３実施形態に係る対話シナリオ編集装置の概略構成図
【図１２】訂正シナリオ追加処理を示すフローチャート
【図１３】訂正シナリオ追加処理を説明するための図
【図１４】訂正シナリオ追加処理を説明するための図
【図１５】対話シナリオの記述例を示す図
【図１６】訂正シナリオの他の例を説明するための図
【図１７】対話例1における履歴情報ＤＢに格納されたテーブルを示す図
【図１８】対話例２における履歴情報ＤＢに格納されたテーブルを示す図
【符号の説明】
【０１１０】
１０、１００４、１１０５・・・シナリオＤＢ；
１１・・・履歴情報ＤＢ；
１２、１００５、１１０６・・・訂正シナリオＤＢ；
１０１・・・対話処理部； 
１０２、１００２、１１０２・・・シナリオ管理部；
１０３、１００３、１１０３・・・訂正シナリオ追加部；
１０４・・・履歴管理部；
１０５、１００３、１１０４・・・訂正シナリオ管理部；
１００１、１１０１・・・インターフェース・編集処理部；
【図１】
2006277519.tif 000003
【図２】
2006277519.tif 000004
【図３】
2006277519.tif 000005
【図４】
2006277519.tif 000006
【図５】
2006277519.tif 000007
【図６】
2006277519.tif 000008
【図７】
2006277519.tif 000009
【図８】
2006277519.tif 000010
【図９】
2006277519.tif 000011
【図１０】
2006277519.tif 000012
【図１１】
2006277519.tif 000013
【図１２】
2006277519.tif 000014
【図１３】
2006277519.tif 000015
【図１４】
2006277519.tif 000016
【図１５】
2006277519.tif 000017
【図１６】
2006277519.tif 000018
【図１７】
2006277519.tif 000019
【図１８】
2006277519.tif 000020