(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
[1.対話制御システムの全体構成]
以下、本発明に関わる対話制御システムの実施形態の例を説明する。
図1は、対話制御システムの全体構成を示す図である。
図1に示すように、対話制御システムSは、ユーザ端末10とサーバ30とを含む。ユーザ端末10とサーバ30は、インターネットなどのネットワークに接続可能である。
【0023】
なお、
図1では、ユーザ端末10とサーバ30を1台ずつ示しているが、対話制御システムSは、複数のユーザ端末10を含んでもよいし、複数のサーバ30を含んでもよい。また、対話制御システムSは、ユーザ端末10とサーバ30以外のコンピュータを含んでもよい。
【0024】
ユーザ端末10は、ユーザが操作するコンピュータである。例えば、ユーザ端末10は、スマートフォンなどの携帯電話、タブレット型コンピュータなどの携帯端末、パーソナルコンピュータ、又はスマートスピーカ(AIスピーカ)等である。
図1に示すように、対話制御システムSは、制御部11、記憶部12、通信部13、操作部14、表示部15、音声入力部16、及び音声出力部17を含む。
【0025】
制御部11は、少なくとも一つのマイクロプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ROM、EEPROM、フラッシュメモリ、又はハードディスクなどの不揮発性メモリである。
【0026】
通信部13は、有線通信又は無線通信用の通信インタフェースであり、ネットワークを介してデータ通信を行う。操作部14は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイス、キーボード、又はボタン等である。操作部14は、ユーザによる操作内容を制御部11に伝達する。
【0027】
表示部15は、液晶表示部又は有機EL表示部等である。表示部15は、制御部11の指示に従って画面を表示する。音声入力部16は、少なくとも1つのマイクを含む。音声入力部16は、音声を検出してデジタルデータに変換する。音声出力部17は、少なくとも1つのスピーカを含む。音声出力部17は、音声データに基づいて音声を出力する。なお、音声データは、任意のデータ形式を適用可能であり、例えば、HE−AAC、MP3、Vorbis、WAV、又はFLACといった形式を適用可能である。
【0028】
サーバ30は、サーバコンピュータである。例えば、サーバ30は、制御部31、記憶部32、及び通信部33を含む。制御部31、記憶部32、及び通信部33のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様のため説明を省略する。
【0029】
なお、記憶部12,32に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、ユーザ端末10及びサーバ30のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器とデータの入出力をするための入出力部(例えば、USBポート)が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して供給されるようにしてもよい。
【0030】
[2.対話制御システムの概要]
対話制御システムSでは、ユーザは、対話型のエージェントと対話する。エージェントは、所定のタスクを実行するソフトウェアであり、ユーザの入力内容に基づいてタスクを実行する。対話側のエージェントは、ユーザと対話することでタスクを実行するエージェントであり、ユーザの発言内容を入力にしてタスクを実行する。ユーザは、音声入力を利用して発言してもよいし、テキスト入力を利用して発言してもよい。同様に、エージェントは、音声を利用して返答してもよいし、テキスト又は画像を利用して返答してもよい。
【0031】
エージェントが実行するタスクは、任意の内容であってよく、例えば、商品の購入を支援するタスク、サービスの利用を支援するタスク、ウェブサイト・音楽・画像などのコンテンツの検索を支援するタスク、又は、単にユーザの話し相手となるタスクであってもよい。
【0032】
本実施形態では、インターネットにおける商品の購入を支援するタスクを実行するエージェントを例に挙げて説明する。例えば、ユーザがユーザ端末10を操作してサーバ30にアクセスすると、インターネット上の仮想市場を示す仮想市場画面が表示部15に表示される。
【0033】
図2は、仮想市場画面の一例を示す図である。なお、ここでは、ユーザ端末10がスマートフォンである場合を例に挙げて説明する。
図2に示すように、仮想市場画面Gには、仮想空間における仮想市場の様子が表示される。例えば、仮想空間には、複数の店舗の3次元モデルが配置されており、ユーザは仮想空間内を移動可能である。
【0034】
仮想市場画面Gには、エージェントを示すエージェント画像A1,A2が表示される。以降では、エージェント画像A1,A2を特に区別する必要のないときは、単にエージェント画像Aと記載する。本実施形態では、仮想市場内の店舗ごとにエージェントが用意されており、エージェント画像Aは、各店舗の店員を模した画像となっている。例えば、エージェント画像Aは、実在の人物の画像であってもよいし、架空のキャラクタの画像であってもよい。
【0035】
図2の仮想市場画面Gは、仮想市場内の魚屋と八百屋の前に、ユーザが仮想的に立った状態を示している。例えば、エージェント画像A1は、魚屋のエージェントを示し、エージェント画像A2は、八百屋のエージェントを示す。この状態でユーザが何らかの発言をすると、何れかのエージェントが、商品の購入を支援するために返答する。
【0036】
図3は、ユーザとエージェントとの間で対話が行われる様子を示す図である。
図3に示すように、例えば、ユーザが「今の時期のおすすめは何?」と発言すると(
図3のS1)、ユーザ端末10は、音声入力部16が検出した音声データをサーバ30に送信する。サーバ30は、受信した音声データを解析してテキストデータに変換すると、魚屋のエージェントと八百屋のエージェントにテキストデータを入力する。
【0037】
各エージェントは、入力されたテキストデータに基づいて、返答内容と蓋然性を計算する。返答内容は、エージェントに対応する店舗の商品に関する内容となる。例えば、魚屋のエージェントであれば、魚屋が取り扱う魚に関する内容となり、八百屋のエージェントであれば、八百屋が取り扱う野菜に関する内容となる。
【0038】
蓋然性は、例えば、ユーザが商品を欲する確率であり、返答内容の精度とうこともできる。別の言い方をすれば、蓋然性は、ユーザが興味を湧く返答になっている確率である。本実施形態では、返答内容が商品の内容なので、蓋然性が高いほど、返答内容が示す商品を欲する確率が高く、蓋然性が低いほど当該確率が低い。
【0039】
ここでは、「今」「時期」「おすすめ」といった単語を含むテキストデータが入力されたので、例えば、各エージェントは、これらの単語を検索キーワードにして、自身に対応する店舗の商品を検索し、検索時に算出した各商品のスコアを蓋然性として取得する。スコアは、キーワードの適合度であり、検索精度を示す情報ということもできる。スコアが高いほど検索キーワードに適合し、スコアが低いほど検索キーワードに適合していない。
【0040】
例えば、魚屋のエージェントは、魚屋の商品データベースDB2を検索し、商品説明の中にスコアの高い「スズキ」という商品がヒットしたとする。この場合、魚屋エージェントは、この商品名を含む「スズキはいかがでしょうか?」といった返答内容を生成し、スコアが高いので蓋然性も高く設定する。
【0041】
一方、八百屋エージェントは、八百屋の商品データベースDB2を検索したが、あまりスコアの高い商品がヒットしなかったとする。この場合、八百屋エージェントは、何らかの返答内容を生成するが、スコアが低いので蓋然性も低く設定する。なお、ここでは、各エージェントは、蓋然性が低くても返答内容を返す場合を説明するが、蓋然性が閾値未満の場合には、返答内容を返さないようにしてもよい。
【0042】
サーバ30は、各エージェントから返答内容と蓋然性を取得すると、蓋然性が高い方(ここでは、魚屋のエージェント)の返答内容を示す音声データを生成する。サーバ30は、音声データをユーザ端末10に送信し、魚屋のエージェントの返答として、「スズキはいかがでしょうか?」といった音声がユーザ端末10の音声出力部17から出力される(
図3のS2)。
【0043】
これに対し、例えば、ユーザが「スズキか。いいね。」といった返答をしたとすると(
図3のS3)、この返答内容を示すテキストデータが各エージェントに入力される。各エージェントは、今回の返答内容だけでなく、それまでの対話の流れも考慮して、次の返答内容と蓋然性を計算する。ここでは、各エージェントは、魚屋のエージェントが「スズキはいかがでしょうか?」といった返答をしているので、この返答内容も考慮する。
【0044】
例えば、魚屋エージェントは、「スズキ」と一緒に提案すべき商品を検索するが、魚屋の商品データベースDB2の中に、このような商品が存在しなかったとする。この場合、魚屋エージェントは、何らかの返答内容を決定するが、商品がヒットしていないので蓋然性を低く設定する。
【0045】
一方、八百屋エージェントは、「スズキ」と一緒に提案すべき商品を検索する。例えば、「スズキのトマトスープ」という料理で使用される「トマト」が、「スズキ」と一緒に提案すべき商品として定義されており、八百屋の商品データベースDB2の中に、この商品が存在したとする。この場合、八百屋エージェントは、この商品名を含む「トマトもご一緒にいかがでしょうか?」といった返答内容を生成し、商品がヒットしたので蓋然性を高く設定する。
【0046】
サーバ30は、各エージェントの返答内容と蓋然性を取得すると、蓋然性が高い方(ここでは、八百屋のエージェント)の返答内容を示す音声データを生成する。サーバ30は、音声データをユーザ端末10に送信し、八百屋のエージェントの返答として、「トマトもご一緒にいかがでしょうか?」といった音声がユーザ端末10の音声出力部17から出力される(
図3のS4)。
【0047】
これに対し、例えば、ユーザは「よし、両方とも買おう。」といった返答をしたとすると(
図3のS5)、「買おう」という購入の意志を示す単語を含むテキストデータが入力されたので、各エージェントは、自身がオススメした商品をユーザの買い物かごに追加し、「ありがとうございます。」といった返答内容が出力される(
図3のS6)。この場合、ユーザの買い物かごには、魚屋の「スズキ」と、八百屋の「トマト」と、が追加される。以降、ユーザは、買い物かごに入ったこれらの商品を購入することができる。
【0048】
以上説明した例では、魚屋エージェントがすすめた「スズキ」という商品をユーザが肯定した場合を説明したが、ユーザの反応によっては、その後のエージェントの返答内容が変わる。
【0049】
図4は、ユーザの反応によってエージェントの返答内容が変わる様子を示す図である。
図4の例では、ユーザが「今の時期のおすすめは何?」と発言すると(
図4のS10)、魚屋エージェントが「スズキはいかがでしょうか?」と返答する(
図4のS11)ところまでは、
図3と同様とする。
【0050】
これに対し、ユーザが「うーん。他にないの?」といった返答をしたとする(
図3のS12)。この場合、
図3の例とは異なり、魚屋エージェントが提案した「スズキ」という商品をユーザが否定しているので、各エージェントは、ユーザの反応を考慮して、次の返答内容と蓋然性を計算する。
【0051】
例えば、魚屋エージェントは、「スズキ」とはタイプの異なる商品を検索し、魚屋の商品データベースDB2の中に、「マグロ」という商品が存在したとする。この場合、魚屋エージェントは、この商品名を含む「では、マグロはいかがでしょうか?」といった返答内容を生成し、商品がヒットしたので蓋然性を高く設定する。
【0052】
一方、八百屋エージェントは、「スズキ」とはタイプの異なる商品を検索するが、八百屋の商品データベースDB2には、このような商品が存在しなかったとする。この場合、魚屋エージェントは、何らかの返答内容を決定するが、商品がヒットしていないので蓋然性を低く設定する。
【0053】
サーバ30は、各エージェントの返答内容と蓋然性を取得すると、蓋然性が高い方(ここでは、魚屋のエージェント)の返答内容を示す音声データを生成する。サーバ30は、音声データをユーザ端末10に送信し、魚屋のエージェントの返答として、「では、マグロはいかがでしょうか?」といった音声がユーザ端末10の音声出力部17から出力される(
図3のS13)。
【0054】
これに対し、例えば、ユーザが「それにする!」といった返答をしたとすると(
図3のS14)、各エージェントは、今回の「それにする!」という返答内容だけでなく、それまでの対話の流れも考慮して、次の返答内容と蓋然性を計算する。ここでは、魚屋のエージェントによって「では、マグロはいかがでしょうか?」といった返答がなされているので、この返答内容も考慮されることになる。なお、魚屋のエージェントによる「スズキはいかがでしょうか?」といった返答も考慮されてもよいが、ここでは、ユーザから否定的な反応が返ってきているので考慮されないものとする。
【0055】
例えば、魚屋エージェントは、「マグロ」と一緒に提案すべき商品を検索するが、魚屋の商品データベースDB2の中に、このような商品が存在しなかったとする。この場合、魚屋エージェントは、何らかの返答内容を決定するが、商品がヒットしていないので蓋然性を低く設定する。
【0056】
一方、八百屋エージェントは、「マグロ」と一緒に提案すべき商品を検索する。例えば、「マグロとキュウリのアヒポキ」という料理で使用される「キュウリ」が、「マグロ」と一緒に提案すべき商品として定義されており、八百屋の商品データベースDB2の中に、この商品が存在したとする。この場合、八百屋エージェントは、「キュウリ」の名称を含む「キュウリもご一緒にいかがでしょうか?」といった返答内容を生成し、商品がヒットしたので蓋然性を高く設定する。
【0057】
サーバ30は、各エージェントの返答内容と蓋然性を取得すると、蓋然性が高い方(ここでは、八百屋のエージェント)の返答内容を示す音声データを生成する。サーバ30は、音声データをユーザ端末10に送信し、八百屋のエージェントの返答として、「キュウリもご一緒にいかがでしょうか?」といった音声がユーザ端末10の音声出力部17から出力される(
図3のS15)。以降、ユーザが購入の意志を示した場合に、「マグロ」と「キュウリ」が買い物かごに追加される点については、
図3と同様である。
【0058】
なお、
図3及び
図4の例では、魚屋のエージェントが提案した商品に対し、ユーザが反応を示した後に、八百屋のエージェントが商品を提案する場合を説明したが、八百屋のエージェントは、特にユーザの反応を待たずに商品を提案してもよい。
【0059】
例えば、
図2及び
図3の例において、魚屋のエージェントが「スズキはいかがでしょうか?」と提案した直後に、八百屋のエージェントが「トマトもご一緒にいかがでしょうか?」と続けて提案してもよい。また例えば、
図3の例において、魚屋のエージェントが「では、マグロはいかがでしょうか?」と提案した直後に、八百屋のエージェントが「キュウリもご一緒にいかがでしょうか?」と続けて提案してもよい。
【0060】
更に、八百屋のエージェントは、魚屋のエージェントの返答の蓋然性に基づいて、ユーザの反応を待たずに商品を提案するか否かを決定してもよい。例えば、魚屋のエージェントの返答内容の蓋然性が閾値以上の場合には、ユーザが肯定する確率が極めて高いことになるので、八百屋のエージェントは、特にユーザの反応を待たずに商品をすすめるようにしてもよい。一方、魚屋のエージェントの返答内容の蓋然性が閾値未満の場合には、ユーザが肯定する確率がさほど高くないことになるので、八百屋のエージェントは、ユーザの反応を待つようにしてもよい。
【0061】
以上のように、本実施形態の対話制御システムSは、ユーザと複数のエージェントとの間で対話が行われる場合に、各エージェントが、直近のユーザの発言や自身の返答内容だけでなく、他のエージェントの返答内容も考慮して返答内容を生成することにより、対話の流れに合った返答をする場合のユーザの負担を軽減するようにしている。以降、この技術の詳細を説明する。
【0062】
[3.対話制御システムにおいて実現される機能]
図5は、対話制御システムSで実現される機能の一例を示す機能ブロック図である。
図5に示すように、対話制御システムSでは、データ記憶部300、取得部301、開始判定部302、終了判定部303、複数の対話部304、決定部305、出力制御部306、及び実行部307が実現される。本実施形態では、これら各機能がサーバ30で実現される場合を説明する。なお、
図5では、対話部304を2つ示しているが、対話部304は、3つ以上であってもよい。
【0063】
[3−1.データ記憶部]
データ記憶部300は、記憶部32を主として実現される。データ記憶部300は、ユーザと対話するために必要なデータを記憶する。ここでは、データ記憶部300が記憶するデータの一例として、仮想市場データベースDB1、商品データベースDB2、対話データベースDB3、定型文データベースDB4、及び返答データベースDB5を説明する。
【0064】
図6は、仮想市場データベースDB1の一例を示す図である。
図6に示すように、仮想市場データベースDB1は、仮想市場の店舗に関する情報を格納するためのデータベースである。例えば、仮想市場データベースDB1には、店舗を一意に識別する店舗ID、店舗の基本情報、店舗のエージェントを一意に識別するエージェントID、及び仮想3次元空間における店舗の3次元モデルに関する3次元モデル情報などが格納される。
【0065】
基本情報は、インターネット上の店舗に関する情報であればよく、例えば、店舗名、運営会社名、住所、電話番号、メールアドレスといった情報である。3次元モデル情報は、例えば、仮想3次元空間における店舗の位置、店舗の3次元モデル、店員の3次元モデル、及びこれらにマッピングするテクスチャなどの情報である。
【0066】
図7は、商品データベースDB2の一例を示す図である。
図7に示すように、商品データベースDB2は、各店舗の商品に関する情報を格納するためのデータベースである。ここでは、店舗ごとに、商品データベースDB2が用意されている場合を説明するが、全店舗で共通の商品データベースDB2としてもよい。
【0067】
図7では、仮想市場における魚屋の商品データベースDB2を例に挙げているが、他の店舗の商品データベースDB2も同様のデータ構造である。例えば、商品データベースDB2には、店舗ID、商品を一意に識別する商品ID、及び商品情報が格納される。
【0068】
商品情報は、商品に関する情報であり、例えば、カテゴリ、商品名、価格、キーワード、商品説明、及び商品画像といった情報が格納される。カテゴリは、商品の分類情報であり、ジャンルとも呼ばれるものである。商品名は、商品の名称であり、例えば、店舗により入力される。価格は、商品の値段を示す数値である。
【0069】
キーワードは、商品の検索用のキーワードであり、例えば、店舗により入力されてもよいし、商品説明中の単語がキーワードとして抽出されてもよい。商品説明は、商品の説明を示す文章又は表などであり、例えば、店舗により入力される。商品画像は、商品を撮影した画像であってもよいし、商品に似た被写体を撮影した画像であってもよい。なお、商品情報の内容は、上記の例に限られない。商品情報は、商品に関する任意の内容を含むことができ、例えば、商品の特徴を数値化した特徴ベクトルを含んでもよい。
【0070】
図8は、対話データベースDB3の一例を示す図である。
図8に示すように、対話データベースDB3は、ユーザとエージェントとの対話に関する情報を格納するためのデータベースである。例えば、対話データベースDB3には、対話制御システムS内で行われている対話を一意に識別する対話ID、対話中のユーザを一意に識別するユーザID、及びコンテクスト情報が格納される。
【0071】
コンテクスト情報は、対話のコンテクストに関する情報である。コンテクストは、対話の一連の流れ(脈絡)であり、対話における発言の履歴ということもできる。例えば、コンテクスト情報には、発言者、発言内容、店舗ID、商品ID、及び発言時間といった情報が格納される。コンテクスト情報に含まれる各レコードは、ユーザ又はエージェントの個々の発言を示す。
【0072】
発言者は、ユーザ又はエージェントの何れか一方なので、例えば、ユーザID又はエージェントIDが格納される。発言内容は、ユーザ又はエージェントの発言内容である。例えば、音声データが変換されたテキストデータが、ユーザの発言内容として格納される。また例えば、エージェントが生成した返答情報が示す返答内容が、エージェントの発言内容として格納される。
【0073】
店舗IDは、商品を提案したエージェントの店舗の店舗IDである。商品IDは、エージェントが提案した商品の商品IDである。店舗IDと商品IDは、エージェントが商品を提案した場合に格納される。このため、発言者にエージェントIDが格納されているレコードに店舗IDと商品IDが格納される。店舗IDと商品IDを格納しておくことにより、ユーザが購入の意志を示した場合に、後述する実行部307に、商品を買い物かごに入れる処理を実行させることができる。発言時間は、ユーザ又はエージェントが発言した時間である。発言時間が示すように、コンテクスト情報には、ユーザ又はエージェントの発言が時系列的に格納される。
【0074】
図9は、定型文データベースDB4の一例を示す図である。
図9に示すように、定型文データベースDB4は、返答の定型文に関する情報を格納するためのデータベースである。例えば、定型文データベースDB4には、出力条件と定型文のテキストとが格納される。
【0075】
出力条件は、定型文を選択するための条件であり、定型文が選択される場面を示す。例えば、出力条件は、直近のユーザの発言内容だけに関する条件であってもよいし、現時点までのコンテクストに関する条件であってもよい。詳細は後述するが、出力条件が満たされるか否かは、コンテクスト情報に基づいて判定される。
【0076】
図9のデータ格納例であれば、例えば、対話における最初の返答では、「<商品名>はいかがでしょうか?」といった定型文が選択される。なお、定型文のうち「<商品名>」の部分はタグ情報であり、任意の文字列を挿入可能である。例えば、「<商品名>」の部分には、エージェントが検索した商品名が挿入される。なお、定型文に挿入されるのは、商品情報に含まれる情報であればよく、商品名以外にも、商品画像などであってもよい。この場合、エージェントの返答として、商品画像とともに音声が出力されてもよい。
【0077】
また例えば、直近で提案された商品をユーザが肯定した場合には、「<商品名>もご一緒にいかがでしょうか?」といった定型文が選択される。また例えば、直近で提案された商品をユーザが否定した場合には、「では、<商品名>はいかがでしょうか?」といった定型文が選択される。また例えば、ユーザが購入の意志を示した場合には、「ありがとうございます。」といった定型文が選択される。
【0078】
図10は、返答データベースDB5の一例を示す図である。
図10に示すように、例えば、返答データベースDB5は、ユーザに提案すべき商品に関する情報を格納するためのデータベースである。例えば、返答データベースDB5には、対話のコンテクストに関するコンテクスト条件と、提案すべき商品と、の関係が定義されている。
【0079】
コンテクスト条件は、対話で登場した商品に関する条件であり、例えば、商品名が格納される。なお、コンテクスト条件は、商品情報に含まれる内容であればよく、商品名以外にも、商品のカテゴリや商品説明内の単語等が格納されていてもよい。このでは、コンテクスト条件は、直近で提案された商品の商品名と、それに対するユーザの反応と、に関する条件である。ユーザの反応は、例えば、肯定、否定、何れでもないといった内容が格納される。詳細は後述するが、コンテクスト条件が満たされるか否かは、コンテクスト情報に基づいて判定される。
【0080】
提案すべき商品は、コンテクスト条件が満たされた場合に提案すべき商品に関する情報である。当該情報としては、商品情報に含まれる情報であればよく、例えば、カテゴリ、商品名、価格、キーワードなどであってよい。ここでは、提案すべき商品の商品名が格納される場合を説明する。
【0081】
図10のデータ格納例であれば、例えば、直近で提案された商品が「スズキ」であり、それに対するユーザの反応が、「いいね」や「よし」といった単語を含む「肯定」のものであれば、提案すべき商品として「トマト」が定義されている。一方、直近で提案された商品が「スズキ」であり、それに対するユーザの反応が、「うーん」や「いやだ」といった単語を含む「否定」のものであれば、提案すべき商品として「マグロ」が定義されている。
【0082】
また例えば、直近で提案された商品が「マグロ」であり、それに対するユーザの反応が肯定であれば、提案すべき商品として「キュウリ」が定義されている。また例えば、直近で提案された商品が「マグロ」であり、それに対するユーザの反応が否定であれば、提案すべき商品として「アジ」が定義されている。
【0083】
なお、データ記憶部300に記憶されるデータは、上記の例に限られない。例えば、データ記憶部300は、各店舗のエージェントのプログラムを記憶してもよい。また例えば、データ記憶部300は、ユーザの基本情報に関するユーザデータベースを記憶してもよい。基本情報としては、ユーザID、ユーザ名、クレジットカード情報などの決済情報、買い物かごに入れている商品の商品IDなどが格納されていてもよい。
【0084】
また例えば、各データのデータ形式は、上記の例に限られない。例えば、定型文データベースDB4及び返答データベースDB5をテーブル形式で説明したが、これらのデータベースで説明した内容が数式形式で定義されていてもよいし、プログラムコード(アルゴリズム)の一部として同様の内容が定義されていてもよい。例えば、各エージェントの機械学習アルゴリズムの一部として、定型文データベースDB4及び返答データベースDB5と同様の関係が定義されていてもよい。
【0085】
[3−2.取得部]
取得部301は、制御部31を主として実現される。取得部301は、ユーザの発言に関する発言情報を取得する。ユーザは、音声入力を利用して発言してもよいし、テキスト入力を利用して発言してもよい。また、発言情報のデータ形式は任意であってよく、例えば、音声データであってもよいし、テキストデータであってもよいし、これらの両方を含んだデータとしてもよい。
【0086】
例えば、ユーザが音声入力を利用して発言する場合には、取得部301は、音声入力部16により検出されたユーザの音声に基づいて、発言情報を取得する。例えば、取得部301は、音声入力部16の検出信号に基づいて生成された音声データをそのまま発言情報として取得してもよいし、当該音声データを変換したテキストデータを発言情報として取得してもよい。
【0087】
なお、音声データをテキストデータに変換する方法自体は、公知の音声認識アルゴリズムを適用可能であり、例えば、統計的手法、動的時間伸縮法、及び隠れマルコフモデルの少なくとも1つを含む音声認識アルゴリズムを利用してもよい。
【0088】
また例えば、ユーザがテキスト入力を利用して発言する場合には、取得部301は、操作部14から入力されたテキストに基づいて、発言情報として取得する。例えば、取得部301は、操作部14の検出信号に基づいて特定されたテキストを発言情報として取得する。なお、ユーザは、操作部14の物理的な操作部材からテキスト入力を行ってもよいし、表示部15に表示されたソフトウェアキーボードを利用してテキスト入力を行ってもよい。
【0089】
本実施形態では、ユーザが音声入力を利用して発言し、発言情報が音声データに対応するテキストデータである場合を説明する。また、ここでは、サーバ30において取得部301が実現される場合を説明するので、取得部301は、通信部33を介してユーザ端末10から音声データを取得し、当該音声データをテキストデータに変換して発言情報として取得する。
【0090】
なお、音声データからテキストデータへの変換は、サーバ30以外のコンピュータ(例えば、ユーザ端末10又は他のサーバコンピュータ)によって実行されるようにしてもよい。この場合、取得部301は、特にこれらの変換をすることなく、通信部33を介して当該コンピュータから発言情報を取得することになる。
【0091】
例えば、取得部301による発言情報の取得と、後述する出力部による返答情報の出力と、が繰り返されることで対話が進行する。例えば、発言情報の取得と返答情報の出力とが1回ずつ交互に行われ、ユーザとエージェントが1回ずつ交互に発言する。
【0092】
また例えば、発言情報の取得が複数回行われた後に返答情報の出力が行われ、ユーザが複数回発言した後にエージェントが返答してもよい。また例えば、返答情報の出力が複数回行われた後に発言情報の取得が行われ、エージェントが複数回発言した後にユーザが返答してもよい。
【0093】
[3−3.開始判定部]
開始判定部302は、制御部31を主として実現される。開始判定部302は、所定の開始条件が満たされた場合に、対話が開始したと判定する。開始条件は、対話開始の合図になりうる条件であればよい。
【0094】
ここでは、サーバ30において開始判定部302が実現されるので、開始判定部302は、通信部33を介してユーザ端末10から所定のデータを受信したか否かを判定することによって、開始条件が満たされたか否かを判定する。例えば、開始判定部302は、所定のデータを受信したと判定された場合に、開始条件が満たされたと判定する。
【0095】
本実施形態では、仮想市場画面Gが表示された場合に、ユーザとエージェントとの対話が可能になるので、開始判定部302は、ユーザ端末10から仮想市場画面Gの表示要求を受信したか否かを判定する。開始判定部302は、ユーザ端末10から表示要求を受信したと判定した場合に、開始条件が満たされたと判定する。
【0096】
また例えば、ユーザが音声入力を利用して発言する場合を説明するので、例えば、開始判定部302は、通信部33を介してユーザ端末10から音声データを取得したか否かを判定してもよい。開始判定部302は、ユーザ端末10から音声データを取得したと判定した場合に、開始条件が満たされたと判定してもよい。
【0097】
この場合、開始判定部302は、何らかの音声データを取得した場合に開始条件が満たされたと判定してもよいし、音声データが示す音声の内容に基づいて、開始条件が満たされたか否かを判定してもよい。例えば、対話開始の合図となるフレーズを予め定めておき、開始判定部302は、ユーザ端末10から取得した音声データに基づいて、当該フレーズが検出されたか否かを判定してもよい。開始判定部302は、当該フレーズが検出されたと判定された場合に、開始条件が満たされたと判定する。
【0098】
なお、開始条件は、予め定められた条件であればよく、上記の例に限られない。例えば、開始条件は、操作部14から所定の操作が検出されること、又は、ユーザ端末10からサーバ30内の所定のページへのアクセスが検出されることなどであってもよい。所定の操作としては、例えば、エージェント画像A1,A2を選択する操作であってもよい。この場合、ユーザは最初に話しかけるエージェントを指定できるようにしてもよい。
【0099】
[3−4.終了判定部]
終了判定部303は、制御部31を主として実現される。終了判定部303は、所定の終了条件が満たされた場合に、対話が終了したと判定する。終了条件は、対話終了の合図になりうる条件であればよい。
【0100】
ここでは、サーバ30において終了判定部303が実現されるので、終了判定部303は、通信部33を介してユーザ端末10から所定のデータを受信したか否かを判定することによって、終了条件が満たされたか否かを判定する。例えば、開始判定部302は、所定のデータを受信した場合に終了条件が満たされたと判定してもよいし、所定のデータを受信しない状態が一定時間継続した場合に終了条件が満たされたと判定してもよい。
【0101】
本実施形態では、仮想市場画面Gが表示されている間は、ユーザとエージェントとの対話が可能なので、終了判定部303は、ユーザ端末10から仮想市場画面Gが閉じられた旨の通知を受信したか否かを判定する。終了判定部303は、ユーザ端末10から当該通知を受信したと判定した場合に、終了条件が満たされたと判定する。
【0102】
なお、ユーザが音声入力を利用して発言する場合を説明するので、例えば、終了判定部303は、通信部33を介してユーザ端末10から音声データを取得したか否かを判定してもよい。例えば、終了判定部303は、ユーザ端末10から音声データを取得しない状態が一定時間継続したと判定した場合に、終了条件が満たされたと判定してもよい。一定時間は、予め定められた時間であればよく、例えば、数秒〜数十分の間の任意の時間であってよい。
【0103】
なお、終了判定部303は、音声データが示す音声の内容に基づいて、終了条件が満たされたか否かを判定してもよい。例えば、対話終了の合図となるフレーズを予め定めておき、終了判定部303は、ユーザ端末10から取得した音声データに基づいて、当該フレーズが検出されたか否かを判定してもよい。終了判定部303は、当該フレーズが検出されたと判定された場合に、終了条件が満たされたと判定する。
【0104】
なお、終了条件は、予め定められた条件であればよく、上記の例に限られない。例えば、終了条件は、操作部14から所定の操作が検出されること、ユーザ端末10との通信が切断されること、又はユーザ端末10から応答のない状態が一定時間以上継続することなどであってもよい。
【0105】
[3−5.対話部]
複数の対話部304の各々は、制御部31を主として実現される。対話部304は、発言情報が取得された場合に、当該発言情報が示す発言に対する返答に関する返答情報を生成する。
【0106】
なお、本実施形態で説明するエージェントは、対話部304の一例である。このため、本実施形態でエージェントと記載した箇所は、対話部304と読み替えることができ、対話部304と記載した箇所は、エージェントと読み替えることができる。なお、対話部304は、プログラム又はプログラムの一部であればよく、特にエージェントと呼ばれるものでなくてもよい。
【0107】
例えば、対話部304は、音声を利用して返答してもよいし、テキスト又は画像を利用して返答してもよいし、これらの両方で返答してもよい。別の言い方をすれば、対話部304は、聴覚的に返答してもよいし、視覚的に返答してもよいし、これらの両方で返答してもよい。なお、返答情報のデータ形式は任意であってよく、例えば、音声データであってもよいし、テキストデータ又は画像データであってもよいし、これらの両方を含んだデータとしてもよい。
【0108】
返答情報は、返答内容だけを示す情報であってもよいし、他の情報を含んでいてもよい。返答内容は、文章として成立している必要はなく、例えば、単語又は顔文字だけであってもよいし、画像だけであってもよい。本実施形態では、返答情報は、返答内容の蓋然性に関する蓋然性情報を含む場合を一例として説明するが、蓋然性情報以外にも、発言者を示すエージェントIDや商品情報などを含んでいてもよい。
【0109】
例えば、対話部304は、発言情報及びコンテクスト情報と、返答情報と、の関係を示すデータに基づいて、発言情報に対する返答情報を生成する。このデータは、発言情報及びコンテクスト情報の少なくとも一部を入力とし、返答情報の少なくとも一部を出力とするデータであり、本実施形態では、主に定型文データベースDB4と返答データベースDB5を一例として説明する。
【0110】
例えば、対話部304は、直近のユーザの発言情報だけでなく、コンテクスト情報に含まれる発言内容に基づいて、返答情報を生成する。対話部304は、コンテクスト情報に含まれる全ての発言内容を考慮してもよいし、一部の発言内容だけを考慮して返答情報を生成してもよい。なお、対話部304は、取得部301が発言情報を取得した場合、他の対話部304が返答情報を生成した場合、又は、出力制御部306が返答情報を出力した場合などの任意のタイミングにおいて返答情報を生成すればよい。
【0111】
ここでは、対話部304が、商品データベースDB2、対話データベースDB3、定型文データベースDB4、及び返答データベースDB5に基づいて、返答情報を生成する場合を一例として説明する。
【0112】
まず、対話部304は、対話データベースDB3のコンテクスト情報が示す発言内容に含まれる商品名を、他の対話部304が提案した商品として取得する。本実施形態では、説明の簡略化のために、対話部304が、コンテクスト情報が示す発言内容のうち、他の対話部304による直近の発言内容を参照する場合を説明するが、2つ以上前の発言内容が参照されてもよいし、全ての発言内容が参照されてもよい。
【0113】
対話部304は、取得部301が取得した発言情報(即ち、直近のユーザの発言)を参照し、他の対話部304が提案した商品に対するユーザの反応を取得する。例えば、対話部304は、当該商品の返答情報の後に取得されたユーザの発言内容を参照し、「いいね」や「よし」といった単語を含む「肯定」のものであるか、「うーん」や「いやだ」といった単語を含む「否定」のものであるかを特定する。ユーザの反応を示す単語は、予めデータ記憶部300に定義しておけばよい。
【0114】
対話部304は、定型文データベースDB4を参照し、発言情報とコンテクスト情報に基づいて、合致する出力条件を特定して定型文を決定する。例えば、対話部304は、コンテクスト情報にユーザの発言が含まれていない場合には、「最初の発言」という出力条件が満たされたと判定する。また例えば、対話部304は、自身又は他の対話部304が提案した商品名がコンテクスト情報に含まれており、取得部301が取得した発言情報がユーザの肯定を示す場合には、「直近で提案された商品をユーザが肯定した」という出力条件が満たされたと判定する。
【0115】
また例えば、対話部304は、自身又は他の対話部304が提案した商品名がコンテクスト情報に含まれており、取得部301が取得した発言情報がユーザの否定を示す場合には、「直近で提案された商品をユーザが否定した」という出力条件が満たされたと判定する。また例えば、対話部304は、自身又は他の対話部304が提案した商品名がコンテクスト情報に含まれており、取得部301が取得した発言情報がユーザの購入の意志を示していれば、「ユーザが購入の意志を示した」という出力条件が満たされたと判定する。
【0116】
対話部304は、上記のように、発言情報及びコンテクスト情報に含まれる単語に基づいて合致する出力条件を特定し、当該出力条件に関連付けられた定型文を取得する。そして、対話部304は、定型文にタグ情報が含まれている場合には、下記のようにして、挿入する商品名を決定する。なお、合致する出力条件が「ユーザが購入の意志を示した」である場合には、定型文にタグ情報がなく、商品名を挿入する必要がないので、対話部304は、定型文をそのまま返答内容とする。
【0117】
例えば、合致する出力条件が「最初の返答」であれば、コンテクスト情報に発言内容がないので、対話部304は、発言情報に基づいて、定型文に挿入する商品名を検索する。例えば、対話部304は、発言情報に含まれる少なくとも1つの単語に基づいて、自身に関連付けられた商品データベースDB2を検索する。
【0118】
合致する出力条件が「直近で提案された商品をユーザが肯定した」又は「直近で提案された商品をユーザが否定した」であれば、対話部304は、返答データベースDB5を参照し、発言情報とコンテクスト情報に基づいて、合致するコンテクスト条件を特定する。例えば、対話部304は、コンテクスト情報を参照して直近で提案された商品を特定し、発言情報を参照してユーザの反応を特定する。対話部304は、提案された商品とユーザの反応に基づいて、合致するコンテクスト条件を特定し、当該コンテクスト条件に関連付けられた商品を特定する。
【0119】
例えば、対話部304は、「直近で提案したスズキをユーザが肯定した」というコンテクスト条件が満たされた場合には、提案すべき商品として「トマト」を特定し、自身の商品データベースDB2の中から「トマト」を検索する。また例えば、対話部304は、「直近で提案したスズキをユーザが否定した」というコンテクスト条件が満たされた場合には、提案すべき商品として「マグロ」を特定し、自身の商品データベースDB2の中から「マグロ」を検索する。
【0120】
例えば、対話部304は、「直近で提案したマグロをユーザが肯定した」というコンテクスト条件が満たされた場合には、提案すべき商品として「キュウリ」を特定し、自身の商品データベースDB2の中から「キュウリ」を検索する。また例えば、対話部304は、「直近で提案したマグロをユーザが否定した」というコンテクスト条件が満たされた場合には、提案すべき商品として「アジ」を特定し、自身の商品データベースDB2の中から「アジ」を検索する。
【0121】
なお、商品の検索自体は、種々の手法を適用可能であり、例えば、返答データベースDB5に含まれる商品名を検索キーワードにして検索してもよいし、カテゴリなどの他の情報を利用して検索してもよい。他にも例えば、商品情報に商品の特徴ベクトルを定義しておく場合には、返答データベースDB5に提案すべき商品の特徴ベクトルを定義しておき、当該特徴ベクトルに基づく検索が実行されてもよい。特徴ベクトルによる検索では、ベクトルの差が小さいほど、特徴が似ていることになるので、蓋然性が高いことになる。
【0122】
対話部304は、上記のようにして検索した商品の商品名を定型文に挿入し、返答内容を生成する。そして、対話部304は、検索時のスコアを蓋然性情報として生成する。対話部304は、これら生成した返答内容のテキスト情報及び蓋然性情報を含む返答情報を取得する。
【0123】
上記のように、複数の対話部304の各々は、出力部により出力された他の対話部304の返答情報に基づいて、新たな返答情報を生成する。新たな返答情報とは、ユーザに対する返答の候補であり、これから出力される可能性のある返答情報である。
【0124】
また例えば、複数の対話部304の各々は、出力制御部306により出力された返答情報に対する発言情報に更に基づいて、新たな返答情報を生成する。即ち、対話部304は、他の対話部304の返答情報だけでなく、当該返答情報に対するユーザの反応を示す発言情報も考慮して、新たな返答情報を生成する。
【0125】
また例えば、複数の対話部304の各々は、対話が進行して発言情報が取得された場合に、蓋然性情報を更新してもよい。更新とは、蓋然性情報を計算し直すことである。対話部304は、発言情報が取得されるたびに蓋然性情報を更新してもよいし、発言情報が一定回数以上取得された場合に蓋然性情報を更新してもよい。更に、対話部304は、返答内容は更新せずに蓋然性情報だけを更新してもよいし、返答内容と蓋然性情報の両方を更新してもよい。
【0126】
また例えば、複数の対話部304の各々は、出力制御部306により出力された他の対話部304の返答情報に含まれる蓋然性情報に基づいて、ユーザの反応を待たずに新たな返答情報を生成するか否かを決定してもよい。例えば、対話部304は、他の対話部304の返答情報に含まれる蓋然性情報が閾値以上であるか否かを判定する。閾値は、予め定められた値であればよく、例えば、ほとんどのユーザが肯定する程度の蓋然性である。例えば、蓋然性をパーセントで表したとすると、閾値は、70%〜100%の間の任意の値であってよい。
【0127】
例えば、対話部304は、蓋然性情報が閾値以上であると判定した場合には、ユーザの反応を待たずに新たな返答情報を生成すると決定し、蓋然性情報が閾値未満であると判定した場合には、ユーザの反応を待つ。「ユーザの反応を待たず」とは、出力制御部306により他の対話部304の返答情報がされた後、取得部301によりユーザの発言情報が取得される前に、対話部304は、新たな返答情報を生成することを意味する。一方、「ユーザの反応を待つ」とは、出力制御部306により他の対話部304の返答情報がされた後、取得部301によりユーザの発言情報が取得されるまでは、新たな返答情報を生成しないことを意味する。
【0128】
また例えば、複数の対話部304の各々は、開始判定部302が開始したと判定してから、終了判定部303が終了したと判定するまでの間の任意の期間における他の対話部304の返答情報に基づいて、新たな返答情報を生成してもよい。任意の期間とは、対話の開始から終了までの全期間であってもよいし、その中の一部の期間であってもよい。一部の期間の場合には、直近の所定期間であってもよいし、直近を除く過去の一定期間であってもよい。例えば、対話部304は、直近の所定個数の発言だけを考慮してもよいし、ユーザとの一連の対話における全ての発言を考慮してもよい。
【0129】
また例えば、複数の対話部304の各々は、商品又はサービスに関するデータベースが関連付けられており、複数の対話部304の各々は、自身に関連付けられたデータベースに基づいて、他の対話部304とは異なる商品又はサービスをユーザに提案するための新たな返答情報を生成する。商品又はサービスをユーザに提案するための新たな返答情報とは、商品又はサービスを識別可能な情報であり、例えば、商品名又はサービス名を含む返答情報であってもよいし、商品画像又はサービスに関する画像を含む返答情報であってもよい。なお、どの対話部304がどのデータベースと対応するかは、予めデータ記憶部300に定義しておけばよい。
【0130】
本実施形態では、商品データベースDB2が上記データベースに相当するが、商品ではなくサービスがユーザに提供される場合には、サービスに関するデータベースがデータ記憶部300に記憶されているものとする。サービスは、任意のサービスであってよく、例えば、旅行予約、保険の申し込み、レストラン予約、宝くじの購入、又は金融サービスなどであってよい。この場合、サービスごとに対話部304を設けておき、例えば、ユーザが旅行予約の対話部304と対話しているときに、保険申し込みの対話部304が旅行保険を提案したり、レストラン予約の対話部304がレストランを提案したりするといった対話を実現してもよい。
【0131】
なお、商品としては、本実施形態で説明した食料品に限られず、取引の対象となる物であればよい。例えば、衣料品、家具、家電、又は電子機器といった有体物が商品であってもよいし、電子書籍、映画、又は楽曲といった無体物(コンテンツ)が商品であってもよい。
【0132】
また、複数の対話部304の各々は、他の対話部304により提案された商品又はサービスと関連する商品又はサービスをユーザに提案するための新たな返答情報を生成する。例えば、対話部304は、他の対話部304により提案された商品と一緒に提案すべき商品に関する新たな返答情報を生成したり、他の対話部304により提案されたサービスと一緒に提案すべきサービスに関する新たな返答情報を生成したりする。本実施形態では、一緒に提案すべき商品は、返答データベースDB5に定義されているが、商品ではなくサービスがユーザに提供される場合には、一緒に提案すべきサービスを定義したデータベースがデータ記憶部300に記憶されているものとする。
【0133】
なお、本実施形態では、対話部304は、定型文データベースDB4に格納された定型文に、商品データベースDB2に格納された商品情報が挿入されることで返答内容を生成する場合を説明したが、返答内容を生成するためのデータは、これらに限られない。例えば、対話部304が商品又はサービス以外の返答情報を生成する場合には、ユーザとの話題に合う単語をデータベースに定義しておき、対話部304は、当該データベースを参照して定型文に挿入する単語を特定してもよい。この単語としては、例えば、天気、地名、又はニュースなどの雑談に関する単語であってよい。
【0134】
[3−6.決定部]
決定部305は、制御部31を主として実現される。決定部305は、複数の対話部304の各々の返答情報に含まれる蓋然性情報に基づいて、出力制御部306に出力させる返答情報を決定する。例えば、決定部305は、複数の対話部304の各々から取得した蓋然性情報を比較して最も蓋然性が高い返答情報を特定し、当該特定した返答情報を、出力制御部306に出力させる返答情報として決定する。
【0135】
なお、出力制御部306に出力させる返答情報は複数であってもよく、例えば、決定部305は、複数の対話部304の各々から取得した蓋然性情報に基づいて、蓋然性が閾値以上の返答情報を特定し、閾値以上の返答情報が複数存在していれば、これら全てを出力制御部306に出力させる返答情報として決定してもよい。また例えば、決定部305は、複数の対話部304の各々から取得した蓋然性情報に基づいて、蓋然性が高い順番に所定個数(例えば、2,3個程度)の返答情報を特定し、当該特定した返答情報を、出力制御部306に出力させる返答情報として決定してもよい。
【0136】
[3−7.出力制御部]
出力制御部306は、制御部31を主として実現される。出力制御部306は、複数の対話部304のうちの少なくとも1つの返答情報を出力させる。出力は、聴覚的に行われてもよいし、視覚的に行われてもよいし、これらの両方によって行われてもよい。即ち、出力制御部306は、音声出力部17から返答情報が示す音声を出力させてもよいし、表示部15において返答情報が示す画像を出力させてもよいし、これらの両方を出力させてもよい。
【0137】
なお、ここでは、サーバ30によって出力制御部306が実現される場合を説明するので、出力制御部306は、通信部33を介してユーザ端末10に対して返答情報を送信することによって、返答情報を出力させる。ユーザ端末10は、出力制御部306の指示に従って、返答情報を出力することになる。
【0138】
[3−8.実行部]
実行部307は、制御部31を主として実現される。実行部307は、複数の対話部304の各々によって商品又はサービスの組み合わせがユーザに提案された後の発言情報に基づいて、当該組み合わせをユーザに提供するための処理を実行する。この処理は、例えば、買い物かごに商品を追加する処理、購入する商品の確認画面を表示させる処理、又は、商品の決済処理などである。また例えば、この処理は、サービスの申し込み処理又はサービスの予約処理であってもよい。なお、実行部307の処理対象となる商品又はサービスは、ユーザの反応が肯定であった商品又はサービスとし、ユーザの反応が否定であった商品又はサービスは、処理対象から除外してもよい。
【0139】
[4.本実施形態において実行される処理]
図11及び
図12は、対話制御システムSにおいて実行される処理の一例を示すフロー図である。
図11及び
図12に示す処理は、制御部11が記憶部12に記憶されたプログラムに従って動作し、制御部31が記憶部32に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、
図5に示す機能ブロックにより実行される処理の一例である。
【0140】
図11に示すように、まず、ユーザ端末10において、仮想市場画面Gを表示させるための操作が行われると、制御部11は、サーバ30に対し、仮想市場画面Gの表示要求を送信する(S101)。表示要求は、予め定められた形式で行われるようにすればよく、例えば、ブラウザで仮想市場画面Gを表示させる場合にはURLを含んでいてもよいし、アプリ内で仮想市場画面Gを表示させる場合には画面を一意に識別する画面IDを含んでいてもよい。なお、ユーザ端末10からサーバ30に対して何らかの情報が送信される場合には、ユーザIDも一緒に送信されるものとする。
【0141】
サーバ30においては、表示要求を受信すると、制御部31は、ユーザとの対話が開始したと判定し、対話データベースDB3を更新する(S301)。S301においては、制御部31は、対話IDを新たに生成し、対話データベースDB3に新たなレコードを生成する。そして、制御部31は、当該レコードに、対話IDとユーザIDを格納する。この時点では、ユーザもエージェントも発言していないので、コンテクスト情報には何も格納されない。
【0142】
制御部31は、仮想市場データベースDB1に基づいて、仮想市場画面Gの画像データを生成し(S302)、ユーザ端末10に対し、生成した画像データを送信する(S303)。S303においては、制御部31は、記憶部32に構築された仮想3次元空間に、仮想市場内の店舗と店員の3次元モデルを配置し、任意の位置に仮想カメラを配置する。制御部31は、3次元モデルの頂点座標を座標変換することによって仮想市場画面Gの画像データを生成する。なお、ここでは、仮想カメラを移動可能とするが、仮想カメラは固定されていてもよい。
【0143】
ユーザ端末10においては、画像データを受信すると、制御部11は、受信した画像データに基づいて、仮想市場画面Gを表示部15に表示させる(S102)。S102においては、
図2のような仮想市場画面Gが表示され、ユーザは、仮想市場画面Gにエージェント画像Aが表示されているエージェントに話しかけることができる。
【0144】
制御部11は、音声入力部16の検出信号に基づいて、ユーザの発言を検出したか否かを判定する(S103)。S103においては、制御部11は、音声入力部16が検出した音声信号の強度が閾値以上であるか否かを判定したり、人の音声を示す特定帯域の音声信号の強度が閾値以上であるか否かを判定したりする。
【0145】
ユーザの発言を検出したと判定されない場合(S103;N)、後述するS106の処理に移行する。一方、ユーザの発言を検出したと判定された場合(S103;Y)、制御部11は、音声入力部16の検出信号に基づいて、サーバ30に対し、ユーザの発言を示す音声データを送信する(S104)。S104においては、制御部11は、音声入力部16が検出した音声信号をデジタル化し、音声の波形を示す音声データを生成して送信する。
【0146】
サーバ30においては、音声データを受信すると、制御部31は、受信した音声データをテキスト化して発言情報を取得する(S304)。S304においては、制御部31は、音声データが示す波形のパターンに基づいて発言内容を推定し、発言内容の推定結果を示す発言情報を取得する。そして、制御部31は、対話データベースDB3のコンテクスト情報を更新し、発言者としてユーザIDを格納し、発言内容として発言情報を格納し、発言時間として現在の時間を格納する。
【0147】
制御部31は、S304で取得した発言情報に基づいて、ユーザが購入の意志を示したか否かを判定する(S305)。例えば、記憶部32には、購入の意志を示す単語(例えば、「買う」「買い物かご」)が予め記憶されており、S305においては、制御部31は、発言情報に当該単語が含まれているか否かを判定する。
【0148】
ユーザが購入の意志を示していない場合(S305;N)、制御部31は、複数のエージェントの各々に対し、S304で取得した発言情報を入力する(S306)。S306においては、制御部31は、全てのエージェントに対してテキストデータを入力してもよいが、ここでは、仮想市場画面Gにエージェント画像Aが表示されているエージェントに対してだけテキストデータを入力するものとする。例えば、制御部31は、仮想カメラと、エージェント画像Aが示す店員の3次元モデルと、の距離が閾値未満となるエージェントに対し、テキストデータを入力する。なお、各エージェントは、記憶部32内で予め起動しており、テキストデータの入力を待ち受けている状態とする。
【0149】
制御部31は、発言情報を入力したエージェントごとに、返答情報を生成するための返答情報生成処理を実行する(S307)。
【0150】
図13は、S307において実行される返答情報生成処理の詳細を示す図である。なお、以降では、各ステップの実行主体をエージェントと記載しているが、実際には制御部31が実行主体である。返答情報生成処理は、発言情報が入力された全てのエージェントにより実行される。
【0151】
図13に示すように、エージェントは、対話データベースDB3のコンテクスト情報に基づいて、今回の発言が最初の発言であるか否かを判定する(S3071)。S3071においては、エージェントは、コンテクスト情報の発言者情報に基づいて、ユーザの発言が既に存在するか否かを判定する。
【0152】
最初の発言であると判定された場合(S3071;Y)、エージェントは、自身に対応する店舗の商品データベースDB2に基づいて、ユーザに提案する商品を決定する(S3072)。S3072においては、エージェントは、発言情報が示す文章から複数の単語を抽出し、複数の単語を検索キーワードとした商品検索を実行する。キーワードに基づく商品検索自体は、公知の種々の検索アルゴリズムを適用可能である。例えば、S3072においては、エージェントは、ユーザの発言に含まれる単語が商品説明に含まれる数に基づいて商品のスコアを計算し、最もスコアが高い商品を、ユーザに提案する商品として決定する。
【0153】
例えば、
図3及び
図4のように、ユーザが「今の時期のおすすめは何?」という発言をした場合、エージェントは、「今」「時期」「おすすめ」という3つの単語を抽出する。そして、エージェントは、これら3つの単語を検索キーワードにして自身の商品データベースDB2を検索し、最もスコアが高い商品を、ユーザに提案する商品として決定する。
【0154】
エージェントは、S3072の処理結果と定型文データベースDB4とに基づいて、返答内容を生成する(S3073)。S3073においては、エージェントは、出力条件が「最初の返答」である定型文に対し、S3072で検索した商品の商品名を挿入することによって返答内容を生成する。
【0155】
エージェントは、S3073の処理結果に基づいて、蓋然性情報を生成する(S3074)。S3074においては、エージェントは、商品のスコアが高いほど蓋然性情報を高く設定し、商品のスコアが低いほど蓋然性情報を低く設定する。例えば、エージェントは、商品のスコアをそのまま蓋然性情報としてもよいし、商品のスコアを所定の数式に代入して得られる値を蓋然性情報としてもよい。
【0156】
エージェントは、返答内容と蓋然性情報とを含む返答情報を生成する(S3075)。以上の処理は、発言情報が入力された全てのエージェントについて実行される。
【0157】
一方、S3071において、最初の発言であると判定されない場合(S3071;N)、エージェントは、対話データベースDB3のコンテクスト情報に基づいて、他のエージェントが提案した商品を特定する(S3076)。S3076においては、エージェントは、コンテクスト情報を参照し、直近の他のエージェントの発言内容に含まれる商品名を取得する。
【0158】
エージェントは、S3076で特定した商品と返答データベースDB5とに基づいて、自身が提案すべき商品を取得する(S3077)。S3077においては、エージェントは、対話データベースDB3のコンテクスト情報を参照し、直近で他のエージェントが提案した商品に対するユーザの発言内容を取得する。そして、エージェントは、当該発言内容が肯定であるか否定であるかを判定する。エージェントは、返答データベースDB5を参照し、他のエージェントが提案した商品とユーザの反応に基づいて、満たされるコンテクスト条件を特定する。エージェントは、当該コンテクスト条件に関連付けられた商品を、提案すべき商品として特定する。
【0159】
エージェントは、自身の商品データベースDB2に基づいて、ユーザに提案する商品を決定する(S3078)。S3078においては、エージェントは、提案すべき商品の商品名を検索キーワードとした商品検索を実行する。エージェントは、最もスコアが高い商品を、ユーザに提案する商品として決定する。
【0160】
エージェントは、S3078の処理結果と定型文データベースDB4とに基づいて、返答内容を生成する(S3079)。S3079においては、エージェントは、定型文に対し、S3078で検索した商品の商品名を挿入することによって返答内容を生成する。
【0161】
エージェントは、S3079の処理結果に基づいて、蓋然性情報を生成し(S3080)、S3075の処理に移行する。以上説明した
図13の処理は、発言情報が入力されたエージェントごとに実行される。
【0162】
図12に移り、制御部31は、各エージェントが生成した返答情報に含まれる蓋然性情報を比較し、最も蓋然性が高い返答情報を特定する(S308)。制御部31は、S308で特定した返答情報を音声データに変換し、ユーザ端末10に対し、当該音声データを送信する(S309)。S309においては、制御部31は、対話データベースDB3のコンテクスト情報を更新し、最も蓋然性が高い返答情報を生成したエージェントのエージェントIDを発言者として格納し、発言内容として当該返答情報を格納する。そして、制御部31は、当該エージェントに対応する店舗の店舗IDと当該返答情報に含まれる商品の商品IDをコンテクスト情報に格納し、発言時間として現在の時間を格納する。なお、先述したように、蓋然性情報が閾値以上であれば、ユーザが肯定したものとみなし、ユーザの反応を待たずに各エージェントに新たな返答情報を生成させてもよい。
【0163】
ユーザ端末10においては、音声データを受信すると、制御部11は、受信した音声データに基づいて、エージェントの返答を音声出力部17から出力させ(S105)、後述するS106の処理に移行する。
【0164】
一方、
図11のS305において、ユーザが購入の意志を示した場合(S305;Y)、
図12に移り、制御部31は、対話データベースDB3に基づいて、対話に登場した商品を買い物かごに入れる処理を実行し(S310)、商品に対応するエージェントがお礼をいう音声データを送信し(S311)、S309の処理に移行する。この場合、ユーザ端末10の音声出力部17からエージェントからのお礼が出力される。なお、S309においては、制御部31は、対話データベースDB3のコンテクスト情報を更新し、買い物かごに入れた商品を提案したエージェントのエージェントIDを発言者として格納し、発言内容として定型文を格納し、発言時間として現在の時間を格納する。
【0165】
ユーザ端末10においては、S105において音声データが出力されると、制御部11は、操作部14の検出信号に基づいて、ユーザの操作を特定する(S106)。ここでは、買い物かごの商品を購入するための購入操作、仮想カメラを移動させるための移動操作、又は、商品を購入せずに終了するための終了操作が行われるものとする。
【0166】
何れの操作も行われなかった場合(S106;操作なし)、S103の処理に戻る。一方、購入操作が行われた場合(S106;購入操作)、サーバ30に対し、購入操作が行われたことを示す通知を送信され、サーバ30においては、通知を受信すると、制御部31は、購入処理を実行し(S312)、本処理は終了する。
【0167】
一方、移動操作が行われた場合(S106;移動操作)、サーバ30に対し、移動操作が行われたことを示す通知を送信され、サーバ30においては、通知を受信すると、制御部31は、仮想カメラを移動させ(S313)、S302の処理に戻る。この場合、移動後の仮想カメラに基づいて、仮想市場画面Gの画像データが生成される。
【0168】
終了操作が行われた場合(S106;終了操作)、サーバ30に対し、終了操作が行われたことを示す通知を送信され、本処理は終了する。この場合、サーバ30において、対話が終了したと判定される。
【0169】
以上説明した対話制御システムSによれば、各エージェントが、直近のユーザの発言情報だけでなく、他のエージェントの返答情報も考慮して返答情報を生成するので、対話の流れに合った返答をする場合のユーザの負担を軽減することができる。例えば、ユーザが、魚屋エージェントとの対話の内容をいちいち八百屋エージェントに伝えなくても、八百屋エージェントは、魚屋エージェントがすすめた商品にかぶせるようにして、自身の店舗でのおすすめ商品を提案するといったことができるので、ユーザの負担を軽減することができる。
【0170】
また、各エージェントが、他のエージェントの返答情報に対するユーザの発言情報も考慮することで、ユーザの反応を考慮して返答情報を生成し、より対話の流れに合った返答をすることができる。
【0171】
また、対話制御システムSは、各エージェントが生成した返答情報の蓋然性情報に基づいて出力対象となる返答情報を決定することで、蓋然性の高い返答情報を出力して返答の精度をより高めることができる。更に、蓋然性情報に基づいて出力対象となる返答情報を決定することで、蓋然性の低い返答情報が送信されることを防止できるので、対話制御システムSの処理負荷を軽減し、ネットワーク上の通信負荷を軽減することもできる。また、蓋然性の低い返答情報が出力されてしまい、ユーザがそれに対していちいち否定の反応を示さなければならないといったことを防止することもでき、ユーザの負担を効果的に軽減することができる。
【0172】
また、各エージェントが、対話が進行した場合に蓋然性情報を更新することで、最新の対話の流れが蓋然性情報に反映され、より対話の流れに合った返答をすることができる。また、蓋然性情報の精度を高めることで、不要な返答情報が送信されることを効果的に防止できるので、対話制御システムSの処理負荷をより効果的に軽減し、ネットワーク上の通信負荷もより効果的に軽減することができる。更に、蓋然性情報の精度を高めることで、ユーザが求めている返答情報が出力されず、ユーザがそれに対していちいち否定の反応を示さなければならないといったことを防止することもでき、ユーザの負担を効果的に軽減することができる。
【0173】
また、各エージェントが、他のエージェントの返答情報に含まれる蓋然性情報に基づいて、ユーザの反応を待たずに新たな返答情報を生成するか否かを決定することで、例えば、ユーザが肯定する蓋然性が極めて高い返答情報が出力されていれば、ユーザの反応を待たずにかぶせるようにして、新たな返答情報を出力させることができる。このため、ユーザがいちいち反応を示さなくても、ユーザが欲する情報を次々と提供することができる。
【0174】
また、各エージェントが、一連の対話の開始から終了までの任意の期間内のコンテクストを考慮して返答情報を生成することで、一連の対話の流れに合った返答をすることができる。
【0175】
また、各エージェントが、自身に関連付けられた商品データベースDB2に基づいて、自身の店舗の商品を提案する返答情報を生成することで、商品購入を効果的に支援することができる。対話制御システムSをサービスの提供に適用した場合も同様に、各エージェントが、自身に関連付けられたサービスのデータベースに基づいて、自身に対応するサービスを提案する返答情報を生成することで、サービス利用を効果的に支援することができる。また、ユーザが、各エージェントに対し、他のエージェントがすすめた商品又はサービスをいちいち伝えなくても、他のエージェントがすすめた商品又はサービスとかぶせるようにして、商品又はサービスをすすめることができ、ユーザの負担を軽減することができる。
【0176】
また、各エージェントが、他のエージェントが提案した商品に関連する商品を提案することで、商品購入をより効果的に支援することができる。対話制御システムSをサービスの提供に適用した場合も同様に、各エージェントが、他のエージェントが提案したサービスに関連するサービスを提案することで、サービス利用をより効果的に支援することができる。また、対話の流れに関連性のない商品又はサービスが提案されてしまい、ユーザがそれに対していちいち否定の反応を示さなければならないといったことを防止することもでき、ユーザの負担を効果的に軽減することができる。
【0177】
また、対話制御システムSが、ユーザが商品の購入の意志を示した場合に商品を買い物かごに入れる処理を実行したり商品の決済処理を実行したりすることで、商品購入をより効果的に支援することができる。対話制御システムSをサービスの提供に適用した場合も同様に、対話制御システムSが、ユーザがサービスの利用の意志を示した場合に予約処理や申し込み処理を実行することで、サービス利用をより効果的に支援することができる。また、一連の対話の流れの中で商品を購入したりサービスを利用したりすることができ、商品購入時又はサービス利用時のユーザの負担を効果的に軽減することができる。
【0178】
また、対話制御システムSがユーザの音声に基づいて発言情報を取得することで、音声を利用した対話の流れに合った返答をすることができる。
【0179】
[5.変形例]
なお、本発明は、以上に説明した実施形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0180】
例えば、複数の対話部304の各々は、出力制御部306により出力された返答情報を生成した他の対話部304と自身との関係に基づいて、新たな返答情報を生成してもよい。例えば、対話部304は、他の対話部304のうち、特定の対話部304の返答情報に基づいて、自身の返答情報を生成する。各対話部304がどの対話部304の返答情報を参照するかは、データ記憶部300に予め定義しておけばよい。対話部304は、自身に関連付けられた他の対話部304の返答情報に基づいて、自身の返答情報を生成することになる。
【0181】
例えば、魚屋のエージェントであれば、八百屋のエージェントの返答情報に基づいて自身の返答情報を生成するが、洋服屋のエージェントの返答情報は特に参照しなくてよい。同様に、洋服屋のエージェントであれば、靴屋のエージェントの返答情報に基づいて自身の返答情報を生成するが、魚屋のエージェント及び八百屋のエージェントの返答情報は特に参照しなくてよい。
【0182】
上記変形例によれば、各エージェントが、自身に関係のない返答情報を参照してしまうことを防止することができるので、返答の精度を効果的に高めることができる。更に、対話に関係のないエージェントが返答情報を生成してしまうことも防止でき、対話制御システムSの処理負荷を軽減することもできる。また、返答の精度を高めることで、蓋然性の低い返答情報が出力されてしまい、ユーザがそれに対していちいち否定の反応を示さなければならないといったことを防止することもでき、ユーザの負担を効果的に軽減することができる。
【0183】
また例えば、ユーザ端末10内に音声入力部16と音声出力部17が含まれている場合を説明したが、音声入力部16と音声出力部17は、ユーザ端末10の外部に接続されていてもよい。同様に、操作部14及び表示部15もユーザ端末10の外部に接続されていてもよい。
【0184】
また例えば、仮想市場を3次元的に示したが、仮想市場は2次元的に示されてもよい。また例えば、特に仮想市場画面Gを表示することなく、ユーザとエージェントとの間での対話が可能であってもよい。例えば、インターネットショッピングモールのトップページや各店舗のページにおいて、ユーザとエージェントとの間での対話を可能としてもよい。
【0185】
また例えば、各機能がサーバ30において実現される場合を説明したが、ユーザ端末10とサーバ30とで機能が分担されるようにしてもよいし、ユーザ端末10で全ての機能が実現されてもよい。例えば、取得部301がユーザ端末10の制御部11を主として実現されてもよい。この場合、例えば、ユーザ端末10において音声データからテキストデータへの変換処理が実行されてもよい。また例えば、ユーザ端末10においてエージェントが立ち上がっており、対話部304がユーザ端末10の制御部11を主として実現されてもよい。また例えば、出力制御部306がユーザ端末10の制御部11を主として実現されてもよい。
【0186】
また例えば、対話制御システムSの各機能のうち、取得部301、対話部304、及び出力制御部306以外の機能は省略してもよい。例えば、データ記憶部300は、対話制御システムSに含まれている必要はなく、データベースサーバによって実現されてもよい。
ユーザとコンピュータとの間で対話をする場合のユーザの負担を軽減する。対話制御システム(S)の取得手段(301)は、ユーザの発言に関する発言情報を取得する。複数の対話手段(304)の各々は、発言情報が取得された場合に、当該発言情報が示す発言に対する返答に関する返答情報を生成する。出力制御手段(306)は、複数の対話手段(304)のうちの少なくとも1つの返答情報を出力させる。取得手段(301)による発言情報の取得と、出力制御手段(306)による返答情報の出力と、が繰り返されることで対話が進行し、複数の対話手段(304)の各々は、出力制御手段(306)により出力された他の対話手段(304)の返答情報に基づいて、新たな返答情報を生成する。