(57)【要約】【課題】データベースの作成作業の負担を軽減し、自然な流れで、かつ、ユーザが楽しめるユニークな会話を実現する。【解決手段】小説などの会話文を含んだ既存の文章情報から会話として利用可能な文章を抽出し、これらの文章に各文章間の時間的、話題的な距離を示す時間関連情報を付加して会話文データベース１８を作成する。また、ニュース記事などの会話文を含まない既存の文章情報を利用して前記同様にして記事文データベース１９を作成する。ユーザの発言に対し、会話文データベース１８または記事文データベース１９から会話として適切な文章を時間関連情報に基づいて選出して発言する。このように、既存の文章情報を利用することでデータベースを簡易に作成でき、そのデータベースを用いて自然な流れで、しかも、ユニークな会話を行うことができる。【選択図】　　図１
2004070876.tif 000002
【特許請求の範囲】
【請求項１】
ユーザとの間で会話を行う会話システムであって、
既存の文章情報から会話として利用可能な文章を抽出する文章抽出手段と、
この文章抽出手段によって抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する時間関連情報算出手段と、
前記文章抽出手段によって抽出された各文章に前記時間関連情報算出手段によって算出された時間関連情報を付加して記憶するデータベースと、
ユーザの発言に対し、前記データベースから会話として適切な文章を前記時間関連情報に基づいて選択して発言する会話処理手段と
を具備したことを特徴とする会話システム。
【請求項２】
ユーザとの間で会話を行う会話システムであって、
既存の文章情報から会話として利用可能な文章を抽出する文章抽出手段と、
この文章抽出手段によって抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する時間関連情報算出手段と、
前記文章抽出手段によって抽出された各文章に前記時間関連情報算出手段によって算出された時間関連情報を付加して記憶するデータベースと、
ユーザの発言からキーワードを抽出するキーワード抽出手段と、
このキーワード抽出手段によって抽出されたキーワードを含む文章を前記データベースから検索し、その文章の時間関連情報との差分が所定値以下の文章を発言候補として選択する選択手段と、
この選択手段によって選択された文章を利用して発言する発言処理手段と
を具備したことを特徴とする会話システム。
【請求項３】
前記データベースの各文章には、時間関連情報と共に前回発言日時を示す情報が付加されており、
前記選択手段は、前記前回発言日時情報に基づいて所定日数以内に発言されていない文章を対象として発言候補の選択を行うことを特徴とする請求項２記載の会話システム。
【請求項４】
前記発言処理手段は、前記選択手段によって選択された文章から会話として不適切な部分を削除して発言することを特徴とする請求項２記載の会話システム。
【請求項５】
前記発言処理手段は、前記選択手段によって選択された文章から会話として不適切な部分を削除し、その削除後の文章に含まれるキーワードの数に応じて当該文章を複数に分割することにより、これらの分割文章のいずれかを発言することを特徴とする請求項２記載の会話システム。
【請求項６】
ユーザとの間で会話を行う会話システムであって、
会話文と非会話文とが混在する特定の文章情報を記憶する記憶手段と、
この記憶手段に記憶された文章情報の中からユーザの発言に含まれるキーワードを含んだ文章を検索する検索手段と、
この検索手段によって検索された文章が会話文であるか非会話文であるか判断する判断手段と、
この判断手段によって会話文であると判断された場合にそれ以後の会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択して発言する第１の発言処理手段と、
前記判断手段によって非会話文であると判断された場合にそれ以後の非会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択し、その文章から会話として不適切な部分を削除して発言する第２の発言処理手段と
を具備したことを特徴とする会話システム。
【請求項７】
ユーザとの間で会話を行う会話システムであって、
見出し語とそれに対応する説明文とからなる特定の辞書情報を記憶する記憶手段と、
この記憶手段に記憶された辞書情報の中からユーザの発言に含まれるキーワードを含んだ見出し語を検索する検索手段と、
この検索手段によって検索された見出し語に対応した説明文を前記辞書情報から抽出し、その説明文から会話として不適切な部分を削除して発言する第１の発言処理手段と
を具備したことを特徴とする会話システム。
【請求項８】
前記辞書情報の中にユーザの発言に含まれるキーワードを含んだ見出し語が存在しなかった場合に、前記辞書情報の中からランダムに見出し語を選出し、その見出し語に対応した説明文を利用して発言することで会話を継続させる第２の発言処理手段を備えたことを特徴とする請求項７記載の会話システム。
【請求項９】
ユーザとの間で会話を行うコンピュータに用いられる会話処理プログラムであって、
前記コンピュータに、
既存の文章情報から会話として利用可能な文章を抽出する機能と、
この抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する機能と、
前記抽出された各文章に前記時間関連情報を付加してデータベースに登録する機能と、
ユーザの発言に対し、前記データベースから会話として適切な文章を前記時間関連情報に基づいて選択して発言する機能と
を実行させるための会話処理プログラム。
【請求項１０】
ユーザとの間で会話を行うコンピュータに用いられる会話処理プログラムであって、
前記コンピュータに、
既存の文章情報から会話として利用可能な文章を抽出する機能と、
この抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する機能と、
前記各文章に前記時間関連情報を付加してデータベースに登録する機能と、
ユーザの発言からキーワードを抽出する機能と、
この抽出されたキーワードを含む文章を前記データベースから検索し、その文章の時間関連情報との差分が所定値以下の文章を発言候補として選択する機能と、
この選択された文章を利用して発言する機能と
を実行させるための会話処理プログラム。
【請求項１１】
ユーザとの間で会話を行う機能と、会話文と非会話文とが混在する特定の文章情報を記憶したメモリを備えたコンピュータに用いられる会話処理プログラムであって、
前記コンピュータに、
前記メモリに記憶された特定の文章情報の中からユーザの発言に含まれるキーワードを含んだ文章を検索する機能と、
この検索された文章が会話文であるか非会話文であるか判断する機能と、
会話文であると判断された場合にそれ以後の会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択して発言する機能と、
非会話文であると判断された場合にそれ以後の非会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択し、その文章から会話として不適切な部分を削除して発言する機能と
を実行させるための会話処理プログラム。
【請求項１２】
ユーザとの間で会話を行う機能と、見出し語とそれに対応する説明文とからなる特定の辞書情報を記憶したメモリを備えたコンピュータに用いられる会話処理プログラムであって、
前記コンピュータに、
前記メモリに記憶された辞書情報の中からユーザの発言に含まれるキーワードを含んだ見出し語を検索する機能と、
この検索された見出し語に対応した説明文を前記辞書情報から抽出し、その説明文から会話として不適切な部分を削除して発言する機能と
を実行させるための会話処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、会話型ロボット等の玩具類やテレビゲーム機などに用いられる会話システムであって、ユーザがコンピュータを相手に会話することで楽しみや安らぎなどを得ることのできる会話システムに関する。
【０００２】
【従来の技術】
従来、テレビゲーム機や玩具等に用いられる会話システムの多くは、通常、予め決められたシナリオに沿って会話を行う方式（以下、「シナリオ方式」と呼ぶ）を採用している。この「シナリオ方式」で用いられるシナリオは、実現性を考慮して、会話システムがまず話題を限定するような発言を行い、その後の会話の進展も、分岐が極力少なくなるように作られている。このため、人間（ユーザ）が会話の主導権をとれず、会話の流れが平凡だったり、不自然だったりするなどの欠点がある。
【０００３】
そこで、「シナリオ方式」以外の会話システムとして、「人工知能」的な会話システムと、「人工無能」的な会話システムが考えられている。「人工知能」的な会話システムは、ユーザの発言を構文解析することにより意味を抽出して、発言の意図を理解し、それに基づいて返事を作り出そうとするシステムである。このシステムは、人間の知能に近い処理を行って会話を実現するものであるため、高度な技術が必要であると共に、あるゆる分野に対応させることは困難である。つまり、例えば「切符販売」や「情報検索」などのように、会話が限定された分野にしか適用することができない。
【０００４】
これに対し、「人工無能」的な会話システムは、「人工無能」と俗称されているアプローチを主に用いる会話システムである。これは、ユーザの発言を構文解析して意味抽出するといったような手法を用いないで、表面的に会話らしきものを実現するものである。つまり、ユーザの発言の意味は理解していないが、会話としては成立するようなシステムを実現するものである。このシステムでは、ユーザの発言から特定のパターン（キーワード）を見つけ、そのパターンと予め用意されたデータベースに登録された各パターンとを比較し、該当するパターンに対応した返事のデータ群を出力する。例えば、データベースの中に「野球」といったパターンと、それに対応する返事データとして「私はＡＢＣチームのファンです。」と登録されている場合に、ユーザが「僕は野球が好きだ」と言ったとしたら、会話システムはその発言に含まれる「野球」をキーワードにしてデータベースを検索して、「私はＡＢＣチームのファンです」と答える。
【０００５】
このように、「人工無能」的な会話システムは、構文解析等の複雑な処理を必要とせず、データベースによるパターンマッチングを採用しているため、実際の会話のような省略的な文や、文法的にあいまいな文であっても対応できる。また、ユーザの普通の発言（「シナリオ方式」のような決められた形式ではない発言）に対して返事を生み出す根本的な仕組みが提供されているので、ユーザが会話を自然に主導することができる。
【０００６】
【発明が解決しようとする課題】
上述した「人工無能」的な会話システムでは、データベースの内容や量が会話の質に大きな影響を与える。データベースにつまらいない内容しか登録されていないと、つまらない会話しかできないし、登録量が少ないと、同じ会話の繰り返しとなる。しかし、質、量共に充実したデータベースを作成するには膨大な作業が必要となる。また、データベースの作成に関わる技術者が限られた人となるので、会話システムが返事できる話題もそれらの人が精通している話題の範囲に限られてしまう可能性がある。また、様々な会話の流れを事前に想定してデータベースを作成しておくことは非常に難しいので、会話として自然な流れにならない場合が多い。
【０００７】
本発明は前記のような点に鑑みなされたもので、データベースの作成作業の負担を軽減し、自然な流れで、かつ、ユーザが楽しめるユニークな会話を実現することのできる会話システム及び会話処理プログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明の会話システムは、ユーザとの間で会話を行う会話システムであって、既存の文章情報から会話として利用可能な文章を抽出する文章抽出手段と、この文章抽出手段によって抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する時間関連情報算出手段と、前記文章抽出手段によって抽出された各文章に前記時間関連情報算出手段によって算出された時間関連情報を付加して記憶するデータベースと、ユーザの発言に対し、前記データベースから会話として適切な文章を前記時間関連情報に基づいて選択して発言する会話処理手段とを具備して構成される。
【０００９】
このような構成の会話システムによれば、例えば小説、戯曲、映画やドラマのシナリオ、落語や漫才などの記録、実際の会話記録といったような会話文を含んだ既存の文章情報、あるいは、ニュース記事などのように会話文を含まない既存の文章情報を対象として、このような文章情報から会話として利用可能な文章が抽出され、これらの文章に各文章間の時間的、話題的な距離を示す時間関連情報が付加されてデータベースに登録される。そして、ユーザの発言に対し、このデータベースから会話として適切な文章が前記時間関連情報に基づいて選択されて発言される。このように、既存の文章情報を利用することでデータベースを簡易に作成でき、そのデータベースを用いて自然な流れで、しかも、ユニークな会話を行うことができる。
【００１０】
また、本発明の会話システムは、ユーザとの間で会話を行う会話システムであって、既存の文章情報から会話として利用可能な文章を抽出する文章抽出手段と、この文章抽出手段によって抽出された各文章間の時間的、話題的な距離を示す時間関連情報を算出する時間関連情報算出手段と、前記文章抽出手段によって抽出された各文章に前記時間関連情報算出手段によって算出された時間関連情報を付加して記憶するデータベースと、ユーザの発言からキーワードを抽出するキーワード抽出手段と、このキーワード抽出手段によって抽出されたキーワードを含む文章を前記データベースから検索し、その文章の時間関連情報との差分が所定値以下の文章を発言候補として選択する選択手段と、この選択手段によって選択された文章を利用して発言する発言処理手段とを具備して構成される。
【００１１】
このような構成の会話システムによれば、例えば小説、戯曲、映画やドラマのシナリオ、落語や漫才などの記録、実際の会話記録といったような会話文を含んだ既存の文章情報、あるいは、ニュース記事などのように会話文を含まない既存の文章情報を対象として、このような文章情報から会話として利用可能な文章が抽出され、これらの文章に各文章間の時間的、話題的な距離を示す時間関連情報が付加されてデータベースに登録される。そして、ユーザの発言に対し、その発言から会話の切っ掛けとなるキーワードが抽出され、前記データベースから当該キーワードを含む文章が検索されると共に、前記時間関連情報に基づいてその文章に時間的、話題的に近い文章が選出されて発言に利用される。このように、既存の文章情報を利用することでデータベースを簡易に作成でき、ユーザの発言に対し、そのデータベースから時間関連情報を用いて会話として適切な文章を選出して発言することで、自然な流れで、しかも、ユニークな会話を行うことができる。
【００１２】
また、前記構成の会話システムにおいて、前記データベースの各文章に時間関連情報と共に前回発言日時を示す情報を付加しておき、前記選択手段は前記前回発言日時情報に基づいて所定日数以内に発言されていない文章を対象として発言候補の選択を行う構成とする。これにより、例えば３日以内に発言された文章を対象外として発言するなど、頻繁に同じセリフを発言することを回避することができる。
【００１３】
また、前記構成の会話システムにおいて、前記発言処理手段は前記選択手段によって選択された文章から会話として不適切な部分を削除して発言する構成とする。これにより、既存の文章情報として、例えばニュース記事を利用した場合において、ニュース記事特有の表現で会話には不自然なものを除外してから発言するこができるので、ニュース記事を流用して発言しているにもか拘わらず不自然さの少ない発言を行うことができる。
【００１４】
また、前記構成の会話システムにおいて、前記発言処理手段は前記選択手段によって選択された文章から会話として不適切な部分を削除し、その削除後の文章に含まれるキーワードの数に応じて当該文章を複数に分割することにより、これらの分割文章のいずれかを発言する構成とする。これにより、既存の文章情報として、例えばニュース記事を利用した場合において、会話の持つ情報量に近くなるように、その記事文の部分的に切り出して用いることで、本来は会話に用いるためのものではない書き言葉の文章から会話らしい発言を作り出すことができる。
【００１５】
また、本発明の会話システムは、ユーザとの間で会話を行う会話システムであって、会話文と非会話文とが混在する特定の文章情報を記憶する記憶手段と、この記憶手段に記憶された文章情報の中からユーザの発言に含まれるキーワードを含んだ文章を検索する検索手段と、この検索手段によって検索された文章が会話文であるか非会話文であるか判断する判断手段と、この判断手段によって会話文であると判断された場合にそれ以後の会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択して発言する第１の発言処理手段と、前記判断手段によって非会話文であると判断された場合にそれ以後の非会話文を対象として時間的、話題的な距離を示す時間関連情報を算出し、その時間関連情報に基づいて会話として適切な文章を選択し、その文章から会話として不適切な部分を削除して発言する第２の発言処理手段とを具備して構成される。
【００１６】
このような構成の会話システムによれば、会話文と非会話文とが混在する特定の文章情報を利用して、会話における発言を作り出すことができる。この特定の文章情報とは、例えば電子ブックであり、会話文と会話文でない地の文章が混在している。ユーザの発言に含まれるキーワードが会話文にあれば、会話文を対象として時間関連情報が算出され、その時間関連情報に基づいて会話として適切な文章が選出されて発言される。一方、ユーザの発言に含まれるキーワードが非会話文にあれば、非会話文を対象として時間関連情報が算出され、その時間関連情報に基づいて会話として適切な文章が選出され、さらに、その文章から会話として不適切な部分が削除されて発言される。
【００１７】
また、本発明の会話システムは、ユーザとの間で会話を行う会話システムであって、見出し語とそれに対応する説明文とからなる特定の辞書情報を記憶する記憶手段と、この記憶手段に記憶された辞書情報の中からユーザの発言に含まれるキーワードを含んだ見出し語を検索する検索手段と、この検索手段によって検索された見出し語に対応した説明文を前記辞書情報から抽出し、その説明文から会話として不適切な部分を削除して発言する第１の発言処理手段とを具備して構成される。
【００１８】
このような構成の会話システムによれば、例えば「国語辞典」や「百科事典」などの特定の辞書情報を利用して、会話における発言を作り出すことができる。この辞書情報は見出し語とそれに対応する説明文とからなる。ユーザの発言に対し、その発言に含まれるキーワードを含んだ見出し語が検索され、その見出し語に対応した説明文が前記辞書情報から抽出され、さらに、その説明文から会話として不適切な部分が削除されて発言される。
【００１９】
また、前記構成の会話システムにおいて、前記辞書情報の中にユーザの発言に含まれるキーワードを含んだ見出し語が存在しなかった場合に、前記辞書情報の中からランダムに見出し語を選出し、その見出し語に対応した説明文を利用して発言することで会話を継続させる第２の発言処理手段を備えた構成とする。これにより、ユーザの発言に含まれるキーワードが辞書情報の見出し語にない場合でも、この辞書情報からランダムに選出される見出し語に対応した説明文を利用して発言することで、会話を継続することができる。
【００２０】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【００２１】
（第１の実施形態）
図１は本発明の第１の実施形態に係る会話システムのハードウェア構成を示すブロック図である。この会話システムは、ユーザの発言に対し、あたかも人間が返事をしているかの如く発言して会話を進めるためのものであり、例えば会話型ロボット等の玩具類やテレビゲーム機などに搭載される。
【００２２】
図１では、本システムを汎用のコンピュータによって実現した場合の基本的な構成が示されており、ＣＰＵ１１、音声入力部１２、Ａ／Ｄ変換部１３、音声出力部１４、Ｄ／Ａ変換部１５、ワークメモリ１６、不揮発性メモリ１７によって構成されている。
【００２３】
ＣＰＵ１１は、不揮発性メモリ１７などに記憶されたプログラムを読み込むことにより、そのプログラムに記述された手順に従って所定の処理を実行する。音声入力部１２は、会話時にユーザの音声を入力するためのマイクである。この音声入力部１２から入力されたユーザの音声（アナログデータ）はＡ／Ｄ変換部１３でデジタルデータに変換されてＣＰＵ１１に取り込まれる。ＣＰＵ１１はワークメモリ１６を用いて処理を行い、ユーザの発言に対する返事をＤ／Ａ変換部１５を介して出力する。Ｄ／Ａ変換部１５は、ＣＰＵ１１によって生成された音声データをアナログデータに変換して音声出力部１４に与える。音声出力部１４は、これを外部に出力するためのスピーカである。
【００２４】
不揮発性メモリ１７は、例えばフラッシュメモリからなり、電源が切れても記憶内容が消えない書き換え可能なメモリである。この不揮発性メモリ１７には、本発明の会話システムを実現するためのプログラム１７ａの他、会話処理に必要な情報として、会話文データベース１８、記事文データベース１９、キーワード履歴テーブル２０、前回発言記事文バッファ２１、累積発言文字数カウンタ２２が設けられている。前記プログラム１７ａは、後述するデータベース作成処理を実行するためのプログラムを含む。
【００２５】
会話文データベース１８は、例えば小説、戯曲、映画やドラマのシナリオ、落語や漫才の記録、実際の会話記録など、会話文を含んだ既存の文章情報を対象として、その文章情報から会話部分の文章だけを抜き出して作成されたデータベースである。記事文データベース１９は、例えばニュース記事など、会話文を含まない既存の文章情報（書き言葉による文章情報）を対象として、その文章情報から会話として利用可能な部分の文章を抜き出して作成されたデータベースである。
【００２６】
キーワード履歴テーブル２０は、ユーザの発言の中に見つけたキーワードと、それを見つけた日時のデータを履歴として保持としておくためのテーブルである。会話時にキーワードを見つける度にそれらをキーワード履歴テーブル２０に書き込んでいく。この場合、キーワード履歴テーブル２０の記憶容量が一杯になった時点で古い日時のデータから上書きしていくものとする。前回発言記事文バッファ２１は、会話時に記事文データベース１９に登録された記事の文章を利用してユーザに対する発言（返事）が行われた場合にその文章を保持しておくためのものである。累積発言文字数カウンタ２２は、発言に利用された記事の文章の文字数をカウントしておくものである。
【００２７】
このような構成の会話システムにおいて、音声入力部１２から入力されたユーザの音声はＡ／Ｄ変換部１３にてデジタルデータに変換された後、ＣＰＵ１１に与えられる。ＣＰＵ１１では、「音声認識処理」→「会話処理」→「読み上げ処理」といった順で各処理を行ってユーザの発言に対する返事を返す。すなわち、まず、「音声認識処理」により音声から文字への変換を行ってテキスト形式の文章を作成する。なお、「音声認識処理」では仮名漢字変換処理も同時に行われているものとする。次に、このテキスト形式の文章に対して「会話処理」を施してユーザの発言に対する返事を作成し、これを「読み上げ処理」によって読み上げる。このときＣＰＵ１１にてユーザに対する返事として生成された音声データはＤ／Ａ変換部１５によってアナログデータに変換された後、音声出力部１４を通じて出力される。
【００２８】
ここで、「音声認識処理」と「読み上げ処理」については一般的に知られている手法を用いるものとしてその詳しい説明は省略する。以下では「会話処理」を中心に説明する。
【００２９】
まず、「会話処理」で用いられる会話文データベース１８と記事文データベース１９を作成するための処理について説明する。なお、これらの会話文データベース作成処理は、本システムに備えられたＣＰＵ１１の一機能として実行されるものであっても、あるいは、例えば本システムに接続されるパソコン等にて実行されるものであっても良い。パソコン等で行う構成の場合には、そこで作成された会話文データベース１８や記事文データベース１９が本システムの不揮発性メモリ１７に書き込まれて、会話処理時に参照されることになる。本実施形態では、本システムに備えられたＣＰＵ１１がプログラム１７ａを読み込むことで、以下に説明するような会話文データベース１８と記事文データベース１９の作成処理を行うものとする。
【００３０】
（ａ）会話文データベース作成処理
会話文データベース作成処理では、例えば小説、戯曲、映画やドラマのシナリオ、落語や漫才などの記録、実際の会話記録など、直面している会話とはもともとは全く無関係に作られた作品の文章中に含まれる会話文を利用してデータベース（会話文データベース１８）を作成する。この場合、この種の既存の文章情報から会話部分の文章を抜き出すと共に、これらの会話文間の時間的、話題的な距離を示す情報（以下、時間関連情報と称す）を算出して会話文データベース１８に登録しておくことで、会話処理時に前記時間関連情報に基づいて適切な会話文を選択する。
【００３１】
図２は第１の実施形態における会話システムの会話文データベース作成処理の流れを示すフローチャートである。ここでは、説明を簡単にするために、小説のテキストファイルが例えば不揮発性メモリ１７などにあり、そのテキストファイルを読み込んで処理するものとする。なお、対象ファイルが戯曲やシナリオや会話記録などの場合には細部が多少異なる処理となる。
【００３２】
小説のテキストファイルが複数あり、それらを１つずつ処理していく。会話部分の抽出は、対象が小説の場合に、「」や『』の会話記号用のかぎ括弧を利用して行えば良い。文単位への分割は、句点（。）などを利用すれば良い。時間関連情報は、各会話文の時間的な近さ、話題としての近さを知るための情報である。この時間関連情報の値が近い時には、その会話文が発言された時間が近く、同じ話題である可能性が高いことを示す。小説の場合には、各会話文が発言された時間そのものは分からないので、改行コードなどに基づいてその情報を作成する。改行コードが入ると、そこで文章間の時間的、意味的な繋がりは少し薄れると考える。小説において、空白行は、文章間に区切りをつけるために設けられている場合が多いので、空白行が入ると、その前後の文章の時間関連情報値を大きく（例えば“１０”）隔てる。ファイルが変わると、全く違う話題になるので、さらに大きな値（例えば“１００”）を加算する。
【００３３】
この会話文データベース作成処理について詳しく説明する。
【００３４】
図２に示すように、ＣＰＵ１１は、まず、時間関連情報を初期値“０”にして最初のテキストファイルを開き（ステップＡ１１）、その先頭から次の改行コードまでのテキストを読み込む（ステップＡ１２）。そして、ＣＰＵ１１は、その読み込んだテキストが空白行か否かをチェックする（ステップＡ１３）。空白行でなければ（ステップＡ１３のＹＥＳ）、ＣＰＵ１１は「」や『』の会話記号を利用して当該テキストから会話部分の文章の抽出処理を行う（ステップＡ１４）。その結果、会話部分があれば（ステップＡ１５のＹＥＳ）、ＣＰＵ１１は句点などを利用して会話部分の文章を文単位で分割し、これらの文データに時間関連情報と前回発言日時を付加して会話文データベース１８に登録する（ステップＡ１６）。なお、前回発言日時は会話処理で用いられるデータであり、この時点では空データを登録しておく。
【００３５】
続いて、ＣＰＵ１１は現在の時間関連情報に“１”を加算し（ステップＡ１７）、次の改行コードまでのテキストを読み込んで前記同様の処理を行う（ステップＡ１８→Ａ１２）。また、読み込んだテキストが空白行の場合には（ステップＡ１３のＹＥＳ）、時間関連情報に“１０”を加算して（ステップＡ１９）、次のテキストに移る。
【００３６】
全てのテキストに対する処理が終了すると（ステップＡ１８のＹｅｓ）、未処理のテキストファイルがあれば（ステップＡ２０のＹｅｓ）、そのテキストファイルに対して前記同様の処理を繰り返す。その際、全く違う話題になるので、ＣＰＵ１１は次のテキストファイルを開いたときに時間関連情報に“１００”を加算しておく（ステップＡ２１）。
【００３７】
このようにして、会話文を含んだテキストファイルから会話文としての文章を抽出して文単位で時間関連情報および前回発言日時と共に会話文データベース１８に登録していく。
【００３８】
図３に前記会話文データベース作成処理の対象となる小説のテキストファイルの一例を示す（太宰治「グッド・バイ」より抜粋）。各行が改行コードまでの文章である。「…」はここで示した文章の前後にもデータがあることを表現している。なお、印刷や表示された時の一行と改行コードまでの一行とは異なる。改行コードがなくても一行に表示しきれない長さの文は改行されて表示、印刷される。また、時間関連情報は参考のために付したもので、実際のテキストファイルにはない。ここでは、「ケンカするほど深い仲、ってね。」の文章の時間関連情報が“５０００”だったとして、そこから算出した値が示されている。「怪力（四）」は、章の題名である。このような章の変わり目を認識してやや大き目の値（例えば“３０”など）を時間関連情報に加算しても良い。ここでは、空白行が必ず前後にあるので、それを利用した例を示した。
【００３９】
図４にこのテキストファイルから作成された会話文データベース１８の一例を示す。この会話文データベース１８には、前記図３に示した小説の会話部分の文データが文単位で登録されている。これらの文データには時間関連情報と前回発言日時が付加されている。前回発言日時は会話処理で用いるデータであって、ここでは空白データである。
【００４０】
（ｂ）記事文データベース作成処理
記事文データベース作成処理では、ニュース記事などを対象として会話にふさわしい文を抽出してデータベース（記事文データベース１９）を作成する。前記会話文データベース作成処理と同様に、文章情報から会話文を抜き出すと共に、これらの会話文間の時間的、話題的な距離を示す時間関連情報を算出して記事文データベース１９に登録しておくことで、会話処理時に前記時間関連情報に基づいて適切な会話文を選べるようにする。ただし、ニュース記事などでは、そのニュース記事特有の表現が使われており、しかも、小説のように会話文を含まないため、会話文にふさわしい形に編集する必要がある。
【００４１】
図２は第１の実施形態における会話システムの記事文データベース作成処理の流れを示すフローチャートである。ここでは、インターネット上のニュースサイトなどからニュース記事がダウンロードされて、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）形式の複数のファイルとして、例えば不揮発性メモリ１７などに既にあるものとして説明する。
【００４２】
ホームページ情報の中には、表示される文字以外にＨＴＭＬタグが含まれるのでこれを削除する。また、記事の内容を表現する文章以外に、リンクを伴った他の記事の見出しや他のホームページの名称などがある。これらには句点（。）が含まれないので、ここではそれで識別して削除する。ホームページの記事では、内容的に大きな区切りではないところでも空白行を用いることが多いので、空白行を見つけた時の時間関連情報の加算値は“１”とする。内容的に大きな区切りとなる箇所では、複数の空白行と共に見出しなども用いられ、その度に時間関連情報が加算されるので問題はない。また、ここでは、会話文データベース１８の作成処理とは異なる処理を示すために、改行コードまでの文章が複数の文から構成されていても同じレコードに記録するものとする。
【００４３】
この記事文データベース作成処理について具体的に説明する。
【００４４】
図５に示すように、ＣＰＵ１１は、まず、時間関連情報を初期値“０”にして最初のＨＴＭＬファイルを開き（ステップＢ１１）、そのＨＴＭＬファイルからタグを除去することで、画面に表示されているニュース記事のテキストのみを残す（ステップＢ１２）。
【００４５】
ここで、ＣＰＵ１１は次の改行コードまでのテキストを読み込み（ステップＢ１３）、その読み込んだテキストが空白行か否かをチェックする（ステップＢ１４）。空白行でなければ（ステップＢ１４のＹＥＳ）、ＣＰＵ１１は当該テキストに句点があるか否かをチェックする（ステップＢ１５）。その結果、句点があれば（ステップＢ１５のＹｅｓ）、当該テキストは文章であるものとして、ＣＰＵ１１はその文データを抽出して時間関連情報と前回発言日時を付加して記事文データベース１９に登録する（ステップＢ１６）。なお、前回発言日時は会話処理で用いられるデータであり、この時点では空データを登録しておく。一方、句点がなければ（ステップＢ１５のＮＯ）、当該テキストは見出しやリンクであると判断して破棄して、ステップＢ１７の進む。
【００４６】
続いて、ＣＰＵ１１は現在の時間関連情報に“１”を加算し（ステップＢ１７）、次の改行コードまでのテキストを読み込んで前記同様の処理を行う（ステップＢ１８→Ｂ１３）。
【００４７】
また、全てのテキストに対する処理が終了すると（ステップＢ１８のＹｅｓ）、未処理のＨＴＭＬファイルがあれば（ステップＢ１９のＹｅｓ）、そのＨＴＭＬファイルに対して前記同様の処理を繰り返す。その際、全く違う記事になるので、ＣＰＵ１１は次のテキストファイルを開いたときに時間関連情報に“１００”を加算しておく（ステップＢ２０）。
【００４８】
このようにして、ニュース記事などを対象として会話として利用可能な文章を抽出して時間関連情報および前回発言日時と共に記事文データベース１９に登録していく。図６に前記記事文データベース作成処理によって作成される記事文データベース１９の一例を示す。時間関連情報が“１００００”と“１０００１”のレコードと、時間関連情報が“１０１０２”から“１０１０６”のレコードとは違うファイルの記事（ホームページ上では違うアドレスの記事）である。時間関連情報が“１０１０２”から“１０１０６”で２つずつ増えているのは、これらの文章は一連の文章ではあるが、間に空白行が入っていたことを意味している。
【００４９】
（ｃ）会話処理
次に、会話文データベース１８と記事文データベース１９を用いた会話処理について説明する。
【００５０】
図７および図８は第１の実施形態における会話システムの会話処理の流れを示すフローチャートである。また、図９乃至図１１はこの会話処理の中に含まれるレコード選択処理、記事文切断発言処理、記事文不適切部分削除処理の流れを示すフローチャートである。
【００５１】
まず、これらのフローチャートで示される処理を説明する前に、理解を容易とするため、具体例を挙げて本システムの会話処理について説明する。ここで、「キーワード」とは、他の言葉よりも強く示唆する言葉を示すものであるが、本実施形態では説明を簡便にするために、２文字以上の漢字、カタカナ、数字、またはこれらの組み合わせからなる単語を会話の切っ掛けとなるキーワードとして認識するものとする。
【００５２】
例えば、ユーザが「僕は音楽が好きだ」と言ったとすると、この中のキーワードは「音楽」である。そこで、会話文データベース１８の中から「音楽」といったキーワードを有する文データが検索される。この場合、図４に示す会話文データベース１８の例であれば（前回発言日時も図のようにデータがないものとし、ここで表示されている以外に「音楽」を含む文データがないとする）、レコード選択処理（図９）において、まず、「あなたにも音楽がわかるの？」と「ばか、僕の音楽通を示らんな、君は。」といった文データが抽出されると共に、これらの文データとの時間関連情報の差が２以下である「音痴みたいな顔をしているけど。」，「名曲ならば、一日一ぱいでも聞いていたい。」，「あの曲は、何？」，「ショパン。」も抽出される。
【００５３】
これらの中の１つがランダムに選ばれて発言される。どれも音楽に関する発言なので、課題として適切である。これにより、ユーザに対して会話システムは自分の発言を理解したと錯覚させることができ、発言自体の表現も小説から抜粋されたものでユニークであり、会話の流れとしても自然である。
【００５４】
この場合、会話文データベース１８の中でキーワードを含む会話文を発言した人物の文章だけを利用してユーザに返事する方法も考えられるが、本実施形態では、キーワードを含む会話文を発言した人物と、その人と会話している人物の両方の文章から返事を見つけ出すようにしているため、返事のバリエーションが多く抽出でき、同時に、キーワード（前記例では「音楽」）そのものを含む会話文も返事として返されるされることがあるので、ユーザは自分の言ったことを理解していると強く感じて満足を得ることができる。また、キーワードがいつも返事に入っていると逆に不自然さを感じてしまうこともあるが、本実施形態ではキーワード（「音楽」）を含む文に後続するキーワードを含まない文も発言されることがあるので、その不自然さを感じることもない。しかも、その返事はキーワード（「音楽」）を含む会話の流れから選ばれたものであり、自然な内容であることが多い。
【００５５】
ここで、会話文データベース１８に登録された各会話文のデータに付加された時間関連情報が各会話文の時間的・内容的な差を適切に表現している。例えば、ユーザの発言の中に「ケンカ」というキーワードがあって、「ケンカするほど深い中、ってね。」が候補となったとしても、そのレコードの直後のレコードである「ピアノが聞こえるね。」が候補となることはない。
【００５６】
また、本実施形態では、「あなたにも音楽がわかるの？音痴みたいな顔をしているけど。」のように、小説では１回の発言とされるところを、２つの文に分けて１つだけを発言させる。１つの文に比べると２つの文に含まれる情報は当然多く、情報量が増えると、ユーザの発言と食い違う情報が含まれてしまう可能性が高まる。それを避けて、ユーザの発言との食い違いが生じる可能性を下げるために、文単位にわけて発言させることで、会話システムが行っている会話とは本来は全く無関係に作られた小説の中の会話をいろいろな場面で利用できるようになる。
【００５７】
また、発言された文の前回発言日時を会話文データベース１８に記録しておき、これをレコード選択時に利用することで、同じ文が頻繁に発言されて飽きられることを防いでいる。
【００５８】
ここで、会話文データベース１８に返事を見つけられなかった場合、本システムは、より広い話題を含んでいる記事文データベース１９を利用する。文を選択する処理は会話文データベース１８の場合と同じである。しかし、選択された文をそのまま発言すると、会話としては非常に不自然になるので、記事文切断発言処理（図１０）により、これを会話として自然なもの変形する。
【００５９】
まず、ニュース特有の表現で、それをそのまま会話に用いると不自然な文を記事不適切部分削除処理（図１１）で削除する。
【００６０】
例えば、ユーザが「僕は＊＊＊＊が好きなんだ」と言ったとして、それに対して選択されたレコードが、「米大リーグ、ア・リーグの最優秀選手（ＭＶＰ）に選出された＊＊＊＊＊の＊＊＊＊外野手（２８）が９日、関西空港着の航空機で＊＊夫人とともに帰国した。首位打者と盗塁王を獲得し、シーズン２４２安打の新人最多安打記録を９０年ぶりに更新。」だったとする。なお、“＊＊＊＊”の部分は、実際には人物の名前や場所の名前などが入るものであるが、ここでは固有名詞の記載を避けるために＊記号でマスクして表現するものとする。
【００６１】
前記の文章の例では、「（ＭＶＰ）」，「（２８）」，「９日」が不適切部分として削除される。これは、括弧を「カッコ」などと読み上げるのは会話として明らかに不自然なことによる。また、括弧自体は自動的に読まずに済ませるようにしたとしても、括弧の中の内容を読むことも不自然である。ユーザの日常の会話では、名詞の後に同格の名詞をつけることはないし、人物の年齢をその人を指す名詞の直後にいきなり言うこともない。「９日」のような日程に関する文言についても、このニュースが出た月内であれば意味があるが、他の月でも無意味なものであるため、削除対象となる。
【００６２】
これらを削除することにより、前記文章は次のようになる。
【００６３】
「米大リーグ、ア・リーグの最優秀選手に選出された＊＊＊＊＊の＊＊＊＊外野手が、関西空港着の航空機で＊＊夫人とともに帰国した。首位打者と盗塁王を獲得し、シーズン２４２安打の新人最多安打記録を９０年ぶりに更新。」
しかし、これでも会話における発言としては全く不自然である。その最大の原因は、１回の発言としては情報量が多すぎることにある。日常会話では、１回の発言に含まれる情報量は非常に少ない。本実施形態では、キーワードの数で会話の情報量を量るものとする。
【００６４】
例えば、「あなたにも音楽がわかるの？音痴みたいな顔をしているけど。」はキーワードを２つ（「音楽」，「音痴」）しか含んでいない。これに対し、「米大リーグ、ア・リーグの最優秀選手に選出された＊＊＊＊＊の＊＊＊＊外野手が、関西空港着の航空機で＊＊夫人とともに帰国した。首位打者と盗塁王を獲得し、シーズン２４２安打の新人最多安打記録を９０年ぶりに更新。」は、明らかに２個以上のキーワードが含まれている。そこで、ランダムに任意の文字位置を選び、句読点を利用して、それを含む文節（選ばれた文字位置を含む文に読点がない場合は文）を切り出す。ここでは「文節」を、句読点で区切られ、その中にはそれ以上の句読点がない部分を言うことにする。
【００６５】
これにより、例えば「米大リーグ」が切り出されたり、「ア・リーグの最優秀選手に選出された＊＊＊＊＊の＊＊＊＊外野手が」などが切り出される。「米大リーグ」が切り出された場合は、ここに含まれるキーワードは１個だけなので、これをそのまま利用して返事とする。「ア・リーグの最優秀選手に選出された＊＊＊＊の＊＊＊＊外野手が」の文節が切り出された場合は、ここに含まれるキーワードが５個でまだ多すぎるので、さらに、この文節の中からランダムに任意の文字位置を選び、今度はキーワードを区切りとしてその文字を含む部分を切り出す。それでもまだ切り出した部分の情報量が多すぎる場合にはこれを繰り返して、最終的には、例えば「ア・リーグの最優秀選手に」や「＊＊＊＊＊の＊＊＊＊外野手が」などを切り出す。
【００６６】
文節は句読点ではもはや切り出せないが、キーワードを区切りにして切断しているので、切り出した部分は比較的自然な日本語となる。これらを返事とすると、結果として、ややぶっきらぼうで中途半端な印象も与えはするが、ユーザの発言との食い違いが目立たない曖昧な返事になる。なお、切り出した部分を編集して、例えば「米大リーグだな」や「＊＊＊＊の＊＊＊＊外野手がね」などのように語尾をつけたりしても良い。
【００６７】
この手法では、関連している情報の一部分だけを発言しているので、ユーザは残りの部分を聞きたくもなる。例えば、ユーザの発言「野球」に対して「＊＊＊＊＊の＊＊＊＊外野手が」と返事されるとその後が聞きたくなるし、「９０年ぶりに更新」と返事されると、何が９０年ぶりだろう、と興味を引かれる。このように意図的に情報量を制限することで、会話にミステリアスな味わいを付加し、ユーザに好奇心を持たせる効果も出せる。
【００６８】
ユーザの発言のキーワードを用いて、会話文データベース１８でも記事文データベース１９でも返事が作れなかった場合、あるいは、ユーザの発言にキーワードが含まれていなかった場合に、そのまま応答しないでいると、非常に無口な会話システムとなってしまう可能性がある。そのような場合に備えた処理が図８に会話処理（２）として示した処理である。
【００６９】
すなわち、記事文データベース１９を用いて発言したときに、そのときに発言用として選択された文章を前回発言記事文バッファ２１に記録しておくことで、これを利用して発言する。記事文データベース１９を用いた発言の場合には、会話らしい情報量とするために、全体の文章のごく一部分しか発言していないので、残りの部分も発言する。
【００７０】
これにより、主に以下の３つの効果が出せる。
（１）記事文データベース１９を用いた発言が持つミステリアスな味わいにより引き起こされた興味や好奇心にある程度の充足感を与える。
（２）１つの話題について継続して会話しているという感覚をユーザに与える。
（３）選択された記事文の中にユーザの発言と食い違う情報が含まれていたとしても、徐々に小出しにすることでそれによる違和感を少なくする。
【００７１】
前記（１）は、制限されて隠されていた情報が徐々に明かされることにより達成される。前記（２）は話が飛びすぎる人工無能特有の欠点を解消する。ユーザは自分がしゃべった直後に急に話をそらされると不快感を感じるが、徐々に時間をかけてあいまいに話がそれていくのにはそれほど不快感を感じない。また、情報量が制限され、小出しにされた中に食い違いが出てくると、不快感を感じるよりも、どういう意味かと不思議に思い質問したくなる傾向もある。前記（３）はそれらの傾向を利用している。しかし、記事文が持つ情報を全部明らかにしてしまうと、ユーザの発言意図と食い違う情報が多数出てきてしまい、前記（３）の効果ではカバーしきれなくなる。そこで、一定の制限を設けてそれに達したらやめるものとする。本実施形態では、累積発言文字数カウンタ２２にて発言文字数をカウントしておき、文章全体の１／４に達した時点でやめるものとする。
【００７２】
以上の仕組みを用いると、先ほどの例では、例えば次のような会話が可能である。
【００７３】
ユーザ：「僕は＊＊＊＊選手が好きなんだ」
会話システム：「＊＊＊＊＊の＊＊＊＊外野手が」
ユーザ：「君も知っているんだね」（キーワードなし）
会話システム：「首位打者と盗塁王を」（従来の人工無能であれば、ここで全く違う話題になっているか、黙ってしまっている可能性が高いが、本発明では同じ話題を継続できる）
ユーザ：「うん」（キーワードなし）
会話システム：「関西空港着の航空機で」
ユーザ：「はあ？」（キーワードなし）
会話システム：「９０年ぶりに更新」
ユーザ：「え？」（キーワードなし）
会話システム：「シーズン２４２安打」
ユーザ：「すごい記録だよね」（次の発言はキーワード「記録」を使って作られる）
このように、部分的には意味不明なところや食い違いがありながらも（その部分では特にユーザにミステリアスな味わいをあたえ好奇心を刺激しながら）、同じ話題で発言が行なわれ、最初の「僕は＊＊＊＊選手が好きなんだ」に対応する会話が成立している。それぞれがあいまいな発言なので、不足した情報をユーザが都合よく補って解釈する効果もある。ここで引用した記事は野球の＊＊＊＊選手が帰国したことを伝える報道記事である。本来は、ユーザの発言「僕は＊＊＊＊選手が好きなんだ」とは無関係に書かれたものである。このように、会話とは全く無関係に作られた文章を会話に利用することができる。
【００７４】
また、前回発言記事文バッファ２１に文章がなかった場合、キーワード履歴テーブル２０に記録しておいた最近のキーワードを用いて発言する。これにより、発言せずに終わってしまう可能性をさらに下げる。同時に、同じ話題について継続して会話している印象をユーザに与える。これも、話が飛びすぎる欠点を軽減するためのものである。例えば、先ほどの「僕は＊＊＊＊選手が好きなんだ」で始まる会話の続きにおいて、キーワード「記録」に基づく会話をした後に、キーワード履歴テーブル２０に残っているキーワード「＊＊＊＊選手」に基づく会話を再開できる。
【００７５】
以下に、上述した会話システムを実現するための具体的な処理手順について、図７乃至図１１に示すフローチャートを参照して詳しく説明する。これらのフローチャートで示される処理は、本システムに備えられたＣＰＵ１１がプログラムを読み込むことで実行する。
【００７６】
図７に示すように、本システムの会話処理が起動されると、ＣＰＵ１１は、まず、ユーザの発言の中からキーワードを抽出する（ステップＣ１１）。詳しくは、音声入力部１２を通じて入力されたユーザの音声データを音声認識処理して得られるテキストデータの中から会話の切っ掛けとなるキーワードを探す。ここで言うキーワードとは、ユーザの発言内容を他の言葉よりも強く示唆する言葉である。本実施形態では、２文字以上の漢字、カタカナ、数字、またはこれらの組み合わせからなる単語をキーワードとして抽出する。ユーザの発言の中に該当するキーワードがあった場合には（ステップＣ１２のＹＥＳ）、ＣＰＵ１１は、その抽出したキーワードを不揮発性メモリ１７に設けられたキーワード履歴テーブル２０に現在日時のデータと共に書き込んだ後（ステップＣ１３）、そのキーワードを用いて会話文データベース１８に対するレコード選択処理を行う（ステップＣ１４）。前記キーワード履歴テーブル２０は後述する図８の会話処理（２）で用いられる。
【００７７】
図９に示すように、レコード選択処理では、ＣＰＵ１１は、前記抽出したキーワードに基づいて会話文データベース１８を検索する（ステップＤ１１）。その結果、会話文データベース１８に登録された文データの中に当該キーワードを含むレコードがあれば（ステップＤ１２のＹＥＳ）、ＣＰＵ１１はそのレコードを会話文データベース１８から抽出すると共に、時間関連情報が近いレコードで、かつ、前回発言日時が所定日数以内でないレコードを抽出する（ステップＤ１３）。時間関連情報が近いレコードとは、時間的、話題的に近いレコードのことであり、具体的には当該レコードの時間関連情報との差分値が２以内のレコードを言う。また、前回発言日時が所定日数以内でないレコードとは、最近発言されていないレコードのことであり、具体的には３日以内に発言されないレコードを言う。会話文データベース１８から該当するレコードを抽出できた場合には（ステップＤ１４のＹＥＳ）、ＣＰＵ１１はこれらのレコードを発言候補として、そのうちの１つをランダムに選択する（ステップＤ１５）。なお、１つしか抽出できなかった場合にはそれを選択レコードとする。
【００７８】
図７に戻って、前記レコード選択処理によって会話文データベース１８から発言候補としてのレコードが選択されると、ＣＰＵ１１はそのレコードの文データをユーザに対する返事として発言する（ステップＣ１５）。詳しくは、発言する文データに対応した音声データを生成し、これをＤ／Ａ変換部１５にてアナログ波形に変換した後、音声出力部１４を通じて読み上げる。このとき、ＣＰＵ１１は会話文データベース１８の中の前記選択レコードに対応した前回発言日時の項目に現在日時を書き込んでおく（ステップＣ１６）。一方、前記レコード選択処理によって会話文データベース１８から発言候補としてのレコードが選択されなかった場合には、ＣＰＵ１１は当該キーワードを用いて記事文データベース１９に対するレコード選択処理を行う（ステップＣ１７）。このときのレコード選択処理は、会話文データベース１８が記事文データベース１９に代わるだけで図９と同様である。
【００７９】
ここで、記事文データベース１９から発言候補としてのレコードが選択された場合には、ＣＰＵ１１はそのレコードの文データに対して記事文切断発言処理を施すことで、その文データを会話として自然な形に直してからユーザに対する返事として発言する（ステップＣ１８）。そして、ＣＰＵ１１は記事文データベース１９の中の前記選択レコードに対応した前回発言日時の項目に現在日時を書き込んでおく（ステップＣ１９）。
【００８０】
図１０に示すように、記事文切断発言処理では、ＣＰＵ１１は、まず、記事文データベース１９から抽出した文データ（記事の文章）を不揮発性メモリ１７に設けられた前回発言記事文バッファ２１に保持しておく（ステップＥ１１）。そして、ＣＰＵ１１はこの前回発言記事文バッファ２１に保持した文データを処理対象として記事不適切部分削除処理を行い、その文データから会話として不適切な部分を削除する（ステップＥ１２）。詳しくは、図１１に示すように、ＣＰＵ１１は当該文データに含まれる括弧を探し、その括弧の記号とその括弧に挟まれた部分を削除する（ステップＦ１１）。また、ＣＰＵ１１は当該文データから日時を表現する文言を探してこれを削除すると共に（ステップＦ１２）、さらにニュース特有の文言、例えば「＊＊＊＊通信社によると」とか「＊＊＊＊新聞社の調べたところによると」などの文言を探してこれを削除する（ステップＦ１３）。
【００８１】
このようにして、文データから会話として不適切な部分を削除すると、ＣＰＵ１１はその削除後の文データに含まれるキーワードの数を調べて、そのキーワードの数がｎ個（ここではｎ＝３）以上あれば（ステップＥ１３のＹＥＳ）、会話文として不適切であると判断して、以下のようにして文章を短文化して会話文として適切な形にしていく。
【００８２】
すなわち、ＣＰＵ１１は、当該文データの任意の文字位置を乱数的に指定し、その文字を含む文節または文を句読点などを利用して切り出す（ステップＥ１４）。そして、この切り出した文または文節に含まれるキーワードの数を調べ、それがｎ個以上であれば（ステップＥ１５のＹＥＳ）、今度はキーワードを区切りにして文節をさらに短く切断する（ステップＥ１６）。これをキーワードの数がｎ個より少なくなるまで、具体的にはキーワードの数が２個以下になるまで繰り返す。
【００８３】
ＣＰＵ１１はこのようして最終的に得られた文、文節あるいは断片をユーザに対する返事として発言する（ステップＥ１７）。また、ＣＰＵ１１は今回発言した文字数を累積発言文字数カウンタ２２に加算して（ステップＥ１８）、その累積発言文字数カウンタ２２の値が所定値以下であるか否かを判断する（ステップＥ１９）。詳しくは、発言した文字数の累積値が前回発言記事文バッファ２１の記事文章の長さの１／４以下であるか否かを判断する。これは、後述する会話処理（２）で同じ記事文章を小出しにして何らかの発言を行う場合において、ユーザは最初のうちはどういう意味かと不思議に思い質問したくなる傾向があるが、同一記事文の情報を全部明らかにしてしまうと、ユーザの発言意図と食い違う情報が多数出てきてしまい、逆に違和感を与えてしまうことになる。そこで、累積文字数が文章全体の１／４の長さに達した時点で同じ記事文章からの発言を中止するために（ステップＥ１９のＮＯ）、ＣＰＵ１１は前回発言記事文バッファ２１を０クリアすると共に前回発言記事文バッファ２１を空にしておく（ステップＥ２０）。
【００８４】
ここで、ユーザの発言に含まれるキーワードを用いて、会話文データベース１８でも記事文データベース１９でも返事が作れなかった場合（図７のステップＣ１４→Ｃ１７の非選択）、あるいは、ユーザの発言にキーワードが含まれていなかった場合において（図７のステップＣ１１のＮＯ）、図８に示す会話処理（２）が実行される。
【００８５】
図８に示すように、会話処理（２）では、ＣＰＵ１１は、前回発言記事文バッファ２１に文章があるか否かをチェックする（ステップＣ２０）。前回発言記事文バッファ２１に文章（前回選択された記事文）があれば（ステップＣ２０のＹＥＳ）、ＣＰＵ１１はこの文章を利用して前記図１０の記事文切断処理を行って発言を行う（ステップＣ２１）。一方、前回発言記事文バッファ２１に文章がない場合には（ステップＣ２０のＮＯ）、ＣＰＵ１１はキーワード履歴テーブル２０から最近に記録されたキーワードを抽出する（ステップＣ２２）。この場合、今回記録されたキーワードは対象外とする。また、所定時間以上前に選択されているキーワードも対象外とする。このキーワード履歴テーブル２０に該当するキーワードがあれば（ステップＣ２３のＹＥＳ）、ＣＰＵ１１はそのキーワードを用いて再度会話文データベース１８や記事文データベース１９から返事となる文を抽出して発言を行う（ステップＣ２４〜Ｃ２９）。ステップＣ２４〜Ｃ２９の処理は前記図７のステップＣ１４〜Ｃ１９と同様である。ただし、ここでも返事を作成できなかった場合には、ユーザの発言に対する返事はせずに会話処理を終了することになる。
【００８６】
このように、本発明の会話システムでは、ユーザの発言に含まれるキーワードに基づいて会話文データベース１８から会話文を見つけ、その会話文と時間関連情報の差が少ない会話文を返事としているので、元々はこれらの会話文は直面している会話とは全く無関係に作られたものであるにも拘わらず、そこから内容的に繋がりがあり、しかも、会話として自然な表現の返事を作り出すことができる。この場合、小説では各会話文の時間間隔を知ることはできないが、会話文の中の改行コードと共に地の文（会話文ではない文）や章の題の改行コードも用い、さらに内容の区切りを示すものとして空白行を考慮して時間関連情報を算出することで、会話文相互の時間的、話題的な関連性を適切に表現する情報が作り出せる。これを用いて会話文を選択するので、ユーザの発言と時間的にも内容的にも繋がりのある適切な文を選択して発言できる。
【００８７】
また、小説の中では１回の発言とされている複数の文（一組の引用符に囲まれた文）を分割して、文単位で１回の発言としているので、ユーザの発言との明確な食い違いを生みにくく、多くの場面の会話に適用できる。
【００８８】
ユーザ発言の中のキーワードを含む会話文に対する返事の会話文だけではなく、そのキーワードを含む会話文の話者自身の会話文も利用しているので、多くの会話文を選び出すことができ、発言のバラエティが豊富となる。また、これにより、ユーザが発言したキーワードそのものが含まれる返事と、それが含まれない返事の両方が可能となるので、ユーザに会話システムは自分の言ったことを理解しているという強い満足感を、不自然さを感じさせることなく与えることができる。
【００８９】
会話文の識別と抽出、時間関連情報の算出が会話文データベース作成の際に行っておくので、会話時のＣＰＵ１１の処理の負担が軽減する。また、会話文データベース１８に会話文のみを抽出して持っているので、会話らしい会話が少ない容量のメモリで実現できる。
【００９０】
一方、会話文データベース１８とは別に記事文データベース１９を用いて発言する場合において、ニュース記事に特有の表現で会話には不自然なものを除外してから発言するので、ニュース記事を流用して発言しているにもか拘わらず不自然さの少ない発言を行うことができる。また、会話の持つ情報量に近くなるように、記事文の一部分を切り出して用いるので、本来は会話に用いるためのものではない書き言葉の文章から会話らしい発言を作り出せる。この場合、句読点やキーワードを利用して文を切り出すので、切れ目が不自然にならない。断片的な発言を行うので、発言の意味があいまいで解釈の余地が広くなり、ユーザが会話の流れに都合よくその発言を解釈してくれる可能性が高まる。
【００９１】
また、情報量を量る尺度として、キーワードの数を用いているので、文章を文法的に解析したりする必要がなく、簡単におおむね正しい情報量を見積もれる。断片的な発言で意味があいまいなのでユーザに興味や好奇心を抱かせ、会話を継続する欲求を持たせることができる。発言に利用したニュース記事の文章を記憶しておき、その後の発言で、そこから他の部分を切り出しているので、ユーザが持った興味や好奇心を少しずつ満足させていくことができる。また、これにより同一の話題で複数回の発言を行うことができ、１つの話題について継続して会話している感覚をユーザに与えることができる。これにより、今回のユーザの発言の中にキーワードを見つけられなかった場合や、見つけたとしてもそのキーワードでは発言を作り出せなかった場合であっても、適切な発言を作り出すことができる。
【００９２】
また、ニュース記事に含まれているユーザの発言との食い違いが少しずつしか明らかにされないので、一度にニュース記事の内容すべてが明かされるよりもユーザにとって受け入れやすく、ユーザがそれを容認して会話を進めてくれる可能性が高まる。
【００９３】
また、ニュース記事の文章を利用した発言では、その文章の持つ情報量のどれだけの割合が既に発言されたかを管理し、その文章の全部を発言せずに一定の割合が発言された時点でやめるので、そのニュース記事の文章のすべての内容が明かされることはなく、ユーザの発言との食い違いをあまり目立たないままにしておくことができる。
【００９４】
また、記事文データベース１９を用いた発言は、そればかりであれば、断片的な印象や、ぶっきらぼうな印象を与える可能性もあるが、会話文データベース１８を用いた発言に混ざってそれがなされるので、会話全体の印象が自然なものとなる。言い換えれば、小説や戯曲などから会話文データベース１８を作成した時には、そればかりを用いて発言すると、会話システムがやや喋りすぎの印象を与えてしまうことがあるが、記事文データベース１９による発言と組み合わせることでそのような印象を弱めることもできる。
【００９５】
また、ユーザの発言の中に含まれていたキーワードを履歴として残しておき、その後会話が進んだ後に、そのキーワードを用いて発言を行うので、話題が維持されて会話が行われているとユーザに感じさせることができる。また、これにより、ユーザの発言の中にキーワードを見つけられなかった場合や、見つけたとしてもそのキーワードでは発言を作り出せなかった場合にも、適切な発言を作り出すことができる。
【００９６】
従来の「人工無能」的な会話システムでは、データベースに登録されているパターン（「登録パターン」と称す）と、そのパターンに対応する返事のデータ（「登録返事」と称す）の関係は単純で固定されている。本発明では、データベースに登録されている文データが「登録返事」に対応するわけであるが、それ自身に「登録パターン」も含んでいる。そして、その「登録パターン」と「登録返事」の関係は「多対多」の関係としてアルゴリズムが関連付けられている。例えば、図６に示す記事文データベース１９に登録されている文データにおいて、「＊＊＊＊＊軍放送などによると、〜戦車は底辺の部分が裂けたという。」は、その直前のレコードである「＊＊＊＊＊自治区＊＊中部の＊＊＊人入植地近くで１４日夜、〜今後、紛争の激化は必至だ。」に含まれる多数の「登録パターン」（キーワード）の「登録返事」であるとともに、直後のレコードである「軍放送によると、〜と声明を出したという。」を「登録返事」とする多数「登録パターン」を含んでいる。そして、それ自身も自分自身が持つ多数の「登録パターン」の「登録返事」である。これにより、いろいろな「登録パターン」に対して多数の適切な「登録返事」が対応できる。このような関係を従来の「人工無能」的な会話システムの方式で登録するのは困難であり、また、大量の記憶領域が必要となってしまう。
【００９７】
なお、前記実施形態では、会話文データベース１８を小説から作成する例を示したが、例えば戯曲、映画やドラマのシナリオ、落語や漫才などの記録、実際の会話記録などを用いても良い。これらを用いる場合には、会話文の識別や時間関連情報の算出にそれぞれに独特の書式を利用することになる。例えば、戯曲では、それぞれのセリフは「」で囲まれていない場合が多い。セリフを言う役名を行頭に置き、それに続けて一定の空白を設けてセリフが記されていることが多い。会話文ではない文《ト書き》が（）に囲まれていたりもする。よって、このような戯曲の場合は、会話文の抽出に「」を利用せずにそれらの書式を利用すれば良い。
【００９８】
また、記事文データベース１９をインターネット上のニュース記事から作成する例を示したが、書籍など、文章を含むものであればどのようなものを利用しても良い。
【００９９】
また、時間関連情報の算出に改行コードと空白行を用いたが、句点（。）、引用符（「」）、章や段落や項目の見出しなどを用いても良い。また、文字数を用いても良い（各文の先頭文字間の文字数を利用するなど）。
【０１００】
また、時間関連情報をすべてのレコードに対して持つ例を示したが、時間関連情報の値が大きく変化するところにのみ持つなど、その一部だけを持っても良い。あるいは、時間関連情報を数値ではない形式で持っても良い。例えば、時間関連情報が大きく隔たるところに、空白のレコードなどを設けることにしても良い。
【０１０１】
また、キーワードを２文字以上の漢字、カタカナ、数字、またはこれらの組み合わせの単語としたが、他のものであっても良い。例えば、文字数の規定を変えても良いし、漢字とひらがなの混じった語句や、ひらがなだけからなる語句を含めたも良い。
【０１０２】
音声認識され漢字変換された後の文章からキーワードを抽出するものとしたが、漢字変換がされないひらがなでの状態で抽出しても良い。キーワードスポッティングなど、音としての認識の段階で抽出しても良い。これらの場合には、どの語句がキーワードなのかを知るための情報を設ければ良い。例えば、キーワードだけを登録したデータベースを用いれば良い。
【０１０３】
また、ユーザの発言の中にあるキーワードを会話文データベース１８や記事文データベース１９に探す例を示したが、ユーザの発言の中にあるもっと複雑なパターンを探しても良い。例えば、複数のキーワードのＡＮＤやＯＲの組み合わせ、語順の指定、ワイルドカード文字を含んだ指定、品詞など語句の種類の指定、などがあっても良い。会話文データベース１８や記事文データベース１９を探す時に用いるパターンは、ユーザの発言の中にあるパターンそのものではなく、そこから作り出されたパターンや、それに対応して選ばれたパターンであっても良い。
【０１０４】
また、情報量をキーワードの数で量ったが、他の手段を用いても良い。例えば、文字数、漢字の数、読みの数、名詞の数、動詞の数、それらの組み合わせなどを用いても良い。
【０１０５】
また、記事文から発言を作るときに、情報量を常に一定値以下にしたが、全体的には情報量を下げながら、時には情報量の多い発言をしても良い。例えば、発言に含まれるキーワードの数を１から５までの範囲でランダムに選ぶなどしても良い。
【０１０６】
また、１回の発言の情報量を削減するために文の一部を切り出す処理は、記事文に対してのみ行ったが、会話文に対して行っても良い。戯曲などには非常に長いセリフもあるが、それに適用すると効果がある場合がある。会話文データベース１８で発言されなかった時のみ、記事文データベース１９を使うとしたが、例えば会話文データベース１８で発言が作成可能な時にも、ある確率で記事文データベース１９を用いた発言をしても良い。全体として会話文データベース１８での発言が優先的に行われれば良い。
【０１０７】
また、ユーザ発言の中のキーワードを含む文以後の文を発言の候補としたが、それより前の文も、時間関連情報の差がある程度の範囲であるという条件で、候補に含めても良い。例えば、図４の会話文データベース１８に示すようなデータを持つ場合に、ユーザの発言の中に「名曲」というキーワードを見つけた時、前記第１実施形態であれば、「音痴みたいな顔をしているけど。」が選択されることはなかったが、時間関連情報の差が負で絶対値の小さいものも候補として、これが選択できるようにしても良い。
【０１０８】
記事文データベース１９の１つのレコードに改行コードまでの文章を当てはめたが、会話文データベース１８のように文単位で当てはめても良い。逆に、会話文データベース１８の１つのレコードを改行コードまで、あるいは、終端括弧の」まで（１回の発言全部）としても良い。
【０１０９】
また、前回発言記事文バッファ２１に前回の発言時に選択された文章そのものを記憶させたが、その文章に対応する記事文データベース１９のレコードを指定する情報を記憶させても良い。
【０１１０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【０１１１】
図１２は本発明の第２の実施形態に係る会話システムのハードウェア構成を示すブロック図である。なお、図１（第１の実施形態）と同一部分には同一符号を付して、その説明は省略するものとし、ここでは異なる点のみについて説明する。第２の実施形態における会話システムは、本来の機能である会話機能の他に、電子ブックリーダ機能と電子辞書機能を持つ。すなわち、図１２に示すように不揮発性メモリ１７の電子ブックデータ領域には、様々な電子ブックデータ３１が記憶されており、会話システムはユーザから指示に応じて、それらを朗読する（読み上げる）ことができる。また、不揮発性メモリ１７の電子辞書データ領域には、例えば「国語辞典」や「百科事典」などの様々な電子辞書データ３２が記憶されており、ユーザの質問に対して、対応する項目の内容を読み上げることができる。この電子辞書データ３２は、見出し語とその見出し語に対応する説明文とからなる。
【０１１２】
図１３および図１４は第２の実施形態における会話システムの会話処理の流れを示すフローチャートである。まず、これらのフローチャートで示される処理を説明する前に、理解を容易とするため、第２の実施形態としての会話処理の概要について説明する。
【０１１３】
第２実施形態では、電子ブックデータ３１と電子辞書データ３２を利用して会話における発言を作り出すことを特徴としている。電子ブックデータ３１は、電子ブックとして提供される書物情報そのものなので、会話文データベース１８とは異なり、会話文と会話文でない地の文（非会話文）、さらに空白行、作者名、タイトル、目次などが混在した特定の文章情報（テキストデータ）である。時間関連情報もそこには含まれていない。そこで、電子ブックデータ３１の中にユーザ発言の中にあるキーワードを見つけた場合には、それが文章かどうかを判定し（例えば、行毎に句読点や引用符があるかないかで判定すれば良い）、文章でない時（作者名や目次など）はそれを除外し、文章の場合にはそれが会話文であれば、前記第１実施形態における会話文データベース作成処理（図２）に相当する処理を行い、会話文ではない地の文であれば、前記第１実施形態における記事文データベース作成処理（図５）に相当する処理を行う。
【０１１４】
時間関連情報については、キーワードを見つけた文の近傍についてだけ、キーワードを見つけた文章との相対的な値をその時点で算出して利用する。ここでは、キーワードを見つけた文章が会話文の時は会話文を対象と、地の文（非会話文）であれば地の文を対象とする。これは、すぐ近くにあっても会話文と地の文の内容は普通は全く異なるからである。例えば、図３に示す文章例において、「彼は、いよいよキザになる。眼を細めて、遠くのラジオに耳を傾ける。」という地の文は、その前後の会話文が音楽の話題であるのに対して、登場人物の描写となっている。
【０１１５】
一方、ユーザ発言の中に含まれるキーワードが電子辞書データ３２の中の見出し語の項目に見つかった場合には、その見出し語の説明文に対して、基本的には前記第１の実施形態における記事文データベース処理（図５）に相当する処理を行うが、その際、上述したような記事不適切部分削除処理（図１１）に代えて、発言に含むと不適切になる辞書特有の記事や情報などを削除する処理を行う。削除すべき常套的な語句は不揮発性メモリ１７に設けられた不適切語句データベース３３に予め登録しておいて、これに一致する語句は自動的に削除すれば良い。辞書の書式は一貫しているので、それも利用して発言に不適切な情報は削除する。
【０１１６】
例えば、キーワード「腹黒」を使って、電子辞書データ３２の「国語辞典」の中から以下のような形式のデータが抽出されたとする。
【０１１７】
はらぐろ・い［腹黒い］
（形）［文］ク　はらぐろ・し
心がねじけている。心の中に悪巧みや陰謀をもっている。
「−・い人間」
［派生］――さ（名）
このようなデータの中で「心がねじけている。心の中に悪巧みや陰謀をもっている。」以外のすべてを削除する。この例の場合、句読点のない文は削除するというルールを適用すれば実現できる。あるいは、（形）［文］［派生］（名）などはこの辞書で予め役割を決められた記述なので、これらを予め不適切語句データベース３３に登録しておき、それを参照しながら削除しても良い。この例の場合には、括弧に囲まれた部分は削除するというルールでも良い。また、「−」を含む文は削除する、「」で囲まれる引用文は削除する、見出しの行と次の行は削除する、などのルールを適切に組み合わせて用いても良い。
【０１１８】
このようにして抽出された「心がねじけている。心の中に悪巧みや陰謀をもっている。」に対して、前記第１の実施形態における記事文切断発言処理と同じように情報量削減のための切り出しを行う。これにより、例えば、
ユーザ：「腹黒い奴だな」
会話システム：「心がねじけている」
などの会話を実現することができる。
【０１１９】
ここまで述べた第２の実施形態における会話処理の概略である。さらに、第２の実施形態では、前記第１の実施形態では本質的に不可能だった種類の会話も実現できる。すなわち、前記第１の実施形態においては、一般的な「人工無能」的な会話システムと同様に、発言を作り出す素材である会話文データベース１８や記事文データベース１９に登録されている文の意味を会話システム（のプログラム）は理解していない。しかし、電子辞書データ３２の持つ意味ならば大枠が理解できる。これは、例えば「国語辞典」や「百科事典」であれば、通常、見出し語があって、それに続いて記述されていることは、その見出し語に対する説明文であることによる。そこで、それを用いた会話が可能となる。この部分の会話処理が図１４に示す会話処理（２）である。
【０１２０】
会話処理（２）では、電子ブックデータ３１や電子辞書データ３２からユーザの発言に対する返事を作成できなかった場合に、以下のように、電子辞書データ３２の説明文を利用して会話システムの方から辻褄のあった一連の発言ができる。
【０１２１】
会話システム：「ところで、腹黒いってどういう意味だか知っている？」
ユーザ：「知らない」（ユーザが知らなかった場合）
会話システム：「心がねじけている。心の中に悪巧みや陰謀をもっている。ということなんだよ。どう？勉強になった？」
このように、辻褄のあった会話の流れを実現しているが、「シナリオ」方式のようにシナリオをいちいち作る手間がいらない。ここでも、不適切語句を削除しているので、電子ブックデータ３１を流用しているにも拘わらず不自然な会話とはならない。また、この手法を用いて必ず発言が作り出せるので、よくしゃべる会話システムを実現することができる。しかも、電子ブックデータ３１の膨大な数の項目が利用できるので、何度この手法を用いても毎回新鮮な話題を提供できる。
【０１２２】
以下に、第２の実施形態における会話システムを実現するための具体的な処理手順について、図１３及び図１４に示すフローチャートを参照して詳しく説明する。これらのフローチャートで示される処理は、本システムに備えられたＣＰＵ１１がプログラムを読み込むことで実行する。
【０１２３】
図１３に示すように、本システムの会話処理が起動されると、ＣＰＵ１１は、まず、ユーザの発言に含まれるキーワードを抽出し、そのキーワードを電子ブックデータ３１の中から探す（ステップＧ１１）。そして、電子ブックデータ３１の中にキーワードを含む文章があれば（ステップＧ１２のＹＥＳ）、ＣＰＵ１１はその文章が会話文であるか否かを例えば「」記号等を利用して判断する（ステップＧ１３）。
【０１２４】
ここで、会話文であった場合には（ステップＧ１３のＹＥＳ）、ＣＰＵ１１は電子ブックデータ３１の中で当該会話文以後に存在する会話文を見つけ出し、その相対的な時間関連情報を算出する（ステップＧ１４）。そして、ＣＰＵ１１はその算出した時間関連情報に基づいて返事とすべき会話文を選出し、これを発言とする（ステップＧ１５）。また、会話文以外の文章であった場合には（ステップＧ１３ＮＯ）、ＣＰＵ１１は電子ブックデータ３１の中で当該文章以後に存在する文章を見つけ出し、その相対的な時間関連情報を算出する（ステップＧ１６）。そして、ＣＰＵ１１はその算出した時間関連情報に基づいて返事とすべき文章を選出した後（ステップＧ１７）、さらに、その文章に対して前記記事文切断発言処理と同様の処理を施して会話として不適切な部分を削除して発言とする（ステップＧ１８）。
【０１２５】
一方、ユーザの発言に含まれるキーワードが電子ブックデータ３１に存在しなかった場合において（ステップＧ１２のＮＯ）、次にＣＰＵ１１は、そのユーザの発言に含まれるキーワードを電子辞書データ３２の見出し語の項目の中から探す（ステップＧ１９）。ユーザのキーワードと一致する見出し語の項目があれば（ステップＧ２０のＹＥＳ）、ＣＰＵ１１はその見出し語に対応した説明文から電子辞書特有の記号や表現を削除した後（ステップＧ２１）、さらに、その削除後の説明文に対して記記事文切断発言処理と同様の処理を施して会話として不適切な部分を削除して発言とする（ステップＧ２２）。
【０１２６】
また、電子辞書データ３２にもユーザのキーワードがなく、返事を作り出せない場合には（ステップＧ２０のＮＯ）、図１４に示す会話処理（２）が実行される。
【０１２７】
図１４に示すように、会話処理（２）では、ＣＰＵ１１は電子ブックデータ３１の中からランダムに項目を選ぶ（ステップＧ２３）。このとき選択された項目の見出し語をＷとすると、ＣＰＵ１１は例えば「ところで、Ｗってどういう意味だか知っている？」といったようユーザに対する質問文を見出し語Ｗを引用して生成し、これを発言する（ステップＧ２４）。ここで、ユーザの返事が「知っている」といった肯定文であった場合には（ステップＧ２５のＹＥＳ）、ＣＰＵ１１は例えば「知ってるんだったらいいや」といったような決めセリフを発言して（ステップＧ２６）、ここでの処理を終える。
【０１２８】
また、ユーザの返事が「知らない」といった肯定文であった場合には（ステップＧ２５のＹＥＳ）、ＣＰＵ１１は電子ブックデータ３１の中から見出し語Ｗに対応した説明文を抽出し、この説明文から会話として不適切な語句を削除して読み上げると共に、最後に例えば「ということなんだよ。どう？勉強になった？」といったような決めセリフを発言して（ステップＧ２８）、ここでの処理を終える。
【０１２９】
このように、電子ブックデータ３１や電子辞書データ３２は、会話システムがユーザと交わしている会話とは本来は全く関係ないが、これを利用して会話らしい発言を作り出すことができる。また、電子ブックデータ３１や電子辞書データ３２を利用して会話を行うので、別途会話用のデータを持たずに実現することができ、さらに、これらに登録されている膨大な情報を利用して常に広い範囲の話題に対応できるなどの利点がある。
【０１３０】
なお、前記第２の実施形態では、会話システムが電子ブックデータ３１や電子辞書データ３２を読み上げるとしたが、表示部を設けて表示しても良い。また、キーワードを見つけた文が会話文であれば発言に用いるものとして会話文を選び、地の文であれば地の文を選ぶとしたが、区別せずに選んでも良い。その場合には奇抜な展開の多い会話となる。
【０１３１】
要するに、本発明は前記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態で示される全構成要件から幾つかの構成要件が削除されても、「発明が解決しようとする課題」で述べた効果が解決でき、「発明の効果」の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【０１３２】
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フレキシブルディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、そのプログラム自体をネットワーク等の伝送媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムあるいは伝送媒体を介して提供されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【０１３３】
【発明の効果】
以上詳記したように本発明によれば、例えば小説、戯曲、映画やドラマのシナリオ、落語や漫才などの記録、実際の会話記録といったような会話文を含んだ既存の文章情報、あるいは、ニュース記事などのように会話文を含まない既存の文章情報を利用してデータベースを簡単に作成することができ、ユーザの発言に対し、このデータベースから会話として適切な文章を時間関連情報に基づいて選出して発言するようにしたことで、自然な流れで、しかも、ユニークな会話を実現できる。
【０１３４】
また、例えば電子ブックや電子辞書のように、会話システムがユーザと交わしている会話とは本来は全く関係ないものを利用して、会話らしい発言を作り出すこともできる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る会話システムのハードウェア構成を示すブロック図。
【図２】第１の実施形態における会話システムの会話文データベース作成処理を説明するためのフローチャート。
【図３】前記会話文データベース作成処理の対象となる小説のテキストファイルの一例を示す図。
【図４】前記図３のテキストファイルから作成された会話文データベースの一例を示す図。
【図５】第１の実施形態における会話システムの記事文データベース作成処理を説明するためのフローチャート。
【図６】前記記事文データベース作成処理によって作成される記事文データベースの一例を示す図。
【図７】第１の実施形態における会話システムの会話処理を説明するためのフローチャート。
【図８】第１の実施形態における会話システムの会話処理（２）を説明するためのフローチャート。
【図９】前記会話処理に含まれるレコード選択処理を詳しく説明するためのフローチャート。
【図１０】前記会話処理に含まれる記事文切断発言処理を詳しく説明するためのフローチャート。
【図１１】前記会話処理に含まれる記事文不適切部分削除処理を詳しく説明するためのフローチャート。
【図１２】本発明の第２の実施形態に係る会話システムのハードウェア構成を示すブロック図。
【図１３】第２の実施形態における会話システムの会話処理を説明するためのフローチャート。
【図１４】第２の実施形態における会話システムの会話処理（２）を説明するためのフローチャート。
【符号の説明】
１１…ＣＰＵ
１２…音声入力部
１３…Ａ／Ｄ変換部
１４…音声出力部
１５…Ｄ／Ａ変換部
１６…ワークメモリ
１７…不揮発性メモリ
１７ａ…プログラム
１８…会話文データベース
１９…記事文データベース
２０…キーワード履歴テーブル
２１…前回発言記事文バッファ
２２…累積発言文字数カウンタ
３１…電子ブックデータ
３２…電子辞書データ
３３…不適切語句データベース
【図１】
2004070876.tif 000003
【図２】
2004070876.tif 000004
【図３】
2004070876.tif 000005
【図４】
2004070876.tif 000006
【図５】
2004070876.tif 000007
【図６】
2004070876.tif 000008
【図７】
2004070876.tif 000009
【図８】
2004070876.tif 000010
【図９】
2004070876.tif 000011
【図１０】
2004070876.tif 000012
【図１１】
2004070876.tif 000013
【図１２】
2004070876.tif 000014
【図１３】
2004070876.tif 000015
【図１４】
2004070876.tif 000016