(57)【要約】【課題】  繁雑な処理を行うことなく、データベースのデータを必要とする場合と必要としない場合とが混在する対話処理を実現する。【解決手段】  データベース１００へのアクセスを仲介する仲介モジュール５０を設ける。そして、入力情報に対応する応答内容を生成するシナリオ処理モジュール４０が、この仲介モジュール１００を介してデータベース１００へアクセスすることにより、対話処理を実現する。すなわち、シナリオ処理モジュール４０は、データベース１００へのアクセスが必要となった際、検索に必要なパラメータである検索条件を仲介モジュール５０に出力する。これに対し、仲介モジュール５０は、受け取った検索条件をデータベース操作用言語の検索式に変換する。そして、この検索式はデータベース１００に出力され、その検索結果が仲介モジュール５０に返され、さらにシナリオ処理モジュール４０に転送される。【選択図】  図１
2006004274.tif 000002
【特許請求の範囲】
【請求項１】
入力情報に対する応答処理を行う対話処理装置であって、
上記入力情報に対応する応答内容を生成するシナリオ処理モジュールと、当該シナリオ処理モジュールのデータベースへのアクセスを仲介する仲介モジュールとを有し、
上記シナリオ処理モジュールは、
上記データベースへのアクセスが必要となった際、検索に必要なパラメータである検索条件を上記仲介モジュールに出力する対話制御部を有し、
上記仲介モジュールは、
上記検索条件をデータベース操作用言語の検索式に変換するデータベースアクセス変換処理部と、
上記検索式をデータベースに出力し、その検索結果を受け取るアクセス部と、
上記アクセス部が受け取った検索結果を上記シナリオ処理モジュールに出力するデータベースアクセス結果取り込み処理部と、を有する、
ことを特徴とする対話処理装置。
【請求項２】
請求項１記載の対話処理装置であって、
上記対話制御部が出力する上記検索条件は、
上記入力情報から抽出した属性値及びこの属性値に対応する属性名を含むデータであり、
上記仲介モジュールは、
属性名と上記データベースのカラム名との対応表を格納した対応表メモリをさらに有し、
上記データベースアクセス変換処理部は、
上記対応表を参照し、上記検索条件の上記属性名に対応する上記カラム名を特定し、特定した当該カラム名と上記属性値とを含む上記検索式を生成する、
ことを特徴とする対話処理装置。
【請求項３】
請求項２記載の対話処理装置であって、
上記対話制御部は、
データベース識別ＩＤをさらに出力し、
上記対応表メモリは、
各データベース識別ＩＤにそれぞれ対応する上記対応表を格納し、
上記データベースアクセス変換処理部は、
上記対話制御部から送られた上記データベース識別ＩＤに対応する上記対応表を参照して上記検索式を生成し、
上記アクセス部は、
上記対話制御部から送られた上記データベース識別ＩＤに対応する上記データベースに対し、上記検索式を出力する、
ことを特徴とする対話処理装置。
【請求項４】
請求項２記載の対話処理装置であって、
上記対話制御部は、
取り出し属性名をさらに出力し、
上記データベースアクセス結果取り込み処理部は、
上記アクセス部が受け取った検索結果から、上記取り出し属性名が示す属性名に対応するカラム名のデータのみを抽出して上記シナリオ処理モジュールに出力する、
ことを特徴とする対話処理装置。
【請求項５】
請求項１記載の対話処理装置であって、
上記対話制御部は、
絞込み指定子をさらに出力し、
上記データベースアクセス結果取り込み処理部は、
上記アクセス部が受け取った検索結果から、上記絞込み指定子が示す条件に合致するもののみを抽出して上記シナリオ処理モジュールに出力する、
ことを特徴とする対話処理装置。
【請求項６】
請求項１記載の対話処理装置であって、
上記データベースアクセス結果取り込み処理部は、
上記アクセス部が受け取った検索結果の要約情報をさらに生成し、生成した当該要約情報を上記シナリオ処理モジュールに出力する、
ことを特徴とする対話処理装置。
【請求項７】
入力情報に対する応答処理を行う対話処理方法であって、
シナリオ処理モジュールにおける応答処理においてデータベースへのアクセスが必要となった際、当該シナリオ処理モジュールの対話制御部が、検索に必要なパラメータである検索条件を仲介モジュールに出力し、
上記仲介モジュールのデータベースアクセス変換処理部が、上記検索条件をデータベース操作用言語の検索式に変換し、
上記仲介モジュールのアクセス部が、上記検索式を上記データベースに出力し、上記データベースから送られた検索結果を受け取り、
上記仲介モジュールのデータベースアクセス結果取り込み処理部が、上記アクセス部が受け取った検索結果を上記シナリオ処理モジュールに出力する、
ことを特徴とする対話処理方法。
【請求項８】
入力情報に対する応答処理を行う対話処理方法であって、
シナリオ処理モジュールにおける応答処理においてデータベースへのアクセスが必要となった際、当該シナリオ処理モジュールが、検索に必要なパラメータである検索条件を仲介モジュールに出力し、
上記仲介モジュールが、上記検索条件をデータベース操作用言語の検索式に変換し、当該検索式を上記データベースに出力し、当該データベースから送られた検索結果を受け取り、当該検索結果を上記シナリオ処理モジュールに出力する、
ことを特徴とする対話処理方法。
【請求項９】
請求項１記載の対話処理装置としてコンピュータを機能させるための対話処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力情報に応じた対話処理を行う対話処理装置、対話処理方法及びその対話処理プログラムに関し、特に、対話処理に関し、データベースへのアクセスを必要とする対話処理装置、対話処理方法及び対話処理プログラムに関する。
【背景技術】
【０００２】
音声対話を用いた各種の予約システム、情報検索システムを実現した対話処理装置として、例えば、特許文献１に示すものがある。
特許文献１に記載された対話処理装置は、音声対話処理を行う端末装置と、この端末装置と通信可能に接続され、音声対話処理を決定付けるプログラムを具備するデータ群（以下「シナリオドキュメント」と呼ぶ）を生成するセンタ側装置（サーバ）とによって構成される。
このセンタ側装置がシナリオドキュメントを生成する場合、まず、センタ側装置の情報検索部が、対話内容に応じた検索条件で、デー夕べ−ス（ユーザプロファイル、レストランＤＢ、観光ＤＢ等）を検索する。次に、センタ側装置の音声対話プログラム生成部が、この検索結果を用い、端末装置での音声対話処理に必要なシナリオドキュメントを生成し、端末装置に送る。端末装置は、このシナリオドキュメントに従い、音声対話処理を行う。
【０００３】
ここで、特許文献１記載の方法では、データベースからの検索結果からシナリオドキュメントに生成する処理にＣＧＩ（Common Gateway Interface）技術を用いている。このＣＧＩ技術を用いてシナリオドキュメントへの変換を行う場合、まず、音声対話プログラム生成部は、ＳＱＬ（Structured Query Language）等のデータベース操作用言語で記述された検索式をデータベースに送り、その検索結果を取得する。次に、音声対話プログラム生成部は、受け取った検索結果を端末側で処理できる形式（以下「シナリオ記述用言語」という）の文書（例えば、ＶｏｉｃｅＸＭＬ（eXtensible Markup Language）文書等）に変換し、それを用いてシナリオ記述用言語のシナリオドキュメントを生成する。
【０００４】
このように特許文献１の方法では、データベースの情報を用いてシナリオドキュメントを生成しているが、対話処理にデータベースのデータを必要としない場合には、毎回新たなシナリオドキュメントを生成する必要はない。すなわち、この場合は、予め生成しておいたシナリオドキュメントをセンタ側装置に格納しておき、センタ側装置が端末装置から要求を受けるたびに、このシナリオドキュメントを端末装置に提供すればよい。
【特許文献１】特開２００３−１６７８９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来方法では、データベースのデータを必要とする対話処理と、データベースのデータを必要としない対話処理とが混在する場合に、処理が繁雑になるという問題点がある。
例えば、前述の通り、対話処理にデータベースのデータを必要としない場合、対話処理に必要なシナリオドキュメントは、予めシナリオ記述用言語（ＶｏｉｃｅＸＭＬ文書等）で生成しておくことが可能である。そして、このような対話処理では、端末装置から要求があった際に、センタ側装置がこのシナリオドキュメントをこの端末装置に提供するだけで、対話処理を進行することができる。
【０００６】
これに対し、対話処理にデータベースのデータを必要とする場合、シナリオドキュメントの内容は、データベースから抽出したデータによって変化するため、センタ側装置は、このようなシナリオドキュメントを事前に記述しておくことはできない。そのため、従来のセンタ側装置は、端末装置からの要求が発生してから、ＳＱＬ等のデータベースアクセス専門の問合せ用プログラミング言語を用いてデータベースプログラムにアクセスし、その場で動的にシナリオドキュメントを生成し、これを端末装置に提供していた。
このように従来方法の場合、データベースにアクセスするか否かで、シナリオドキュメントの取扱いを変化させなければならなかった。
【０００７】
また、従来、データベースのデータを必要とする対話処理と必要としない対話処理とに対応する対話処理装置を設計する場合、設計者は、シナリオドキュメントを記述するためのシナリオ記述用言語（ＶｏｉｃｅＸＭＬ文書等）と、データベースにアクセスするための問合せ言語（データベース操作用言語：ＳＱＬ等）とを駆使してシステム設計を行わなければならなかった。そのため、例えば、両方の言語に精通した者でなければ、最適な対話処理装置を設計することが困難であったという問題点もある。
この発明は、以上の点を鑑みてなされたものであり、繁雑な処理を行うことなく、データベースのデータを必要とする場合と必要としない場合とが混在する対話処理を実現する技術を提供することを目的とする。
また、この発明の他の目的は、データベース操作用言語に関する専門的な知識を有しないものであっても、対話処理装置を設計することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、以上の問題を解決するために、データベースへのアクセスを仲介する仲介モジュールを設ける。そして、入力情報に対応する応答内容を生成するシナリオ処理モジュールが、この仲介モジュールを介してデータベースへアクセスすることにより、対話処理を実現する。
すなわち、シナリオ処理モジュールは、データベースへのアクセスが必要となった際、検索に必要なパラメータである検索条件を仲介モジュールに出力する。これに対し、仲介モジュールは、受け取った検索条件をデータベース操作用言語の検索式に変換する。この検索式はデータベースに出力され、その検索結果が仲介モジュールに返される。そして、この検索結果はシナリオ処理モジュールに出力される。
【０００９】
ここで、シナリオ処理モジュールは、検索に必要なパラメータである検索条件を仲介モジュールに出力するだけで、その検索条件に合致したデータをデータベースから取得できる。すなわち、シナリオ処理モジュールは、対話処理にデータベースのデータが必要な場合であっても、データベース操作用言語を用いる必要はない。そのため、本発明のシナリオ処理モジュールは、データベースへのアクセスの有無に関わらず、シナリオ記述用言語のみを用いて処理を行えばよい。その結果、データベースへのアクセスの有無に関わらず、このシナリオ処理モジュールにおけるシナリオドキュメントの取扱いを統一化できる。
【発明の効果】
【００１０】
以上のように、本発明では、データベースへのアクセスの有無に関わらず、シナリオ処理モジュールにおけるシナリオドキュメントの取扱い・管理を統一化できるため、データベースのデータを必要とする対話処理と必要としない対話処理とが混在する場合であっても、繁雑な処理を行うことなく対話処理を実現できる。
また、本発明では、応答内容を生成する機能（シナリオ処理モジュール）と、データベースへアクセスする機能（仲介モジュール）とが独立している。そのため、仲介モジュールを流用することにより、データベース操作用言語に関する専門的な知識を有しない者であっても、対話処理装置を設計することができる。
【発明を実施するための最良の形態】
【００１１】
以下、この発明の実施の形態を図面を参照して説明する。
〔概要〕
まず、本形態の概要について説明する。
図１は、本形態における対話処理装置１の概要を説明するための概念図である。
この例の対話処理装置１は、入力情報に対応する応答内容を生成するシナリオ処理モジュール４０と、当該シナリオ処理モジュール４０のデータベース１００へのアクセスを仲介する仲介モジュール５０とを有し、このデータベース１００から取得した情報を用いて、入力情報に対する応答処理を行う。
【００１２】
シナリオ処理モジュール４０の対話処理において、データベース１００へのアクセスが必要となった際、シナリオ処理モジュール４０の対話制御部４３は、検索に必要なパラメータである検索条件を仲介モジュール５０に出力する。
仲介モジュール５０のＤＢ（データベース）アクセス変換処理部５１は、受け取った条件をデータベース操作用言語（この例ではＳＱＬ）の検索式に変換する。そして、アクセス部５４において、この検索式をデータベース１００に出力し、その検索結果であるデータテーブルを受け取る。ＤＢアクセス結果取り込み処理部５５は、この検索結果をシナリオ処理モジュール４０に出力し、これを受け取ったシナリオ処理モジュール４０は、メモリにこの検索結果を格納する。そして、シナリオ処理モジュール４０は、この検索結果を利用して応答処理を行う。
【００１３】
〔詳細〕
次に、本形態の詳細について説明する。
〔詳細構成〕
図２は、公知のコンピュータに所定のプログラム（対話処理プログラム）を実行させることにより構築される対話処理装置１の構成を例示したブロック図である。
図２に例示するように、この例の対話処理装置１は、音声認識部１０、音声理解部２０、スロット辞書メモリ３０、シナリオ処理モジュール４０、仲介モジュール５０、及び音声応答出力部６０を有しており、仲介モジュール５０を通じて外部のデータベース１００と通信可能に接続されている。
【００１４】
また、この例のシナリオ処理モジュール４０は、対話理解部４１、理解状態メモリ４２、対話制御部４３、シナリオメモリ４４及びデータメモリ４５を有している。さらに、この例の仲介モジュール５０は、ＤＢアクセス変換処理部５１、対応表メモリ５２、ＤＢ操作用言語辞書メモリ５３、アクセス部５４、ＤＢアクセス結果取り込み処理部５５及びデータ抽出機能メモリ５６を有している。
＜スロット辞書＞
この例のスロット辞書メモリ３０は、対話意図を示す属性名（例えば「目的地名」「ジャンル」等）と、その属性値（例えば「横須賀」「蕎麦屋」等）との対応表であるスロット辞書を格納しておくメモリである。
【００１５】
＜理解状態メモリ＞
この例の理解状態メモリ４２は、音声認識部１０から入力された発話内容をもとに抽出された属性名と属性値との組の集合（以下「スロット構造」と呼ぶ。）を理解状態表４２ａとして格納するメモリである。
図３の（ａ）は、この理解状態メモリ４２に格納された理解状態表４２ａの例示である。この例の場合、「目的地名」「ジャンル」「店舗名」「電話番号」という属性名と、「目的地名」に対応する「横須賀」という属性値及び「ジャンル」に対応する「蕎麦屋」という属性値と、が記録された理解状態表４２ａが格納されている。
【００１６】
＜シナリオメモリ＞
この例のシナリオメモリ４４は、シナリオ記述用言語（例えば、ＶｏｉｃｅＸＭＬ等）で記述されたシナリオドキュメント４４ａを格納するメモリである。なお、この例のシナリオドキュメント４４ａは、対話制御規則４４ｂ（入力された発話内容に対してどのような応答処理を行うかを示したプログラム）を具備するデータ群である。また、この対話制御規則４４ｂは、検索クエリー４４ｃを有している。
図３の（ｂ）は、この検索クエリー４４ｃの例示である。検索クエリー４４ｃは、外部のデータベース１００から取得するデータ（この例では、データベース１００に格納された表から抽出する行）を指定するための情報であり、この例の場合、「検索条件」「データベース識別ＩＤ」「取り出し属性名」「絞込み指定子」「query result」の情報を有している。
【００１７】
ここで、この例の「検索条件」とは、外部のデータベース１００の検索条件を示すパラメータである。この例の場合、入力情報の単語列から抽出した「属性値」及びこの属性値に対応する「属性名」を「検索条件」とする。また、「検索条件」を構成する「属性名」及び「属性値」は変数であり、対話制御規則４４ｂに基づく処理に伴い、これらの変数に必要な値が代入される。なお、図３の（ｂ）例では、１つ目の「属性名」に「目的地名」が代入され、それに対応する「属性値」に「横須賀」が代入され、２つ目の「属性名」に「ジャンル」が代入され、それに対応する「属性値」に「蕎麦屋」が代入されている。
【００１８】
また、この例の「データベース識別ＩＤ」とは、データを取得する外部のデータベース１００を特定するための識別子であり、その値は変数となっている。そして、対話制御規則４４ｂに基づく処理に伴い、この変数に必要な値が代入される。なお、図３の（ｂ）の例では「Shop_all」という値が代入されている。
また、この例の「取り出し属性名」とは、検索結果として抽出されたデータエントリから、どの属性名のデータを抽出するかを指定するデータであり、その値は変数となっている。そして、対話制御規則４４ｂに基づく処理に伴い、この変数に必要な値が代入される。なお、図３の（ｂ）の例では、「取り出し属性名」がヌル値（指定なし）とされている。
【００１９】
また、「絞込み指定子」とは、外部のデータベース１００から抽出したデータエントリから、どのデータエントリを取得するかを指定する情報であり、その値は変数となっている。そして、対話制御規則４４ｂに基づく処理に伴い、この変数に必要な値が代入される。この例の場合、「絞込み指定子」として以下の値が用意されている。なお、下記の"min","mins","max","maxs"の内容における「カラム（フィールド）の値」としては、例えば、価格、数量、広さ等の数値の大きさが指標となるデータを意味する。また、図３の（ｂ）の例では、「all」が「絞込み指定子」に代入されている。
【表１】
2006004274.tif 000003
また、「query result」には、外部のデータベース１００から取得したデータの保存先を示す値（「検索結果保存先変数名」）が代入される。この例では、データメモリ４５のアドレスが代入される。
【００２０】
＜対応表メモリ＞
この例の対応表メモリ５２は、シナリオ処理モジュール４０で取り扱う属性名（「シナリオ処理モジュール内属性名」）と、データベース１００のカラム（フィールド）名（「データベースカラム（フィールド）名」）と、の対応表を格納している。また、この例の場合、対応表メモリ５２には、複数の対応表が格納されており、各対応表は、各データベース識別ＩＤにそれぞれ対応付けられている。
図４の（ａ）は、データベース識別ＩＤ＝“Shop_all”に対応する対応表５２ａのデータ構成の例示である。この図に例示するように、この例の対応表５２ａは、「シナリオ処理モジュール内属性名」である「目的地名」「ジャンル」「店舗名」「電話番号」が、それぞれ「データベースカラム（フィールド）」である「Area」「Genre」「Shop_name」「Tel_num」に対応付けられている。
【００２１】
＜ＤＢ操作用言語辞書メモリ＞
この例のＤＢ操作用言語辞書メモリは、検索に必要なパラメータである検索条件を、データベース操作用言語（例えば、ＳＱＬ（Structured Query Language）等）の検索式に変換するための辞書を格納する。
＜データ抽出機能メモリ＞
この例のデータ抽出機能メモリ５６には、表１に示した「絞込み指定子」と、それに対応する処理手順（表１の「内容」を実行する手順）と、が対応付けられて格納されている。
【００２２】
＜データベース＞
この例のデータベース１００は、各データを複数の項目の集合として格納したリレーショナルデータベースである。
図４の（ｂ）は、データベース識別ＩＤ＝“Shop_all”に対応するデータベース１００のデータ構成を例示した図である。この図に例示するように、データベース１００は、「Area」「Genre」「Shop_name」「Tel_num」という４つのカラム（フィールド）にそれぞれ対応する、
「横須賀」「蕎麦屋」「味久」「046-aaa-bbbb」という値をもつデータ１０１と、
「横須賀」「蕎麦屋」「一松」「046-ccc-dddd」という値をもつデータ１０２と、
「新宿」「うどん屋」「めん坊」「03-eeee-ffff」という値をもつデータ１０３と、
「横浜」「ラーメン屋」「よし村家」「045-ggg-hhhh」という値をもつデータ１０４と、の集合である。
そして、データベース操作用言語によって、何れかのカラムの値を特定することにより、その値を有するデータを抽出できる構成となっている。例えば、Area=「横須賀」かつGenre=「蕎麦屋」という検索条件であった場合、Area=「横須賀」であって、なおかつGenre=「蕎麦屋」であるデータ１０１、１０２が検索結果として抽出される。
【００２３】
〔処理の詳細〕
次に、本形態における対話処理装置１の処理について説明する。
図５及び図６は、本形態における対話処理装置１の処理を説明するためのフローチャートである。以下、このフローチャートに沿って説明を行っていく。なお、図５及び図６における矢印はデータの流れを示すものではない。
この例の対話処理装置１は、入力された発話内容に対する応答内容を音声出力する。まず利用者は、図示していないマイクロフォンに音声を入力し、マイクロフォンは、その音声を音声入力信号に変換して音声認識部１０に送る。音声認識部１０は、この音声入力信号（「入力情報」の例）を受け取って音声認識を行い、その認識結果である単語（列）を音声理解部２０に出力する（ステップＳ１）。
【００２４】
音声理解部２０は、音声認識部１０から出力された単語（列）を受け取り、入力発話の発話意図を示す属性の名称（属性名）と属性値の集合（スロット構造）を作成する（ステップＳ２）。具体的には、例えば、受け取った単語（或いは単語列から抽出した単語）をキーとしてスロット辞書メモリ３０のスロット辞書を検索し、この単語に対応する属性値が存在するか否かを判断する。そして、一致する属性値が存在した場合、その属性値とそれに対応する属性名の組をスロット構造とする。例えば、音声理解部２０が受け取った単語が「横須賀」であり、スロット辞書に、属性名「目的地名」と属性値「横須賀」とが対応付けられていた場合、属性名「目的地名」−属性値「横須賀」といったスロット構造が作成される。
【００２５】
このように音声理解部２０が生成したスロット構造は、シナリオ処理モジュール４０の対話理解部４１に送られ、対話理解部４１は、このスロット構造を理解状態メモリ４２に格納されたデータに追加する（ステップＳ３）。なお、理解状態メモリ４２は、対話処理の開始以降に対話理解部４１が受け取ったスロット構造を順次保存していく。例えば、対話処理の開始以降に、対話理解部４１が、属性名「目的地名」−属性値「横須賀」といったスロット構造、及び属性名「ジャンル」−属性値「蕎麦屋」といったスロット構造を受け取った場合、理解状態メモリ４２の理解状態表４２ａには、図３の（ａ）に例示したようなデータ（属性名「目的地名」に属性値「横須賀」が対応付けられ、属性名「ジャンル」に属性値「蕎麦屋」が対応付けられたデータ）が格納される。このように理解状態メモリ４２へのデータの格納状況を「理解状態（文脈）」と呼ぶ。
【００２６】
次に、この例の対話理解部４１は、理解状態メモリ４２に格納された「属性名」と「属性値」のデータ（対話理解結果）を対話制御部４３に出力する。対話制御部４３は、この対話理解結果の出力を受け取り、シナリオメモリ４４から読み込んでいたシナリオドキュメント４４ａの対話制御規則４４ｂに従い、この対話理解結果に応じた処理内容を決定する（ステップＳ４）。
ここで決定される処理内容は、データベース１００へのアクセスを必要としない処理と、アクセスを必要とする処理とに分けられる。
【００２７】
＜データベース１００へのアクセスを必要としない処理＞
データベース１００へのアクセスを必要としない処理としては、例えば、店舗検索案内をタスクとする音声対話装置において、対話理解部４１から出力された対話理解結果が、属性名「目的地名」に対応する属性値は埋まっているが、属性名「ジャンル」に対応する属性値が埋まっていないものであった場合の処理を例示できる。この場合、対話制御部４３は、対話制御規則４４ｂに従い、「属性名『ジャンル』に対応する属性値を入力するよう促すシステム発話を行う」という処理を選択する。
【００２８】
なお、この仕組みでは、対話制御規則４４ｂを取り替えることにより、対話理解部４１の出力結果が同じでも異なるシステム発話内容を選択させることができる。例えば、上記と同じ状態（属性名「目的地名」に対応する属性値が埋まっており、属性名「ジャンル」に対応する属性値が埋まっていない状態）の場合であっても、対話制御規則４４ｂを別の規則に取り替えれば、属性名「ジャンル」に対応する属性値の入力を促すのではなく、例えば、「すでに入力されている属性名『目的地名』に対応する属性値が正しいか否かを確認するよう促すシステム発話を行う」という処理を選択させることも可能である。
【００２９】
＜データベース１００へのアクセスを必要とする処理＞
データベース１００へのアクセスを必要とする処理としては、以下のような処理を例示できる。
（ａ）店舗検索タスクにおいて、属性名「目的地名」に対応する属性値と、属性名「ジャンル」に対応する属性値とが既に入力されている場合に、これらの属性名及び属性値を検索条件としてデータベース１００にアクセスし、この検索条件に合致する店舗数を取得する。
（ｂ）ここで、検索条件に合致した店舗数が０件であれば、「その検索条件では、合致する店舗がひとつもないので、検索条件を緩和するか変更することを促すシステム発話を行う」という処理を選択する。
（ｃ）検索条件に合致した店舗数が１〜１０程度であれば、「その検索条件による検索で合致した具体的な店舗名を読み上げて伝える」という処理を選択する。
（ｄ）検索条件に合致した店舗数が１１件以上であれば、「その検索条件による検索では合致する店舗数が多すぎるため、ジャンル名を変更するか、別の目的地の検索をするよう勧める」という処理を選択する。
【００３０】
このような処理では、外部のデータベース１００にアクセスし、そこから得た情報に応じて、次の応答内容を使い分ける。このような場合には、対話処理にデータベース１００へのアクセスが必要となる（ステップＳ４で決定される処理内容の説明終わり）。
対話制御部４３は、ステップＳ４で決定した処理が、データベース１００へのアクセスを必要としない処理であるか、アクセスを必要とする処理であるかを判断し（ステップＳ５）、その判断に応じた処理を実行する。
【００３１】
＜データベース１００へのアクセスを必要としない処理であると判断された場合＞
ステップＳ５の判断において、ステップＳ４で決定した処理が「データベース１００へのアクセスを必要としない処理である」と判断された場合、対話制御部４３は、ステップＳ４で決定した処理を示す「応答内容」を音声応答出力部６０に出力する（ステップＳ６）。
音声応答出力部６０は、対話制御部４３から出力された「応答内容」を受け取り、その応答内容を言語表現に変換し、さらに、実際に出力される音声出力に変換して出力する（ステップＳ７）。なお、その後、さらに音声対話を継続する場合にはステップＳ１に戻る。
例えば、音声応答出力部６０が、「属性名『ジャンル』に対応する属性値を入力するよう促すシステム発話を行う」という処理を示す「応答内容」を受け取った場合、この音声応答出力部６０は、この「応答内容」から具体的な言語表現、例えば、「まだジャンルを入力していないようです。ジャンルをおっしゃってください。」に変換する（ステップＳ６）。
さらに、音声合成を用いるシステムであれば、音声応答出力部６０は、この言語表現から、出力すべき音声信号を合成して出力する（ステップＳ７）。また、録音編集方式により音声出力するシステムであれば、音声ファイルからこの言語表現に対応するファイルの組合せを選択し、それらを再生することにより、実際に音声を出力する（ステップＳ７）。その後、さらに音声対話を継続する場合にはステップＳ１に戻る。
【００３２】
＜データベース１００へのアクセスを必要とする処理であると判断された場合＞
対話制御部４３が、対話理解部４１から送られた対話理解結果をもとに対話制御規則４４ｂを解析し、デー夕ベース１００への検索発行命令があることを見つけた場合、この対話制御部４３は、対話制御規則４４ｂに従い、送られた対話理解結果を用いて検索クエリー４４ｃの「検索条件」を設定する。例えば、対話制御部４３に送られた対話理解結果が、属性名「目的地名」−属性値「横須賀」及び属性名「ジャンル」−属性値「蕎麦屋」であった場合（図３の（ａ））、対話制御部４３は、「目的地名＝“横須賀”，ジャンル＝“蕎麦屋”」という検索条件を設定する（図３の（ｂ））。
【００３３】
また、対話制御部４３は、対話制御規則４４ｂに従い、取得するデータが格納されたデータベース１００の「データベース識別ＩＤ」、必要なデータに対する「取り出し属性名」及び「絞込み指定子」を設定する。この例では、「データベース識別ＩＤ」＝“Shop_all”、「取り出し属性名」＝“”、「絞込み指定子」＝“all”に設定するものとする。この様な設定内容は、例えば、対話制御規則４４ｂの検索クエリー４４ｃに代入され、シナリオメモリ４４に格納される。
次に、対話制御部４３は、データベース識別ＩＤと検索条件を、仲介モジュール５０のＤＢアクセス変換処理部５１に出力する（ステップＳ８）。これを受け取った仲介モジュール５０は、その検索条件を、データベース操作用言語（この例ではＳＱＬ）の検索式に変換し（ステップＳ９）、その検索式の属性名を、データベース１００のデータ構造に適合するカラム（フィールド）に置換変換する（ステップＳ１０）。
【００３４】
図７は、このステップＳ９及びＳ１０の処理を説明するための概念図である。
前述のように、仲介モジュール５０のＤＢ操作用言語辞書メモリ５３は、検索に必要なパラメータである検索条件を、データベース操作用言語の検索式に翻訳するためのＤＢ操作用言語辞書を有している。この例のＤＢアクセス変換処理部５１は、このＤＢ操作用言語辞書を用い、シナリオ処理モジュール４０から送られた検索条件を、データベース操作用言語（この例ではＳＱＬ）の検索式に変換する（ステップＳ９）。
また、前述のように、仲介モジュール５０は、各データベース識別ＩＤに対応する対応表５２ａ（図５の（ａ））を対応表メモリ５２に格納しており、シナリオ処理モジュール４０で用いられる属性名と、データベース１００で用いられているカラム（フィールド）名との対応を事前に把握している。この例のＤＢアクセス変換処理部５１は、対話制御部４３から送られたデータベース識別ＩＤに対応する対応表５２ａを参照し、上述の検索式（ＳＱＬ等）の属性名（「検索条件の属性名」に対応）に対応するフィールド名を特定し、特定した当該フィールド名と属性値とを含む検索式（ＳＱＬ等）を生成する（ステップＳ１０）。
【００３５】
例えば、ステップＳ８で送られたデータベース識別ＩＤが「Shop_all」であり、ステップＳ９で生成された検索式（ＳＱＬ等）の属性名が「目的地名」であり、その属性値が「横須賀」であった場合、ＤＢアクセス変換処理部５１は、シナリオ処理モジュール内属性名「目的地名」に対応するデータベースカラム（フィールド名）「Area」と、属性値「横須賀」とを含む検索式（ＳＱＬ等）を生成する。
なお、本形態では、ステップＳ９の処理を行った後、ステップＳ１０の処理を行っているが、逆に、ステップＳ１０の処理（属性名のカラム（フィールド）名への変換処理）を行ってからステップＳ９の処理（検索条件のデータベース操作用言語への変換処理）を行うこととしてもよい。
【００３６】
生成された検索式は、アクセス部５４に送られる。アクセス部５４は、ステップＳ８で送られたデータベース識別ＩＤに対応するデータベース１００に対し、この検索式を出力し、このデータベース１００のプログラムにアクセスする。このデータベース１００へのアクセスに対し、データベース１００のプログラムは、その検索結果であるデータテーブルを返す。例えば、データベース１００に図５の（ｂ）のデータが格納されており、送られた検索式がArea「横須賀」かつGenre「蕎麦屋」であった場合、データ１０１及びデータ１０２が検索結果として返される。そして、これを受け取ったアクセス部５４は、このデータテーブルをＤＢアクセス結果取り込み処理部５５に送る（ステップＳ１１）。
【００３７】
次に、シナリオ処理モジュール４０の対話制御部４３は、シナリオメモリ４４内の検索クエリー４４ｃに設定しておいた「検索結果保存先変数名」
「絞込み指定子」「取り出し属性名」を抽出し、これらを仲介モジュール５０に出力する（ステップＳ１２）。
これらの情報を受け取った仲介モジュール５０は、検索結果であるデータテーブルから、受け取った「絞込み指定子」「取り出し属性名」に合致するデータエントリのみを取り出し（ステップＳ１３）、その要約情報を生成する（ステップＳ１４）。
【００３８】
図８は、これらの処理を説明するための概念図である。
シナリオ処理モジュール４０から送られた「絞込み指定子」「取り出し属性名」は、仲介モジュール５０のＤＢアクセス変換部５１に送られ、そこからＤＢアクセス結果取り込み処理部５５に転送される。そして、このＤＢアクセス結果取り込み処理部５５は、データ抽出機能メモリ５６に格納された表（表１）を参照し、アクセス部５４が受け取った検索結果から、この「絞込み指定子」が示す条件に合致するデータエントリを選択する。例えば、この例では、「絞込み指定子」＝“all”であるため、ＤＢアクセス結果取り込み処理部５５は、「検索条件に合致したすべてのデータエントリを取得」という処理を行う。
【００３９】
次にＤＢアクセス結果取り込み処理部５５は、ここで選択されたデータエントリから、「取り出し属性名」が示す属性名に対応するカラム（フィールド）名のデータのみを抽出する。つまり、ＤＢアクセス結果取り込み処理部５５は、対応表メモリ５２（受け取った「データベース識別ＩＤ」に対応する対応表）を参照し、「取り出し属性名」が示す属性名をカラム（フィールド）名に変換し、このカラム（フィールド）名のデータのみを抽出する。なお、この例では、「取り出し属性名」はヌル値であるため、カラム（フィールド）名によるデータの絞込みは行われない。
【００４０】
また、ＤＢアクセス結果取り込み処理部５５は、検索結果の要約情報をさらに生成する。ここで生成される要約条約としては、例えば、検索条件に合致したデータエントリがあったかなかったのか（boolean）、検索条件に合致したデータエントリの総数（NOR(Number Of Records)）、検索条件に合致したデータエントリの種類数（異なり数：NODR(Number Of  Distinct Records)）等を例示できる。
ＤＢアクセス結果取り込み処理部５５は、以上のように抽出した検索結果値、生成した要約情報、及びデータメモリ４５のアドレスを示した「検索結果保存先変数名」をシナリオ処理モジュール４０の対話制御部４３に出力する（ステップＳ１５）。対話制御部４３は、受け取った「検索結果保存先変数名」が示すデータメモリ４５のアドレスに、受け取った検索結果値及び要約情報を格納する（ステップS１６）。
【００４１】
以上の処理により、シナリオ処理モジュール４０は、データベース操作用言語を用いることなく、外部のデータベース１００中のデータを取り込むことができ、それ以降は、外部のデータベース１００へのアクセスを行わない場合の処理と同様に、このデータを参照できる。そして、対話制御部４３は対話制御規則４４ｂに従い、このデータメモリ４５内のデータ、対話理解部４１から送られた対話理解結果を用いて「応答内容」を生成し、これを音声応答出力部６０に出力する（ステップS６）。音声応答出力部６０は、対話制御部４３から出力された「応答内容」を受け取り、その応答内容を言語表現に変換し、さらに、実際に出力される音声出力に変換して出力する（ステップＳ７）。
【００４２】
＜本形態の特徴＞
以上説明した通り、本形態のシナリオ処理モジュール４０は、データベース操作用言語を用いることなく、外部のデータベース１００に存在する情報や知識を対話処理に活用することができる。そのため、対話処理にデータベース１００へのアクセスを必要とするか否かに関わらず、シナリオ処理モジュール４０におけるシナリオドキュメント４４ａの取扱い・管理を統一化できる。その結果、データベース１００へのアクセスの有無に関わらず、シナリオドキュメント４４ａの管理及び対話処理を一元化できる。
【００４３】
また、仲介モジュール５０の機能は、検索条件のデータベース操作用言語への変換、属性名のカラム名への変換という、すべての対話目的に共通する画一化可能な機能である。そのため、対話目的ごとに仲介モジュール５０を設計し直す必要もない。
また、シナリオ処理モジュール４０の機能と、仲介モジュール５０の機能とは、相互に独立している。そのため、シナリオ記述用言語を用いるシナリオ処理モジュール４０の設計と、データベース操作用言語を用いる仲介モジュールの設計５０と、別個に行うことができる。その結果、データベース操作用言語に関する専門的な知識を有しない者であっても、データベース操作用言語に関する専門的な知識を有する者が設計した仲介モジュールを流用することにより、対話処理装置を設計できる。
【００４４】
さらに、本形態では、データベース識別ＩＤに対応する対応表５２ａを用い、シナリオ処理モジュール４０が用いる「属性名」を、データベース１００が用いる「カラム（フィールド）名」に変換することとした。そのため、データを取得するデータベースが変化する場合であっても、それに対応するデータベース識別ＩＤを指定するだけで、各データベースの「カラム（フィールド）名」への変換が可能となる。
また、データベース１００のデータ構成が変更され、属性名とカラム（フィールド）名との対応関係の修正が必要となった場合でも、検索クエリー４４ｃの記述構成自体を変更する必要はなく、対応表５２ａの内容を書き換えるのみによって、この変更に対応できる。これにより、データベース１００更新時における修正コストを低減できる。
【００４５】
また、本形態では、ＤＢアクセス結果取り込み処理部５５において、取得したデータエントリに関する要約情報を生成し、シナリオ処理モジュール４０に提供することとした。これにより、シナリオ処理モジュール４０におけるデータベース１００からの取得データの取扱いが容易になる。
さらに、本形態では、ＤＢアクセス結果取り込み処理部５５において、「絞込み指定子」「取り出し属性名」を用い、データベース１００から取得したデータエントリの絞込みを行うこととした。これにより、シナリオ処理モジュール４０は、データベース１００から取得したデータエントリのうち必要なデータのみを取得することができる。
【００４６】
なお、この発明は上述の実施の形態に限定されるものではない。
例えば、本形態では、データベース１００を対話処理装置１の外部に設けることとしたが、データベース１００が対話処理装置１の内部になる場合でも、同様に本形態の処理を適用できる。また、本形態では、１つのデータベース１００のみを示したが、データベースの数は２以上でもよい。さらに、本形態では、シナリオ処理モジュール４０から仲介モジュール５０への「データベース名の識別ＩＤ及び検索条件の出力（ステップＳ８）」と「絞込み指定子／取り出し属性名の出力（ステップＳ１２）」を別のタイミングで行っているが、ステップＳ８で絞込み指定子／取り出し属性名の出力を同時に行ってもよい。また、シナリオ処理モジュール４０及び仲介モジュール５０は、同一筐体内にあるとは限らない。さらに、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００４７】
また、上述の構成をコンピュータによって実現する場合、上述の各機能の処理内容はプログラム（対話処理プログラム）によって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００４８】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００５０】
本発明の産業上の利用形態としては、例えば、音声による目的地（店舗、ホテル等）の検索システム、音声によって指定された地域の天気予報提供システム等を挙げることができる。
【図面の簡単な説明】
【００５１】
【図１】本形態における対話処理装置の概要を説明するための概念図。
【図２】本形態における対話処理装置の構成を例示したブロック図。
【図３】（ａ）は、理解状態表の例示、（ｂ）は、検索クエリーの例示。
【図４】（ａ）は、対応表のデータ構成の例示、（ｂ）は、データベースのデータ構成を例示。
【図５】本形態における対話処理装置の処理を説明するためのフローチャート。
【図６】本形態における対話処理装置の処理を説明するためのフローチャート。
【図７】図６のステップＳ９及びＳ１０の処理を説明するための概念図。
【図８】図６のステップＳ１２及びＳ１４の処理を説明するための概念図。
【符号の説明】
【００５２】
１  対話処理装置
４０  シナリオ処理モジュール
５０  仲介モジュール
１００  データベース
【図１】
2006004274.tif 000004
【図２】
2006004274.tif 000005
【図３】
2006004274.tif 000006
【図４】
2006004274.tif 000007
【図５】
2006004274.tif 000008
【図６】
2006004274.tif 000009
【図７】
2006004274.tif 000010
【図８】
2006004274.tif 000011