<応答選択例>
図1は、実施例1にかかる対話システムによる応答選択例を示す説明図である。対話システム100は、目的ドメイン対話文Stを受け付けると、言語モデル学習101により、目的ドメイン対話文Stを第1学習データとして用いて、言語モデル110を学習する。言語モデル110とは、過去のユーザ130と対話システム100との発言によるやりとりを示す文脈から、対話システム100が次に出力すべき応答について、その適切性を評価するモデルである。
また、対話システム100は、尤度評価102により、言語モデル110を用いて一般対話文Sgの尤度を評価して、一般対話文Sgから尤もらしさがない文を削除する。このようにフィルタリングされた一般対話文Sgを、フィルタ後一般対話文FSgと称す。対話システム100は、応答選択モデル学習103により、フィルタ後一般対話文FSgを用いて応答選択モデル120を生成する。
対話システム100は、ユーザ130からユーザ発話文131(「体調悪い」)を対話ロボット140で受け付けると、応答選択104により、応答選択モデルを用いて、応答文候補Scの中からふさわしい応答文141(「体調は大丈夫ですか?」)を選択し、対話ロボット140から発話する。
このように、対話システム100は、尤度評価102により、目的ドメイン対話文Stと一般対話文Sgとの間の対話の類似性を計測し、この類似性を示す尺度が高かった対話文(すなわち、フィルタ後一般対話文FSg)を一般対話文Sgから抽出し、応答選択モデルの第2学習データとする。これにより、対話システム100は、ユーザ130の発言に対して、より適切な応答を出力できるようになり、対話の自然性の向上を図ることができる。
なお、対話システム100は、発話音声を音声認識によりテキスト変換して対話文や発話文としてもよく、テキストの対話文や発話文の入力を受け付けてもよい。また、対話システム100は、選択した対話文や発話文を表示してもよく、音声出力してもよい。
<システム構成例>
図2は、実施例1にかかる対話システム100のシステム構成例を示す説明図である。対話システム100は、生成装置200と、対話ロボット140と、を有する。生成装置200と対話ロボット140は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などのネットワーク207を介して通信可能に接続される。
生成装置200は、プロセッサ201と、記憶デバイス202と、入力デバイス203と、出力デバイス204と、通信インタフェース(通信IF)205と、を有する。プロセッサ201、記憶デバイス202、入力デバイス203、出力デバイス204、および通信IF205は、バス206により接続される。プロセッサ201は、生成装置200を制御する。記憶デバイス202は、プロセッサ201の作業エリアとなる。また、記憶デバイス202は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス202としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。入力デバイス203は、データを入力する。入力デバイス203としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナ、マイクがある。出力デバイス204は、データを出力する。出力デバイス204としては、たとえば、ディスプレイ、プリンタ、スピーカがある。通信IF205は、ネットワーク207と接続し、データを送受信する。
なお、対話ロボット140のハードウェア構成も生成装置200と同様である。対話ロボット140は、対話文の入出力を行うインタフェースの一例である。対話ロボット140ではなく、パーソナルコンピュータでもよい。また、図2の対話システム100は、クライアントサーバシステムで構成したが、スタンドアロン型の生成装置200でもよい。スタンドアロン型の生成装置200は、対話ロボット140のように移動可能でもよい。なお、以下の説明では、生成装置200がモデル生成や応答選択を実行し、対話ロボット140を介して対話文の音声入出力を実行する場合を例に挙げて説明する。
<対話処理手順例>
図3は、実施例1にかかる生成装置200による対話処理手順例を示すフローチャートである。生成装置200は、確率モデル学習処理(ステップS301)、フィルタリング処理(ステップS302)、応答選択モデル学習処理(ステップS303)および応答選択処理(ステップS304)を実行する。
確率モデル学習処理(ステップS301)は、図1の言語モデル110学習により、目的ドメイン対話文Stを第1学習データとして用いて、言語モデル110のような確率モデルを学習する処理であり、図4で後述する。
フィルタリング処理(ステップS302)は、図1の尤度評価102により一般対話文をフィルタリングしてフィルタ後一般対話文FSgを生成する処理であり、図8で後述する。
応答選択モデル学習処理(ステップS303)は、図1に示したように、フィルタ後一般対話文FSgを第2学習データとして用いて、応答選択モデル120を生成する処理である。応答選択処理(ステップS304)は、応答選択モデル120を用いて、図1の応答選択により応答文候補Scから応答文141を選択して出力する処理であり、図12で後述する。
<確率モデル学習処理(ステップS301)>
図4は、図3に示した確率モデル学習処理(ステップS301)の詳細な処理手順例を示すフローチャートである。生成装置200は、対話ロボット140を介してまたは入力デバイス203から目的ドメイン対話文Stを読み込む(ステップS401)。つぎに、生成装置200は、文脈-応答ペア作成処理を実行する(ステップS402)。文脈-応答ペア作成処理(ステップS402)とは、目的ドメイン対話文Stのような入力対話文から文脈-応答ペアを作成する処理であり、図5で後述する。「文脈-応答ペア」とは、文脈と、当該文脈に対する応答と、の組み合わせである。
つぎに、生成装置200は、言語モデル学習(ステップS404)、ダイアログアクト遷移モデル学習(ステップS405)、または感情遷移モデル学習(ステップS406)のうち、いずれかの学習モードを選択する(ステップS403)。選択方法については、生成装置200の管理者が事前に設定しておいてもよく、発話するユーザ130が選択してもよい。
なお、生成装置200は、言語モデル学習(ステップS404)、ダイアログアクト遷移モデル学習(ステップS405)、および感情遷移モデル学習(ステップS406)をすべて実装する必要はなく、少なくとも1つを実装していればよい。実施例1では、言語モデル学習(ステップS404)についてのみ詳細に説明し、ダイアログアクト遷移モデル学習(ステップS405)、および感情遷移モデル学習(ステップS406)については、実施例2として後述する。
言語モデル学習(ステップS404)は、正例となる文脈-応答ペアと負例となる文脈-応答ペアのそれぞれについて、正例が負例よりも高いスコアを出力するような機械学習モデルを学習する。たとえば、生成装置200は、BERT(Bidirectional Encoder Representations from Transformers)モデルを用いてスコアを算出する。
正例となる文脈-応答ペアとは、文脈-応答ペア作成処理(ステップS402)で作成された文脈-応答ペアである。負例となる文脈-応答ペアとは、文脈-応答ペア作成処理(ステップS402)で作成された文脈-応答ペアの応答を、異なる応答に置換した文脈-応答ペアである。言語モデル学習(ステップS404)の詳細は、図7で後述する。
<文脈-応答ペア作成処理(ステップS402)>
図5は、図4に示した文脈-応答ペア作成処理(ステップS402)の詳細な処理手順例を示すフローチャートである。図6は、確率モデル学習処理(ステップS301)の具体例1を示す説明図である。なお、図5および図6の説明において、A、Bは発言した話者を示す。
生成装置200は、入力対話文を対話単位で分割する(ステップS501)。入力対話文とは、この場合、ステップS401で読み込まれた目的ドメイン対話文Staである。対話単位とは、対話のまとまりを示す単位である。具体的には、たとえば、対話単位とは、AとBのやりとりが、それより前の対話のやりとりおよびそれより後の対話のやりとりとは直接関係しない内容において行われている単位である。図5では、Stau1、Stau2、Stau3、…(これらを区別しない場合、単に対話単位Stauと表記)が対話単位である。端的に表現すると、生成装置200は、話題が転換したターン間の境界で目的ドメイン対話文Staを区切り(図6中、太点線で表記)、対話単位Stauを抽出する。
このような話題が転換したターン間の境界がどこであるかを識別する処理は、対話単位Stauの境界を示す区切り位置があらかじめ付与されている対話データを学習データとした機械学習モデルにより実現可能である。すなわち、生成装置200は、目的ドメイン対話文Staを区切り位置に関する機械学習モデルに入力することより、対話単位Stauを抽出することができる。
つぎに、生成装置200は、対話番号iをi=1に設定して、対話単位Stauの処理を実行するループを開始する(ステップS502)。iは1≦i≦Nを満たす整数である。Nは、目的ドメイン対話文Sta内の対話単位Stauの総数である。対話番号iの対話単位Stauを、対話単位Stau(i)とする。当該ループの終了条件は、ステップS503で示す。対話番号iは、ステップS515でインクリメントされる。
生成装置200は、対話番号iがN以下であるか否かを判断する(ステップS503)。対話番号iがN以下である場合(ステップS503:Yes)、生成装置200は、考慮ターン数nでのループを開始する(ステップS504)。考慮ターン数nとは、応答が生起される条件として用いる文脈に追加されるターンの数である。考慮ターン数nは、文脈に1個のターンのみが入っている条件(n=1)に初期設定され、上限となる所定数(上限ターン数)までインクリメントされる(ステップS505,S514)。
ステップS504以降、生成装置200は、1個の対話単位Stau(i)に対して解析を実行し、対話単位Stau(i)から文脈-応答ペアを抽出することになる。具体的には、たとえば、ステップS506~S513の処理では、生成装置200は、対話単位Stau(i)から一部のターンを抜き出し、図6に示したように、文脈-応答ペア群Ptsを生成する。たとえば、文脈-応答ペアPt1は、文脈としてAおよびBのやり取りを示す3個のターンと、Bの発話を示す1個の応答と、を含む。文脈-応答ペアPt1、Pt2、…を区別しない場合は、単に、文脈-応答ペアPtと表記する。
ステップS506~S513の処理を具体的に説明すると、考慮ターン数nが所定数以下である場合(ステップS505:Yes)、生成装置200は、ターン数番号jをj=2に初期設定し、ターン単位でのループの実行を開始する(ステップS506)。文脈-応答ペアPtは、少なくとも1ターン以上の文脈と1ターンの応答とにより構成されるため、ターン数番号jはj=2に初期設定される。また、ターン数番号jは、上限ターン数までインクリメントされる(ステップS507)。上限ターン数は、対話単位Stau(i)に含まれるターンの総数でもよく、あらかじめ設定された値でもよい。
ターン数番号jが上限ターン数以下である場合(ステップS507:Yes)、生成装置200は、学習データサンプルを空に設定する(ステップS508)。そして、生成装置200は、ターン数番号jが考慮ターン数nよりも大きい場合(j-n>0)、k=j-Nに設定し、そうでない場合(otherwise)、k=1に設定する(ステップS509)。kは、対話単位Stau(i)を構成するターン群において、文脈に追加される先頭ターンの位置を示す。これにより、文脈は1以上のターンとなる。
生成装置200は、対話単位Stau(i)を構成するターン群において、k番目からj-1番目までのターン列を文脈として学習データサンプルに追加し(ステップS510)。j番目のターンを応答として学習データサンプルに追加する(ステップS511)。そして、生成装置200は、学習データサンプルを文脈-応答ペアPtとして登録する(ステップS512)。このあと、生成装置200はターン数番号jをインクリメントして(ステップS513)、ステップS507に戻る。
ステップS507において、ターン数番号jが上限ターン数以下でない場合(ステップS507:No)、生成装置200は、考慮ターン数nをインクリメントし(ステップS514)、ステップS505に戻る。
ステップS505において、考慮ターン数nが所定数以下でない場合(ステップS505:No)、生成装置200は、対話番号iをインクリメントし(ステップS515)、ステップS503に戻る。対話番号iがN以下でない場合(ステップS503:No)、文脈-応答ペア作成処理(ステップS402)が終了し、文脈-応答ペア群Ptsが得られ、ステップS403に移行する。
<言語モデル学習(ステップS404)>
図7は、図4に示した言語モデル学習(ステップS404)の一例を示す説明図である。言語モデル学習(ステップS404)では、生成装置200は、作成した文脈-応答ペアPtに対して高いスコアを出力するような機械学習モデルを学習する。ここでは、BERTモデル700を用いた言語モデル学習例を示す。
(a)生成装置200は、BERTモデル700に、トークン列701として、生成した文脈-応答ペアPtの単語列および特殊単語を入力する。文脈-応答ペアPtの各単語は、ベクトルで表現される。[CLS]は文頭に常に入力される特殊単語である。[PAD]は単語が存在しない箇所を埋める特殊単語である。文脈に現れる単語がその順番のまま入力されるが、A、Bいずれの話者の発言であるかを示す特殊単語([A],[B])もそれぞれの発言の先頭に入力される。生成装置200は、文脈のあとに、[SEP]という特殊単語を入れたのち、応答を入力する。[SEP]は、文の後に入力される特殊単語である。
(b)話者を示す特殊単語を入力トークン列701に追加する方法は、上記(a)に限られない。たとえば、A、Bいずれの話者の発言であるかを示す特殊単語([A],[B])を使わずに、各話者A、Bに割り当てたベクトルをトークン列701のベクトルに足し合わせる方式でもよい。たとえば、(c)に示すように、単語のベクトルと話者のベクトルは、加算または連結され、加算結果または連結結果が、トークン列701を構成する入力トークンとなる。
(a)、(b)いずれにおいても、文脈-応答ペアPtから生成されたトークン列701がBERTモデル700に入力されると、生成装置200は、BERTモデル700の出力であるスコア702が高い値となるよう、BERTモデル700を学習する。この「高い値」としては、たとえば、「1」を用いることが通常であるが、他の値でもよい。
また、文脈-応答ペアPtとは別に、生成装置200は、文脈の次に実際には現れない対話内の別の発言を応答とする文脈-応答ペアPtも別途生成しておき、BERTモデル700に入力する。そして、生成装置200は、この文脈-応答ペアの入力に対して、スコア702が低い値(上記「高い値」よりも低い値。たとえば、「0」)になるように学習する。
「文脈の次に現れない応答」を選ぶ方法としては、たとえば、目的ドメイン対話文Staに存在する発話から、ランダムに1個選ぶ方法がある。文脈-応答ペアPtを正例と称する。一方、文脈-応答ペアPtにおいて「文脈の次に現れない応答」に変更した文脈-応答ペアPtを負例と称す。両者をどの程度の割合で第1学習データに含めるかを決める割合は、任意である。
<フィルタリング処理(ステップS302)>
図8は、図3に示したフィルタリング処理(ステップS302)の詳細な処理手順例を示すフローチャートである。図9は、実施例1にかかるフィルタリング処理(ステップS302)の一例を示す説明図である。
生成装置200は、一般対話文Sgaを読み込み(ステップS801)、文脈-応答ペア作成処理を実行する(ステップS802)。文脈-応答ペア作成処理(ステップS802)は、文脈-応答ペア作成処理(ステップS402)において入力対話文が目的ドメイン対話文Staではなく一般対話文Sgaとした場合の処理である。文脈-応答ペア作成処理(ステップS802)において、生成装置200は、一般対話文Sgaを対話単位Sgau1、Sgau2、Sgau3、Sgau4、…に分割する(ステップS501)。その後、生成装置200は、ステップS502~S515を実行することにより、一般対話文Sgaについての文脈-応答ペア群Pgs(文脈-応答ペアの各々をPgとする)を作成する。
なお、文脈-応答ペア作成処理(ステップS802)では、以下の点で文脈-応答ペア作成処理(ステップS402)と異なる。図5に示した文脈-応答ペア作成処理(ステップS402)では、文脈と応答は時系列に連続した対話のターン列であるが、文脈-応答ペア作成処理(ステップS802)では、一部のターンをスキップした時系列でかつ不連続なターンを含む文脈が作成される。たとえば、考慮ターン数n=3の条件では、以下の連続した対話のターンを抽出することが可能である。
A:おなか痛い(以下、ターンA1)
B:笑いすぎですか?(以下、ターンB1)
A:いや、体調悪い(以下、ターンA2)
B:大丈夫かい?(以下、ターンB2)
生成装置200は、最後のターンであるターンB2を応答とし、それ以外の3ターン(A1,B1,A2)を文脈とする文脈-応答ペアPgを作成する。それに加えて、生成装置200は、文脈として3ターン(A1,B1,A2)すべてを使うのではなく、一部のターンをスキップすることもできる。具合的には、たとえば、ターンA1だけを文脈として使い、応答のターンB2と組み合わせることで、文脈「A:おなか痛い」(ターンA1)、応答「B:大丈夫かい?」(ターンB2)という文脈-応答ペアPgを生成することができる。
また、ここで示した文脈-応答ペアPgの作成方法では、文脈中の最後のターンA2の話者Aと応答のターンの話者Bは、必ず異なる話者という制約にした。さらに、文脈中の連続するターンはかならず異なる話者から発言されたターンという制約もあった。しかし、これらの制約はなくてもよい。たとえば、いま注目する対話単位Sgauから文脈-応答ペアPgを抽出する場合、
文脈「A:おなか痛い」「A:いや、体調悪い」、応答「B:大丈夫かい?」
文脈「A:おなか痛い」「B:笑いすぎですか?」、応答「B:大丈夫かい?」
といった文脈-応答ペアPgを生成してもよい。
なお、このように生成された文脈-応答ペアPgをすべて後続の処理で利用するのではなく、生成装置200は、別の観点からの評価を行い、有用性が高い文脈-応答ペアPgだけを残し、後続の処理で利用してもよい。
たとえば、生成装置200は、文脈-応答ペアPgの間の「対話としてのかみ合い度合」を示すコヒーレントの値に基づいて、文脈-応答ペアPgの有用性を判定してもよい。具体的には、たとえば、生成装置200は、文脈と応答との間で一致する単語の数や単語種類数を計算し、その値が大きいほどコヒーレントが高くなるような計算式を用いて、コヒーレントの値を算出する。
または、生成装置200は、対話としてどの程度かみ合っているかを主観的に採点した文脈-応答ペアPgを多数用意し、これらから文脈-応答ペアPgのコヒーレントの値を算出する機械学習モデルを別途学習する。そして、生成装置200は、その機械学習モデルで計算されたコヒーレントの推定値を用いて、文脈-応答ペアPgの有用性を判定してもよい。具体的には、たとえば、生成装置200は、文脈-応答ペア作成処理(ステップS802)で作成された文脈-応答ペア群Pgsのうち、コヒーレントの値が所定の閾値未満である文脈-応答ペアPgを削除し、残余の文脈-応答ペア群Pgsを用いて、ステップS803を実行してもよい。
つぎに、生成装置200は、生成された文脈-応答ペア群Pgsに対して、言語モデル110を用いてスコアを計算する(ステップS803)。具体的には、たとえば、生成装置200は、目的ドメイン対話文Staについて学習されたBERTモデル700に、一般対話文Sgaから作成されたそれぞれの文脈-応答ペアPgを入力して、スコア702を算出する。このスコア702が高いほど、入力した文脈-応答ペアPgが、目的ドメインの対話において生起される確率が高いことを意味する。
図10は、スコア計算結果の一例を示す説明図である。図10は、文脈-応答ペアPg1~Pg9の各々におけるスコア702の計算結果を示す。
図8に戻り、生成装置200は、一般対話文Sgaから作成した文脈-応答ペア群Pgsから、応答選択モデル作成用の第2学習データ900を抽出する(ステップS804)。具体的には、たとえば、生成装置200は、一般対話文Sgaから作成した文脈-応答ペア群Pgsのうち、スコア702が所定のしきい値以下の文脈-応答ペアPgを削除する。図10の例では、所定のしきい値を0.5とする。したがって、文脈-応答ペアPg4、Pg6、Pg7が削除される。そして、生成装置200は、残余の文脈-応答ペア群Pgsを第2学習データ900として出力する。
図11は、第2学習データ900の抽出例を示す説明図である。図11では、文脈-応答ペアPg1~Pg3、Pg5、Pg8、Pg9が抽出される。
図8に戻り、生成装置200は、第2学習データ900を用いて応答選択モデルを学習する(ステップS805)。具体的には、たとえば、生成装置200は、図7に示した目的ドメイン対話文Staからの言語モデル学習で説明した方法をそのまま応答選択モデルの学習に適用する。すなわち、生成装置200は、第2学習データ900から、文脈と応答に現れるトークンを連結したトークン列を生成して、BERTモデル700に入力し、出力されるスコアが高くなるように学習する。さらに、生成装置200は、第2学習データ900から、ある文脈と、本来応答としては現れない文とを組み合わせた負例のトークン列を生成して、BERTモデル700に入力し、出力されるスコアが低くなるように学習してもよい。これにより、BERTモデル700が学習されて応答選択モデルになる。
<応答選択処理(ステップS304)>
図12は、図3に示した応答選択処理(ステップS304)の詳細な処理手順例を示すフローチャートである。生成装置200は、ステップS805で学習された応答選択モデルを読み込む(ステップS1201)。つぎに、生成装置200は、ユーザ130と対話ロボット140との間で発言された文脈を空にする(ステップS1202)。
生成装置200は、ユーザ130からの文を入力し(ステップS1203)、文脈に追加する(ステップS1204)。また、生成装置200は、当該文脈を用いて、応答選択処理を実行する(ステップS1205)。応答選択処理(ステップS1205)では、生成装置200は、文脈内のすべての文を用いてもよく、最新の所定数の文を文脈として用いてもよい。
図13は、応答選択処理(ステップS1205)の一例を示す説明図である。応答選択処理(ステップS1205)では、別途用意した応答文候補リスト1302が用いられる。生成装置200は、文脈1301と、応答文候補リスト1302から選択した1個の文とを組み合わせて、文脈-応答ペア1303を生成して応答選択モデルに入力し、そのスコア1304を出力する。
ここで算出されるスコア1304は、与えた文脈1301に対して、応答文候補リスト1302から選択された応答が対話ロボット140の応答としてどの程度ふさわしいかを示す値として解釈できる。生成装置200は、応答選択処理(ステップS1205)を応答文候補リスト1302に格納されるすべての文について実行してもよい。たとえば、応答文候補リスト1302に100個の文があるとすれば、文脈-応答ペア1303も100個生成され、スコア1304も100個算出される。
図12に戻り、生成装置200は、応答選択処理(ステップS1205)で算出されたスコア1304が最も高い応答文を選択し、対話ロボット140の応答として出力する(ステップS1206)。これにより、ユーザ130は応答文を対話ロボット140から聞くことができる。図13の例では、スコア1304が最も高い文脈-応答ペア1303は、{「あなたの名前は」「私の名前はロボトです」}であるため、スコア1304が最も高い応答文は、「私の名前はロボトです」である。
つぎに、生成装置200は、出力した応答文を文脈に追加する(ステップS1207)。そして、生成装置200は、対話が終了したかを判断する(ステップS1208)。具体的には、たとえば、生成装置200は、ユーザ130が生成装置200または対話ロボット140に対して、「さようなら」と入力した場合や、不図示の終了ボタンを押したときに終了と判断する(ステップS1208:Yes)。対話が終了していない場合(ステップS1208:No)、ステップS1203に戻り、引き続き対話を継続する。このようにして、生成装置200は、学習された応答選択モデルに基づき、ユーザ130と対話ロボット140との対話を円滑に実現することができる。
このように、実施例1によれば、生成装置200は、応答選択モデルを学習する際に、あらかじめ一般対話文から目的ドメイン対話文Staと類似する対話だけを抽出して、応答選択モデルを学習する。したがって、目的ドメインと無関係な対話文の第2学習データ900への混入が低減される。これにより、応答選択精度の低下が抑制される。
実施例2は、図4に示した確率モデル学習処理(ステップS301)において、ダイアログアクト遷移モデル学習(ステップS405)または感情遷移モデル学習(ステップS406)のうち少なくとも一方を適用する例である。実施例2では、ダイアログアクト遷移モデル学習(ステップS405)または感情遷移モデル学習(ステップS406)が確率モデル学習処理(ステップS301)で適用される点を除いて実施例1と同一である。したがって、実施例2では、ダイアログアクト遷移モデル学習(ステップS405)および感情遷移モデル学習(ステップS406)を中心に説明し、実施例1との重複部分については説明を省略する。
ダイアログアクト遷移モデル学習(ステップS405)は、ダイアログアクト遷移モデルを学習する処理である。ダイアログアクト遷移モデルとは、ダイアログアクトが遷移する確率モデルである。ダイアログアクトとは、「質問」、「回答」、「開示」、および「確認」のように、発話した文の意図、具体的には、たとえば、発言に込められた働きかけの種類を示す。
感情遷移モデル学習(ステップS406)は、感情遷移モデルを学習する処理である。感情遷移モデルとは、「困惑」、「心配」、「いたわり」のような各種感情が遷移する確率モデルである。
図14は、ダイアログアクト遷移モデル学習(ステップS405)および感情遷移モデル学習(ステップS406)を混合した文脈-応答ペアPtの作成例を示す説明図である。図14の作成は、図5に示した文脈-応答ペア作成処理(ステップS402)で実行される。
具体的には、たとえば、生成装置200は、目的ドメイン対話文Staを対話単位Stauごとに分割する(ステップS501)。このとき、生成装置200は、それぞれの対話のターンに、ダイアログアクト1401および感情1402を示すタグを付与する。
ダイアログアクト1401の付与および感情1402の付与は、自然言語処理技術における文へのラベル付けの技術を適用することにより可能である。具体的には、たとえば、生成装置200は、文とダイアログアクト1401と感情1402との組み合わせについて、文とダイアログアクト1401と感情1402との関係を機械学習して機械学習モデルを生成する。そして、生成装置200は、生成された機械学習モデルに、対話単位Stauの文を入力することで、その文のダイアログアクト1401および感情1402を推定することが可能になる。
なお、ダイアログアクト遷移モデル学習(ステップS405)のみ適用する場合は、生成装置200は、文とダイアログアクト1401とのペアについて、文とダイアログアクト1401との関係を機械学習して機械学習モデルを生成する。そして、生成装置200は、生成された機械学習モデルに、対話単位Stauの文を入力することで、その文のダイアログアクト1401を推定することができる。同様に、感情遷移モデル学習(ステップS406)のみ適用する場合は、生成装置200は、文と感情1402とのペアについて、文と感情1402との関係を機械学習して機械学習モデルを生成する。
生成装置200は、このように推定されたダイアログアクト1401および感情1402を示すタグを、それぞれの対話のターンに付与し、対話単位Stau1、Stau2、Stau3、…を生成する(ステップS501)。そして、生成装置200は、ステップS502~S515により、対話単位Stauごとに文脈-応答ペア群Ptsを作成する。文脈-応答ペア群Ptsの各文脈-応答ペアPtでは、ターンごとにダイアログアクト1401および感情1402が関連付けされる。
ダイアログアクト遷移モデルと感情遷移モデルとの混合モデルの学習では、実施例1(図7)と同様、BERTモデルを用いることができる(ダイアログアクト遷移モデルの学習や感情遷移モデルの学習も同様)。以下、図15~図17を用いて具体的に説明する。
図15は、実施例2にかかる確率モデル学習例1を示す説明図である。実施例1と同様、生成装置200は、BERTモデルを用いる。生成装置200は、文脈と応答の単語列であるトークン列701をBERTモデル1500に入力する。これと並行して、生成装置200は、それぞれの単語が属する発話のダイアログアクト1401、および感情1402も入力する。具体的には、生成装置200は、単語を表すベクトルに、ダイアログアクトを表すベクトル、および感情を表すベクトルを加算または連結する(図7の(c)を参照)。
これにより、BERTモデル1500は、最後にスコア1502を出力する。BERTモデル1500の学習プロセスにおいて、生成装置200は、目的ドメイン対話文Staから与えられた文脈-応答ペアPt(正例)に対して、スコア1502の値が高くなるように学習する。さらに、生成装置200は、文脈-応答ペアPt(正例)の文脈と、実際には文脈の次には現れない応答をペアにした負例に対して、スコア1502が低くなるように学習する(ステップS301)。
なお、ここで示した方法では、単語、ダイアログアクト1401、感情1402のすべてがBERTモデル1500に入力され、かつ予測にも使用される。そのため、確率モデル学習処理(ステップS301)と照らし合わせると、言語モデル学習(ステップS404)、ダイアログアクト遷移モデル学習(ステップS405)、感情遷移モデル学習(ステップS406)のすべてが実行される。
図16は、実施例2にかかる確率モデル学習例2を示す説明図である。図16では、生成装置200は、BERTモデル1500の替わりに、リカレントニューラルネットワーク(RNN)1600を用いる。生成装置200は、RNN1600に、文脈中のダイアログアクト1401および感情1402をターンごとに入力していく。すると、最終的に、応答として予測されるダイアログアクト1601および感情1602が、その確からしさを示すスコア1611,1612と一緒に出力される。なお、図示はしないが、RNN1600の入力と出力に、話者を示すタグ([A]、[B]など)を含めてもよい。
RNN1600の学習プロセスにおいて、生成装置200は、目的ドメイン対話文Staから与えられた文脈-応答ペアPt(正例)の文脈中のダイアログアクト1401および感情1402に対して、スコア1611,1612の値が高くなるように学習する(ステップS301)。
図17は、実施例2にかかる確率モデル学習例3を示す説明図である。図17では、生成装置200は、BERTモデル1700に文脈だけを入力する(応答は入力されない)。具体的には、たとえば2、生成装置200は、文脈の単語列を含むトークン列701、ダイアログアクト1401、および感情1402を入力する。これにより、BERTモデル1700は、文脈に後続する応答に現れるダイアログアクト1701および感情1702をスコア1721,1722付きで出力する。
BERTモデル1700の学習プロセスにおいて、生成装置200は、目的ドメイン対話文Staから与えられた文脈-応答ペアPt(正例)の文脈中のトークン列1700、ダイアログアクト1401、および感情1402に対して、スコア1721,1722の値が高くなるように学習する(ステップS301)。
以上のように、図15~図17で学習された確率モデル(BERTモデル1500,1700,RNN1600)を用いて、生成装置200は、一般対話文Sgaのフィルタリング処理を実行する(ステップS302)。
<フィルタリング処理(ステップS302)>
図18は、実施例2にかかるフィルタリング処理(ステップS302)の一例を示す説明図である。一般対話文Sgaは、対話単位Sgauごとに分割され、それぞれのターンにダイアログアクト1401および感情1402が付与される。さらに、実施例1と同様に、生成装置200は、文脈-応答ペア群Pgsを生成する。
図15に示したBERTモデル1500を適用する場合には、生成装置200は、一般対話文Sgaの文脈-応答ペアPgをBERTモデル1500に入力してスコア1502を取得し(ステップS803)、そのスコア1502が所定の閾値より高い場合、入力した文脈-応答ペアPgを第2学習データ900として採用する(ステップS804)。
図16に示したRNN1600を適用する場合には、生成装置200は、一般対話文Sgaの文脈-応答ペアPgから文脈のターンにおけるダイアログアクト1401と感情1402を入力し、応答として出力されるダイアログアクト1601および感情1602のスコア1611,1612を計算する。生成装置200は、このスコア1611,1612の両方が所定の閾値以上になるダイアログアクト1601および感情1602をあらかじめ列挙しておく。
そして、生成装置200は、実際に一般対話文Sgaの応答に関連付けされたダイアログアクト1401および感情1402が、RNN1600から列挙されたダイアログアクト1601および感情1602に一致するか否か判断する。一致する場合には、生成装置200は、当該一致した応答とそのダイアログアクト1601および感情1602と、当該一致した応答に対応する文脈とそのダイアログアクト1401および感情1402と、により構成される文脈-応答ペアPgを、第2学習データ900に追加する。
図17に示したBERTモデル1700を適用する場合、一般対話文Sgaの文脈-応答ペアPgから文脈の単語列を含むトークン列701、ダイアログアクト1701、感情1702を入力し、応答に現れるダイアログアクト1711および感情1712のスコア1721,1722を計算する。このスコア1721,1722の両方が所定の閾値以上になるダイアログアクト1711および感情1712をあらかじめ列挙しておく。
そして、生成装置200は、実際に一般対話文の応答に関連付けされたダイアログアクトおよび感情が、BERTモデル1700から列挙されたダイアログアクト1711および感情1712に一致するか否かを判断する。一致する場合には、生成装置200は、当該一致した応答とそのダイアログアクト1711および感情1712と、当該一致した応答に対応する文脈とそのダイアログアクト1401および感情1402と、により構成される文脈-応答ペアPgを、第2学習データ900に追加する。
このように、実施例2によれば、ダイアログアクト1401または感情1402の少なくとも一方を考慮することにより、より目的ドメイン対話文Stのやりとりに似た一般対話文(FSg)を抽出することができる。これにより、より適切な応答生成を実現することができる。
なお、文脈-応答ペアPgを作成する際、1個のターンに含まれる文が長い場合がある。さらに、その結果として、1個の文に複数のダイアログアクト1401または感情1402が含まれる場合がある。その場合には、生成装置200は、1個のターンを複数の文に分割し、それぞれの文を独立したターンとして再定義してもよい。そして、生成装置200は、再定義後のそれぞれのターンに対してダイアログアクト1401または感情1402を付与し、確率モデルの学習に適用する。この場合、同一話者のターンが連続する場合もあるが、生成装置200はそれを許容してもよい。または、生成装置200は、分割後の文に対して、後続の応答の決定に最も影響を与える文をルールまたは機械学習の方法で同定し、その文だけを残してターンを形成してもよい。
実施例3は、実施例1および実施例2において、目的ドメイン対話文Stおよび一般対話文Sgを事前に単語クラス化する例である。単語クラス化とは、固有名詞のような単語を上位概念化した単語に変換する処理である。実施例3では、単語クラス化を中心に説明するため、実施例1および実施例2との重複部分については説明を省略する。
図19は、実施例3にかかる単語クラス化の一例を示す説明図である。(A)は、目的ドメイン対話文Stのクラス化、(B)は、一般対話文Sgbのクラス化を示す。(A)において、クラス化目的ドメイン対話文CStは、目的ドメイン対話文Stからクラス化された文であり、目的ドメイン対話文Stに含まれている人名(ロボト)や地名(横浜、中華街)といった固有名詞が[人名1]、[地名1]、[地名2]といったクラスに置換されている。
(B)において、クラス化一般対話文CSgbは、一般対話文Sgbからクラス化された文であり、一般対話文Sgbに含まれている人名(佐藤)や地名(沖縄、首里城)といった固有名詞が[人名1]、[地名1]、[地名2]といったクラスに置換されている。また、単語代入後一般対話文DSgbは、クラス化一般対話文CSgbからクラスに具体的な単語を代入した文であり、クラス化一般対話文CSgbに含まれている[人名1]、[地名1]、[地名2]といったクラスが、目的ドメイン対話文Stに含まれている人名(ロボト)や地名(横浜、中華街)といった固有名詞に置換されている。
生成装置200は、目的ドメイン対話文Stおよび一般対話文Sgbのそれぞれについて、形態素解析や固有表現抽出を実行する。これにより、目的ドメイン対話文Stおよび一般対話文Sgbはそれぞれ、単語に分割され、かつ単語の品詞や種別といった属性が抽出される。この属性をクラスと称す。形態素解析や固有表現抽出については、生成装置200とアクセス可能な他のコンピュータが実行し、生成装置200は、当該他のコンピュータから形態素解析結果や固有表現抽出結果を取得してもよい。
クラス化目的ドメイン対話文CStおよびクラス化一般対話文CSgbでは、生成装置200は、人名を[人名]、地名を[地名]というクラスに置換する。なお、1個のクラスに属する異なる単語がある場合には、生成装置200は、文脈上においてどの単語が一致しているかという情報を残すために、[地名1]、[地名2]のようにクラスに番号をつける。
目的ドメイン対話文Stと一般対話文Sgbとの間では、含まれる単語の内訳には大きな差がある。しかし、対話のやりとりの質の類似性を測る上では、具体的にどんな単語が使われたかは重要ではない。そこで、実施例3では、生成装置200が、両者に含まれる単語をクラスに置き換えることで、具体的な単語の違いを無視し、対話のやりとりの質における類似性を計測することを容易とする。最終的に、生成装置200は、単語をクラスに置換したクラス化目的ドメイン対話文CStから学習した確率モデルを適用し、一般対話文のフィルタリング処理(ステップS302)を実行する。これにより、応答選択をより高精度に行うことができる。
また、生成装置200は、クラス化一般対話文CSgbを、具体的単語の代入により、目的ドメイン対話文Stに出現する単語で置換して、単語代入後一般対話文DSgbを出力することもできる。具体的には、たとえば、一般対話文CSgbに含まれる単語(佐藤、沖縄、首里城)が目的ドメイン対話文の単語(ロボト、横浜、中華街)に置換される。生成装置200は、単語代入後一般対話文DSgbを用いて学習して、文脈-応答ペアPgを作成し、第2学習データ900を生成してもよい。このような第2学習データ900を用いることにより、応答選択モデルの高精度化を図ることができる。
実施例4は、実施例1~3において、言語モデル110、ダイアログアクト遷移モデル、および感情遷移モデルのいずれかのフィルタリング処理(ステップS302)を実行するのではなく、複数の属性に基づくフィルタリング処理(ステップS302)を実行する例である。実施例3では、フィルタリング処理(ステップS302)を中心に説明するため、実施例1~3との重複部分については説明を省略する。
フィルタリング処理(ステップS302)では、図8で示したように、生成装置200は、一般対話文Sgの文脈-応答ペアPgの確率モデル上でのスコアを計算し(ステップS803)、スコアの大小により文脈-応答ペアPgを第2学習データ900に採用するか否かを決定する(ステップS804)。このとき、生成装置200は、言語モデル110に基づくスコア、ダイアログアクト1401に基づくスコア、感情1402に基づくスコアを、独立して計算する。したがって、得られるスコアは3個である。さらに、生成装置200は、これら3個のスコアを用いて、下記式(1)により、総合スコアSを算出する。
上記式(1)において、siは、スコアである。iは、スコアsiを算出した属性を特定する識別子である。Nはスコアsiの総数である。wiは属性iに対応する重みであり、wiの合計が1になるよう制約を設ける。生成装置200は、総合スコアSを用い、ステップS804において、総合スコアSの大小により文脈-応答ペアPgを第2学習データ900に採用するか否かを決定する。これにより、文脈-応答ペアPgの適切性を総合的に判断することができ、より適切な応答を生成することができる。
実施例5は、実施例1~4にかかる生成装置200の開発者が、生成装置200を用いて実際に学習された応答選択モデルをテストし、サンプルとして得た応答の良し悪しを判断したフィードバック結果を生かし、応答選択モデルの改善を行う例である。実施例3では、応答選択モデルの改善を中心に説明するため、実施例1~4との重複部分については説明を省略する。
図20は、実施例5にかかる応答選択モデルの改善処理手順例を示すフローチャートである。生成装置200は、サンプルとなる文脈の入力を受け付ける(ステップS2001)。つぎに、生成装置200は、入力された文脈を応答選択モデルに入力して、応答文候補を生成する(ステップS2002)。応答文候補は、1個でもよいし、または、応答選択モデルが高いスコアを出力した複数の応答文候補であってもよい。ここでは、複数の応答文候補があることを想定する。
開発者は、生成されたそれぞれの応答文候補に対して適切性を判断する。そして、生成装置200は、開発者から、各々の応答文候補に対しOK(適切)またはNG(不適切)の入力を受け付ける(ステップS2003)。そして、生成装置200は、文脈入力の受付が終了したか否かを判断し(ステップS2004)、終了していなければ(ステップS2004:No)、ステップS2001に戻り、終了していれば(ステップS2004:Yes)、モデル更新(ステップS2005)に移行する。
生成装置200は、設定により、ステップS2006またはステップS2007に分岐する(ステップS2005)。モデル更新(ステップS2005)が確率モデルの更新に設定されている場合、生成装置200は、確率モデルを更新する(ステップS2006)。一方、モデル更新(ステップS2005)が確率モデルの重みの更新に設定されている場合、生成装置200は、確率モデルの重みを更新する(ステップS2007)。
生成装置200は、更新後の確率モデルまたは確率モデルの重みを用いて、一般対話文Sgからのフィルタリング処理(ステップS302)、および応答選択処理(ステップS304)を実行する。
図21は、実施例5にかかる応答選択モデルの改善例を示す説明図である。画面2100は、生成装置200で表示される。画面2100は、第1表示領域2101と、第2表示領域2102とを有する。第1表示領域2101は、開発者が入力可能な表示領域であり、開発者が生成装置200に入力した文脈と、生成装置200から応答選択処理(ステップS304)により得た応答文候補(S1206で出力される応答)、および開発者が適切性を入力した結果を表示する。第2表示領域2102も、開発者が入力可能な表示領域であり、発話に自動的に付与されたダイアログアクト1401および感情1402を表示する。さらに、開発者から発話に付与すべきダイアログアクト1401および感情1402を受け付け修正できるようにしてもよい。
ここで、図20の確率モデルの更新(ステップS2006)および確率モデルの重みの更新(ステップS2007)について、具体的に説明する。確率モデルの更新(ステップS2006)では、生成装置200は、ステップS2003でOKとされた文脈-応答ペアPgを正例とし、NGとされた文脈-応答ペアPgを負例として第2学習データ900に追加し、確率モデルを再学習する。
この場合、生成装置200は、確率モデルへの入力として、単語のみ、ダイアログアクト1401のみ、感情1402のみ、単語とダイアログアクト1401、単語と感情1402、ダイアログアクト1401と感情1402、または、単語とダイアログアクト1401と感情1402の組み合わせ、のいずれかを用い、用いた入力に対して適用可能な確率モデル(BERTモデル700,1500,1700,RNN1600)に入力する。
たとえば、生成装置200は、OKと判断された文脈-応答ペアPgを正例、NGと判断された文脈-応答ペアPgを負例とし、RNN1600の第2学習データ900に追加する。これにより、RNN1600の再学習が可能になる。
また、生成装置200は、複数の確率モデルを併用してもよい。たとえば、ダイアログアクト1401のスコアを計算するときを考えた場合、BERTモデル1700とRNN1600の両方を用い、この両者のスコアの合計値をダイアログアクト1401のスコアをしてもよい。開発者の判断を確率モデルに反映させる工程を考えると、単語を入力として持つBERTモデル1700よりも、ダイアログアクト1401だけを入力とするRNN1600の方が、短い計算時間で確率モデルの更新を完了することができる。よって、開発者の判断を反映するモデルは、RNN1600のみとすることもできる。
このように、図20の確率モデルの更新(ステップS2006)では、開発者の対話に対する良し悪しの判断を入れ込むことにより、より適切な応答を得る対話システム100を実現することができる。また、実施例5では、開発者が判断を行うことを想定したが、ユーザ130などの他の役割を持つ人の判断でもよいし、良し悪しの判断を行う別の機械や計算機プログラムであってもよい。
また、確率モデルの重みの更新(ステップS2007)では、一般対話文Sgの文脈を入力して得た応答により、文脈-応答ペアPgを構築する。生成装置200は、文脈-応答ペアPgの文脈と応答のそれぞれに対して、開発者によるOK(適切)またはNG(不適切)の判断結果を入力として受け付ける。さらに、生成装置200は、当該文脈-応答ペアPgに対して、複数の属性(たとえば、単語、ダイアログアクト、感情)それぞれのスコアを計算する。
つぎに、生成装置200は、判断結果(OKまたはNG)と、複数の属性の各々のスコアと、を比較し、開発者がどの属性を重要視して対話の適切性を判断しているかを調べる。すなわち、開発者がOKと判断した文脈-応答ペア群のうち、単語を入力とする確率モデルのスコアが所定値以上の文脈-応答ペアPgが相対的に多ければ、生成装置200は、その開発者が「単語に基づいて適切性を評価している」と判断する。
一方、開発者がOKと判断した文脈-応答ペア群のうち、感情1402を入力とする確率モデルのスコアが所定値以上の文脈-応答ペアPgが相対的に多ければ、生成装置200は、その開発者は「感情に基づいて適切性を判断している」と判断する。
このように、生成装置200は、開発者の判断結果と各属性で計算されたスコアとを比較することで、その開発者が、どういった側面を重視した対話を望んでいるかを特定することができる。生成装置200は、この比較結果に基づいて、重みを調整する。重みとは、先に述べた上記式(1)におけるwiである。すなわち、生成装置200は、重要視されている属性の重みを大きく、または、重要視されていない属性の重みを小さくする。
このように、生成装置200は、確率モデルの重みを調整することで、開発者がどういった側面に重きを置いた対話を望んでいるかを特定することができ、その嗜好を効率的に反映することができる。
実施例6は、実施例1~5において、目的ドメイン対話文Stから学習された確率モデルを、一般対話文Sgからのフィルタリングに使うのではなく、生成装置200の応答選択結果に対して適用する例である。実施例6では、当該内容を中心に説明するため、実施例1~5との重複部分については説明を省略する。
図22は、実施例6にかかる応答選択処理(ステップS304)の詳細な処理手順例を示すフローチャートである。図12との相違点は、実施例6では、ステップS1205とS1206との間に、ステップS2200を実行する点である。
ステップS2200では、生成装置200は、応答選択(ステップS1205)で得られた、複数の応答文候補を入力として用いる。また、ステップS2200では、すでに文脈も存在している。そこで、生成装置200は、当該文脈とそれぞれの応答文候補を組み合わせて、文脈-応答ペアを生成しておく。それぞれの文脈-応答ペアについては、生成装置200は、実施例1~5で説明したいずれかの方法により、スコアを計算しておく。
図23は、実施例6にかかる総合スコアの算出例を示す説明図である。ステップS2200では、生成装置200は、応答文候補のスコアを操作する。具体的には、たとえば、応答選択モデルで得られたある応答に対するスコアが0から1の範囲で、かつ、フィルタリング処理(ステップS302)用の確率モデルから得られたスコアも0から1の範囲とする。この場合、生成装置200は、両者の重み付き和を取ることで、両者を総合した総合スコアを算出する。生成装置200は、この総合スコアに基づいて、総合スコア第1位の応答を生成装置200の出力として採用する(ステップS1206)。
実施例1~5では、応答選択モデルの第2学習データ900となる一般対話文Sgをフィルタリング処理(ステップS302)したのち、応答選択モデルを学習する前提であった。しかし、一般対話文は大量に存在するため、応答選択モデルの学習には時間がかかる。そのため、試行錯誤的に生成装置200を改善したいケースでは、実施例1~5を適用するよりも、実施例6を適用すればよい。すなわち、実施例6にかかる生成装置200は、確率モデルを応答選択の後処理で使用するため、応答選択モデルの再学習が不要になる。したがって、試行錯誤的な改善をより容易に行うことができる。
たとえば、開発者からのフィードバックを生かして生成装置200の応答戦略を変更する場面を想定すると、応答選択モデルの学習に時間がかかるため、開発者にとって試行錯誤をすることが難しくなる。一方、目的ドメイン対話文Stのデータ量は一般対話文Sgより相対的に少ないため、実施例6にかかる生成装置200は、目的ドメイン対話文Stを用いた確率モデルの学習を高頻度で実行することができる。このように、開発者のフィードバックを生かして生成装置200を改善していく場面において、より高頻度な更新を図ることができる。
実施例7について説明する。実施例1~6では、生成装置200は、一般対話文Sgから得られた文脈-応答ペアPgに対して、確率モデルによるスコアを算出し、そのスコアが所定の閾値以上であれば第2学習データ900に採用し、そうでなければ不採用とした。これに対し、実施例7では、生成装置200は、実施例1~6のようにスコアに応じて採用/不採用のいずれかを決定する方法ではなく、スコアの値に応じて、当該文脈-応答ペアPgの学習における寄与度を調整した上で、第2学習データ900に追加する。
図24は、実施例7にかかる寄与度調整例を示す説明図である。実施例7では、図4に示した言語モデル110の学習を例に挙げて説明するが、他の確率モデルに対しても適用が可能である。BERTモデルの学習に必要となる情報は、入力される文脈-応答ペアPgと、それに対する正解となるスコア(正解ラベル)である。正解ラベルは、実施例1~実施例6では、正例には「1」、負例には「0」が用いられる。
実施例7では、生成装置200は、ある文脈-応答ペア2401,2402に対するスコア2411,2412を計算し、そのスコア2411,2412を、そのまま応答選択モデルの正解ラベルとして採用する。確率モデルで評価されたスコア2411,2412は、目的ドメイン対話文でより生起しそうであれば高い値、すなわち1に近い値となり(スコア2411)、あまり生起しそうになければ低い値、すなわち0に近い値となる(スコア2412)。よって、この確率モデルが出力するスコア2411,2412を正解ラベルに採用することで、生成装置200は、正例、負例を使った応答選択モデルの学習を実行することができる。また、確率モデルが出力した値をそのまま正解ラベルとして使うのではなく、学習がうまくいくような別の変換を行ってもよい。
また、上記の方法以外にも、応答選択モデルの学習における損失値の計算において、確率モデルのスコアを考慮することもできる。確率モデルによるスコアが1に近いほど、生成装置200は、正例として学習するサンプルとしての損失値での重みを大きくする。逆に、確率モデルによるスコアが0に近いほど、生成装置200は、負例として学習されるサンプルとしての損失値への重みを大きくする。
また、実施例1~6では、フィルタリング処理(ステップS302)により除外していた一般対話文にも、応答選択モデルに役立つ何らかの情報は存在すると考えられる。実施例7により、それらの一般対話文が持つ情報も応答選択モデルの学習に生かすことができる。これにより、より高い適切性となる応答選択の実現が可能となる。
なお、上述した実施例1~7では、生成装置200が確率モデルや応答選択モデルを学習したが、生成装置200がアクセス可能な他のコンピュータが確率モデルや応答選択モデルを学習してもよい。この場合、生成装置200が第2学習データ900を他のコンピュータに与える。また、生成装置200が、他のコンピュータにトークン列やダイアログアクト、感情を与えることにより、応答やスコアを取得することになる。
また、上述した実施例1~7にかかる生成装置200は、下記(1)~(14)のように構成することもできる。
(1)生成装置200は、プログラムを実行するプロセッサ201と、前記プログラムを記憶する記憶デバイス202と、を有し、特定の分野の対話を示す特定対話文(目的ドメイン対話文St)に含まれる特定文脈と当該特定文脈に対する特定応答との組み合わせである特定文脈-特定応答ペアPtの集合Ptsを第1学習データとし、前記第1学習データを用いて学習された、前記特定文脈に対する前記特定応答の適切性を評価する確率モデルにアクセス可能である。前記プロセッサ201は、一般対話文Sgに含まれる文脈と当該文脈に対する応答との組み合わせである文脈-応答ペアPgを前記確率モデルに入力することにより、前記確率モデルから出力される前記文脈-応答ペアPgの適切性を評価するスコアを取得する取得処理(ステップS803)と、前記取得処理によって取得されたスコアに基づいて、前記文脈-応答ペアPgを第2学習データ900に追加する追加処理(ステップS804)と、を実行する。
(2)上記(1)において、前記プロセッサ201は、前記文脈と前記文脈に続く文である前記応答とを一般対話文Sgから抽出することにより、前記文脈-応答ペアPgを作成する作成処理(ステップS802)を実行し、前記取得処理では、前記プロセッサ201は、前記作成処理によって作成された前記文脈-応答ペアPgを前記確率モデルに入力することにより、前記確率モデルから出力される前記スコアを取得する。
(3)上記(2)において、前記作成処理では、前記プロセッサ201は、時系列な連続する複数の文を前記文脈として前記対話文Sgから抽出する。
(4)上記(2)において、前記作成処理では、前記プロセッサ201は、時系列でかつ不連続な複数の文を含む前記文脈を前記対話文Sgから抽出する。
(5)上記(1)において、前記確率モデルは、前記特定文脈と、前記特定応答と、前記特定文脈および前記特定応答を構成する各文の意図を示す特定ダイアログアクトと、の組み合わせである特定文脈-特定応答ペアの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定文脈に対する前記特定応答の適切性を評価するBERTモデル1500であり、前記取得処理では、前記プロセッサ201は、前記文脈と、前記文脈に対する応答と、前記文脈および前記応答を構成する各文の意図を示すダイアログアクトと、の組み合わせである文脈-応答ペアを、前記確率モデルに入力することにより、前記確率モデルから出力される前記文脈-応答ペアの適切性を評価するスコアを取得する。
(6)上記(1)において、前記確率モデルは、前記特定文脈と、前記特定応答と、前記特定文脈および前記特定応答を構成する各文を発話した話者の気持ちを示す特定感情と、の組み合わせである特定文脈-特定応答ペアの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定文脈に対する前記特定応答の適切性を評価するBERTモデル1500であり、前記取得処理では、前記プロセッサは、前記文脈と、前記文脈に対する応答と、前記文脈および前記応答を構成する各文を発話した話者の気持ちを示す感情と、の組み合わせである文脈-応答ペアを、前記確率モデルに入力することにより、前記確率モデルから出力される前記文脈-応答ペアの適切性を評価するスコアを取得する。
(7)上記(1)において、前記確率モデルは、前記特定文脈と、前記特定応答と、前記特定文脈および前記特定応答を構成する各文の意図を示す特定ダイアログアクトと、前記特定文脈および前記特定応答を構成する各文を発話した話者の気持ちを示す特定感情と、の組み合わせである特定文脈-特定応答ペアの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定文脈に対する前記特定応答の適切性を評価するBERTモデル1500であり、前記取得処理では、前記プロセッサ201は、前記文脈と、前記文脈に対する応答と、前記文脈および前記応答を構成する各文の意図を示すダイアログアクトと、前記文脈および前記応答を構成する各文を発話した話者の気持ちを示す感情と、の組み合わせである文脈-応答ペアを、前記確率モデルに入力することにより、前記確率モデルから出力される前記文脈-応答ペアの適切性を評価するスコアを取得する。
(8)上記(1)において、前記確率モデルは、前記特定文脈を構成する各文の意図を示す特定文脈ダイアログアクトの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定応答を構成する各文の意図を示す特定応答ダイアログアクトの適切性を評価するRNN1600であり、前記取得処理では、前記プロセッサ201は、前記文脈を構成する各文の意図を示す文脈ダイアログアクトを、前記確率モデルに入力することにより、前記確率モデルから出力される前記応答を構成する各文の意図を示す応答ダイアログアクトの適切性を評価するスコアを取得する。
(9)上記(1)において、前記確率モデルは、前記特定文脈を構成する各文を発話した話者の気持ちを示す特定文脈感情の集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定応答を構成する各文を発話した話者の気持ちを示す特定応答感情の適切性を評価するRNN1600であり、前記取得処理では、前記プロセッサ201は、前記文脈を構成する各文を発話した話者の気持ちを示す文脈感情を、前記確率モデルに入力することにより、前記確率モデルから出力される前記応答を構成する各文を発話した話者の気持ちを示す応答感情の適切性を評価するスコアを取得する。
(10)上記(1)において、前記確率モデルは、前記特定文脈と、前記特定文脈を構成する各文の意図を示す特定文脈ダイアログアクトと、の組み合わせの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定応答を構成する各文の意図を示す特定応答ダイアログアクトの適切性を評価するBERTモデル1700であり、前記取得処理では、前記プロセッサ201は、前記文脈と、前記文脈を構成する各文の意図を示す文脈ダイアログアクトと、の組み合わせを、前記確率モデルに入力することにより、前記確率モデルから出力される前記応答を構成する各文の意図を示す応答ダイアログアクトの適切性を評価するスコアを取得する。
(11)上記(1)において、前記確率モデルは、前記特定文脈と、前記特定文脈を構成する各文を発話した話者の気持ちを示す特定文脈感情と、の組み合わせの集合を前記第1学習データとし、前記第1学習データを用いて学習された、前記特定応答を構成する各文を発話した話者の気持ちを示す特定応答感情の適切性を評価するBERTモデル1700であり、前記取得処理では、前記プロセッサ201は、前記文脈と、前記文脈を構成する各文を発話した話者の気持ちを示す文脈感情と、の組み合わせを、前記確率モデルに入力することにより、前記確率モデルから出力される前記応答を構成する各文を発話した話者の気持ちを示す応答感情の適切性を評価するスコアを取得する。
(12)上記(1)において、前記プロセッサ201は、前記対話文に含まれる固有名詞を上位概念化した単語に変換するクラス化処理を実行し、前記取得処理では、前記プロセッサ201は、前記クラス化処理によって前記固有名詞が変換された前記対話文に含まれる文脈と当該文脈に対する応答との組み合わせである文脈-応答ペアを前記確率モデルに入力することにより、前記確率モデルから出力される前記スコアを取得する。
(13)上記(1)において、応答文候補にアクセス可能であり、前記プロセッサ201は、応答文候補ごとに、前記文脈と前記応答文候補との組み合わせである文脈-応答文候補ペアを生成し、前記追加処理による追加後の第2学習データ900を用いて前記確率モデルを再学習した結果得られる応答選択モデルに、前記文脈-応答文候補ペアの各々を入力した結果、前記応答選択モデルから出力される各スコアに基づいて、出力対象となる応答文候補を選択して出力する選択処理(ステップS304)を実行する。
(14)上記(13)において、前記取得処理では、前記プロセッサ201は、前記応答選択モデルに、前記文脈-応答文候補ペアの各々を入力して前記応答選択モデルから得られる前記各スコアを出力した結果、外部入力により前記文脈-応答文候補ペアについての適切性の判断結果を取得し、前記追加処理では、前記プロセッサは、前記判断結果に基づいて、前記文脈-応答文候補ペアを前記第2学習データ900に追加する。
(15)上記(13)において、前記選択処理では、前記プロセッサは、前記追加処理による追加後の第2学習データを用いて前記確率モデルを再学習した結果得られる応答選択モデルに、前記文脈-応答ペアを入力することにより、前記応答選択モデルから出力される前記文脈-応答ペアの適切性を評価する第1スコアを取得し(S1205)、前記確率モデルに、前記文脈-応答ペアを入力することにより、前記確率モデルから出力される前記文脈-応答ペアの適切性を評価する第2スコアを取得し(S2200)、前記第1スコアおよび前記第2スコアに基づいて、前記出力対象となる応答文候補を選択して出力する。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。たとえば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。