【新規性喪失の例外の表示】特許法第30条第2項適用 平成29年3月6日に言語処理学会第23回年次大会のウェブサイトに予稿を掲載 平成29年3月16日に言語処理学会第23回年次大会にて口頭発表 平成29年3月6日以降に「the 55th Annual Meeting of the Association for Computational Linguistics」のウェブサイトにproceedingを掲載 平成29年7月31日に「the 55th Annual Meeting of the Association for Computational Linguistics」にてポスター発表
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成27年度、国立研究開発法人新エネルギー・産業技術総合開発機構「次世代人工知能・ロボット中核技術開発/次世代人工知能技術分野/人間と相互理解できる次世代人工知能技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【文献】
青木 花純、小林 一郎,言語モデルを用いた株価の動向を記述するテキスト生成への取組み,言語処理学会第21回年次大会 発表論文集 [online],日本,言語処理学会,2015年 3月 9日,pp.1000-1003
【文献】
村上 聡一朗 外3名,数値予報マップからの天気予報コメントの自動生成,言語処理学会第23回年次大会 発表論文集 [online],日本,言語処理学会,2017年 3月 6日,pp.1121-1124
【文献】
青木 花純、小林 一郎,時系列データの類似度に基づき重み付けされた言語モデルを用いた文生成,言語処理学会第22回年次大会 発表論文集 [online],日本,言語処理学会,2016年 2月29日,pp.28-30
(58)【調査した分野】(Int.Cl.,DB名)
前記時系列数値データは、第1間隔で時間の経過と対応付けられた数列を含む第1時系列数値データと、前記第1間隔より長い第2間隔で時間の経過と対応付けられた数列を含む第2時系列数値データとを含む、
請求項1又は2に記載のテキスト生成装置。
前記生成部は、前記時系列数値データを1又は複数の方法で変換して得られる、前記1又は複数の方法に一対一に対応する1又は複数の数値データを、前記言語モデルに入力する、
請求項1から3のいずれか一項に記載のテキスト生成装置。
ハードウェアプロセッサ及びメモリを備えるコンピュータによって、時間の経過と対応付けられた数列を含む時系列数値データの変動を説明するテキストデータを生成するテキスト生成方法であって、
前記テキストデータのうち前記時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータと前記時系列数値データとを学習用データとして、前記時系列数値データが入力された場合に、前記置換テキストデータを出力するように言語モデルを学習させることと、
学習された前記言語モデルに新たな時系列数値データを入力し、前記言語モデルの出力によって前記新たな時系列数値データを説明する新たな置換テキストデータを生成することと、
前記新たな置換テキストデータに含まれる前記所定の文字列を、前記所定の規則で前記新たな時系列数値データに関係する数値に置き換えることと、
を実行するテキスト生成方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ニューラルネットワークを用いた言語モデルは、大量のテキストデータを学習用データとして、学習用データに表れる単語の統計的特徴に基づいてテキストを生成するように学習されることがある。
【0006】
しかしながら、時間の経過とともに変化する数値の列を含む時系列数値データ(例えば株価等)の変動を説明するテキストを生成する場合、学習用データは時系列数値データの引用や変化量に関する説明(例えば、株価であれば、始値、終値、上げ幅等)を含むことがあり、その説明に関連付けられる数値が様々に変化するため、それぞれの数値が統計的に稀にしか現れない単語となってしまう。そのため、数値に関する記載を正しく再現するように言語モデルを学習させることが難しく、時系列数値データの変動を説明するテキストを生成することが難しかった。
【0007】
そこで、本発明は、時系列数値データの変動を説明するテキストを生成するテキスト生成装置、テキスト生成方法及びテキスト生成プログラムを提供する。
【課題を解決するための手段】
【0008】
本発明の一態様に係るテキスト生成装置は、時間の経過と対応付けられた数列を含む時系列数値データの変動を説明するテキストデータを生成するテキスト生成装置であって、テキストデータのうち時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータと時系列数値データとを学習用データとして、時系列数値データが入力された場合に、置換テキストデータを出力するように言語モデルを学習させる学習部と、学習部により学習された言語モデルに新たな時系列数値データを入力し、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成する生成部と、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換える置換部と、を備える。
【0009】
この態様によれば、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成し、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換えることで、時系列数値データに関する数値を言語モデルによって直接出力する必要が無くなり、数値が様々に変化する場合であってもその数値に関する記載を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0010】
上記態様において、時系列数値データに関係する数値は、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差と、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を所定の桁で切り捨てた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差を所定の桁で切り捨てた数値と、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を所定の桁で切り上げた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差を所定の桁で切り上げた数値と、のうち少なくともいずれかを含み、所定の規則は、時系列数値データに関係する数値の種類と所定の文字列とを対応付ける規則であってもよい。
【0011】
この態様によれば、時系列数値データに関係する数値の種類と所定の文字列とを対応付けることで、時系列数値データの引用や時系列数値データを演算した結果得られる数値を含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0012】
上記態様において、時系列数値データは、第1間隔で時間の経過と対応付けられた数列を含む第1時系列数値データと、第1間隔より長い第2間隔で時間の経過と対応付けられた数列を含む第2時系列数値データとを含んでもよい。
【0013】
この態様によれば、異なる時間間隔で時間の経過と対応付けられた数列を含む時系列数値データを用いることで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0014】
上記態様において、生成部は、時系列数値データを、1又は複数の方法に一対一に対応する1又は複数の方法で変換して得られる1又は複数の数値データを、言語モデルに入力してもよい。
【0015】
この態様によれば、時系列数値データを1又は複数の方法で変換して得られる1又は複数の数値データを言語モデルに入力することで、生成されるテキストが時系列数値データの絶対値に依存してぶれることが防止される。
【0016】
上記態様において、1又は複数の数値データは、時系列数値データに含まれる数列を所定の数値範囲に正規化した数値データと、時系列数値データに含まれる数列の平均値及び標準偏差を用いて時系列数値データを標準化した数値データと、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を基準値として、時系列数値データに含まれる数列を基準値に関して相対化した数値データと、のうち少なくともいずれかを含んでもよい。
【0017】
この態様によれば、正規化した数値データ又は標準化した数値データを用いることで、生成されるテキストが時系列数値データの絶対値に依存してぶれることが防止され、相対化した数値データを用いることで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0018】
上記態様において、言語モデルは、第1間隔で時間の経過と対応付けられた数列を含む第1時系列数値データを1又は複数の方法で変換して得られる、1又は複数の方法に一対一に対応する1又は複数の第1数値データが入力される第1エンコーダと、第1間隔より長い第2間隔で時間の経過と対応付けられた数列を含む第2時系列数値データを1又は複数の方法で変換して得られる、1又は複数の方法に一対一に対応する1又は複数の第2数値データが入力される第2エンコーダと、第1エンコーダの出力及び第2エンコーダの出力を合成する合成部と、合成部により合成されたデータが入力され、置換テキストデータを出力するデコーダと、を含んでもよい。
【0019】
この態様によれば、異なる時間間隔で時間の経過と対応付けられた数列を含む時系列数値データをそれぞれ異なるエンコーダに入力し、出力を合成してデコーダに入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0020】
上記態様において、合成部は、第1エンコーダの出力、第2エンコーダの出力、1又は複数の第1数値データ及び1又は複数の第2数値データを合成してもよい。
【0021】
この態様によれば、デコーダに対して、エンコーダの出力のみならず、複数の数値データを入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0022】
上記態様において、デコーダには、合成部により合成されたデータ及び時系列数値データの時系列に関するデータが入力されてもよい。
【0023】
この態様によれば、デコーダに対して、合成部により合成されたデータのみならず、時系列数値データの時系列に関するデータを入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0024】
本発明の他の態様に係るテキスト生成方法は、ハードウェアプロセッサ及びメモリを備えるコンピュータによって、時間の経過と対応付けられた数列を含む時系列数値データの変動を説明するテキストデータを生成するテキスト生成方法であって、テキストデータのうち時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータと時系列数値データとを学習用データとして、時系列数値データが入力された場合に、置換テキストデータを出力するように言語モデルを学習させることと、学習された言語モデルに新たな時系列数値データを入力し、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成することと、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換えることと、を実行する。
【0025】
この態様によれば、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成し、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換えることで、時系列数値データに関係する数値を言語モデルによって直接出力する必要が無くなり、数値が様々に変化する場合であってもその数値に関する記載を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0026】
本発明の他の態様に係るテキスト生成プログラムは、時間の経過と対応付けられた数列を含む時系列数値データの変動を説明するテキストデータを生成するテキスト生成装置に備えられたコンピュータを、テキストデータのうち時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータと時系列数値データとを学習用データとして、時系列数値データが入力された場合に、置換テキストデータを出力するように言語モデルを学習させる学習部、学習部により学習された言語モデルに新たな時系列数値データを入力し、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成する生成部、及び新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換える置換部、として機能させる。
【0027】
この態様によれば、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成し、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換えることで、時系列数値データに関係する数値を言語モデルによって直接出力する必要が無くなり、数値が様々に変化する場合であってもその数値に関する記載を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【発明の効果】
【0028】
本発明によれば、時系列数値データの変動を説明するテキストを生成するテキスト生成装置、テキスト生成方法及びテキスト生成プログラムを提供することができる。
【発明を実施するための形態】
【0030】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0031】
図1は、本発明の実施形態に係るテキスト生成装置10のネットワーク構成を示す図である。本実施形態において、テキスト生成システム100は、時間の経過と対応付けられた数列を含む時系列数値データと、その時系列数値データの変動を説明するテキストデータとを含む初期データセットを記憶するデータベースDBと、入力された時系列数値データに応じて置換テキストデータを出力する言語モデル20と、データベースDBに記憶された初期データセットを用いて、言語モデル20によって時系列数値データの変動を正しく説明するテキストが生成されるように、言語モデル20を学習させ、新たな時系列数値データを取得した場合にその時系列数値データの変動を説明するテキストデータを生成するテキスト生成装置10と、を含む。本実施形態において、時系列数値データは、株価である。もっとも、時系列数値データは、時間の経過と対応付けられた数列を含むものであって、継続的に取得される数値データであればどのようなものであってもよく、例えば心電データや血圧データ等のバイタルデータであったり、気温や湿度等の天候データであったり、交通量や乗客数等の交通データであったりしてもよい。
【0032】
テキスト生成システム100は、通信ネットワークNに接続され、株価配信サーバ40から所定の時間間隔で株価を取得し、データベースDBに記憶したり、テキスト生成装置10に入力したりする。また、テキスト生成システム100は、通信ネットワークNを介して、生成したテキストデータをユーザ端末30に提供する。また、テキスト生成システム100は、ユーザ端末30からの指示に基づいて、データベースDBに記憶された初期データセットの追加や編集を行ったり、言語モデル20の学習を行ったりしてもよい。ここで、通信ネットワークNは、有線又は無線の通信網であり、例えばインターネットやLAN(Local Area Network)であってよい。テキスト生成システム100は、いわゆるクラウドコンピューティングの形で全部又は一部の構成要素がリモートコンピュータによって構成されてよいが、全部又は一部の構成要素がローカルコンピュータによって構成されてもよい。
【0033】
言語モデル20は、時系列数値データが入力された場合に、時系列数値データを説明するテキストデータのうち時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータを出力するモデルである。ここで、時系列数値データに関係する数値は、時系列数値データに含まれる数値の引用であったり、時系列数値データに含まれる数値を演算した数値であったりする。言語モデル20は、例えばニューラルネットワークを用いたモデルであってよく、いわゆるエンコーダ‐デコーダモデルであってよい。言語モデル20は、エンコーダとして、例えばMLP(Multi-Layer Perceptron)、CNN(Convolutional Neural Network)又はRNN(Recurrent Neural Network)を含んでよく、デコーダとしてRNNを含んでよい。言語モデル20は、入力される時系列数値データの種類によって異なるモデルであってよい。言語モデル20については、後に
図4を用いて詳細に説明する。
【0034】
図2は、本実施形態に係るテキスト生成装置10の物理構成を示す図である。テキスト生成装置10は、ハードウェアプロセッサに相当するCPU(Central Processing Unit)10aと、メモリに相当するRAM(Random Access Memory)10bと、メモリに相当するROM(Read Only Memory)10cと、通信部10dと、入力部10eと、表示部10fとを有する。これら各構成は、バスを介して相互にデータ送受信可能に接続される。
【0035】
CPU10aは、RAM10b又はROM10cに記憶されたプログラムの実行に関する制御やデータの演算、加工を行う制御部である。CPU10aは、言語モデル20を用いてテキストデータを生成するプログラム(テキスト生成プログラム)を実行する演算装置である。CPU10aは、入力部10eや通信部10dから種々の入力データを受け取り、入力データの演算結果を表示部10fに表示したり、RAM10bやROM10cに格納したりする。
【0036】
RAM10bは、データの書き換えが可能な記憶部であり、例えば半導体記憶素子で構成される。RAM10bは、CPU10aが実行するアプリケーション等のプログラムやデータを記憶する。
【0037】
ROM10cは、データの読み出しのみが可能な記憶部であり、例えば半導体記憶素子で構成される。ROM10cは、例えばファームウェア等のプログラムやデータを記憶する。
【0038】
通信部10dは、テキスト生成装置10を通信ネットワークNに接続する通信インタフェースである。
【0039】
入力部10eは、ユーザからデータの入力を受け付けるものであり、例えば、キーボードやマウス、タッチパネルで構成される。
【0040】
表示部10fは、CPU10aによる演算結果を視覚的に表示するものであり、例えばLCD(Liquid Crystal Display)により構成される。
【0041】
テキスト生成プログラムは、RAM10bやROM10c等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部10dにより接続される通信ネットワークNを介して提供されてもよい。テキスト生成装置10では、CPU10aがテキスト生成プログラムを実行することにより、次図を用いて説明する様々な機能が実現される。なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、テキスト生成装置10は、CPU10aとRAM10bやROM10cが一体化したLSI(Large-Scale Integration)を備えていてもよい。また、テキスト生成装置10は、GPU(Graphics Processing Unit)やFPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等の演算回路を備えてもよい。
【0042】
図3は、本実施形態に係るテキスト生成装置10の機能ブロックを示す図である。テキスト生成装置10は、学習部11、取得部12、生成部13、置換部14及び規則記憶部15を備える。
【0043】
学習部11は、時系列数値データの変動を説明するテキストデータのうち時系列数値データに関係する数値を所定の規則で所定の文字列に置き換えた置換テキストデータD1及び時系列数値データD2を学習用データとして、時系列数値データが入力された場合に、置換テキストデータを出力するように言語モデル20を学習させる。学習部11によって言語モデル20の学習に用いられる置換テキストデータD1及び時系列数値データD2は、データベースDBに初期データセットとして記憶されているものであってよい。
【0044】
ここで、時系列数値データに関係する数値は、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差と、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を所定の桁で切り捨てた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差を所定の桁で切り捨てた数値と、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を所定の桁で切り上げた数値と、時系列数値データに含まれる数列のうち異なる時点に対応付けられた数値の差を所定の桁で切り上げた数値と、のうち少なくともいずれかを含んでよい。また、数値の所定の桁での切り捨てや切り上げは、10の位、100の位、1000の位及び10000の位等、任意の位について行ってよい。また、所定の規則は、時系列数値データに関係する数値の種類と所定の文字列とを対応付ける規則であってよい。ここで、所定の文字列は、通常のテキストデータと区別可能な文字列であれば任意のものであってよく、例えば<price1>や<price2>等の所定の記号(本例の場合「<」と「>」)で先頭と末尾が示された文字列であってよい。
【0045】
また、時系列数値データは、第1間隔で時間の経過と対応付けられた数列を含む第1時系列数値データと、第1間隔より長い第2間隔で時間の経過と対応付けられた数列を含む第2時系列数値データとを含んでよい。本実施形態の場合、第1時系列数値データX
shortは、1営業日の寄り付きから大引けまでに5分間隔で取得された株価に関係する時系列数値データであり、第2時系列数値データX
longは、7営業日について営業日間隔で取得された株価の終値に関する時系列数値データである。すなわち、第1時系列数値データX
shortは、5分間隔で時間の経過と対応付けられた数列を含む時系列数値データであり、第2時系列数値データX
longは、1営業日間隔で時間の経過と対応付けられた数列を含む時系列数値データである。日本の東京証券取引所の場合、1営業日における売買立会い時間は5時間(300分)であり、5分間隔で取得された第1時系列数値データは、62個のデータを含む。これをX
short,i(i=1〜62)と表す。また、第2時系列数値データX
longは、7個のデータを含み、これをX
long,j(j=1〜7)と表す。
【0046】
取得部12は、株価配信サーバ40から、新たな時系列数値データを取得する。取得部12は、例えば5分間隔で、株価配信サーバ40から株価に関する新たな時系列数値データを取得してよい。
【0047】
生成部13は、学習部11により学習された言語モデル20に新たな時系列数値データを入力し、言語モデル20の出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成する。生成部13は、時系列数値データを1又は複数の方法で変換して得られる、1又は複数の方法に一対一に対応する1又は複数の数値データを、言語モデル20に入力してもよい。ここで、1又は複数の数値データは、時系列数値データに含まれる数列を所定の数値範囲に正規化した数値データと、時系列数値データに含まれる数列の平均値及び標準偏差を用いて時系列数値データを標準化した数値データと、時系列数値データに含まれる数列のうち所定の時点に対応付けられた数値を基準値として、時系列数値データに含まれる数列を基準値に関して相対化した数値データと、のうち少なくともいずれかを含んでよい。
【0048】
より具体的には、時系列数値データに含まれる数列X
i(i=1〜N)を所定の数値範囲に正規化した数値データX
norm,iは、X
norm,i=(2X
i−(X
max+X
min))/(X
max−X
min)によって定義される数値データであってよい。ここで、X
max=max
i(X
i)、X
min=min
i(X
i)である。この場合、正規化した数値データX
norm,iは、−1から1の数値範囲に正規化された数値データとなる。
【0049】
また、時系列数値データに含まれる数列X
i(i=1〜N)を標準化した数値データX
std,iは、X
std,i=(X
i−μ)/σによって定義される数値データであってよい。ここで、μ=E[X
i]、σ=(var[X
i])
1/2である。
【0050】
また、時系列数値データに含まれる数列X
i(i=1〜N)を基準値r
iに関して相対化した数値データX
move,iは、X
move,i=X
i−r
iによって定義される数値データであってよい。時系列数値データが株価である場合、基準値r
iは、前日の終値であってよい。すなわち、5分間隔で時間の経過と対応付けられた数列を含む第1時系列数値データX
shortについては、前日の終値をrとするとき、全てのiに対して(X
short,i−r)によって相対化した数値データを算出してよい。また。営業日間隔で時間の経過と対応付けられた数列を含む第2時系列数値データX
longについては、(X
long,j−X
long,j-1)によって相対化した数値データを算出してよい。
【0051】
正規化した数値データ又は標準化した数値データを用いることで、生成されるテキストが時系列数値データの絶対値に依存してぶれることが防止され、相対化した数値データを用いることで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0052】
置換部14は、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換える。置換部14は、規則記憶部15に記憶された所定の規則を参照して、新たな置換テキストデータに含まれる所定の文字列を、新たな時系列数値データに関係する数値に置き換える。置換部14は、例えば、<price1>という所定の文字列を、X
longの最後の値(X
long,7、前日の終値)とX
shortの最後の値(X
short,62、当日の終値)の差に置き換えたり、<price2>という所定の文字列を、X
longの最後の値(X
long,7、前日の終値)とX
shortの最後の値(X
short,62、当日の終値)の差を10の位で切り捨てた値に置き換えたりする。
【0053】
図4は、言語モデル20の構成を示す図である。言語モデル20は、第1間隔で時間の経過と対応付けられた数列を含む第1時系列数値データX
shortを第1前処理部21aによって1又は複数の方法で変換して得られる、1又は複数の方法に一対一に対応する1又は複数の第1数値データl
sが入力される第1エンコーダ22aと、第1間隔より長い第2間隔で時間の経過と対応付けられた数列を含む第2時系列数値データX
longを第2前処理部21bによって1又は複数の方法で変換して得られる、1又は複数の方法に一対一に対応する1又は複数の第2数値データl
lが入力される第2エンコーダ22bと、第1エンコーダ22aの出力h
s及び第2エンコーダ22bの出力h
lを合成する合成部23と、合成部23により合成されたデータmが入力され、置換テキストデータを出力するデコーダ24と、を含む。
【0054】
本例では、第1時系列数値データX
shortは、「12167.29」や「12278.83」等の数値を含む62次元のベクトルとして与えられる。また、第2時系列数値データX
longは、「12116.57」や「12120.94」等の数値を含む7次元のベクトルとして与えられる。第1前処理部21aは、入力された第1時系列数値データX
shortを3種類の方法で変換して、変換して得られた3種類のベクトルの直和によって第1数値データl
sを出力する。ここで、3種類の方法は、入力された第1時系列数値データX
shortを所定の数値範囲に正規化した数値データを算出することと、標準化した数値データを算出することと、基準値に関して相対化した数値データを算出することである。本例の場合、第1前処理部21aから出力される第1数値データl
sは、186次元のベクトルとなる。
【0055】
このように、異なる時間間隔で時間の経過と対応付けられた数列を含む時系列数値データを用いることで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。また、時系列数値データを1又は複数の方法で変換して得られる1又は複数の数値データを言語モデルに入力することで、生成されるテキストが時系列数値データの絶対値に依存してぶれることが防止される。
【0056】
同様に、第2前処理部21bは、入力された第2時系列数値データX
longを3種類の方法で変換して、変換して得られた3種類のベクトルの直和によって第2数値データl
lを出力する。ここで、3種類の方法は、入力された第2時系列数値データX
longを所定の数値範囲に正規化した数値データを算出することと、標準化した数値データを算出することと、基準値に関して相対化した数値データを算出することである。本例の場合、第2前処理部21bから出力される第2数値データl
lは、21次元のベクトルとなる。
【0057】
第1エンコーダ22aには、第1前処理部21aから出力される第1数値データl
sが入力され、ベクトルh
sを出力する。ここで、ベクトルh
sの次元は、第1エンコーダ22aの出力層に含まれる出力ノードの数となる。同様に、第2エンコーダ22bには、第2前処理部21bから出力される第2数値データl
lが入力され、ベクトルh
lを出力する。ここで、ベクトルh
lの次元は、第2エンコーダ22bの出力層に含まれる出力ノードの数となる。第1エンコーダ22a及び第2エンコーダ22bは、MLP、CNN及びRNNのうちいずれかであってよく、その他のモデルであってもよい。
【0058】
合成部23は、第1エンコーダ22aの出力h
s、第2エンコーダ22bの出力h
l、第1前処理部21aから出力される第1数値データl
s及び第2前処理部21bから出力される第2数値データl
lの直和によってこれらのデータを合成する。
【0059】
デコーダ24には、合成部23により合成されたデータm及び時系列数値データの時系列に関するデータTが入力される。時系列に関するデータTは、第1時系列数値データX
shortに含まれる数列が対応付けられた時刻のうち最新の時刻に関するデータであったり、第2時系列数値データX
longに含まれる数列が対応付けられた営業日の範囲に関するデータであったりしてよい。
【0060】
本例では、デコーダ24は、「日経」、「平均」、「、」、「上げ幅」、「<price1>」、「円」、「超える」、「</s>」という置換テキストデータを出力している。ここで、5番目に出力された文字列「<price1>」は、テキスト生成装置10の置換部14によって時系列数値データに関係する数値に置き換えられる所定の文字列である。また、最後に出力された文字列「</s>」は、テキストデータの終わりを示す所定の文字列である。テキスト生成装置10は、デコーダ24から出力されたこれらの文字列によって新たな置換テキストデータを「日経平均、上げ幅<price1>円超える」と生成する。そして、置換部14によって、「<price1>」という所定の文字列を、X
longの最後の値(X
long,7、前日の終値)とX
shortの最後の値(X
short,62、当日の終値)の差に置き換えて、株価の変動を説明するテキストデータを生成する。
【0061】
本例の言語モデル20のように、異なる時間間隔で時間の経過と対応付けられた数列を含む時系列数値データをそれぞれ異なるエンコーダに入力し、出力を合成してデコーダに入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。また、デコーダに対して、エンコーダの出力のみならず、複数の数値データを入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。さらに、デコーダに対して、合成部により合成されたデータのみならず、時系列数値データの時系列に関するデータを入力することで、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0062】
本実施形態に係るテキスト生成装置10によれば、時系列数値データの履歴に依存する単語を正しく含むように、時系列数値データの変動を説明するテキストを生成することで、例えば、「上げ幅」、「続落」、「反発」といった単語のように過去の株価の履歴を参照する表現を正しく生成したり、「始まる」、「寄り付き」、「前引け」、「午後」、「大引け」といった単語のように、時間帯に依存する表現を正しく生成したりすることができる。
【0063】
図5は、時系列数値データに関係する数値の種類と所定の文字列とを対応付ける規則D3を示す図である。規則D3は、規則記憶部15に記憶され、置換部14によって参照される所定の規則の一例である。
【0064】
規則D3は、12種類の文字列について、時系列数値データに関係する12種類の数値を対応付ける規則である。各文字列は、時系列数値データに関係する数値に1対1に対応する。本例では、<price1>という文字列は、X
longの最後の値(X
long,7)とX
shortの最後の値(X
short,62)の差と対応付けられる。また、<price2>という文字列は、X
longの最後の値とX
shortの最後の値の差を10の位で切り捨てた値と対応付けられる。
【0065】
また、<price3>という文字列は、X
longの最後の値とX
shortの最後の値の差を100の位で切り捨てた値と対応付けられ、<price4>という文字列は、X
longの最後の値とX
shortの最後の値の差を10の位で切り上げた値と対応付けられ、<price5>という文字列は、X
longの最後の値とX
shortの最後の値の差を100の位で切り上げた値と対応付けられる。
【0066】
さらに、<price6>という文字列は、X
shortの最後の値に対応付けられ、<price7>という文字列は、X
shortの最後の値を100の位で切り捨てた値に対応付けられ、<price8>という文字列は、X
shortの最後の値を1000の位で切り捨てた値に対応付けられ、<price9>という文字列は、X
shortの最後の値を10000の位で切り捨てた値に対応付けられる。同様に、<price10>という文字列は、X
shortの最後の値を100の位で切り上げた値に対応付けられ、<price11>という文字列は、X
shortの最後の値を1000の位で切り上げた値に対応付けられ、<price12>という文字列は、X
shortの最後の値を10000の位で切り上げた値に対応付けられる。
【0067】
このように、時系列数値データに関係する数値の種類と所定の文字列とを対応付けることで、時系列数値データの引用や時系列数値データを演算した結果得られる数値を含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0068】
図6は、本実施形態に係るテキスト生成装置10で実行される処理のフローチャートである。はじめに、取得部12によって、5分間隔で記録された株価を第1時系列数値データとして取得し(S10)、1営業日間隔で記録された株価を第2時系列数値データとして取得する(S11)。
【0069】
その後、生成部13によって、第1時系列数値データ及び第2時系列数値データを言語モデル20に入力する。言語モデル20は、第1前処理部21aによって、第1時系列数値データを、正規化した数値データ、標準化した数値データ及び相対化した数値データに変換し(S12)、第2前処理部21bによって、第2時系列数値データを、正規化した数値データ、標準化した数値データ及び相対化した数値データに変換する(S13)。そして、第1時系列数値データを変換して得られた複数の第1数値データを第1エンコーダ22aに入力し(S14)、第2時系列数値データを変換して得られた複数の第2数値データを第2エンコーダ22bに入力する(S15)。
【0070】
さらに、合成部23によって、複数の第1数値データ、複数の第2数値データ、第1エンコーダ22aの出力及び第2エンコーダ22bの出力を合成する(S16)。その後、合成されたデータ及び時系列に関するデータをデコーダ24に入力する(S17)。
【0071】
置換部14は、デコーダ24から出力される置換テキストデータのうち、所定の文字列を所定の規則で数値に置き換え(S18)、時系列数値データの変動を説明するテキストデータを生成する。以上により、処理が終了する。
【0072】
本実施形態に係るテキスト生成装置10によれば、言語モデルの出力によって新たな時系列数値データを説明する新たな置換テキストデータを生成し、新たな置換テキストデータに含まれる所定の文字列を、所定の規則で新たな時系列数値データに関係する数値に置き換えることで、時系列数値データに関係する数値を言語モデルによって直接出力する必要が無くなり、数値が様々に変化する場合であってもその数値に関する記載を正しく含むように、時系列数値データの変動を説明するテキストを生成することができる。
【0073】
図7は、本実施形態に係るテキスト生成装置10で生成されるテキストを示す図である。同図では、言語モデルとして従来のモデルを用いた場合と、本実施形態に係る言語モデル20又は本実施形態に係る言語モデル20の一部を変更したモデルを用いた場合とについて、生成されるテキストをまとめた第1表R1を示している。本実施形態に係る言語モデル20は、
図4を用いて説明した言語モデル20であって、第1エンコーダ22a及び第2エンコーダ22bをMLPとしたモデルである。また、本実施形態に係る言語モデル20の一部を変更したモデルの第1例は、
図4を用いて説明した言語モデル20のうち標準化したデータを用いないモデル、すなわち第1前処理部21a及び第2前処理部21bによって正規化したデータ及び相対化したデータの2種類を算出するモデルである。また、本実施形態に係る言語モデル20の一部を変更したモデルの第2例は、
図4を用いて説明した言語モデル20のうち置換テキストデータを用いないモデル、すなわち言語モデルによって時系列数値データに関係する数値を直接生成するモデルである。また、本実施形態に係る言語モデル20の一部を変更したモデルの第3例は、
図4を用いて説明した言語モデル20のうちデコーダ24に時系列数値データの時系列に関するデータを入力しないモデルである。
【0074】
同図では、第1表R1の他に、正確なテキストデータの例Eを示している。正確なテキストデータの例Eは、「日経平均大引け、続伸終値は32円高の16906円」である。
【0075】
これに対して、言語モデルとして従来のモデルを用いた場合に生成されるテキストの例は、「日経平均、反落前引けは57円安の20606円」であり、テキストデータの配信時間帯を誤って「前引け」としている点、前日との株価の差を誤って「反落」と表現している点、前日終値との差を誤って「57円安」としている点、現在の株価を誤って「20606円」としている点で、正確性を欠いている。
【0076】
一方、第1表R1の上から2番目に記載された、本実施形態に係る言語モデル20を用いた場合に生成されるテキストの例は、「日経平均、続伸大引けは32円高の16906円」であり、テキストデータの配信時間帯を「大引け」と正しく表現し、前日との株価の差を「続伸」と正しく表現し、前日終値との差を「32円高」と正しく算出しており、現在の株価を「16906円」と正しく引用しており、全ての表現が正確である。
【0077】
第1表R1の上から3番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第1例を用いた場合に生成されるテキストの例は、「日経平均、続伸大引けは32円高の16906円」であり、テキストデータの配信時間帯を「大引け」と正しく表現し、前日との株価の差を「続伸」と正しく表現し、前日終値との差を「32円高」と正しく算出しており、現在の株価を「16906円」と正しく引用しており、全ての表現が正確である。このことから、第1前処理部21a及び第2前処理部21bによって正規化したデータ及び相対化したデータの2種類を算出するモデルであっても、第1前処理部21a及び第2前処理部21bによって、標準化したデータ、正規化したデータ及び相対化したデータの3種類を算出するモデルと同等以上の精度で時系列数値データを説明するテキストデータを生成できることがわかる。
【0078】
第1表R1の上から4番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第2例を用いた場合に生成されるテキストの例は、「日経平均、続伸大引けは28円高の<unk>円」であり、テキストデータの配信時間帯を「大引け」と正しく表現し、前日との株価の差を「続伸」と正しく表現し、前日終値との差を誤って「28円高」と算出しており、現在の株価が引用できず「<unk>円」となっている。ここで、<unk>は、unknownを表す文字列であり、適当な単語が生成できなかったことを示す。このことから、言語モデルによって時系列数値データに関係する数値を直接生成するのでは、時系列数値データに関係する数値を正しく生成することが難しく、時系列数値データの演算を伴う表現のみならず、時系列数値データの引用を含めることも困難であることがわかる。
【0079】
第1表R1の上から5番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第3例を用いた場合に生成されるテキストの例は、「日経平均、続伸前引けは32円高の16906円」であり、テキストデータの配信時間帯を誤って「前引け」と表現し、前日との株価の差を「続伸」と正しく表現し、前日終値との差を「32円高」と正しく算出しており、現在の株価を「16906円」と正しく引用している。このことから、デコーダ24に時系列数値データの時系列に関するデータを入力しないモデルでは、時系列数値データが取得された時間帯について正しく言及することが難しいことがわかる。
【0080】
図8は、本実施形態に係るテキスト生成装置10で生成されるテキストと基準となるテキストとの近さを評価した指標値を示す図である。同図では、言語モデルとして従来のモデルを用いた場合と、本実施形態に係る言語モデル20又は本実施形態に係る言語モデル20の一部を変更したモデルを用いた場合とについて、生成されるテキストと基準となるテキストとの近さを評価した指標値をまとめた第2表R2を示している。なお、指標値は、BLEU(BiLingual Evaluation Understudy)と呼ばれる値であり、0から1までの値を取り、1に近いほど基準となるテキスト(正確なテキスト)に近いことを表す。この指標値は、テキストの評価を行うために用いられるものの一例であり、他の指標値を用いてテキストの評価を行うこともできる。
【0081】
本実施形態に係る言語モデル20は、
図4を用いて説明した言語モデル20であって、第1エンコーダ22a及び第2エンコーダ22bをMLPとしたモデルと、第1エンコーダ22a及び第2エンコーダ22bをCNNとしたモデルと、第1エンコーダ22a及び第2エンコーダ22bをRNNとしたモデルである。
【0082】
また、本実施形態に係る言語モデル20の一部を変更したモデルの第1例は、
図4を用いて説明した言語モデル20のうち第1時系列数値データを用いないモデル、すなわち第2時系列数値データのみを用いるモデルである。本実施形態に係る言語モデル20の一部を変更したモデルの第2例は、
図4を用いて説明した言語モデル20のうち第2時系列数値データを用いないモデル、すなわち第1時系列数値データのみを用いるモデルである。
【0083】
また、本実施形態に係る言語モデル20の一部を変更したモデルの第3例は、
図4を用いて説明した言語モデル20のうち正規化したデータを用いないモデル、すなわち第1前処理部21a及び第2前処理部21bによって標準化したデータ及び相対化したデータの2種類を算出するモデルである。本実施形態に係る言語モデル20の一部を変更したモデルの第4例は、
図4を用いて説明した言語モデル20のうち標準化したデータを用いないモデル、すなわち第1前処理部21a及び第2前処理部21bによって正規化したデータ及び相対化したデータの2種類を算出するモデルである。本実施形態に係る言語モデル20の一部を変更したモデルの第5例は、
図4を用いて説明した言語モデル20のうち相対化したデータを用いないモデル、すなわち第1前処理部21a及び第2前処理部21bによって標準化したデータ及び正規化したデータの2種類を算出するモデルである。
【0084】
また、本実施形態に係る言語モデル20の一部を変更したモデルの第6例は、
図4を用いて説明した言語モデル20のうちデコーダ24に時系列数値データを1又は複数の方法で変換して得られる1又は複数の数値データを入力しないモデル、すなわちデコーダ24に第1エンコーダ22aの出力及び第2エンコーダ22bの出力のみを入力するモデルである。本実施形態に係る言語モデル20の一部を変更したモデルの第7例は、
図4を用いて説明した言語モデル20のうち置換テキストデータを用いないモデル、すなわち言語モデルによって時系列数値データに関係する数値を直接生成するモデルである。また、本実施形態に係る言語モデル20の一部を変更したモデルの第8例は、
図4を用いて説明した言語モデル20のうちデコーダ24に時系列数値データの時系列に関するデータを入力しないモデルである。
【0085】
言語モデルとして従来のモデルを用いた場合に生成されるテキストの評価値は、「0.244」であるのに対して、本実施形態に係る言語モデル20を用いてテキスト生成装置10により生成されるテキストの評価値は、エンコーダにMLPを用いる場合「0.415」、エンコーダにCNNを用いる場合「0.414」、エンコーダにRNNを用いる場合「0.415」である。いずれの場合、従来よりも評価値が大幅に改善しており、正確なテキストデータが生成できていることがわかる。
【0086】
第2表R2の上から5番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第1例を用いて生成されるテキストの評価値は「0.356」、第2表R2の上から6番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第2例を用いて生成されるテキストの評価値は「0.397」であり、異なる時間間隔で取得された2種類の時系列数値データを用いることで、評価値が改善することがわかる。これは、本実施形態に係るテキスト生成装置10によれば、時系列数値データの履歴に依存する単語を正しく生成できることによると考えられる。
【0087】
また、第2表R2の上から7番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第3例を用いて生成されるテキストの評価値は「0.424」、第2表R2の上から8番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第4例を用いて生成されるテキストの評価値は「0.424」、第2表R2の上から9番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第5例を用いて生成されるテキストの評価値は「0.408」である。これらのことから、正規化されたデータ及び標準化されたデータのいずれか一方と、相対化されたデータとを用いると、正規化されたデータ、標準化されたデータ及び相対化されたデータ全てを用いる場合よりもより適切なテキストデータが生成できることがわかる。また、相対化されたデータを用いないと、評価値が悪化することがわかる。
【0088】
また、第2表R2の上から10番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第6例を用いて生成されるテキストの評価値は「0.397」、第2表R2の上から11番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第7例を用いて生成されるテキストの評価値は「0.313」、第2表R2の上から12番目に記載された、本実施形態に係る言語モデル20の一部を変更したモデルの第8例を用いて生成されるテキストの評価値は「0.358」である。これらのことから、デコーダ24に第1エンコーダ22aの出力及び第2エンコーダ22bの出力のみを入力するモデルや、言語モデルによって時系列数値データに関係する数値を直接生成するモデル、時系列数値データの時系列に関するデータを入力しないモデルを用いる場合には、本実施形態に係る言語モデル20を用いる場合よりも指標値が悪化することがわかる。
【0089】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。