(57)【要約】      （修正有）【課題】ユーザにより入力された入力文に対して応答文を作成する場合において、応答文に間違った単語が含まれる危険性を減らしつつ、入力文の単語を取り入れた応答文を作成する。【解決手段】マッチング用データ作成部９２は、入力例とその入力例に対する出力例の入出力ペアを作成し、入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換する。応答生成部９３は、入力文の特定の単語を変数に置換し、その置換後の入力文と入力例とのマッチングを行い、類似度を算出して、その類似度に基づいて、出力例を選択する。応答生成部９３は、その選択した出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する。本発明は、例えば、対話を行うロボット装置に適用することができる。【選択図】図５
2006018622.tif 000002
【特許請求の範囲】
【請求項１】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する第１の情報処理装置と、前記入出力ペアに基づいて、前記入力文に対する応答文を作成する第２の情報処理装置とを備える情報処理システムにおいて、
第１の情報処理装置は、
前記入出力ペアを作成するペア作成手段と、
前記ペア作成手段により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段と
を備え、
前記第２の情報処理装置は、
前記入力文の前記特定の単語を変数に置換する入力文置換手段と、
前記入力文と、前記入力例とのマッチングを行い、類似度を算出する算出手段と、
前記算出手段により算出された前記類似度に基づいて、前記出力例を選択する選択手段と、
前記選択手段により選択された前記出力例の前記変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成手段と
を備える
ことを特徴とする情報処理システム。
【請求項２】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する情報処理装置において、
前記入出力ペアを作成するペア作成手段と、
前記ペア作成手段により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段と
を備えることを特徴とする情報処理装置。
【請求項３】
前記ペア置換手段は、前記入出力ペアの前記入力例と前記出力例に共通に存在する前記特定の単語を、その単語を付加した変数に置換する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する情報処理装置の情報処理方法において、
前記入出力ペアを作成するペア作成ステップと、
前記ペア作成ステップの処理により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップと
を含むことを特徴とする情報処理方法。
【請求項５】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する作成処理を、コンピュータに行わせるプログラムにおいて、
前記入出力ペアを作成するペア作成ステップと、
前記ペア作成ステップの処理により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップと
を含むことを特徴とするプログラム。
【請求項６】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する作成処理を、コンピュータに行わせるプログラムが記録されている記録媒体において、
前記入出力ペアを作成するペア作成ステップと、
前記ペア作成ステップの処理により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップと
を含むことを特徴とするプログラムが記録されている記録媒体。
【請求項７】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する情報処理装置において、
複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段と、
前記入力文の前記特定の単語を変数に置換する入力文置換手段と、
前記入力文と、前記記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出手段と、
前記算出手段により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択手段と、
前記選択手段により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定手段と、
前記判定手段により、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成手段と
を備えることを特徴とする情報処理装置。
【請求項８】
前記選択手段は、前記判定手段により、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができないと判定された場合、前記類似度に基づいて、前記記憶手段に記憶された他の出力例を選択する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記入力文置換手段は、前記入力文の前記特定の単語を、その単語を付加した変数に置換する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する情報処理装置の情報処理方法において、
前記入力文の前記特定の単語を変数に置換する入力文置換ステップと、
前記入力文と、複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、
前記算出ステップの処理により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択ステップと、
前記選択ステップの処理により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定ステップと、
前記判定ステップの処理により、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成ステップと
を含むことを特徴とする情報処理方法。
【請求項１１】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する作成処理を、コンピュータに行わせるプログラムにおいて、
前記入力文の前記特定の単語を変数に置換する入力文置換ステップと、
前記入力文と、複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、
前記算出ステップの処理により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択ステップと、
前記選択ステップの処理により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定ステップと、
前記判定ステップの処理により、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成ステップと
を含むことを特徴とするプログラム。
【請求項１２】
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する作成処理を、コンピュータに行わせるプログラムが記録されている記録媒体において、
前記入力文の前記特定の単語を変数に置換する入力文置換ステップと、
前記入力文と、複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、
前記算出ステップの処理により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択ステップと、
前記選択ステップの処理により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定ステップと、
前記判定ステップの処理により、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成ステップと
を含むことを特徴とするプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置および情報処理方法、プログラム、並びに記録媒体に関し、特に、ユーザにより入力された入力文に対して応答文を作成する場合において、応答文に間違った単語が含まれる危険性を減らして、自然な対話を行うことができるようにする情報処理システム、情報処理装置および情報処理方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
ユーザと音声で対話を行う対話装置において、ユーザからの発話（入力文）に対する応答文を出力する方法としては、所定のルールに基づいて応答文を作成して、出力する方法や、人間同士の対話のログなどのデータベースを利用して応答文を出力する方法などがある。
【０００３】
所定のルールに基づいて応答文を作成して、出力する方法では、ルールを作成するのに膨大な労力を必要とする。また、ルールに基づいて作成された応答文は、型にはまった面白くない応答となることが多い。
【０００４】
これに対して、対話のログなどのデータベースを利用して応答を出力する方法では、実際の人間同士の対話のログ（対話ログ）に基づいて、応答文が出力されるので、所定のルールに基づいて応答文を作成して、出力する場合に比べて、応答文のバリエーションが豊富であり、応答文の内容も面白くなる。
【０００５】
対話ログのデータベースを利用して応答文を出力する方法としては、例えば、対話ログのデータベースをそのまま用いて応答文を出力する方法や、対話ログから入力文のマッチングの対象となる入力例とその入力例に対する出力例とのペア(以下、入出力ペアという)を作成し、その入出力ペアを用いて応答文を出力する方法などがある。
【０００６】
図１を参照して、対話ログのデータベースをそのまま用いて応答文を出力する方法によって対話を行う対話装置について説明する。
【０００７】
図１に示すように、対話ログのデータベースには、ユーザどうしで行われた対話における発言が、時系列に登録されている。なお、対話ログとしては、例えば、インターネットを介して行われたチャットのログなどを採用することができる。
【０００８】
対話ログのデータベースをそのまま用いて応答文を出力する場合、対話装置は、ユーザにより入力された入力文と、対話ログの中の発言文のマッチングを行い、最も類似した発言の次の発言を、応答文として出力する。即ち、対話ログでは、ある発言の次の発言が、その発言に対する応答文であることが多いので、最も類似した発言の次の発言を出力することにより、ユーザからの入力文に対する応答文を出力することができる。
【０００９】
次に、図２を参照して、対話ログから入出力ペアを作成し、その入出力ペアを用いて応答文を出力する方法によって対話を行う対話装置について説明する。
【００１０】
図２に示すように、対話装置は、例えば、製造元により、対話ログから作成された入出力ペアを、予め記憶している。例えば、製造元は、図１に示したような対話ログの任意の発言を入力例とし、その次の発言を出力例とする入出力ペアを多数作成し、対話装置に記憶させる。対話装置は、ユーザから入力された入力文と、入出力ペアの入力例とのマッチングを行い、最も類似した入力例とペアとなっている出力例を、応答文として出力する。
【００１１】
しかしながら、図１と図２に示した方法で出力される応答文には、間違った単語（対話において不自然な単語）が含まれる可能性がある。例えば、図２に示したように、入出力ペアを用いて応答文を出力する対話装置が、「私の出身は東京です」という入力例と、「へぇ、東京出身なんだ」という出力例の入出力ペアを記憶しており、「私の出身は大阪です」というユーザからの入力文に最も類似する入力例が「私の出身は東京です」であったとき、その「私の出身は東京です」とペアになっている「へぇ、東京出身なんだ」という出力例が応答文として出力される。即ち、この場合、「私の出身は大阪です」というユーザからの入力文に対して、「へぇ、東京出身なんだ」という間違った単語である「東京」を含む不自然な応答文が出力され、ユーザに、自分の入力した入力文を理解していないと感じさせることになる。
【００１２】
そこで、例えば、人名、地名、色、大きさなどの特定の単語を含まない対話ログを利用することにより、不自然な応答文の出力を回避する方法がある。しかしながら、この場合、応答文は、人名、地名、色、大きさなどの語句を含まない抽象的な応答文となり、ユーザを満足させるバリエーション豊かな対話を行うことは困難である。
【００１３】
また、図１に示したような、対話ログの中の発言の所定のキーワードを、ユーザからの入力文の中の対応する単語に置換する対話装置が、例えば、非特許文献１や２に開示されている。
【００１４】
非特許文献１に記載されている対話装置では、解析部が、ユーザから入力された入力文を節（一単語または複数単語から構成されるまとまり）に分割する。入力文の節への分割は、例えば、その節の生起する頻度、またはI@,@went,went to（＠は節の区切り目を表す記号）といった２つの単語の並びの出現確率であるバイグラムを基に行われる。
【００１５】
また、非特許文献１に記載されている対話装置では、マッチング部が、節に分割後の入力文から、キーワードを抽出し、対話ログ（対話コーパス）の中の発言のキーワードとのマッチングを行う。例えば、マッチング部は、文の名詞と動詞が、文の本質を表しているとして、入力文と対話ログの発言から文の主題を表すと思われる名詞と動詞を決定し、それらをキーワードとして抽出して、マッチングを行う。このとき、マッチング部は、ユーザからの入力文を、発話の働き（Dialogue Act）（挨拶、質問、説明など）で分類し、その発話の働きも利用してマッチングを行う。例えば、マッチング部は、YES/NO型文は、発話の働きが「質問」の入力文の後に出現しやすいなどの傾向を利用して、マッチングを行う。また、マッチング部は、文の構造の距離を利用してマッチングを行うこともできる。但し、この場合には、マッチング部は、キーワードと発話の働きを利用しない。マッチング部のマッチングの方法は、ユーザが選択することができる。
【００１６】
さらに、非特許文献１に記載されている対話装置では、キーワード置換部が、マッチング部によるユーザからの入力文のキーワードと、対話ログの中の発言のキーワードとのマッチングの結果に基づき、入力文と最も類似している発言を選択し、その入力文のキーワードと選択した発言(以下、選択発言という)のキーワードとの対応付けを行う。そして、キーワード置換部は、選択発言のキーワードと一致する次の発言の単語を次の発言のキーワードとし、対応する入力文のキーワードが存在する場合、次の発言のキーワードを、対応する入力文のキーワードに置換する。
【００１７】
例えば、”She went to America.”というユーザからの入力文に対して、選択発言が、”He went to Africa.”である場合、キーワード置換部は、“He”と”She”を対応付け、“America”と”Africa”を対応付ける。そして、選択発言である”He went to Africa.”の次の発言が“How did he go there?”であるとき、キーワード置換部は、その“How did he go there?”から、キーワードとして“he”を抽出し、そのキーワード“he”と同一の選択発言のキーワード”He”に対応付けられている“She”に置換して、応答文の候補(以下、応答候補という)として出力する。これにより、“She went to America.”というユーザからの入力文に対し、“How did she go there?”という間違った単語（上述の例では“he”）を含まない応答候補を出力することができる。
【００１８】
非特許文献１に記載されている対話装置では、構文変換器が、キーワード置換部により出力された応答候補を、所定の規則によりいくつかの文に変形し、文法解析器が、それらの文に対して、文法が正確である度合を表す得点をつける。そして、例えば、得点の高い文が、応答文として出力される。
【００１９】
なお、非特許文献１に記載されている対話装置では、いくつかの一連の対話ログを利用して処理を行っており、ユーザにより入力された入力文と、その入力文に対して文法解析器から出力される応答文による一連のやりとりも、新たな一連の対話データとして対話ログに追加され、再利用される。
【００２０】
また、非特許文献２に記載されている対話装置では、マッチング部が、ユーザから入力された複数の入力文を、挨拶、意見、確認などの１７種類の発話の働きに分類し、いま入力された入力文の発話の働き、その１つ前の入力文の発話の働き、および対話ログの中の各発言の発話の働きの一致度合を検出し、その一致度合の高い順に、対話ログの各発言に対して順位をつける。また、マッチング部は、入力文の中で最も重要な名詞、動詞、または形容詞をそれぞれキーワードとして抽出し、対話ログの各発言のキーワードとマッチングを行い、類似度を算出する。ただし、文中に存在しない品詞については、空の単語がその品詞のキーワードであるとみなす。そして、マッチング部は、類似度に基づいて、例えば、入力文に最も類似している発言を選択する。
【００２１】
なお、非特許文献２に記載されている対話装置では、例えば、名詞のキーワードにおいて細品詞（品詞は細かく分類したもの）は一致するが、表記は一致しない場合、類似度として“０．５”ポイントが加算される。また、名詞のキーワードにおいて表記も細品詞も完全に異なる場合、動詞のキーワードにおいて表記が異なる場合、および形容詞のキーワードにおいて表記が異なる場合、いずれも、類似度として“１”ポイントが加算される。従って、類似度が最も低い発言が、最も類似している発言となる。ここで、表記とは字面のことをいう。
【００２２】
また、非特許文献２に記載されている対話装置では、最も類似している発言が、複数存在する場合、マッチング部は、その複数の発言のうち、発話の働きを用いてつけられた順位が最も高い発言を選択する。キーワード置換部は、マッチング部で選択された発言のキーワードと一致する次の発言の単語を、次の発言のキーワードとし、そのキーワードに対応する入力文のキーワードが存在する場合、次の発言のキーワードを、対応する入力文のキーワードに置換し、置換後の発言を、応答文として出力する。
【００２３】
例えば、「ご飯が食べたい」という入力文がユーザから入力された場合、マッチング部は、キーワードとして名詞「ご飯」と動詞「食べる」を抽出する。その入力文に対して最も類似している対話ログの発言が「うどんが食べたい」である場合、マッチング部は、対話ログの中の発言から、「うどんが食べたい」という発言を選択する。ここで、「うどんが食べたい」という発言のキーワードは、名詞「うどん」と動詞「食べる」である。選択した発言の次の発言が「うどんはもう飽きたよ」であり、選択した発言の次の発言のキーワードが、「うどん」である場合、次の発言のキーワードである「うどん」は、選択した発言のキーワード「うどん」と同一であるため、マッチング部は、次の発言のキーワードである「うどん」を、それに対応する入力文のキーワードである「ご飯」に置換し、「ご飯はもう飽きたよ」という発言を、応答文として出力する。
【００２４】
また、「アメリカに行きました。」という入力文がユーザから入力された場合、マッチング部は、キーワードとして名詞「アメリカ」を抽出する。また、その入力文に対して最も類似している対話ログの中の発言が「アフリカに行きました。」である場合、マッチング部は、対話ログの中の発言から、「アフリカに行きました。」という発言を選択する。ここで、「アフリカに行きました。」という発言のキーワードは、名詞「アフリカ」である。そして、選択した発言の次の発言が、「どうやってアフリカに行ったのですか？」という発言であり、キーワードが名詞「アフリカ」である場合、次の発言のキーワードである名詞「アフリカ」は、選択した発言のキーワード「アフリカ」と同一であるため、マッチング部は、次の発言のキーワードである名詞「アフリカ」を、それに対応する入力文のキーワードである名詞「アメリカ」に置換し、「どうやってアメリカに行ったのですか？」という発言を、応答文として出力する。
【００２５】
【非特許文献１】Nobuo Inui,Takaya Koiso,Junpei Nakamura and Yoshiyuki Kotani,Fully Corpus-Based Natural Language Dialogue System,(America),AAAI(the American Association for Artificial Intelligence) Spring Symposium,2003
【非特許文献２】江部利明、乾信雄、小谷義行、発話の働きとキーワードから応答生成を行う事例ベース自由対話系、情報処理学会研究報告、2001年
【発明の開示】
【発明が解決しようとする課題】
【００２６】
しかしながら、非特許文献１と２に記載されている対話装置では、応答文に間違った単語が含まれてしまう危険性がある。
【００２７】
例えば、ユーザにより“She went to America.（彼女はアメリカに行きました）”という入力文が入力され、その入力文に最も類似している対話ログの発言が”He went to Africa.(彼はアフリカに行きました)”であったとする。さらに、入力文“She went to America.”のキーワードが“She”と”America”であり、最も類似している発言”He went to Africa.”のキーワードが“He”と”Africa”であったとする。この場合、非特許文献１と２に記載されている対話装置では、“She”と”He”、“America”と“Africa”がそれぞれ対応付けられる。
【００２８】
そして、入力文に最も類似している発言”He went to Africa.”の次の発言が、“Did he go to Egypt at that time?（その時、エジプトには行きましたか？）”であった場合、次の発言“Did he go to Egypt at that time?”のうちの、入力文に最も類似している発言”He went to Africa.”のキーワード“He”と一致する”he”が、次の発言“Did he go to Egypt at that time?”のキーワードとなる。この場合、次の発言“Did he go to Egypt at that time?”のキーワード“he”が、それに対応する入力文のキーワードである“She”に置換され、応答文として出力される。これにより、“She went to America.（彼女はアメリカに行きました）”というユーザからの入力文に対する応答文が、“Did she go to Egypt at that time?（その時、エジプトには行きましたか？）”となり、話の流れから間違った単語である“Egypt”を含む応答文が出力される。即ち、エジプト（Egypt）というアメリカ（America）にはない地名を含む応答文が出力される。
【００２９】
本発明は、このような状況に鑑みてなされたものであり、ユーザにより入力された入力文に対して応答文を作成する場合において、応答文に間違った単語が含まれる危険性を減らして、自然な対話を行うことができるようにするものである。
【課題を解決するための手段】
【００３０】
本発明の情報処理システムでは、第１の情報処理装置は、入出力ペアを作成するペア作成手段と、ペア作成手段により作成された入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段と、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段とを備え、第２の情報処理装置は、入力文の特定の単語を変数に置換する入力文置換手段と、入力文と、入力例とのマッチングを行い、類似度を算出する算出手段と、算出手段により算出された類似度に基づいて、出力例を選択する選択手段と、選択手段により選択された出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する作成手段とを備えることを特徴とする。
【００３１】
本発明の第１の情報処理装置は、入出力ペアを作成するペア作成手段と、ペア作成手段により作成された入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段と、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段とを備えることを特徴とする。
【００３２】
このペア置換手段は、入出力ペアの入力例と出力例に共通に存在する特定の単語を、その単語を付加した変数に置換することができる。
【００３３】
本発明の第１の情報処理方法は、入出力ペアを作成するペア作成ステップと、ペア作成ステップの処理により作成された入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップとを含むことを特徴とする。
【００３４】
本発明の第１のプログラムは、入出力ペアを作成するペア作成ステップと、ペア作成ステップの処理により作成された入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップとを含むことを特徴とする。
【００３５】
本発明の第１の記録媒体に記録されているプログラムは、入出力ペアを作成するペア作成ステップと、ペア作成ステップの処理により作成された入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップと、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップとを含むことを特徴とする。
【００３６】
本発明の第２の情報処理装置は、複数の入出力ペアについて、入力例と出力例に共通に存在する特定の単語を変数に置換するとともに、対応する入力例に含まれない特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段と、入力文の特定の単語を変数に置換する入力文置換手段と、入力文と、記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出手段と、算出手段により算出された類似度に基づいて、記憶手段に記憶された出力例を選択する選択手段と、選択手段により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができるかどうかを判定する判定手段と、判定手段により、選択手段により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができると判定された場合、選択手段により選択された出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する作成手段とを備えることを特徴とする。
【００３７】
この選択手段は、判定手段により、選択手段により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができないと判定された場合、類似度に基づいて、記憶手段に記憶された他の出力例を選択することができる。
【００３８】
入力文置換手段は、入力文の特定の単語を、その単語を付加した変数に置換することができる。
【００３９】
本発明の第２の情報処理方法は、入力文の特定の単語を変数に置換する入力文置換ステップと、入力文と、複数の入出力ペアについて、入力例と出力例に共通に存在する特定の単語を変数に置換するとともに、対応する入力例に含まれない特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、算出ステップの処理により算出された類似度に基づいて、記憶手段に記憶された出力例を選択する選択ステップと、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができるかどうかを判定する判定ステップと、判定ステップの処理により、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができると判定された場合、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する作成ステップとを含むことを特徴とする。
【００４０】
本発明の第２のプログラムは、入力文の特定の単語を変数に置換する入力文置換ステップと、入力文と、複数の入出力ペアについて、入力例と出力例に共通に存在する特定の単語を変数に置換するとともに、対応する入力例に含まれない特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、算出ステップの処理により算出された類似度に基づいて、記憶手段に記憶された出力例を選択する選択ステップと、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができるかどうかを判定する判定ステップと、判定ステップの処理により、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができると判定された場合、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する作成ステップとを含むことを特徴とする。
【００４１】
本発明の第２の記録媒体に記録されているプログラムは、入力文の特定の単語を変数に置換する入力文置換ステップと、入力文と、複数の入出力ペアについて、入力例と出力例に共通に存在する特定の単語を変数に置換するとともに、対応する入力例に含まれない特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップと、算出ステップの処理により算出された類似度に基づいて、記憶手段に記憶された出力例を選択する選択ステップと、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができるかどうかを判定する判定ステップと、判定ステップの処理により、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換することができると判定された場合、選択ステップの処理により選択された出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する作成ステップとを含むことを特徴とする。
【００４２】
本発明の情報処理システムにおいては、入出力ペアを作成し、その入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換する。そして、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する。次に、入力文の特定の単語を変数に置換し、その入力文と、入力例とのマッチングを行い、類似度を算出する。そして、類似度に基づいて、出力例を選択し、その選択した出力例の変数を、その変数に対応する入力文の単語に置換して、応答文を作成する。
【００４３】
本発明の第１の情報処理装置および情報処理方法、並びにプログラムおよび記録媒体に記録されているプログラムおいては、入出力ペアを作成し、その入出力ペアの入力例と出力例に特定の単語が共通に存在する場合、その単語を変数に置換する。そして、出力例に、その出力例と入出力ペアの入力例には含まれない特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する。
【００４４】
本発明の第２の情報処理装置および情報処理方法、並びにプログラムおよび記録媒体に記録されているプログラムにおいては、入力文の特定の単語を変数に置換する。そして、入力文と、複数の入出力ペアについて、入力例と出力例に共通に存在する特定の単語を変数に置換するとともに、対応する入力例に含まれない特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアの入力例とのマッチングを行い、類似度を算出し、その類似度に基づいて、出力例を選択する。選択された出力例の変数を、その変数に対応する入力文の単語に置換することができるかどうかを判定し、選択された出力例の変数を、その変数に対応する入力文の単語に置換することができると判定された場合、出力例の変数を、その変数に対応する入力文の単語に置換し、応答文を作成する。
【発明の効果】
【００４５】
本発明によれば、ユーザにより入力された入力文に対して応答文を作成する場合において、応答文に間違った単語が含まれる危険性を減らして、自然な対話を行うことができる。
【発明を実施するための最良の形態】
【００４６】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４７】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００４８】
請求項１に記載の情報処理システムは、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する第１の情報処理装置(例えば、図５のマッチング用データ作成部９２)と、前記入出力ペアに基づいて、前記入力文に対する応答文を作成する第２の情報処理装置（例えば、図５の応答生成部９３）とを備える情報処理システム(例えば、図５の対話制御システム６２)において、
第１の情報処理装置は、
前記入出力ペアを作成するペア作成手段(例えば、図６の入出力ペア抽出部１１１)と、
前記ペア作成手段により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段(例えば、図９のステップＳ１３の処理を実行する図６の単語変数置換部１１３)と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段(例えば、図９のステップＳ１８の処理を実行する図６の単語変数置換部１１３)と
を備え、
前記第２の情報処理装置は、
前記入力文の前記特定の単語を変数に置換する入力文置換手段(例えば、図１５の単語変数置換部１３１)と、
前記入力文と、前記入力例とのマッチングを行い、類似度を算出する算出手段（図１５のマッチング部１３４）と、
前記算出手段により算出された前記類似度に基づいて、前記出力例を選択する選択手段(例えば、図１６のステップＳ３８の処理を実行する図１５の変数単語置換部１３６)と、
前記選択手段により選択された前記出力例の前記変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成手段(例えば、図１６のステップＳ４２の処理を実行する図１５の変数単語置換部１３６)と
を備える
ことを特徴とする。
【００４９】
請求項２に記載の情報処理装置は、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する情報処理装置(例えば、図５のマッチング用データ作成部９２)において、
前記入出力ペアを作成するペア作成手段(例えば、図６の入出力ペア抽出部１１１)と、
前記ペア作成手段により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換手段(例えば、図９のステップＳ１３の処理を実行する図６の単語変数置換部１１３)と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除手段(例えば、図９のステップＳ１８の処理を実行する図６の単語変数置換部１１３)と
を備えることを特徴とする。
【００５０】
請求項４に記載の情報処理方法は、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する情報処理装置(例えば、図５のマッチング用データ作成部９２)の情報処理方法において、
前記入出力ペアを作成するペア作成ステップ(例えば、図８の入出力ペアを抽出する処理)と、
前記ペア作成ステップの処理により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップ（例えば、図９のステップＳ１３）と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップ（例えば、図９のステップＳ１８）と
を含むことを特徴とする。
【００５１】
請求項５に記載のプログラムおよび請求項６に記載の記録媒体に記録されているプログラムは、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアを作成する作成処理を、コンピュータに行わせるプログラムにおいて、
前記入出力ペアを作成するペア作成ステップ(例えば、図８の入出力ペアを抽出する処理)と、
前記ペア作成ステップの処理により作成された前記入出力ペアの前記入力例と前記出力例に特定の単語が共通に存在する場合、その単語を変数に置換するペア置換ステップ（例えば、図９のステップＳ１３）と、
前記出力例に、その出力例と入出力ペアの前記入力例には含まれない前記特定の単語が含まれている場合に、その出力例と入力例の入出力ペアを削除する削除ステップ（例えば、図９のステップＳ１８）と
を含むことを特徴とする。
【００５２】
請求項７に記載の情報処理装置は、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する情報処理装置（例えば、図１５の応答生成部９３）において、
複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段(例えば、図１５の変数付き入出力ペア記憶部１３７)と、
前記入力文の前記特定の単語を変数に置換する入力文置換手段(例えば、図１５の単語変数置換部１３１)と、
前記入力文と、前記記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出手段（図１５のマッチング部１３４）と、
前記算出手段により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択手段(例えば、図１６のステップＳ３８の処理を実行する図１５の変数単語置換部１３６)と、
前記選択手段により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定手段（例えば、図１６のステップＳ４０の処理を実行する図１５の変数単語置換部１３６）と、
前記判定手段により、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成手段(例えば、図１６のステップＳ４２の処理を実行する図１５の変数単語置換部１３６)と
を備えることを特徴とする。
【００５３】
請求項８に記載の情報処理装置は、
前記選択手段は、前記判定手段により、前記選択手段により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができないと判定された場合、前記類似度に基づいて、前記記憶手段に記憶された他の出力例を選択する(例えば、図１６のステップＳ４１の処理)
ことを特徴とする。
【００５４】
請求項１０に記載の情報処理方法は、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する情報処理装置（例えば、図１５の応答生成部９３）の情報処理方法において、
前記入力文の前記特定の単語を変数に置換する入力文置換ステップ（例えば、図１６のステップＳ３３またはステップＳ３４）と、
前記入力文と、複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップ（例えば、図１６のステップＳ３７）と、
前記算出ステップの処理により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択ステップ（例えば、図１６のステップＳ３８）と、
前記選択ステップの処理により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定ステップ（例えば、図１６のステップＳ４０）と、
前記判定ステップの処理により、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成ステップ（例えば、図１６のステップＳ４２）と
を含むことを特徴とする。
【００５５】
請求項１１に記載のプログラムおよび請求項１２に記載の記録媒体に記録されているプログラムは、
ユーザから入力された入力文とのマッチングの対象となる入力例とその入力例に対する出力例との入出力ペアに基づいて、前記入力文に対する応答文を作成する作成処理を、コンピュータに行わせるプログラムにおいて、
前記入力文の前記特定の単語を変数に置換する入力文置換ステップ（例えば、図１６のステップＳ３３またはステップＳ３４）と、
前記入力文と、複数の前記入出力ペアについて、前記入力例と前記出力例に共通に存在する特定の単語を変数に置換するとともに、対応する前記入力例に含まれない前記特定の単語を含む出力例の入出力ペアを削除することにより得られる入出力ペアを記憶する記憶手段に記憶された入力例とのマッチングを行い、類似度を算出する算出ステップ（例えば、図１６のステップＳ３７）と、
前記算出ステップの処理により算出された前記類似度に基づいて、前記記憶手段に記憶された出力例を選択する選択ステップ（例えば、図１６のステップＳ３８）と、
前記選択ステップの処理により選択された前記出力例の変数を、その変数に対応する前記入力文の単語に置換することができるかどうかを判定する判定ステップ（例えば、図１６のステップＳ４０）と、
前記判定ステップの処理により、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換することができると判定された場合、前記選択ステップの処理により選択された出力例の変数を、その変数に対応する前記入力文の単語に置換し、前記応答文を作成する作成ステップ（例えば、図１６のステップＳ４２）と
を含むことを特徴とする。
【００５６】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００５７】
図３は、本発明を適用したロボット制御システムを備えた２足歩行型のロボットの外観構成例を示している。
【００５８】
ロボット１１は、胴体部ユニット２３の上部に頭部ユニット２１が配設されるとともに、胴体部ユニット２３の上部左右に同じ構成の腕部ユニット２２Ａと２２Ｂがそれぞれ配設され、かつ胴体部ユニット２３の下部左右に同じ構成の脚部ユニット２４Ａと２４Ｂがそれぞれ取り付けられことにより構成されている。
【００５９】
また、頭部ユニット２１には、ロボット１１の「目」として機能するCCD（Charge Coupled Device）カメラ３１Ａと３１Ｂ、「耳」として機能するマイクロホン３２Ａと３２Ｂ、および「口」として機能するスピーカ３３がそれぞれ所定位置に配置されている。
【００６０】
図４は、図３のロボット１１の電気的構成例を示している。
【００６１】
ロボット制御システム５１の指令により、ユニット制御システム６１および対話制御システム６２は、ロボット１１の動作を制御する。即ち、ユニット制御システム６１は、ロボット１１の頭部ユニット２１、腕部ユニット２２Ａと２２Ｂ、胴体部ユニット２３、および脚部ユニット２４Ａと２４Ｂのそれぞれを必要に応じて制御し、ロボット１１に所定の動作をさせる。また、対話制御システム６２は、ロボット１１の発話を制御し、必要に応じて、スピーカ３３から、所定の発話をさせる。
【００６２】
図５は、図４の対話制御システム６２の構成例を示すブロック図である。
【００６３】
図５の対話制御システム６２は、入力部９１、マッチング用データ作成部９２、応答生成部９３、および出力部９４から構成される。図５の対話制御システム６２は、入力部９１から入力された入力文に対する応答文を、出力部９４から出力する。
【００６４】
入力部９１は、例えば、「耳」として機能するマイクロホン３２Ａまたは３２Ｂからの入力を受け付け、音声認識処理を行う。即ち、入力部９１は、マイクロホン３２Ａまたは３２Ｂから入力される音声を、対応する文字列に変換する。入力部９１は、その文字列を入力文として応答生成部９３に供給する。なお、入力部９１は、キーボードからの文字列の入力を受け付け、キーボードから入力される文字列を、入力文として応答生成部９３に供給することもできる。
【００６５】
マッチング用データ作成部９２は、人間同士の対話のログから、入力文とのマッチングの対象となる入力例と、その入力例に対する出力例との入出力ペアのデータベースを作成する。さらに、マッチング用データ作成部９２は、入出力ペアに基づいて、入力文とのマッチングに用いるマッチング用データのデータベースを作成し、応答生成部９３に供給する。応答生成部９３は、マッチング用データ作成部９２から供給されるマッチング用データに基づいて、入力部９１から供給される入力文に対する応答文を生成し、出力部９４に供給する。
【００６６】
出力部９４は、例えば、「口」として機能するスピーカ３３や図示せぬディスプレイから構成される。出力部９４は、応答生成部９３から供給される応答文の音声合成処理を行い、その結果得られる音声を出力したり、応答文を画像（文字列）として出力する。
【００６７】
以上のように構成される対話制御システム６２においては、入力部９１が、ユーザによる入力を受け付け、入力文として応答生成部９３に供給し、応答生成部９３が、マッチング用データ作成部９２で作成されたマッチング用データに基づいて、入力文に対する応答文を生成して、出力部９４から出力する。
【００６８】
図６は、図５のマッチング用データ作成部９２の詳細構成例を示すブロック図である。
＄            
図６のマッチング用データ作成部９２は、入出力ペア抽出部１１１、単語変数対応マップ記憶部１１２、単語変数置換部１１３、およびマッチング用データ生成部１１４から構成される。
【００６９】
入出力ペア抽出部１１１には、人間同士の対話ログが入力される。入出力ペア抽出部１１１は、その対話ログから、入力例と、それに対する出力例との入出力ペアを抽出し、これにより、多数の入出力ペアのデータベースを作成する。入出力ペア抽出部１１１は、入出力ペアのデータベースを単語変数置換部１１３に供給する。
【００７０】
なお、対話ログは、インターネットを介して行われたチャットのログや掲示板のログなどを、そのまま用いることも可能であるが、例えば、ユーザが、コンピュータ等を用いて、それらのログを編集することにより作成することも可能である。また、入出力ペア抽出部１１１によって入出力ペアが作成されたときに、例えば、ユーザが、その入出力ペアを修正することも可能である。この場合、ユーザにより修正された入出力ペアが単語変数置換部１１３に供給される。さらに、対話ログや入出力ペアを、ユーザがすべて作成することも可能であるが、この場合、膨大な労力が必要となる。
【００７１】
単語変数対応マップ記憶部１１２は、特定の単語と、その単語を置換する変数とを対応付けた単語変数対応マップを記憶している。ここで、単語変数対応マップに記述される特定の単語とは、例えば、実際の対話（具体的な場面）において固有に使用される可能性が高い単語で、具体的には、人名や地名などのカテゴリに属する単語などがある。
【００７２】
単語変数置換部１１３は、入出力ペア抽出部１１１から供給される入出力ペア（の入力例と出力例）に、単語変数対応マップ記憶部１１２に記憶された単語変数対応マップに記述された特定の単語が含まれる場合には、入出力ペアにおける特定の単語を、その特定の単語に対応付けられた変数に置換し、置換後の変数付きの入出力ペア(以下、変数付き入出力ペアという)をマッチング用データ生成部１１４に供給するとともに、応答生成部９３に供給する。また、単語変数置換部１１３は、入出力ペア抽出部１１１からの入出力ペア（の入力例と出力例）における特定の単語を、所定のルールに基づいて、変数に置換する。
【００７３】
マッチング用データ生成部１１４は、単語変数置換部１１３から供給される変数付き入出力ペアの各入力例を、入力文とのマッチングを行うためのマッチング用データに変換し、応答生成部９３に供給する。
【００７４】
図７は、入出力ペア抽出部１１１に供給される対話ログの例を示している。
【００７５】
図７の対話ログは、Ａさん、Ｂさん、Ｃさん、およびＤさんの対話を記録したものである。図７の対話ログでは、例えば、第１行目に、Ａさんの「佐藤さんの最近の調子はどう？」という質問が記述され、第２行目に、その質問に対するＢさんの「最近は調子がいいようです。」という応答が記述されている。
【００７６】
図８は、図７の対話ログから、入出力ペア抽出部１１１が抽出した入出力ペアの例を示している。
【００７７】
入出力ペア抽出部１１１は、例えば、図７の対話ログの発言を、１行目から、順次入力例とし、その次の発言を出力例として、図８の入出力ペアを作成する。
【００７８】
なお、図８では、入出力ペアには、例えば、１から順に番号が付されており、ｉ番の入出力ペアを入出力ペア＃ｉと表す。
【００７９】
図８の入出力ペア＃１は、図７の第１行目のＡさんの「佐藤さんの最近の調子はどう？」という質問を入力例とし、その質問に対するＢさんの応答である図７の第２行目の「最近は調子がいいようです。」を出力例とする入出力のペアである。同様に、図８の入出力ペア＃２は、図７の第８行目のＤさんの「私は佐藤です。」という発言を入力例とし、その発言に対するＣさんの応答である図７の第９行目の「へー、佐藤さんっていうんだ。」を出力例とする入出力のペアである。
【００８０】
また、入出力ペア＃３は、図７の第１１行目のＡさんの「今日の具合はどうですか？」という質問を入力例とし、その質問に対するＤさんの応答である図７の第１２行目の「また体調を崩してしまいまして・・・」を出力例とする入出力ペアである。入出力ペア＃４は、図７の第１５行目のＢさんの「今どこにいるの？」という質問を入力例とし、その質問に対するＣさんの応答である図７の第１６行目の「東京です。」を出力例とする入力例と出力例のペアである。さらに、入出力ペア＃５は、図７の第１９行目のＡさんの「この前、大阪に行ったんだよ。」という発言を入力例とし、その発言に対するＤさんの応答である図７の第２０行目の「なんで大阪に行ったの？出張？旅行？」を出力例とする入出力ペアである。
【００８１】
図９は、図６の単語変数置換部１１３が行う単語変数変換処理を説明するフローチャートである。
【００８２】
ステップＳ１１において、単語変数置換部１１３は、入出力ペア抽出部１１１から供給される入出力ペアを単語に分割する単語分割を行う。このように、入出力ペアを単語に分割するプログラムは、既にいくつか存在している。
【００８３】
例えば、図８の入出力ペア＃１が入出力ペア抽出部１１１から供給された場合、単語変数置換部１１３は、入力例を単語に分割して「佐藤  さん  の  最近  の  調子  は  どう  ？」とし、出力例を単語に分割して「最近  は  調子  が  いい  よう  です  。」とする。
【００８４】
ステップＳ１１の処理後は、ステップＳ１２に進み、単語変数置換部１１３は、単語分割後の入出力ペアの入力例と出力例から、その入力例と出力例に共通に存在する単語（以下、共通単語という）を抽出する。
【００８５】
例えば、上述したように、入力例が「佐藤  さん  の  最近  の  調子  は  どう  ？」に分割され、出力例が「最近  は  調子  が  いい  よう  です  。」に分割される図８の入出力ペア＃１については、単語変数置換部１１３は、共通単語として、「最近」、「調子」、および「は」を抽出する。
【００８６】
ステップＳ１２の処理後は、ステップＳ１３に進み、単語変数置換部１１３は、単語変数対応マップ記憶部１１２から、特定の単語とその単語を置換する変数とを対応付けた単語変数対応マップに基づいて、入力例および出力例における共通単語のうち、単語変数対応マップに存在する特定の単語と一致する単語を、その特定の単語に対応付けられた変数に置換し、ステップＳ１４に進む。なお、共通単語が存在しない場合、ステップＳ１３では、置換は行われない。
【００８７】
ステップＳ１４において、単語変数置換部１１３は、出力例に、単語変数対応マップには存在するが、共通単語ではない(入力例には含まれない)ために、変数に置換されなかった単語があるかどうか、即ち、出力例にのみ、単語変数対応マップに記述された単語が存在するかどうかを判定する。ステップＳ１４において、出力例にのみ存在する単語において、単語変数対応マップに記述されたものは存在しないと判定された場合、即ち、出力例の中に、単語変数対応マップに記述された特定の単語に一致する単語が存在するが、その単語が入力例にも存在する共通単語である場合、または出力例の中に、単語変数対応マップに記述された特定の単語が存在しない場合、単語変数置換部１１３は、ステップＳ１５に進み、所定のルールに基づいて、入力例および出力例における共通単語を変数に置換する。
【００８８】
ここで、所定のルールとは、例えば、実際の対話（具体的な場面）において固有に使用される可能性が高いカテゴリの単語を、変数に置換するというルールである。
【００８９】
具体的には、例えば、単語変数置換部１１３は、数字のみの単語や、数字と、「個」、「台」などの個数を数えるときの単位とで構成される単語の数字部分を「＄数詞＄」という変数に置換するというルールに基づいて、共通単語を変数に置換する。また、単語変数置換部１１３は、「＄数詞＄」という変数に置換された単語の直後に「年」、「月」、「日」、「時」、「分」、「秒」などの時間を表す単位が付加されている単語を、「＄時間＄」という変数に置換するというルールに基づいて、共通単語を変数に置換する。
【００９０】
ここで、本実施の形態では、上述した「＄数詞＄」や「＄時間＄」のように、変数の種類を表す表記(例えば、「数詞」や「時間」)の先頭と終わりそれぞれに、＄マークを付すことにより、変数を表すものとする。但し、変数の表記の方法は、これに限定されるものではない。
【００９１】
例えば、単語分割後の入出力ペアの入力例が、「１１時  頃  に  出かけ  ます  ので  、  留守  を  よろしく  お願い  し  ます」であり、出力例が「分かりました、  １１時  から  です  ね」である場合、共通単語は「１１時」であるので、単語変数置換部１１３は、共通単語「１１時」のうちの「１１」という数字部分を「＄数詞＄」という変数に置換し、「＄数詞＄時」とする。そして、単語変数置換部１１３は、「＄数詞＄」という変数の直後に「時」という時間を表す単位が付加されているので、「＄数詞＄時」を、さらに変数「＄時間＄」に置換する。
【００９２】
なお、ステップＳ１３またはＳ１５において、同一の種類の変数に置換される共通単語が複数存在する場合、例えば、置換する順番に、その変数に番号を付加する。
【００９３】
例えば、入出力ペアの入力例および出力例において、「＄人名＄」という変数に置換される共通単語が２つ以上ある場合、単語変数置換部１１３は、１つ目の共通単語を変数「＄人名＄」に置換し、２つ目の共通単語を変数「＄人名２＄」に置換する。また、例えば、入出力ペアの入力例および出力例において、「＄数詞＄」という変数に置換される共通単語が２つ以上ある場合、単語変数置換部１１３は、同様に、１つ目の共通単語を変数「＄数詞＄」に置換し、２つ目の共通単語を変数「＄数詞２＄」に置換する。
【００９４】
また、ステップＳ１３またはＳ１５において、単語変数置換部１１３では、例えば、「＄人名＄  ＄人名２＄」のように、連続する共通単語が同一の種類の変数に置換された場合、さらに、それらをまとめて１つの変数「＄人名＄」に置換することができる。例えば、共通単語が「佐藤  太郎」や「１１時  ３０分」である場合、単語変数置換部１１３は、「佐藤  太郎」を、「＄人名＄  ＄人名２＄」に、「１１時  ３０分」を、「＄時間＄  ＄時間２＄」に、それぞれ置換する。そして、単語変数置換部１１３は、さらに、「＄人名＄  ＄人名２＄」を「＄人名＄」に、「＄時間＄  ＄時間２＄」を「＄時間＄」に、それぞれ置換する。
【００９５】
これにより、例えば、単語分割後の入出力ペアの入力例が、「私、  佐藤  太郎  と  申します」であり、出力例が「佐藤  太郎  さん  ですか  、  覚えておきます」である場合、共通単語は、「佐藤」と「太郎」になるが、この「佐藤」と「太郎」は連続している。従って、この場合、単語変数置換部１１３は、その連続している共通単語である「佐藤」と「太郎」を、１つの「＄人名＄」という変数に置換し、入出力ペアを、「私、  ＄人名＄  と申します」という入力例と、「＄人名＄  さんですか、  覚えておきます」という出力例の変数付き入出力ペアにする。この場合、応答生成部９３では、「鈴木と申します」という入力文が入力されたとき、即ち、「鈴木」という姓のみが入力されたときであっても、後述するように、「私、  ＄人名＄  と申します」という入力例と、「＄人名＄  さんですか、  覚えておきます」という出力例の変数付き入出力ペアを利用して、「鈴木  さんですか、  覚えておきます」という応答文を出力することができる。
【００９６】
さらに、例えば、単語分割後の入出力ペアの入力例が、「私  は  佐藤  太郎  で  鈴木  の  友人  です」であり、出力例が「あなた  が  鈴木  さん  の  友人  の  佐藤  太郎  さん  ですか  ？」である場合、単語変数置換部１１３は、共通単語である「佐藤」、を「＄人名＄」に、「太郎」を「＄人名２＄」に、「鈴木」を「＄人名３＄」にそれぞれ置換し、入出力ペアを、「私  は  ＄人名＄  ＄人名２＄  で  ＄人名３＄  の  友人  です」という入力例と、「あなた  は  ＄人名３＄さん  の  友人  の  ＄人名＄  ＄人名２＄  さん  ですか  ？」という出力例の変数付き入出力ペアにするが、さらに、上述したように、「＄人名＄  ＄人名２＄」を１つの「＄人名＄」という変数に置換する場合、「＄人名３＄」の数字を１つ繰り上げて、「＄人名２＄」に変更する。即ち、単語変数置換部１１３は、入出力ペアを「私  は  ＄人名＄  で  ＄人名２＄  の  友人  です」という入力例と、「あなた  は  ＄人名２＄さん  の  友人  の  ＄人名＄  さん  ですか  ？」という出力例の変数付き入出力ペアにする。
【００９７】
なお、共通単語がない場合、ステップＳ１５では、置換は行われない。
【００９８】
ステップＳ１５の処理後は、ステップＳ１６に進み、ステップＳ１４と同様に、出力例に、ルールに基づいて変数に置換が可能な単語が存在するが、共通単語ではないために、変数に置換されなかった単語があるかどうか、即ち、出力例にのみ、ルールに基づく置換が可能な単語があるかどうかを判定する。ステップＳ１６において、出力例にのみ、ルールに基づく置換が可能な単語がないと判定された場合、即ち、出力例の中に、ルールに基づいて変数に置換することができる単語があるが、その単語が入力例にも存在する共通単語である場合、または出力例の中に、ルールに基づいて変数に置換することが可能な単語が存在しない場合、ステップＳ１７に進み、単語変数置換部１１３は、ステップＳ１３とＳ１５で共通単語が変数に置換された入出力ペアである変数付き入出力ペアを、マッチング用データ生成部１１４に出力するとともに、応答生成部９３に出力し、処理を終了する。
【００９９】
例えば、単語分割後の入出力ペアの入力例が「１１時  頃  に  出かけ  ます  ので、  留守  を  よろしく  お願い  し  ます」であり、出力例が「分かりました、  １１時  から  です  ね」である場合、共通単語は「１１時」であるので、単語変数置換部１１３は、入力例および出力例における共通単語「１１時」を「＄時間＄」に置換する。そして、出力例にのみ、単語変数対応マップまたは所定のルールに基づいて変数に置換可能な単語が存在しなければ、「＄時間＄  頃  に  出かけ  ます  ので、  留守  を  よろしく  お願い  し  ます」という入力例と「分かりました、  ＄時間＄  から  です  ね」という出力例の変数付き入出力ペアが、単語変数置換部１１３からマッチング用データ生成部１１４に出力される。
【０１００】
その後、マッチング用データ生成部１１４は、単語変数置換部１１３から供給される変数付き入出力ペアの入力例を、マッチング用データに変換し、応答生成部９３に供給する。
【０１０１】
また、ステップＳ１４において、出力例にのみ、単語変数対応マップに記述された特定の単語に一致する単語があると判定された場合、または、ステップＳ１６において、出力例にのみ、所定のルールにしたがって変数に置換される単語があると判定された場合、単語変数置換部１１３は、ステップＳ１８に進み、その出力例を含む入出力ペアを破棄（削除）し、処理を終了する。
【０１０２】
例えば、「佐藤  さん  の  出身  は  どこ  ？」という入力例と、「佐藤  さん  の  出身  は  東京  です  。」という出力例との入出力ペアについては、共通単語は、「佐藤」、「さん」、「の」、「出身」、および「は」となる。例えば、単語変数対応マップに、単語「佐藤」と変数「＄人名＄」とが対応付けられているとともに、単語「東京」と変数「＄地名＄」とが対応付けられているとすると、単語変数置換部１１３は、単語変数対応マップに基づいて、入力例および出力例における共通単語「佐藤」を変数「＄人名＄」に置換し、入出力ペアを、「＄人名＄  さん  の  出身  は  どこ  ？」という入力例と「＄人名＄  さん  の  出身  は  東京  です  。」という出力例の変数付き入出力ペアにする。
【０１０３】
この場合、単語変数置換部１１３は、単語変数対応マップに記述されているが、共通単語ではない単語「東京」が含まれる出力例「＄人名＄  さん  の  出身  は  東京  です  。」の入出力ペアを破棄し、これにより、応答文に間違った単語が含まれる危険性を低減するようになっている。
【０１０４】
図１０は、図９のステップＳ１１で、単語変数置換部１１３により、図８の入出力ペアが単語に分割された後の入出力ペアの例を示している。
【０１０５】
図１０では、例えば、図８の入出力ペア＃１の入力例「佐藤さんの最近の調子はどう？」が単語に分割され、「佐藤  さん  の  最近  の  調子  は  どう  ？」となっている。同様に、図８の入出力ペア＃１の出力例「最近は調子がいいようです。」が単語に分割され、「最近  は  調子  が  いい  よう  です  。」となっている。
【０１０６】
図１１は、図９のステップＳ１２で、単語変数置換部１１３により、図１０の単語分割後の入出力ペアから抽出された共通単語を示している。
【０１０７】
図１０の単語分割後の入出力ペア＃１の入力例は「佐藤  さん  の  最近  の  調子  は  どう  ？」で、出力例は「最近  は  調子  が  いい  よう  です  。」であるので、図１１に示すように、入出力ペア＃１の共通単語は、「最近」、「調子」、および「は」となる。同様に、入出力ペア＃２の共通単語は「佐藤」、入出力ペア＃５の共通単語は「大阪」、「に」、「行っ」、および「た」となる。なお、入出力ペア＃３と入出力ペア＃４においては、共通単語は存在しない。
【０１０８】
図１２は、単語変数対応マップ記憶部１１２に記憶されている単語変数対応マップの例を示している。
【０１０９】
図１２の単語変数対応マップでは、「佐藤」という単語に、「＄人名＄」という変数が対応付けられている。同様に、「鈴木」と「高橋」という単語それぞれにも、「＄人名＄」という変数が対応付けられている。また、「東京」と「大阪」という単語それぞれに、「＄地名＄」という変数が対応付けられている。
【０１１０】
例えば、図１１において、入出力ペア＃２の共通単語は「佐藤」であるので、図９のステップＳ１３において、単語変数置換部１１３は、図１２の単語変数対応マップに基づいて、入出力ペア＃２の入力例および出力例における共通単語「佐藤」を「＄人名＄」に置換する。
【０１１１】
図１３は、図９のステップＳ１７で、単語変数置換部１１３により出力される変数付き入出力ペアの例を示している。なお、図１３の変数付き入出力ペアは、図１０の単語分割後の入出力ペアの単語が、図１２の単語変数対応マップに基づいて、変数に置換されたものである。
【０１１２】
図１１に示すように、入出力ペア＃１の共通単語は、「最近」、「調子」、および「は」であるが、図１２の単語変数対応マップには、「最近」、「調子」、および「は」のうちのいずれの単語も存在しないので、単語変数置換部１１３は、単語を変数に置換する処理を行わない。従って、変数付き入出力ペア＃１は、図１３に示すように、図１０の単語分割後の入出力ペア＃１と同一のものとなる。一方、入出力ペア＃２の共通単語は、図１１に示すように、「佐藤」であり、図１２の単語変数対応マップでは、「佐藤」に「＄人名＄」という変数が対応付けられているので、単語変数置換部１１３は、入出力ペア＃２の入力例および出力例の共通単語の「佐藤」を「＄人名＄」に置換する。従って、図１３に示すように、変数付き入出力ペアの入出力ペア＃２は、入力例が「私  は  ＄人名＄  です  。」となり、出力例が「へー  、  ＄人名＄  さん  って  いう  ん  だ  。」となる。
【０１１３】
図１１に示すように、入出力ペア＃３の共通単語は存在しないので、単語変数置換部１１３は、単語を変数に置換する処理を行わない。従って、変数付き入出力ペア＃３は、図１３に示すように、入出力ペア＃３と同一のものとなる。一方、図１１に示すように、入出力ペア＃４の共通単語は存在しないが、出力例にのみ、図１２の単語変数対応マップにある「東京」が存在するので、単語変数置換部１１３は、図９のステップＳ１８の処理を行い、図１３に示すように、入出力ペア＃４を破棄する。
【０１１４】
図１１に示すように、入出力ペア＃５の共通単語は、「大阪」、「に」、「行っ」、「た」であり、図１２の単語変数対応マップには、「大阪」に、「＄地名＄」という変数が対応付けられているので、単語変数置換部１１３は、入出力ペア＃５の入力例および出力例の共通単語の「大阪」を「＄地名＄」に置換する。従って、図１３に示すように、変数付き入出力ペア＃５は、入力例が「この  前  ＄地名＄  に  行っ  た  よ  。」となり、出力例が「なんで  ＄地名＄  に  行っ  た  の  ？  出張  ？  旅行  ？」となる。
【０１１５】
図１４は、図６のマッチング用データ生成部１１４が出力するマッチング用データの例を示している。なお、図１４では、マッチング用データ生成部１１４に、図１３の変数付き入出力ペア＃１乃至＃３が供給されている。
【０１１６】
マッチング用データ生成部１１４は、変数付き入出力ペア＃１乃至＃３の入力例を、種類の異なる各単語を要素（エレメント）としたベクトルに変換し、マッチング用データとする。従って、マッチング用データのベクトルの要素の数は、変数付き入出力ペア＃１乃至＃３の入力例の単語の種類の数と同一となる。ここで、単語の種類とは、例えば、表記である。即ち、表記の異なる単語は、種類の異なる単語となる。なお、「＄人名＄」と「＄人名２＄」のように、同一の種類の変数であっても表記が異なれば、その同一の種類の変数は区別される。即ち、「＄人名＄」と「＄人名２＄」は、マッチング用データとしてのベクトルにおいて、別の要素とされる。
【０１１７】
図１４では、マッチング用データは、図１３の変数付き入出力ペア＃１乃至＃３の入力例に含まれる表記の異なる単語である「佐藤」、「さん」、「の」、「最近」、「調子」、「は」、「どう」、「？」、「私」、「＄人名＄」、「です」、「。」、「今日」、「具合」、および「か」それぞれを要素としたベクトルとなっている。図１４の表の中の数字は、ベクトルの各要素の値であり、対応する表記の単語が存在する数である。
【０１１８】
例えば、図１３の変数付き入出力ペア＃１の入力例は、「佐藤  さん  の  最近  の  調子  は  どう  ？」であり、入力例には、「佐藤」、「さん」、「最近」、「調子」、「は」、「どう」、および「？」という単語がそれぞれ１つずつあり、「の」という単語が２つあるので、図１４に示すように、変数付き入出力ペア＃１のマッチング用データは、「佐藤」、「さん」、「最近」、「調子」、「は」、「どう」、および「？」という単語に対応する要素の値が「１」で、「の」という単語に対応する要素の値が「２」で、その他の単語「私」、「＄人名＄」、「です」、「。」、「今日」、「具合」、および「か」に対応する要素の値が「０」のベクトルとなっている。
【０１１９】
図１５は、図５の応答生成部９３の詳細構成例を示すブロック図である。
【０１２０】
図１５の応答生成部９３は、単語変数置換部１３１、単語変数対応マップ記憶部１３２、変数単語対応マップ記憶部１３３、マッチング部１３４、マッチング用データ記憶部１３５、変数単語置換部１３６、および変数付き入出力ペア記憶部１３７から構成される。
【０１２１】
単語変数置換部１３１には、入力部９１から入力文が供給される。単語変数置換部１３１は、図６の単語変数置換部１１３と同様に、単語変数対応マップ記憶部１３２に記憶されている単語変数対応マップまたは所定のルールに基づいて、入力文の単語を変数に置換し、変数付き入力文として、マッチング部１３４に供給する。また、単語変数置換部１３１は、置換後の変数と、置換前の単語とのセットを変数単語対応マップ記憶部１３３に供給する。
【０１２２】
単語変数対応マップ記憶部１３２は、単語とその単語を置換する変数を対応付けた単語変数対応マップを記憶する。この単語変数対応マップは、図６の単語変数対応マップ記憶部１１２に記憶されている単語変数対応マップと基本的には同一のものであるが、異なるものであってもよい。
【０１２３】
変数単語対応マップ記憶部１３３は、単語変数置換部１３１から供給される置換後の変数と、置換前の単語とを対応付けて変数単語対応マップとして一時記憶する。
【０１２４】
マッチング部１３４は、単語変数置換部１３１から供給される変数付き入力文を、図６のマッチング用データ生成部１１４と同様に、例えば、マッチング用データと同一要素のベクトルに変換する。さらに、マッチング部１３４は、マッチング用データ記憶部１３５に記憶されている各変数付き入出力ペアのマッチング用データ(図１４)を読み出し、その各変数付き入出力ペアのマッチング用データと、入力文のベクトルとのマッチングを行い、入力文のベクトルとマッチング用データとの類似度を、変数付き入出力ペアごとに算出する。そして、マッチング部１３４は、類似度と変数付き入出力ペアの番号を対応付け、類似度の高い順に並べた類似度のリストを、変数単語置換部１３６に供給する。
【０１２５】
マッチング用データ記憶部１３５は、マッチング用データ作成部９２（図６）のマッチング用データ生成部１１４から供給される各変数付き入出力ペアのマッチング用データを記憶する。
【０１２６】
変数単語置換部１３６は、マッチング部１３４から供給される類似度のリストに基づいて、最も類似度の高い変数付き入出力ペアの番号を選択する。変数単語置換部１３６は、その選択した変数付き入出力ペアの番号の出力例を、変数付き入出力ペア記憶部１３７から読み出す。そして、変数単語置換部１３６は、出力例に変数がある場合、その変数に対応する単語を、変数単語対応マップ記憶部１３３に記憶されている変数単語対応マップから読み出し、出力例の変数と置換する。変数単語置換部１３６は、置換後の出力例を、応答文として出力部９４（図５）に供給する。
【０１２７】
変数付き入出力ペア記憶部１３７は、図６の単語変数置換部１１３から供給される変数付き入出力ペア(図１３)を記憶する。
【０１２８】
図１６は、図１５の応答生成部９３が行う応答生成処理を説明するフローチャートである。この処理は、入力部９１から入力文が供給されたとき開始される。
【０１２９】
ステップＳ３１において、単語変数置換部１３１は、図９のステップＳ１１と同様に、入力部９１から供給された入力文を単語に分割する単語分割を行い、ステップＳ３２に進む。なお、ステップＳ３２乃至ステップＳ３５の処理は、例えば、入力文の先頭の単語から順に、分割された単語ごとに行われる。
【０１３０】
ステップＳ３２において、単語変数置換部１３１は、処理の対象となる単語(以下、対象単語という)が、単語変数対応マップ記憶部１３２に記憶されている単語変数対応マップにある単語であるかどうかを判定し、対象単語が単語変数対応マップにある単語ではないと判定した場合、ステップＳ３３をスキップして、ステップＳ３４に進む。
【０１３１】
一方、ステップＳ３２において、対象単語が単語変数対応マップにある単語であると判定された場合、ステップＳ３３に進み、単語変数置換部１３１は、単語変数対応マップに基づいて、対象単語を対応する変数に置換し、ステップＳ３４に進む。
【０１３２】
例えば、単語分割後の入力文が「鈴木  と  は  私  の  こと  です  。」であり、対象単語が「鈴木」である場合、単語変数対応マップ記憶部１３２に図１２に示した単語変数対応マップが記憶されているとき、単語変数置換部１３１は、対象単語である「鈴木」を「＄人名＄」という変数に置換し、単語分割後の入力文を「＄人名＄  と  は  私  の  こと  です  。」という変数付き入力文にする。
【０１３３】
ステップＳ３４において、単語変数置換部１３１は、図９のステップＳ１５の処理と同様に、所定のルールに基づいて、対象単語を変数に置換し、ステップＳ３５に進む。なお、対象単語が所定のルールに基づいて置換できる単語ではない場合、置換は行われない。
【０１３４】
ステップＳ３５において、単語変数置換部１３１は、ステップＳ３３とＳ３４のそれぞれで置換した変数と置換前の単語とのセットそれぞれを変数単語対応マップ記憶部１３３に供給し、置換後の変数と置換前の単語とを対応付けて、変数単語対応マップとして記憶させ、ステップＳ３６に進む。
【０１３５】
例えば、対象単語が「鈴木」であり、「＄人名＄」という変数に置換された場合、変数単語対応マップとして、「鈴木」に対応付けて「＄人名＄」が記憶される。
【０１３６】
ステップＳ３６において、入力文のすべての単語を対象単語としたかどうかを判定し、入力文のすべての単語を対象単語としていないと判定された場合、ステップＳ３２に戻り、入力文の次の単語を、新たに対象単語として、上述した処理を繰り返す。
【０１３７】
また、ステップＳ３６において、入力文のすべての単語を対象単語としたと判定された場合、単語変数置換部１３１は、ステップＳ３３とＳ３４のそれぞれで変数に置換した後の変数付き入力文を、マッチング部１３４に供給し、ステップＳ３７に進む。
【０１３８】
なお、ステップＳ３２乃至Ｓ３６においては、１つの単語の置換も行われない場合もある。この場合、入力文が、そのまま、変数付き入力文として、単語変数置換部１３１からマッチング部１３４に供給され、変数単語対応マップ記憶部１３３には何も記憶されない。
【０１３９】
ステップＳ３７において、マッチング部１３４は、単語変数置換部１３１から供給される変数付き入力文を、図６のマッチング用データ生成部１１４と同様に、ベクトルに変換する。マッチング部１３４は、マッチング用データ記憶部１３５に記憶された変数付き入出力ペアのマッチング用データそれぞれと、変数付き入力文のベクトルとのマッチングを行い、各変数付き入出力ペアについて、変数付き入力文との類似度を算出する。マッチング部１３４は、類似度と変数付き入出力ペアの番号を対応付け、類似度の高い順に並べた類似度のリストを変数単語置換部１３６に供給する。
【０１４０】
ステップＳ３７の処理後は、ステップＳ３８に進み、変数単語置換部１３６は、マッチング部１３４から供給される類似度のリストに基づいて、最も類似度の高い変数付き入出力ペアの番号を選択し、変数付き入出力ペア記憶部１３７から、選択した番号の変数付き入出力ペアの出力例を読み出す。
【０１４１】
ステップＳ３８の処理後は、ステップＳ３９に進み、変数単語置換部１３６は、ステップＳ３８で読み出された変数付き入出力ペアの出力例に、変数があるかどうかを判定し、変数付き入出力ペアの出力例に、変数がないと判定した場合、ステップＳ４４に進む。
【０１４２】
この場合、ステップＳ４４では、変数単語置換部１３６は、ステップ３８で読み出された変数付き入出力ペアの出力例、即ち、変数を含んでいない出力例を、そのまま応答文として出力部９４（図５）に出力する。
【０１４３】
一方、ステップＳ３９において、変数付き入出力ペアの出力例に、変数があると判定された場合、ステップＳ４０に進み、変数単語対応マップ記憶部１３３に記憶されている変数単語対応マップに、出力例の変数に一致する変数があるかどうかを判定する。
【０１４４】
ステップＳ４０において、変数単語対応マップに、出力例の変数に一致する変数がないと判定された場合、ステップＳ４１に進み、マッチング部１３４から供給される類似度のリストに基づいて、次に類似度の高い変数付き入出力ペアの番号を、新たな変数付き入出力ペアの番号として選択し、変数付き入出力ペア記憶部１３７から、選択した番号の変数付き入出力ペアの出力例を読み出す。そして、ステップＳ４１からステップＳ３９に戻り、以下、同様の処理が繰り返される。
【０１４５】
一方、ステップＳ４０において、変数単語対応マップに出力例の変数に一致する変数があると判定された場合、ステップＳ４２に進み、変数単語置換部１３６は、出力例の変数を、変数単語対応マップでその変数に一致する変数と対応付けられている単語に置換する。
【０１４６】
例えば、選択された出力例が「へー  、＄人名＄  さん  って  いう  ん  だ  。」で、変数単語対応マップにおいて、「＄人名＄」という変数に、「鈴木」という単語が対応付けられている場合、変数単語置換部１３６は、出力例の「＄人名＄」を「鈴木」に置換し、「へー  、  鈴木  さん  って  いう  ん  だ  。」にする。
【０１４７】
ステップＳ４２の処理後は、ステップＳ４３に進み、変数単語置換部１３６は、出力例のすべての変数を単語に置換したかどうかを判定し、すべての変数を単語に置換していないと判定した場合、ステップＳ４０に戻り、出力例の変数のうち、まだ単語に置換されていない１つの変数を対象に、上述した処理が繰り返される。
【０１４８】
一方、ステップＳ４３において、出力例のすべての変数を単語に置換したと判定された場合、ステップＳ４４に進み、変数単語置換部１３６は、置換後の出力例を、応答文として出力部９４（図５）に出力する。
【０１４９】
例えば、変数付き入力文が「冬  に  ＄料理＄  で  有名  な  ＄地名＄  に  行き  まし  た」(変数置換前の入力文が「冬  に  キリタンポ  で  有名  な  秋田  に  行き  まし  た」)であり、変数単語対応マップで「＄地名＄」と「秋田」とが対応付けられているとともに、「＄料理＄」と「キリタンポ」とが対応付けられている場合において、出力例「＄地名＄  に  は  行っ  た  こと  が  ない  なぁ」の変数付き入出力ペアの番号が選択されたとき、変数単語置換部１３６は、ステップＳ４２において、出力例の変数である「＄地名＄」を、変数単語対応マップの「＄地名＄」に対応付けられている「秋田」に置換し、「秋田  に  は  行っ  た  こと  が  ない  なぁ」とする。これにより、「冬  に  キリタンポ  で  有名  な  秋田  に  行き  まし  た」という入力文に対する応答文として、「秋田  に  は  行っ  た  こと  が  ない  なぁ」を出力することができる。図１６の応答生成処理によれば、このように、入力文にある「秋田」という地名が応答文に含められるので、ユーザに、自分が入力した入力文を、ロボット１１が理解していると感じさせることができる。
【０１５０】
また、例えば、入力例が「＄地名＄  で  は  冬  の  ＄行事＄  が  有名  だ  よ  ね」（変数置換前の入力例が「札幌  で  は  冬  の  雪まつり  が  有名  だ  よ  ね」）であり、出力例が「僕  なんか  ＄行事＄  を  見  に  何回  も  ＄地名＄  に  行っ  た  よ」(変数置換前の出力例が「僕  なんか  雪まつり  を  見  に  何回  も  札幌  に  行ったよ。」)である変数付き入出力ペアと、入力例が「＄地名＄  で  は  金閣寺  が  有名  だ  よ  ね」（変数置換前の入力例が「京都  で  は  金閣寺  が  有名  だ  よ  ね」）であり、出力例が「＄地名＄  に  は  行っ  た  こと  が  ない  なぁ」(変数置換前の入力例が「京都  に  は  行っ  た  こと  が  ない  なぁ」)である変数付き入出力ペアが、変数付き入出力ペア記憶部１３７に記憶されているとする。
【０１５１】
そして、「冬  に  キリタンポ  で  有名  な  秋田  に  行き  まし  た」という入力文が入力部９１から供給され、単語変数置換部１３１が、その入力文を「冬  に  ＄料理＄  で  有名  な  ＄地名＄  に  行き  まし  た」という変数付き入力文に置換したとする。このとき、変数単語対応マップでは、「＄料理＄」が「キリタンポ」に、「＄地名＄」が「秋田」に対応付けられる。そして、その変数付き入力文が、「＄地名＄  で  は  冬  の  ＄行事＄  が  有名  だ  よ  ね」という入力例との類似度が最も高いとき、まず最初に、ステップＳ３８において、「＄地名＄  で  は  冬  の  ＄行事＄  が  有名  だ  よ  ね」という入力例の入出力ペアの番号が選択される。
【０１５２】
入力文との類似度の最も高い変数付き入出力ペアの出力例である「僕  なんか  ＄行事＄  を  見  に  何回  も  ＄地名＄  に  行っ  た  よ」は、「＄行事＄」と「＄地名＄」という変数を含んでいるが、いまの場合、変数単語対応マップ記憶部１３３に記憶された変数単語対応マップには、「＄行事＄」という変数がないので、出力例の変数「＄行事＄」を単語に置換することができない。この場合、例えば、「＄地名＄  で  は  金閣寺  が  有名  だ  よ  ね」という入力例の類似度が次に高いとすれば、その入力例の変数付き入出力ペアの番号が、新たに選択される（ステップＳ４１）。
【０１５３】
この場合、入力文との類似度が２番目に高い変数付き入出力ペアの出力例である「＄地名＄  に  は  行っ  た  こと  が  ない  なぁ」は、変数「＄地名＄」のみを含んでおり、変数単語対応マップ記憶部１３３の変数単語対応マップには、その変数「＄地名＄」と同一の変数「＄地名＄」が、単語「秋田」に対応付けられて記憶されている。従って、出力例「＄地名＄  に  は  行っ  た  こと  が  ない  なぁ」の変数「＄地名＄」が単語「秋田」に置換され、その結果得られる「秋田には行ったことがないなぁ」が応答文として出力される。
【０１５４】
以上のように、出力例の変数を置換することができる場合に、その出力例を応答文として用いるので、例えば、「僕  なんか  ＄行事＄  を  見  に  何回  も  ＄地名＄  に  行っ  た  よ」のように、置換することができない変数「＄行事＄」を含む出力例を、応答文として出力することを防止することができる。
【０１５５】
図１７と図１８は、図１５の変数単語対応マップ記憶部１３３に記憶されている変数単語対応マップの例を示している。
【０１５６】
即ち、図１７は、単語分割後の入力文が「鈴木  と  は  私  の  こと  です  。」であり、図１２の単語変数対応マップに基づいて、単語変数置換部１３１が、入力文の単語を変数に置換した場合の変数単語対応マップの例を示している。
【０１５７】
図１２の単語変数対応マップには、「鈴木」という単語に「＄人名＄」という変数が対応付けられているので、単語変数置換部１３１は、入力文の「鈴木」を「＄人名＄」に置換して、「＄人名＄  と  は  私  の  こと  です  。」という変数付き入力文をマッチング部１３４に供給する。そして、図１７に示すように、単語変数置換部１３１は、置換後の変数である「＄人名＄」と置換前の単語である「鈴木」を対応付けて、変数単語対応マップとして、変数単語対応マップ記憶部１３３に記憶させる。
【０１５８】
図１８は、単語分割後の入力文が「鈴木  と  同期  の  高橋  で  、  東京  出身  です  。」であり、図１２の単語変数対応マップに基づいて、単語変数置換部１３１が、入力文の単語を変数に置換した場合の変数単語対応マップの例を示している。
【０１５９】
図１２の単語変数対応マップには、「鈴木」と「高橋」という単語にそれぞれ「＄人名＄」という変数が対応付けられ、「東京」という単語に「＄地名＄」という変数が対応付けられているので、単語変数置換部１３１は、入力文の単語である「鈴木」を「＄人名＄」という変数に、「高橋」を「＄人名２＄」という変数に、「東京」を「＄地名＄」という変数に置換して、「＄人名＄  と  同期  の  ＄人名２＄  で  、  ＄地名＄  出身  です  。」という変数付き入力文をマッチング部１３４に供給する。そして、図１８に示すように、単語変数置換部１３１は、置換後の変数である「＄人名＄」と置換前の単語である「鈴木」、置換後の変数である「＄人名２＄」と置換前の単語である「高橋」、置換後の変数である「＄地名＄」と置換前の単語である「東京」を、それぞれ対応付けて、変数単語対応マップとして、変数単語対応マップ記憶部１３３に記憶させる。
【０１６０】
なお、単語変数置換部１１３（図６）と同様に、単語変数置換部１３１は、例えば、「＄人名＄  ＄人名２＄」のように連続して同一種類の変数に置換する場合、それらをまとめて「＄人名＄」にさらに置換してもよい。例えば、「佐藤  太郎」という単語が、「＄人名＄  ＄人名２＄」という変数に置換される場合、「＄人名＄  ＄人名２＄」という変数をさらに「＄人名＄」に置換してもよい。この場合、変数単語対応マップでは、「＄人名＄」に「佐藤  太郎」が対応付けられる。
【０１６１】
次に、図１９と図２０を参照して、図１６のステップＳ３７でマッチング部１３４が行うマッチングについて説明する。
【０１６２】
図１９は、「＄人名＄  と  は  私  の  こと  です  。」という変数付き入力文が単語変数置換部１３１から供給された場合に、マッチング部１３４が、その変数付き入力文を変換したベクトルの例を示している。
【０１６３】
なお、ここでは、マッチング用データは、例えば、図１４に示したマッチング用データに、変数付き入力文にだけ含まれる単語である「と」と「こと」に対応する要素を追加したものとなっており、このため、図１９では、変数付き入力文が、図１４に示したマッチング用データのベクトルの要素に「と」と「こと」という単語に対応する要素を追加した要素のベクトルに変換されている。
【０１６４】
即ち、図１９のベクトルは、変数付き入力文の単語である「＄人名＄」、「さん」、「の」、「最近」、「調子」、「は」、「どう」、「？」、「私」、「＄人名＄」、「です」、「。」、「今日」、「具合」、「か」、「と」、および「こと」を要素とするベクトルであり、図１９の表の中の数字は、その要素の値を表している。
【０１６５】
図１９の変数付き入力文は、「＄人名＄  と  は  私  の  こと  です  。」であり、変数付き入力文には、「＄人名＄」、「と」、「は」、「私」、「の」、「こと」、「です」、および「。」という単語がそれぞれ１つずつあるので、変数付き入力文のベクトルは、図１９に示すように、「＄人名＄」、「と」、「は」、「私」、「の」、「こと」、「です」、および「。」という単語に対応する要素の値が「１」で、その他の単語である「佐藤」、「さん」、「最近」、「調子」、「どう」、「？」、「今日」、「具合」、および「か」に対応する要素の値が「０」のベクトルとなっている。
【０１６６】
次に、図２０を参照して、図１９のベクトルと、図１４の変数付き入出力ペア＃１のマッチング用データとを用いた、変数付き入出力ペア＃１（の入力例）についての、入力文との類似度の計算方法について説明する。
【０１６７】
図１４に示すように、変数付き入出力ペア＃１のマッチング用データは、「佐藤」、「さん」、「最近」、「調子」、「は」、「どう」、および「？」という単語に対応する要素の値が「１」で、「の」という単語に対応する要素の値が「２」で、その他の単語「私」、「＄人名＄」、「です」、「。」、「今日」、「具合」、および「か」に対応する要素の値が「０」のベクトルである。なお、図２０の変数付き入出力ペア＃１のマッチング用データには、図１４の変数付き入出力ペア＃１のマッチング用データに、図１９の変数付き入力文だけに含まれる単語である「と」と「こと」に対応する要素が追加されている。変数付き入出力ペア＃１には、「と」と「こと」という単語は存在しないので、「と」と「こと」に対応する要素の値は「０」となっている。また、図１９に示すように、変数付き入力文のベクトルは、「＄人名＄」、「と」、「は」、「の」、「こと」、「です」、および「。」という単語に対応する要素の値が、「１」で、「佐藤」、「さん」、「最近」、「調子」、「どう」、「？」、「今日」、「具合」、および「か」という単語に対応する要素の値が「０」のベクトルである。
【０１６８】
マッチング部１３４は、例えば、図２０に示すように、「と」と「こと」に対応する要素が追加された変数付き入出力ペア＃１のマッチング用データであるベクトルと、変数付き入力文のベクトルとの角度θに対する余弦(コサイン)であるcosθを類似度として算出する。ここで、cosθは、要素追加後の変数付き入出力ペア＃１のベクトルと変数付き入力文のベクトルの内積を、要素追加後の変数付き入出力ペア＃１のベクトルの大きさと変数付き入力文のベクトルの大きさとの積で除算することにより求めることができる。図２０では、変数付き入力文と変数付き入出力ペア＃１との類似度は、約0.32となる。
【０１６９】
なお、図１９と図２０のベクトルには、図１４のマッチング用データには存在しない「と」と「こと」に対応する要素が含まれているが、図１９と図２０のベクトルは、図１４のマッチング用データと同一の要素のベクトルにすることもできる。この場合、図１４のマッチング用データに含まれる要素に対応する単語以外の単語である「と」と「こと」が、変数付き入力文にそれぞれ何個ずつ存在するかを抽出し、その個数を用いることにより、図２０で計算された類似度と同一の類似度を求めることができる。
【０１７０】
即ち、新しく追加する要素に対応する「と」と「こと」という単語は、変数付き入出力ペア＃１の入力例には存在しない単語であるため、変数付き入出力ペア＃１のマッチング用データの「と」と「こと」という単語に対応する要素の値は、必ず「０」となる。従って、「と」と「こと」という単語に対応する要素が、変数付き入出力ペア＃１のベクトルと変数付き入力文のベクトルに含まれない場合においても、変数付き入出力ペア＃１のベクトルと変数付き入力文のベクトルの内積は、変数付き入出力ペア＃１のベクトルと変数付き入力文のベクトルに、「と」と「こと」に対応する要素が含まれる場合のそれと同一となる。また、「と」と「こと」という単語に対応する要素が、変数付き入出力ペア＃１のベクトルに含まれない場合においても、変数付き入出力ペア＃１のベクトルは、変数付き入出力ペア＃１に、「と」と「こと」に対応する要素が含まれる場合のそれと同一となり、変数付き入出力ペア＃１のベクトルの大きさは変化しない。
【０１７１】
さらに、「と」と「こと」が、変数付き入力文にそれぞれ何個ずつ存在するか、即ち、「と」と「こと」という単語に対応する要素の値がいくつかによって、変数付き入力文のベクトルの大きさが変化するので、「と」と「こと」が、変数付き入力文にそれぞれ何個ずつ存在するかを抽出し、その個数を用いて変数付き入力文のベクトルの大きさを計算することにより、変数付き入力文のベクトルに「と」と「こと」という要素が含まれない場合においても、計算された変数付き入力文のベクトルの大きさは、変数付き入力文のベクトルに「と」と「こと」という要素が含まれる場合のそれと同一となる。以上のように、「と」と「こと」が、変数付き入力文にそれぞれ何個ずつ存在するかを抽出し、その個数を用いることにより、図２０で計算された類似度と同一の類似度を求めることができる。
【０１７２】
以上のような類似度の計算方法によれば、マッチング用データであるベクトルと、変数付きの入力文のベクトルとの方向の一致性が高いほど、類似度が高くなる。なお、類似度の計算方法は、図２０で説明した方法に限定されるものではない。
【０１７３】
次に、図２１Ａと図２１Ｂを参照して、図１５の変数単語置換部１３６の処理を、さらに説明する。
【０１７４】
図２１Ａは、マッチング部１３４から変数単語置換部１３６に供給される類似度のリストの例を示している。
【０１７５】
図２０で説明したように、マッチング部１３４は、変数付き入力文のベクトルと変数付き入出力ペアのマッチング用データとの類似度を算出する。そして、マッチング部１３４は、その算出した類似度と変数付き入出力ペアの番号を対応付け、類似度の高い順に並べた類似度のリストを、変数単語置換部１３６に供給する。
【０１７６】
図２１Ａの類似度のリストでは、図１４の変数付き入出力ペア＃１乃至＃３それぞれについて類似度が計算され、変数付き入出力ペア＃２の類似度が0.79に、変数付き入出力ペア＃３の類似度が0.38に、変数付き入出力ペア＃１の類似度が0.32に、それぞれなっている。
【０１７７】
図２１Ｂは、図１５の変数付き入出力ペア記憶部１３７に記憶された変数付き入出力ペアの例を示している。
【０１７８】
変数単語置換部１３６は、図２１Ａの類似度のリストがマッチング部１３４から供給された場合、そのうちの、最も類似度の高い変数付き入出力ペア＃２の番号を選択し、その番号の変数付き入出力ペア＃２の出力例である「へー  、＄人名＄  さん  って  言う  ん  だ  。」を、変数付き入出力ペア記憶部１３７に記憶された図１５の変数付き入出力ペアの中から読み出す。
【０１７９】
図２２は、図６の単語変数対応マップ記憶部１１２または図１５の単語変数対応マップ１３２に記憶される単語変数対応マップの他の例を示している。
【０１８０】
図２２の単語変数対応マップでも、図１２の単語変数対応マップと同様に、単語が、その単語の意味を表す変数に対応付けられている。例えば、「赤」や「青」という単語は、色を表す単語であるので、「赤」や「青」という単語には、「＄色＄」という変数が対応付けられている。同様に、「大きい」や「小さい」という単語は、大きさを表す単語であるので、「大きい」や「小さい」という単語には、「＄大きさ＄」という変数が対応付けられている。また、「重い」という単語は、重さを表す単語であるので、「＄重さ＄」という変数が対応付けられている。
【０１８１】
図２２の単語変数対応マップが用いられることにより、「好きな色は赤です」という入力例と「へぇー、赤が好きなんだ」という出力例の入出力ペアがある場合、マッチング用データ作成部９２では、その入出力ペアが、「好き  な  色  は  ＄色＄  です」という入力例と「へぇー  、  ＄色＄  が  好き  な  ん  だ」という出力例の変数付き入出力ペアに置換される。従って、例えば、「好きな色は青です」という入力文がある場合、「へぇー、青が好きなんだ」という応答文を出力することができる。
【０１８２】
図２３は、図６の単語変数対応マップ記憶部１１２または図１５の単語変数対応マップ１３２に記憶されている単語変数対応マップのさらに他の例を示している。
【０１８３】
図２３の単語変数対応マップでは、細品詞が、細品詞を表す変数に対応付けられている。例えば、固有名詞という細品詞には、「＄固有名詞＄」という変数が対応付けられている。
【０１８４】
図２４Ａと図２４Ｂを参照して、図２３の単語変数対応マップを用いた単語変数置換部１１３の処理について説明する。
【０１８５】
単語変数置換部１１３は、入出力ペアの入力例と出力例それぞれを、細品詞に分類する。
【０１８６】
即ち、図２４Ａは、「昨日  、  頑張っ  て  勉強  し  た  ん  です」という入力例の単語が、細品詞に分類された例である。
【０１８７】
例えば、「昨日」という単語は、名詞の中でも「副詞可能名詞」という細品詞に分類される。また、「勉強」という単語は、名詞の中でも「サ変名詞」という細品詞に分類される。
【０１８８】
図２４Ｂは、図２４Ａの「昨日  、  頑張っ  て  勉強  し  た  ん  です」という入力例とペアの出力例である「勉強  する  なんて  えらい  ね」の単語が、細品詞に分類された例である。
【０１８９】
例えば、「勉強」という単語は、名詞の中でも「サ変名詞」という細品詞に分類される。また、「する」という単語は、動詞の中でも「自立」という細品詞に分類される。
【０１９０】
ここで、図２４Ａや図２４Ｂに示した細品詞の分類は、例えば、茶筅などの単語分割ソフトウェアにより行うことができる。
【０１９１】
図６の単語変数置換部１１３が、図２３に示した単語変数対応マップに基づいて、「昨日  、  頑張っ  て  勉強  し  た  ん  です」という入力例と、「勉強  する  なんて  えらい  ね」という出力例との入出力ペアの単語を変数に置換する場合、共通単語である「勉強」という単語がサ変名詞であるため、対応する「＄サ変名詞＄」という変数に置換される。これにより、入出力ペアは、「昨日  、  頑張っ  て  ＄サ変名詞＄  し  た  ん  です」という入力例と、「＄サ変名詞＄  する  なんて  えらい  ね」という出力例との変数付き入出力ペアにされる。
【０１９２】
ここで、「昨日、頑張って料理してみたんです」という入力文が入力部９１から入力された場合、例えば、「料理」はサ変名詞であるので、「料理」が「＄サ変名詞＄」に置換され、入力文は、「昨日、頑張っ  て  ＄サ変名詞＄  して  みた  ん  です」という変数付き入力文になる。そして、最も類似度の高い変数付き入出力ペアの入力例が、上述した「昨日  、  頑張っ  て  ＄サ変名詞＄  し  た  ん  です」である場合、その入力例と入出力ペアになっている出力例「＄サ変名詞＄  する  なんて  えらい  ね」の「＄サ変名詞＄」という変数が、「料理」という単語に置換され、「料理  する  なんて  えらい  ね」という応答文が出力される。
【０１９３】
即ち、「昨日、頑張って料理してみたんです」という入力文に対して、「料理するなんてえらいね」という応答文を出力することができる。
【０１９４】
また、例えば、「昨日、チョコバナナって高いと思ったんです。」という入力文が、ユーザにより入力された場合、「チョコバナナ」はサ変名詞ではないので、「＄サ変名詞＄」には置換されない。従って、「チョコバナナするなんてえらいね」という間違った単語を含む応答文は出力されない。
【０１９５】
なお、図２３に示した細品詞と変数との対応関係を表す単語変数対応マップが用いられる場合、単語変数置換部１１３は、図９のステップＳ１５のルールに基づいて共通単語の置換を行う処理で、数字の置換を行う必要がなくなる（ただし、数字に時間などの単位が付加されている場合は別である）。即ち、図２３に示した細品詞には、数詞が含まれており、「数詞」という細品詞には、「＄数詞＄」という変数が対応付けられているので、図９のステップＳ１３の単語変数対応マップに基づいて共通単語の置換を行う処理で、数詞という細品詞である数字は、「＄数詞＄」という変数に置換することができる。
【０１９６】
図２５は、図６の単語変数対応マップ記憶部１１２または図１５の単語変数対応マップ１３２に記憶されている単語変数対応マップのさらに他の例を示している。
【０１９７】
図２５の単語変数対応マップでは、単語に、＄マークを先頭と終わりに配置した変数の代わりに、「○」や「△」などの記号が変数として対応付けられている。図２５の単語変数対応マップでは、例えば、「佐藤」という単語に「○」という記号が変数として対応付けられている。
【０１９８】
なお、図９のステップＳ１３の処理とステップＳ１５の処理は、いずれか１つが行われるようにしてもよい。即ち、ステップＳ１３の単語変数対応マップに基づく置換のみが行われたり、ステップＳ１５のルールに基づく置換のみが行われるようにしてもよい。
【０１９９】
また、図６のマッチング用データ生成部１１４で変数付き入出力ペアをマッチング用データに変換せず、図１５のマッチング部１３４でマッチング用データに変換することもできる。この場合、図６のマッチング用データ生成部１１４と図１５のマッチング用データ記憶部１３５を削減することができる。この方法は、例えば、マッチング用データを頻繁に変更するような場合に望ましい。
【０２００】
さらに、図１５のマッチング部１３４で行うマッチングの方法は、上述した方法に限定されない。他のマッチングの方法としては、例えば、ユーザからの入力文からいくつかのキーワードを抽出して、変数付き入出力ペア、入力例、または出力例から、そのキーワードを文書検索やgrepにより検索し、その検索結果をマッチング結果として出力する方法がある。
【０２０１】
また、図９のステップＳ１１で入出力ペアを単語に分割することなく、共通単語を抽出し、その共通単語を対応する変数に置換することもできる。この場合、図１６のステップＳ３１において、単語変数置換部１３１は、入力文を単語に分割せず、入力文中の単語変数対応マップに含まれる単語を、対応する変数に置換し、変数付き入力文と変数付き入出力ペアとのマッチングを行う。この場合のマッチングの方法としては、例えば、変数付き入出力ペアの入力例から変数付き入力文に編集する際に、文字の置き換えや入れ換えが最低で何回必要かによって決まる文字の最小編集距離を求める方法、変数付き入出力ペアの入力例と変数付き入力文の文字同士を対応させ、一致、置換、挿入、または削除に分類し、類似度を求める方法（ＤＰ（Dynamic Programming）マッチング）がある。
【０２０２】
ここで、マッチングの方法として、最小編集距離を求める方法を採用した場合、図１５の変数単語置換部１３６は、図１６のステップＳ３８において、最小編集距離が最も小さい入出力ペアの番号を選択する。一方、マッチングの方法として、ＤＰマッチングを採用した場合、変数単語置換部１３６は、類似度の最も高い入力例の入出力ペアの番号を選択する。
【０２０３】
例えば、入出力ペアの入力例が「私の名前は佐藤です」で、出力例が「佐藤さんですね」である場合、単語変数置換部１１３は、入力例と出力例の共通の文字列として「佐藤」を抽出する。そして、図１２に示した単語変数対応マップが単語変数対応マップ記憶部１１２に記憶されている場合、単語変数置換部１１３は、入力例と出力例の「佐藤」を「＄人名＄」に置換し、入力例が「私の名前は＄人名＄です」で、出力例が「＄人名＄さんですね」である変数付き入出力ペアを出力する。ここで、例えば、共通の文字列が「佐藤さん」であった場合においても、共通の文字列に図１２で示した単語変数対応マップに登録されている「佐藤」を含んでいるので、「佐藤」を「＄人名＄」に変換し、「佐藤さん」を「＄人名＄さん」に置換することができる。即ち、共通の文字列が、単語変数対応マップに登録されている単語よりも長い文字列である場合であっても、その共通の文字列に含まれる単語変数対応マップに登録されている単語を置換することができる。
【０２０４】
なお、入出力ペアの入力例が「私の名前は佐藤です」で、出力例が「佐藤さんは鈴木さんとお知り合いなんですか？」である場合、単語変数置換部１１３は、入力例と出力例の共通の文字列として「佐藤」を抽出する。そして、図１２に示した単語変数対応マップが単語変数対応マップ記憶部１１２に記憶されている場合、単語変数置換部１１３は、入力例と出力例の「佐藤」を「＄人名＄」に置換するが、出力例には、「鈴木」という単語変数対応マップに記憶されているが、共通の文字列には含まれない単語(入力例にない単語)が存在するので、入出力ペアを破棄する。
【０２０５】
例えば、ユーザから「私の名前は高橋といいます」という入力文が入力されたとき、単語変数置換部１３１は、図１２に示した単語変数対応マップに基づいて、「高橋」を「＄人名＄」に置換し、「私の名前は＄人名＄といいます」という変数付き入力文を、マッチング部１３４に供給する。
【０２０６】
入力例が「私の名前は＄人名＄です」で、出力例が「＄人名＄さんですね」である変数付き入出力ペアがある場合、マッチング部１３４は、「私の名前は＄人名＄といいます」という変数付き入力文と、「私の名前は＄人名＄です」という変数付き入出力ペアの入力例とのマッチングを行う。マッチングの方法として、最小編集距離を求める方法が採用されているとすると、入力例の「私」、「の」、「名」「前」、「は」、「＄人名＄」、および「す」は、変数付き入力文と一致しており、また変数付き入力ペアの入力例から変数付き入力文に編集するためには、変数付き入力ペアの「と」を「で」に置換して、「い」「い」「ま」を加えればよいので、置換や不足の数を最小編集距離とする場合には、最小編集距離として４が求められる。
【０２０７】
最小編集距離が最も小さい入力例が、「私の名前は＄人名＄です」である場合、変数単語置換部１３６は、その入力例とペアの出力例である「＄人名＄さんですね」の「＄人名＄」という変数を「高橋」に置換し、「高橋さんですね」という応答文を出力する。
【０２０８】
また、変数付き入出力ペアの入力例と変数付き入力文には、変数のほかに、変数に置換する前の単語を残しておくようにすることもできる。即ち、単語変数置換部１１３と単語変数置換部１３１は、入力例または入力文の単語を、その単語を付加した変数に置換することもできる。この場合、変数だけでなく、変数に置換する前の単語もマッチングに利用することができるので、間違った単語を含む応答文を出力することをさらに防止することができる。
【０２０９】
例えば、「東京に遊びに行ってきました」という入力例および「東京って日本の首都だよね」という出力例の入出力ペアと、「大阪に遊びに行ってきました」という入力例および「大阪ってたこ焼きがが有名だよね」という出力例の入出力ペアについて、図１２の単語変数対応マップに基づき、変数のほかに、変数に置換する前の単語を残しておくように、変数への置換を行うと、「東京＄地名＄に遊びに行ってきました」という入力例および「＄地名＄って日本の首都だよね」という出力例の変数付き入出力ペアと、「大阪＄地名＄に遊びに行ってきました」という入力例および「＄地名＄ってたこ焼きが有名だよね」という出力例の変数付き入出力ペアが得られる。
【０２１０】
この場合、例えば、「大阪に行ってきました」という入力文がユーザから入力された場合、「東京＄地名＄に遊びに行ってきました」という入力例に比べて、「大阪＄地名＄に遊びに行ってきました」という入力例の方が、「大阪」という単語がマッチするので、類似度が高くなり、「大阪＄地名＄に遊びに行ってきました」という入力例と入出力ペアになっている出力例にしたがって、「大阪ってたこ焼きが有名だよね」という応答文を出力することができる。
【０２１１】
これに対して、変数のほかに変数に置換する前の単語を残しておかない場合、「＄地名＄って日本の首都だよね」という出力例に対応する入力例と、「＄地名＄ってたこ焼きが有名だよね」という出力例に対応する入力例とは、いずれも「＄地名＄に遊びに行ってきました」となり、同一になる。従って、「大阪に行ってきました」という入力文がユーザから入力されると、「＄地名＄って日本の首都だよね」という出力例の入出力ペアが選択されることがあり、この場合「大阪って日本の首都だよね」という間違った単語を含む応答文が出力される。
【０２１２】
なお、上述の説明において、単語とは、上述した処理において、１つのまとまりとして扱った方がよい単位のことであり、言語学的な単語とは必ずしも一致しない。
【０２１３】
また、上述の説明の「例」や「文」はユーザの発話をそのまま用いたものに限らない。例えば、「こんにちは。今日はいい天気ですね。遊びにでも行きませんか？」という発言が対話ログの中に存在した場合、発言の一部である「いい天気ですね。」を入力例としてもよいし、発言の複数の文を組み合わせることにより作成された「こんにちは。遊びにでも行きませんか？」を入力例としてもよい。また、複数の発言を複合したものや、人為的に作成、追加したものを「例」や「文」とすることもできる。
【０２１４】
次に、上述した一連の処理は、専用のハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
【０２１５】
そこで、図２６は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【０２１６】
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク９０５やROM９０３に予め記録しておくことができる。
【０２１７】
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)，MO(Magneto Optical)ディスク，DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体９１１に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体９１１は、いわゆるパッケージソフトウエアとして提供することができる。
【０２１８】
なお、プログラムは、上述したようなリムーバブル記録媒体９１１からコンピュータにインストールする他、ダウンロードサイトから、デジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部９０８で受信し、内蔵するハードディスク９０５にインストールすることができる。
【０２１９】
コンピュータは、CPU(Central Processing Unit)９０２を内蔵している。CPU９０２には、バス９０１を介して、入出力インタフェース９１０が接続されており、CPU９０２は、入出力インタフェース９１０を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部９０７が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)９０３に格納されているプログラムを実行する。あるいは、また、CPU９０２は、ハードディスク９０５に格納されているプログラム、衛星若しくはネットワークから転送され、通信部９０８で受信されてハードディスク９０５にインストールされたプログラム、またはドライブ９０９に装着されたリムーバブル記録媒体９１１から読み出されてハードディスク９０５にインストールされたプログラムを、RAM(Random Access Memory)１０４にロードして実行する。これにより、CPU９０２は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU９０２は、その処理結果を、必要に応じて、例えば、入出力インタフェース９１０を介して、CRT（Cathode Ray Tube），LCD(Liquid Crystal Display)、スピーカ等で構成される出力部９０６から出力、あるいは、通信部９０８から送信、さらには、ハードディスク９０５やリムーバブル記録媒体９１１に記録等させる。
【０２２０】
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。
【０２２１】
また、プログラムは、１のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
【０２２２】
ところで、非特許文献１と２の発明は、図１で説明したように、対話ログをそのまま利用して、応答文を出力するのに対し、図６のマッチング用データ作成部９２は、対話ログから入出力ペアを作成し、その入出力ペアに基づいて応答文を出力する。図１の対話ログは、発言が、その発言の順番どおりに並んでいるので、非特許文献１と２の発明では、対話ログの発言の順序を変更したり、発言を削除または挿入したりすると、ある発言の次の発言が、その前の発言の応答ではなくなってしまう不都合が生じる。一方、マッチング用データ作成部９２では、入力例と対応する出力例との入出力ペアを扱うので、自由に入出力ペアを削除しても、上述のような不都合は生じない。これにより、マッチング用データ作成部９２では、例えば、出力例に変数に置換することができない単語変数対応マップに含まれる単語が存在する場合、その出力例の入出力ペアを破棄することができ、上述したように、間違った単語を含む応答文を出力することを防止することができる。
【０２２３】
また、非特許文献１と２の発明は、キーワードまたは発話の働き、あるいは文の構造を用いてマッチングを行うが、図１５のマッチング部１３４は、変数付き入力例と変数付き入力文に対応するベクトルを用いてマッチングを行う。従って、非特許文献１と２の発明では、キーワードの選択、発話の働きの特定、文の構造の解析などの処理を行う必要があるが、図１５のマッチング部１３４は、それらの処理を行う必要がない。
【０２２４】
さらに、非特許文献１では、応答候補となる発言の単語を置換することができない場合、置換せずに、そのまま応答文として出力するが、応答生成部９３では、入力文との類似度に基づいて選択された変数付き入出力ペアの出力例の変数と一致する変数が入力文に存在しない場合、入力文の変数と一致する変数を含む出力例の変数付き入出力ペアが得られるまで、類似度に基づき、入出力ペアを選択し直し、その入出力ペアの出力例の変数を、その変数と一致する入力文の変数に対応する単語に置換して、応答文として出力する。このように、非特許文献１と２の発明では、応答候補となる発言の単語を置換することができない場合においても、１度選択した発言は変更せずにそのまま応答文として出力するが、応答生成部９３では、１度選択した出力例であっても、出力例の変数と一致する変数が入力文に存在しない場合、入力文の変数と一致する変数を含む出力例を選択し直して応答文を出力するので、間違った単語を含む応答文を出力する危険性を減らしつつ、入力文の単語を取り入れた応答文を出力することができる。
【０２２５】
また、非特許文献１の発明では、入力文と、それに対して出力した応答文を対話ログに追加し、再利用するが、マッチング用データ作成部９２では、出力した応答文が正しいかどうかがわからないので、再利用を行わない。但し、マッチング用データ作成部９２では、入力文と、それに対して出力した応答文を再利用するようにすることもできる。この場合、入力文を入力例、応答文を出力例として、新たに追加する入出力ペアの入力例に、いままでの入出力ペアの入力例には存在しなかった単語が存在する場合、マッチング用データを作成し直す必要がある。なお、マッチング用データを作成し直さず、いままでの入出力ペアの入力例には存在しなかった単語に対応する要素を、既に作成されているマッチング用データに追加することもできる。
【０２２６】
さらに、非特許文献２の発明では、同一の品詞の単語同士を置換するが、応答生成部９３では、出力例の変数を、変数付き入力文の同一の変数に対応する単語に置換する。従って、単語変数対応マップの作成の仕方によって様々な単語の置換が可能であり、例えば、出力例の人名を表す変数「＄人名＄」を、変数付き入力文の人名を表す変数「＄人名＄」に対応する単語に置換することができる。また、出力例の細品詞であるサ変名詞を表す変数「＄サ変名詞＄」を、変数付き入力文のサ変名詞を表す変数「＄サ変名詞＄」に対応する単語に置換することができる。
【０２２７】
なお、図５の入力部９１、応答生成部９３、および出力部９４と、マッチング用データ作成部９２とは、別の装置として構成し、マッチング用データ作成部９２で得られる変数付き入出力ペアや、マッチング用データを、応答生成部９３に記憶させるようにすることもできる。
【０２２８】
また、マッチング用データ作成部９２では、インターネット上のチャットや掲示板の対話ログを、適宜、無線または優先の通信により収集して変数付き入出力ペアやマッチング用データを更新することができる。
【０２２９】
さらに、本発明は、実際のロボットのほか、ディスプレイに表示される仮想的なキャラクタとの対話を行う装置（ソフトウェア）、翻訳を伴う対話システム、その他の対話システムに適用することが可能である。
【０２３０】
また、上述した説明における、単語の言語は、日本語に限定されない。
【図面の簡単な説明】
【０２３１】
【図１】対話ログのデータベースをそのまま用いて応答文を出力する方法によって対話を行う対話装置の一例を説明する図である。
【図２】対話ログから入出力ペアを作成し、その入出力ペアを用いて応答文を出力する方法によって対話を行う対話装置の一例を説明する図である。
【図３】本発明を適用したロボット制御システムを備えた２足歩行型のロボットの外観構成例を示す図である。
【図４】図３のロボットの電気的構成例を示す図である。
【図５】図４の対話制御システムの構成例を示すブロック図である。
【図６】図５のマッチング用データ作成部の詳細構成例を示すブロック図である。
【図７】入出力ペア抽出部に供給される対話ログの例を示す図である。
【図８】図７の対話ログから、入出力ペア抽出部が作成した入出力ペアの例を示す図である。
【図９】図６の単語変数置換部が行う単語変数変換処理を説明するフローチャートである。
【図１０】図９のステップＳ１１で、単語変数置換部により、図８の入出力ペアが単語に分割された後の入出力ペアの例を示す図である。
【図１１】図９のステップＳ１２で、単語変数置換部により、図１０の単語分割後の入出力ペアから抽出された共通単語を示す図である。
【図１２】単語変数対応マップ記憶部に記憶されている単語変数対応マップの例を示す図である。
【図１３】図９のステップＳ１７で、単語変数置換部により出力される変数付き入出力ペアの例を示す図である。
【図１４】図６のマッチング用データ生成部が出力するマッチング用データの例を示す図である。
【図１５】図５の応答生成部の詳細構成例を示すブロック図である。
【図１６】図１５の応答生成部９３が行う応答生成処理を説明するフローチャートである。
【図１７】図１５の変数単語対応マップ記憶部に記憶されている変数単語対応マップの例を示す図である。
【図１８】図１５の変数単語対応マップ記憶部に記憶されている変数単語対応マップの例を示す図である。
【図１９】図１６のステップＳ３７でマッチング部が行うマッチングについて説明する図である。
【図２０】図１６のステップＳ３７でマッチング部が行うマッチングについて説明する図である。
【図２１】図１５の変数単語置換部１３６の処理を、さらに説明する図である。
【図２２】図６または図１５の単語変数対応マップ記憶部に記憶されている単語変数対応マップの他の例を示す図である。
【図２３】図６または図１５の単語変数対応マップ記憶部に記憶されている単語変数対応マップのさらに他の例を示す図である。
【図２４】図２３の単語変数対応マップを用いた単語変数置換部の処理について説明する図である。
【図２５】図６または図１５の単語変数対応マップ記憶部に記憶されている単語変数対応マップのさらに他の例を示す図である。
【図２６】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
【０２３２】
６２  対話制御システム，  ９１  入力部，  ９２  応答生成部，  ９３  マッチング用データ作成部，  ９４  出力部，  １１１  入出力ペア抽出部，  １１２  単語変数対応マップ記憶部，  １１３  単語変数置換部，  １１４  マッチング用データ生成部，  １３１  単語変数置換部，  １３２  単語変数対応マップ記憶部，  １３３  変数単語対応マップ記憶部，  １３４  マッチング部，  １３５  マッチング用データ記憶部，  １３６  変数単語置換部，  １３７  変数付き入出力ペア記憶部，  ９０１  バス，  ９０２  CPU，  ９０３  ROM，  ９０４  RAM，  ９０５  ハードディスク，  ９０６  出力部，  ９０７  入力部，  ９０８  通信部，  ９０９  ドライブ，  ９１１  リムーバブル記録媒体
【図１】
2006018622.tif 000003
【図２】
2006018622.tif 000004
【図３】
2006018622.tif 000005
【図４】
2006018622.tif 000006
【図５】
2006018622.tif 000007
【図６】
2006018622.tif 000008
【図７】
2006018622.tif 000009
【図８】
2006018622.tif 000010
【図９】
2006018622.tif 000011
【図１０】
2006018622.tif 000012
【図１１】
2006018622.tif 000013
【図１２】
2006018622.tif 000014
【図１３】
2006018622.tif 000015
【図１４】
2006018622.tif 000016
【図１５】
2006018622.tif 000017
【図１６】
2006018622.tif 000018
【図１７】
2006018622.tif 000019
【図１８】
2006018622.tif 000020
【図１９】
2006018622.tif 000021
【図２０】
2006018622.tif 000022
【図２１】
2006018622.tif 000023
【図２２】
2006018622.tif 000024
【図２３】
2006018622.tif 000025
【図２４】
2006018622.tif 000026
【図２５】
2006018622.tif 000027
【図２６】
2006018622.tif 000028