(57)【要約】【課題】文法的誤りが少なく、かつ、可読性の高い文を生成することができるようにする。【解決手段】入力変換部１１０が、入力された単語を、第１の固定長ベクトルに変換し、生成部１２０が、次の単語を予測するための予め学習されたニューラルネットワークを用いて、単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成し、補正部１４０が、第１の固定長ベクトルから、第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成し、出力部１６０が、第２の固定長ベクトルと、補正用ベクトルとに基づいて、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力し、最も確率の高い１文、又は、確率の高い複数の候補文を生成する。【選択図】図２
2019046188.tif 000002
【特許請求の範囲】
【請求項１】
入力された単語を第１の固定長ベクトルに変換する入力変換部と、
前記入力変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを生成する生成部と、
前記入力変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成する補正部と、
前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する出力部と
を含み、
前記出力部が出力した単語を前記入力変換部の入力として、前記入力変換部、前記生成部、前記補正部、及び前記出力部での各処理を繰り返すことにより生成した単語を並べた単語列を候補文として生成するものであり、
前記生成部は、前記入力変換部で得た第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルである、前記単語列中の当該第１の固定長ベクトルに対応する単語の直前の単語までの単語列に対応する第２の固定長ベクトルとから、前記単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成する
文生成装置。
【請求項２】
学習データとして予め用意された正解文の単語を第１の固定長ベクトルに変換する学習データ変換部と、
前記学習データ変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークを用いて、第２の固定長ベクトルを生成する生成部と、
前記学習データ変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成する補正部と、
前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する出力部と、
前記出力部で得た単語が、前記正解文の単語の次の単語となるように、前記第２の固定長ベクトルを補正するためのニューラルネットワークを学習する学習部と、
を含み、
前記出力部が出力した単語を前記学習データ変換部の入力として、前記学習データ変換部、前記生成部、前記補正部、前記出力部、及び前記学習部での各処理を繰り返す
文生成学習装置。
【請求項３】
前記学習部は、前記出力部で得た単語が、前記正解文の単語の次の単語となるように、前記次の単語を予測するためのニューラルネットワーク、及び前記第２の固定長ベクトルを補正するためのニューラルネットワークを学習する請求項２記載の文生成学習装置。
【請求項４】
入力変換部が、入力された単語を第１の固定長ベクトルに変換し、
生成部が、前記入力変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを生成し、
補正部が、前記入力変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成し、
出力部が、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力することを含み、
前記出力部が出力した単語を前記入力変換部の入力として、前記入力変換部、前記生成部、前記補正部、及び前記出力部での各処理を繰り返すことにより生成した単語を並べた単語列を候補文として生成するものであり、
前記生成部は、前記入力変換部で得た第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルである、前記単語列中の当該第１の固定長ベクトルに対応する単語の直前の単語までの単語列に対応する第２の固定長ベクトルとから、前記単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成する
文生成方法。
【請求項５】
コンピュータを、請求項１記載の文生成装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文生成装置、文生成学習装置、文生成方法、及びプログラムに関し、特に、自然言語文を自動的に生成するための文生成装置、文生成学習装置、文生成方法、及びプログラムに関する。
【背景技術】
【０００２】
自然言語で書かれた文書を計算機が翻訳、あるいは要約するためには、自然言語文の解析だけではなく、計算機によって文を生成する技術がなくてはならない。また、機械と人とが対話を行う際にも、自然言語文を自動的に生成する必要がある。
【０００３】
計算機による文の生成は、最初の単語を入力とし、次に出現する単語の確率を計算し、単語を生成する、その後、出力した単語を入力として、さらに次に出現する単語の確率を計算する、という処理を繰り返すことによって行う。
【０００４】
近年、リカレントニューラルネットワーク（ＲＮＮ）を用い、過去の全単語列を元に、単語の出現確率を計算する手法が主流になってきている（非特許文献１）。
【０００５】
この手法では、単語を各次元の要素が実数値の、固定長のベクトル（固定長ベクトルと呼ぶ）で表現し、単語間の組み合わせをベクトル同士の演算で表現する。これにより、似た意味の単語が似たベクトルとなり、組み合わせ計算におけるスパース性が減少するという利点がある。
【０００６】
具体的には、ＲＮＮは、まず、最初の単語を入力として固定長ベクトルを計算し、次の単語を出力する。次に、出力した単語を入力として固定長ベクトルを計算する、という処理を繰り返すことにより、文を生成する(図８)。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Wojciech Zaremba, Ilya Sutskever, and Oriol Vinyals. Recurrent Neural Network Regularization. Proceedings of the 2nd International Conference on Learning Representations (ICLR 2014), 2014.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＲＮＮを用いた文生成システムは、過去に出力した全単語を考慮できるため、長期の依存関係を扱うことができる。一方で、似た意味の単語に同程度の確率を付与してしまうため、文法的に誤りを含む文や可読性の低い文を生成してしまう、という問題があった（図９）。
【０００９】
本発明は、この課題を鑑みてなされたものであり、文法的誤りが少なく、かつ、可読性の高い文を生成することができる文生成装置、文生成方法、及びプログラムを提供することを目的とする。
【００１０】
また、本発明は、文法的誤りが少なく、かつ、可読性の高い文を生成するためのニューラルネットワークを学習することができる文生成学習装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明に係る文生成装置は、入力された単語を第１の固定長ベクトルに変換する入力変換部と、前記入力変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを生成する生成部と、前記入力変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成する補正部と、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する出力部とを含み、前記出力部が出力した単語を前記入力変換部の入力として、前記入力変換部、前記生成部、前記補正部、及び前記出力部での各処理を繰り返すことにより生成した単語を並べた単語列を候補文として生成するものであり、前記生成部は、前記入力変換部で得た第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルである、前記単語列中の当該第１の固定長ベクトルに対応する単語の直前の単語までの単語列に対応する第２の固定長ベクトルとから、前記単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成するように構成される。
【００１２】
また、本発明に係る文生成方法は、入力変換部が、入力された単語を第１の固定長ベクトルに変換し、生成部が、前記入力変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを生成し、補正部が、前記入力変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成し、出力部が、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力することを含み、
前記出力部が出力した単語を前記入力変換部の入力として、前記入力変換部、前記生成部、前記補正部、及び前記出力部での各処理を繰り返すことにより生成した単語を並べた単語列を候補文として生成するものであり、前記生成部は、前記入力変換部で得た第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルである、前記単語列中の当該第１の固定長ベクトルに対応する単語の直前の単語までの単語列に対応する第２の固定長ベクトルとから、前記単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成する。
【００１３】
本発明に係る文生成装置及び文生成方法によれば、入力変換部が、入力された単語を第１の固定長ベクトルに変換し、生成部が、前記入力変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを生成し、補正部が、前記入力変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成し、出力部が、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する。
【００１４】
そして、前記出力部が出力した単語を前記入力変換部の入力として、前記入力変換部、前記生成部、前記補正部、及び前記出力部での各処理を繰り返すことにより生成した単語を並べた単語列を候補文として生成するものであり、前記生成部が、前記入力変換部で得た第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルである、前記単語列中の当該第１の固定長ベクトルに対応する単語の直前の単語までの単語列に対応する第２の固定長ベクトルとから、前記単語列中の当該第１の固定長ベクトルに対応する単語までの単語列に対応する第２の固定長ベクトルを生成する。
【００１５】
このように、第２の固定長ベクトルを補正するための補正用ベクトルを生成し、第２の固定長ベクトルと、補正用ベクトルとを用いて、単語を出力し、出力した単語を並べた単語列を候補文として生成することにより、文法的誤りが少なく、かつ、可読性の高い文を生成することができる。
【００１６】
また、本発明に係る文生成学習装置は、学習データとして予め用意された正解文の単語を第１の固定長ベクトルに変換する学習データ変換部と、前記学習データ変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークを用いて、第２の固定長ベクトルを生成する生成部と、前記学習データ変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成する補正部と、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する出力部と、前記出力部で得た単語が、前記正解文の単語の次の単語となるように、前記第２の固定長ベクトルを補正するためのニューラルネットワークを学習する学習部と、を含み、前記出力部が出力した単語を前記学習データ変換部の入力として、前記学習データ変換部、前記生成部、前記補正部、前記出力部、及び前記学習部での各処理を繰り返すように構成される。
【００１７】
本発明に係る文生成学習装置によれば、学習データ変換部が、学習データとして予め用意された正解文の単語を第１の固定長ベクトルに変換し、生成部が、前記学習データ変換部で得た前記第１の固定長ベクトルと、過去に生成された第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークを用いて、第２の固定長ベクトルを生成し、補正部が、前記学習データ変換部で得た前記第１の固定長ベクトルから、前記生成部で生成した前記第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、前記第２の固定長ベクトルを補正するための補正用ベクトルを生成する。
【００１８】
そして、出力部が、前記生成部で生成した第２の固定長ベクトルと、前記補正部で得た前記補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力し、前記出力部で得た単語が、前記正解文の単語の次の単語となるように、前記第２の固定長ベクトルを補正するためのニューラルネットワークを学習する学習部と、を含み、前記出力部が出力した単語を前記学習データ変換部の入力として、前記学習データ変換部、前記生成部、前記補正部、前記出力部、及び前記学習部での各処理を繰り返す。
【００１９】
このように、第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成し、第２の固定長ベクトルと、補正用ベクトルとから、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力し、出力した単語が、正解文の単語の次の単語となるように、第２の固定長ベクトルを補正するためのニューラルネットワークを学習することにより、文法的誤りが少なく、かつ、可読性の高い文を生成するための文生成装置を学習することができる。
【００２０】
また、本発明に係る文生成学習装置は、前記学習部は、前記出力部で得た単語が、前記正解文の単語の次の単語となるように、前記次の単語を予測するためのニューラルネットワーク、及び前記第２の固定長ベクトルを補正するためのニューラルネットワークを学習するようにすることができる。
【００２１】
本発明に係るプログラムは、コンピュータを、上記の文生成装置又は文生成学習装置の各部として機能させるためのプログラムである。
【発明の効果】
【００２２】
本発明の文生成装置、文生成方法、及びプログラムによれば、文法的誤りが少なく、かつ、可読性の高い文を生成することができる。
【００２３】
また、本発明の文生成学習装置及びプログラムによれば、文法的誤りが少なく、かつ、可読性の高い文を生成するためのニューラルネットワークを学習することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態に係る文生成装置の原理を示す図である。
【図２】本発明の実施の形態に係る文生成装置の構成の一例を示す概略図である。
【図３】本発明の実施の形態に係る各単語の出現確率を表すベクトルの例を表す図である。
【図４】本発明の実施の形態に係る生成された出力文の例を表す図である。
【図５】本発明の実施の形態に係る文生成装置の文生成処理ルーチンを示すフローチャートである。
【図６】本発明の実施の形態に係る文生成学習装置の構成の一例を示す概略図である。
【図７】本発明の実施の形態に係る文生成学習装置の学習処理ルーチンを示すフローチャートである。
【図８】従来の文生成手法の例を表す図である。
【図９】文法的に誤りを含む文が生成されてしまう例を表す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について図面を用いて説明する。
【００２６】
＜本発明の実施の形態に係る文生成装置の概要＞
上述の課題は、過去の全単語をひとつのベクトルで表現しており、各単語が過去のどの地点に出現したかを明示的に扱えず、長期の依存関係と、直近の単語との依存関係の区別ができないことに起因する。
【００２７】
本実施形態は、上記問題を解決するため、直近の単語との文法的なつながりの正確性を上げ、文全体での可読性を高めるものである。
【００２８】
本実施形態では、従来と同様（非特許文献１）、ＲＮＮを用いて、過去の全単語をひとつのベクトルで表現する。これに加え、入力単語に基づいてＲＮＮの出力した確率を補正する補正部を新たに構築する(図１)。
【００２９】
この補正部を用いて、入力単語との関係が文法的に誤りである単語の出現確率を下げる。すなわち、出力候補から誤った単語を除き、文法的に正しい単語を出力する。
【００３０】
このシステムを用いて単語を繰り返し生成し、最終的に、１文を出力する。ただし、文法的に誤りであるか否か（文法的な正しさ）の判定は、補正部を学習する際に用いる学習データに基づいて決定されるものとする。
【００３１】
この点、ネットワーク上での、入力と出力の距離を近づけるという手法は、下位の層の出力を１つ以上離れた上の層への入力とする、下記の参考文献１に近い。
【００３２】
［参考文献１］Deep Residual Learning for Image Recognition. Proceedings of the 29th IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2016), 2016.
【００３３】
しかしながら、参考文献１では、下位の層の出力と上位の層の出力を足し合わせて単語の出力確率を計算する、すなわち、全単語をひとつのベクトルで表現するため、各単語が過去のどの地点に出現したかを明示的に扱えないという問題は解決できない。
【００３４】
これに対し、本実施形態では、ＲＮＮを用いて計算した結果を補正部によって是正するという、二段階の計算を行うことで、直前の単語を陽に考慮することが可能となっている。
【００３５】
本実施形態により、直前の単語を明示的に考慮した単語生成が可能となる。これにより、直前の単語と、文法的に正しい関係にある単語を生成するようになり、最終的な出力として、文法的誤りの少ない、可読性の高い文を出力可能となる。
【００３６】
本実施形態は、翻訳や要約、対話システムなど、計算機による文生成が必要な、あらゆる場面に適用することが可能である。例えば、対話システムでは、システムが発話を生成する際に、本発明を用いて、誤りの少ない、より自然な発話を生成することが可能となる。
【００３７】
以下では、対話システムにおいて、あるユーザ発話（ユーザ発話文Ｘ）に対し、システムが応答を返すべき発話（システム発話文Ｙ）を生成するタスクを例にとって説明する。まず、学習済みのニューラルネットワークを用いてシステム発話の発話文を生成する文生成装置の実施例について説明し、その後、ニューラルネットワークを学習する文生成学習装置について説明する。
【００３８】
＜本発明の実施の形態に係る文生成装置の構成＞
本発明の実施の形態に係る文生成装置の構成について説明する。図２は、本発明の実施の形態に係る文生成装置の構成を示す概略図である。
【００３９】
本発明の実施の形態に係る文生成装置１０は、対話システムにおける文生成装置である。この文生成装置１０は、ＣＰＵと、ＲＡＭと、後述する文生成処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【００４０】
図２に示すように、文生成装置１０は、入力部１００と、入力変換部１１０と、生成部１２０と、ＲＮＮパラメタ記憶部１３０と、補正部１４０と、補正パラメタ記憶部１５０と、出力部１６０とを備えて構成される。
【００４１】
文生成装置１０は、入力された第２の固定長ベクトル、及び文の最初の単語から、当該単語に続く文を生成する。
【００４２】
文生成装置１０は、入力変換部１１０、生成部１２０、補正部１４０、及び出力部１６０による各処理を繰り返すことにより、最も確率の高い１文を生成する。
【００４３】
入力部１００は、既知のキーボード、記憶装置などの入力器により実現される。また、入力部１００は、インターネット等のネットワークを介して観測データを入力するネットワークインターフェースでも良い。
【００４４】
ＲＮＮパラメタ記憶部１３０及び補正パラメタ記憶部１５０は、それぞれニューラルネットワークの構造に対応したパラメタと、各パラメタの値を記憶する。各パラメタの値は、学習により更新される。
【００４５】
出力部１６０は、ディスプレイ、プリンタ、磁気ディスクなどで実装される。
【００４６】
入力部１００は、ユーザ発話文Ｘへの応答であるシステム発話文Ｙとして生成する文の最初の単語を入力として受け付ける。
【００４７】
例えば、生成する文の最初の単語として、返答する発話において文頭となる「Ｙｅｓ」や「Ｎｏ」などを入力として受け付ける。
【００４８】
なお、入力される、文の最初の単語は、ルールベースや分類器などで決定することとする。すなわち、その入力を元にして続く文を生成する際に、本実施形態に係る文生成装置１０を用いる。なお、文の最初の単語は、文の開始を示す「ｓｔａｒｔ」記号等でもよい。
【００４９】
入力変換部１１０は、単語を、当該単語を表す第１の固定長ベクトルに変換する。
【００５０】
具体的には、入力変換部１１０は、入力部１００により入力された文の最初の単語、又は出力部１６０から渡された単語を入力とし、入力された単語を固定長ベクトル
2019046188.tif 000003
（第１の固定長ベクトル）に変換する。
より具体的には、各単語にあらかじめ固定長ベクトルを割り振っておき、入力単語に対応する単語の固定長ベクトルを得る。この固定長ベクトルの次元数は任意の値Ｎとする。
【００５１】
そして、入力変換部１１０は、変換した固定長ベクトル
2019046188.tif 000004
を、生成部１２０及び補正部１４０へ渡す。
【００５２】
生成部１２０は、入力変換部１１０により単語を変換した第１の固定長ベクトルと、当該単語までの単語の系列、又はユーザ発話を表す第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、当該単語までの単語の系列を表す第２の固定長ベクトルを生成する。
【００５３】
具体的には、まず、生成部１２０は、当該単語までの単語の系列を表す固定長ベクトル
2019046188.tif 000005
（第２の固定長ベクトル）を生成する。
【００５４】
ここで、最初の単語を入力された際の
2019046188.tif 000006
、すなわち、
2019046188.tif 000007
は、任意の固定長ベクトルであり、本実施形態では、ユーザ発話文Ｘに対応した固定長ベクトルとするが、ゼロベクトル等でもよい。
【００５５】
また、生成部１２０は、最初の単語を入力された際に、文生成装置１０が予め保持している
2019046188.tif 000008
を入力とする。
【００５６】
ユーザ発話文Ｘに対応する固定長ベクトルは、システム発話文Ｙの第２の固定長ベクトルを生成するのと同様の手順により、ユーザ発話文Ｘを構成する単語を用いて予め生成したものとする。具体的には、入力変換部１１０及び生成部１２０と同様の処理を繰り返すことにより、ユーザ発話文Ｘに対応する固定長ベクトルを生成する。ただし、その際、入力変換部１１０は、出力部１６０から出力される単語の代わりに、ユーザ発話文Ｘを構成する単語を用いることとする。
【００５７】
次に、生成部１２０は、ＲＮＮパラメタ記憶部１３０から次の単語を予測するための予め学習されたＲＮＮのパラメタ
2019046188.tif 000009
、
2019046188.tif 000010
、及び
2019046188.tif 000011
を取得し、入力変換部１１０が変換した単語を表す第１の固定長ベクトル
2019046188.tif 000012
、及び第２の固定長ベクトル
2019046188.tif 000013
を入力として、ＲＮＮの計算を行う。ＲＮＮにより、最初の単語から、現在の単語（ｔ番目までの単語）までの単語列（系列）全体を表す第２の固定長ベクトル
2019046188.tif 000014
を得る。第２の固定長ベクトルは、入力変換部１１０で得る第１の固定長ベクトル
2019046188.tif 000015
と同じＮ次元とする。
【００５８】
また、
2019046188.tif 000016
はＮ×Ｎの次元数の行列、
2019046188.tif 000017
はＮ×Ｎの次元数の行列、及び
2019046188.tif 000018
は、Ｎ次元のベクトルである。
【００５９】
本実施形態では、ＲＮＮに関する制約はなく、長短期記憶メモリ（ＬＳＴＭ）など、任意のＲＮＮを利用可能である。ここでは、例として、エルマン型のＲＮＮによる計算について述べる。長さｔの単語列ｗ［１:ｔ］について、終端地点ｔの単語（ＲＮＮへの入力単語）を表す第１の固定長ベクトルを
2019046188.tif 000019
としたとき、単語列ｗ［１:ｔ］を表す第２の固定長ベクトル
2019046188.tif 000020
は以下の式（１）を再帰的に計算することで得られる。
【００６０】
【数１】
2019046188.tif 000021
【００６１】
ここで、ｔａｎｈは、固定長ベクトルの各次元にハイパボリックタンジェント関数を適用する関数である。
【００６２】
そして、生成部１２０は、生成した第２の固定長ベクトル
2019046188.tif 000022
を出力部１６０に渡す。
【００６３】
ＲＮＮパラメタ記憶部１３０は、次の単語を予測するための予め学習されたＲＮＮのパラメタを記憶している。
具体的には、ＲＮＮパラメタ記憶部１３０は、後述の文生成学習装置２０によって予め学習されたニューラルネットワークのパラメタ
2019046188.tif 000023
、
2019046188.tif 000024
、及び
2019046188.tif 000025
を記憶している。
【００６４】
また、次の単語を予測するためのニューラルネットワークであるＲＮＮの構造と、各パラメタの初期値は、学習前に任意の値に設定することができる。ただし、その際、入力層（入力変換部１１０への入力を受け取る部分に相当）と、出力層（出力部１６０で
2019046188.tif 000026
を出力する部分に相当）とは、学習データに出現する単語（生成に用いる単語）の語彙数に対応した次元数（Ｍ次元）に設定するものとする。
【００６５】
補正部１４０は、入力変換部１１０により得られた第１の固定長ベクトルから、第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成する。
【００６６】
具体的には、補正部１４０は、まず、補正パラメタ記憶部１５０から第１の固定長ベクトル
2019046188.tif 000027
を補正するための予め学習されたニューラルネットワークのパラメタ
2019046188.tif 000028
、
及び
2019046188.tif 000029
を取得する。
【００６７】
なお、第２の固定長ベクトルを補正するためのニューラルネットワークの構造は、ＲＮＮの構造に従って決定される。
【００６８】
また、
2019046188.tif 000030
は、Ｍ×Ｎ次元の行列、
2019046188.tif 000031
は、Ｍ次元のベクトルである。
【００６９】
次に、補正部１４０は、入力変換部１１０で得た第１の固定長ベクトル
2019046188.tif 000032
を入力とし、ＲＮＮの出力である第２の固定長ベクトルを補正する補正用ベクトルを以下の式（２）により計算する。
【００７０】
【数２】
2019046188.tif 000033
【００７１】
ここで、
2019046188.tif 000034
は固定長ベクトルの各次元にシグモイド関数を適用する関数である。つまり、補正用ベクトル
2019046188.tif 000035
は各次元の値が０から１までの実数値を取るベクトルであり、補正用ベクトル
2019046188.tif 000036
の各次元は、学習データに出現する単語に対応する。
【００７２】
すなわち、補正部１４０は、入力変換部１１０で得た単語を表す第１の固定長ベクトル
2019046188.tif 000037
を入力とする、順伝播型のニューラルネットワークとする。ただし、ＲＮＮや、ＣＮＮ等、他のニューラルネットワークでもよい。
【００７３】
そして、補正部１４０は、生成した補正用ベクトル
2019046188.tif 000038
を出力部１６０に渡す。
【００７４】
補正パラメタ記憶部１５０は、第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークのパラメタを記憶している。
【００７５】
具体的には、第１の固定長ベクトル
2019046188.tif 000039
を入力とし、第２の固定長ベクトルを補正するための、後述の文生成学習装置２０によって予め学習されたニューラルネットワークのパラメタ
2019046188.tif 000040
、
及び
2019046188.tif 000041
を記憶している。
【００７６】
出力部１６０は、第２の固定長ベクトルと、補正用ベクトルとに基づいて、第２の固定長ベクトルを補正した上で、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する。
【００７７】
具体的には、出力部１６０は、生成部１２０から取得したＲＮＮの出力である第２の固定長ベクトル
2019046188.tif 000042
と、補正部１４０から取得した補正用ベクトル
2019046188.tif 000043
とを用い、各単語が生成される確率を示した確率分布
2019046188.tif 000044
を以下の式（３）で計算する。
【００７８】
【数３】
2019046188.tif 000045
【００７９】
ここで、
2019046188.tif 000046
は、ＲＮＮの出力した第２の固定長ベクトル
2019046188.tif 000047
から、ＲＮＮのパラメタである行列
2019046188.tif 000048
とベクトル
2019046188.tif 000049
によって変換した、各次元が学習データに出現する単語に対応するベクトル、
2019046188.tif 000050
は、ベクトルの次元同士の積を計算する演算子、ｓｏｆｔｍａｘ（・）は、与えられたベクトルの各次元の値を０から１までの値に変換するソフトマックス関数である。
【００８０】
また、
2019046188.tif 000051
は、Ｍ×Ｎの次元数である行列、
2019046188.tif 000052
は、Ｍ次元のベクトルである。
【００８１】
すなわち、本実施形態では、ＲＮＮの出力である第２の固定長ベクトル
2019046188.tif 000053
と、補正部１４０で生成した補正用ベクトル
2019046188.tif 000054
とに基づいて、各単語の出現確率を表すベクトル
2019046188.tif 000055
を計算する。
【００８２】
そして、出力部１６０は、各単語の出現確率を表すベクトル
2019046188.tif 000056
に基づいて、最も確率の高い次元に対応する単語をｔ＋１番目の出力単語として得る(図３)。
【００８３】
そして、出力部１６０は、出力単語が文末を表す記号（終了記号）でなければ、出力単語を次の単語として、入力変換部１１０に渡す。
【００８４】
一方、出力部１６０は、出力単語が終了記号であれば、出力部１６０が順次出力した単語を用いて、文を生成する。
【００８５】
具体的には、出力部１６０は、最初の入力単語とこれまでに出力部１６０が出力した単語列（ｗ１とｗ［２：ｔ＋１］）を用いて、システム発話文Ｙを生成する。
【００８６】
図４に、Ｙｅｓを文の最初の単語として入力した場合の、生成された出力文の例を示す。
【００８７】
なお、出力部１６０では、毎回の出力において、確率の最も高い単語を選び、文を生成するだけでなく、確率の高い単語をいくつか最終出力の候補として出力することも可能である。
【００８８】
この場合、候補単語の数を予め定めておくか、確率の高さに閾値を設ける等して、最終出力となる候補単語を複数生成し、複数の文を生成するようにしてもよい。また、出力部１６０は、生成された複数の文から、確率の高い複数の文を最終出力として出力するようにしてもよい。
【００８９】
また、対話システムにおいては、前の対話と矛盾しないかを選択するルールや分類器を別途用意し、生成された複数の文から１文を選択するようにしてもよい。
【００９０】
そして、出力部１６０は、生成した文を出力部１６０に渡す。
【００９１】
出力部１６０は、出力部１６０が生成した文を出力する。
【００９２】
＜本発明の実施の形態に係る文生成装置の作用＞
図５は、本発明の実施の形態に係る文生成処理ルーチンを示すフローチャートである。
【００９３】
入力部１００にユーザ発話文Ｘへの応答であるシステム発話文Ｙとして生成する文の最初の単語が入力されると、文生成装置１０において、図５に示す文生成処理ルーチンが実行される。
【００９４】
まず、ステップＳ１００において、入力変換部１１０は、入力された最初の単語、又は後述するステップＳ１４０で選択された単語を、単語を表す第１の固定長ベクトルに変換する。
【００９５】
次に、ステップＳ１１０において、生成部１２０は、上記ステップＳ１００で単語を変換した第１の固定長ベクトルと、当該単語までの単語の系列を表す第２の固定長ベクトル、又はユーザ発話文Ｘを表す第２の固定長ベクトルとから、次の単語を予測するための予め学習されたニューラルネットワークを用いて、当該単語までの単語の系列を表す第２の固定長ベクトルを生成する。
【００９６】
ステップＳ１２０において、補正部１４０は、上記ステップＳ１００で得られた第１の固定長ベクトルから、第２の固定長ベクトルを補正するための予め学習されたニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成する。
【００９７】
ステップＳ１３０において、出力部１６０は、上記ステップＳ１１０で得られた第２の固定長ベクトルと、上記ステップＳ１２０で得られた補正用ベクトルとに基づいて、第２の固定長ベクトルを補正した上で、各単語の出現確率を表すベクトルを計算する。
【００９８】
ステップＳ１４０において、出力部１６０は、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する。
【００９９】
ステップＳ１５０において、出力部１６０は、上記ステップＳ１４０で選択された単語が、終了記号か否かを判断する。
【０１００】
選択された単語が終了記号でない場合（ステップＳ１５０のＮＯ）、上記ステップＳ１００に戻り、選択された単語を入力変換部１１０に入力して、入力変換部１１０による変換、生成部１２０による生成、補正部１４０による生成、及び出力部１６０による出力（ステップＳ１００〜ステップＳ１４０）を繰り返す。
【０１０１】
一方、選択された単語が終了記号である場合（ステップＳ１５０のＹＥＳ）、ステップＳ１６０において、出力部１６０は、上記ステップＳ１４０で選択された各単語を用いて文を生成し、出力部１６０が、当該生成された文を出力して、文生成処理ルーチンを終了する。
【０１０２】
以上説明したように、本実施形態に係る文生成装置によれば、第２の固定長ベクトルを補正するための補正用ベクトルを生成し、第２の固定長ベクトルと、補正用ベクトルとに基づいて、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力することにより、文法的誤りが少なく、かつ、可読性の高い文を生成することができる。
【０１０３】
＜本発明の実施の形態に係る文生成学習装置の概要＞
次に、本発明の実施の形態に係る文生成装置の概要について説明する。
【０１０４】
ＲＮＮと補正部内のパラメタは、タスクに応じた学習データを用いて決定される。
【０１０５】
例えば、対話システムにおいては、英語のみや日本語のみのような、単一の言語で生成された対話履歴を学習データとして用いる。なお、新聞などの文書データを学習データとして用いてもよい。ＲＮＮと補正部内のパラメタ学習には同一のデータを用いる。
【０１０６】
学習後、パラメタは固定される。このパラメタが文生成の精度を決定する。
【０１０７】
ＲＮＮと補正部内のパラメタは同時に学習することも、一方のみを学習することも可能である。例えば、一方を学習済みの値で固定し、もう一方をさらに学習することも可能である。
【０１０８】
パラメタは、学習データ中の文を生成できるように学習する。
【０１０９】
＜本発明の実施の形態に係る文生成学習装置の構成＞
次に、本発明の実施の形態に係る文生成装置の構成について説明する。図６は、本発明の実施の形態に係る文生成学習装置の構成を示す概略図である。
【０１１０】
文生成学習装置２０は、入力された学習データ３０から、ニューラルネットワークにより出力される各単語の出現確率を表すベクトルにおいて、次の単語に対応する正解文の単語の確率が高くなるように、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第２の固定長ベクトルを補正するためのニューラルネットワークを学習する。
【０１１１】
文生成学習装置２０は、ＣＰＵと、ＲＡＭと、後述する文生成学習処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【０１１２】
図６に示すように、文生成学習装置２０は、入力部２００と、学習データ変換部２１０と、生成部２２０と、ＲＮＮパラメタ記憶部２３０と、補正部２４０と、補正パラメタ記憶部２５０と、出力部２６０と、学習部２７０とを含んで構成される。
【０１１３】
文生成学習装置２０は、学習データ変換部２１０、生成部２２０、補正部２４０、出力部２６０、及び学習部２７０による各処理を繰り返すことにより、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第２の固定長ベクトルを補正するためのニューラルネットワークを学習する。
【０１１４】
入力部２００は、既知のキーボード、記憶装置などの入力器により実現される。また、入力部２００は、インターネット等のネットワークを介して観測データを入力するネットワークインターフェースでも良い。
【０１１５】
入力部２００は、学習データ３０の入力を受け付ける。
【０１１６】
ここで、学習データ３０は、ユーザ発話文と、当該ユーザ発話文に対するシステム発話文（正解文）の対を、少なくとも１組以上含んで構成される。ただし、前記学習データは、実際にユーザまたはシステムが発話したものである必要はなく、２人のユーザ間（またはシステム間）の対話における１人の発話をユーザ発話文とし、もう１人の発話をシステム発話文として用いてもよい。
【０１１７】
学習データ変換部２１０は、学習データとして予め用意された各文の単語を、単語を表す第１の固定長ベクトルに変換する。
【０１１８】
具体的には、学習データ変換部２１０は、まず、学習データのユーザ発話文の最初の単語を入力として、最初の単語を第１の固定長ベクトルに変換する。
【０１１９】
また、学習データ変換部２１０は、学習部２７０から現在の単語の処理が終了した旨の通知を受けると、正解文の次の単語を入力として、文生成装置１０における入力変換部１１０と同様に、次の単語を第１の固定長ベクトルに変換する。
【０１２０】
そして、学習データ変換部２１０は、変換した第１の固定長ベクトル
2019046188.tif 000057
を、生成部２２０及び補正部２４０へ渡す。
【０１２１】
また、学習データ変換部２１０は、学習データのシステム発話文の各単語を入力として、同様に、第１の固定長ベクトルに変換する。
【０１２２】
生成部２２０は、学習データ変換部２１０により単語を変換した第１の固定長ベクトルと、当該単語までの単語の系列を表す第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークであるＲＮＮを用いて、当該単語の次の単語までの単語の系列を表す第２の固定長ベクトルを生成する。
【０１２３】
具体的には、まず、生成部２２０は、文生成装置１０における生成部１２０と同様に、当該単語までの単語の系列を表す第２の固定長ベクトル
2019046188.tif 000058
を入力とする。
【０１２４】
また、生成部２２０は、最初の単語を入力された際には、文生成学習装置２０が予め保持している
2019046188.tif 000059
を入力とする。
【０１２５】
次に、生成部２２０は、ＲＮＮパラメタ記憶部２３０から次の単語を予測するためのＲＮＮのパラメタ
2019046188.tif 000060
、
2019046188.tif 000061
、及び
2019046188.tif 000062
を取得し、学習データ変換部２１０が変換した第１の固定長ベクトル
2019046188.tif 000063
、及び第２の固定長ベクトル
2019046188.tif 000064
を入力として、ＲＮＮの計算を行う。ＲＮＮにより、最初の単語から、次の単語（ｔ番目の単語）までの単語列（系列）全体を表す第２の固定長ベクトル
2019046188.tif 000065
を上述の式（１）を用いて計算して得る。
【０１２６】
そして、生成部２２０は、生成した第２の固定長ベクトル
2019046188.tif 000066
を出力部２６０に渡す。
【０１２７】
ＲＮＮパラメタ記憶部２３０は、次の単語を予測するためのＲＮＮのパラメタ
2019046188.tif 000067
と、
2019046188.tif 000068
と、
2019046188.tif 000069
とを記憶している。
【０１２８】
補正部２４０は、学習データ変換部により得られた第１の固定長ベクトルから、第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成する。
【０１２９】
具体的には、補正部２４０は、まず、補正パラメタ記憶部２５０から第１の固定長ベクトル
2019046188.tif 000070
を補正するためのニューラルネットワークのパラメタ
2019046188.tif 000071
、
及び
2019046188.tif 000072
を取得する。
【０１３０】
次に、補正部２４０は、文生成装置１０における補正部１４０と同様に、学習データ変換部２１０で得た第１の固定長ベクトル
2019046188.tif 000073
を入力とし、ＲＮＮの出力である第２の固定長ベクトルを補正する補正用ベクトルを上述の式（２）により計算する。
【０１３１】
そして、補正部２４０は、生成した補正用ベクトル
2019046188.tif 000074
を出力部２６０に渡す。
【０１３２】
補正パラメタ記憶部２５０は、第２の固定長ベクトルを補正するためのニューラルネットワークのパラメタ
2019046188.tif 000075
と、
2019046188.tif 000076
とを記憶している。
【０１３３】
出力部２６０は、第２の固定長ベクトルと、補正用ベクトルとに基づいて、第２の固定長ベクトルを補正した上で、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力する。
【０１３４】
具体的には、出力部２６０は、文生成装置１０における出力部１６０と同様に、生成部２２０から取得したＲＮＮの出力である第２の固定長ベクトル
2019046188.tif 000077
と、補正部２４０で生成した補正用ベクトル
2019046188.tif 000078
とに基づいて、各単語の出現確率を表すベクトル
2019046188.tif 000079
を、上述の式（３）により計算する。
【０１３５】
そして、出力部１６０は、各単語の出現確率を表すベクトル
2019046188.tif 000080
を学習部２７０に渡す。
【０１３６】
学習部２７０は、現在の単語がユーザ発話文に含まれるものであった場合、学習データ変換部２１０に、現在の単語の処理が終了した旨を通知する。現在の単語が、正解文であるシステム発話文に含まれるものであった場合、出力部１６０により計算された各単語の出現確率を表すベクトルにおいて、次の単語に対応する正解文の単語の確率が高くなるように、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第２の固定長ベクトルを補正するためのニューラルネットワークを学習する。
【０１３７】
具体的には、学習部２７０は、各単語の出現確率を表すベクトル
2019046188.tif 000081
について、学習データの正解文中で次に出現している単語の確率が高くなるよう、誤差逆伝播を用いて、ＲＮＮ、及び第１の固定長ベクトル
2019046188.tif 000082
を補正するためのニューラルネットワークを学習する。
【０１３８】
そして、学習部２７０は、ＲＮＮパラメタ記憶部２３０に記憶されている、次の単語を予測するためのＲＮＮのパラメタ
2019046188.tif 000083
と、
2019046188.tif 000084
と、
2019046188.tif 000085
と、
2019046188.tif 000086
と、
2019046188.tif 000087
と、補正パラメタ記憶部２５０に記憶されている、第１の固定長ベクトル
2019046188.tif 000088
を補正するためのニューラルネットワークのパラメタ
2019046188.tif 000089
と、
2019046188.tif 000090
とを更新する。
【０１３９】
そして、学習部２７０は、学習データ変換部２１０に、現在の単語の処理が終了した旨を通知する。
【０１４０】
学習データ変換部２１０は、次の単語である２単語目を入力とする。また、上述したように、学習データ変換部２１０による変換、生成部２２０による生成、補正部２４０による生成、出力部２６０による出力、及び学習部２７０による学習を繰り返すことにより、正解文であるシステム発話文の各単語について、当該単語の出力確率が高くなるように、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第１の固定長ベクトルを補正するためのニューラルネットワークを学習し、各パラメタを更新する。
【０１４１】
また、学習データの、ユーザ発話文とシステム発話文とからなる１組を用いた学習が終わった時点で、第２の固定長ベクトル
2019046188.tif 000091
をゼロベクトルにリセットし、次のユーザ発話文とシステム発話文とからなる１組を用いた学習を行う。
【０１４２】
また、学習データ３０中の最後のユーザ発話文とシステム発話文とからなる１組を用いた学習が終了した場合、最初の１組に戻り、再び学習を行う。そして、学習データ３０中の各組の生成確率が十分高くなるまで、この手続きを繰り返し、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第１の固定長ベクトルを補正するためのニューラルネットワークのパラメタを更新する。
【０１４３】
＜本発明の実施の形態に係る文生成学習装置の作用＞
図７は、本発明の実施の形態に係る文生成学習処理ルーチンを示すフローチャートである。
【０１４４】
入力部２００に学習データが入力されると、文生成学習装置２０において、図７に示す文生成学習処理ルーチンが実行される。
【０１４５】
まず、ステップＳ１７０において、学習データ変換部２１０は、学習データのユーザ発話文の単語を、単語を表す第１の固定長ベクトルに変換する。
【０１４６】
次に、ステップＳ１８０において、生成部２２０は、上記ステップＳ１７０で単語を変換した第１の固定長ベクトルと、初期化された第２の固定長ベクトル、又はユーザ発話文の当該単語までの単語の系列を表す第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークであるＲＮＮを用いて、当該単語の次の単語までの単語の系列を表す第２の固定長ベクトルを生成する。
【０１４７】
ステップＳ１９０において、ユーザ発話文の全ての単語について上記ステップＳ１７０〜ステップＳ１８０の処理を行ったか否かを判定し、上記ステップＳ１７０〜ステップＳ１８０の処理を行っていない単語が存在する場合（ステップＳ１９０のＮＯ）には、上記ステップＳ１７０へ戻り、当該単語について第１の固定長ベクトルに変換する。
【０１４８】
一方、ユーザ発話文の全ての単語について上記ステップＳ１７０〜ステップＳ１８０の処理を行った場合（ステップＳ１９０のＹＥＳ）には、ステップＳ２００へ移行する。
【０１４９】
ステップＳ２００において、学習データ変換部２１０は、学習データとして予め用意された正解文の単語を、単語を表す第１の固定長ベクトルに変換する。
【０１５０】
ステップＳ２１０において、生成部２２０は、上記ステップＳ２００で単語を変換した第１の固定長ベクトルと、学習データに含まれる当該正解文と組とされた第２の固定長ベクトル、又は正解文の当該単語までの単語の系列を表す第２の固定長ベクトルとから、次の単語を予測するためのニューラルネットワークであるＲＮＮを用いて、当該単語の次の単語までの単語の系列を表す第２の固定長ベクトルを生成する。
【０１５１】
ステップＳ２２０において、補正部２４０は、上記ステップＳ２００で得られた第１の固定長ベクトルから、第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成する。
【０１５２】
ステップＳ２３０において、出力部２６０は、上記ステップＳ２１０で得られた第２の固定長ベクトルと、上記ステップＳ２２０で得られた補正用ベクトルとに基づいて、第２の固定長ベクトルを補正した上で、各単語の出現確率を表すベクトルを計算する。
【０１５３】
ステップＳ２４０において、学習部２７０は、上記ステップＳ２３０で計算された各単語の出現確率を表すベクトルにおいて、次の単語に対応する正解文の単語の確率が高くなるように、次の単語を予測するためのニューラルネットワークであるＲＮＮ、及び第２の固定長ベクトルを補正するためのニューラルネットワークを学習する。
【０１５４】
ステップＳ２５０において、正解文の全ての単語について上記ステップＳ２００〜ステップＳ２４０の処理を行ったか否かを判定し、上記ステップＳ２００〜ステップＳ２４０の処理を行っていない単語が存在する場合（ステップＳ２５０のＮＯ）には、上記ステップＳ２００へ戻り、当該単語について第１の固定長ベクトルに変換する。
【０１５５】
一方、正解文の全ての単語について上記ステップＳ２００〜ステップＳ２４０の処理を行った場合（ステップＳ２５０のＹＥＳ）には、ステップＳ２６０へ移行する。
【０１５６】
ステップＳ２６０では、全ての学習データについて、上記ステップＳ１７０〜ステップＳ２５０の処理を行ったか否かを判定し、上記ステップＳ２００〜ステップＳ２５０の処理を行っていない学習データが存在する場合（ステップＳ２６０のＮＯ）には、上記ステップＳ１７０へ戻り、当該学習データのユーザ発話文の最初の単語について第１の固定長ベクトルに変換する。
【０１５７】
一方、全ての学習データについて上記ステップＳ１７０〜ステップＳ２５０の処理を行った場合（ステップＳ２６０のＹＥＳ）には、ステップＳ２７０へ移行する。
【０１５８】
ステップＳ２７０において、学習部２７０は、学習が収束したか否かを判定する。具体的には、学習データ３０中の各正解文の生成確率が十分高くなったか否かを判断し、学習データ３０中の各正解文の生成確率が十分高くなったと判断された場合には、学習が収束したと判定し、学習データ３０中の各正解文の生成確率が十分高くなっていないと判断された場合には、学習が収束していないと判定する。
【０１５９】
学習が収束していない場合（ステップＳ２７０のＮＯ）、上記ステップＳ１７０へ戻り、最初の学習データのユーザ発話文の最初の単語について第１の固定長ベクトルに変換する。
【０１６０】
一方、学習が収束していた場合（ステップＳ２７０のＹＥＳ）、文生成学習処理ルーチンを終了する。
【０１６１】
以上説明したように、本実施形態に係る文生成学習装置によれば、第２の固定長ベクトルを補正するためのニューラルネットワークを用いて、第２の固定長ベクトルを補正するための補正用ベクトルを生成し、第２の固定長ベクトルと、補正用ベクトルとに基づいて、各単語の出現確率を表すベクトルを計算し、各単語の出現確率を表すベクトルに応じて選択される単語を、次の単語として出力し、次の単語に対応する前記正解文の単語の確率が高くなるように、第２の固定長ベクトルを補正するためのニューラルネットワークを学習することにより、文法的誤りが少なく、かつ、可読性の高い文を生成するための文生成装置を学習することができる。
【０１６２】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０１６３】
本実施形態では、対話システムにおける例を用いて説明したが、翻訳や要約など、計算機による文生成が必要な、あらゆる場面に適用することが可能である。この場合には、翻訳したい文や要約したい文書を表す第２の固定長ベクトルと、最初の単語とを入力とすればよい。また、入力される第２の固定長ベクトルが、ゼロベクトル（各次元の値がゼロのベクトル）であってもよい。
【０１６４】
また、本実施形態では、文生成学習装置はＲＮＮと補正部内のパラメタを同時に学習する場合について説明したが、一方のみを学習することも可能である。例えば、一方を学習済みのパラメタで固定し、もう一方をさらに学習することも可能である。
【０１６５】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【０１６６】
１０   文生成装置
２０   文生成学習装置
３０   学習データ
１００ 入力部
１１０ 入力変換部
１２０ 生成部
１３０ パラメタ記憶部
１４０ 補正部
１５０ 補正パラメタ記憶部
１６０ 出力部
２００ 入力部
２１０ 学習データ変換部
２２０ 生成部
２３０ パラメタ記憶部
２４０ 補正部
２５０ 補正パラメタ記憶部
２６０ 出力部
２７０ 学習部
【図１】
2019046188.tif 000092
【図２】
2019046188.tif 000093
【図３】
2019046188.tif 000094
【図４】
2019046188.tif 000095
【図５】
2019046188.tif 000096
【図６】
2019046188.tif 000097
【図７】
2019046188.tif 000098
【図８】
2019046188.tif 000099
【図９】
2019046188.tif 000100