以下、図面を参照して本発明の実施の形態について説明する。
(第1実施形態)
図1は、本発明の第1実施形態に係る対話装置の概略構成図である。図1に示す対話装置は、ユーザとの対話を行い、一度終了した対話内容についても容易に訂正可能な装置である。先ず、対話装置の対話処理部101は、ユーザからの入力があった場合シナリオ管理部102で管理されているシナリオに基づいて、ユーザとの対話を行う。また対話処理部101は、その話題の対話内容を一時的に記憶する。訂正シナリオ追加部103は、対話処理部101により対話状態が更新される毎に、訂正を考慮していない基本シナリオに訂正シナリオを追加する。訂正シナリオ追加部103は、追加する訂正シナリオを訂正シナリオ管理部105で管理された訂正シナリオの中から取得する。この時、訂正シナリオ追加部103は、履歴管理部104で管理された履歴情報に対応する訂正シナリオを取得する。尚、話題とは、ある目的のために対話を行う場合のその目的のことを指す。但し、本実施例では「住所検索」といったコマンドを話題と対応付けることとする。
次に、対話装置の各構成部での動作について詳細に説明する。対話処理部101は、実行された対話処理の中で対話状態が更新された時、訂正シナリオ追加部103に動作を依頼する。同時に対話処理部101は、この更新が基本シナリオから訂正シナリオへの更新或いは訂正シナリオから別の話題に関する訂正シナリオへの更新であるかどうかを確認する。これらに該当する場合、対話処理部101は履歴管理部104から訂正対象の対話内容を取得し、現在の対話内容として更新する。その後、訂正シナリオ追加部103に対して訂正シナリオの追加を依頼する。また、対話処理部101は対話処理中に話題の終了を検出した際に履歴管理部104に対して、終了時の対話内容履歴の登録依頼を行う。
シナリオ管理部102は、予め管理者によって作成されたシナリオを記録したシナリオデータベース(以下データベースをDBと呼ぶ)10を管理する。シナリオ管理部102は、ユーザによる訂正入力を考慮せずに、ユーザとの対話を進行させることを念頭においた基本シナリオを記憶する。基本シナリオの例について図5で説明する。
訂正シナリオ追加部103は、対話処理部101により対話状態が更新される毎に基本シナリオに訂正シナリオを追加する。修正手順としては、先ず、訂正シナリオ追加部103は、履歴管理部104で管理されている履歴情報に対応する訂正シナリオを訂正シナリオ管理部105から取得する。訂正シナリオ追加部103は、取得した訂正シナリオを現在の対話状態に追加する。これによって実行済みの手続きの内容を訂正する訂正シナリオへの遷移を可能とする。訂正シナリオ追加部103の詳細な処理について図2、図7〜図9、図17で詳細に説明する。
履歴管理部104は、対話処理部101による対話処理で話題が終了した時の対話内容を時系列順に履歴情報DB11に記憶する。話題の終了は、対話処理部101の対話状態、或いは必要な情報が全て揃っているといった対話内容の状態に基づき検出される。
ここで履歴情報DB11に記録される履歴情報の例について図3を参照して説明する。履歴情報は、発話ターン(左側)と対話結果として導出された値(中央)とその時の対話内容(右側)を対にした形式でテーブル30に格納されている。但し、終了した話題が検索式ではない場合は中央の値は無効としておく。対話内容は話題と引数に分割できる。話題は“(”の左側に表記する。『住所検索』や『ジャンル検索』が相当する。引数は本対話装置が対話によってユーザに問い合わせるべき属性であり、“()”の内部に相当する。引数の数は話題によって異なり、表記上では各引数を“、”によって区切る。各引数は属性の呼び名である属性名と実際に対話によって指定された値である属性値の組み合わせで定義されており、これを(属性名):(属性値)と表記する。“住所検索(都道府県名:○○県、市町村名:△△市、番地:123町)”は『○○県△△市123町の位置を検索する』という内容の話題であることを表現しており、その検索結果として“ichi-ni-san-cho”という値が導出されている。
図1に戻り、訂正シナリオ管理部105は、各話題についてその内容を訂正するための訂正シナリオを記憶する訂正シナリオDB12を管理する。各訂正シナリオは、訂正シナリオ管理部105により予め訂正シナリオDB12に記憶される。訂正シナリオDB12に格納される訂正シナリオの例については、図4で詳細に説明する。
このように、ユーザとの対話処理により対話状態が更新される毎に、基本シナリオに訂正シナリオを追加することにより、ユーザが容易に対話中の間違いを訂正することが可能となり、ユーザの目的に沿った対話を行うことができる。更に膨大な量の対話シナリオを必要とせずにユーザによる訂正入力を受理することが可能な対話シナリオを容易に設計することができるため、対話シナリオの管理コストを低減させることができる。
ここでカーナビゲーションシステム(以下カーナビ)を例にとり、図2、図4〜図9、図17を参照して対話処理について詳細に説明する。カーナビで実行する目的地を設定する基本シナリオを図5に示す。この基本シナリオはシナリオDB10に格納されている。図5ではシナリオは状態遷移モデルで記述されており、現在のステートが対話状態を表している。尚、ステートにはそのステートに遷移してきたときに実行する内容を記述する。指定内容の表記として、システム発話に限りその発話内容を“「」”で囲んだものとし、それ以外のコマンド実行等は“「」”囲みがないものとする。またリンクにはユーザ入力の値を指定する。指定内容の表記として、ユーザ入力の表現そのものを指定する場合は“「」”があるもの(『「はい」』『「いいえ」』)、ユーザ入力の値のカテゴリを指定する場合は“「」”がないもの(『ジャンル』)、ユーザの入力を待たずに遷移する指定の場合は“φ”と指定するものとする。以後の状態遷移モデルを表す図面においても同様の表記を利用する。
図5に示すシナリオではジャンル(レストラン等)を指定して周辺施設を検索する「ジャンル検索」と、住所によって地点を指定する「住所検索」によって場所を検索し、そこへの目的地設定を行うことが可能である。また予めジャンル検索、住所検索に所属するステートが登録されており、ジャンル検索に所属するのはステートS2、S3、住所検索に所属するのはステートS5〜S8である。
ここで、次の対話が行われた場合の訂正シナリオ追加手続きについて説明する。以下に示す対話例1の後にある括弧は発話によって発生するステートの遷移を表している。この対話中にもステートの遷移(対話状態の更新)は生じているが、初期状態で履歴情報DB11が空なので訂正対象の話題の選択に失敗するため、訂正シナリオ追加部103による訂正シナリオ追加は行われない(図2のS31でNo)。尚、以下の対話例においてユーザ発話の発話ターンを“Usr(数値)”、システム発話の発話ターンを“Sys(数値)”と表記する。
[対話例1]
Usr1:目的地設定(開始→ステートS1)、 Sys2:目的地の設定方法をどうぞ、 Usr3:住所検索(ステートS1→ステートS5)、 Sys4:都道府県名をどうぞ、 Usr5:○○県(ステートS5→ステートS6)、 Sys6:市町村名をどうぞ、 Usr7:△△市(ステートS6→ステートS7)、 Sys8:番地をどうぞ、 Usr9:123町(ステートS7→ステートS8)
ここで、対話処理部101の制御に応じた履歴管理部104による履歴情報登録処理について図6を参照して説明する。図6に示すように対話状態がステートS8へ遷移すると、対話処理部101は都道府県から番地までの入力結果『○○県△△市123町』を利用してカーナビの機能である住所検索コマンドを呼び出す。その結果として“ichi-ni-san-cho”を得たとする。これにより住所検索話題が終了するため、対話処理部101は履歴管理部104に履歴情報の登録を依頼する。この時の対話内容は“住所検索(都道府県名:○○県、市町村名:△△市、番地:123町)”となっているため、図17のように履歴情報を履歴情報DB11に登録する。尚、話題「住所検索」から導出される値は、ユーザによって入力された検索条件から得られる検索結果とする。
ステートS8はユーザの入力なしに遷移するように指定されているため、登録後ステートS9に遷移する。ステートS9はシナリオDB10にある基本シナリオの一部なので対話処理部101による現在の対話内容の上書きは行わない。その後対話処理部101は訂正シナリオ追加部103に訂正シナリオ追加処理を依頼する。
この時、訂正シナリオ追加部103の動作を、図2〜図5、図7、図8、図17を参照して詳細に説明する。先ず、図2に示すように訂正シナリオ追加部103は、履歴情報DB11から訂正シナリオの対象となる対話内容を選択する(ステップS30)。その結果、図17に示す履歴情報の対話内容“住所検索(都道府県名:○○県、市町村名:△△市、番地:123町)”が存在するため、この対話内容を選択する(ステップS31)。
続いて選択された話題である住所検索が現在の話題かどうかを判定する(ステップS32)。ここで、現在の対話状態は図5に示すステートS9であり、予め住所検索に所属するステートはS5〜S8であると指定されているため、現在の話題は住所検索ではないと判定される。続いて住所検索に対応する訂正シナリオを訂正シナリオDB12から選択する(ステップS33)。訂正シナリオDB12には住所検索とジャンル検索が登録されている(図4)ので、住所検索に対応する訂正シナリオを取得する。
住所検索に対応する訂正シナリオを取得し、シナリオ接続処理を行う(ステップS34)。図4に示す訂正シナリオ401のステートS401−5へのリンクを全てステートS9に移しかえ、ステートS401−5は破棄する(図7)。続いてステートS401−6のリンクを移しかえる。移しかえる先として住所検索話題が終了した時に通過し得るステートの中で最近通ったものを探す。ここで現在のステートS9が住所検索終了直後に遷移するステートであるので、ステートS9をステートS401−6のリンクを移しかえる先として選択する。ステートS401−6のリンクもステートS9に移しかえ、ステートS401−6も破棄する(図8)。これで訂正シナリオ追加部103における処理が完了する。
この後、対話処理部101に制御がゆだねられ対話処理を進行する。現在のステートがステートS9であるので、これに基づきユーザに対して次の発話を返す。Sys10:「〇〇県△△市123町を目的地に設定しますか?」この時にステートS9に対して入力可能な値として以下のものが可能となる。
(1)「はい」:ステートS11に遷移する。ichi-ni-san-choを目的地として設定して対話を終了する。
(2)「いいえ」:ステートS10に遷移する。「目的地設定をやり直しますか?」と出力する。
(3)「住所検索」「都道府県名」:ステートS401−1に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図17の対話内容に更新する。住所検索の初期段階として「都道府県名をどうぞ」と出力する。
(4)「□□県」(他の都道府県名):ステートS401−2に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図17の対話内容に更新する。都道府県名を□□県に上書きして、□□県内の市町村の情報を得るために「市町村名をどうぞ」と出力する。
(5)「市町村名」:ステートS401−2に遷移する。基本シナリオから訂正シナリオへの遷移のため、現在の対話内容を図17の対話内容に更新する。この対話内容にある都道府県名の○○県を残して、○○県内の市町村の情報を得るために「市町村名をどうぞ」と出力する。
(6)「××市」(他の市町村名):ステートS401−3に遷移する。基本シナリオから訂正シナリオへの遷移なので現在の対話内容を図17の対話内容に更新する。この対話内容にある都道府県名の○○県を残して、市町村名の△△市を××市で上書きする。××市の番地情報を得ようとする。「番地をどうぞ」と出力する。
(7)「番地」:ステートS401−3に遷移する。基本シナリオから訂正シナリオへの遷移なので現在の対話内容を図17の対話内容に更新する。この対話内容にある都道府県名・市町村名である○○県△△市を残して、△△市内の番地情報を得るために「番地をどうぞ」と出力する。
(8)「567町」(他の番地名):ステートS401−4に遷移する。基本シナリオから訂正シナリオへの遷移のため現在の対話内容を図17の対話内容に更新する。この対話内容にある都道府県名・市町村名である○○県△△市を残して番地を567町で上書きする。その後“住所検索(都道府県名:○○県、市町村名:△△市、番地:567町)”で検索し、結果を履歴情報DB11に記録してステートS9に遷移する。
上記の発話において、(1)(2)のユーザ発話はシステム発話に対する応答であり、対話を進行させる入力である。これらの発話は基本シナリオ上の遷移で対話を進行させている。一方、(3)〜(8)のユーザ発話が一度終了した話題である住所検索の内容を修正する発話である。これらの発話は全て訂正シナリオへの遷移により適切に対話内容を修正している。
以上のように、基本シナリオによって指定されている本来の対話に関する入力のみならず過去に終了した話題を訂正するための入力が行われてもその値を受理し、対話内容を訂正することができる。
履歴情報DB11内に記録された履歴情報を用いて訂正シナリオを指定し、現在の対話状態に接続するようにしているため、上記のような直前のものの言い直しだけでなく別の話題に入った状態であっても直前の検索式の訂正入力が可能となる。
次に、対話例2を用いた訂正シナリオ追加手続きについて図2〜図4、図9、図18を参照して詳細に説明する。
[対話例2]
Usr11:目的地設定(開始→ステートS1)、 Sys12:目的地の設定方法をどうぞ、 Usr13:ジャンル検索(ステートS1→ステートS2)、 Sys14:検索ジャンルをどうぞ、 Usr15:レストラン(ステートS2→ステートS3→ステートS4)、 Sys16:レストランAを目的地に設定します。よろしいですか?、 Usr17:いいえ(ステートS4→ステートS10)、 Sys18:目的地設定をやり直しますか?、 Usr19:はい(ステートS10→ステートS1)、 Sys20:目的地の設定方法をどうぞ、 Usr21:住所検索(ステートS1→ステートS5)
この対話例は、一度ジャンル検索で検索した後に住所検索で目的地を決定しようとする対話である。発話Usr21の訂正シナリオ追加部103における処理について説明する。
発話Usr15のステートS3の時点で対話処理部101はジャンル検索を実行し、「レストラン」を検索する。その結果“restaurantA”が検索結果として得られたとする。ジャンル検索話題の話題の終了を検出したので、対話処理部101は履歴情報DB11に履歴情報(図18)を登録する。尚、話題「ジャンル検索」から導出される値は、ユーザによって入力された検索条件から得られる検索結果とする。
一方、発話Usr21によって対話状態がステートS1からステートS5に更新された。ステートS5はシナリオDB10にある基本シナリオの一部のため、対話処理部101による現在の対話内容の上書きは行わない。その後対話処理部101は訂正シナリオ追加部103に訂正シナリオ追加処理を依頼する。
このとき、訂正シナリオ追加部103は以下のように動作する。先ず、図2に示すように履歴情報DB11から訂正の対象となる対話内容を選択する(ステップS30)。履歴情報DB11には図18に示す情報が存在するため、この対話内容を選択する(ステップS31)。訂正対象の話題はジャンル検索であり、現在のステートS5は住所検索に所属するものなので訂正シナリオが追加可能であると判定される(ステップS32)。ジャンル検索に対応する訂正シナリオを訂正シナリオDB12に存在する場合、図4に示す訂正シナリオ402を取得する(ステップS33)。
訂正シナリオ402を現在のステートS5に接続する(図9)。即ち、ステートS402−3へのリンクをステートS5に移しかえる。更に、ステートS402−4へのリンクを移しかえる。遷移経路を遡ってジャンル検索話題の直後に遷移するステートを探索する。図9に示すステートS5からジャンル検索話題に所属するステートが現れるまで太線のリンクを遡っていくことで探索できる。ステートS3がジャンル検索に所属するステートなので、その直後のステートS4がステートS402−4へのリンクを移しかえる先となる。その結果、図9のようにシナリオが修正される。
この後、対話処理部101の制御により対話処理が続行する。現在のステートがS5であるので、これに基づきユーザに対して、Sys22:「都道府県名をどうぞ」という発話を返す。この時の対話状態は既にジャンル検索ではなく住所検索である。しかし、訂正シナリオがステートS5に追加されているため、例えば、Usr:「やっぱりレストランで」(ステートS402−2に遷移)、Usr:「やっぱりジャンル検索」(ステートS402−1に遷移)、Usr:「やっぱり遊園地にする」(ステートS402−2に遷移)、といった発話を受理することができる。
このように訂正シナリオを追加することで、ユーザの翻意が無くとも、音声の誤認識で「はい」が「いいえ」に間違えられて誤ったステートに進んだ場合でもユーザは直前に決定した場所条件の修正を簡単に行うことが可能である。
直前に終了した対話内容を訂正するだけではなく、対話処理部101における「ユーザが現在注目している値」の推定結果に基づき、これを導出した対話内容を訂正することも可能である。以下に、その詳細を説明する。
これは、履歴情報にある値を取り出す指示によって、ユーザの注目する値が最新の終了した話題ではなくなった場合などに有効である。例えば、下記の対話例3では、話題の終了順ではイタリア料理店の検索よりフランス料理店の検索の方が新しい実行履歴であるが、その後の発話Usr27によってユーザの注目はイタリアンA店となっている。このような場合、「駐車場のあるところ」といった設備指定によって「駐車場のあるフランス料理店」ではなく「駐車場のあるイタリア料理店」に変更するためには本対話例では最初に終了した対話内容である「イタリア料理」を訂正シナリオ選択対象にしなければならない。このような場合には「ユーザが現在注目している値」に基づく訂正シナリオ追加を実行することでユーザの訂正入力を取り扱うことができる。
[対話例3]
Usr23:イタリア料理、 Sys24:イタリアンA店があります。 Usr25:フランス料理(フランス料理店に注目)、 Sys26:みつかりませんでした。 Usr27:イタリアンA店に駐車場ある?(イタリアンA店に注目)、 Sys28:ありません。
手順としては訂正シナリオ追加部103における訂正シナリオ選択処理(ステップS30)において、対話処理部101による推定結果の値をキーにして履歴情報DB11から実行履歴を検索する。その結果を訂正シナリオ追加の対象として取り扱えば良い。尚、対話処理部101におけるユーザが注目する値の推定方法については既存のものを使用する。
例えば、発話Usr27で対話処理部101はユーザが注目する値がイタリアンAであると推定すると、その後の対話ではイタリアンAを検索した対話内容(発話Usr23)を対象にした訂正シナリオを現在の対話状態に追加することが可能となる。例えば、発話Usr23の対話内容には料理ジャンルの指定と設備の指定が可能であるとすると、ユーザは発話Sys28の後に例えば以下の値を入力できる。
(1)「設備追加」(検索条件の属性指定):発話Usr23の対話内容に対して設備属性を追加する対話状態に遷移する。
(2)「駐車場のあるところ」(設備属性の指定):発話Usr23の対話内容に対して設備属性に駐車場を指定する対話状態に遷移する。その後『駐車場のあるイタリア料理』を検索する。
この例において「ユーザがイタリアンA店に注目している」という情報を対話処理部101から得られなかった場合は、後に終了した対話内容を訂正シナリオの対象として選択するため、上記の値の入力は検索結果が空であるフランス料理店検索(発話Usr25)に対する訂正入力として取り扱うことになる。
このように対話処理部101におけるユーザが現在注目している内容の解析結果に基づいて訂正シナリオを追加する候補を選択することで、より対話の流れに応じた訂正シナリオを選択することが可能となる。
従って、このように構成された対話装置により、例えば音声入力の誤認識といった誤った入力でシナリオが進んでしまった場合や、ユーザの気が途中で変わった場合であってもユーザは自由に対話内容(条件)の訂正を行うことが可能となる。
また基本シナリオに加えて話題別で小規模な訂正シナリオを予め準備すれば、対話実行時に動的に訂正シナリオへのリンクを作成する。動的に訂正シナリオをリンクする機能を対話装置が持つことで、シナリオ設計者は予めユーザによる訂正を考慮した対話シナリオを設計する必要が無くなる。従って、シナリオ設計者は訂正シナリオを基本シナリオと別に設計、管理することが可能となる。このように本対話装置によれば予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストを低減することができる。
尚、上述の例では一つの状態遷移モデルで対話シナリオを定義する場合について記述しているが、本発明はそのような対話シナリオのモデルに限定されるものではない。例えば、複数の状態遷移モデルのシナリオを動的に組み合わせて対話を続行することが可能な対話装置においても、ユーザによる訂正入力を可能とするためには、ある対話状態から次の入力を待ち受ける時に予め組み合わせ可能なシナリオとして訂正シナリオを追加し、訂正シナリオに遷移する入力内容を受理可能とする必要がある。この組み合わせ可能なシナリオを抽出、追加する処理が本実施例による訂正シナリオ追加部103の動作に相当する。
また、別の対話処理の形態として各話題に対して問い合わせるべき属性を列挙したフレームを与え、そのフレームの状態に基づいてユーザへの応答を決定する対話シナリオのモデルも存在する。このモデルを使用した場合について説明する。本実施形態においてフレームを使用する場合、シナリオ設計者は話題毎に異なるフレームのテンプレートを定義する。対話実行時には対話処理部101がテンプレートからフレームを具現化し、対話内容に応じた属性値の代入等の編集を行う。フレームの例は図3における対話内容に関する説明と同様であるので詳細な説明は省略する。
対話処理部101は対話状態として2種類のフレームを管理する。第一は現在の対話内容に関するフレーム(現在のフレーム)であり、第二は訂正対象のフレームである。対話処理部101は現在のフレームに登録されている属性値を確認し、話題解決に必要である属性(必須属性)に属性値が登録されていなければ、その属性値を要求する問合せをユーザに行う。一方、必須属性が全て登録されている場合は、対話処理部101はその話題が解決されたと判断し、話題解決時の動作を行うと共に解決された話題を訂正対象フレームに登録する。
また、対話処理部101はユーザ発話が入力された時に、現在のフレームに該当する入力かどうかを確認する。該当しなければ訂正対象フレームに該当するかどうかを確認する。対話処理部101は現在のフレームに該当すればユーザ入力は現在の話題を進行させるものであると判断し、訂正対象フレームに該当すればユーザ入力は訂正意図をもつものであると判断する。逆に該当しなければユーザ入力はユーザによる新規話題の導入であるとして取り扱う。ユーザ発話がフレームに該当するかどうかは、例えばユーザ発話に含まれる属性値や属性名が当該フレームのものと一致するかどうかを確認することで判定することが可能である。
ユーザ発話が現在の話題を進行させるものの場合には、対話処理部101はユーザ発話を現在のフレームに反映させる。ユーザ発話が訂正意図を持つものの場合には、対話処理部101は該当する訂正対象フレームを現在のフレームに登録し、その後ユーザ発話を当該フレームに反映させる。新規話題の導入と判定された場合は、対話処理部101は入力された話題に関するフレームを現在のフレームに登録する。その後、対話処理部101は現在のフレームの内容に応じて、ユーザとの対話を継続する。尚、ユーザ発話が「条件変更」のような訂正意図のみを表す発話であれば、対話処理部101は訂正対象フレームを現在のフレームに設定し、どの属性を修正するかを問い合わせると言うふうに振舞う。
このように構成すれば、ユーザが一度終了した話題に対する入力を行った場合には、対話処理部101はそれを訂正入力であると判定し、訂正対象フレームを現在のフレームに登録して対話を継続することが可能である。例えばユーザ入力が訂正対象フレームに関する属性値であれば、その値を訂正対象フレームに代入した結果に基づいて対話処理部101は対話を継続する。或いはユーザ入力が訂正対象フレームに関する属性名であれば、その属性名に関する問合せを行うように振舞う。
以上の説明において、話題を表すフレームは、それに基づいて対話処理の動作を規定するので対話シナリオに相当する。対話処理部101が参照する対話状態である現在のフレーム、訂正対象フレームはシナリオ管理部102に相当する。訂正対象フレームに解決した話題を登録する処理が訂正シナリオ追加部103の役割に相当する。
本方式は他の対話モデルについても同様に適用することが可能である。例えばルールベース(プランなど)による対話処理指定であっても、話題別のルールを管理し、現在の話題に関するルールと共に訂正対象の話題に関するルールを適用可能な状態にする(この処理が訂正シナリオ追加部103に相当)ことで、ユーザの訂正入力に対する動作を実行することが可能となる。
以上のように、本発明の実施形態は対話モデルによらず適用が可能であり、一度決定した対話内容を訂正するためのシナリオの分岐を動的に追加し、それを訂正するためのユーザ入力を受理可能とする対話装置であれば、そのような実施形態は本発明の範囲内である。
また、上記のようなシナリオを動的に組み合わせることが可能な対話装置や、フレームに基づく対話装置の場合、話題別にシナリオや対話状態を定義することができる。このような場合は上述した実施例のような訂正用のシナリオを準備しなくとも本来のシナリオで代用することや、部分的に共有することもできる。或いは本実施例のように複数の話題が一つのシナリオに含まれる場合であっても、各話題の開始、終了を指定することでシナリオから各話題の部分シナリオを抽出することが可能であり、それを訂正シナリオとして代用することや、部分的に共有化することも可能であると考えられる。しかし、このような訂正シナリオが用意されていない場合においても、訂正のための対話状態に遷移可能であるように動作する場合は本発明の範囲内である。
また、訂正シナリオとして図16のように特定の属性を変更するものではなく、対話内容を訂正したいことの表明を受理できるようにしたものを訂正シナリオDB12に登録してもよい。図16に示す訂正シナリオ403の各ステートにおいて、図4に示す訂正シナリオ401のステートと同様の場合は同符号を付して説明を省略する。図16に示す訂正シナリオ403では、「条件変更」という入力がある場合、ステートS403−1の「変更するのは都道府県ですか?市町村ですか?番地ですか?」という訂正する属性を決定するためのステートに遷移することが可能なようになっている。このようにすることによって利用者がとっさに対話内容を変更したくなった時に、適切に訂正するための対話を誘導することが可能となる。
また、ユーザとの音声対話を行うためには音声認識で利用する文法(音声認識文法)の設定が必要となる場合がある。本実施例のように動的に訂正シナリオを接続することで、訂正シナリオに遷移するための文法が必要となる。このような場合には、接続した訂正シナリオに対応する文法を基本シナリオによる文法に追加すればよい。尚、訂正シナリオに対応する文法は訂正シナリオDB12に格納されて、基本シナリオに対応する文法はシナリオDB10に格納されているものとする。
本実施例は、カーナビの機能の一部について記述しているが、他の如何なるアプリケーションを対象にした対話装置についても適用可能である。また、本実施例では訂正シナリオ追加部103で追加した訂正シナリオを消去していないが、訂正シナリオ追加処理の直前に、それまでの段階で追加された訂正シナリオを消去する手続きを追加しても構わない。ただし、現在の状態が訂正シナリオ上であるかどうかを判定して、これに該当しない場合に限り実行する。
また、本実施例では訂正シナリオ終了時の基本シナリオへのリンクを遷移した経路を遡り、訂正シナリオと同じ話題が終了した直後の対話状態を選択しているが、これを選択するために終了時にリンクする可能性がある対話状態を予め指定しておいても良い。或いは訂正シナリオによる対話の結果に基づいて動的に次の対話状態を決定しても良い。
また、本実施例では履歴情報DB11から訂正シナリオの対象となる対話内容を一つだけ取り出すように記載しているが、複数の対話内容を対象としても良い。ただし、同じ話題の対話内容が複数存在する場合は登録順に基づき最新のものを採用する。
ここで、本対話装置を動作させる対話シナリオを記述する対話シナリオ記述言語について説明する。対話シナリオ記述言語とは、例えば非特許文献1にあるような対話シナリオをプログラミングするための言語である。シナリオ設計者がこの言語を使用して対話シナリオを記述し、その後対話装置が作成後の対話シナリオを直接読み取るか、コンパイラ等のツールによって対話装置で可読のデータ形式に変換したものを読み取ることで、対話装置がプログラミングした内容の対話手続きを実行することが可能となる。
シナリオ設計者は、直接対話シナリオ記述言語を編集したり、グラフィカルユーザインターフェースで対話シナリオ編集装置のインターフェースを使用し、その結果を一度対話シナリオ記述言語に変換するようにしたりすることで対話シナリオのプログラミングを行うことが可能である。
次に、本対話装置を動作させる対話シナリオ記述言語の記述様式の例を図15に示す。図15に示すように本対話シナリオ記述言語には、以下の特徴が含まれる。
(1)基本シナリオを記述するためのフィールドに加え、訂正シナリオを記述するためのフィールド1601が存在する。フィールド1601は、訂正シナリオと基本シナリオとに分けて記述することが可能となる。
(2)対話実行時に訂正シナリオとして動作中であるかどうかを確認する手続き1602を指定できる。これを確認することで訂正シナリオ1602のための特別処理を基本シナリオから分岐して指定することが可能となる。例えば、階層的なシナリオ記述によって話題別にシナリオが定義可能である場合などに、基本シナリオと訂正シナリオとを部分的に共有することが可能であるが、共有した記述部分が訂正シナリオとして動作している時に呼び出されたかどうかを確認できる。
このような機能を指定可能な対話シナリオ記述言語によって、訂正シナリオと基本シナリオとを分離して記述することが可能となる。或いは、基本シナリオ内に訂正シナリオの特有の処理を追加することが可能となる。従って、対話シナリオの設計者にとって訂正シナリオの編集、確認が容易となり、対話シナリオの管理コストを削減することができる。
以上のように、本発明の実現形態には上述の例に対して種々の変形が可能であり、過去に終了した話題の対話内容を訂正するための対話状態を動的に追加するという本発明の趣旨に反しない限り本発明の実施形態の範囲内である。
(第2実施形態)
本発明の第2実施形態に係る対話シナリオ編集装置の実施例について説明する。本実施例の概略構成図を図10に示す。図10に示すように本発明の対話シナリオ編集装置は、対話実行中にユーザによる訂正入力を可能とするための訂正シナリオを含む対話シナリオを作成・編集する対話シナリオ編集装置をシナリオ設計者に提供するものである。
図10に示す対話シナリオ編集装置において、先ず、インターフェース・編集処理部1001はシナリオ設計者の操作に基づいて対話シナリオを作成、編集する。編集対象のシナリオが基本シナリオか訂正シナリオであるかをシナリオ設計者に提示する。また、訂正シナリオの場合はどの話題に関する訂正シナリオであるかをシナリオ設計者に提示する。尚、これらの提示、編集対象選択が可能であるものであれば、ユーザインタフェースの形状は既存のものを使用しても構わない。
基本シナリオを編集する場合、シナリオ管理部1002はインターフェース・編集処理部1001からの編集対象の基本シナリオをシナリオDB1004に管理する。訂正シナリオを編集する場合、訂正シナリオ管理部1003はインターフェース・編集処理部1001で作成、編集されたシナリオの各話題についてその内容を訂正するための訂正シナリオを、例えば図4のような形式で訂正シナリオDB1005に記憶する。
このように構成された対話シナリオ編集装置によれば、編集結果を基本シナリオと訂正シナリオとに分けて出力することができる。また、シナリオ設計者が導入した話題に関する訂正シナリオが登録されていない場合は、その訂正シナリオを作成するように促すことができる。
このように構成された対話シナリオ編集装置によれば、訂正シナリオを基本シナリオと別に設計・管理するインターフェースを提供できる。これにより、予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストも低減させることができる。同時に必要な訂正シナリオが登録されているかどうかのチェックをすることが可能なため、シナリオ設計者のシナリオ設計・管理コストの低減を図ることができる。
(第3の実施形態)
本発明の第3実施形態に係る対話シナリオ編集装置の実施例について説明する。本実施例の概略構成図を図11に示す。図11に示すように本発明の対話シナリオ編集装置は、対話実行中にユーザによる訂正入力の受理を可能とする対話シナリオを低コストで生成する手続きをシナリオ設計者に提供するものである。
図11に示す対話シナリオ編集装置において、先ず、インターフェース・編集処理部1101は、シナリオ設計者の操作に基づいて対話シナリオを作成・編集する。尚、ユーザインタフェースの形状は既存のものを使用しても構わない。シナリオ管理部1102は、インターフェース・編集処理部1101からの編集対象の基本シナリオをシナリオDB1105に管理する。訂正シナリオ追加部1103はシナリオ設計者の編集が確定した時、訂正シナリオ管理部1104で管理されている訂正シナリオを確定したシナリオに接続する。訂正シナリオ追加部1103の動作の詳細は後に述べる。訂正シナリオ管理部1104は、各話題についてその内容を訂正するための訂正シナリオを、例えば、図4のような形式で訂正シナリオDB1106に管理する。
ここで訂正シナリオ追加部1103の動作について詳細に説明する。訂正シナリオ追加部1103は、シナリオ設計者の編集が確定した時、例えばシナリオ設計者が作成したシナリオの動作テストを行う時や最終的に対話装置に導入する時などに動作する。この時の訂正シナリオ追加部1103の動作を表すフローチャートが図12である。
ここで状態遷移モデルのシナリオを編集する対話シナリオ編集装置を、図4〜図5及び図12〜図14を参照して詳細に説明する。本対話シナリオ編集装置により編集処理を行っている基本シナリオを図5に示す。このシナリオはカーナビで実行する目的地を設定するシナリオであり、シナリオDB1105に格納されている。このシナリオではジャンルを指定して現在地周辺の施設を検索する「ジャンル検索」と、住所によって地点を指定する「住所検索」とによって場所を検索し、そこへの目的地設定を行うことが可能である。また予めジャンル検索・住所検索に所属するステートがシナリオ設計者により指定・登録されており、ジャンル検索に所属するのは、ステートS2、S3、住所検索に所属するのはステートS5〜S8である。
また、シナリオ設計者によりジャンル検索と住所検索に対する訂正シナリオが設計され、その内容は訂正シナリオDB1106に記憶されているものとする。訂正シナリオDB1106には図4に示すような情報が記憶されている。ここで図5の状態でシナリオ設計者が動作テストを開始する操作を行ったとする。このときに訂正シナリオ追加部1103による処理が行われる。この時の動作を、図12を参照して説明する。
先ず、編集対象となるステートを順に取り出す(ステップS21)。ここでは図5に示すステートS1から順に処理をするものとしてステートS1を選択する。次に、ステートS1に接続可能な訂正シナリオを訂正シナリオDB1106から取り出す(ステップS22)。ステートS1はジャンル検索にも住所検索にも所属していないステートなので、訂正シナリオ追加部1103は図4にあるジャンル検索用の訂正シナリオ402と住所検索用の訂正シナリオ401との両方を接続対象として選択する。そして最初の接続対象として住所検索用の訂正シナリオ401を選択する。
ここでステートS1に訂正シナリオ401を接続する(ステップS25)。図13を参照してこの接続手続きを説明する。訂正シナリオ401の初期状態(ステートS401−5)がステートS1であるかのようにリンクを移しかえるため、ステートS1からステートS401−1〜S401−4にリンクする。続いて訂正シナリオ401が終了時(ステートS401−6)の接続先を探索する。ステートS1に流入するリンクを遡り、ステートS10→S9→S8(図13中太線のリンク)の順に辿っていくと、ステートS8が住所検索に所属するのでステートS9が住所検索後に遷移する対話状態であることがわかる。よってステートS401−6へのリンクをステートS9に移しかえるので、ステートS401−4からステートS9にリンクする。これでステートS1に対する住所検索の訂正シナリオ接続処理が終了し、その結果図13のようなシナリオとなる(尚、図13ではステートS5〜S7の表記を省略している)。
住所検索に関する訂正シナリオ401の接続を終了したが、ジャンル検索の訂正シナリオの接続が終了していないので、更に接続を続ける(ステップS23)。ジャンル検索用の訂正シナリオ402を取り出し(ステップS24)、ステートS1に接続する(ステップS25)。この手続きについて図14を参照して説明する。訂正シナリオ402の初期状態(ステップS402−3)がステートS1であるかのようにリンクを移しかえるため、ステートS1からステートS402−1、S402−2にリンクする。続いて訂正シナリオ402が終了した時(ステートS402−4)の接続先を探索する。ステートS1に流入するリンクを遡り、ステートS10→S4→S3(図14中太線のリンク)の順に辿っていくとステートS3がジャンル検索に所属するのでステートS4がジャンル検索後に遷移する対話状態であることがわかる。よってステートS402−4へのリンクをステートS4に移しかえるので、ステートS402−2からステートS4にリンクする。これでステートS1に対するジャンル検索の訂正シナリオ接続処理が終了し、その結果図14のようなシナリオとなる(尚、図14においてもステートS5〜S7の表記を省略している)。
ステートS1に接続可能な訂正シナリオの接続処理がすべて終了したので、次のステートの接続処理を行う(ステップS23)。以降全てのステートにつき上記のような接続処理を行い、全てのステートにつき処理が終了すると訂正シナリオ追加処理も終了する(ステップS20)。このように全てのステートについて訂正のための訂正シナリオへのリンクを自動的に接続した結果を対話シナリオとして出力することで、以下のような対話例が受理可能となる。
[対話例4]
住所検索で「○○県△△市123町」を指定した後、Sys29:○○県△△市123町を目的地に設定します。よろしいですか?(ステートS9)、 Usr30:いいえ(ステートS9→ステートS10)、 Sys31:目的地設定をやり直しますか? Usr32:はい(ステートS10→ステートS1)、 Sys33:目的地の設定方法をどうぞ、 Usr34:567町(ステートS1→ステートS401−4→ステートS9)、 Sys35:○○県△△市567町を目的地に設定します。よろしいですか?
発話Usr34が直前に決定した「○○県△△市123町」から567町に訂正するための発話であり、これを入力することで訂正シナリオのステートであるステートS401−4に遷移し、その結果を用いた発話がSys35として出力されている。このように基本シナリオ(図5)と訂正シナリオ(図4)とを準備し、自動的に接続することで訂正のための発話を常時受理できるようになる。
従って、このように構成された対話シナリオ編集装置により、基本シナリオと訂正シナリオを準備するだけで常時条件変更が可能なシナリオを自動生成することが可能となる。これにより、訂正シナリオを基本シナリオと別に設計・管理することが可能となるため、予め全ての条件の修正を予測して大規模なシナリオを設計するよりも容易にシナリオ設計が可能であり、完成したシナリオの管理コストを低減させることができる。
尚、上述の例では一つの状態遷移モデルで対話シナリオを定義する場合について記述しているが、本発明はそのような対話シナリオのモデルに限定されるものではない。例えば複数の状態遷移モデルのシナリオを動的に組み合わせて対話を進行することが可能な対話方式や、各話題に対して問い合わせるべき属性を列挙したフレームを与え、ユーザによる入力に基づき順不同で属性に値を代入し、不足している属性を検出するとその属性をユーザに問い合わせるといった対話処理方式も存在する。これらの対話方式向けの対話装置についても訂正用のシナリオを設計・管理する必要があり、それをサポートする機能をもつ対話シナリオ編集装置であれば、そのような実施形態は本発明の趣旨の範囲内である。
また、上記のようなシナリオを動的に組み合わせることが可能な対話装置や、フレームに基づく対話装置の場合は話題別にシナリオや対話状態を定義することが可能であり、このような場合は上述した実施例のような訂正用のシナリオを準備しなくとも本来のシナリオで代用することや、部分的に共有することも可能であると考えられる。或いは本実施例のように複数の話題が一つのシナリオに含まれる場合であっても、各話題の開始・終了を指定することでシナリオから各話題の部分シナリオを抽出することが可能であり、それを訂正シナリオとして代用することや、部分的に共有化することも可能であると考えられる。
しかしこのような、訂正シナリオの編集処理が必須ではない状態においても、訂正シナリオが準備されていないことを検出した場合に本来のシナリオを代用する場合は、訂正シナリオ管理部1104に本来のシナリオと同じ内容のシナリオが格納されているものとみなされるので本発明の趣旨の範囲内である。また基本シナリオに対話内容訂正のための手続きを含めることが可能な場合においても、そのような手続きが指定可能な編集装置であれば訂正シナリオを生成するものであるとみなすことが可能であり、このようなものも本発明の趣旨の範囲内である。
また、訂正シナリオ終了時の基本シナリオへのリンク先を訂正シナリオと同じ話題が終了した直後の対話状態を選択しているが、これを選択するために終了時にリンクする可能性がある対話状態を予め指定しておいても良い。
また、本発明の実施形態では静的に訂正シナリオへのリンクを作成しているので、実際に作成後のシナリオで動作させる場合に誤った遷移が発生する場合がある。これに対処するために、例えば訂正シナリオへのリンクには「履歴情報として当該訂正シナリオの話題が登録されていること」を条件として追加する。この条件を対話実行中に評価することで無効な訂正シナリオへの遷移を抑制することが可能となる。
以上のように、本発明の実現形態には上述の例に対して種々の変形が可能であり、訂正シナリオを別途管理・編集し、編集した訂正シナリオをリンクしたシナリオを出力するという趣旨に反しない限り本発明の実施形態の範囲内である。
上記実施形態で説明した対話処理は、ハードウェアによって実現することもできるし、コンピュータを用いてソフトウェアにより実行することもできる。すなわち、本発明によると、ユーザからの音声入力に応じてユーザとの対話の進行を規定する対話シナリオに基づいてユーザへの応答をユーザに提供する対話処理であって、ユーザとの対話の進行に伴い、現在の対話シナリオへ過去に終了した対話結果を訂正する訂正シナリオを追加するステップとを具備する対話処理をコンピュータに行わせるためのプログラムを提供することもできる。