(57)【特許請求の範囲】
【請求項１】
ユーザにより入力されたユーザ発話を取得する取得部と、
前記ユーザ発話の状況を発話状況として特定する特定部と、
複数のシナリオを記憶するデータベースから前記ユーザ発話に対応するシナリオを選択する選択部であって、該複数のシナリオのそれぞれが、ユーザ発話と、該ユーザ発話に対するシステム発話と、階層的に定義されたシナリオ属性とを定義する、該選択部と、
前記選択部により選択されたシナリオで定義された前記システム発話を出力する出力部と
を備え、
前記取得部により取得されたユーザ発話を定義する２以上の前記シナリオが前記データベース内に候補シナリオとして存在する場合に、前記選択部が、該２以上の候補シナリオに定義されている２以上の前記シナリオ属性の階層関係と前記発話状況とに基づいて、前記２以上の候補シナリオから一つの前記シナリオを選択する、
対話装置。
【請求項２】
前記２以上の候補シナリオが、第１階層を示す前記シナリオ属性が定義された第１候補シナリオと、該第１階層よりも下位に位置する第２階層を示す前記シナリオ属性が定義された第２候補シナリオとを含み、
前記選択部が、前記発話状況が前記第２階層に対応する場合には前記第２候補シナリオを選択し、前記発話状況が前記第２階層に対応しない場合には前記第１候補シナリオを選択する、
請求項１に記載の対話装置。
【請求項３】
前記シナリオ属性が、それぞれが階層的に定義された複数のデータ項目を含み、
前記選択部が、前記２以上のシナリオ属性の各データ項目の階層関係と、前記発話状況とに基づいて、前記２以上の候補シナリオから前記一つのシナリオを選択する、
請求項１または２に記載の対話装置。
【請求項４】
前記選択部が、前記複数のデータ項目の並び順に沿って前記２以上のシナリオ属性の各データ項目と前記発話状況とを比較することで、前記２以上の候補シナリオから前記一つのシナリオを選択する、
請求項３に記載の対話装置。
【請求項５】
各データ項目が、第１階層を示す第１の値と、該第１階層よりも下位に位置する第２階層を示す第２の値とのうちの一方を示し、
前記選択部が、前記発話状況が前記第２階層に対応する場合には、前記第２の値を含む前記候補シナリオを選択し、前記発話状況が前記第２階層に対応しない場合には、前記第１の値を含む前記候補シナリオを選択する、
請求項４に記載の対話装置。
【請求項６】
前記シナリオ属性の最上位層がワイルドカードを用いて定義される、
請求項１〜５のいずれか一項に記載の対話装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は対話装置に関する。
【背景技術】
【０００２】
ユーザとの間で実行される自動対話を状況に応じながら進行させる仕組みが知られている。例えば、特許文献１には、ユーザの趣向に即して対話エージェントシステムの対話ルールを変更できる対話ルール変更装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１２０１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
自動対話を状況に応じながら柔軟に進めるためには、様々な状況に応じたシナリオ（ルール）を予め用意する必要がある。しかし、充分な数のシナリオを事前に用意することは容易ではない。そこで、シナリオの事前準備の負荷を軽減しつつ柔軟な自動対話を実現できる仕組みが望まれている。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る対話装置は、ユーザにより入力されたユーザ発話を取得する取得部と、ユーザ発話の状況を発話状況として特定する特定部と、複数のシナリオを記憶するデータベースからユーザ発話に対応するシナリオを選択する選択部であって、該複数のシナリオのそれぞれが、ユーザ発話と、該ユーザ発話に対するシステム発話と、階層的に定義されたシナリオ属性とを定義する、該選択部と、選択部により選択されたシナリオで定義されたシステム発話を出力する出力部とを備え、取得部により取得されたユーザ発話を定義する２以上のシナリオがデータベース内に候補シナリオとして存在する場合に、選択部が、該２以上の候補シナリオに定義されている２以上のシナリオ属性の階層関係と発話状況とに基づいて、２以上の候補シナリオから一つのシナリオを選択する。【０００６】
このような側面においては、同じユーザ発話が定義された複数のシナリオが存在する場合に、ユーザ発話の状況と個々のシナリオ属性とに基づいて一つのシナリオが選択され、選択されたシナリオに従ってシステム発話が出力される。したがって、ユーザ発話の状況に応じた柔軟な自動対話を実現できる。加えて、予め用意されるシナリオについては、ユーザ発話、システム発話、およびシナリオ属性の対応関係さえ定義しておけば十分なので、シナリオの事前準備の負荷を軽減することができる。
【発明の効果】
【０００７】
本発明の一側面によれば、シナリオの事前準備の負荷を軽減しつつ柔軟な自動対話を実現することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る対話装置の機能構成の一例を示す図である。
【図２】図１に示すボット機能の機能構成の一例を示す図である。
【図３】シナリオの一例を示す図である。
【図４】シナリオの別の例を示す図である。
【図５】実施形態に係る対話装置の動作の一例を示すシーケンス図である。
【図６】実施形態に係る対話装置に用いられるコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【００１０】
対話装置は、ユーザとの間で自動対話を実行するコンピュータである。ユーザとは対話装置を利用する人である。自動対話とはユーザとコンピュータ（このコンピュータは一般に「ボット」ともいわれる。）との間の会話のやり取りであり、この自動対話ではコンピュータはユーザからの発話に応答して自動的に発話する。発話とはユーザまたはコンピュータが発する一回分の話である。以下では、ユーザの発話を「ユーザ発話」ともいい、コンピュータの発話を「システム発話」ともいう。
【００１１】
対話装置の利用目的は何ら限定されない。例えば、対話装置はユーザの質問に回答するＦＡＱ（Frequently  Asked  Questions）システムで用いられてもよいし、ＦＡＱに限られない任意の話を行う雑談システムで用いられてもよい。あるいは、対話装置は、音声操作に基づいて任意のタスクを実行するバーチャルアシスタント機能に組み込まれてもよい。
【００１２】
対話装置はクライアント−サーバ型システムの一部であってもよいし、単体の装置であってもよい。本実施形態では、対話装置はサーバとして機能するコンピュータであるとする。図１は、実施形態に係る対話装置１０の機能構成の一例を示す図である。対話装置１０は通信ネットワークを介して少なくとも一つのユーザ端末９０と接続することができる。通信ネットワークの構成は何ら限定されず、例えばインターネットおよびイントラネットの少なくとも一方を用いて構成されてもよい。
【００１３】
ユーザ端末９０はユーザにより操作されるコンピュータ（クライアント端末）である。ユーザ端末９０は、ユーザにより入力された発話（ユーザ発話）を対話装置１０に送信する機能と、対話装置１０から受信した発話（システム発話）を出力する機能とを備える。ユーザ端末９０の種類は限定されず、例えば、据置型のコンピュータまたは装置であってもよいし、携帯型のコンピュータまたは装置であってもよい。ユーザ端末９０の具体的な例として、スマートフォン、タブレット端末、ウェアラブル端末、パーソナルコンピュータ、スマートスピーカ、スマートテレビ、およびスマート家電が挙げられるが、これらに限定されない。
【００１４】
対話装置１０は、ユーザ端末９０からユーザ発話を受信すると、そのユーザ発話に対応するシステム発話をシナリオに基づいて決定し、決定したシステム発話をユーザ端末９０に送信する。シナリオとは対話のルール（どのようなユーザ発話を受け付けた場合にどのようなシステム発話を出力するかを規定したルール）を規定するデータである。対話装置１０の特徴の一つは、或るユーザ発話に対して状況に応じたシステム発話を出力するためのシナリオの構成および選択にある。以下では、その特徴について特に詳しく説明する。
【００１５】
図１に示すように、対話装置１０は機能要素として、自動対話を統括的に制御するフロント機能２０と、特定の話題に関するシステム発話を出力する１以上のボット機能３０とを備える。フロント機能２０は、ユーザ端末９０から受信したユーザ発話を処理させるボット機能３０を決定し、そのボット機能３０にユーザ発話を転送する。その後、フロント機能２０は、そのボット機能３０から出力されたシステム発話をユーザ端末９０に応答として送信する。それぞれのボット機能３０は、フロント機能２０から受け付けたユーザ発話に対応するシステム発話をシナリオデータベース３１内のシナリオに基づいて決定し、決定したシステム発話をフロント機能２０に出力する。それぞれのボット機能３０は特定の知識を有するエキスパート・エージェントであり、フロント機能２０は１以上のボット機能３０を統括するメインエージェントである、ということができる。
【００１６】
図２はボット機能３０の機能構成の一例を示す図である。本実施形態では、それぞれのボット機能３０はシナリオデータベース３１、取得部３２、特定部３３、選択部３４、および出力部３５を備える。シナリオデータベース３１は、特定の話題に関する複数のシナリオを記憶するデータベースである。取得部３２は、ユーザにより入力されたユーザ発話を取得する機能要素である。特定部３３は、ユーザ発話の状況を発話状況として特定する機能要素である。発話状況（ユーザ発話の状況）とは、ユーザ発話が発生した際の状況である。例えば、発話状況はユーザ属性および環境情報の少なくとも一方を含む概念である。ユーザ属性とは、発話したユーザの性質または特徴を示す情報である。ユーザ属性の例として名前、性別、年齢、および住所が挙げられるが、これらに限定されない。環境情報とはユーザ発話が発生した際の世界（現実世界または仮想世界）の様子を示す情報である。環境情報の例として時刻、天気、および場所が挙げられる。また、ボット機能３０のアルゴリズムにより制御または決定されるボットの感情も環境情報の一例である。もちろん、環境情報はこれらに限定されない。選択部３４は、ユーザ発話に対応する一つのシナリオをシナリオデータベース３１から選択する機能要素である。出力部３５は選択されたシナリオで定義されたシステム発話を出力する機能要素である。
【００１７】
上述したように、対話装置１０は或るユーザ発話に対して状況に応じたシステム発話を出力する。このようなシステム発話を実現するために、シナリオデータベース３１は少なくとも一つのユーザ発話について複数のシナリオを記憶する。この複数のシナリオはシナリオ属性により区別することができる。シナリオ属性とは、一つのユーザ発話への応答であるシステム発話を決めるための条件である。シナリオ属性は発話状況に対応するデータ項目で規定され、したがって、例えばユーザ属性または環境情報に対応するデータ項目で規定され得る。
【００１８】
図３は、「おはよう」というユーザ発話に対応し得る複数のシナリオの例を示す。本実施形態では、シナリオはＡＩＭＬ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を応用して記述される前提とするが、シナリオを記述するための方法および規則は何ら限定されない。各シナリオは、シナリオ属性を示す「ｔｏｐｉｃ  ｎａｍｅ」という要素と、ルール（知識）の基本単位を示す１以上の「ｃａｔｅｇｏｒｙ」という要素とを含む。個々の「ｃａｔｅｇｏｒｙ」要素は、ユーザ発話を示す「ｐａｔｔｅｒｎ」要素と、そのユーザ発話への応答であるシステム発話を示す「ｔｅｍｐｌａｔｅ」要素とを含む。すなわち、個々のシナリオは、ユーザ発話と、そのユーザ発話に対応するシステム発話と、シナリオ属性とを定義する。
【００１９】
個々のシナリオは、階層的に定義されたシナリオ属性（「ｔｏｐｉｃ  ｎａｍｅ」要素）により区別される。「階層的に定義された」とは、或る第ｎ概念と（ｎは自然数）、該第ｎ概念に包含され且つ該第ｎ概念よりも具体的な第（ｎ＋１）概念とを含んで定義される関係のことをいう。階層の数は２以上であればいくつでもよい。また、ある一つの第ｎ概念について２以上の第（ｎ＋１）概念が複数してもよい。階層的に定義される関係は、「継承関係」、「オーバーライド」、「親子関係」などの用語で言い換えるか、または、これらの用語で示される概念を含むことができる。本実施形態では、第１階層が最も抽象的な概念を示し、階層の序数が大きくなるにつれて概念が具体的になっていくものとする。例えばシナリオ属性が第１階層、第２階層、および第３階層で定義されるならば、第１階層が最上位層であり、第３階層が最下位層である。
【００２０】
図３の例は、「おはよう」というユーザ発話に対応し得る三つのシナリオＡ１，Ａ２，Ａ３を示す。シナリオＡ１は、「おはよう」を含む複数のユーザ発話に対応可能なシナリオであるのに対して、シナリオＡ２，Ａ３は「おはよう」というユーザ発話に特化したシナリオであるとする。
【００２１】
これら三つのシナリオのそれぞれにおいて、シナリオ属性は性別、年齢、および天気という三つのデータ項目で構成される。個々のデータ項目には、一つの値が設定されてもよいし、値の範囲（例えば数値範囲）が設定されてもよいし、上位概念（カテゴリ）が設定されてもよいし、任意の値を受け付けることを示すワイルドカードが指定されてもよい。シナリオ属性が複数のデータ項目を含む場合には各データ項目が階層的に定義され、その結果、シナリオ属性が階層的に定義される。ワイルドカードは任意の値を包含する概念なので、最上位層（第１階層）に相当する。
【００２２】
シナリオＡ１では、性別については「男性」という特定の値が指定されているのに対し、年齢および天気についてはワイルドカード「＊」が指定されている。したがって、シナリオＡ１は、発話状況に対応する性別が「男性」である場合には、年齢および天気にかかわらず利用され得る。シナリオＡ２では、性別が「男性」であり、年齢が２０以上３９以下であり、天気がワイルドカードである。シナリオＡ３では、性別が「男性」であり、年齢がワイルドカードであり、天気が「晴れ」である。したがって、シナリオＡ１，Ａ２，Ａ３の中では、シナリオＡ１が第１階層であり、シナリオＡ２，Ａ３が第２階層であるといえる。シナリオＡ２，Ａ３については、年齢についてはシナリオＡ３の方が上位であるが、天気についてはシナリオＡ２の方が上位である。したがって、シナリオ属性を全体としてみると、シナリオＡ２，Ａ３のどちらが上位階層であるかを決めることはできない。
【００２３】
このように階層的に定義されたシナリオ属性に基づき、「おはよう」というユーザ発話の発話状況が、「男性」と、２０以上３９以下の年齢とを含むシナリオ属性に対応する場合には、シナリオＡ２に基づいて「おはよう」というシステム発話が出力され得る。その発話状況が、「男性」および「晴れ」を含むシナリオ属性に対応する場合には、シナリオＡ３に基づいて「おはよう。良い天気ですね。」というシステム発話が出力され得る。その発話状況が、「男性」を含むシナリオ属性に対応するがシナリオＡ２，Ａ３のいずれにも該当しない場合には、シナリオＡ１に基づいて「おはようございます」というシステム発話が出力される。したがって、シナリオＡ１は一般的に適用されるのに対してシナリオＡ２，Ａ３は特殊な場面で適用されるものであるといえる。
【００２４】
階層的に定義されたシナリオ属性を導入することで、様々な状況に応じたシナリオの集合を容易に準備することができる。図３の例では、第１階層に相当するシナリオＡ１は、想定される複数のユーザ発話に対応する一般的または汎用的なシステム発話を示す。これに対して、第２階層に相当するシナリオＡ２，Ａ３では、特殊な発話状況に対応するシナリオ属性およびシステム応答を定義すれば十分である。すなわち、特殊な発話状況に対応する新たなシナリオを作成する際には、あたかもオブジェクト指向プログラミングにおけるオーバーライドのように、１階層上のシナリオと異なる部分のみを定義すれば足りる。したがって、シナリオの事前準備の負荷が軽減される。
【００２５】
図４は、「自分は今どこにいますか」というユーザ発話に対応し得る複数のシナリオの別の例を示す。この例では、「自分は今どこにいますか」を含む複数のユーザ発話に対応可能なシナリオＢ１と、「自分は今どこにいますか」というユーザ発話に特化したシナリオＢ２とを示す。
【００２６】
これら二つのシナリオのそれぞれにおいて、シナリオ属性は性別、場所、および天気という三つのデータ項目で構成される。シナリオＢ１では、性別については「男性」という特定の値が指定されているのに対し、場所および天気についてはワイルドカード「＊」が指定されている。したがって、シナリオＢ１は、発話状況に対応する性別が「男性」である場合には、場所および天気にかかわらず利用され得る。シナリオＢ２では、性別が「男性」であり、場所が「＜公園名＞」であり、天気がワイルドカードである。場所「＜公園名＞」は、複数の公園を包含する上位概念（カテゴリ）を示す。本実施形態では“＜＞”という括弧は、上位概念（カテゴリ）を示す識別子として機能する。シナリオＢ１，Ｂ２の中では、シナリオＢ１が第１階層であり、シナリオＢ２が第２階層であるといえる。
【００２７】
このように階層的に定義されたシナリオ属性に基づき、「自分は今どこにいますか」というユーザ発話の発話状況が「男性」、「上野公園」、および「晴れ」を含む場合には、シナリオＢ２に基づいて「公園です」というシステム発話が出力される。その発話状況が、「男性」、「兼六園」、および「雨」を含む場合にも、シナリオＢ２に基づいて「公園です」というシステム発話が出力される。その発話状況が「男性」、「上野動物園」、および「晴れ」を含む場合には、シナリオＢ１に基づいて「どこかです」というシステム発話が出力される。シナリオＢ２は場所が公園に対応しないと適用されないので、シナリオＢ２の適用場面はシナリオＢ１よりも限られるといえる。
【００２８】
図５を参照しながら、ユーザ端末９０との間で自動対話を実行する際の対話装置１０の動作を説明する。図５は、対話装置１０の動作の一例を示すシーケンス図である。理解を容易にするために、図５では、対話装置１０のフロント機能２０およびボット機能３０を個々に示すと共に、一つのボット機能３０のみを示す。
【００２９】
ステップＳ１１では、ユーザ端末９０がユーザ発話データを対話装置１０に送信する。対話装置１０ではフロント機能２０がそのユーザ発話データを受信する。ユーザ発話データは、ユーザ発話および発話属性を含むデータである。
【００３０】
ユーザ端末９０におけるユーザ発話の取得方法は限定されない。例えば、ユーザ端末９０は音声入力されたユーザ発話（すなわち音声データで表されるユーザ発話）を取得してもよいし、文字列で入力されたユーザ発話（すなわちテキストデータで表されるユーザ発話）を取得してもよい。あるいは、ユーザ端末９０はユーザの指示に基づいて自動的にユーザ発話を音声データまたはテキストデータの形式で生成してもよい。
【００３１】
発話属性とはユーザ発話に関連する性質または特徴を示す情報であり、自動対話で用いられ得る。例えば、発話属性はシステム発話を決定するために用いられてもよい。発話属性の具体的な内容は限定されない。例えば、発話属性は、自動対話を利用しようとするユーザの性質または特徴を示すユーザ属性と、ユーザ端末９０の性質または特徴を示す端末属性とを含んでもよい。ユーザ属性を示すデータ項目の種類および個数は何ら限定されない。例えば、ユーザ属性は名前、性別、年齢、および住所から選択される一つであってもよいし、該４項目から任意に選択される２以上の項目の組合せであってもよい。あるいは、ユーザ属性は該４項目とは異なる他の１以上のデータ項目を含んでもよい。端末属性を示すデータ項目の種類および個数も何ら限定されない。例えば、端末属性は端末名、オペレーティングシステム名、および作動モードから選択される一つであってもよいし、該３項目から任意に選択される２以上の項目の組合せであってもよい。あるいは、端末属性は該３項目とは異なる他の１以上のデータ項目を含んでもよい。
【００３２】
ステップＳ１２では、フロント機能２０がそのユーザ発話データを処理させるボット機能３０を決定し、該当するボット機能３０にそのユーザ発話データを転送する。その後、そのボット機能３０の各機能要素が連携してそのユーザ発話データを処理する。
【００３３】
ステップＳ１３では、取得部３２がそのユーザ発話データからユーザ発話を取得する。
【００３４】
ステップＳ１４では、特定部３３が、取得されたユーザ発話の状況を発話状況として特定する。発話状況の特定方法は限定されない。一例として、特定部３３はユーザ発話データに含まれる発話属性の少なくとも一部を参照することで発話状況を特定してもよい。例えば、特定部３３は発話属性に含まれる性別または年齢をそのまま発話状況の少なくとも一部として特定してもよい。別の方法として、特定部３３はユーザ発話データ以外のデータから発話状況を特定してもよい。例えば、特定部３３は対話装置１０内のタイマから得られる日または時刻を発話状況の少なくとも一部として特定してもよい。あるいは、特定部３３は、任意のコンピュータシステム（図示せず）から気象データを取得し、その気象データで示される天気を発話状況の少なくとも一部として特定してもよい。あるいは、特定部３３はボット機能３０の感情を示すデータを発話状況の少なくとも一部として特定してもよい。さらに別の方法として、特定部３３はユーザ発話データおよび他のデータの双方を用いて発話状況を特定してもよい。
【００３５】
ステップＳ１５では、選択部３４がユーザ発話および発話状況に対応する一つのシナリオを選択する。選択部３４はシナリオデータベース３１を参照して、ユーザ発話に対応するシナリオを検索する。
【００３６】
ユーザ発話を定義するシナリオがシナリオデータベース３１内に一つしか存在しない場合には、選択部３４は発話状況を用いることなくその唯一のシナリオを選択する。
【００３７】
これに対して、ユーザ発話を定義する２以上のシナリオがシナリオデータベース３１内に存在する場合には、選択部３４はさらに発話状況も用いてその複数のシナリオから一つのシナリオを動的に選択する。本実施形態では、ユーザ発話を定義する２以上のシナリオを「候補シナリオ」ともいう。
【００３８】
選択部３４は、２以上の候補シナリオに定義されている２以上のシナリオ属性の階層関係と、特定部３３により特定された発話状況とに基づいて、それらの候補シナリオから一つのシナリオを選択する。具体的には、選択部３４は、発話状況に対応する候補シナリオの中で最も下位の階層に属する一つのシナリオを選択する。例えば、２以上の候補シナリオが、第１階層を示すシナリオ属性が定義された第１候補シナリオと、第２階層を示すシナリオ属性が定義された第２候補シナリオとを含むとする。この場合には、選択部３４は、発話状況が第２階層に対応する場合には第２候補シナリオを選択し、発話状況が第２階層に対応しない場合には第１候補シナリオを選択する。シナリオ属性が、それぞれが階層的に定義された複数のデータ項目を含む場合には、選択部３４は、２以上のシナリオ属性の各データ項目の階層関係と発話状況とに基づいて、２以上の候補シナリオから一つのシナリオを選択する。要するに、選択部３４は、発話状況に対応する候補シナリオの中でシナリオ属性が最も具体的に定義されている一つのシナリオを選択する。
【００３９】
複数の候補シナリオから一つのシナリオを選択するための探索方法は限定されない。一例として、選択部３４は、シナリオ属性を構成する複数のデータ項目の並び順に沿って２以上のシナリオ属性の各データ項目と発話状況とを比較することで一つのシナリオを選択してもよい。この処理に関するいくつかの具体例を以下に示す。
【００４０】
図３に示すシナリオＡ１，Ａ２，Ａ３が候補シナリオであるとする。また、性別「男性」、年齢「２５」、および天気「晴れ」を含む発話状況が特定されたとする。選択部３４はまずシステム属性の最初のデータ項目である性別と、発話状況の性別とを比較する。三つのシナリオのすべてが「男性」を定義しているので、選択部３４は次に、システム属性の２番目のデータ項目である年齢と、発話状況の年齢とを比較する。発話状況の年齢「２５」はワイルドカード（シナリオＡ１，Ａ３）に対応すると共に、そのワイルドカードよりも下位概念である「２０−３９」（シナリオＡ２）にも対応する。したがって、選択部３４はこの時点でシナリオＡ２を選択する。この例において、もし天気が２番目のデータ項目であれば、選択部３４はシナリオＡ３を選択する。
【００４１】
再び、シナリオＡ１，Ａ２，Ａ３が候補シナリオであるとする。また、性別「男性」、年齢「４０」、および天気「晴れ」を含む発話状況が特定されたとする。選択部３４はまずシステム属性の最初のデータ項目である性別と、発話状況の性別とを比較するが、この段階では一つのシナリオを選択することはできない。次に選択部３４は、システム属性の２番目のデータ項目である年齢と、発話状況の年齢とを比較する。発話状況の年齢「４０」はワイルドカード（シナリオＡ１，Ａ３）に対応するが、「２０−３９」（シナリオＡ２）には対応しない。したがって、選択部３４はこの時点でシナリオＡ２を除外してシナリオＡ１，Ａ３を選択する。次に選択部３４は、システム属性の３番目のデータ項目である天気と、発話状況の天気とを比較する。発話状況の天気「晴れ」はワイルドカード（シナリオＡ１）に対応すると共に、そのワイルドカードよりも下位概念である「晴れ」（シナリオＡ３）にも対応する。したがって、選択部３４はこの時点でシナリオＡ３を選択する。
【００４２】
このように、選択部３４は、複数の候補シナリオを並列に参照しながら、発話状況に対応する最下位層のシナリオ属性を特定することで一つのシナリオを選択してもよい。各データ項目が、第１階層を示す第１の値と、該第１階層よりも下位に位置する第２階層を示す第２の値とのうちの一方を示すとする。この場合、選択部３４は、発話状況が第２階層に対応する場合には、第２の値を含む候補シナリオを選択し、発話状況が第２階層に対応しない場合には、第１の値を含む候補シナリオを選択してもよい。選択部３４は複数のデータ項目の並び順に沿ってその処理を繰り返しながら、最終的に一つのシナリオを選択できる。
【００４３】
あるいは、選択部３４は、複数の候補シナリオのうち最下位層に位置する候補シナリオから順に探索し（すなわち、最下位層から最上位層へと向かいながら候補シナリオを探索し）、発話状況に対応するものとして最初に見つかったシナリオを選択してもよい。
【００４４】
図５に戻り、ステップＳ１６では、選択部３４が、選択した一つのシナリオで定義されたシステム発話を取得する。なお、図３および図４の例ではシステム発話は固定の文字列であるが、当然ながら、システム発話の少なくとも一部が動的に設定されてもよい。
【００４５】
ステップＳ１７では、出力部３５がそのシステム発話を含むシステム発話データをフロント機能２０に出力する。ユーザ発話と同様にシステム発話の表現方法も限定されず、例えば、システム発話は音声またはテキストで表現され得る。
【００４６】
ステップＳ１８では、フロント機能２０がそのシステム発話データをユーザ端末９０に送信する。フロント機能２０はシステム発話の出力形式を指定した上で（すなわち、システム発話を整形した上で）システム発話データを送信してもよい。ユーザ端末９０はそのシステム発話データを受信および出力し、これにより、ユーザはユーザ発話に対するボットの返事を認識できる。
【００４７】
ステップＳ１１〜Ｓ１８の処理は繰り返し実行され得る。上記のようにボット機能３０がユーザ発話および発話状況に応じてシナリオを選択することで、自動対話中の状況に応じたシステム発話がユーザに提供される。
【００４８】
上記実施の形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック（構成要素）は、ハードウェアおよび／またはソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的および／または論理的に結合した一つの装置により実現されてもよいし、物理的および／または論理的に分離した２つ以上の装置を直接的および／または間接的に（例えば、有線および／または無線）で接続し、これら複数の装置により実現されてもよい。
【００４９】
例えば、本発明の一実施の形態における対話装置１０は、本実施形態の処理を行うコンピュータとして機能してもよい。図６は、対話装置１０として機能するコンピュータ１００のハードウェア構成の一例を示す図である。コンピュータ１００は、物理的には、プロセッサ１００１、メモリ１００２、ストレージ１００３、通信装置１００４、入力装置１００５、出力装置１００６、バス１００７などを含んでもよい。
【００５０】
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニットなどに読み替えることができる。対話装置１０のハードウェア構成は、図に示した各装置を一つまたは複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
【００５１】
対話装置１０における各機能は、プロセッサ１００１、メモリ１００２などのハードウェア上に所定のソフトウェア（プログラム）を読み込ませることで、プロセッサ１００１が演算を行い、通信装置１００４による通信や、メモリ１００２およびストレージ１００３におけるデータの読み出しおよび／または書き込みを制御することで実現される。
【００５２】
プロセッサ１００１は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ１００１は、周辺装置とのインターフェース、制御装置、演算装置、レジスタなどを含む中央処理装置（ＣＰＵ：Central  Processing  Unit）で構成されてもよい。例えば、対話装置１０の少なくとも一部の機能要素はプロセッサ１００１で実現されてもよい。
【００５３】
また、プロセッサ１００１は、プログラム（プログラムコード）、ソフトウェアモジュールやデータを、ストレージ１００３および／または通信装置１００４からメモリ１００２に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施の形態で説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、対話装置１０の少なくとも一部の機能要素は、メモリ１００２に格納され、プロセッサ１００１で動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。上述の各種処理は、一つのプロセッサ１００１で実行される旨を説明してきたが、２以上のプロセッサ１００１により同時または逐次に実行されてもよい。プロセッサ１００１は、１以上のチップで実装されてもよい。なお、プログラムは、電気通信回線を介してネットワークから送信されてもよい。
【００５４】
メモリ１００２は、コンピュータ読み取り可能な記録媒体であり、例えば、ＲＯＭ（Read  Only  Memory）、ＥＰＲＯＭ（Erasable  Programmable  ROM）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  ROM）、ＲＡＭ（Random  Access  Memory）などの少なくとも一つで構成されてもよい。メモリ１００２は、レジスタ、キャッシュ、メインメモリ（主記憶装置）などと呼ばれてもよい。メモリ１００２は、本発明の一実施の形態に係る無線通信方法を実施するために実行可能なプログラム（プログラムコード）、ソフトウェアモジュールなどを保存することができる。
【００５５】
ストレージ１００３は、コンピュータ読み取り可能な記録媒体であり、例えば、ＣＤＲＯＭ（Compact  Disc  ROM）などの光ディスク、ハードディスクドライブ、フレキシブルディスク、光磁気ディスク（例えば、コンパクトディスク、デジタル多用途ディスク、Ｂｌｕ−ｒａｙ（登録商標）ディスク）、スマートカード、フラッシュメモリ（例えば、カード、スティック、キードライブ）、フロッピー（登録商標）ディスク、磁気ストリップなどの少なくとも一つで構成されてもよい。ストレージ１００３は、補助記憶装置と呼ばれてもよい。上述の記憶媒体は、例えば、メモリ１００２および／またはストレージ１００３を含むテーブル、サーバその他の適切な媒体であってもよい。
【００５６】
通信装置１００４は、有線および／または無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア（送受信デバイス）であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。例えば、対話装置１０の少なくとも一部の機能要素は通信装置１００４で実現されてもよい。
【００５７】
入力装置１００５は、外部からの入力を受け付ける入力デバイス（例えば、キーボード、マウス、マイクロフォン、スイッチ、ボタン、センサなど）である。出力装置１００６は、外部への出力を実施する出力デバイス（例えば、ディスプレイ、スピーカー、ＬＥＤランプなど）である。なお、入力装置１００５および出力装置１００６は、一体となった構成（例えば、タッチパネル）であってもよい。
【００５８】
また、プロセッサ１００１やメモリ１００２などの各装置は、情報を通信するためのバス１００７で接続される。バス１００７は、単一のバスで構成されてもよいし、装置間で異なるバスで構成されてもよい。
【００５９】
また、コンピュータ１００は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ：Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＰＬＤ（Programmable  Logic  Device）、ＦＰＧＡ（Field  Programmable  Gate  Array）などのハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部または全てが実現されてもよい。例えば、プロセッサ１００１は、これらのハードウェアの少なくとも一つで実装されてもよい。
【００６０】
以上説明したように、本発明の一側面に係る対話装置は、ユーザにより入力されたユーザ発話を取得する取得部と、ユーザ発話の状況を発話状況として特定する特定部と、複数のシナリオを記憶するデータベースからユーザ発話に対応するシナリオを選択する選択部であって、該複数のシナリオのそれぞれが、ユーザ発話と、該ユーザ発話に対するシステム発話と、階層的に定義されたシナリオ属性とを定義する、該選択部と、選択部により選択されたシナリオで定義されたシステム発話を出力する出力部とを備え、取得部により取得されたユーザ発話を定義する２以上のシナリオがデータベース内に候補シナリオとして存在する場合に、選択部が、該２以上の候補シナリオに定義されている２以上のシナリオ属性の階層関係と発話状況とに基づいて、２以上の候補シナリオから一つのシナリオを選択する。
【００６１】
このような側面においては、同じユーザ発話が定義された複数のシナリオが存在する場合に、ユーザ発話の状況と個々のシナリオ属性とに基づいて一つのシナリオが選択され、選択されたシナリオに従ってシステム発話が出力される。したがって、ユーザ発話の状況に応じた柔軟な自動対話を実現できる。加えて、予め用意されるシナリオについては、ユーザ発話、システム発話、およびシナリオ属性の対応関係さえ定義しておけば十分なので、シナリオの事前準備の負荷を軽減することができる。また、シナリオ属性が階層的に定義されるので、シナリオを効率的に作成および選択することができ、その結果、対話装置のハードウェア資源の使用量（例えば、プロセッサの負荷およびメモリ消費量）を抑制することが可能になる。
【００６２】
他の側面に係る対話装置では、２以上の候補シナリオが、第１階層を示すシナリオ属性が定義された第１候補シナリオと、該第１階層よりも下位に位置する第２階層を示すシナリオ属性が定義された第２候補シナリオとを含み、選択部が、発話状況が第２階層に対応する場合には第２候補シナリオを選択し、発話状況が第２階層に対応しない場合には第１候補シナリオを選択してもよい。より下位概念のシナリオ属性が定義されたシナリオを選択することで、自動対話の状況に適したシステム発話を出力することができる。
【００６３】
他の側面に係る対話装置では、シナリオ属性が、それぞれが階層的に定義された複数のデータ項目を含み、選択部が、２以上のシナリオ属性の各データ項目の階層関係と、発話状況とに基づいて、２以上の候補シナリオから一つのシナリオを選択してもよい。シナリオ属性の個々のデータ項目の階層関係を考慮することで、自動対話の状況に適したシステム発話を出力することができる。
【００６４】
他の側面に係る対話装置では、選択部が、複数のデータ項目の並び順に沿って２以上のシナリオ属性の各データ項目と発話状況とを比較することで、２以上の候補シナリオから一つのシナリオを選択してもよい。データ項目の並び順に沿って比較するという簡潔な方法を用いることで、対話装置のハードウェア資源の使用量を抑えつつ、一つのシナリオを簡単に選択することができる。
【００６５】
他の側面に係る対話装置では、各データ項目が、第１階層を示す第１の値と、該第１階層よりも下位に位置する第２階層を示す第２の値とのうちの一方を示し、選択部が、発話状況が第２階層に対応する場合には、第２の値を含む候補シナリオを選択し、発話状況が第２階層に対応しない場合には、第１の値を含む候補シナリオを選択してもよい。より下位の概念に相当する値を含むシナリオ属性が定義されたシナリオを選択することで、自動対話の状況に適したシステム発話を出力することができる。
【００６６】
他の側面に係る対話装置では、シナリオ属性の最上位層がワイルドカードを用いて定義されてもよい。ワイルドカードを用いることで、シナリオ作成時には想定していなかった発話状況が発生した場合にも何らかのシナリオを選択することができる。その結果、ユーザ発話に確実に応答することができる。
【００６７】
以上、本実施形態について詳細に説明したが、当業者にとっては、本実施形態が本明細書中に説明した実施形態に限定されるものではないということは明らかである。本実施形態は、特許請求の範囲の記載により定まる本発明の趣旨および範囲を逸脱することなく修正および変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とするものであり、本実施形態に対して何ら制限的な意味を有するものではない。
【００６８】
情報の通知は、本明細書で説明した態様および実施形態に限られず、他の方法で行われてもよい。例えば、情報の通知は、物理レイヤシグナリング（例えば、ＤＣＩ（Downlink  Control  Information）、ＵＣＩ（Uplink  Control  Information））、上位レイヤシグナリング（例えば、ＲＲＣ（Radio  Resource  Control）シグナリング、ＭＡＣ（Medium  Access  Control）シグナリング、報知情報（ＭＩＢ（Master  Information  Block）、ＳＩＢ（System  Information  Block）））、その他の信号またはこれらの組み合わせによって実施されてもよい。また、ＲＲＣシグナリングは、ＲＲＣメッセージと呼ばれてもよく、例えば、ＲＲＣ接続セットアップ（RRC  Connection  Setup）メッセージ、ＲＲＣ接続再構成（RRC  Connection  Reconfiguration）メッセージなどであってもよい。
【００６９】
本明細書で説明した各態様／実施形態は、ＬＴＥ（Long  Term  Evolution）、ＬＴＥ−Ａ（LTE-Advanced）、ＳＵＰＥＲ  ３Ｇ、ＩＭＴ−Ａｄｖａｎｃｅｄ、４Ｇ、５Ｇ、ＦＲＡ（Future  Radio  Access）、Ｗ−ＣＤＭＡ（登録商標）、ＧＳＭ（登録商標）、ＣＤＭＡ２０００、ＵＭＢ（Ultra  Mobile  Broadband）、ＩＥＥＥ  ８０２．１１（Ｗｉ−Ｆｉ）、ＩＥＥＥ  ８０２．１６（ＷｉＭＡＸ）、ＩＥＥＥ  ８０２．２０、ＵＷＢ（Ultra-Wideband）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、その他の適切なシステムを利用するシステムおよび／またはこれらに基づいて拡張された次世代システムに適用されてもよい。
【００７０】
本明細書で説明した各態様／実施形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書で説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
【００７１】
情報等は、上位レイヤ（または下位レイヤ）から下位レイヤ（または上位レイヤ）へ出力され得る。複数のネットワークノードを介して入出力されてもよい。
【００７２】
入出力された情報等は特定の場所（例えば、メモリ）に保存されてもよいし、管理テーブルで管理してもよい。入出力される情報等は、上書き、更新、または追記され得る。出力された情報等は削除されてもよい。入力された情報等は他の装置へ送信されてもよい。
【００７３】
判定は、１ビットで表される値（０か１か）によって行われてもよいし、真偽値（Boolean：trueまたはfalse）によって行われてもよいし、数値の比較（例えば、所定の値との比較）によって行われてもよい。
【００７４】
本明細書で説明した各態様／実施形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、所定の情報の通知（例えば、「Ｘであること」の通知）は、明示的に行うものに限られず、暗黙的（例えば、当該所定の情報の通知を行わない）ことによって行われてもよい。
【００７５】
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能などを意味するよう広く解釈されるべきである。
【００７６】
また、ソフトウェア、命令などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペアおよびデジタル加入者回線（ＤＳＬ）などの有線技術および／または赤外線、無線およびマイクロ波などの無線技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、これらの有線技術および／または無線技術は、伝送媒体の定義内に含まれる。
【００７７】
本明細書で説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、またはこれらの任意の組み合わせによって表されてもよい。
【００７８】
なお、本明細書で説明した用語および／または本明細書の理解に必要な用語については、同一のまたは類似する意味を有する用語と置き換えてもよい。
【００７９】
本明細書で使用する「システム」および「ネットワーク」という用語は、互換的に使用される。
【００８０】
また、本明細書で説明した情報、パラメータなどは、絶対値で表されてもよいし、所定の値からの相対値で表されてもよいし、対応する別の情報で表されてもよい。例えば、無線リソースはインデックスで指示されるものであってもよい。
【００８１】
上述したパラメータに使用する名称はいかなる点においても限定的なものではない。さらに、これらのパラメータを使用する数式等は、本明細書で明示的に開示したものと異なる場合もある。様々なチャネル（例えば、ＰＵＣＣＨ、ＰＤＣＣＨなど）および情報要素（例えば、ＴＰＣなど）は、あらゆる好適な名称によって識別できるので、これらの様々なチャネルおよび情報要素に割り当てている様々な名称は、いかなる点においても限定的なものではない。
【００８２】
ユーザ端末および移動通信端末は、当業者によって、加入者局、モバイルユニット、加入者ユニット、ワイヤレスユニット、リモートユニット、モバイルデバイス、ワイヤレスデバイス、ワイヤレス通信デバイス、リモートデバイス、モバイル加入者局、アクセス端末、モバイル端末、ワイヤレス端末、リモート端末、ハンドセット、ユーザエージェント、モバイルクライアント、クライアント、またはいくつかの他の適切な用語で呼ばれる場合もある。
【００８３】
本明細書で使用する「判断（determining）」、「決定（determining）」という用語は、多種多様な動作を包含する場合がある。「判断」、「決定」は、例えば、判定（judging）、計算（calculating）、算出（computing）、処理（processing）、導出（deriving）、調査（investigating）、探索（looking  up）（例えば、テーブル、テーブルまたは別のデータ構造での探索）、確認（ascertaining）した事を「判断」「決定」したとみなす事などを含み得る。また、「判断」、「決定」は、受信（receiving）（例えば、情報を受信すること）、送信（transmitting）（例えば、情報を送信すること）、入力（input）、出力（output）、アクセス（accessing）（例えば、メモリ中のデータにアクセスすること）した事を「判断」「決定」したとみなす事などを含み得る。また、「判断」、「決定」は、解決（resolving）、選択（selecting）、選定（choosing）、確立（establishing）、比較（comparing）などした事を「判断」「決定」したとみなす事を含み得る。つまり、「判断」「決定」は、何らかの動作を「判断」「決定」したとみなす事を含み得る。
【００８４】
「接続された（connected）」、「結合された（coupled）」という用語、またはこれらのあらゆる変形は、２またはそれ以上の要素間の直接的または間接的なあらゆる接続または結合を意味し、互いに「接続」または「結合」された２つの要素間に１またはそれ以上の中間要素が存在することを含むことができる。要素間の結合または接続は、物理的なものであっても、論理的なものであっても、或いはこれらの組み合わせであってもよい。本明細書で使用する場合、２つの要素は、１またはそれ以上の電線、ケーブルおよび／またはプリント電気接続を使用することにより、並びにいくつかの非限定的かつ非包括的な例として、無線周波数領域、マイクロ波領域および光（可視および不可視の両方）領域の波長を有する電磁エネルギーなどの電磁エネルギーを使用することにより、互いに「接続」または「結合」されると考えることができる。
【００８５】
本明細書で使用する「に基づいて」という記載は、別段に明記されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という記載は、「のみに基づいて」と「に少なくとも基づいて」の両方を意味する。
【００８６】
本明細書で「第１の」、「第２の」などの呼称を使用した場合においては、その要素へのいかなる参照も、それらの要素の量または順序を全般的に限定するものではない。これらの呼称は、２つ以上の要素間を区別する便利な方法として本明細書で使用され得る。したがって、第１および第２の要素への参照は、２つの要素のみがそこで採用され得ること、または何らかの形で第１の要素が第２の要素に先行しなければならないことを意味しない。
【００８７】
「含む（include）」、「含んでいる（including）」、およびそれらの変形が、本明細書あるいは特許請求の範囲で使用されている限り、これら用語は、用語「備える（comprising）」と同様に、包括的であることが意図される。さらに、本明細書あるいは特許請求の範囲において使用されている用語「または（or）」は、排他的論理和ではないことが意図される。
【００８８】
本明細書において、文脈または技術的に明らかに一つのみしか存在しない装置である場合以外は、複数の装置をも含むものとする。
【符号の説明】
【００８９】
１０…対話装置、２０…フロント機能、３０…ボット機能、３１…シナリオデータベース、３２…取得部、３３…特定部、３４…選択部、３５…出力部、９０…ユーザ端末。
【図１】
0006960049.tif 000002
【図２】
0006960049.tif 000003
【図３】
0006960049.tif 000004
【図４】
0006960049.tif 000005
【図５】
0006960049.tif 000006
【図６】
0006960049.tif 000007