(57)【要約】      （修正有）【課題】応答の出力精度を向上させる生成装置、生成方法及び生成プログラムを提供する。【解決手段】本生成装置は、受付部と、選択部と、生成部とを備える。受付部は、発話の入力をユーザから受け付ける。選択部は、発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する。生成部は、選択部によって選択された複数の応答モデルを用いて、受付部によって受け付けられた発話に対する応答を生成する。【選択図】図３
2019012439.tif 000002
【特許請求の範囲】
【請求項１】
発話の入力をユーザから受け付ける受付部と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択部と、
前記選択部によって選択された複数の応答モデルを用いて、前記受付部によって受け付けられた発話に対する応答を生成する生成部と、
を備えたことを特徴とする生成装置。
【請求項２】
前記選択部は、
第１の応答モデルのみを用いて前記受付部によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する、
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記選択部は、
前記第１の応答モデルを用いて前記受付部によって受け付けられた発話に対する応答を生成した場合の生成結果、応答を生成する際に実行した検索結果、又は、生成した応答に対するユーザの反応の少なくともいずれか一つに基づいて、前記適性度を判定する、
ことを特徴とする請求項２に記載の生成装置。
【請求項４】
前記選択部は、
前記受付部によって受け付けられた発話に含まれる所定の文字列であって、第１の応答モデルのスロットに入力される候補である文字列に基づいて、第２の応答モデルを選択する、
ことを特徴とする請求項１〜３のいずれか一つに記載の生成装置。
【請求項５】
前記選択部は、
前記受付部によって受け付けられた発話に含まれる所定の文字列が応答モデルのスロットに入力された場合の適性度を判定し、当該所定の文字列が前記第１の応答モデルのスロットに入力された場合の適性度が所定の閾値よりも低い場合に、当該所定の文字列が入力された場合の適性度が所定の閾値よりも高くなるスロットを有する前記第２の応答モデルを選択する、
ことを特徴とする請求項２〜４のいずれか一つに記載の生成装置。
【請求項６】
前記生成部は、
前記選択部によって選択された複数の応答モデルのうち、第２の応答モデルから出力された回答結果を前記第１の応答モデルに入力することで、前記発話に対する応答を生成する、
ことを特徴とする請求項２〜５のいずれか一つに記載の生成装置。
【請求項７】
前記生成部は、
前記受付部によって受け付けられた発話が前記第１の応答モデルに入力された場合に出力される第１の回答の評価値に応じて、当該第１の回答をユーザに応答するか、あるいは、前記第２の応答モデルから出力された回答結果を当該第１の応答モデルに新たに入力して出力される第２の回答をユーザに応答するかを判定する、
ことを特徴とする請求項２〜６のいずれか一つに記載の生成装置。
【請求項８】
前記生成部は、
前記第１の回答もしくは前記第２の回答を受信したユーザの反応に基づいて、当該第１の回答もしくは当該第２の回答に対する評価値を更新する、
ことを特徴とする請求項７に記載の生成装置。
【請求項９】
前記選択部は、
前記生成部によって生成された応答を受信したユーザの過去の反応に基づいて、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する、
ことを特徴とする請求項１〜８のいずれか一つに記載の生成装置。
【請求項１０】
コンピュータが実行する生成方法であって、
発話の入力をユーザから受け付ける受付工程と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付工程によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択工程と、
前記選択工程によって選択された複数の応答モデルを用いて、前記受付工程によって受け付けられた発話に対する応答を生成する生成工程と、
を含んだことを特徴とする生成方法。
【請求項１１】
発話の入力をユーザから受け付ける受付手順と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付手順によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択手順と、
前記選択手順によって選択された複数の応答モデルを用いて、前記受付手順によって受け付けられた発話に対する応答を生成する生成手順と、
をコンピュータに実行させることを特徴とする生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法及び生成プログラムに関する。
【背景技術】
【０００２】
従来、ユーザの発話に対して応答を出力する技術が知られている。このような対話に関する技術では、対話データを学習することにより対話モデルを生成する。例えば、対話モデルは、ユーザから発話を受け付けた場合に、発話や応答の内容に応じた分野（ドメイン）を推定する。そして、対話モデルは、推定されたドメインにおいてユーザの意図に応じた内容の応答を出力する。具体的には、対話モデルは、ユーザから問われた質問の内容を解析し、ユーザの意図に沿った回答を出力する。
【０００３】
なお、ユーザの意図に沿った回答を出力する技術としては、例えば、検索結果（すなわち、ユーザに対して出力した回答）に対するユーザのクリックログに基づいて、ユーザに出力した検索結果の正否を判定する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１９６３１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、応答の出力精度を向上させるための情報処理には改善の余地がある。例えば、上記の従来技術は、検索結果に対してクリックログ等のフィードバックを得ることで応答の出力精度を向上させるものであるが、対話処理等ではユーザからのフィードバックを得ることが難しい場合がある。このため、必ずしもユーザからのフィードバックを得られなくとも、ユーザの意図に沿った応答を出力できることが望ましい。
【０００６】
本願は、上記に鑑みてなされたものであって、応答の出力精度を向上させる生成装置、生成方法及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る生成装置は、発話の入力をユーザから受け付ける受付部と、発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択部と、前記選択部によって選択された複数の応答モデルを用いて、前記受付部によって受け付けられた発話に対する応答を生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、応答の出力精度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る生成装置が実行する処理の一例を示す図である。
【図２】図２は、実施形態に係る生成処理システムの構成例を示す図である。
【図３】図３は、実施形態に係る生成装置の構成例を示す図である。
【図４】図４は、実施形態に係るモデルデータベースの一例を示す図である。
【図５】図５は、実施形態に係る辞書データの一例を示す図である。
【図６】図６は、実施形態に係る対応付けデータの一例を示す図である。
【図７】図７は、実施形態に係るＱ＆Ａデータの一例を示す図である。
【図８】図８は、実施形態に係る処理手順を示すフローチャート（１）である。
【図９】図９は、実施形態に係る処理手順を示すフローチャート（２）である。
【図１０】図１０は、生成装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る生成装置、生成方法及び生成プログラムを実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法及び生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
【００１１】
〔１．生成処理の一例〕
まず、図１を用いて、本願に係る生成装置である生成装置１００が実行する生成処理の一例について説明する。図１は、実施形態に係る生成装置１００が実行する処理の一例を示す図である。なお、以下の説明では、生成装置１００が実行する処理として、ユーザＵ１の発話に対する応答を生成する生成処理の一例について説明する。すなわち、実施形態では、生成装置１００は、ユーザＵ１との対話を実現する対話処理に関する処理を行う。
【００１２】
〔１−１．生成装置及び生成装置と通信する装置〕
図１に示す生成装置１００は、インターネット等の所定のネットワークを介して、ユーザ端末１０と通信可能な情報処理装置であり、例えば、サーバ装置である。なお、生成装置１００は、ネットワークを介して、任意の数のユーザ端末１０と通信可能であってよい。
【００１３】
ユーザ端末１０は、対話システムで対話を行うユーザが使用する情報処理装置であり、スマートフォン、タブレット端末、ＰＣ（Personal  Computer）といった情報処理装置により実現される。図１に示した例では、ユーザ端末１０は、ユーザの一例であるユーザＵ１によって利用される。ユーザ端末１０は、ユーザＵ１が発話した音声の入力を受け付ける。そして、ユーザ端末１０は、入力された音声を生成装置１００に送信する。なお、ユーザ端末１０は、発話の代替として、ユーザＵ１が入力した文字列（テキストデータ）を生成装置１００へ送信してもよい。
【００１４】
ユーザ端末１０から発話を受け付けた生成装置１００は、受け付けた発話を解析し、発話の内容（すなわち、ユーザＵ１の意図）を推定する。そして、生成装置１００は、推定した内容に応じて、ユーザＵ１に応答するテキストを生成し、生成したテキストデータや、テキストデータを音声として出力するための音声データをユーザ端末１０へと送信する。ユーザ端末１０は、応答された内容を画面に表示したり、各種テキストの読み上げ技術や音声データを再生したりすることによって、ユーザＵ１との対話を実現する。なお、生成装置１００は、ユーザへの応答を生成するため、図１に図示しない外部サーバ装置から辞書データ等の知識データの提供を受けてもよい。例えば、生成装置１００は、外部サーバ装置が提供するＡＰＩ（Application  Programming  Interface）を利用して、所定の知識データを検索したり、取得したりしてもよい。
【００１５】
〔１−２．スロット抽出処理〕
ここで、生成装置１００が実行する対話処理の基本的な流れについて説明する。なお、以下の説明は、実施形態を限定するものではなく、生成装置１００は、以下に説明するスロットフィリングの技術を用いてユーザＵ１の発話に対する応答を生成するのであれば、以下に説明する対話処理以外にも、任意の態様で応答の生成を行ってよい。
【００１６】
例えば、生成装置１００は、ユーザＵ１の発話を受け付けると、発話の内容が経路検索に関する内容であるか、天気に関する内容であるかというように、発話の内容が属するドメイン（分野）を推定する。そして、生成装置１００は、推定結果の尤度に基づいて、発話が属するドメインを判定する。例えば、生成装置１００は、発話のパターンを学習した学習器（モデル）を利用して、発話がどのようなドメインに属するかの尤度を出力し、出力した結果に基づいてドメインを判定する。
【００１７】
続いて、生成装置１００は、判定したドメインに応じたユーザの発話の内容を推定する言語理解処理を実行する。例えば、生成装置１００は、言語理解処理として、発話が示すユーザＵ１の意図を推定し、推定した意図を示す文字列を意図情報として生成する。そして、生成装置１００は、生成した意図情報を用いて、発話に対する応答を生成し、生成した応答をユーザ端末１０からユーザＵ１に提供する。実施形態では、生成装置１００は、ドメインごとに生成された所定の応答モデルを利用して、ユーザＵ１に対する応答を生成するものとする。
【００１８】
生成装置１００は、いわゆるスロットフィリングの技術を用いて、ユーザＵ１に対する応答を生成する。例えば、生成装置１００は、所定の条件を有する意図情報がスロット値として格納される１つ以上のスロットを含むモジュールを記憶する。そして、生成装置１００は、発話から生成した意図情報を対応するスロットに格納し、全てのスロットに意図情報が格納されたモジュールが存在する場合は、かかるモジュールと対応する処理を実行し、実行結果を示す応答の生成を行う。すなわち、実施形態では、応答モデルとは、モジュールが有するスロット値を対話から抽出する処理や、応答を生成可能なようにスロット値を埋める処理や、スロット値が整ったモジュールに設定された処理を実行することや、かかる処理を経てユーザＵ１への応答を生成する処理を行うためのモデルを意味する。なお、応答モデルは、複数のモデル（エンジン）により実現されてもよい。例えば、応答モデルは、対話の内容に適したモジュールを判定するモデルや、スロット値を抽出するためのモデルや、対話として自然な言語を選択するためのモデル等の複数のモデルによって実現されてもよい。
【００１９】
上述のように、生成装置１００は、ドメインごとに異なる対話モジュールを有する。例えば、生成装置１００は、出発地（地名）を示す文字列がスロット値として登録される第１スロットと、到着地（地名）を示す文字列がスロット値として登録される第２スロットとを有する経路検索モジュールを有する。この場合、生成装置１００は、発話の文字列から地名を示す文字列をスロット値（すなわち、ユーザＵ１の意図を示す意図情報）として抽出する。言い換えれば、生成装置１００は、発話の文字列から、所定の条件を満たす文字列をスロット値として抽出する。このような文字列の抽出は、例えば、形態素解析や辞書データとの比較による単語の意味特定技術等により実現可能である。そして、生成装置１００は、モジュールに入力されたスロット値に基づいて、ユーザＵ１の対話に関する応答を生成する。なお、生成装置１００は、ユーザＵ１が発した任意の語句をスロット値として登録し、登録された語句の意味を検索する語句検索モジュールや、ユーザＵ１の質問をウェブ検索して検索結果を回答するＱ＆Ａモジュール等を有してもよい。
【００２０】
また、生成装置１００は、ユーザＵ１との対話を随時進めることで、モジュールに含まれる各スロットに対応するスロット値を格納してもよい。例えば、生成装置１００は、ユーザＵ１の発話内に到着地と推定できる文字列が含まれていない場合には、「到着地はどこですか」といった応答を生成し、ユーザＵ１に送信する。そして、生成装置１００は、ユーザＵ１の再度の発話から取得される文字列を取得し、取得した文字列からスロット値（この例では、到着地に対応する地名）を抽出する。すなわち、生成装置１００は、ユーザＵ１から受け付けた複数の発話から、所定の条件を満たす文字列をスロット値として抽出してもよい。そして、生成装置１００は、経路検索モジュールに含まれる全てのスロットにスロット値が格納された場合に、格納されたスロット値を用いて経路検索モジュールに予め設定された情報処理を実行し、ユーザＵ１への応答を生成する。
【００２１】
例えば、生成装置１００は、経路検索モジュールに、出発地（地名）を示すスロット値「東京」と到着地（地名）を示すスロット値「渋谷」とが格納された場合は、予めモジュールに設定されている処理に従い、「東京」から「渋谷」までの経路をウェブ検索する。具体的には、生成装置１００は、東京駅から渋谷駅までの交通機関の乗換案内や、東京から渋谷までの経路を示すナビ情報等を検索する。そして、生成装置１００は、検索した情報に基づいてユーザＵ１への応答を生成して、ユーザ端末１０に送信する。
【００２２】
〔１−３．実施形態に係る生成処理〕
上記のような対話応答処理は、例えば、属性情報がラベル付けされた語句を学習データとして学習したモデルにより実現される。具体的には、生成装置１００は、「東京」や「渋谷」が、「地名」や「駅名」であるという属性情報が対応付けられた（ラベル付けされた）学習データを学習することで、モジュールに設定された処理を実行することや、ユーザＵ１への応答を生成することのできるモデルを生成することができる。
【００２３】
ここで、ユーザＵ１から受け付けた発話には、属性情報が不明な語句（文字列）が含まれる場合がある。この場合、生成装置１００は、発話のパターンからドメインを判定することができたとしても、適切な応答ができない場合がある。例えば、生成装置１００は、パターンマッチング等を学習したドメイン判定モデルにより、「地名から、地名までの行き方」という発話を受け付けた場合、ユーザＵ１が経路検索を意図していると推定し、経路検索モジュールを選択することは可能である。しかし、生成装置１００は、スロット値として抽出する地名が判別できない場合には、ユーザＵ１の意図した回答内容を応答として生成できない。上記のように、生成装置１００は、不明なスロット値を再度ユーザＵ１に問い合わせることはできるものの、再度の発話を行う必要が生じるため、ユーザＵ１としては煩雑な手間が発生することになる。
【００２４】
そこで、実施形態に係る生成装置１００は、以下の生成処理を実行する。具体的には、生成装置１００は、発話の入力をユーザＵ１から受け付けた場合に、発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルのうち、受け付けられた発話の内容に応じて、複数の応答モデルを選択する。そして、生成装置１００は、選択された複数の応答モデルを用いて、受け付けられた発話に対する応答を生成する。
【００２５】
すなわち、生成装置１００は、一つのドメインに対応する応答モデル（モジュール）を利用するのではなく、複数の応答モデルを使用して応答を生成する。具体的には、生成装置１００は、ある任意のドメインに対応するモジュール（以下、「第１モジュール」と表記する場合がある）にスロット値が埋まらなかった場合や、適切な応答が生成できないと判定する場合に、第１モジュールとは異なるモジュール（以下、「第２モジュール」と表記する場合がある）を選択する。そして、生成装置１００は、第２モジュールにおいて取得された情報を利用して、再度第１モジュールにおける応答を生成する。
【００２６】
これにより、生成装置１００は、第１モジュールのみでは適切な回答が得られない発話に対しても、ユーザＵ１に対する問い合わせ（再度の発話）を発生させることなく、適切な応答を生成することができる。以下、図１を用いて、実施形態に係る生成処理の流れについて説明する。なお、以下で説明する生成処理には、種々の既知の技術が用いられてもよい。例えば、発話のドメイン判定や、対話におけるスロット値の抽出処理は、任意の分類技術により実現可能である。例えば、生成装置１００は、ＳＶＭ（Support  Vector  Machine）やＤＮＮ（Deep  Neural  Network）等、任意の学習器又は分類器等のモデルを用いて実施形態に係る処理を行ってもよい。
【００２７】
図１の例において、まず、ユーザ端末１０は、ユーザＵ１から発話を受け付ける。そして、ユーザ端末１０は、受け付けた発話を生成装置１００に送信する（ステップＳ０１）。例えば、ユーザ端末１０は、「東京駅から日本一高い山への行き方」といったユーザＵ１の発話を送信する。
【００２８】
生成装置１００は、ユーザ端末１０から発話を受け付け、受け付けた発話に対する応答の生成処理を開始する（ステップＳ０２）。
【００２９】
まず、生成装置１００は、発話を解析し、発話が属するドメインを判定する。一例として、生成装置１００は、発話を形態素解析し、各語句に対応付けられた属性情報に基づいて、発話のドメインを判定する。例えば、生成装置１００は、「行き方」や「乗り換え」や「どうやって行くの」等、発話のドメインを判定するための属性情報が設定された語句が発話に含まれるか否かに応じて、ドメインを判定する。あるいは、生成装置１００は、ユーザＵ１の発話のパターンがどのようなドメインに属するかを学習したドメイン判定モデルの出力結果に応じて、ユーザＵ１の発話が属するドメインを判定する。そして、生成装置１００は、判定されたドメインに基づいて、当該発話に対する応答を生成するための第１モジュールを判定する（ステップＳ０３）。
【００３０】
図１の例では、生成装置１００は、「東京駅」「から」「日本一」「高い」「山」「への」「行き方」といったように解析された発話（文字列）のパターンから、当該発話が経路検索モジュールに属すると判定したものとする。
【００３１】
この場合、生成装置１００は、経路検索モジュールにおけるスロットを埋めるため、発話からスロット値の抽出を試みる。例えば、生成装置１００は、スロット抽出処理に対応するモデルに発話を入力することによりスロット値を抽出する。具体的には、生成装置１００は、「から」という語句の前の文字列を「出発地」と推定し、「への」という語句の前の文字列を「到着地」と推定して、スロット値を抽出する。図１の例では、生成装置１００は、「東京駅」を「出発地」として抽出し、「日本一高い山」を「到着地」として抽出するものとする。
【００３２】
上記のように、生成装置１００は、ユーザＵ１の発話から第１モジュールにおけるスロット値を判定する（ステップＳ０４）。このとき、生成装置１００は、第１モジュールのみを用いてユーザＵ１の発話に対する応答を生成することが可能であるか否かを判定する。具体的には、生成装置１００は、第１モジュールのスロット値として判定された文字列によって、第１モジュールによる応答が生成可能か否かを判定する。例えば、生成装置１００は、第１モジュールのスロット値として判定された文字列が、当該スロットに設定された属性情報と一致しているか否かを判定する。
【００３３】
図１の例では、生成装置１００は、出発地のスロット値として抽出された「東京駅」は、「地名」もしくは「駅名」の属性情報を有する文字列と判定する。かかる判定は、例えば、生成装置１００が有する辞書データ等の知識データベースとの照合により行われる。
【００３４】
一方で、生成装置１００は、到着地のスロット値として抽出された「日本一高い山」は、「地名」もしくは「駅名」の属性情報を有する文字列と判定できなかったものとする。例えば、生成装置１００は、「日本一高い山」に対応付けられる属性情報が辞書データに存在しておらず、「日本一高い山」が「地名」もしくは「駅名」であるかを判定することができなかったものとする。この場合、生成装置１００は、第１モジュールのみではユーザＵ１への適切な応答を生成することができる度合い（以下、「適性度」と表記する場合がある）が低いことから、第１モジュールのスロット値として抽出される文字列を変換させる処理を行う。
【００３５】
ここで、生成装置１００は、現時点で第１モジュールのスロット値として抽出された文字列（図１の例では、「日本一高い山」）に基づいて、第２モジュールを判定する（ステップＳ０５）。具体的には、生成装置１００は、「日本一高い山」という文字列を新たな発話として取り扱い、「日本一高い山」という発話が受け付けられた場合のドメインを判定する。例えば、生成装置１００は、上述のドメイン判定モデルを再度用いて、「日本一高い山」が発話として入力された場合に、当該発話が属するドメインを判定する。
【００３６】
図１の例では、生成装置１００は、対象を問われた際の発話パターン（「日本一高い山（は、何か？）」）の類似性に基づいて、当該発話が「Ｑ＆Ａモジュール」に属すると判定する。Ｑ＆Ａモジュールは、例えばユーザ間の相互の質問回答をデータベース化しておき、質問が入力された場合に当該質問に対応する回答を出力するＡＰＩである。
【００３７】
生成装置１００は、第２モジュールであるＱ＆Ａモジュールの処理を実行する（ステップＳ０６）。具体的には、生成装置１００は、「日本一高い山」という発話から、Ｑ＆Ａモジュールのスロットを埋めるスロット値を抽出する。例えば、Ｑ＆Ａモジュールは、「条件＃１」「条件＃２」といったスロットを有し、各スロットには、例えばＱ＆Ａのデータベース上で設定されている文字列が入力されるものとする。図１の例では、Ｑ＆Ａモジュールには、「条件＃１」として「日本一」が、「条件＃２」として「高い山」が抽出される。この場合、生成装置１００は、Ｑ＆Ａモジュールに対応するＡＰＩを利用して、「日本一」という条件と「高い山」という条件とを満たす回答を検索する。そして、生成装置１００は、第２モジュールであるＱ＆Ａモジュールから出力される応答を取得する（ステップＳ０７）。具体的には、生成装置１００は、Ｑ＆Ａモジュールから「富士山」という応答を取得する。かかる応答は、例えば、ユーザＵ１が「日本一高い山」という発話を生成装置１００に送信した場合に、生成装置１００から送信される応答と一致するものである。
【００３８】
生成装置１００は、第２モジュールによって生成された応答を新たな文字列として、第１モジュールに入力する（ステップＳ０８）。図１の例では、生成装置１００は、「日本一高い山」が抽出されていた到着地のスロットに、第２モジュールの応答で得られた「富士山」を入力する。図１の例では、「富士山」が「地名」又は「駅名」の属性情報を有するので、生成装置１００は、かかるスロット値に基づいて第１モジュールの処理を実行することができると判定する。具体的には、生成装置１００は、第１モジュールの応答の適性度が所定の閾値よりも高くなったと判定して、第１モジュールによって適切な応答が生成可能であると判定する。そして、生成装置１００は、第１モジュールの応答を生成する（ステップＳ０９）。
【００３９】
例えば、生成装置１００は、「東京駅」から「富士山」までのナビ上の経路を検索したり、「東京駅」から「富士山」に対応付けられた駅（例えば、「富士山」の最寄駅）までの乗換案内を検索したりする。そして、生成装置１００は、得られた検索結果に基づいて、ユーザＵ１の応答を生成する。
【００４０】
続けて、生成装置１００は、生成した応答をユーザ端末１０に送信する。なお、その後、ユーザ端末１０は、所定のフィードバックを生成装置１００に送信してもよい。例えば、ユーザ端末１０は、「今の応答により正しい回答が得られましたか？」といった内容の質問をユーザＵ１に行い、提示された検索結果が正解であったか否かの反応を受け付け、かかる反応を生成装置１００に送信してもよい。この場合、生成装置１００は、生成した応答が正解（正例）であったことを学習してもよい。あるいは、ユーザ端末１０は、生成装置１００から送信された応答を提示した直後に、ユーザＵ１から異なる内容の発話を受け付けたこと等を生成装置１００に送信してもよい。この場合、ユーザＵ１は自身が意図していた内容と異なる応答を提示されたため、さらに異なる発話をユーザ端末１０に入力したと推定される。言い換えれば、生成装置１００の応答は、不正解であったと推定される。この場合、生成装置１００は、生成した応答を不正解（負例）と学習してもよい。
【００４１】
上記のようなドメイン判定、スロット抽出、応答の生成、及びフィードバックの受信を経て、生成装置１００は、応答の生成に関する学習を行う。例えば、生成装置１００は、学習処理を経て、スロット抽出や応答の生成に係る応答モデルを更新してもよい。また、生成装置１００は、一連の処理によって得られた情報（例えば、「日本一高い山」が「富士山」であること等）をキャッシュとして自身の記憶部に保持してもよい。
【００４２】
このように、実施形態に係る生成装置１００は、発話の入力をユーザＵ１から受け付け、当該発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルのうち、受け付けられた発話の内容に応じて、複数の応答モデルを選択する。そして、生成装置１００は、選択された複数の応答モデルを用いて、受け付けられた発話に対する応答を生成する。
【００４３】
言い換えれば、生成装置１００は、一つの会話に対して、複数のドメインに属する応答モデル（すなわち、対話生成に係るモジュール）を選択する。これにより、生成装置１００は、第１のドメインでは適切な応答を生成できないような対話が受け付けられた場合であっても、他のドメインによる応答を利用することができるため、応答の出力精度を向上させることができる。さらに、実施形態に係る生成処理によれば、ユーザＵ１への再度の問い合わせを発生させることなく、一度の対話で適切な応答を生成することができる。これにより、生成装置１００は、ユーザＵ１の手間を軽減させることができるので、ユーザビリティに優れた対話処理を実現することができる。
【００４４】
なお、生成装置１００は、ユーザＵ１の発話からスロット値を抽出する処理において、発話に対応する文字列に関する情報のみならず、ユーザＵ１に関する他の情報を考慮した生成処理を行ってもよい。例えば、生成装置１００は、ユーザ端末１０が所在する位置情報や、ユーザＵ１との過去の対話、ユーザＵ１のデモグラフィック属性やバイオグラフィック属性等を考慮して、ユーザＵ１の発話に含まれる語句の属性情報を推定する処理や、スロット抽出に関する処理を行ってもよい。
【００４５】
また、上述した発話の文章は、あくまで一例であり、生成装置１００は、任意の発言の内容に基づいて、スロット値の候補からスロット値を選択してよい。例えば、生成装置１００は、「腰が痛い」といった発話を受け付けた場合は、検索する施設の候補の中から「整体病院」等といったスロット値、すなわち、発話の内容と連想関係を有するスロット値を選択し、選択したスロット値「整体病院」を用いて、ユーザＵ１の近傍にある整体病院の情報を応答として提供してもよい。なお、このようなスロット値の選択は、連想関係を学習させたモデルにより実現可能である。
【００４６】
また、生成装置１００は、発話の内容と、ユーザＵ１の属性とに基づいて、スロット値を選択してもよい。一例として、生成装置１００は、ユーザＵ１からレストラン検索に関する発話を受け付けた場合、発話を行ったユーザＵ１が男性である場合には、比較的ボリュームが多い食事を提供するレストランを検索し、ユーザＵ１が女性である場合は、カフェなどの雰囲気が良いレストランの検索を行ってもよい。
【００４７】
また、生成装置１００は、上述した情報以外にも、ユーザＵ１の住所や年齢等といったデモグラフィック属性や趣味趣向等のサイコグラフィック属性に基づいて、生成処理を行ってもよい。例えば、生成装置１００は、ユーザＵ１の各種属性に基づいて、ユーザＵ１の意図をより強く示すと推定される候補を優先的に選択するように、スロット抽出を行う際の重みづけを設定してもよい。また、生成装置１００は、ユーザＵ１が発話した時間帯等、他の情報を考慮して、スロット値の抽出を行ってもよい。
【００４８】
また、生成装置１００は、上述した処理以外にも、任意の処理を合わせて実行してもよい。例えば、上述した説明では、生成装置１００は、発話の文字列からスロット値の抽出や選択を行った。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置１００は、発話の文字列を作成するような音声認識を実行せず、音声の波形データから直接スロット値の抽出や選択を行ってもよい。例えば、生成装置１００は、スロット値として登録される波形の特徴をスロット値の条件として保持し、発話の音声の波形から、スロット値の条件として保持した特徴を有する波形部分を抽出し、抽出した波形部分をスロット値としてもよい。また、生成装置１００は、音声の波形と、文字列または音声の波形により実現されるスロット値の候補との間の関係性の特徴を学習したＤＮＮ等を用いて、発話の音声波形から、スロット値の選択を行ってもよい。
【００４９】
また、生成装置１００は、発話からスロット値を抽出可能であるか否かを判定する処理と、発話からスロット値を抽出可能である場合に、発話からスロット値を抽出する処理と、発話からスロット値を抽出できない場合に、スロット値の候補の中からスロット値を選択する処理とを実行するように、ＤＮＮ等のモデルの学習を行い、学習したモデルを用いて、上述した処理を実行してもよい。また、生成装置１００は、モデルがスロット値を抽出できなかった場合には、所定の応答をユーザＵ１に送信し、新たな発話をユーザＵ１から受け付ける処理を行ってもよい。
【００５０】
また、上記で説明した各モジュールの処理は例示であり、生成装置１００が実行する処理内容は、図１で示した処理に限られない。例えば、生成装置１００が有するＱ＆Ａモジュールは、上記のようなスロットを有さずに以下のような処理を実行してもよい。具体的には、Ｑ＆Ａモジュールは、まずユーザの発話が「山」に関するものであることを認識し、その後、所定の知識データベースに問い合わせを行い、「日本一」や、「高い」といったキーワードを含むスニペットを抽出する。そして、Ｑ＆Ａモジュールは、上記のキーワードの近傍に出現する山の名前を検索し、検索した結果を出力する。この場合、Ｑ＆Ａモジュールは、例えば「質問文」という一つのスロットを有し、そのスロット値は「日本一高い山」である。
【００５１】
〔２．生成処理システムの構成〕
次に、図２を用いて、実施形態に係る生成装置１００が含まれる生成処理システム１の構成について説明する。図２は、実施形態に係る生成処理システム１の構成例を示す図である。図２に例示するように、実施形態に係る生成処理システム１には、ユーザ端末１０と、生成装置１００が含まれる。これらの各種装置は、ネットワークＮ（例えば、インターネット）を介して、有線又は無線により通信可能に接続される。なお、図２に示した生成処理システム１には、複数台のユーザ端末１０が含まれてもよい。
【００５２】
ユーザ端末１０は、例えば、スマートフォンや、デスクトップ型ＰＣや、ノート型ＰＣや、タブレット型端末や、携帯電話機、ＰＤＡ（Personal  Digital  Assistant）、ウェアラブルデバイス（Wearable  Device）等の情報処理装置である。ユーザ端末１０は、ユーザから発話を受け付けたり、受け付けた発話のデータを生成装置１００に送信したりする。なお、本明細書中においては、ユーザとユーザ端末１０とを同一視する場合がある。例えば、「ユーザに応答を送信する」とは、実際には、「ユーザが利用するユーザ端末１０に応答を送信する」ことを意味する場合がある。
【００５３】
生成装置１００は、実施形態に係る生成処理を行うサーバ装置である。実施形態では、生成装置１００は、複数の応答モデルを用いて対話の応答を生成する処理を行う。
【００５４】
なお、図２では図示していないが、生成処理システム１には、生成装置１００が対話の応答を生成するに際して、対話に含まれる文字列に対応付けられた属性情報を提供する知識データベースを有するデータサーバや、各種情報を検索する検索サーバや、各種ＡＰＩを提供する外部サーバ等が含まれてもよい。すなわち、実施形態に係る生成処理は、全ての処理を生成装置１００自身が行ってもよいし、ネットワーク上に点在する複数のサーバが連携して行ってもよい。
【００５５】
〔３．生成装置の構成〕
次に、図３を用いて、実施形態に係る生成装置１００の構成について説明する。図３は、実施形態に係る生成装置１００の構成例を示す図である。図３に示すように、生成装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、生成装置１００は、生成装置１００を利用する管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００５６】
（通信部１１０について）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。かかる通信部１１０は、ネットワークＮと有線又は無線で接続され、ネットワークＮを介して、ユーザ端末１０との間で情報の送受信を行う。
【００５７】
（記憶部１２０について）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。図３に示すように、記憶部１２０は、モデルデータベース１２１と、知識データベース１２３と、キャッシュデータベース１２４とを有する。
【００５８】
（モデルデータベース１２１について）
モデルデータベース１２１は、各種モデルを記憶する。ここで、図４に、実施形態に係るモデルデータベース１２１の一例を示す。図４は、実施形態に係るモデルデータベース１２１の一例を示す図である。図４に示した例では、モデルデータベース１２１は、「モデル種別」、「ドメイン」、「実行処理」、「スロット名」、「属性情報」といった項目を有する。
【００５９】
「モデル種別」は、モデルの種別を示す。具体的には、モデル種別は、対話処理のうち、どのような処理に用いられるモデルであるかを示した情報である。「ドメイン」は、モデルに対応するドメイン（すなわち、対話の分野）を示す情報である。
【００６０】
「実行処理」は、モデルが実行する処理を示す。「スロット名」は、応答モデルが有するスロットの名称を示す。「属性情報」は、対応付けられたスロットにスロット値として格納される文字列等の属性情報、言い換えれば、スロット値として格納される文字列の条件を示す情報である。
【００６１】
すなわち、図４では、モデルデータベース１２１に格納される情報の一例として、モデル種別「音声認識モデル」は、対応するドメインが「ＡＬＬ」（すなわち、全てのドメイン）であり、実行処理が「音声認識」であることを示す。また、モデル種別「応答モデル」の一例は、対応するドメインが「経路検索」であり、実行処理が「経路検索、応答生成」であり、その処理は経路検索モジュールによって実行されることを示している。また、当該応答モデルは、スロット名「出発地」や「到着地」を有しており、かかるスロットに入力される文字列として抽出される文字列は、属性情報「地名」や「駅名」を有する文字列であることを示している。
【００６２】
なお、図４での図示は省略したが、モデルデータベース１２１は、各モデルを構成する各パラメータ等のデータを記憶してもよい。
【００６３】
（知識データベース１２３について）
知識データベース１２３は、各種知識データを記憶する。図３に示すように、知識データベース１２３は、辞書データ１２３Ａ、対応付けデータ１２３Ｂ、Ｑ＆Ａデータ１２３Ｃといったデータテーブルを有する。
【００６４】
（辞書データ１２３Ａについて）
辞書データ１２３Ａは、生成装置１００が有する辞書データの情報を記憶する。ここで、図５に、実施形態に係る辞書データ１２３Ａの一例を示す。図５は、実施形態に係る辞書データ１２３Ａの一例を示す図である。図５に示した例では、辞書データ１２３Ａは、「知識データ種別」、「語句ＩＤ」、「語句」、「品詞」、「属性情報」といった項目を有する。
【００６５】
「知識データ種別」は、データテーブルが有する知識データの種別を示す。「語句ＩＤ」は、語句（文字列）を識別する識別情報を示す。「語句」は、辞書データに登録されている具体的な語句を示す。「品詞」は、辞書データに登録されている品詞を示す。「属性情報」は、辞書データに登録されている属性情報を示す。なお、図５に示す例では、「語句＃１」、「品詞＃１」、「属性情報＃１」等といった概念的な値を記載したが、実際には、各項目には、具体的な語句の文字列や、具体的な品詞の種類や、具体的な属性情報の種別等が記憶される。
【００６６】
すなわち、図５では、辞書データ１２３Ａに格納される情報は、知識データ種別が「辞書データ」であり、格納される情報の一例として、語句ＩＤが「Ｗ０１」である語句は、「語句＃１」という文字列からなる語句であり、その品詞は「品詞＃１」であり、属性情報が「属性情報＃１」であることを示している。
【００６７】
（対応付けデータ１２３Ｂについて）
対応付けデータ１２３Ｂは、生成装置１００が有する対応付けデータの情報を記憶する。対応付けデータとは、ある語句に対して予め対応付けされたデータを示す。例えば、ユーザが有名なランドマークを発話した場合には、生成装置１００は、対応付けデータ１２３Ｂを参照し、かかるランドマークに対応付けされた情報を取得し、取得した情報に基づいて生成処理を行うことができる。
【００６８】
ここで、図６に、実施形態に係る対応付けデータ１２３Ｂの一例を示す。図６は、実施形態に係る対応付けデータ１２３Ｂの一例を示す図である。図６に示した例では、対応付けデータ１２３Ｂは、「知識データ種別」、「カテゴリ」、「語句」、「位置情報」、「最寄駅」といった項目を有する。
【００６９】
「知識データ種別」は、データテーブルが有する知識データの種別を示す。「カテゴリ」は、対応付けデータを有する語句のカテゴリを示す。「語句」は、対応付けデータに登録されている具体的な語句を示す。「位置情報」は、語句に対応する対象（図６の例では、ランドマークの一例である富士山）の位置情報を示す。「最寄駅」は、語句に対応する対象の最寄駅を示す。なお、図６に示す例では、「位置情報＃１」、「駅名＃１」等といった概念的な値を記載したが、実際には、各項目には、具体的な緯度経路等の数値や、具体的な駅名等が記憶される。
【００７０】
すなわち、図６では、対応付けデータ１２３Ｂに格納される情報は、知識データ種別が「対応付けデータ」であり、格納される情報の一例として、カテゴリが「ランドマーク」であり、「富士山」という文字列からなる語句は、位置情報が「位置情報＃１」であり、最寄駅が「最寄駅＃１」に対応付けられていることを示している。
【００７１】
（Ｑ＆Ａデータ１２３Ｃについて）
Ｑ＆Ａデータ１２３Ｃは、生成装置１００が有するＱ＆Ａデータの情報を記憶する。Ｑ＆Ａデータとは、質問と回答とのペアである。Ｑ＆Ａデータは、例えば、生成装置１００の管理者等によって入力されたり、ウェブ上の質問サイト等において、あるユーザが投稿した質問に対して任意のユーザが回答した内容に基づいて生成されたりする。例えば、ユーザが発話した文字列が自明な語句でない場合（辞書データ１２３Ａ等に保持されていない文字列である場合等）には、生成装置１００は、Ｑ＆Ａデータ１２３Ｃを参照し、かかる文字列に対応した回答を取得し、取得した情報に基づいて生成処理を行うことができる。
【００７２】
ここで、図７に、実施形態に係るＱ＆Ａデータ１２３Ｃの一例を示す。図７は、実施形態に係るＱ＆Ａデータ１２３Ｃの一例を示す図である。図７に示した例では、Ｑ＆Ａデータ１２３Ｃは、「知識データ種別」、「質問」、「回答」、「確度」といった項目を有する。
【００７３】
「知識データ種別」は、データテーブルが有する知識データの種別を示す。「質問」は、質問を示した文字列（テキストデータ）を示す。「回答」は、質問に対する回答を示した文字列を示す。「確度」は、回答の確からしさの度合いを示す。確度は、例えば、ユーザに示した回答に対するフィードバックに応じて、その回答が適切であったか否かを学習すること等によって算出される。生成装置１００は、例えば確度が所定閾値を下回った回答に関しては、回答の内容を変更する等の学習処理を行ってもよい。なお、図７に示す例では、「質問＃１」、「回答＃１」、「確度＃１」等といった概念的な値を記載したが、実際には、各項目には、質問や回答の具体的な内容や、確度を示す具体的な数値等が記憶される。
【００７４】
すなわち、図７では、Ｑ＆Ａデータ１２３Ｃに格納される情報は、知識データ種別が「Ｑ＆Ａデータ」であり、格納される情報の一例として、質問が「質問＃１」であるデータの回答が「回答＃１」であり、その確度は「確度＃１」であることを示している。
【００７５】
（キャッシュデータベース１２４について）
キャッシュデータベース１２４は、生成装置１００が取得した情報のキャッシュを記憶する。キャッシュデータベース１２４は、例えば、生成装置１００が外部サーバ等から取得した情報や、ユーザから取得したフィードバックに関する情報等が適宜記憶する。具体的には、キャッシュデータベース１２４は、ユーザの発話のパターンに対して、どの複数の応答モデルを選択したかといった履歴情報や、また、選択した応答モデルが正解であったか不正解であったか等の学習データ等を記憶する。
【００７６】
（制御部１３０について）
制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、生成装置１００内部の記憶装置に記憶されている各種プログラム（生成プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【００７７】
図３に示すように、制御部１３０は、受付部１３１と、選択部１３２と、生成部１３３と、送信部１３４と、学習部１３５とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部１３０が有する各処理部の接続関係は、図３に示した接続関係に限られず、他の接続関係であってもよい。
【００７８】
（受付部１３１について）
受付部１３１は、各種情報を受け付ける。例えば、受付部１３１は、ユーザ端末１０から送信される発話の入力を受け付ける。なお、受付部１３１は、発話に限らず、ユーザ端末１０から送信される文字列（テキストデータ）を受け付けてもよい。
【００７９】
（選択部１３２について）
選択部１３２は、発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、受付部１３１によって受け付けられた発話の内容に応じた複数の応答モデルを選択する。なお、図１で説明したように、選択部１３２は、発話を受けた時点で複数の応答モデルを選択するのではなく、以下に説明する処理の過程において、一つの応答モデルによる応答よりも適切な応答が生成可能と判定した場合に、複数の応答モデルを選択する。
【００８０】
まず、選択部１３２は、受付部１３１によって受け付けられた発話を文字列として認識し、当該発話が属するドメインを分類する。具体的には、選択部１３２は、所定の音声認識モデルを利用して、発話をテキストデータとして認識する処理を行う。選択部１３２は、ユーザの発話をテキストデータに変換する。なお、選択部１３２は、音声データをテキストデータへと変換する所定の外部サーバを介して、ユーザの発話をテキストデータに変換してもよい。そして、選択部１３２は、各種の文字解析技術や分類技術を用いて、当該テキストデータがどのような分野に属する内容であるかを判定する。例えば、選択部１３２は、ＳＶＭ等により生成された任意のドメイン判定モデルを用いて、ユーザの発話がどのような分野に属する内容であるかを判定する。
【００８１】
さらに、選択部１３２は、発話に対応する文字列のパターン等を学習したドメイン判定モデルを用いて、当該発話が属すると推定されるドメインを判定し、発話をドメインごとに分類する。言い換えれば、選択部１３２は、発話の内容に基づいて、発話の応答の生成に用いる応答モデルを選択する。
【００８２】
なお、ドメインは、発話が属する分野を示すとともに、応答生成に係るサービスを示すものともなりうる。例えば、経路検索に係るドメイン（具体的には、当該ドメインに対応するモデル）では、一般に、経路検索サービスを提供するサーバのＡＰＩが利用される。このため、選択部１３２は、ユーザによる所定のサービスの利用履歴等に基づいて、発話を分類してもよい。例えば、選択部１３２は、ユーザに対して提供される各種サービスの利用履歴を収集する。そして、選択部１３２は、各ドメインに対し、各ドメインに対応する種別のサービスをユーザが利用した頻度や時期に応じたスコアを付与する。さらに、選択部１３２は、分類モデルを用いて、発話と各ドメインの関連性を示すスコアを算出する。そして、選択部１３２は、サービスの利用履歴に基づくスコアと、分類モデルにより算出されたスコアとを統合的に用いて、発話の分類先となるドメインを選択してもよい。また、選択部１３２は、ユーザの属性（例えば、ユーザの性別や年齢や居住地等）に基づいて対話を分類してもよい。上記の処理により、選択部１３２は、ユーザの発話に対応する第１のドメインを選択する。すなわち、選択部１３２は、受付部１３１によって発話が受け付けられた場合、はじめから複数のドメイン（応答モデル）を選択するのではなく、発話の応答に最も適すると想定されるような第１のドメイン（応答モデル）を選択する。
【００８３】
続いて、選択部１３２は、選択した第１のドメインに対応する第１の応答モデルを用いて、発話に対する応答を生成する。具体的には、選択部１３２は、第１の応答モデルを用いて、第１のドメインに対応するモジュールのスロット値を抽出する処理を実行する。例えば、選択部１３２は、ユーザの発話にどのような属性情報が対応付けられるか（ラベル付けされるか）を判定し、判定した結果に基づいて、発話からスロット値を抽出する。
【００８４】
そして、選択部１３２は、第１の応答モデルのみを用いて受付部１３１によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する。
【００８５】
より具体的には、選択部１３２は、第１の応答モデルを用いて受付部１３１によって受け付けられた発話に対する応答を生成した場合の生成結果、応答を生成する際に実行した検索結果、又は、生成した応答に対するユーザの反応の少なくともいずれか一つに基づいて、適性度を判定する。例えば、選択部１３２は、第１の応答モデルを用いて応答を生成した場合に、第１の応答モデルにおいて抽出したスロット値が適切なものでない場合、生成結果として所定のエラーを返す場合がある。具体的には、選択部１３２は、図１で示した経路検索モジュールの「到着地」のスロット値を「日本一高い山」として応答を生成した場合、「日本一高い山」のスロット値が示す情報が不明確であるとして、エラーを返す場合がある。このような場合、選択部１３２は、エラーでない応答が生成できた場合と比較して、かかる応答の適性度を低く判定する。
【００８６】
あるいは、選択部１３２は、応答を生成する際に実行した検索結果に基づいて適性度を判定してもよい。具体的には、選択部１３２が、経路検索モジュールの「到着地」のスロット値を「日本一高い山」として経路検索を行った場合、「出発地」と「到着地」のスロット値がともに地名や駅名である場合と比較して、少数の検索結果が出力されると推定される。これは、「日本一高い山」が検索サーバ等では認識できず、結果として、乗換案内情報や経路情報が少数しか検索されないことによる。このような場合も、選択部１３２は、比較的少数しか検索されなかった過程を経た応答は、比較的多数の検索結果を有する応答と比較して、かかる応答の適性度を低く判定する。
【００８７】
また、選択部１３２は、第１の応答モデルを用いて生成した応答に対するユーザの反応に基づいて適性度を判定してもよい。例えば、選択部１３２は、第１の応答モデルによって生成された応答を受信したユーザから、「この応答が適切でない」と明示されたフィードバックを受信したり、ユーザから即座に新たな質問を受け付けたりした場合には、第１の応答モデルによって生成された応答は、比較的好ましくない応答であったと判定する。そして、選択部１３２は、かかる応答は、ユーザが好ましいと判定した応答と比較して、適性度を低く判定する。
【００８８】
上記のような判定処理を経て、第１の応答モデルによって適切な応答が生成できないと推定される場合に、選択部１３２は、受付部１３１によって受け付けられた発話に含まれる所定の文字列であって、第１の応答モデルのスロットに入力される候補である文字列に基づいて、第２の応答モデルを選択する。
【００８９】
具体的には、選択部１３２は、受付部１３１によって受け付けられた発話に含まれる所定の文字列が応答モデルのスロットに入力された場合の適性度を判定し、当該所定の文字列が第１の応答モデルのスロットに入力された場合の適性度が所定の閾値よりも低い場合に、所定の文字列が入力された場合の適性度が所定の閾値よりも高くなるスロットを有する第２の応答モデルを選択する。例えば、選択部１３２は、スロット値として抽出された文字列が、当該スロットに設定された属性情報を有するか否かに基づいて、スロット値としての適切性を判定する。
【００９０】
例えば、図１に示した例では、「日本一高い山」という文字列が「地名」や「駅名」等の属性情報を有していないため、「日本一高い山」は、経路検索モジュールのスロット値としての適性度は比較的低いと想定される。具体的には、選択部１３２は、経路検索モジュールのスロット値として「日本一高い山」が抽出された場合、その適性度が所定の閾値より低いと判定する。一方、「日本一高い山」という文字列が「Ｑ＆Ａデータ」として知識データベース１２３に記憶されている場合には、「日本一高い山」は、Ｑ＆Ａモジュールのスロット値としての適性は比較的高いと想定される。すなわち、選択部１３２は、「日本一高い山」が第１の応答モデル（この例では、経路検索モジュール）のスロットに入力された場合の適性度が所定の閾値よりも低い場合に、「日本一高い山」が入力された場合の適性度が所定の閾値よりも高くなるスロットを有する第２の応答モデル（この例では、Ｑ＆Ａモジュール）を選択する。
【００９１】
また、選択部１３２は、後述する生成部１３３によって生成された応答を受信したユーザの過去の反応に基づいて、受付部１３１によって受け付けられた発話の内容に応じた複数の応答モデルを選択してもよい。例えば、選択部１３２は、ユーザから受け付けた発話のログと、当該発話に対して選択した複数の応答モデルと、応答モデルが生成した応答に対するユーザの反応が好意的であったか否かといった情報を保持する。そして、選択部１３２は、次に発話が受け付けられた場合に、当該ログを利用して、よりユーザが好意的な反応を示すと想定される応答を生成することのできる応答モデルを選択する。なお、このようなユーザのフィードバックを利用した選択処理は、後述する学習部１３５による学習処理を経て行われる。例えば、学習部１３５は、選択部１３２が適切な応答モデルを選択するための学習を行う。
【００９２】
上述してきたように、選択部１３２は、ユーザの発話に応じて、複数の応答モデルを選択する。そして、選択部１３２は、選択した複数の応答モデルに関する情報を生成部１３３に送る。
【００９３】
（生成部１３３について）
生成部１３３は、選択部１３２によって選択された複数の応答モデルを用いて、受付部１３１によって受け付けられた発話に対する応答を生成する。
【００９４】
具体的には、生成部１３３は、選択部１３２によって選択された複数の応答モデルのうち、第２の応答モデルから出力された回答結果を第１の応答モデルに入力することで、発話に対する応答を生成する。具体的には、生成部１３３は、第１の応答モデルが経路検索モジュールを用いるものであり、第２の応答モデルがＱ＆Ａモジュールを用いるものである場合、Ｑ＆Ａモジュールの処理によって取得された情報（例えば、「日本一高い山」が「富士山」であるという情報）を第１の応答モデルに入力して、第１の応答モデルを用いて発話に対する応答を生成する。
【００９５】
この場合、生成部１３３は、受付部１３１によって受け付けられた発話が第１の応答モデルに入力された場合に出力される第１の回答の評価値に応じて、第１の回答をユーザに応答するか、あるいは、第２の応答モデルから出力された回答結果を当該第１の応答モデルに新たに入力して出力される第２の回答をユーザに応答するかを判定してもよい。この場合の評価値とは、例えば、選択部１３２が応答モデルを選択する際に利用する適性度と同様に算出されてもよい。
【００９６】
例えば、生成部１３３は、第１のドメインに対応する経路検索モジュールにおいて、出発地「東京駅」と到着地「日本一高い山」のスロット値に基づいて実行される処理（具体的には経路検索処理）の結果と、出発地「東京駅」は変えずに、Ｑ＆Ａモジュールの処理を経て抽出された到着地「富士山」のスロット値に基づいて実行される結果とにおいて、いずれが回答結果として適切かを評価する。例えば、生成部１３３は、ウェブ検索される結果数や、エラーの発生の有無等に基づいて、評価値を算出する。そして、生成部１３３は、はじめから第１の応答モデルのみによって生成された第１の回答が適切か、あるいは、第２の応答モデルを経て生成された第２の回答が適切かを判定した上で、ユーザに送信する応答を選択する。すなわち、生成部１３３は、実際に出力された結果を参照して応答を判定するため、ユーザの発話に対してより適切な応答を生成することができる。
【００９７】
また、生成部１３３は、第１の回答もしくは第２の回答を受信したユーザの反応に基づいて、第１の回答もしくは第２の回答に対する評価値を更新してもよい。例えば、生成部１３３は、第２の応答モデルを経て応答を生成したとしても、必ずしもユーザにとって適切な応答を生成できるとは限らない。このため、生成部１３３は、ユーザからのフィードバックを受信し、受信した情報に基づいて評価値を更新することで、よりユーザに対して適切と想定される応答を生成できるよう学習することができる。
【００９８】
（送信部１３４について）
送信部１３４は、生成部１３３によって生成された応答をユーザに送信する。すなわち、送信部１３４は、生成された応答をユーザ端末１０に送信し、ユーザとの対話処理を実現させる。なお、送信部１３４は、応答をテキストデータで送信してもよいし、音声データで送信してもよい。
【００９９】
（学習部１３５について）
学習部１３５は、送信部１３４によって送信された応答を受信したユーザからフィードバックを取得し、取得した情報に基づいて学習処理を行う。具体的には、学習部１３５は、応答を受信したユーザのその後の行動情報を取得し、取得した情報に基づいて応答が正例であったか負例であったかを判定することで、選択部１３２に係る選択処理や生成部１３３に係る生成処理に関する学習を行う。
【０１００】
例えば、学習部１３５は、応答を受信したユーザに対して「今の応答により正しい回答が得られましたか？」といった内容の質問を送信し、その結果に応じて学習を行ってもよい。また、学習部１３５は、ユーザから異なる内容の発話を更に受け付けたことや、ユーザが異なる検索サイトを訪問した情報等を取得して、その結果に応じて学習を行ってもよい。そして、学習部１３５は、ユーザの行動情報を正例もしくは負例に判定し、当該ユーザに対して応答を生成した選択部１３２や生成部１３３の処理過程との関係性に基づいて各モデルを学習（更新）してもよい。
【０１０１】
〔４．処理手順〕
次に、図８及び図９を用いて、実施形態に係る生成装置１００による処理の手順について説明する。図８は、実施形態に係る処理手順を示すフローチャート（１）である。
【０１０２】
図８に示すように、生成装置１００は、ユーザ端末１０から発話を受け付ける（ステップＳ１０１）。続けて、生成装置１００は、発話が属するドメインを判定することにより、発話の応答に用いる第１モジュールを判定する（ステップＳ１０２）。
【０１０３】
そして、生成装置１００は、第１モジュールで生成される応答の適性度が所定の閾値を超えるか否かを判定する（ステップＳ１０３）。第１モジュールで生成される応答の適性度が所定の閾値を超えないと判定した場合（ステップＳ１０３；Ｎｏ）、生成装置１００は、第１モジュールのスロット値の候補となった文字列を抽出する（ステップＳ１０４）。
【０１０４】
そして、生成装置１００は、抽出した文字列を発話として取り扱った場合に当該文字列が属するドメインを判定することで、抽出した文字列から第２モジュールを判定する（ステップＳ１０５）。生成装置１００は、例えば抽出した文字列をスロット値とすること等を経て、第２モジュールによる応答を生成する（ステップＳ１０６）。
【０１０５】
続いて、生成装置１００は、第２モジュールから得られた応答を第１モジュールに入力する（ステップＳ１０７）。その後、生成装置１００は、あらためて第１モジュールによる応答を生成する（ステップＳ１０８）。生成装置１００は、生成した応答をユーザに送信する（ステップＳ１０９）。
【０１０６】
なお、生成装置１００は、ステップＳ１０３において、第１モジュールで生成される応答の適性度が所定の閾値を超える場合には（ステップＳ１０３；Ｙｅｓ）、ステップＳ１０４〜ステップＳ１０７をスキップして、第１モジュールによる応答を生成してもよい。
【０１０７】
次に、図９を用いて、実施形態に係る生成装置１００による学習処理の手順について説明する。図９は、実施形態に係る処理手順を示すフローチャート（２）である。
【０１０８】
生成装置１００は、応答を送信したユーザからフィードバックを受け付けたか否かを判定する（ステップＳ２０１）。フィードバックを受け付けていない場合（ステップＳ２０１；Ｎｏ）、生成装置１００は、フィードバックを受け付けるまで待機する。
【０１０９】
フィードバックを受け付けた場合（ステップＳ２０１；Ｙｅｓ）、生成装置１００は、フィードバックに基づいて応答を評価する（ステップＳ２０２）。そして、生成装置１００は、応答モデルを更新する（ステップＳ２０３）。なお、生成装置１００は、必ずしもユーザからのフィードバックを用いて学習を行うのではなく、生成装置１００の管理者によって与えられる報酬や正解データに基づいて学習を行ってもよい。また、生成装置１００は、応答モデルに限らず、音声認識モデルやドメイン判定モデルを更新してもよい。
【０１１０】
〔５．変形例〕
上述した生成装置１００は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、生成装置１００の他の実施形態について説明する。
【０１１１】
〔５−１．応答モデルの数〕
上記実施形態では、生成装置１００が、２つの応答モデルに対応する処理を実行して、ユーザに対する応答を生成する例を示した。ここで、生成装置１００は、３つ以上の応答モデルに対応する処理を実行してユーザに対する応答を生成してもよい。
【０１１２】
例えば、生成装置１００は、ユーザから「昨日、芸能人Ｘが着てた服で、一番安いサイトはどこ？」といった発話を受け付けたものとする。この場合、生成装置１００は、対象「昨日、芸能人Ｘが着てた服」を扱うストアを検索するストア検索モジュールを実行する。さらに、生成装置１００は、対象を示すと推定される文字列「昨日、芸能人Ｘが着てた服」に応答するための応答モデルを選択する。例えば、生成装置１００は、「芸能人Ｘ」に関する画像データであって、「昨日」アップロードされた画像データを検索する画像検索を行うための応答モデルを選択する。
【０１１３】
さらに、生成装置１００は、画像検索を行うための応答モデルによって出力された画像データから、画像データに基づいて対象の名称を検索するための応答モデルを選択する。そして、生成装置１００は、画像データに基づいて対象の名称を検索するための応答モデルから出力された結果を、第１のモジュールであるストア検索モジュールに入力する。これにより、生成装置１００は、ユーザの発話に対する応答（例えば、画像によって推定された服を扱うストアを販売価格の安い順に並べた検索結果）を生成することができる。
【０１１４】
このように、生成装置１００は、３つ以上の応答モデルを経て、ユーザの応答を生成してもよい。すなわち、生成装置１００は、各応答モデルにおけるスロット値の適性度に基づいて次々と異なる応答モデルを選択して出力を得ることができるので、ユーザからの複雑な対話に対しても、ユーザに対して聞き返しの処理等を発生させることなく適切な応答を生成することができる。
【０１１５】
〔５−２．応答モデルの選択〕
上記実施形態では、生成装置１００が、第１の応答モデルに入力させるための情報を得るために第２の応答モデルから出力を得る処理を例として示した。ここで、生成装置１００は、必ずしも第１の応答モデルを用いてユーザへの応答を生成することを要しない。すなわち、生成装置１００は、入力されたスロット値の適性度や、生成された応答の評価値によっては、第１の応答モデルによる応答ではなく、第２の応答モデルや第３の応答モデルによって応答を生成してもよい。すなわち、生成装置１００は、応答を生成する応答モデルのうち、より適切な応答モデルが存在する場合には、最初の発話に基づいて選択された第１の応答モデルによって応答を生成せず、他の応答モデルを利用して応答を生成してもよい。
【０１１６】
〔５−３．音声認識モデル〕
上述した実施形態では、生成装置１００が、例えば音声認識モデルを利用して、ユーザの発話を文字列に変換して処理を行う例を示した。この場合、発話の変換に用いる音声認識モデルは、例えばドメインごとに、ある発話を入力した際に、その発話を行ったユーザの意図を出力するようにモデルの学習を行うことで実現可能であり、このような学習手法については、任意の学習技術が採用可能である。
【０１１７】
また、生成装置１００は、発話からユーザの意図を示す文字列へと変換することができるのであれば、任意の音声認識モデルを用いて発話の変換を行ってよい。例えば、生成装置１００は、ｗｏｒｄ２ｖｅｃ等、単語を単語の相対的な意味に基づくベクトル表現へと変換する技術を用いて、発話の文字列を発話の意味を示すベクトル表現に変換し、変換したベクトル表現を、ユーザの意図を示す単語のベクトル表現へと変換する音声認識モデルを用いて、発話の変換を行ってもよい。
【０１１８】
また、生成装置１００は、ユーザの属性を考慮した学習が行われた音声認識モデルを用いてもよい。例えば、生成装置１００は、ある発言とその発言を行ったユーザの属性とを入力した際に、そのユーザの意図を示す文字列へと変換するように学習が行われた音声認識モデルを保持してもよい。例えば、生成装置１００は、ある発言を、その発言をある属性を有するユーザが発言した際のそのユーザの意図を示す文字列へと変換するように学習が行われた音声認識モデルを、属性ごとに保持してもよい。そして、生成装置１００は、ユーザの属性に応じて、使用する音声認識モデルを選択し、選択した音声認識モデルを用いて、発言の変換を行ってもよい。また、生成装置１００は、ドメインとユーザの属性との組合せごとに異なる音声認識モデルを用いてもよく、また、各ユーザ専用の音声認識モデルを用いてもよい。
【０１１９】
〔５−４．対話処理の構成〕
上述した生成装置１００は、いわゆるスロットフィリングの結果を用いて応答を生成した。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置１００は、ユーザの発話の意図を特定し、特定した意図からユーザとの対話の状況を判定し、判定した状況に応じた応答を生成するといった処理により、ユーザとの応答を生成するといった対話処理を実行する場合がある。このような対話処理において、生成装置１００は、ユーザの発話の意図を特定する際に、上述したスロットフィリングの技術を適用し、スロットフィリングの結果に応じて、ユーザとの対話の状況を判定し、判定した状況に応じた応答を生成してもよい。すなわち、生成装置１００は、ユーザの発話からユーザの意図を反映させたスロット値を得るのであれば、他の任意の処理と組み合わせて、発話に対する応答を生成してよい。
【０１２０】
〔５−５．知識データベース〕
上述した実施形態では、生成装置１００が、知識データベース１２３に保持された情報を用いて対話処理を行う例を示した。ここで、生成装置１００は、ネットワークを介して利用されるいわゆるクラウドサーバ等を介して取得した知識データを利用して、上述した生成処理を実行してもよい。また、生成装置１００は、クラウドサーバのように、必ずしもクラウドのように広域ネットワークを前提とするものでなくてもよい。例えば、ローカルネットワーク等に接続された各サーバから知識データを取得してもよい。
【０１２１】
〔５−６．応答モデル〕
上述した実施形態では、生成装置１００が、経路検索モジュールに対応した第１応答モデルと、Ｑ＆Ａモジュールに対応した第２応答モデルとを利用して、ユーザに対する応答を生成する例を示した。
【０１２２】
しかし、生成装置１００は、必ずしも第１応答モデルと第２応答モデルとで異なる応答モデルを選択することを要しない。すなわち、生成装置１００は、同一のモジュールを有する第１応答モデルと第２応答モデルとを選択してもよい。この場合、生成装置１００は、第１応答モデルに入力されたスロット値のうち、当該スロット値の内容の確度を向上させたり、いくつかの解釈の候補のあるスロット値の内容を確定させたりするため、第２応答モデルを選択する。すなわち、生成装置１００は、複数の経路検索モジュールを選択してもよいし、複数のＱ＆Ａモジュールを選択してもよい。
【０１２３】
また、上述した実施形態では、説明のために、発話が属するドメイン（モジュール）と、応答モデルとを各々一つずつ対応付けているが、これらは必ずしも一つずつが対応付けられなくてもよい。例えば、生成装置１００は、複数ドメインを処理するための処理エンジンを有する応答モデルを用いて、ユーザからの発話に対する応答を生成してもよい。また、実施形態では、生成装置１００が複数の応答モデルを用いて応答を生成するものとしているが、かかる構成は、例えば、ドメインに対応した処理を行う複数の処理エンジン（モデル）を有する一モジュールによって応答を生成する、と読み替えることも可能である。
【０１２４】
〔６．ハードウェア構成〕
上述してきた実施形態に係る生成装置１００やユーザ端末１０は、例えば図１０に示すような構成のコンピュータ１０００によって実現される。以下、生成装置１００を例に挙げて説明する。図１０は、生成装置１００の機能を実現するコンピュータ１０００の一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ１３００、ＨＤＤ１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０１２５】
ＣＰＵ１１００は、ＲＯＭ１３００又はＨＤＤ１４００に記憶されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を記憶する。
【０１２６】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を記憶する。通信インターフェイス１５００は、通信網５００（図２に示したネットワークＮに対応）を介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータを、通信網５００を介して他の機器へ送信する。
【０１２７】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、入出力インターフェイス１６００を介して生成したデータを出力装置へ出力する。
【０１２８】
メディアインターフェイス１７００は、記録媒体１８００に記憶されたプログラム又はデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０１２９】
例えば、コンピュータ１０００が実施形態に係る生成装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。また、ＨＤＤ１４００には、記憶部１２０内のデータが記憶される。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置から通信網５００を介してこれらのプログラムを取得してもよい。
【０１３０】
〔７．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０１３１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図３に示した受付部１３１と選択部１３２とは統合されてもよい。また、例えば、記憶部１２０に記憶される情報は、ネットワークＮを介して、外部に備えられた所定の記憶装置に記憶されてもよい。
【０１３２】
また、上記実施形態では、生成装置１００が、例えば、発話を受け付ける受付処理と、複数の応答モデルを選択する選択処理と、応答を生成する生成処理とを行う例を示した。しかし、上述した生成装置１００は、発話を受け付ける受付サーバ、複数の応答モデルを選択する選択サーバ、応答を生成する生成サーバ等が連携して動作することにより、実現されてもよい。この場合、上記の生成装置１００による処理は、各サーバを含む生成処理システム１によって実現される。
【０１３３】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０１３４】
〔８．効果〕
上述してきたように、実施形態に係る生成装置１００は、受付部１３１と、選択部１３２と、生成部１３３とを有する。受付部１３１は、発話の入力をユーザから受け付ける。選択部１３２は、発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、受付部１３１によって受け付けられた発話の内容に応じた複数の応答モデルを選択する。生成部１３３は、選択部１３２によって選択された複数の応答モデルを用いて、受付部１３１によって受け付けられた発話に対する応答を生成する。
【０１３５】
このように、実施形態に係る生成装置１００は、発話に対して複数の応答モデルを用いて応答を生成する。これにより、生成装置１００は、単独の応答モデルでは適切な応答を生成できないような複雑な内容の発話が受け付けられた場合であっても、他の応答モデルを利用して情報を得ることで、適切な応答を生成することができる。このため、生成装置１００は、応答の出力精度を向上させることができる。
【０１３６】
また、選択部１３２は、第１の応答モデルのみを用いて受付部１３１によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する。
【０１３７】
このように、実施形態に係る生成装置１００は、第１の応答モデルによる応答の適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する。これにより、生成装置１００は、第１の応答モデルによる応答の適性度が所定の閾値を超えない場合でも、ユーザへの聞き返し等の問い合わせを発生させずに、応答の生成処理を行うことができる。このため、生成装置１００は、対話処理に関するユーザの手間を軽減させることができるので、ユーザビリティに優れた対話処理を実現することができる。
【０１３８】
また、選択部１３２は、第１の応答モデルを用いて受付部１３１によって受け付けられた発話に対する応答を生成した場合の生成結果、応答を生成する際に実行した検索結果、又は、生成した応答に対するユーザの反応の少なくともいずれか一つに基づいて、適性度を判定する。
【０１３９】
このように、実施形態に係る生成装置１００は、第１の応答モデルにおける種々の処理の過程を参照して適性度を判定する。このため、生成装置１００は、第１の応答モデルによる応答が適正なものであるかを精度よく判定することができる。
【０１４０】
また、選択部１３２は、受付部１３１によって受け付けられた発話に含まれる所定の文字列であって、第１の応答モデルのスロットに入力される候補である文字列に基づいて、第２の応答モデルを選択する。
【０１４１】
このように、実施形態に係る生成装置１００は、第１の応答モデルのスロットに入力される候補、言い換えれば、第１の応答モデルの処理に影響を与えていると想定される文字列によって第２の応答モデルを選択することができる。これにより、生成装置１００は、第２の応答モデルによる処理を通じて、第１の応答モデルの処理に影響を与えていると想定される文字列に関する情報を取得できる確度を高めることができる。結果として、生成装置１００は、生成する応答の適切さをより高めることができる。
【０１４２】
また、選択部１３２は、受付部１３１によって受け付けられた発話に含まれる所定の文字列が応答モデルのスロットに入力された場合の適性度を判定し、当該所定の文字列が第１の応答モデルのスロットに入力された場合の適性度が所定の閾値よりも低い場合に、当該所定の文字列が入力された場合の適性度が所定の閾値よりも高くなるスロットを有する第２の応答モデルを選択する。
【０１４３】
このように、実施形態に係る生成装置１００は、スロット抽出処理における適性度に基づいて第２の応答モデルを選択してもよい。これにより、生成装置１００は、適切なスロット値を入力することのできるモデルを第２の応答モデルとして選択できるので、第２の応答モデルから適切な出力を得る確度を高めることができる。
【０１４４】
また、生成部１３３は、選択部１３２によって選択された複数の応答モデルのうち、第２の応答モデルから出力された回答結果を第１の応答モデルに入力することで、発話に対する応答を生成する。
【０１４５】
このように、実施形態に係る生成装置１００は、第２の応答モデルから得られた情報を第１の応答モデルに入力することで応答を生成する。これにより、生成装置１００は、第１の応答モデルにおいて不確定な要素であったり、適切な結果を得られなかったりした対象について、第２の応答モデルから得られた情報に置き換えて処理を行うことができるため、適切な応答を生成することができる。
【０１４６】
また、生成部１３３は、受付部１３１によって受け付けられた発話が第１の応答モデルに入力された場合に出力される第１の回答の評価値に応じて、当該第１の回答をユーザに応答するか、あるいは、第２の応答モデルから出力された回答結果を当該第１の応答モデルに新たに入力して出力される第２の回答をユーザに応答するかを判定する。
【０１４７】
このように、実施形態に係る生成装置１００は、ユーザに対して送信する応答について、第１の応答モデルに限らず、他の応答モデルによって生成された応答を送信するようにしてもよい。これにより、生成装置１００は、対話処理という多様な判断を求められる処理において、第１の応答モデルによる応答を生成するといった固定された情報処理にとらわれず、場合によっては第２の応答モデルによる応答をユーザに送信するなど、柔軟な情報処理を行うことができる。
【０１４８】
また、生成部１３３は、第１の回答もしくは第２の回答を受信したユーザの反応に基づいて、当該第１の回答もしくは当該第２の回答に対する評価値を更新する。
【０１４９】
このように、実施形態に係る生成装置１００は、ユーザの反応に基づいて、応答モデルの選択や、応答の生成処理を学習してもよい。これにより、生成装置１００は、ユーザの求めに応じた強化学習が可能になるため、選択処理や生成処理を最適化することができる。
【０１５０】
また、選択部１３２は、生成部１３３によって生成された応答を受信したユーザの過去の反応に基づいて、受付部１３１によって受け付けられた発話の内容に応じた複数の応答モデルを選択する。
【０１５１】
このように、実施形態に係る生成装置１００は、ユーザからのフィードバックに応じて選択するモデルを判定してもよい。これにより、生成装置１００は、ユーザにとって適切な対話が成立するような応答を生成することのできる応答モデルを優先的に選択することができる。
【０１５２】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１５３】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
【符号の説明】
【０１５４】
１  生成処理システム
１０  ユーザ端末
１００  生成装置
１１０  通信部
１２０  記憶部
１２１  モデルデータベース
１２３  知識データベース
１２４  キャッシュデータベース
１３０  制御部
１３１  受付部
１３２  選択部
１３３  生成部
１３４  送信部
１３５  学習部
【図１】
2019012439.tif 000003
【図２】
2019012439.tif 000004
【図３】
2019012439.tif 000005
【図４】
2019012439.tif 000006
【図５】
2019012439.tif 000007
【図６】
2019012439.tif 000008
【図７】
2019012439.tif 000009
【図８】
2019012439.tif 000010
【図９】
2019012439.tif 000011
【図１０】
2019012439.tif 000012
【手続補正書】
【提出日】平成30年5月21日(2018.5.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
発話の入力をユーザから受け付ける受付部と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択部と、
前記選択部によって選択された複数の応答モデルを用いて、前記受付部によって受け付けられた発話に対する応答を生成する生成部と、
を備え、
前記選択部は、
第１の応答モデルのみを用いて前記受付部によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する、
ことを特徴とする生成装置。
【請求項２】
前記選択部は、
前記第１の応答モデルを用いて前記受付部によって受け付けられた発話に対する応答を生成した場合の生成結果、応答を生成する際に実行した検索結果、又は、生成した応答に対するユーザの反応の少なくともいずれか一つに基づいて、前記適性度を判定する、
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記選択部は、
前記受付部によって受け付けられた発話に含まれる所定の文字列であって、第１の応答モデルのスロットに入力される候補である文字列に基づいて、第２の応答モデルを選択する、
ことを特徴とする請求項１又は２に記載の生成装置。
【請求項４】
前記選択部は、
前記受付部によって受け付けられた発話に含まれる所定の文字列が応答モデルのスロットに入力された場合の適性度を判定し、当該所定の文字列が前記第１の応答モデルのスロットに入力された場合の適性度が所定の閾値よりも低い場合に、当該所定の文字列が入力された場合の適性度が所定の閾値よりも高くなるスロットを有する前記第２の応答モデルを選択する、
ことを特徴とする請求項１〜３のいずれか一つに記載の生成装置。
【請求項５】
前記生成部は、
前記選択部によって選択された複数の応答モデルのうち、第２の応答モデルから出力された回答結果を前記第１の応答モデルに入力することで、前記発話に対する応答を生成する、
ことを特徴とする請求項１〜４のいずれか一つに記載の生成装置。
【請求項６】
前記生成部は、
前記受付部によって受け付けられた発話が前記第１の応答モデルに入力された場合に出力される第１の回答の評価値に応じて、当該第１の回答をユーザに応答するか、あるいは、前記第２の応答モデルから出力された回答結果を当該第１の応答モデルに新たに入力して出力される第２の回答をユーザに応答するかを判定する、
ことを特徴とする請求項１〜５のいずれか一つに記載の生成装置。
【請求項７】
前記生成部は、
前記第１の回答もしくは前記第２の回答を受信したユーザの反応に基づいて、当該第１の回答もしくは当該第２の回答に対する評価値を更新する、
ことを特徴とする請求項６に記載の生成装置。
【請求項８】
前記選択部は、
前記生成部によって生成された応答を受信したユーザの過去の反応に基づいて、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する、
ことを特徴とする請求項１〜７のいずれか一つに記載の生成装置。
【請求項９】
コンピュータが実行する生成方法であって、
発話の入力をユーザから受け付ける受付工程と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付工程によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択工程と、
前記選択工程によって選択された複数の応答モデルを用いて、前記受付工程によって受け付けられた発話に対する応答を生成する生成工程と、
を含み、
前記選択工程は、
第１の応答モデルのみを用いて前記受付工程によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する、
ことを特徴とする生成方法。
【請求項１０】
発話の入力をユーザから受け付ける受付手順と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付手順によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択手順と、
前記選択手順によって選択された複数の応答モデルを用いて、前記受付手順によって受け付けられた発話に対する応答を生成する生成手順と、
をコンピュータに実行させ、
前記選択手順は、
第１の応答モデルのみを用いて前記受付手順によって受け付けられた発話に対する応答を生成する場合の適性度を判定し、適性度が所定の閾値を超えないと判定した場合に、第２の応答モデルを選択する、
ことを特徴とする生成プログラム。
【請求項１１】
発話の入力をユーザから受け付ける受付部と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付部によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択部と、
前記選択部によって選択された複数の応答モデルを用いて、前記受付部によって受け付けられた発話に対する応答を生成する生成部と、
を備え、
前記選択部は、
第１の応答モデルを用いて前記発話に対する応答を生成できない場合に、第２の応答モデルを選択する、
ことを特徴とする生成装置。
【請求項１２】
コンピュータが実行する生成方法であって、
発話の入力をユーザから受け付ける受付工程と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付工程によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択工程と、
前記選択工程によって選択された複数の応答モデルを用いて、前記受付工程によって受け付けられた発話に対する応答を生成する生成工程と、
を備え、
前記選択工程は、
第１の応答モデルを用いて前記発話に対する応答を生成できない場合に、第２の応答モデルを選択する、
ことを特徴とする生成方法。
【請求項１３】
発話の入力をユーザから受け付ける受付手順と、
発話が属する分野に応じて選択されるモデルであって、発話への応答の生成に用いられるモデルである応答モデルとして、前記受付手順によって受け付けられた発話の内容に応じた複数の応答モデルを選択する選択手順と、
前記選択手順によって選択された複数の応答モデルを用いて、前記受付手順によって受け付けられた発話に対する応答を生成する生成手順と、
をコンピュータに実行させ、
前記選択手順は、
第１の応答モデルを用いて前記発話に対する応答を生成できない場合に、第２の応答モデルを選択する、
ことを特徴とする生成プログラム。