(58)【調査した分野】(Int.Cl.,DB名)
入力される入力用音声を入力文字列の情報に変換し、変換された前記入力文字列の情報を基に回答文又は質問文の情報を含む出力文字列を作成し、作成した前記出力文字列の情報を合成音声に変換し、変換された前記合成音声を出力用音声として出力する音声対話システムであって、
文字列を構成する情報であって、予め想定された文字列の候補を示す複数のバリューと、前記複数のバリューの各々を識別する複数のバリュー識別子とが紐付けられて記憶されたバリューリストと、
前記文字列を構成する情報を識別する識別子を示す複数のスロットの各々と、前記複数のバリュー識別子の各々とが紐付けられて記憶され、且つ前記複数のスロットの各々と前記複数のバリュー識別子の各々とが1以上の回答文に紐付けられて記憶された回答文リストと、
前記複数のスロットの各々と、前記複数のスロットの各々に隣接配置される複数の周辺文字列とが紐付けられて記憶された周辺文字列リストと、
予め想定された複数の想定入力文字列と、前記複数の想定入力文字列の各々に紐付けられた1又は2以上の前記スロット及び前記バリューを含む複数のスロットバリュー抽出モデルを記憶する記憶部と、
前記入力文字列と前記複数のスロットバリュー抽出モデルの中の前記各想定入力文字列との類似度を比較し、類似度の高い想定入力文字列に紐付けられた前記スロットを基に前記入力文字列における前記スロットの位置を推定し、推定した前記スロットの位置に対応した前記バリューを前記入力文字列から抽出するスロットバリュー抽出部と、
前記バリューリストと前記回答文リスト及び前記周辺文字列リストを基に第1の学習データを作成する学習データ作成部と、
前記第1の学習データを基に第1のスロットバリュー抽出モデルを作成し、作成した前記第1のスロットバリュー抽出モデルを、前記複数のスロットバリュー抽出モデルに属するモデルとして前記記憶部に格納するモデル作成部と、を備えることを特徴とする音声対話システム。
文字列を構成する情報であって、予め想定された文字列の候補を示す複数のバリューと、前記複数のバリューの各々を識別する複数のバリュー識別子とが紐付けられて記憶されたバリューリストと、
前記文字列を構成する情報を識別する識別子を示す複数のスロットの各々と、前記複数のバリュー識別子の各々とが紐付けられて記憶され、且つ前記複数のスロットの各々と前記複数のバリュー識別子の各々とが1以上の回答文に紐付けられて記憶された回答文リストと、
前記複数のスロットの各々と、前記複数のスロットの各々に隣接配置される複数の周辺文字列とが紐付けられて記憶された周辺文字列リストと、
前記バリューリストと前記回答文リスト及び前記周辺文字列リストを基に第1の学習データを作成する学習データ作成部と、
前記第1の学習データを基に第1のスロットバリュー抽出モデルを作成するモデル作成部と、を備え、
前記学習データ作成部は、
前記回答文リストを基に、前記回答文リストの中の前記回答文に紐付けられた前記バリュー識別子の組み合わせを1又は2以上作成し、前記1又は2以上の組み合わせ毎に前記バリュー識別子の順列を作成し、
前記バリュー識別子の順列の組み合わせ毎に、前記バリュー識別子の順列に属する各要素のバリュー識別子に紐付けられたバリューを前記各要素のバリューとして前記バリューリストの中からそれぞれ取得し、且つ前記各要素のバリュー識別子に紐付けられたスロットを、前記各要素のスロットとして前記回答文リストの中からそれぞれ取得し、さらに、前記各要素のスロットに紐付けられた前記周辺文字列を前記各要素の周辺文字列として前記周辺文字列リストの中からそれぞれ取得し、
前記バリュー識別子の順列の組み合わせ毎に、取得した前記各要素のバリューと取得した前記各要素の周辺文字列とを結合した文字列を前記各要素の文字列として作成し、且つ前記各要素の文字列を結合して複数の想定入力文字列を作成し、
作成した前記複数の想定入力文字列と、前記複数の想定入力文字列の各々の作成に用いた前記各要素のスロット及び前記各要素のバリューを基に、前記各想定入力文字列と、前記各要素のスロット及び前記各要素のバリューとを紐付けたデータを前記第1の学習データとして作成することを特徴とするモデル作成装置。
文字列を構成する情報であって、予め想定された文字列の候補を示す複数のバリューと、前記複数のバリューの各々を識別する複数のバリュー識別子とが紐付けられて記憶されたバリューリストと、
前記文字列を構成する情報を識別する識別子を示す複数のスロットの各々と、前記複数のバリュー識別子の各々とが紐付けられて記憶され、且つ前記複数のスロットの各々と前記複数のバリュー識別子の各々とが1以上の回答文に紐付けられて記憶された回答文リストと、
前記複数のスロットの各々と、前記複数のスロットの各々に隣接配置される複数の周辺文字列とが紐付けられて記憶された周辺文字列リストと、
前記バリューリストと前記回答文リスト及び前記周辺文字列リストを基に第1の学習データを作成する学習データ作成部と、
前記第1の学習データを基に第1のスロットバリュー抽出モデルを作成するモデル作成部と、を備えたモデル作成装置におけるモデル作成方法であって、
前記学習データ作成部が、前記回答文リストを基に、前記回答文リストの中の前記回答文に紐付けられた前記バリュー識別子の組み合わせを1又は2以上作成し、前記1又は2以上の組み合わせ毎に前記バリュー識別子の順列を作成する順列作成ステップと、
前記学習データ作成部が、前記バリュー識別子の順列の組み合わせ毎に、前記バリュー識別子の順列に属する各要素の前記バリュー識別子に紐付けられたバリューを前記各要素のバリューとして前記バリューリストの中からそれぞれ取得し、且つ前記各要素のバリュー識別子に紐付けられたスロットを、前記各要素のスロットとして前記回答文リストの中からそれぞれ取得し、さらに、前記各要素のスロットに紐付けられた前記周辺文字列を前記各要素の周辺文字列として前記周辺文字列リストの中からそれぞれ取得する取得ステップと、
前記学習データ作成部が、前記バリュー識別子の順列の組み合わせ毎に、取得した前記各要素のバリューと取得した前記各要素の周辺文字列とを結合した文字列を前記各要素の文字列として作成し、且つ前記各要素の文字列を結合して複数の想定入力文字列を作成する想定入力文字列作成ステップと、
前記学習データ作成部が、前記想定入力文字列作成ステップで作成した前記複数の想定入力文字列と、前記複数の想定入力文字列の各々の作成に用いた前記各要素のスロット及び前記各要素のバリューを基に、前記各想定入力文字列と、前記各要素のスロット及び前記各要素のバリューとを紐付けたデータを前記第1の学習データとして作成する第1の学習データ作成ステップと、を含むことを特徴とするモデル作成方法。
【発明を実施するための形態】
【0010】
(実施の形態1)
以下、図面に基づいて、本発明の一実施の形態を詳述する。
【0011】
(音声対話システム2000の構成)
図1は、本発明の実施の形態1に係る音声対話システム2000の構成の一例を示すブロック図である。本実施の形態1の音声対話システム2000は、例えば、人間との音声対話を行う、いわゆる対話型ロボット(サービスロボット)であり、対話に係る音声の入出力処理を行う音声処理システム3000と、対話に関する情報処理を行うテキスト対話システム1000と、を含んで構成されている。
【0012】
音声処理システム3000は、マイク等を有し、音声が入力される音声入力部10、音声入力部10から入力された音声100から、音声以外の音(雑音)を除去し、雑音を除去した音声を文字列の情報(入力文字列200)に変換する音声認識部20、テキスト対話システム1000から出力された出力文字列300から、合成音声400を作成する音声合成部60、スピーカー等を有し、音声合成部60で作成された合成音声400から、所定の合成音声を出力する音声出力部70を備える。
【0013】
テキスト対話システム1000は、テキスト対話支援装置1200及びモデル作成装置1100を備える。テキスト対話支援装置1200は、音声処理システム3000と接続しており、音声処理システム3000から受信した入力文字列200に基づき、所定の情報処理を行うことにより、対応する出力文字列300を音声処理システム3000に送信する。
【0014】
テキスト対話支援装置1200は、スロットバリュー抽出部30、バリュー識別子推定部40、回答絞込み部50、複数のスロットバリュー抽出モデル500、バリューリスト510、回答文リスト520、質問文リスト530を備える。スロットバリュー抽出部30は、複数のスロットバリュー抽出モデル500を参照し、入力文字列200に含まれる情報に関する識別子(以降、スロットという)を推定し、入力文字列200からスロットに関する文字列(以降、バリューという)を抽出する。バリュー識別子推定部40は、バリューと、バリューリスト510に事前に登録されたバリューであって、複数の想定されるバリューとの類似度を比較する。バリューリスト510の中に、バリューとの類似度が高い、想定されるバリューが存在する場合、バリュー識別子推定部40は、想定バリューの識別子(以降、バリュー識別子という)を、バリューのバリュー識別子と判定する。
【0015】
回答絞込み部50は、情報提示のために必要なスロットのバリュー識別子が揃っているかを判断する。例えば、乗車時間の提示に必要なスロットのバリュー識別子が揃っている場合、回答絞込み部50は、前記バリュー識別子と紐付いた回答文(乗車時間が記載された文字列)を出力する。一方、前記スロットのバリュー識別子が揃ってない場合、回答絞込み部50は、不足しているスロット(例、<出発地>)に関する入力を促す質問文(例、出発地は?)を出力する。
【0016】
モデル作成装置1100は、音声対話システム2000およびテキスト対話システム1000の管理者等が利用する情報処理装置であり、スロットバリュー抽出部30が参照するスロットバリュー抽出モデル500を作成する。モデル作成装置1100は、学習データ作成部80、モデル作成部90、周辺文字列リスト540、複数の学習データ550を備える。学習データ作成部80は、テキスト対話支援装置1200と情報の送受信を行って、バリューリスト510と回答文リスト502に記録された情報を取り込み、バリューリスト510と回答文リスト502及び周辺文字列リスト540に記録された情報を基に、スロットバリュー抽出モデル500の作成に必要な複数の学習データ550を作成する。モデル作成部90は、学習データ550に対する変換処理を行って、例えば、機械学習による処理を行って、学習データ550からスロットバリュー抽出モデル500を作成し、作成したスロットバリュー抽出モデル500をテキスト対話支援装置1200に送信する。
【0017】
図2は、テキスト対話支援装置1200及びモデル作成装置1100が備えるハードウェアの一例を示す構成図である。
図2に示すように、テキスト対話支援装置1200及びモデル作成装置1100は、CPU(Central Processing Unit)等の、処理の制御を司るプロセッサ11と、RAM(Random Access Memory)、ROM(Read Only Memory)等の主記憶装置12と、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の補助記憶装置13と、キーボード、マウス、タッチパネル等の入力装置14と、モニタ(ディスプレイ)等の出力装置15と、有線LANカード、無線LANカード、モデム等の通信装置16、を備える。また、テキスト対話支援装置1200とモデル作成装置1100との間は、所定の通信線により直接に、もしくは、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、専用線等の通信網を介して接続される。
【0018】
なお、複数のスロットバリュー抽出モデル500、バリューリスト510、回答文リスト520、質問文リスト530、周辺文字列リスト540、複数の学習データ550は、主記憶装置12又は補助記憶装置13で構成される記憶部に記憶される。また、スロットバリュー抽出部30、バリュー識別子推定部40、回答絞込み部50、学習データ作成部80、モデル作成部90は、例えば、CPUが、主記憶装置12又は補助記憶装置13に記憶される各種処理プログラム(スロットバリュー抽出プログラム、バリュー識別子推定プログラム、回答絞込みプログラム、学習データ作成プログラム、モデル作成プログラム)を実行することにより、その機能を実現することができる。
【0019】
図3は、スロットバリュー抽出モデルの構成を示す構成図である。
図3において、スロットバリュー抽出モデル500は、ID501、想定入力文字列502、スロットとバリュー503を含む。ID501は、スロットバリュー抽出モデルを一意に識別する識別子である。想定入力文字列502は、事前に想定される入力文字列として定義された情報である。想定入力文字列502には、各ID501に対応して、事前に定義された想定入力文字列に関する情報が登録される。例えば、ID501の「1」には、「勝田駅から国分寺駅まで行きたい」の情報が登録される。スロットとバリュー503は、想定入力文字列502に登録された想定入力文字列の中のスロットとバリューを管理するための情報である。スロットとバリュー503には、例えば、ID501の「1」に対応して、「<出発地>=勝田駅」、「<目的地>=国分寺駅」の情報が登録される。ここで、「<出発地>」と「<目的地>」は、スロットを意味し、「勝田駅」と「国分寺駅」は、バリューを意味する。なお、スロットバリュー抽出モデル500は、事前に定義した想定入力文字列とスロットとバリューを入力として、機械学習(例えば、Conditional Random Fields法)で作成されることもある。
【0020】
図4は、バリューリストの構成を示す構成図である。
図4において、バリューリスト510は、バリュー識別子511と、想定されるバリュー512を含むデータベースである。バリュー識別子511は、バリューを一意に識別する識別子である。バリュー識別子511には、例えば、バリューである「東京駅」を識別する識別子として、「<東京駅>」の情報が登録される。想定されるバリュー512は、事前に想定された(予め想定された)文字列の候補を示す情報である。想定されるバリュー512には、事前に想定されたバリューの情報が複数の項目に分かれて登録される。例えば、想定されるバリュー512には、バリュー識別子511の「<東京駅>」に対応して、「東京駅」、「関東の東京駅」の情報が登録される。すなわち、バリューリスト510には、文字列を構成する情報であって、予め想定された文字列の候補を示す複数のバリューと、複数のバリューの各々を識別する複数のバリュー識別子とが紐付けられて記憶される。なお、想定されるバリュー512には、3以上の項目について、各バリュー識別子511に対応した情報が登録される。
【0021】
図5は、回答文リストの構成を示す構成図である。
図5において、回答文リスト520は、ID521、スロットとバリュー識別子522、回答文523を含む。ID521は、回答文を一意に識別する識別子である。スロットとバリュー識別子522は、スロットとバリュー識別子との関係を管理するための情報である。スロットとバリュー識別子522には、例えば、ID521の「1」に対応して、「<出発地>=<勝田駅>」、「<目的地>=<東京駅>」の情報が登録される。ここで、「<出発地>」と「<目的地>」は、スロットを意味し、「<勝田駅>」と「<東京駅>」は、バリュー識別子を意味する。回答文523は、回答文に関する情報である。回答文523には、例えば、ID521の「1」に対応して、「乗車時間は約2時間です。」の情報が登録される。すなわち、回答文リスト520には、文字列を構成する情報を識別する識別子を示す複数のスロットの各々と、複数のバリュー識別子の各々とが紐付けられて記憶され、且つ複数のスロットの各々と複数のバリュー識別子の各々とが1以上の回答文に紐付けられて記憶される。
【0022】
図6は、質問文リストの構成を示す構成図である。
図6において、質問文リスト530は、スロット531、質問文532を含む。スロット531は、質問文532を特定するための情報である。スロット531には、例えば、「<目的地>」の情報が登録される。質問文532は、質問文を構成する情報である。質問文532には、例えば、スロット531の「<目的地>」に対応して、「目的地はどこですか?」の情報が登録される。
【0023】
図7は、周辺文字列リストの構成を示す構成図である。
図7において、周辺文字列リスト540は、スロット541、スロットの周辺文字列542を含む。スロット541は、スロットの周辺文字列542を特定するための情報である。スロット531には、例えば、「<出発地>」の情報が登録される。スロットの周辺文字列542は、スロット541に隣接配置される周辺文字列の候補として予め想定された情報である。スロットの周辺文字列542には、例えば、「<出発地>」に隣接配置される周辺文字列として、「@から」、「@から行きたい」の情報が記録される。
【0024】
図8は、学習データの構成を示す構成図である。
図8において、学習データ550は、ID551、想定入力文字列552、スロットとバリュー553を含む。ID551は、学習データを一意に識別する識別子である。想定入力文字列552は、事前に想定される入力文字列として定義された情報である。想定入力文字列552には、各ID551に対応して、事前に定義された想定入力文字列に関する情報が登録される。例えば、ID551の「1」には、「勝田駅から国分寺駅まで行きたい」の情報が登録される。スロットとバリュー553は、想定入力文字列552に登録された想定入力文字列の中のスロットとバリューを管理するための情報である。スロットとバリュー553には、例えば、ID551の「1」に対応して、「<出発地>=勝田駅」、「<目的地>=国分寺駅」の情報が登録される。ここで、「<出発地>」と「<目的地>」は、スロットを意味し、「勝田駅」と「国分寺駅」は、バリューを意味する。
【0025】
(音声対話システム2000の処理フロー)
次に、本発明の実施の形態1における音声対話システム2000の処理フローについて説明する。
図9に音声対話システム2000における音声認識処理フローを示す。
図9に示すように、マイクを含む音声入力部10は、音声対話システム2000の対話相手の音声(入力用音声)100を取得する(S10)。音声認識部20は、音声入力部10で取得した音声100から対話相手の音声以外の音(雑音という)を除去し、音声100に含まれるテキスト情報を入力文字列200の情報に変換する(S11)。次に、音声認識部20は、テキスト対話システム1000に対して入力文字列200の情報を送信し(S12)、ステップS10に移行する。この後、ステップS10〜ステップS12の処理が繰り返される。
【0026】
次に、
図10に音声対話システム2000における音声合成処理フローを示す。
図10に示すように、音声合成部60は、テキスト対話システム1000の出力文字列300の情報を受信する(S20)。次に、音声合成部60は、出力文字列300から合成音声400を作成する(S21)。次に、音声合成部60は、スピーカーを含む音声出力部70を使って合成音声(出力用音声)400を再生し(S22)、ステップS20に移行する。この後、ステップS20〜ステップS22の処理が繰り返される。
【0027】
以上、一連の処理フローにより、音声入力部10に入力された対話相手の音声100を入力文字列200の情報に変換し、変換された入力文字列200の情報をテキスト対話システム1000へ送信可能となる。また、テキスト対話システム1000から出力された出力文字列300の情報を合成音声400に変換し、変換された合成音声400を音声出力部70から対話相手に向けて再生可能となる。
【0028】
(テキスト対話システム1000の処理フロー)
次に、テキスト対話システム1000の処理フローについて説明する。
図11にテキスト対話システム1000の基本的な処理フローを示す。
図11に示すように、スロットバリュー抽出部30は、事前に作成したスロットバリュー抽出モデル500を参照し、実際の入力文字列200から、スロットに関する文字列(バリュー)の位置を推定し、推定した位置のバリューを抽出し、バリューとスロットの情報をバリュー識別子推定部40に転送する(S30)。
【0029】
例えば、スロットバリュー抽出部30は、入力文字列200として、「東京駅まで行きたいです」の情報が入力された場合、入力文字列200と、
図3のスロットバリュー抽出モデル500の想定入力文字列502との間の類似度を比較し、想定入力文字列502の中から、類似度の高い想定入力文字列として、「東京駅まで行きたい」を選択し、選択された想定入力文字列「東京駅まで行きたい」と紐付いたスロット(例、<目的地>)に関して、入力文字列200の中のスロットの位置を推定する。例えば、想定入力文字列502の中のスロットは、「まで行きたい」という文字(以降、スロット周辺文字列という)の前(又は、後ろ)に隣接配置されているので、スロット周辺文字列の前(又は、後ろ)に隣接する入力文字列200の位置をスロットの位置と推定する。最後に、スロットバリュー抽出部30は、スロットの位置の単語、例えば、「東京駅」をバリューとして抽出する。なお、機械学習で作成されたスロットバリュー抽出モデルを使用する場合、前述したスロットおよびバリューの抽出方法を使用せず、スロットバリュー抽出部30が、入力文字列200におけるスロット及びバリューの推定結果をバリュー識別子推定部40へ転送する。
【0030】
次に、バリュー識別子推定部40は、スロットバリュー抽出部30から、スロットとバリューの情報を受信した場合、バリューリスト510を参照し、受信したバリューと想定されるバリュー512との類似度を比較し、類似度が高い場合、想定されるバリュー512に対応したバリュー識別子511を推定し、推定結果(バリュー識別子)の情報とバリューの情報を回答絞込み部50に転送する(S31)。例えば、受信したバリューが、「東京駅」である場合、バリュー識別子推定部40は、「<東京駅>」をバリュー識別子511として推定する。
【0031】
次に、回答絞込み部50は、バリュー識別子推定部40から推定結果(バリュー識別子)の情報(「<東京駅>」)とバリューの情報(「東京駅」)を受信した場合、回答文リスト520を参照し、情報提示のために必要なスロットのバリュー識別子が揃っているか判断する(S32、S33)。例えば、乗車時間の提示に必要なスロットのバリュー識別子(例、スロット<目的地>のバリュー識別子が<東京駅>、スロット<出発地>のバリュー識別子が<勝田駅>)が揃っている場合、回答絞込み部50は、バリュー識別子(「<東京駅>」、「<勝田駅>」)と紐付いた回答文523として、例えば、「乗車時間は約2時間です。」の情報を出力し(S34)、このルーチンでの処理を終了する。
【0032】
一方、バリュー識別子が、<目的地>を示す「<東京駅>」のみであって、乗車時間の提示に必要なスロットのバリュー識別子が揃ってない場合、回答絞込み部50は、質問文リスト530を参照し、不足しているスロット(例、<出発地>)に関する入力を促す質問文532として、例えば、「出発地はどこですか?」の情報を出力する(S35)。次に、回答絞込み部50は、取得済みバリュー識別子の情報をメモリ(記憶部)に記録し(S36)、このルーチンでの処理を終了する。
【0033】
以上、一連のテキスト対話システム1000の処理フローにより、ユーザに対して複数回の質問文を出力し、ユーザが入力した複数の回答文に基づいて、適切な情報提示が可能になる。
【0034】
(モデル作成装置1100の処理フロー)
次に、本発明の実施の形態1におけるモデル作成装置1100の処理フローについて説明する。
図12にモデル作成装置1100の処理フローを示す。
図12に示すように、学習データ作成部80は、バリューリスト510と回答文リスト520及び周辺文字列リスト540を参照し、参照結果を基に学習データ550を作成する。学習データ550は、想定入力文字列とスロットとバリューを含むデータである。以下、学習データ550の具体的な作成方法について説明する。
【0035】
(学習データ550の作成方法)
学習データ作成部80は、想定入力文字列を作成する為、回答文リスト520から、回答文523の中の1つの回答文と紐付いた複数のバリュー識別子を取得する(S40)。次に、学習データ作成部80は、取得した複数のバリュー識別子の中から、N個(N=1〜Nmax(事前に定義された最大値))を選択する組合せを作成し(S41)、作成した各組み合毎に、順列を作成する(S42)。例えば、回答文523と紐付いたバリュー識別子が2個の場合、2個のバリュー識別子として、例えば、「<勝田駅>」、「<東京駅>」を使った順列として、例えば、M21=[<勝田駅>,<東京駅>]、M22=[<東京駅>,<勝田駅>])を作成し、1個のバリュー識別子を使った順列として、例えば、M11=[<勝田駅>]、M12=[<東京駅>])を作成する。
【0036】
次に、学習データ作成部80は、全ての回答文に関して、バリュー識別子の順列を作成したか否かを判定する(S43)。ステップS43で、否定の判定結果を得た場合、学習データ作成部80は、ステップS40へ移行し、ステップS40〜ステップS43の処理を繰り返す。一方、ステップS43で、肯定の判定結果を得た場合、学習データ作成部80は、ステップS42で作成した順列の中から順列を1個選択し(S44)、選択した順列のバリュー識別子を1個選択する(S45)。
【0037】
次に、学習データ作成部80は、順列から選択したバリュー識別子を基にバリューリスト510を参照し、バリューリスト510の中から、順列、例えば、M21=[<勝田駅>,<東京駅>]のバリュー識別子(例えば、<勝田駅>)と紐付いたバリューとして、想定されるバリュー512の中から、例えば、「勝田駅」を取得する(S46)。
【0038】
この際、学習データ作成部80は、順列から選択したバリュー識別子を基に回答文リスト520を参照し、回答文リスト520の中から、順列、例えば、M21=[<勝田駅>,<東京駅>]のバリュー識別子(例えば、<勝田駅>)と紐付いたスロットとして、スロットとバリュー識別子522の中から、例えば、「<出発地>」を取得する(S47)。さらに、学習データ作成部80は、取得したスロット「<出発地>」を基に周辺文字列リスト540を参照し、周辺文字列リスト540の中から、取得したスロット「<出発地>」と紐付く周辺文字列として、スロットの周辺文字列542の中から、例えば、「@から」を取得する(S48)。
【0039】
次に、学習データ作成部80は、ステップS46で取得したバリュー(「勝田駅」)と、ステップS47で取得したスロット(<出発地>)と、ステップS48で取得した周辺文字列(「@から」)を基に、周辺文字列のバリュー挿入位置、例えば、「@」に、バリュー、例えば、「勝田駅」を挿入した文字列、例えば、C1=「勝田駅から」を作成する(S49)。
【0040】
次に、学習データ作成部80は、順列内の全バリュー識別子に関して、文字列を作成したか否かを判定する(S50)。ステップS50で否定の判定結果を得た場合、学習データ作成部80は、ステップS45へ移行し、ステップS45〜ステップS50の処理を繰り返す。
【0041】
この際、学習データ作成部80は、順列=M21の中の別のバリュー識別子として、例えば、バリュー識別子(<東京駅>)と紐付いたバリューとして、バリューリスト510の想定されるバリュー512の中から、例えば、「東京駅」を取得する。また、学習データ作成部80は、別のバリュー識別子として、例えば、バリュー識別子(<東京駅>)と紐付いたスロットとして、回答文リスト520のスロットとバリュー識別子522の中から、例えば、「<目的地>」を取得する。さらに、学習データ作成部80は、取得したスロット「<目的地>」を基に周辺文字列リスト540を参照し、周辺文字列リスト540の中から、取得したスロット「<目的地>」と紐付く周辺文字列として、スロットの周辺文字列542の中から、周辺文字列として、例えば、「@まで行きたい」を取得する。この際、学習データ作成部80は、周辺文字列のバリュー挿入位置に、バリューとして、例えば、「東京駅」を挿入した文字列として、例えば、C2=「東京駅まで行きたい」を作成する。
【0042】
一方、ステップS50で肯定の判定結果を得た場合、学習データ作成部80は、各バリュー識別子から作成した文字列を結合し想定入力文字列の情報を作成する(S51)。例えば、学習データ作成部80は、順列に含まれる各バリュー識別子から作成した文字列を結合して、想定入力文字列として、C1+C2=「勝田駅から東京駅まで行きたい」を作成する。
【0043】
次に、学習データ作成部80は、全順列に関して、想定入力文字列を作成したか否かを判定する(S52)。ステップS52で否定の判定結果を得た場合、学習データ作成部80は、ステップS45へ移行し、ステップS44〜ステップS52の処理を繰り返す。一方、ステップS52で肯定の判定結果を得た場合、学習データ作成部80は、複数の想定入力文字列の作成に使用したスロット及びバリューと、想定入力文字列とを紐付けたデータを学習データ(第1の学習データ)550として作成し(S53)、その後、このルーチンでの処理を終了する。
【0044】
この際、学習データ作成部80は、バリュー識別子の順列の組み合わせ毎に、バリュー識別子の順列に属する各要素のバリュー識別子に紐付けられたバリューを各要素のバリューとしてバリューリスト510の中からそれぞれ取得し、各要素のバリュー識別子に紐付けられたスロットを、各要素のスロットとして回答文リスト520の中からそれぞれ取得し、各要素のスロットに紐付けられた周辺文字列を各要素の周辺文字列として、周辺文字列リスト540の中からそれぞれ取得し、取得した各要素のバリューと取得した各要素の周辺文字列とを結合した文字列を各要素の文字列として作成し、各要素の文字列を結合して複数の想定入力文字列を作成し、作成した複数の想定入力文字列と、複数の想定入力文字列の各々の作成に用いた各要素のスロット及び各要素のバリューを基に、各想定入力文字列と、各要素のスロット及び各要素のバリューとを紐付けたデータを第1の学習データ550として作成する。
【0045】
(モデル作成方法)
モデル作成部90は、学習データ(第1の学習データ)550からスロットバリュー抽出モデル(第1のスロットバリュー抽出モデル)500を作成する。スロットバリュー抽出モデル500は、事前に定義した想定入力文字列とスロットとバリューが登録されている。例えば、学習データ550とスロットバリュー抽出モデル500が同一であっても良い。また、スロットバリュー抽出モデル500は、学習データ550の想定入力文字列とスロット及びバリューを入力として、機械学習(例えば、Conditional Random Fields法)で作成しても良い。
【0046】
本実施の形態によれば、複数のスロットバリュー抽出モデルを自動で作成することができ、結果として、スロットバリュー抽出モデルの作成に要する作業コストを低減することができる。
【0047】
(実施の形態2)
本実施の形態2は、実施の形態1に記載の音声対話システム2000において、複数のスロットバリュー抽出モデル(第1又は第2のスロットバリュー抽出モデル)を切替えることにより、高精度なスロットバリュー抽出を可能とする。また、複数のスロットバリュー抽出モデルの作成に必要な作業コストを軽減する。
【0048】
実施の形態1において、情報提示に必要なスロットのバリュー識別子が揃ってない場合、回答絞込み部50は、質問文リスト530を参照して不足しているスロット(例、<出発地>)に関する入力を促す質問文(例、出発地はどこですか?)を出力する。これに対して、本実施の形態2のスロットバリュー抽出部30は、対話相手の入力文字列から高精度にスロットバリュー抽出するため、取得済みのスロットに関する想定入力文字列のみ含まれてないスロットバリュー抽出モデル(第2のスロットバリュー抽出モデル)を使用する。取得済みスロットに関する想定入力文字列のみスロットバリュー抽出モデルに含めないことにより、スロットバリュー抽出部30は、誤って取得済みスロットを抽出する可能性が無くなる。よって、本実施の形態2のスロットバリュー抽出の精度は、実施の形態1より高くなる。
【0049】
また、複数のスロットバリュー抽出モデルの作成に必要な作業コストを低減する為、本実施の形態2の学習データ作成部80は、実施の形態1で作成した学習データ(第1の学習データ)550から、特定のスロットに関する想定入力文字列のみ除去した学習データを第2の学習データとして作成する。そして、モデル作成部90が、第2の学習データから第2のスロットバリュー抽出モデルを作成する。
【0050】
学習データ作成の処理フローを
図13に示す。
図13に示すように、学習データ作成部80は、実施の形態1で作成した学習データ550に使用された全スロット(M個)の内、N個(N=1〜M-1)のスロットを選択する組合せを作成する。そして、組み合わせ毎に、組み合わせに含まれていないスロットに関する想定入力文字列のみ、学習データ550から除去したデータ(第2の学習データ)を作成する。
【0051】
具体的には、実施の形態1で作成した学習データ550の場合、学習データ作成部80は、全スロット(M=2)の内、N個(N=1〜M-1)のスロットを選択する組合せ、例えば、2種類を作成する(S60)。次に、学習データ作成部80は、ステップS60で作成した組み合わせ(2種類)の中から組み合わせを1つ選択し、選択した組み合わせ毎に、組み合わせに含まれていないスロットに関する想定入力文(想定入力文字列)のみ、学習データ550から除去したデータを、
図14に示すように、学習データ(第2の学習データ)550(2A、2B)として作成する(S61)。
【0052】
図14(a)は、
図8の学習データ550のうち、特定のスロット「<目的地>」に関する想定入力文字列のみが除去された学習データ550(2A)の例を示す。すなわち、
図14(a)の学習データ550(2A)は、
図8の学習データ550のスロットとバリュー553の中に、「<目的地>」が存在する情報であって、ID551が「1」〜「6」の情報が削除された学習データである。また、
図14(b)は、
図8の学習データ550のうち、特定のスロット「<出発地>」に関する想定入力文字列のみが除去された学習データ550(2B)の例を示す。すなわち、
図14(b)の学習データ550(2B)は、
図8の学習データ550のスロットとバリュー553の中に、「<出発地>」が存在する情報であって、ID551が「1」〜「4」と「7」の情報が削除された学習データである。
【0053】
本実施の形態によれば、実施の形態1に記載の音声対話システム2000において、複数のスロットバリュー抽出モデルを第1のスロットバリュー抽出モデルから第2のスロットバリュー抽出モデルに切替えることにより、高精度なスロットバリュー抽出モデルの抽出が可能になる。また、複数のスロットバリュー抽出モデルの作成に必要な作業コストを低減することができる。
【0054】
(実施の形態3)
対話相手の入力文字列から高精度にスロットバリュー抽出するため、本実施の形態3のスロットバリュー抽出部30は、対話ログに基づいて、使用するスロットバリュー抽出モデルを第1のスロットバリュー抽出モデルから第3のスロットバリュー抽出モデルに切替える。対話ログの一例を
図15に示す。
【0055】
図15は、対話ログの構成を示す構成図である。対話ログ560は、ID561、質問文562、スロット563を含む。スロット563は、<出発地>564、<目的地>565、<出発時刻>566、<出発地><目的地>567、<目的地><出発時刻>568、<出発時刻><出発地>569、<出発地><目的地><出発時刻>570を含む。
【0056】
ID561は、対話ログを一意に識別する識別子である。質問文562は、ユーザに対する質問文を管理する情報である。質問文562には、例えば、「目的地はどこですか?」の情報が登録される。スロット563は、質問文562に含まれるスロットの確率(割合)を管理する情報である。スロット563には、例えば、ID561の「1」に示すように、「−」(質問文出力無し)の質問文562として、「<出発地>」の情報が含まれる確率が「20%」である場合、<出発地>564には、「20%」の情報が登録される。ID561の「2」に示すように、「目的地はどこですか?」の質問文562として、「<出発地>」の情報が含まれる確率が「0%」である場合、<出発地>564には、「0%」の情報が登録される。また、ID561の「3」に示すように、「出発地はどこですか?」の質問文562として、「<出発地>」の情報が含まれる確率が「80%」である場合、<出発地>564には、「80%」の情報が登録される。さらに、ID561の「4」に示すように、「出発時刻はいつですか?」の質問文562として、「<出発地>」の情報が含まれる確率が「0%」である場合、<出発地>564には、「0%」の情報が登録される。
【0057】
対話ログは、対話相手の入力文字列に各スロットが含まれる確率とした。例えば、テキスト対話システム1000の質問文出力が無い状態(ID561の「1」)での対話相手の入力文字列200は、スロット563のうち<出発地>564に関する文字列のみ含まれる確率が、閾値(例えば、10%)以上の「20%」であり、スロット563のうち<目的地>565に関する文字列のみ含まれる確率が、閾値以上の「80%」である。よって、スロットバリュー抽出の精度向上のため、質問文の出力が無い状態における入力文字列200のスロットバリュー抽出において、スロットバリュー抽出部30は、スロット563のうち<出発地>564のみに関する想定入力文字列と、スロット563のうち<目的地>565のみに関する想定入力文字列の両方を登録したスロットバリュー抽出モデル550(
図17(a)参照)を使用する。
【0058】
同様に、質問文「目的地はどこですか?」に対する入力文字列200のスロットバリュー抽出において、スロットバリュー抽出部30は、スロット563のうち<目的地>565のみに関する想定入力文字列を登録したスロットバリュー抽出モデル550(
図17(b)参照)を使用する。
【0059】
また、質問文「出発地はどこですか?」に対する入力文字列200のスロットバリュー抽出において、スロットバリュー抽出部30は、スロット563のうち<出発地>564のみに関する想定入力文字列と、スロット563のうち<出発時刻>566と、<出発地>564が共に含まれる想定入力文字列を登録したスロットバリュー抽出モデル550(
図17(c)参照)を使用する。
【0060】
また、質問文「出発時刻はいつですか?」に対する入力文字列200のスロットバリュー抽出において、スロットバリュー抽出部30は、スロット563のうち<出発時刻>566のみに関する想定入力文字列と、スロット563のうち<出発時刻>566と、<出発地>564が共に含まれる想定入力文字列とを登録したスロットバリュー抽出モデル550(
図17(d)参照)を使用する。
【0061】
よって、対話ログ560に基づいて、特定スロットに関する想定入力文字列を登録したスロットバリュー抽出モデル550を管理テーブルで管理する必要がある。
【0062】
図16は、管理テーブルの構成を示す構成図である。
図16において、管理テーブル580は、質問文とスロットバリュー抽出モデルとの関係を管理するテーブルであって、ID581、質問文582、スロットバリュー抽出モデル583を含む。ID581は、質問文582を一意に識別する識別子である。質問文582は、ユーザに対する質問文を管理する情報である。質問文582には、例えば、「目的地はどこですか?」の情報が登録される。スロットバリュー抽出モデル583は、スロットバリュー抽出モデル(第3のスロットバリュー抽出モデル)500(3A〜3D)を作成するための学習データ(第3の学習データ)550(3A〜3D)を特定する情報である。スロットバリュー抽出モデル583には、例えば、学習データ550(3A)を特定する情報として、「3A」が登録される。
【0063】
この際、学習データ作成部80は、複数のスロットバリュー抽出モデル500の作成に必要な作業コストを軽減するため、対話ログ560に基づいた特定スロットに関する学習データを作成する(
図17参照)。一方、モデル作成部90は、学習データ作成部80により作成された各種学習データ550(3A〜3D)からスロットバリュー抽出モデル500(3A〜3D)を作成する。
【0064】
図17は、対話ログに基づいた特定スロットに関する学習データの構成を示す構成図である。
図17(a)は、管理テーブル580のスロットバリュー抽出モデル583の「3A」で特定される学習データ550(3A)である。学習データ550(3A)は、ID551、想定入力文字列552、スロットとバリュー553を含む。ID551の「1」に示すように、想定入力552には、例えば、目的地のみの情報として、「国分寺駅まで行きたい」が登録され、スロットとバリュー553には、例えば、スロットとして、「<目的地>」が登録され、バリューとして、「国分寺駅」が登録される。また、ID551の「3」に示すように、想定入力552には、出発地のみの情報として、「勝田駅から行きたい」が登録され、スロットとバリュー553には、スロットとして、「<出発地>」が登録され、バリューとして、「勝田駅」が登録される。
【0065】
図17(b)は、管理テーブル580のスロットバリュー抽出モデル583の「3B」で特定される学習データ550(3B)である。学習データ550(3B)は、ID551、想定入力文字列552、スロットとバリュー553を含む。ID551の「1」に示すように、学習データ550(3B)の想定入力552には、例えば、目的地のみの情報として、「国分寺駅まで行きたい」が登録され、スロットとバリュー553には、例えば、スロットとして、「<目的地>」が登録され、バリューとして、「国分寺駅」が登録される。
【0066】
図17(c)は、管理テーブル580のスロットバリュー抽出モデル583の「3C」で特定される学習データ550(3C)である。学習データ550(3C)は、ID551、想定入力文字列552、スロットとバリュー553を含む。ID551の「1」に示すように、学習データ550(3C)の想定入力552には、例えば、出発時刻と出発地の情報として、「10時発で勝田駅から行きたい」が登録され、スロットとバリュー553には、例えば、スロットとして、「<出発地>」が登録され、バリューとして、「勝田駅」が登録されると共に、スロットとして、「<出発時刻>」が登録され、バリューとして、「10時」が登録される。また、ID551の「2」に示すように、学習データ550(3C)の想定入力552には、出発地のみの情報として、「勝田駅から行きたい」が登録され、スロットとバリュー553には、スロットとして、「<出発地>」が登録され、バリューとして、「勝田駅」が登録される。
【0067】
図17(d)は、管理テーブル580のスロットバリュー抽出モデル583の「3D」で特定される学習データ550(3D)である。学習データ550(3D)は、ID551、想定入力文字列552、スロットとバリュー553を含む。ID551の「1」に示すように、学習データ550(3D)の想定入力552には、例えば、出発時刻と出発地の情報として、「10時発で勝田駅から行きたい」が登録され、スロットとバリュー553には、例えば、スロットとして、「<出発地>」が登録され、バリューとして、「勝田駅」が登録されると共に、スロットとして、「<出発時刻>」が登録され、バリューとして、「10時」が登録される。また、ID551の「2」に示すように、学習データ550(3D)の想定入力552には、出発時刻のみの情報として、「10時発に乗りたい」が登録され、スロットとバリュー553には、スロットとして、「<出発時刻>」が登録され、バリューとして、「10時」が登録される。
【0068】
本実施の形態によれば、実施の形態1に記載の音声対話システム2000において、複数のスロットバリュー抽出モデルを第1のスロットバリュー抽出モデルから第3のスロットバリュー抽出モデルに切替えることにより、高精度なスロットバリュー抽出モデルの抽出が可能になる。また、複数のスロットバリュー抽出モデルの作成に必要な作業コストを軽減することができる。
【0069】
尚、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は、前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の変更が可能であることはいうまでもない。例えば、バリューリスト510、回答文リスト520をモデル作成装置1100に配置することもできる。
【0070】
本発明は、音声対話システムを備えた対話用ロボットや、テキスト対話システムを備えたチャットボットなど、音声及びテキストを入力とした対話システムに広く適用することができる。
【0071】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)メモリカード、DVD(Digital Versatile Disc)等の記録媒体に記録して置くことができる。