(57)【特許請求の範囲】
【請求項１】
概念や概念間の関係を示すドメイン知識を体系的に表現したオントロジーと、概念及び概念間の関係に関連付けられたものであって、少なくとも、生成する文の変数とする参照先情報の参照先と所定の文字列と当該可変部の文字列を生成する条件とを含む１又は複数の可変部を有する文テンプレートとを格納するオントロジー格納手段と、
文を生成するときに、上記オントロジー格納手段から生成する文に関する概念に関連する上記文テンプレートを選択する文テンプレート選択手段と、
上記文テンプレート選択手段により選択された上記文テンプレートの上記各可変部に含まれている上記参照先に基づいて上記参照先情報を取得し、上記条件に従って上記参照先情報の直前及び又は直後に上記文字列を合成して出力文を生成する文生成手段と
を備えることを特徴とする文生成装置。
【請求項２】
上記文テンプレートの上記各可変部が、上記参照先情報の参照先を設定する変数指定部と、上記参照先情報の直前に生成する文字列を設定する変数前文字列指定部及び又は上記参照先情報の直後に生成する文字列を設定する変数後文字列指定部とを有することを特徴とする請求項１に記載の文生成装置。
【請求項３】
上記文テンプレートの上記各可変部が、当該可変部の文字列を生成する条件が設定された条件指定部を有するものであり、
上記文生成手段は、上記条件指定部の上記条件に合致する場合に、上記各可変部の文字列を生成する
ことを特徴とする請求項１又は２に記載の文生成装置。
【請求項４】
上記文テンプレートの上記可変部が、上記参照先から取得した上記参照先情報である文字列を、直後に配置される上記文字列に合わせて活用形に変形させる活用設定をする活用指定部を有するものであり、
上記文生成手段が、上記出力文を生成する際、上記活用指定部に設定される活用形に従って上記参照先情報の文字列を変形し、変形後の上記参照先情報の文字列に直後に配置する上記文字列を合成して出力文を生成する
ことを特徴とする請求項１〜３のいずれかに記載の文生成装置。
【請求項５】
入力された入力文を解析する文解析手段を備え、
上記各可変部の上記変数指定部が、上記文解析手段により解析された文解析結果に含まれる文字列を上記参照先と指定するものであり、
上記文生成手段が、上記出力文を生成する際、上記入力文の上記文解析結果から上記参照先に基づく文字列を取得し、この取得した文字列を用いて上記出力文を生成する
ことを特徴とする請求項２〜４のいずれかに記載の文生成装置。
【請求項６】
上記各可変部の上記変数指定部が、上記参照先情報を用いてデータベース検索により得られた検索結果を参照先と指定するものであり、
上記文生成手段が、上記出力文の生成の際に、上記参照先に基づくデータベース検索で得られた検索結果を用いて上記出力文を生成する
ことを特徴とする請求項２〜５のいずれかに記載の文生成装置。
【請求項７】
上記各可変部の上記変数指定部が、別の文テンプレートに関連付けられた概念を参照先とし、当該可変部の中に上記別の文テンプレートを含むものであることを特徴とする請求項２〜６のいずれかに記載の文生成装置。
【請求項８】
コンピュータが、概念や概念間の関係を示すドメイン知識を体系的に表現したオントロジーと、概念及び概念間の関係に関連付けられたものであって、少なくとも、生成する文の変数とする参照先情報の参照先と所定の文字列と当該可変部の文字列を生成する条件とを含む１又は複数の可変部を有する文テンプレートとを格納するオントロジー格納手段を有するものであり、
上記コンピュータを、
文を生成するときに、上記オントロジー格納手段から生成する文に関する概念に関連する上記文テンプレートを選択する文テンプレート選択手段、
上記文テンプレート選択手段により選択された上記文テンプレートの上記各可変部に含まれている上記参照先に基づいて上記参照先情報を取得し、上記条件に従って上記参照先情報の直前及び又は直後に上記文字列を合成して出力文を生成する文生成手段
として機能させることを特徴とする文生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文生成装置及びプログラムに関し、例えば、条件に応じて様々な文を生成する文生成装置及びプログラムに適用し得るものである。
【背景技術】
【０００２】
例えば、対話システムや文書作成システム等では、ユーザに対する出力文を生成することが必要となる。従来、文生成には予め設定したテンプレートが用いられている。従来のテンプレートは、予め用意された語や文章等のテキストが設定された固定部と、語等が変数として設定される可変部とから構成されている。
【０００３】
テンプレートの可変部には、変数として設定される値（以降、参照先情報ともいう）を設定するために、その参照先を示すポインタが指定される。そして、文生成の際に、そのポインタを辿り、参照先にある参照先情報を取得し、この可変部に参照先情報を設定する。参照先情報としては、例えば、ユーザとの対話から得られた情報や、ユーザＩＤに関連付けられたユーザプロフィールその他データベースに格納されている各種情報がある。そして、固定部のテキストと可変部の参照先情報とが合成されて文が生成されて出力される。
【０００４】
特許文献１には、雛形データと電子メールアドレスに基づいて、データベースから抽出した情報を組み合わせて、電子メール文を自動作成する文書生成装置について記載されている。
【０００５】
また、本願発明者らは、参考文献（特願２００９−２２２３００号）にて、対象者個別のデータを参考にして、事前に用意したテンプレートやメッセージに、対象者個別のデータを取り込んだり、事前に用意したメッセージや、対象者個別のデータ以外の情報を、関連度のデータを用いて出力文書に取り込んだりする文書生成装置を提案している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２２２３００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の文生成方法では、次のような問題が生じ得る。
【０００８】
まず、テンプレートの再利用性が低いという問題が生じ得る。一般的に、テンプレートは、文を生成する場所や目的等に合わせて固定的に定義される。つまり、１つのテンプレートは、１つの用途にしか利用できない。そのため、その場所や目的等が異なれば、当該テンプレートを他の用途に利用できず、再利用性が低い。
【０００９】
また、文生成能力が低いという問題も生じ得る。これは、文生成の際に、参照先に指定した値（参照先情報）が存在しない場合を考慮していないからである。参照先に値が存在しない場合、従来、参照先情報が欠けた状態の文を生成するか、又は生成文全体を出力しない、のいずれかにほかならない。また、条件や参照先の値に応じて文を出し分ける仕組みがないので、きめ細かな文生成が行えない。
【００１０】
そこで、本発明は、テンプレートの再利用性を向上させ、条件や参照先の値に応じてきめ細かな文を生成することができる文生成装置及びプログラムを提供する。
【課題を解決するための手段】
【００１１】
かかる課題を解決するために、第１の本発明の文生成装置は、（１）概念や概念間の関係を示すドメイン知識を体系的に表現したオントロジーと、概念及び概念間の関係に関連付けられたものであって、少なくとも、生成する文の変数とする参照先情報の参照先と所定の文字列と当該可変部の文字列を生成する条件とを含む１又は複数の可変部を有する文テンプレートとを格納するオントロジー格納手段と、（２）文を生成するときに、オントロジー格納手段から生成する文に関する概念に関連する上記文テンプレートを選択する文テンプレート選択手段と、（３）文テンプレート選択手段により選択された文テンプレートの各可変部に含まれている参照先に基づいて参照先情報を取得し、条件に従って参照先情報の直前及び又は直後に文字列を合成して出力文を生成する文生成手段とを備えることを特徴とする。
【００１２】
第２の本発明の文生成プログラムは、コンピュータが、概念や概念間の関係を示すドメイン知識を体系的に表現したオントロジーと、概念及び概念間の関係に関連付けられたものであって、少なくとも、生成する文の変数とする参照先情報の参照先と所定の文字列と当該可変部の文字列を生成する条件とを含む１又は複数の可変部を有する文テンプレートとを格納するオントロジー格納手段を有するものであり、コンピュータを、（１）文を生成するときに、オントロジー格納手段から生成する文に関する概念に関連する文テンプレートを選択する文テンプレート選択手段、（２）文テンプレート選択手段により選択された文テンプレートの各可変部に含まれている参照先に基づいて参照先情報を取得し、条件に従って参照先情報の直前及び又は直後に文字列を合成して出力文を生成する文生成手段として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、テンプレートの再利用性を向上させ、条件や参照先の値に応じてきめ細かな自然な文を生成することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態の対話システムの構成を示す構成図である。
【図２】実施形態のユーザデータの構成を示す構成図である。
【図３】実施形態のプロパティ定義の構成を示す構成図である。
【図４】実施形態のクラス定義の構成を示す構成図である。
【図５】実施形態のテンプレートの構成を示す構成図である。
【図６】実施形態の対話システムの対話処理の動作を示すフローチャートである。
【図７】実施形態の文解析部による文解析結果を説明する説明図である。
【図８】実施形態の文生成処理の動作を示すフローチャートである。
【図９】実施形態の変数指定部に指定する変数の一例を説明する説明図である。
【図１０】実施形態のクラス定義の構成例を示す構成図である。
【図１１】実施形態により生成された文を示す図である。
【図１２】変形実施形態の変数記述部の構成を示す構成図である。
【発明を実施するための形態】
【００１５】
（Ａ）実施形態
以下では、本発明の文生成装置の実施形態について、図面を参照しながら説明する。この実施形態では、例えば、対話システムにおいて用いられる文生成装置に、本発明を適用する場合の実施形態を一例として説明する。
【００１６】
（Ａ−１）実施形態の構成
（Ａ−１−１）対話システムの構成
図１は、この実施形態に係る対話システムの構成を示す構成図である。図１において、実施形態の対話システム５は、入出力装置１、対話エンジン２、記憶装置３を少なくとも有して構成される。
【００１７】
入出力装置１は、入力部１１と出力部１２とを有する。入力部１１は、ユーザにより入力されたテキストや音声等の情報を取り込み、入力情報を対話エンジン２に与えるものである。入力部１１は、例えば、キーボード、マウス、音声入力装置（例えばマイク等）などが該当する。また、出力部１２は、対話エンジン２からの生成された文を出力するものであり、例えば、ディスプレイ、音声出力装置（例えばスピーカ等）などが該当する。なお、入出力装置１は、音声合成・認識部等を備えるようにしてもよい。
【００１８】
記憶装置３は、所定のデータを記憶する記憶領域である。記録装置３は、対話エンジン２の制御の下、ユーザとの対話で得られたユーザ情報であるユーザデータ３１と、対話に必要なドメイン知識であるオントロジー３２とを記憶するものである。
【００１９】
図２は、ユーザデータ３１の一例を示す構成図である。図２に示すように、ユーザデータ３１は、対話に係る項目と、その項目についてユーザから得られた情報（値）とを対応付けられたものである。例えば、図２において、ユーザとの対話の中で、ユーザに年齢を問い合わせ、ユーザから３６歳との回答が得られると対話エンジン２による処理を受けて、「項目：年齢」に「３６歳」を対応付けて格納する。
【００２０】
オントロジー３３とは、特定の領域についての知識（ドメイン知識）、複数の領域にまたがる知識、あるいは、汎用の知識を定義し、体系化したものである。領域とは、医学、工学、不動産等の分野であり、知識とは、用語・語彙とその意味、他の用語・語彙との関係を示す。オントロジー３３は、プロパティ定義３２１とクラス定義３２２とを格納する。
【００２１】
プロパティ定義３２１とは、対話の流れ（シナリオ）を記述したものである。プロパティ定義３２１は、対話エンジン２がどのような質問をどの順序で行うかを規定するものである。
【００２２】
図３は、プロパティ定義３２１の構成例を示す構成図である。図３に示すように、プロパティ定義３２１は、定義域、プロパティ、値域、オプション情報を項目として有する。
【００２３】
図３は、例えば「人間」を頂点とした各クラスのプロパティ関係を示したものである。例えば、定義域「人間」と値域「年齢」とのクラス間のプロパティ関係が「年齢」という関係であることを示す。
【００２４】
オプション情報には、必須の質問かどうかを決定する度合いを示す重要度、質問の順序を決定する度合いを示す優先度が設定されている。例えば、重要度が「１」の場合には、ユーザに対して行う必須の質問とする。また例えば、優先度は、「１」が最も優先度が高いものであり、優先度が高いものから順に質問を行う。
【００２５】
また、オプション情報には、対話エンジン２が生成する質問文や、質問文の前に出力するつなぎ文等が設定されている。なお、図３には図示しないが、質問文、つなぎ文以外に、オプション情報は、ユーザからの回答文を解析し、その文解析結果に基づいて生成する受け止め文、対話エンジンが円滑に対話を進行するための各種機能を設けるようにしてもよい。
【００２６】
クラス定義３２２とは、用語・語彙の概念を規定したものである。クラス定義３２２は、各クラスの上位下位関係と、クラスに付随する各種情報（オプション情報）とを設定することができる。
【００２７】
図４は、クラス定義３２２の構成を示す構成図である。図４において、クラス定義３２２は、上位クラス、クラス、受け止め文を項目とする場合を例示する。なお、受け止め文は、クラスに付随するオプション情報の一例である。
【００２８】
「上位クラス」には、「クラス」に定義される値に対して、上位の関係にある値が規定される。例えば、「クラス：リストラ」に対して上位の関係にある値として「上位クラス：転職理由」が規定される。また、「受け止め文」は、後述するように、ユーザからの回答文を解析し、その文解析結果から「クラス：リストラ」を取得した場合に、その「リストラ」に関するユーザ回答に対して、システムが出力する文が規定されている。
【００２９】
対話エンジン２は、記憶装置３に記憶されるオントロジー３２を用いて対話処理を実行するものである。対話エンジン２は、対話制御部２１、文解析部２２、文生成部２３を少なくとも有する。
【００３０】
対話制御部２１は、プロパティ定義３２１を参照して、文解析部２２、文生成部２３とのやり取りを介して、対話の進行を管理・制御するものである。また、対話制御部２１は、対話により取得したユーザ情報をユーザデータ３１に格納するものである。
【００３１】
文解析部２２は、オントロジー３２を参照して、ユーザ発話文を解析し、発話文中のクラスやユーザの意図、感情、その他の情報を取得するものである。
【００３２】
文生成部２３は、プロパティ定義３２１に規定されている質問文やつなぎ文など、又クラス定義３２２に規定されている受け止め文などに基づき変数の展開などを行い、システム出力文を生成するものである。
【００３３】
（Ａ−１−２）テンプレートの構成
次に、文生成処理の対象となるテンプレートの構成について図面を参照しながら説明する。なお、この実施形態のテンプレートは、対話システム５が出力するすべての文（例えば、質問文、つなぎ文、受け止め文等）に適用することができる。
【００３４】
図５は、この実施形態のテンプレートの構成を説明する説明図である。図５（Ａ）に示すように、テンプレートは、文字列記述部６１と変数記述部６２とを有して構成される。
【００３５】
なお、図５（Ａ）では、テンプレートが文字列記述部６１及び変数記述部６２を有する場合を例示するが、テンプレートは、文字列記述部６１のみ、変数記述部６２のみとしてもよい。
【００３６】
テンプレートは、可変部である変数記述部６２に、参照先へのポインタだけでなく、参照先とともに出力する文字列（テキスト）を記述できるようにする。また、変数記述部６２で合成する文字列を生成するために、条件を指定し、その条件に合わせて文を出し分ける仕組みを導入する。これにより、参照先が存在しない場合でも、不自然な文が生成されなくなる。また、条件に合わせて文を出し分けることが容易におこなえるようになる。
【００３７】
また、可変部である変数記述部６２の参照先に、別のテンプレートも指定できるようにする。参照先には、値へのポインタだけでなく、別途定義したテンプレートへのポインタを指定することができる。これにより、複数のテンプレートを組み合わせたテンプレートも定義可能で、テンプレート記述の自由度が増すほか、テンプレートの有効活用が可能になる。
【００３８】
文字列記述部６１には、語や文章等の文字列が記述される。変数記述部６２には、変数の参照先や条件等が記述される。変数記述部６２には、例えば、ユーザデータ３１、オントロジー３２など、参照先情報へのポインタを記述することができる。また、変数記述部６２には、他のテンプレートを記述するようにしてもよい。つまり、テンプレート内に、１又は複数のテンプレートが記述されるようにしてもよい。
【００３９】
図５（Ｂ）に示すように、変数記述部６２は、変数指定部６２１、変数前文字列指定部６２２、変数後文字列指定部６２３、条件指定部６２４を有して構成される。
【００４０】
変数指定部６２１は、参照先のポインタが設定される。例えば、ユーザデータ３１に格納されるユーザ情報を参照先情報とする場合には、ユーザデータ３１に格納される値の参照先が設定される。
【００４１】
変数前文字列指定部６２２は、変数を展開した文字列の前に出力する必要な文字列が設定される。また、変数後文字列指定部６２３は、変数を展開した文字列の後に出力する必要な文字列が設定される。
【００４２】
なお、変数前文字列指定部６２２、変数後文字列指定部６２３には、必ず文字列が指定されるわけではなく、変数を展開して設定される文字列に応じて必要なものが指定される。従って、変数前文字列指定部６２２、変数後文字列指定部６２３の双方に文字列を指定してもよいし、いずれかのみに文字列を指定するようにしてもよい。
【００４３】
また、変数指定部６２１で指定された参照先情報が参照先にない場合、変数指定部６２１に変数は設定されず、さらに、変数前文字列指定部６２２、変数後文字列指定部６２３にも文字列が生成されない。
【００４４】
条件指定部６２４には、変数記述部６２のテキストを生成する条件が記述される。条件指定部６２４には、必ず条件が設定されるというのではなく、必要に応じて設定することができる。例えば、変数指定部６２１で指定される値や対話の状況等についての条件を指定し、その条件に合致した場合のみ、変数、変数前文字列、変数後文字列を生成する。
【００４５】
図５（Ｃ）は、テンプレートの一例を示す構成図である。図５（Ｃ）において、実線下線部が文字列記述部６１であり、点線下線部が変数記述部６２である。
【００４６】
例えば、文字列記述部６１の「なるほど。」に続いて、変数記述部６２が設定され、更にこれに続いて文字列記述部６１の「不安な気持ちになるのは当然だと思います。」が設定されている。
【００４７】
図５（Ｃ）に例示する変数記述部６２は、「｛／Ｕｓｅｒ／年齢，，”ということで”，／Ｕｓｅｒ／年齢＞３５｝」が記述される。条件指定部６２４に設定されている条件は、「／Ｕｓｅｒ／年齢＞３５」である。これは、ユーザデータ３１に格納されているユーザ情報より、当該ユーザの年齢が３５歳を超えるときに、変数記述部６２に変数を展開した文字列を生成するという条件である。
【００４８】
変数指定部６２１には、変数「／Ｕｓｅｒ／年齢」が設定されている。従って、文生成部２３は、この「／Ｕｓｅｒ／年齢」を参照先として値を取得する。そして、文生成部２３は、取得した値が、条件指定部６２４に設定される条件を満たしているか否かを判断する。
【００４９】
変数前文字列指定部６２２の指定がない「空文字列」であるので、変数前文字列は生成しない。変数後文字列指定部６２３には「ということで」という文字列が指定されているので、変数指定部６２１の値の文字列の後に「ということで」という文字列を生成する。
【００５０】
なお、変数指定部６２１には、直近の対話から文解析で取得した値のほか、ユーザデータ３１に格納されている特定のデータの値や段落作成クラスで定義されている文テンプレートを指定することができる。
【００５１】
（Ａ−２）実施形態の動作
次に、実施形態の対話システム５における処理の動作について図面を参照しながら説明する。以下では、ユーザとの対話により転職先等を紹介するシステムに、実施形態の対話システム５を利用する場合を例示する。
【００５２】
（Ａ−２−１）全体処理の動作
まず、対話システム５における対話処理の全体的な処理について図６を参照しながら説明する。図６は、実施形態の対話システム５における対話処理の動作を示すフローチャートである。
【００５３】
図６において、対話システム５が起動すると、対話エンジン２がプロパティ定義３２１を参照して、システム開始の質問文を出力する（Ｓ１０１）。
【００５４】
このとき、対話エンジン２において、対話制御部２１は、プロパティ定義３２１を参照して、現在のポインタを定義域に持つプロパティの中で優先度が最も高いものを選択する。例えば、初期動作の場合、クラスの頂点が定義域となるようにポインタを設定したり、初期動作専用の定義域にポインタを設定したりしてもよい。文生成部２３は、対話制御部２１により選択されたプロパティのオプション情報として格納されている質問文を出力文として出力する。
【００５５】
対話エンジン２から出力された質問文に対してユーザは回答（例えば発話）する（Ｓ１０２）。入出力装置１は、そのユーザからの入力情報を入力する。入出力装置１は、ユーザ入力情報に基づくユーザ回答文を対話エンジン２に与える。
【００５６】
ここで、ユーザ回答は、例えば、ユーザが、キーボードやマウス等の入力部１１を介してテキスト入力をしたり、またマイク等の入力部１１を介して音声入力したりすることができる。なお、入出力装置１は音声認識機能を有するものとしてもよく、入力された音声を認識し、その認識結果をテキスト情報に変換して対話エンジン２に与えるようにしてもよい。さらに、ユーザ入力の方法は、特に限定されるものではなく、種々の方法を広く適用することができ、例えば、質問文に対する回答として選択肢や番号などを選ぶ形式であってもよい。このような場合でも、対話システム５全体で統一する必要はなく、質問の種類によって自由に設定できる。
【００５７】
対話エンジン２では、文解析部２２が、ユーザ回答文の文解析を行う（Ｓ１０３）。文解析部２２は、ユーザ回答文に対して、文を構成する単語の解析を行う形態素解析、文の係り受け構造を解析する構文解析等を行う。なお、形態素解析、構文解析の方法は、既存の技術を広く適用することができ、例えば、文解析部２２は、形態素解析辞書や構文解析辞書（図１に図示しない）を用いて、オントロジー３２に登録されたクラスを示す表現が、適切な構文木のノードとして出現していれば、その表現をクラスとして抽出する。
【００５８】
さらに、文解析部２２は、意図解析機能を有しており、意図解析辞書（図１に図示しない）を参照し、文解析結果に基づいてユーザの意図を同時に解析する。例えば、文解析部２２は、意図解析によって、極性（肯定／否定）、優先度（感情の強さ）、確度（意志の強さ）などの判定を行い、その情報をクラスに関連付けて抽出する。
【００５９】
図７は、文解析部２２による文解析結果を説明する説明図である。図７において、例えば、「営業がいいです。」というユーザ回答文１１０１が入力されたものとする。文解析部２２は、このユーザ回答文１１０１を形態素解析して、「営業／が／いい／です／。」という結果１１０２を得る。
【００６０】
また、文解析部２２は、形態素解析結果１１０２を用いて、単語の係り受けを解析して、構文解析結果１１０３を得る。このとき、「私」はユーザ回答文に含まれていないが、文解析部２２が構文解析時に補ったものである。
【００６１】
文解析部２２は、図示しない意図解析辞書を参照し、構文解析結果から得られるクラスに対するユーザの意図を解析する。例えば、構文解析結果１１０３から得られるクラス「営業」に対して「いい」が係り受けの関係にあるから、意図解析辞書を参照して、「確度＝確実」、「極性＝肯定」、「優先度＝普通」の意図解析結果１１０４が得られる。
【００６２】
ほかの例の場合、例えば、ユーザ回答文１１０５「営業は絶対いやです。」の場合、「営業／は／絶対／いや／です／。」の形態素解析結果１１０６及び構文解析結果１１０７が得られる。この場合、クラス「営業」に対して、「いやだ」が係り受けるので「確度＝確実」、「極性＝否定」が解析され、さらに「絶対」が「いやだ」に係り受けるので、「確度＝確実」、「優先度＝高」の意図解析結果１１０８が得られる。
【００６３】
文解析部２２による文解析結果に基づいてクラス及び意図が抽出されると（Ｓ１０４））、そのクラス及び意図がユーザデータ３１に格納される（Ｓ１０５）。例えば、図７のユーザ回答文１１０１の場合、クラス「営業」及び意図として「確度＝確実」、「極性＝肯定」、「優先度＝普通」がユーザデータ３１に格納される。
【００６４】
なお、クラス及び意図が抽出されない場合、対話制御部２１は、Ｓ１０８に移行し、プロパティ定義３２１から次のプロパティを選択する。
【００６５】
対話制御部２１は、クラス定義３２２を参照して、ユーザ回答文から取得したクラスに関連付けられた文（受け止め文）があるか否かを判断する（Ｓ１０６）。
【００６６】
そして、受け止め文がある場合、文生成部２３は、受け止め文を作成して入出力装置１に対して出力する（Ｓ１０７）。一方、クラスに関連付けられた受け止め文がない場合、Ｓ１０８に移行して、次の質問文を選択する。なお、クラス定義３２２を参照して文生成部２３が文を生成する詳細の方法については後述する。
【００６７】
また、対話制御部２１は、１つのユーザ回答文から、複数のクラスを取得することもできる。その場合、対話制御部２１は、クラス定義３２２を参照して、複数のクラスのそれぞれについて、すべての受け止め文を順番に出力するようにしてもよい。例えば、受け止め文を出力する順番は、特に限定されないが、例えば、プロパティ定義３２１に定義されているプロパティの優先度の順としてもよい。
【００６８】
また、すべての受け止め文を出力する場合に限らず、例えば、文中の最初に出現するクラスの受け止め文のみを出力するようにしてもよいし、また、例えば分野ごとの語彙分析により別途定義したものを利用して、重要度の高いクラスの受け止め文を出現するようにしてもよい。
【００６９】
対話制御部２１は、プロパティ定義３２１を参照して、次に優先度の高いプロパティを選択し（Ｓ１０８）、文生成部２３が選択されたプロパティのオプション情報に定義された新たな質問文を出力する（Ｓ１０９）。次の質問がなければ、処理を終了する。
【００７０】
（Ａ−２−２）文生成処理
次に、実施形態の対話システム５における文生成部２３による文生成処理の動作について、図面を参照しながら詳細に説明する。
【００７１】
図８は、この実施形態の対話システム５における文生成処理の動作を示すフローチャートである。
【００７２】
まず、文生成部２３は、対話制御部２１により指定されたプロパティのオプション情報に定義された文のテンプレートを受け取る（Ｓ８０１）。
【００７３】
ここで、文は、例えば、質問文、つなぎ文、受け止め文など全ての文のテンプレートを適用することができる。文のテンプレートについては、図５の例を用いて説明する。
【００７４】
次に、文生成部２３は、文のテンプレートの構成に基づいて、当該テンプレートに変数記述部６２が設定されているか否かを判断し（Ｓ８０２）、変数記述部６２が設定されていない場合、Ｓ８０８に移行し、文生成部２３２は、文字列記述部６１の文を生成し、処理を終了する。
【００７５】
一方、変数記述部６２が設定されている場合、Ｓ８０３に移行する。Ｓ８０３では、文生成部２３が、変数記述部６２の条件指定部６２４の条件を調べ、対話の状況やユーザデータの内容が条件指定部６２４の条件に合致するか否かを判断する（Ｓ８０３）。
【００７６】
ここで、条件指定部６２４は、条件に応じて変数、変数前文字列、変数後文字列の出力の制御をするために記述されるものであるが、例えば、条件に関係なく全ての場合に、変数等を出力する場合、この条件指定部６２４において条件の指定をしないようにしてもよい。
【００７７】
Ｓ８０３において、条件指定部６２４の条件に合致しない場合、変数指定部６２１の値を削除し（Ｓ８０９）、Ｓ８０７に移行し、次の変数記述部６２の処理へ進む。
【００７８】
一方、Ｓ８０３において、条件指定部６２４の条件に合致する場合、又は、条件指定部６２４に条件が設定されていない場合、変数指定部６２１の参照先にアクセスし、参照先の値を展開する（Ｓ８０４）。
【００７９】
ここで、参照先の値としては、例えば、直近の対話から得られた文解析結果で取得した値、ユーザデータ３１のパスに格納されたユーザ情報（データ）、変数指定部６２１で指定された段落作成クラスの文テンプレート等を適用することができる。変数指定部６２１で指定された段落作成クラスの文テンプレートについては、後述するが、当該テンプレート中に、更に条件が指定されたテンプレートを参照先として指定するようにしてもよい。
【００８０】
変数指定部６２１の変数の参照先が別のテンプレートの場合（Ｓ８０５）、再帰的に文生成部２３の文生成処理を呼び出し、参照先のテンプレートの文生成処理を行う（Ｓ８１０）。
【００８１】
Ｓ８０６では、文生成部２３は、変数記述部６２の要素（すなわち、参照先の値、変数前文字列、変数後文字列）を合成し、変数記述部６２の文字列を生成する（Ｓ８０６）。
【００８２】
ここで、要素の生成順序は、変数前文字列指定部６２２の文字列、変数指定部６２１の文字列、変数後文字列指定部６２３の文字列の順である。変数指定部６２１の文字列が空の場合は、変数前文字列、変数後文字列ともに生成しない。
【００８３】
文生成部２３は、テンプレート中のすべての変数記述部６２に対して、Ｓ８０２〜Ｓ８０６、Ｓ８０９〜Ｓ８１０の処理を繰り返し行い、すべての変数記述部６２の処理が終えると（Ｓ８０７）、文字列記述部６１のテキストと変数記述部６２のテキストを合成して、文を生成する（Ｓ８０８）。
【００８４】
例えば、図５（Ｃ）の例の場合、条件指定部６２４に指定されている条件は、「／Ｕｓｅｒ／年齢＞３５」である。これは、ユーザの年齢が３５歳を超えていることを条件とする。
【００８５】
文生成部２３は、ユーザデータ３１を参照してユーザの年齢を判断する。このとき、例えば、図２に例示するユーザデータであるとすれば、ユーザの年齢は「３６歳」であるから条件指定部６２４に指定された条件を満たすと判断する。
【００８６】
文生成部２３は、変数指定部６２１に指定されている変数「／Ｕｓｅｒ／年齢」を参照先として、ユーザデータ３１から「３６歳」という値（参照先情報）を取得する。
【００８７】
次に、図５（Ｃ）の例では、変数前文字列指定部６２２の指定がないので、文生成部２３は変数前文字列を生成しない。また、変数後文字列指定部６２３には、「“ということで”」という文字列が指定されているので、変数指定部６２１の値「３６歳」の後に、「ということで」という文字列を生成する。
【００８８】
これにより、文生成部２３は、変数記述部６２の文字列として、「なるほど。３６歳ということで不安な気持ちになるのは当然だと思います。」を生成する。
【００８９】
なお、ユーザ年齢が「３５歳」以下である場合、条件指定部６２４の条件に合致しないので、文生成部２３は、変数指定部６２１、変数前文字列指定部６２２、変数後文字列指定部６２３で指定された文字列を生成しない。その結果、文生成部２３は、「なるほど。不安な気持ちになるのは当然だと思います。」を生成する。
【００９０】
ここで、上述したように、変数指定部６２１で指定する値は、例えば、直近の対話から得られた文解析結果で取得した値、ユーザデータ３１のパスに格納されたユーザ情報（データ）、変数指定部６２１で指定された段落作成クラスの文テンプレート等を適用することができる。これは、変数指定部６２１で設定する変数によりどの変数を指定するかを決定することができる。
【００９１】
図９は、変数指定部６２１に指定する変数の一例を説明する説明図である。図９では、変数名として、ＶＡＬＵＥ７０１、ＭＡＴＣＨＥＤ＿ＣＯＵＮＴ７０２、ユーザデータパス７０３、段落作成クラス７０４の４種類を例示する。変数名は、これに限定されるものではなく、システムの用途によって設定することができる。
【００９２】
ＶＡＬＵＥ７０１は、直前の対話で取得したクラスである。例えば、転職理由を聞くシステム質問に対して、ユーザが「リストラにあいました」と回答した場合、ＶＡＬＵＥ＝「リストラ」となる。
【００９３】
ＭＡＴＣＨＥＤ＿ＣＯＵＮＴ７０２は、現在のユーザデータ３１で検索対象のデータベース（図１では図示しない）を検索した結果、マッチしたデータの数である。主に、マッチするデータの数によって生成する文を変えたい場合に、条件指定部６２４に記載する。
【００９４】
ユーザデータのパス７０３は、ユーザデータ３１に格納された特定のデータの値を参照するパスである。例えば、図２のユーザデータ３１で転職の理由を参照したい場合は、変数指定部６２１に「／Ｕｓｅｒ／転職のきっかけ」と記述すれば、参照先の値である「リストラ」が生成される。
【００９５】
段落作成クラス７０４は、文テンプレートを定義するクラスである。段落作成クラスは一般のクラスとは異なり、回答文からのクラス抽出の対象とはならない。例えば図４では、段落作成クラスおよび段落作成クラスのサブクラスについては、文テンプレートを定義していることを明確にする目的でクラス名の先頭に「％」をつける（以下同様とする）。
【００９６】
次に、図２、図３、図４、図１０を用いて、テンプレートを用いた文の生成処理の動作の一例を説明する。なお、文生成処理は、図８に例示するフローチャートによる。
【００９７】
ここでは、図３の４０５の「転職のきっかけ」の質問文に対する回答としてユーザから「リストラ」が取得された場合の受け止め文を生成する場合を例示する。
【００９８】
図１０は、クラス定義の構成例を示す構成図である。図１０は、図４に例示したクラス定義の構成と同じであるが、その内容が異なる。つまり、図４及び図１０のクラス定義は、上位クラス、クラス、クラスに対応付けられた文テンプレートから構成される。クラスの上位下位関係はオントロジー３２内のクラス定義３２２全体で体系化されているものとする。
【００９９】
「転職のきっかけ」の質問文に対する回答文が、入出力装置１から対話エンジン２に与えられる。対話エンジン２では、文解析部２２が文解析を行う。その文解析結果から、「リストラ」クラスが取得される。
【０１００】
文解析部２２から「リストラ」クラスを取得すると、対話制御部２１は、ユーザデータ３１の「転職のきっかけ」の値として、「リストラ」を格納する。また、対話制御部２１は、図４に例示するクラス定義の「リストラ」のデータ５０１を参照し、受け止め文のテンプレート「｛％いたわりの受け止め文｝」を取得する（Ｓ８０１）。
【０１０１】
「リストラ」のデータ５０１のテンプレートは、変数記述部６２のみで構成されており（Ｓ８０２）、条件指定部６２４には何も記述がない（Ｓ８０３）。
【０１０２】
そのため、文生成部２３は、変数指定部６２１で指定された参照先「％いたわりの受け止め文」のクラス定義９０１（図１０のクラス定義）を参照する（Ｓ８０４）。
【０１０３】
この場合、受け止め文は、４個の変数記述部６２「｛％うなづき｝」「｛％いたわり｝」「｛％年齢ごとのキャリア状況の引用節｝」「｛／Ｕｓｅｒ／ライフイベント，””，”もあり”｝」と、文字列記述部６１「ご不安や悩みも大きいとお察しします。」から構成されている。
【０１０４】
また、クラス定義９０１の受け止め文は、参照先がテンプレートであるから（Ｓ８０５）、文生成部２３は文生成処理を呼び出し（Ｓ８１０）、それぞれの変数記述部６２に対して文生成処理を繰り返し行う。
【０１０５】
例えば、「｛％うなづき｝」、「｛％いたわり｝」のそれぞれについては、文生成部２３は、図１０のクラス定義９０３、９０４を参照する（Ｓ８０１）。クラス定義９０３、９０４の受け止め文は、「なるほど。」、「それは大変でしたね。」であり、変数記述部６２がないので、この「なるほど。」、「それは大変でしたね。」を、変数「｛％うなづき｝」、「｛％いたわり｝」と置き換える（Ｓ８０６）。
【０１０６】
「｛％年齢ごとのキャリア状況の引用節｝」について、文生成部２３は図１０のクラス定義９０６を参照し、受け止め文テンプレートには、以下の３個の変数記述部６２が定義されている（Ｓ８０１〜Ｓ８０２）。
【０１０７】
｛％２９歳以下のキャリア状況，“”，“”，／Ｕｓｅｒ／年齢＜＝２９｝…（１）
｛％３０−４５歳のキャリア状況，“”，“”，／Ｕｓｅｒ／年齢＞＝３０＆＆Ｕｓｅｒ／年齢＜＝４５｝…（２）
｛％４６歳以上のキャリア状況，“”，“”，／Ｕｓｅｒ／年齢＞＝４６｝…（３）
上記（１）〜（３）の変数記述部６２は、下線で示す条件指定部６２４の条件が異なっている。これは、条件（ユーザの年齢）に応じて、生成するテキストを変えられるようになっている。
【０１０８】
例えば、図２のユーザデータ３１の場合、ユーザの年齢は「３６歳」であるので、上記（１）及び（３）の条件には合致しないので出力しない（Ｓ８０３、Ｓ８０９）。
【０１０９】
一方、上記（２）の条件には合致するので（Ｓ８０３）、文生成部２３は、「％３０−４５歳のキャリア状況」のクラス定義９０７を参照し、受け止め文のテンプレート「そろそろ方向性を定めなければならない時期」を変数と置き換える。
【０１１０】
また、このテンプレートには変数前文字列指定部６２２、および、変数後文字列指定部６２３に文字列の指定部がないので、生成される文字列は、受け止め文のテンプレートのみである（Ｓ８０６）。
【０１１１】
「｛／Ｕｓｅｒ／ライフイベント，””，”もあり”｝」については、図２のユーザデータ３１の「ライフイベント」の値３０４を参照する（Ｓ８０４）と空であるから、変数指定部６２１は空となる。変数後文字列指定部６２３に文字列の指定があるが、変数指定部６２１の値が削除されるので（Ｓ８０９）、変数前文字列、変数後文字列とともに出力されない（Ｓ８０６）。
【０１１２】
以上のプロセスによりすべての変数記述部６２の処理が終了したら（Ｓ８０７）、９０１の文テンプレートに定義されたすべての文字列記述部６１、および、変数記述部６２のテキストを合成し（Ｓ８０８）、図１１の文「なるほど。それは大変でしたね。そろそろ方向性を定めなければならない時期ですし、ご不安や悩みも大きいと察します。」が生成されることになる。
【０１１３】
以上が、回答として「リストラ」が取得された場合の受け止め文生成処理の流れである。
【０１１４】
なお、上記では、受け止め文の場合を例示して説明したが、質問文、つなぎ文についても、対話制御部２１から指定されたプロパティの質問文に対して、文生成部２３が同様の処理を行うことによりシステム質問文、つなぎ文を生成する。
【０１１５】
（Ａ−３）実施形態の効果
以上のように、実施形態によれば、システム発話文を構成する要素をそれぞれ別のテンプレートとして定義し、それを組み合わせて利用することで、テンプレートを効率的に利用することが可能になる。
【０１１６】
また、実施形態によれば、条件を記述することによりユーザの情報や対話の流れに合わせて文を出し分けることができるようになる。
【０１１７】
さらに、実施形態によれば、参照先のデータが存在しない場合でも、参照部分だけでなく参照部分の欠落が影響を及ぼす範囲を指定して出力しないようにできるため、不自然な文が生成されるという問題が起こらない。
【０１１８】
（Ｂ）他の実施形態
（Ｂ−１）本発明は、コンピュータと人間とが対話を行う対話システムや、プロフィール情報をもとに履歴書やメール文を作成する文作成、文書作成システムにおいて、あらかじめ用意されたテキストと、データベースなどを参照して得られた情報とを組み合わせて文章を生成する際に利用可能である。本発明は、また対話システムに限定されるものではなく、自然言語生成処理のシステムであれば広く適用することができる。
【０１１９】
（Ｂ−２）上述した実施形態では、システムとの対話中に、対話によって得られたユーザ情報を参照して文を生成する例を示したが、本発明の文生成は対話中に限らず、対話完了後にまとめて文を生成するような形態にも適用可能である。このような利用形態としては、例えば、蓄積されたユーザデータをもとに、履歴書や議事録、要約文を生成する文書生成システムがある。
【０１２０】
（Ｂ−３）上述した実施形態では、文テンプレートの変数記述部６２が、変数指定部６２１、変数前文字列指定部６２２、変数後文字列指定部６２３、条件指定部６２４からなる場合を例示した。
【０１２１】
しかし、変数記述部６２の構成は、上述した実施形態で例示したものに限定されるものではなく、変数記述部６２として合成する文字列の生成に種々の機能をもつ指定部を有することができる。例えば、変数記述部６２は、活用指定部６２５を含むようにしてもよい。
【０１２２】
図１２は、変数記述部６２が、変数指定部６２１、変数前文字列指定部６２２、変数後文字列指定部６２３、条件指定部６２４、活用指定部６２５を有する場合の変数記述部６２の構成を示す構成図である。なお、図１２では、条件指定部６２４の指定が「空」である。
【０１２３】
活用指定部６２５は、変数指定部６２１で参照する値と変数後文字列指定部６２３の文字列をつなぐ際に、変数指定部６２１の値を活用させるためのものである。
【０１２４】
図１２において、変数指定部６２１「％今したいこと」の値が「休む」という動詞であった場合を考える。
【０１２５】
この場合、Ｓ８０１〜Ｓ８０５およびＳ８０７〜Ｓ８０８は、第１の実施形態で説明した内容と同じであるが、Ｓ８０６で変数記述部６２１の要素を合成させる際に、文生成部２３は、活用指定部６２５が「仮定形」であるので、「休む」を仮定形の「休め」に変化させる。
【０１２６】
これは、変数記述部６２の文字列は、変数前文字列指定部６２２の文字列「それなら」、変数指定部６２１の文字列「休め」、変数後文字列指定部６２３の文字列「ばよいのではないでしょうか。」となるので、それらを合成した「それなら休めばよいのではないでしょうか。」が変数記述部６２の文字列として生成される。
【０１２７】
このように、変数として展開される値の語形を変化させることで、変数後文字列との間のつなぎがよくなり、自然な文の生成を図ることができる。なお、図１２の例では、変数を仮定形に変化させる場合を例示したが、変数後文字列に応じて、他の活用形にするようにしてもよい。
【０１２８】
（Ｂ−４）また例えば、変数記述部６２として合成される文を生成するために必要な機能の別の例として、変数指定部６２１の文字列の示す語を、他の語に変換するような語変換指定部を有するようにしてもよい。例えば、語変換指定部が「英語」と指定されている場合、変数指定部６２１の文字列が「びっくり」であるとき、文生成部は、対訳辞書等を用いて、「びっくり」を「Ｓｕｒｐｒｉｓｅ」に変化するようにしてもよい。誤変換指定部は、言語の変換だけでなく、変数とする語の関連する語への変換（言い換え）等としてもよい。
【０１２９】
（Ｂ−５）変数指定部の参照先は、指定のデータに対して数値演算、データベース検索など何らかの処理を実行した結果得られた値であるとしてもよい。
【０１３０】
（Ｂ−６）上述した実施形態では、日本語の文を生成する場合を例示したが、言語は特に限定されるものではなく、本発明は、中国語、英語、韓国語、スペイン語など幅広く適用することができる。
【符号の説明】
【０１３１】
１…入出力装置、１１…入力部、１２…出力部、２…対話エンジン、２１…対話制御部、２２…文解析部、２３…文生成部、３…記憶装置、３１…ユーザデータ、３２…オントロジー、３２１…プロパティ定義、３２２…クラス定義。
【図１】
0005633318.tif 000002
【図２】
0005633318.tif 000003
【図３】
0005633318.tif 000004
【図４】
0005633318.tif 000005
【図５】
0005633318.tif 000006
【図６】
0005633318.tif 000007
【図７】
0005633318.tif 000008
【図８】
0005633318.tif 000009
【図９】
0005633318.tif 000010
【図１０】
0005633318.tif 000011
【図１１】
0005633318.tif 000012
【図１２】
0005633318.tif 000013