JP2018109862A - 句構造解析装置およびプログラム - Google Patents
句構造解析装置およびプログラム Download PDFInfo
- Publication number
- JP2018109862A JP2018109862A JP2017000112A JP2017000112A JP2018109862A JP 2018109862 A JP2018109862 A JP 2018109862A JP 2017000112 A JP2017000112 A JP 2017000112A JP 2017000112 A JP2017000112 A JP 2017000112A JP 2018109862 A JP2018109862 A JP 2018109862A
- Authority
- JP
- Japan
- Prior art keywords
- score
- action
- data
- unit
- rnn
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Machine Translation (AREA)
Abstract
【課題】解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる句構造解析装置を実現する。【解決手段】句構造解析装置1000は、文データを解析するためのアクションを設定するアクション設定部1と、素性テンプレートに基づいて各アクションが実行されたときの第1スコアを取得する第1スコア取得部3と、RNNにより各アクションが実行されたときの第2スコアを取得する第2スコア取得部4とを備える。句構造解析装置1000では、スコア統合部5が第1スコアと第2スコアを統合して取得した統合スコアにより、文データを解析処理における各段階の最適なアクションを特定する。そして、句構造解析装置1000では、特定されたアクション系列により、入力された文データの句構造解析結果が取得される。【選択図】図1
Description
本発明は、文の構文構造を解析する技術に関し、特に遷移型句構造解析を用いる技術に関する。
近年、文の構文構造を解析する技術として、遷移型句構造解析による手法が開発されている。
例えば、非特許文献1に開示されている技術(遷移型句構造解析による手法を用いた技術)では、予め人により定められた素性テンプレートを用いて、文の構文構造を解析する。
非特許文献1の技術では、まず、解析対象の単語、解析対象の品詞、親ノードの単語、親ノードの品詞、子ノードの単語、子ノードの品詞、2つ先の親ノードの単語、2つ先の親ノードの品詞等を考慮して、素性テンプレートを人が作成する。
そして、非特許文献1の技術では、上記のようにして生成された素性テンプレートを用いて、文の構文解析を行う。
Muhua Zhu, Yue Zhang, Wenliang Chen, Min Zhang, and Jingbo Zhu. 2013. Fast and accurate shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the Association for Computational Linguistics, pages 434-443.
しかしながら、非特許文献1の技術では、予め用意された素性テンプレートを用いるため、解析履歴の情報として限定的な情報(素性テンプレートに定められたパターンの履歴情報)しか活用することができない。その結果、非特許文献1の技術では、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することは困難である。
本発明は上記課題に鑑み、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる句構造解析装置およびプログラムを実現することを目的とする。
上記課題を解決するために第1の発明は、アクションを時系列に実行することで文章の句構造を解析する句構造解析装置であって、アクション設定部と、キューメモリと、スタックメモリと、第1スコア取得部と、第2スコア取得部と、スコア統合部と、アクション決定部と、を備える。
キューメモリは、文章についてのデータである文データを入力し保持する。
スタックメモリは、キューメモリから出力されるデータを保持する。
第1スコア取得部は、アクション設定部により設定されたアクションが実行されたとき、キューメモリに保持されているデータとスタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得し、取得した素性ベクトルに基づいて、第1スコアを取得する。
第2スコア取得部は、入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを有する第1RNN部を含み、再帰型ニューラルネットワークを用いて取得した第2スコアを取得する。
スコア統合部は、第1スコアと第2スコアとを統合することで統合スコアを取得する。
アクション決定部は、統合スコアに基づいて、文章の句構造の解析の各段階のアクションを決定する。
第1RNN部の入力層は、アクション設定部により設定されたアクションの情報と、アクションが実行されたときのキューメモリに保持されているデータおよびアクションが実行されたときのスタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから第1RNN部の隠れ層に出力するためのデータを取得する。
第1RNN部の隠れ層は、第1RNN部の入力層により取得されたデータと保持部により保持されているデータとに基づいて、第1RNN部の出力層に出力するためのデータを取得する。
第1RNN部の出力層は、第1RNN部の隠れ層により取得されたデータに基づいて、第2スコアを取得する。
この句構造解析装置では、素性テンプレートを用いて取得した第1スコアと、RNNにより取得した第2スコアとを統合した統合スコアを用いて、句構造解析のために最適なアクションを決定することができる。この句構造解析装置では、第2スコア取得部の隠れ層に、句構造解析の各段階において選択された決定アクション(過去の全ての決定アクション)を反映しているデータが入力されている。
従って、この句構造解析装置では、第2スコア取得部により、過去の全ての決定アクション(過去の全ての解析履歴)を考慮した第2スコアを取得することができる。このように、この句構造解析装置では、人手により決定された素性テンプレートを用いて取得するだけでは取得することができない過去の全ての解析履歴を考慮した第2スコアを取得でき、第2スコアを用いて、各段階の最適なアクションを決定することができる。
その結果、この句構造解析装置では、人手により決定された素性テンプレートを用いたスコアのみにより句構造解析の各段階の最適アクションを決定する場合に比べて、高精度に最適アクションを決定することができる。つまり、この句構造解析装置では、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる。
第2の発明は、第1の発明であって、第1スコア取得部は、さらに、素性テンプレート格納部と、素性ベクトル取得部と、パラメータ保持部と、第1スコア算出部と、を備える。
素性テンプレート格納部は、文データの素性を評価するための素性ベクトルを取得するために参照する素性テンプレートを保持する。
素性ベクトル取得部は、アクション設定部により設定されたアクションが実行されたとき、素性テンプレートに基づいて、キューメモリに保持されているデータとスタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得する。
パラメータ保持部は、素性テンプレートに基づいて、文データを用いて機械学習することで取得した素性ベクトル用のパラメータを保持する。
第1スコア算出部は、素性ベクトルと前記パラメータとを用いて第1スコアを算出する。
第3の発明は、第2の発明であって、第2スコア取得部は、第2〜第NRNN部と、第2スコア統合部と、をさらに備える。
第kRNN部(k:自然数、1≦k≦N)は、入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを有する。
第kRNN部の入力層は、アクション設定部により設定されたアクションの情報と、アクションが実行されたときのキューメモリに保持されているデータおよびアクションが実行されたときのスタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから第kRNN部の隠れ層に出力するためのデータを取得する。
第kRNN部の隠れ層は、第kRNN部の入力層により取得されたデータと保持部により保持されているデータとに基づいて、第kRNN部の出力層に出力するためのデータを取得する。
第kRNN部の出力層は、第kRNN部の隠れ層により取得されたデータに基づいて、第kRNNスコアを取得する。
第2スコア統合部は、アクションをアクションai(j)とし、アクションai(j)が実行されたときに第kRNN部の出力層により取得される第kRNNスコアをscr_RNNk(ai(j))とし、scr_RNNk(ai(j))の重み付け係数をλkとし、第2スコアをscr_RNN(ai(j))とすると、
により、第2スコアscr_RNN(ai(j))を取得する。
により、第2スコアscr_RNN(ai(j))を取得する。
この句構造解析装置では、素性テンプレートを用いて取得した第1スコアと、N個(N:自然数)のRNNにより取得した第2スコアとを統合した統合スコアを用いて、句構造解析のために最適なアクションを決定することができる。この句構造解析装置では、第1〜第NRNN部の各隠れ層に、句構造解析の各段階において選択された決定アクション(過去の全ての決定アクション)を反映しているデータが入力されている。
従って、この句構造解析装置では、過去の全ての決定アクション(過去の全ての解析履歴)を考慮した第2スコア(第1〜第NRNNスコアを統合したスコア)を取得することができる。このように、この句構造解析装置では、人手により決定された素性テンプレートを用いて取得するだけでは取得することができない過去の全ての解析履歴を考慮した第2スコアを取得でき、第2スコアを用いて、各段階の最適なアクションを決定することができる。
その結果、この句構造解析装置では、人手により決定された素性テンプレートを用いたスコアのみにより句構造解析の各段階の最適アクションを決定する場合に比べて、高精度に最適アクションを決定することができる。つまり、この句構造解析装置では、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる。
さらに、この句構造解析装置では、異なるアクション系列データにより学習し最適化した複数のRNNを用いて、各アクションの評価を行うことができる。各RNNを多様な句構造解析に応じて最適化させることで、この句構造解析装置では、多様な文のデータに対しても最適なアクション系列を高精度に取得し、その結果、高精度の句構造解析を実現することができる。
なお、「第2〜第NRNN部」という表記は、第2番目のRNN部(第2RNN部)から第N番目のRNN部(第NRNN部)の合計(N−1)個のRNN部を表している。
第4の発明は、文章についてのデータである文データを入力し保持するキューメモリと、キューメモリから出力されるデータを保持するスタックメモリと、文データの素性を評価するための素性ベクトルを取得するために参照する素性テンプレートを保持する素性テンプレート格納部と、を備える句構造解析装置に用いられる句構造解析方法をコンピュータに実行させるためのプログラムである。
句構造解析方法は、アクションを時系列に実行することで文章の句構造を解析する方法であって、アクション設定ステップと、素性ベクトル取得ステップと、パラメータ保持ステップと、第1スコア算出ステップと、第2スコア取得ステップと、スコア統合ステップと、アクション決定ステップと、を備える。
アクション設定ステップは、文章の句構造を解析するためのアクションを設定する。
第1スコア取得ステップは、アクション設定ステップにより設定されたアクションが実行されたとき、素性テンプレートに基づいて、キューメモリに保持されているデータとスタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得し、取得した前記素性ベクトルに基づいて、第1スコアを取得する。
第2スコア取得ステップは、入力層用処理ステップと、隠れ層用処理ステップと、出力層用処理ステップと、隠れ層用処理ステップの出力を保持する保持ステップと、を含む再帰型ニューラルネットワーク用処理を実行する第1RNNステップを含み、再帰型ニューラルネットワーク用処理を実行して取得した第2スコアを取得する。
スコア統合ステップは、第1スコアと第2スコアとを統合することで統合スコアを取得する。
アクション決定ステップは、統合スコアに基づいて、文章の句構造の解析の各段階のアクションを決定する。
第1RNNステップの入力層用処理ステップでは、アクション設定ステップにより設定されたアクションの情報と、アクションが実行されたときのキューメモリに保持されているデータおよびアクションが実行されたときのスタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから第1RNNステップの隠れ層用処理ステップで使用するためのデータを取得する。
第1RNNステップの隠れ層用処理ステップでは、第1RNNステップの入力層用処理ステップにより取得されたデータと保持ステップにより保持されているデータとに基づいて、第1RNNステップの出力層用処理ステップで使用するためのデータを取得する。
第1RNNステップの出力層用処理ステップでは、第1RNNステップの隠れ層処理用ステップにより取得されたデータに基づいて、第2スコアを取得する。
これにより、第1の発明と同様の効果を奏する句構造解析方法をコンピュータに実行させるためのプログラムを実現することができる。
第5の発明は、第4の発明であって、第1スコア取得ステップは、さらに、素性ベクトル取得ステップと、パラメータ保持ステップと、第1スコア算出ステップと、を備える。
素性ベクトル取得ステップは、アクション設定ステップにより設定されたアクションが実行されたとき、素性テンプレートに基づいて、キューメモリに保持されているデータとスタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得する。
パラメータ保持ステップは、素性テンプレートに基づいて、文データを用いて機械学習することで取得した素性ベクトル用のパラメータを保持する。
第1スコア算出ステップは、素性ベクトルとパラメータとを用いて第1スコアを算出する。
第2スコア取得ステップは、第2〜第NRNNステップと、第2スコア統合ステップと、をさらに備える。
第kRNNステップ(k:自然数、1≦k≦N)は、入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを用いた処理を実行する。
第kRNNステップの入力層での処理は、アクション設定ステップにより設定されたアクションの情報と、アクションが実行されたときのキューメモリに保持されているデータおよびアクションが実行されたときの前記スタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから第kRNNステップの隠れ層に出力するためのデータを取得する処理である。
第kRNNステップの隠れ層での処理は、第kRNNステップの入力層の処理により取得されたデータと保持部により保持されているデータとに基づいて、第kRNNステップの出力層に出力するためのデータを取得する処理である。
第kRNNステップの出力層での処理は、第kRNNステップの隠れ層の処理により取得されたデータに基づいて、第kRNNスコアを取得する処理である。
第2スコア統合ステップは、アクションをアクションai(j)とし、アクションai(j)が実行されたときに第kRNNステップの出力層での処理により取得される第kRNNスコアをscr_RNNk(ai(j))とし、scr_RNNk(ai(j))の重み付け係数をλkとし、前記第2スコアをscr_RNN(ai(j))とすると、
により、第2スコアscr_RNN(ai(j))を取得する。
により、第2スコアscr_RNN(ai(j))を取得する。
これにより、第3の発明と同様の効果を奏する句構造解析方法をコンピュータに実行させるためのプログラムを実現することができる。
本発明によれば、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる句構造解析装置およびプログラムを実現することができる。
[第1実施形態]
第1実施形態について、図面を参照しながら、以下説明する。
第1実施形態について、図面を参照しながら、以下説明する。
<1.1:句構造解析装置の構成>
図1は、第1実施形態に係る句構造解析装置1000の概略構成図である。
図1は、第1実施形態に係る句構造解析装置1000の概略構成図である。
図2は、第1実施形態に係る第1スコア取得部3の概略構成図である。
図3は、第1実施形態に係る第2スコア取得部4の概略構成図である。
句構造解析装置1000は図1に示すように、キューメモリMq(First−in−First−out型のメモリ:以下、「キューMq」とという)と、スタックメモリMs(Last−in−First−out型のメモリ:以下、「スタックMs」という)と、アクション設定部1と、現状態保持部2と、第1スコア取得部3と、第2スコア取得部4と、スコア統合部5と、スコア保持部6と、アクション決定部7と、解析結果出力部8と、スタック状態記憶部9とを備える。
キューMqは、文章のデータDinを入力する。また、キューMqは、アクション設定部1から出力される制御信号Ctl_queueを入力する。キューMqは、制御信号Ctl_queueに従い、保持しているデータを、第1スコア取得部3にデータD1_queueとして出力し、また、第2スコア取得部4にデータD2_queueとして出力する。
また、キューMqは、第1スコア取得部3から出力される信号Req_queueを入力し、入力された信号Req_queueに従い、保持しているデータを、第1スコア取得部3にデータD1_queueとして出力する。
また、キューMqは、データD1_queueをスタックMsに出力する。
キューMqは、キューMqの現在の状態を示す情報を含む信号を現状態保持部2に出力する。また、キューMqは、現状態保持部2から所定の状態に戻す指令信号を受信した場合、当該指令信号に従い、キューMqの状態を所定の状態に戻す。
スタックMsは、キューMqから出力されるデータD1_queueを入力する。また、スタックMsは、アクション設定部1から出力される制御信号Ctl_stackを入力する。スタックMsは、制御信号Ctl_stackに従い、保持しているデータを、第1スコア取得部3にデータD1_stackとして出力し、また、第2スコア取得部4にデータD2_stackとして出力する。
また、スタックMsは、第1スコア取得部3から出力される信号Req_stackを入力し、入力された信号Req_stackに従い、保持しているデータを、第1スコア取得部3にデータD1_stackとして出力する。
スタックMsは、スタックMsの現在の状態を示す情報を含む信号を現状態保持部2に出力する。また、スタックMsは、現状態保持部2から所定の状態に戻す指令信号を受信した場合、当該指令信号に従い、スタックMsの状態を所定の状態に戻す。
アクション設定部1は、文の構文構造を解析するときのi番目(i:自然数、1≦i≦N)のアクションai(=ai_det)を決定するためにJ個のアクションの中から選んだ1つのアクションai(j)(1≦j≦J、J:自然数)の情報を第1スコア取得部3および第2スコア取得部4に出力する。
また、アクション設定部1は、アクションai(j)に応じて、キューMqを操作するための制御信号Ctl_queueおよびスタックMsを操作するための制御信号Ctl_stackを生成する。そして、アクション設定部1は、生成した制御信号Ctl_queueをキューMqに出力するとともに、生成した制御信号Ctl_stackをスタックMsに出力する。
また、アクション設定部1は、スコア保持部6に制御信号Ctl_endを出力する。制御信号Ctl_endは、アクション設定部1がJ個のアクションai(j)の情報を全て出力し終わったときにスコア保持部6を制御するための信号である。
現状態保持部2は、キューMqから出力されるキューMqの現在の状態を示す情報を含む信号を入力したとき、現在有効なアクションと組み合わせて、当該キューMqの現在の状態を示す情報を保持する。また、現状態保持部2は、スタックMsから出力されるスタックMsの現在の状態を示す情報を含む信号を入力したとき、当該スタックMsの現在の状態を示す情報を保持する。
また、現状態保持部2は、スコア保持部6から出力される制御信号Ctl_nextを入力する。現状態保持部2は、制御信号Ctl_nextが入力されたとき、当該制御信号Ctl_nextに従い、アクションai(j)を実行する前の状態にキューMqおよびスタックMsを戻すための信号を生成し、キューMqおよびスタックMsに出力する。
また、現状態保持部2は、アクション決定部7から出力される制御信号Ctl_restore(ai_det)を入力する。現状態保持部2は、制御信号Ctl_restore(ai_det)が入力されたとき、当該制御信号Ctl_restore(ai_det)に従い、アクションai_detが実行されたときの状態にキューMqおよびスタックMsを戻すための信号を生成する。そして、現状態保持部2は、生成した信号をキューMqおよびスタックMsに出力する。
また、現状態保持部2は、制御信号Ctl_restore(ai_det)が入力されたとき、アクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)をスタック状態記憶部9に記憶する。
第1スコア取得部3は、図2に示すように、素性ベクトル取得部31と、素性テンプレート格納部32と、パラメータ保持部34と、第1スコア算出部33とを備える。
素性ベクトル取得部31は、素性テンプレート格納部32から素性テンプレートのデータと、アクション設定部1から出力されるアクションai(j)の情報とを入力する。また、素性ベクトル取得部31は、スタックMsから出力されるデータD1_stackと、キューMqから出力されるデータD1_queueとを入力する。
また、素性ベクトル取得部31は、スタックMsから所定のデータを取り出すための信号Req_stackをスタックMsに出力し、キューMqから所定のデータを取り出すための信号Req_queueをキューMqに出力する。
素性ベクトル取得部31は、アクションai(j)の素性ベクトルΦ(ai(j))(アクションai(j)についての素性ベクトル)を取得し、第1スコア算出部33に出力する。
素性テンプレート格納部32は、素性テンプレートのデータを格納する。素性テンプレート格納部32は、素性ベクトル取得部31からの要求に従い、素性テンプレート格納部32に格納されている素性テンプレートのデータを素性ベクトル取得部31に出力する。
パラメータ保持部34は、素性ベクトル取得部31から出力される素性ベクトルΦ(ai(j))と内積をとるためのパラメータθ(ベクトルデータ)を保持しており、パラメータθのデータを第1スコア算出部33に出力する。
第1スコア算出部33は、素性ベクトル取得部31から出力される素性ベクトルΦ(ai(j))のデータと、パラメータ保持部34から出力されるパラメータθのデータとを入力する。そして、第1スコア算出部33は、素性ベクトルΦ(ai(j))とパラメータθとを用いて内積により第1スコアscr_fr(ai(j))を取得し、スコア統合部5に出力する。
第2スコア取得部4は、図3に示すように、RNN(Recurrent neural network)を用いて構成される第1RNN部41を備える。
第1RNN部41は、入力層411と、隠れ層412と、保持部413と、HL現状態保持部414と、出力層415とを備える。
入力層411は、アクション設定部1から出力されるアクションai(j)のデータと、スタックMsから出力されるデータD2_stackと、キューMqから出力されるデータD2_queueとを入力する。入力層411は、入力されたアクションai(j)、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、データxi(j)を取得し、隠れ層412に出力する。
隠れ層412は、入力層411から出力されるデータxi(j)と、保持部413から出力されるデータyi−1とを入力として、下記に相当する処理を行い、データyiを取得する。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
なお、データyi−1は、i−1番目のアクションai−1(=ai−1_det)が入力層411に入力されているときに隠れ層412から出力されるデータと同じデータである。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
なお、データyi−1は、i−1番目のアクションai−1(=ai−1_det)が入力層411に入力されているときに隠れ層412から出力されるデータと同じデータである。
また、|x|は、x(x:ベクトル)の要素数を示している。
隠れ層412は、上記のようにして取得したデータyi(j)を保持部413および出力層415に出力する。
保持部413は、隠れ層412から出力されるデータyi(j)を入力し保持する。そして、保持部413は、隠れ層412にアクションai(j)に対応するデータxi(j)が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1から取得したデータyi−1を隠れ層412に出力する。
また、保持部413は、隠れ層412の現在の出力状態を示す情報を含む信号をHL現状態保持部414に出力する。
HL現状態保持部414は、保持部413から出力される隠れ層412の現在の出力状態を示す情報を含む信号が入力されたとき、当該隠れ層412の現在の出力状態を示す情報を保持する。
また、HL現状態保持部414は、スコア保持部6から出力される制御信号Ctl_nextを入力する。HL現状態保持部414は、制御信号Ctl_nextが入力されたとき、当該制御信号Ctl_nextに従い、i−1番目のアクションai−1が実行された後の状態に保持部413を戻すための信号を生成し、保持部413に出力する。
また、HL現状態保持部414は、アクション決定部7から出力される制御信号Ctl_restore(ai_det)を入力する。HL現状態保持部414は、制御信号Ctl_restore(ai_det)が入力されたとき、当該制御信号Ctl_restore(ai_det)に従い、アクションai_detが実行されたときに隠れ層412から出力されていたデータyi(j)を保持する。そして、HL現状態保持部414は、i+1番目のアクションを決定する処理が実行されるときに、保持したデータyi(j)(jは、ai(j)=ai_detを満たすj)を保持部413から出力させる信号を保持部413に出力する。
出力層415は、隠れ層412から出力されるデータyi(j)を入力する。出力層415は、以下の処理により第2スコアscr_RNN(ai(j))を取得する。
scr_RNN(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
出力層415は、上記処理により取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
scr_RNN(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
出力層415は、上記処理により取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
図1を参照して、スコア統合部5は、第1スコア取得部3から出力される第1スコアscr_fr(ai(j))と、第2スコア取得部4から出力される第2スコアscr_RNN(ai(j))を入力する。スコア統合部5は、第1スコアscr_fr(ai(j))および第2スコアscr_RNN(ai(j))を統合する処理を行い統合スコアscr(ai(j))を取得し、スコア保持部6に出力する。
スコア保持部6は、スコア統合部5から出力される統合スコアscr(ai(j))を入力し保持する。スコア保持部6は、スコア統合部5から統合スコアscr(ai(j))が入力されたとき、制御信号Ctl_nextを生成し、アクション設定部1、現状態保持部2および第2スコア取得部4の中のHL現状態保持部414に出力する。
また、スコア保持部6は、アクション設定部1から制御信号Ctl_endが入力されたとき、保持しているJ個の統合スコアscr(ai(j))をアクション決定部7に出力する。
アクション決定部7は、スコア保持部6から出力されるJ個の統合スコアscr(ai(j))を入力する。アクション決定部7は、J個の統合スコアscr(ai(j))の中で最大値をとる統合スコアを決定スコアscr(ai_det)として取得し、設定(決定)する。
アクション決定部7は、取得した決定スコアscr(ai_det)を解析結果出力部8に出力する。
また、アクション決定部7は、スタックMsおよびキューMqを決定アクションai_detが実行されたときの状態に戻すための制御信号Ctl_restore(ai_det)を現状態保持部2および第2スコア取得部4に出力する。
解析結果出力部8は、アクション決定部7から出力される決定スコアscr(ai_det)を入力する。解析結果出力部8は、決定スコアscr(ai_det)を積算し、入力された文のスコアを取得する。また、解析結果出力部8は、スタック状態記憶部9から各アクションが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を解析することで、句構造解析装置1000に入力された文の構造を示すデータを取得する。
解析結果出力部8は、上記のようにして取得した文のスコアおよび文の構造を示すデータを含むデータをデータDoutとして出力する。
スタック状態記憶部9は、アクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。具体的には、スタック状態記憶部9は、現状態保持部2に制御信号Ctl_restore(ai_det)が入力されたときに現状態保持部2がスタックMsから取得したアクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。
<1.2:句構造解析装置の動作>
以上のように構成された句構造解析装置1000の動作について、図面を参照しながら以下説明する。
以上のように構成された句構造解析装置1000の動作について、図面を参照しながら以下説明する。
図4は、句構造解析装置1000で実行される句構造解析処理のフローチャートである。
図5は、句構造解析装置1000で句構造解析処理を実行したときのスタックMsとキューMqの状態を模式的に示す図である。
以下では文章のデータDinとして「John has a dog .」という英文が品詞付きで入力された場合の句構造解析装置1000の動作について説明する。
なお、句構造解析装置1000に入力されるデータDinを「John:N has:VB a:DT dog:N .」と表現する。ここで「N」は名詞を表し、「VB」は動詞を表し、「DT」は限定詞を表している。
また、以下では句構造解析装置1000で用いられるアクションが以下のものである場合について説明する。
(1)SHIFT:キューMqから1語を取り出しスタックMsに入力するアクション。
(2)REDUCE-L/R-X:スタックMsから2つのデータを取り出し(POP動作を2回行い)、取り出した2つのデータを結合しラベルXを付し、新たなデータとしてスタックMsに戻す。なお、「REDUCE-L-X」の場合、スタックMsから取り出す2つのデータは、スタックMsのボトムの2つのデータである。「REDUCE-R-X」の場合、スタックMsから取り出す2つのデータは、スタックMsのトップの2つのデータである。
(3)UNARY-X:スタックMsからスタックMsのトップのデータを取り出し(POP動作を1回行い)、取り出したデータにラベルXを付し、新たなデータとしてスタックMsに戻す。
(4)FINISH:キューMqからルートノードを取り出し、句構造解析を終了させる。
(5)IDLE:状態を保持し、ステップを1つ進める。
(1)SHIFT:キューMqから1語を取り出しスタックMsに入力するアクション。
(2)REDUCE-L/R-X:スタックMsから2つのデータを取り出し(POP動作を2回行い)、取り出した2つのデータを結合しラベルXを付し、新たなデータとしてスタックMsに戻す。なお、「REDUCE-L-X」の場合、スタックMsから取り出す2つのデータは、スタックMsのボトムの2つのデータである。「REDUCE-R-X」の場合、スタックMsから取り出す2つのデータは、スタックMsのトップの2つのデータである。
(3)UNARY-X:スタックMsからスタックMsのトップのデータを取り出し(POP動作を1回行い)、取り出したデータにラベルXを付し、新たなデータとしてスタックMsに戻す。
(4)FINISH:キューMqからルートノードを取り出し、句構造解析を終了させる。
(5)IDLE:状態を保持し、ステップを1つ進める。
なお、上記においてラベルXとして、例えば、「NP」(名詞句)、「VP」(動詞句)、「S」(センテンス)、「S*」(文の構造解析結果を2分木データとして維持させるために用いられる暫定ノード用ラベル)等が付与される。
(ステップS1):
句構造解析装置1000のキューM1にデータDin(「John:N has:VB a:DT dog:N .」)が入力される。
句構造解析装置1000のキューM1にデータDin(「John:N has:VB a:DT dog:N .」)が入力される。
(ステップS2):
現状態保持部2は、キューMqからキューMqの現在の状態(現状態state_now1)を示す情報を含む信号を入力し当該キューMqの現在の状態を示す情報を保持する。また、現状態保持部2は、スタックMsからスタックMsの現在の状態を示す情報を含む信号を入力し当該スタックMsの現在の状態を示す情報を保持する。
現状態保持部2は、キューMqからキューMqの現在の状態(現状態state_now1)を示す情報を含む信号を入力し当該キューMqの現在の状態を示す情報を保持する。また、現状態保持部2は、スタックMsからスタックMsの現在の状態を示す情報を含む信号を入力し当該スタックMsの現在の状態を示す情報を保持する。
(ステップS3):
第1RNN部41のHL現状態保持部414は、保持部413から出力される隠れ層412の現在の出力状態(隠れ層412の現状態state_now2)を示す情報を含む信号が入力し、当該隠れ層412の現在の出力状態を示す情報を保持する。
第1RNN部41のHL現状態保持部414は、保持部413から出力される隠れ層412の現在の出力状態(隠れ層412の現状態state_now2)を示す情報を含む信号が入力し、当該隠れ層412の現在の出力状態を示す情報を保持する。
(ステップS4):
アクション設定部1は、アクションai(j)を選択し、選択したアクションai(j)の情報を第1スコア取得部3および第2スコア取得部4に出力する。
アクション設定部1は、アクションai(j)を選択し、選択したアクションai(j)の情報を第1スコア取得部3および第2スコア取得部4に出力する。
(ステップS5):
第1スコア取得部3は、第1スコアを取得する処理を実行する。
第1スコア取得部3は、第1スコアを取得する処理を実行する。
ここでステップS5の詳細な動作について説明する。素性ベクトル取得部31は、素性テンプレート格納部32から素性テンプレートのデータと、アクション設定部1から出力されるアクションai(j)の情報とを入力する。また、素性ベクトル取得部31は、スタックMsから出力されるデータD1_stackと、キューMqから出力されるデータD1_queueと、アクション設定部1から出力されるアクションai(j)の情報を入力する。
素性ベクトル取得部31は、アクションai(j)の素性ベクトルΦ(ai(j))を取得する。例えば、素性テンプレートが以下の素性の評価を行うことを示している場合、アクションai(j)が実行されたときのスタックMsおよびキューMqのデータを取得し以下の素性(例えば、以下に示す(1)〜(8)の素性)を評価し、評価値をベクトルの要素とする素性ベクトルΦ(ai(j))を取得する。
(1)解析対象の単語
(2)解析対象の品詞
(3)親ノードの単語
(4)親ノードの品詞
(5)子ノードの単語
(6)子ノードの品詞
(7)親ノードの親ノードの単語
(8)親ノードの親ノードの品詞
素性ベクトル取得部31は、上記により取得した素性ベクトルΦ(ai(j))のデータを第1スコア算出部33に出力する。
(1)解析対象の単語
(2)解析対象の品詞
(3)親ノードの単語
(4)親ノードの品詞
(5)子ノードの単語
(6)子ノードの品詞
(7)親ノードの親ノードの単語
(8)親ノードの親ノードの品詞
素性ベクトル取得部31は、上記により取得した素性ベクトルΦ(ai(j))のデータを第1スコア算出部33に出力する。
なお、素性ベクトルΦ(ai(j))を取得するための素性テンプレートによる評価対象は、上記(上記(1)〜(8)を用いる場合)に限定されない。
また、素性ベクトル取得部31は、素性テンプレートに示されている素性を評価するために、必要に応じてスタックMsから所定のデータを取り出すための信号Req_stackをスタックMsに出力し、キューMqから所定のデータを取り出すための信号Req_queueをキューMqに出力する。これにより、素性ベクトル取得部31は、素性テンプレートに示されている素性を評価するために必要なデータをスタックMsおよびキューMqから取り出す。
第1スコア算出部33は、素性ベクトルΦ(ai(j))とパラメータθとを用いて内積により第1スコアscr_fr(ai(j))を取得する。つまり、第1スコア算出部33は、
scr_fr(ai(j))=Φ(ai(j))・θ
に相当する処理を実行することにより、第1スコアscr_fr(ai(j))を取得する。
scr_fr(ai(j))=Φ(ai(j))・θ
に相当する処理を実行することにより、第1スコアscr_fr(ai(j))を取得する。
なお、パラメータθは、ベクトルであり、素性ベクトルΦの各要素の重みを要素とする。パラメータθは、例えば、学習データ(例えば、品詞付き文章のデータとその構文構造の対の集合)を用いて、各アクションを実行させて学習させて取得されたパラメータ(機械学習により取得されたパラメータ)である。
上記のようにして取得された第1スコアscr_fr(ai(j))は、第1スコア算出部33からスコア統合部5に出力される。
(ステップS6):
第2スコア取得部4の第1RNN部41は、第2スコアを取得する処理を実行する。
第2スコア取得部4の第1RNN部41は、第2スコアを取得する処理を実行する。
ここでステップS6の詳細な動作について説明する。第1RNN部41の入力層411は、入力されたアクションai(j)、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、例えば、LUT(ルックアップテーブル)によりデータxi(j)を取得し、隠れ層412に出力する。
隠れ層412は、入力層411から出力されるデータxi(j)と、保持部413から出力されるデータyi−1とを入力する。なお、最初のアクションが実行されるとき、データyi−1は、データが存在しない状態(全ての要素が「0」の状態)である。
隠れ層412は、下記に相当する処理を行い、データyiを取得する。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
隠れ層412は、上記のようにして取得したデータyi(j)を保持部413および出力層415に出力する。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
隠れ層412は、上記のようにして取得したデータyi(j)を保持部413および出力層415に出力する。
保持部413は、隠れ層412から出力されるデータyi(j)を入力し保持する。そして、保持部413は、隠れ層412にアクションai(j)に対応するデータxi(j)が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1から取得したデータyi−1を隠れ層412に出力する。
また、保持部413は、隠れ層412の現在の出力状態を示す情報を含む信号をHL現状態保持部414に出力する。
HL現状態保持部414は、当該隠れ層412の現在の出力状態を示す情報を保持する。
出力層415は、隠れ層412から出力されるデータyi(j)を入力する。出力層415は、以下の処理により第2スコアscr_RNN(ai(j))を取得する。
scr_RNN(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
出力層415は、上記処理により取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
scr_RNN(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
出力層415は、上記処理により取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
なお、行列H、R、B、O、BOは、学習データ(例えば、品詞付き文章のデータとその構文構造の対の集合)を用いて、各アクションを実行させて学習させて取得されたパラメータにより決定される値を行列の要素としている。
(ステップS7):
スコア統合部5は、第1スコアscr_fr(ai(j))および第2スコアscr_RNN(ai(j))を統合する処理を行う。例えば、スコア統合部5は、
scr(ai(j))=scr_fr(ai(j))+λ×scr_RNN(ai(j))
λ:重み付け値
により統合スコアscr(ai(j))を取得し、スコア保持部6に出力する。
スコア統合部5は、第1スコアscr_fr(ai(j))および第2スコアscr_RNN(ai(j))を統合する処理を行う。例えば、スコア統合部5は、
scr(ai(j))=scr_fr(ai(j))+λ×scr_RNN(ai(j))
λ:重み付け値
により統合スコアscr(ai(j))を取得し、スコア保持部6に出力する。
なお、λの値は、λ≧0を満たす値であり、好ましくは、10−6≦λ≦10−1を満たす値である。
(ステップS8):
スコア保持部6は、スコア統合部5から出力される統合スコアscr(ai(j))を記憶保持する。
スコア保持部6は、スコア統合部5から出力される統合スコアscr(ai(j))を記憶保持する。
(ステップS9):
スコア保持部6は、アクション設定部1から制御信号Ctl_endが入力された場合、全てのアクションai(j)が選択されたと判定し(Yes)、アクション設定部1から制御信号Ctl_endが入力されていない場合、選択されていないアクションai(j)が残っていると判定する(No)。
スコア保持部6は、アクション設定部1から制御信号Ctl_endが入力された場合、全てのアクションai(j)が選択されたと判定し(Yes)、アクション設定部1から制御信号Ctl_endが入力されていない場合、選択されていないアクションai(j)が残っていると判定する(No)。
1回目のアクションai(j)が実行されたとき、未だ選択されていないアクションがアクションai(j)に残っているので、スコア保持部6は、統合スコアscr(ai(j))を記憶すると、制御信号Ctl_nextをアクション設定部1、現状態保持部2およびHL現状態保持部414に出力し、句構造解析装置1000で次のアクションai(j)が実行されるように制御する。
(ステップS10):
現状態保持部2は、スコア保持部6から出力される制御信号Ctl_nextを入力すると、アクションai(j)を実行する前の状態(ステップS2の状態state_now1)にキューMqおよびスタックMsを戻すための信号を生成し、キューMqおよびスタックMsに出力する。これにより、スタックMsおよびキューMqの状態がアクションai(j)を実行する前の状態に戻る。
現状態保持部2は、スコア保持部6から出力される制御信号Ctl_nextを入力すると、アクションai(j)を実行する前の状態(ステップS2の状態state_now1)にキューMqおよびスタックMsを戻すための信号を生成し、キューMqおよびスタックMsに出力する。これにより、スタックMsおよびキューMqの状態がアクションai(j)を実行する前の状態に戻る。
(ステップS11):
HL現状態保持部414は、スコア保持部6から出力される制御信号Ctl_nextを入力すると、i−1番目のアクションai−1が実行された後の状態(ステップS3の状態state_now2)に保持部413を戻すための信号を生成し、保持部413に出力する。これにより、保持部413からi−1番目のアクションai−1が実行された後の状態において出力されていたデータyi−1が出力される状態に戻る。
HL現状態保持部414は、スコア保持部6から出力される制御信号Ctl_nextを入力すると、i−1番目のアクションai−1が実行された後の状態(ステップS3の状態state_now2)に保持部413を戻すための信号を生成し、保持部413に出力する。これにより、保持部413からi−1番目のアクションai−1が実行された後の状態において出力されていたデータyi−1が出力される状態に戻る。
上記処理の後、アクション設定部1は、次のアクションai(j)を選択し、ステップS4〜S11の処理が繰り返し実行される。
ステップS9において、全てのアクションが選択されたと判定された場合(ステップS9でYes)、処理はステップS12に進む。
(ステップS12):
全てのアクションが選択されたと判定された場合、アクション設定部1からスコア保持部6に信号Ctl_endが出力される。そして、スコア保持部6は、アクション設定部1から信号Ctl_endを受信すると、アクション決定部7にJ個の統合スコアscr(ai(j))を出力する。
全てのアクションが選択されたと判定された場合、アクション設定部1からスコア保持部6に信号Ctl_endが出力される。そして、スコア保持部6は、アクション設定部1から信号Ctl_endを受信すると、アクション決定部7にJ個の統合スコアscr(ai(j))を出力する。
アクション決定部7は、J個の統合スコアscr(ai(j))の中で最大値をとる統合スコアを決定スコアscr(ai_det)として取得する。また、アクション決定部7は、J個の統合スコアscr(ai(j))の中で最大値をとるアクションai(j)を決定アクションai_detに設定(決定)する。例えば、図5は、i=1のとき、アクションとして「SHIFT」を選択したときのscr(ai(j))が最大値をとると判定された場合を示している。この場合、i=1のときの決定アクションa1(j)_detは、アクション「SHIFT」に決定される。
(ステップS13):
解析結果出力部8は、スコアの積算処理を行う。例えば、解析結果出力部8は、
sum=sum+scr(ai(j))
により積算値sumを取得する。
解析結果出力部8は、スコアの積算処理を行う。例えば、解析結果出力部8は、
sum=sum+scr(ai(j))
により積算値sumを取得する。
なお、sumの初期値は「0」である。
(ステップS14):
アクション決定部7は、スタックMsおよびキューMqを決定アクションai_detが実行されたときの状態に戻すための制御信号Ctl_restore(ai_det)を現状態保持部2および第2スコア取得部4のHL現状態保持部414に出力する。
アクション決定部7は、スタックMsおよびキューMqを決定アクションai_detが実行されたときの状態に戻すための制御信号Ctl_restore(ai_det)を現状態保持部2および第2スコア取得部4のHL現状態保持部414に出力する。
現状態保持部2は、制御信号Ctl_restore(ai_det)が入力されると、当該制御信号Ctl_restore(ai_det)に従い、アクションai_detが実行されたときの状態にキューMqおよびスタックMsを戻すための信号を生成し、キューMqおよびスタックMsに出力する。これにより、キューMqおよびスタックMsは、アクションai_detが実行されたときの状態に戻る。i=1の場合は、アクションa1_detが「SHIFT」なので、キューMqの状態およびスタックMsの状態は、アクション「SHIFT」が実行されたときのキューMqの状態およびスタックMsの状態に戻る。
(ステップS15):
スタック状態記憶部9は、アクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。具体的には、スタック状態記憶部9は、現状態保持部2に制御信号Ctl_restore(ai_det)が入力されると、現状態保持部2がスタックMsから取得したアクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。i=1の場合は、アクションa1_detが「SHIFT」なので、スタック状態記憶部9は、アクション「SHIFT」が実行されたときのスタックMsの状態を記憶する。
スタック状態記憶部9は、アクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。具体的には、スタック状態記憶部9は、現状態保持部2に制御信号Ctl_restore(ai_det)が入力されると、現状態保持部2がスタックMsから取得したアクションai_detが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を記憶する。i=1の場合は、アクションa1_detが「SHIFT」なので、スタック状態記憶部9は、アクション「SHIFT」が実行されたときのスタックMsの状態を記憶する。
(ステップS16):
句構造解析装置1000では、図5に示すように、キューMqに入力されたデータDinの解析が終了するまで、上記処理(S2〜S16)を繰り返し実行する。例えば、データDin「John:N has:VB a:DT dog:N .」が入力された場合、当該データDin「John:N has:VB a:DT dog:N .」の句構造解析するためのデータが、スタックMsおよびキューMqに存在しない状態となるまで、上記処理(S2〜S16)を繰り返し実行する。
句構造解析装置1000では、図5に示すように、キューMqに入力されたデータDinの解析が終了するまで、上記処理(S2〜S16)を繰り返し実行する。例えば、データDin「John:N has:VB a:DT dog:N .」が入力された場合、当該データDin「John:N has:VB a:DT dog:N .」の句構造解析するためのデータが、スタックMsおよびキューMqに存在しない状態となるまで、上記処理(S2〜S16)を繰り返し実行する。
句構造解析装置1000では、図5に示すように、句構造解析処理の終了を示すアクション「FINISH」が決定アクションai_detとして選択された場合、句構造解析処理を終了させる(ステップS16でNo)。
(ステップS17):
解析結果出力部8は、句構造解析処理の終了を示すアクション「FINISH」が決定アクションai_detとして選択された場合、スコアの積算処理により取得した積算値sumを入力された文のスコアとして取得する。
解析結果出力部8は、句構造解析処理の終了を示すアクション「FINISH」が決定アクションai_detとして選択された場合、スコアの積算処理により取得した積算値sumを入力された文のスコアとして取得する。
また、解析結果出力部8は、スタック状態記憶部9から各アクションが実行されたときのスタックMsの状態(スタックMsに記憶されているデータ)を解析することで、句構造解析装置1000に入力された文の構造を示すデータを取得する。
例えば、図5に示す場合、句構造解析装置1000で取得される決定アクションai_detは以下の通りである。
a1_det=「SHIFT」
a2_det=「UNARY_NP」
a3_det=「SHIFT」
a4_det=「SHIFT」
a5_det=「SHIFT」
a6_det=「REDUCE-R-NP」
a7_det=「REDUCE-R-VP」
a8_det=「SHIFT」
a9_det=「REDUCE-L-S*」
a10_det=「REDUCE-R-S」
a11_det=「FINISH」
解析結果出力部8は、上記のようにして取得された決定アクションai_detが実行されたときのスタック状態をスタック状態記憶部9から読み出し、入力データの文の構造を示すデータ(句構造解析結果データ)を取得する。
a1_det=「SHIFT」
a2_det=「UNARY_NP」
a3_det=「SHIFT」
a4_det=「SHIFT」
a5_det=「SHIFT」
a6_det=「REDUCE-R-NP」
a7_det=「REDUCE-R-VP」
a8_det=「SHIFT」
a9_det=「REDUCE-L-S*」
a10_det=「REDUCE-R-S」
a11_det=「FINISH」
解析結果出力部8は、上記のようにして取得された決定アクションai_detが実行されたときのスタック状態をスタック状態記憶部9から読み出し、入力データの文の構造を示すデータ(句構造解析結果データ)を取得する。
具体的には、解析結果出力部8は、図5の場合、スタックの状態をi=11のときの状態からi=1のときの状態へと順番に辿ることで、入力データDin(「John:N has:VB a:DT dog:N .」)の文の構造を示すデータ(句構造解析結果データ)を取得する。このようにして取得した解析結果を図6に示す。
i=10のときの決定アクションa10_det(=「REDUCE-R-S」)、スタックの状態、および、i=9のときの決定アクションa9_det(=「REDUCE-L-S*」)、スタックの状態から、ラベル「S」(センテンス)の子ノードが「S*」と「.」であると決定される。
i=9のときの決定アクションa9_det(=「REDUCE-L-S*」)、スタックの状態、および、i=8のときの決定アクションa8_det(=「SHIFT」)、スタックの状態から、ラベル「S*」の子ノードが「NP」と「VP」であると決定される。
i=7のときの決定アクションa7_det(=「REDUCE-L-VP」)、スタックの状態、および、i=6のときの決定アクションa6_det(=「REDUCE-R-NP」)、スタックの状態から、ラベル「VP」の子ノードが「has:VB」と「NP」であると決定される。
i=6のときの決定アクションa6_det(=「REDUCE-R-NP」)、スタックの状態、および、i=5のときの決定アクションa5_det(=「SHIFT」)、スタックの状態から、ラベル「NP」の子ノードが「a:DT」と「dog:N」であると決定される。
i=5のときの決定アクションa5_det(=「SHIFT」)、スタックの状態、および、i=4のときの決定アクションa4_det(=「SHIFT」)、スタックの状態から、ノードの関係を特定するデータがないと判断する。
i=4のときの決定アクションa4_det(=「SHIFT」)、スタックの状態、および、i=3のときの決定アクションa3_det(=「SHIFT」)、スタックの状態から、ノードの関係を特定するデータがないと判断する。
i=3のときの決定アクションa3_det(=「SHIFT」)、スタックの状態、および、i=3のときの決定アクションa2_det(=「SHIFT」)、スタックの状態から、ノードの関係を特定するデータがないと判断する。
i=2のときの決定アクションa2_det(=「UNARY_NP」)、スタックの状態、および、i=1のときの決定アクションa1_det(=「SHIFT」)、スタックの状態から、ラベル「NP」の子ノードが「John:N」であると決定される。
このようにして、句構造解析装置1000では、入力データDin(「John:N has:VB a:DT dog:N .」)の文の構造を示すデータ(句構造解析結果データ)を図6に示すデータとして取得することができる。
以上のように、句構造解析装置1000では、素性テンプレートを用いて取得した第1スコアと、RNNにより取得した第2スコアとを統合した統合スコアを用いて、句構造解析のために最適なアクションを決定することができる。句構造解析装置1000では、第2スコア取得部4の隠れ層412に、句構造解析の各段階において選択された決定アクションai_det(過去の全ての決定アクションai_det)を反映しているデータyi−1が入力されている。例えば、図5の場合において、i=11のとき、i=1〜10までの全ての決定アクションai_detを反映しているデータyi−1が第2スコア取得部4の隠れ層412に入力される。
従って、句構造解析装置1000では、第2スコア取得部4により、過去の全ての決定アクションai_det(過去の全ての解析履歴)を考慮した第2スコアを取得することができる。このように、句構造解析装置1000では、人手により決定された素性テンプレートを用いて取得するだけでは取得することができない過去の全ての解析履歴を考慮した第2スコアを取得でき、第2スコアを用いて、各段階の最適なアクションを決定することができる。
その結果、句構造解析装置1000では、人手により決定された素性テンプレートを用いたスコアのみにより句構造解析の各段階の最適アクションを決定する場合に比べて、高精度に最適アクションを決定することができる。つまり、句構造解析装置1000では、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる。
[第2実施形態]
次に、第2実施形態について、説明する。
次に、第2実施形態について、説明する。
<2.1:構造解析装置の構成>
本実施形態において、第1実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
本実施形態において、第1実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
図7は、第2実施形態に係る句構造解析装置2000の概略構成図である。
図8は、第2実施形態に係る第2スコア取得部4Aの概略構成図である。
図9は、第2実施形態に係る第2RNN部42の概略構成図である。
図10は、第2実施形態に係る第3RNN部43の概略構成図である。
本実施形態の句構造解析装置2000は、図7に示すように、第1実施形態の句構造解析装置1000において、第2スコア取得部4を第2スコア取得部4Aに置換した構成を有している。
第2スコア取得部4Aは、図8に示すように、第1RNN部41と、第2RNN部42と、第3RNN部43と、第1変換部44と、第2変換部45と、第2スコア統合部46とを備える。
第1RNN部41は、第1実施形態の第1RNN部41と同様の構成を有している。
第2RNN部42は、図9に示すように、RNNを用いて構成されており、入力層421と、隠れ層422と、保持部423と、HL現状態保持部424と、出力層425とを備える。
入力層421は、第1変換部44からから出力されるアクションai(j)’のデータ(アクションai(j)を第1変換部44が変換したアクションのデータ)と、スタックMsから出力されるデータD2_stackと、キューMqから出力されるデータD2_queueとを入力する。入力層421は、入力されたアクションai(j)’、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、データxi(j)’を取得し、隠れ層422に出力する。
隠れ層422は、入力層421から出力されるデータxi(j)’と、保持部423から出力されるデータyi−1’とを入力する。隠れ層422は、下記に相当する処理を行い、データyi(j)’を取得する。
yi(j)’=f(H’×xi(j)’+R’×yi−1’+BH’)
f():活性化関数
H’:|yi(j)’|×|xi(j)’|の行列
R’:|yi(j)’|×|yi−1’|の行列
BH’:|yi(j)’|×1の行列
なお、データyi−1’は、i−1番目のアクションai−1(=ai−1_det)が入力層421に入力されているときに隠れ層422から出力されるデータと同じデータである。
yi(j)’=f(H’×xi(j)’+R’×yi−1’+BH’)
f():活性化関数
H’:|yi(j)’|×|xi(j)’|の行列
R’:|yi(j)’|×|yi−1’|の行列
BH’:|yi(j)’|×1の行列
なお、データyi−1’は、i−1番目のアクションai−1(=ai−1_det)が入力層421に入力されているときに隠れ層422から出力されるデータと同じデータである。
隠れ層422は、上記のようにして取得したデータyi(j)’を保持部423および出力層425に出力する。
保持部423は、隠れ層422から出力されるデータyi(j)’を入力し保持する。そして、保持部423は、隠れ層422にアクションai(j)に対応するデータxi(j)’が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1’から取得したデータyi−1’を隠れ層422に出力する。
また、保持部423は、隠れ層422の現在の出力状態を示す情報を含む信号をHL現状態保持部424に出力する。
HL現状態保持部424は、保持部423から出力される隠れ層422の現在の出力状態を示す情報を含む信号が入力されたとき、当該隠れ層422の現在の出力状態を示す情報を保持する。
また、HL現状態保持部424は、スコア保持部6から出力される制御信号Ctl_nextを入力する。HL現状態保持部424は、制御信号Ctl_nextが入力されたとき、当該制御信号Ctl_nextに従い、i−1番目のアクションai−1が実行された後の状態に保持部423を戻すための信号を生成する。そして、HL現状態保持部424は、生成した信号を保持部423に出力する。
また、HL現状態保持部424は、アクション決定部7から出力される制御信号Ctl_restore(ai_det)を入力する。HL現状態保持部424は、制御信号Ctl_restore(ai_det)が入力されたとき、当該制御信号Ctl_restore(ai_det)に従い、アクションai_detが実行されたときに隠れ層422から出力されていたデータyi(j)’を保持する。そして、HL現状態保持部424は、i+1番目のアクションを決定する処理が実行されるときに、保持したデータyi(j)’(jは、ai(j)=ai_detを満たすj)を保持部423から出力させる信号を保持部423に出力する。
出力層425は、隠れ層422から出力されるデータyi(j)’を入力する。出力層425は、以下の処理により第2RNNスコアscr_RNN2(ai(j))を取得する。
scr_RNN2(ai(j))=O’×yi(j)’+BO’
O’:1×|yi(j)’|の行列
BO’:バイアス項
出力層425は、上記処理により取得した第2RNNスコアscr_RNN2(ai(j))を第2スコア統合部46に出力する。
scr_RNN2(ai(j))=O’×yi(j)’+BO’
O’:1×|yi(j)’|の行列
BO’:バイアス項
出力層425は、上記処理により取得した第2RNNスコアscr_RNN2(ai(j))を第2スコア統合部46に出力する。
第1変換部44は、アクション設定部1から出力されるアクションai(j)の情報を含むデータを入力し、所定の変換を行い、変換後のアクションai(j)’の情報を含むデータを取得する。そして、第1変換部44は、取得した変換後のアクションai(j)’の情報を含むデータを第2RNN部42に出力する。
第3RNN部43は、図10に示すように、RNNを用いて構成されており、入力層431と、隠れ層432と、保持部433と、HL現状態保持部434と、出力層435とを備える。
入力層431は、第2変換部45からから出力されるアクションai(j)’’のデータ(アクションai(j)を第2変換部45が変換したアクションのデータ)と、スタックMsから出力されるデータD2_stackと、キューMqから出力されるデータD2_queueとを入力する。入力層431は、入力されたアクションai(j)’’、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、データxi(j)’’を取得し、隠れ層432に出力する。
隠れ層432は、入力層431から出力されるデータxi(j)’’と、保持部433から出力されるデータyi−1’’とを入力する。隠れ層432は、下記に相当する処理を行い、データyi(j)’’を取得する。
yi(j)’’=f(H’’×xi(j)’’+R’’×yi−1’’+BH’’)
f():活性化関数
H’’:|yi(j)’’|×|xi(j)’’|の行列
R’’:|yi(j)’’|×|yi−1(j)’’|の行列
BH’’:|yi(j)’’|×1の行列
なお、データyi−1’’は、i−1番目のアクションai−1(=ai−1_det)が入力層431に入力されているときに隠れ層432から出力されるデータと同じデータである。
yi(j)’’=f(H’’×xi(j)’’+R’’×yi−1’’+BH’’)
f():活性化関数
H’’:|yi(j)’’|×|xi(j)’’|の行列
R’’:|yi(j)’’|×|yi−1(j)’’|の行列
BH’’:|yi(j)’’|×1の行列
なお、データyi−1’’は、i−1番目のアクションai−1(=ai−1_det)が入力層431に入力されているときに隠れ層432から出力されるデータと同じデータである。
隠れ層432は、上記のようにして取得したデータyi(j)’’を保持部433および出力層435に出力する。
保持部433は、隠れ層432から出力されるデータyi(j)’’を入力し保持する。そして、保持部433は、隠れ層432にアクションai(j)に対応するデータxi(j)’’が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1’’から取得したデータyi−1’’を隠れ層432に出力する。
また、保持部433は、隠れ層432の現在の出力状態を示す情報を含む信号をHL現状態保持部434に出力する。
HL現状態保持部434は、保持部433から出力される隠れ層432の現在の出力状態を示す情報を含む信号が入力されたとき、当該隠れ層432の現在の出力状態を示す情報を保持する。
また、HL現状態保持部434は、スコア保持部6から出力される制御信号Ctl_nextを入力する。HL現状態保持部434は、制御信号Ctl_nextが入力されたとき、当該制御信号Ctl_nextに従い、i−1番目のアクションai−1が実行された後の状態に保持部433を戻すための信号を生成し、保持部433に出力する。
また、HL現状態保持部434は、アクション決定部7から出力される制御信号Ctl_restore(ai_det)を入力する。HL現状態保持部434は、制御信号Ctl_restore(ai_det)が入力されたとき、当該制御信号Ctl_restore(ai_det)に従い、アクションai_detが実行されたときに隠れ層432から出力されていたデータyi(j)’を保持する。そして、HL現状態保持部434は、i+1番目のアクションを決定する処理が実行されるときに、保持したデータyi(j)’’(jは、ai(j)=ai_detを満たすj)を保持部423から出力させる信号を保持部433に出力する。
出力層435は、隠れ層432から出力されるデータyi(j)’’を入力する。出力層435は、以下の処理により第3RNNスコアscr_RNN3(ai(j))を取得する。
scr_RNN3(ai(j))=O’’×yi(j)’’+BO’’
O’’:1×|yi(j)’’|の行列
BO’’:バイアス項
出力層435は、上記処理により取得した第3RNNスコアscr_RNN3(ai(j))を第2スコア統合部46に出力する。
scr_RNN3(ai(j))=O’’×yi(j)’’+BO’’
O’’:1×|yi(j)’’|の行列
BO’’:バイアス項
出力層435は、上記処理により取得した第3RNNスコアscr_RNN3(ai(j))を第2スコア統合部46に出力する。
第2変換部45は、アクション設定部1から出力されるアクションai(j)の情報を含むデータを入力し、所定の変換を行い、変換後のアクションai(j)’’の情報を含むデータを取得し、第3RNN部43に出力する。
第2スコア統合部46は、第1RNN部41から出力される第1RNNスコアscr_RNN1(ai(j))と、第2RNN部42から出力される第2RNNスコアscr_RNN2(ai(j))と、第3RNN部43から出力される第3RNNスコアscr_RNN3(ai(j))とを入力する。
第1RNNスコアscr_RNN1(ai(j))は、第1実施形態と同様に以下の数式に相当する処理により取得される。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
scr_RNN1(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
第2RNNスコアscr_RNN2(ai(j))は、第1実施形態と同様に以下の数式に相当する処理により取得される。
yi(j)=f(H2×xi(j)+R2×yi−1+B2)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H2:|yi(j)|×|xi(j)|の行列
R2:|yi(j)|×|yi−1|の行列
B2:|yi(j)|×1の行列(ベクトル)
scr_RNN2(ai(j))=O2×yi(j)+BO2
O:1×|yi(j)|の行列
BO2:バイアス項
第3RNNスコアscr_RNN3(ai(j))は、第1実施形態と同様に以下の数式に相当する処理により取得される。
yi(j)=f(H3×xi(j)+R3×yi−1+B3)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H3:|yi(j)|×|xi(j)|の行列
R3:|yi(j)|×|yi−1|の行列
B3:|yi(j)|×1の行列(ベクトル)
scr_RNN3(ai(j))=O3×yi(j)+BO3
O:1×|yi(j)|の行列
BO3:バイアス項
第2スコア統合部46は、第1RNNスコアscr_RNN1(ai(j))、第2RNNスコアscr_RNN2(ai(j))および第3RNNスコアscr_RNN3(ai(j))に対して統合処理を行い、第2スコアscr_RNN(ai(j))を取得する。例えば、第2スコア統合部46は、
scr_RNN(ai(j))=λ1×scr_RNN1(ai(j))+
λ2×scr_RNN2(ai(j))+
λ3×scr_RNN3(ai(j))
λ1、λ2、λ3:係数
により第2スコアscr_RNN(ai(j))を取得する。
yi(j)=f(H×xi(j)+R×yi−1+B)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H:|yi(j)|×|xi(j)|の行列
R:|yi(j)|×|yi−1|の行列
B:|yi(j)|×1の行列
scr_RNN1(ai(j))=O×yi(j)+BO
O:1×|yi(j)|の行列
BO:バイアス項
第2RNNスコアscr_RNN2(ai(j))は、第1実施形態と同様に以下の数式に相当する処理により取得される。
yi(j)=f(H2×xi(j)+R2×yi−1+B2)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H2:|yi(j)|×|xi(j)|の行列
R2:|yi(j)|×|yi−1|の行列
B2:|yi(j)|×1の行列(ベクトル)
scr_RNN2(ai(j))=O2×yi(j)+BO2
O:1×|yi(j)|の行列
BO2:バイアス項
第3RNNスコアscr_RNN3(ai(j))は、第1実施形態と同様に以下の数式に相当する処理により取得される。
yi(j)=f(H3×xi(j)+R3×yi−1+B3)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H3:|yi(j)|×|xi(j)|の行列
R3:|yi(j)|×|yi−1|の行列
B3:|yi(j)|×1の行列(ベクトル)
scr_RNN3(ai(j))=O3×yi(j)+BO3
O:1×|yi(j)|の行列
BO3:バイアス項
第2スコア統合部46は、第1RNNスコアscr_RNN1(ai(j))、第2RNNスコアscr_RNN2(ai(j))および第3RNNスコアscr_RNN3(ai(j))に対して統合処理を行い、第2スコアscr_RNN(ai(j))を取得する。例えば、第2スコア統合部46は、
scr_RNN(ai(j))=λ1×scr_RNN1(ai(j))+
λ2×scr_RNN2(ai(j))+
λ3×scr_RNN3(ai(j))
λ1、λ2、λ3:係数
により第2スコアscr_RNN(ai(j))を取得する。
第2スコア統合部46は、取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
<2.2:句構造解析装置の動作>
以上のように構成された第2実施形態に係る句構造解析装置2000の動作について、図面を参照しながら以下説明する。
以上のように構成された第2実施形態に係る句構造解析装置2000の動作について、図面を参照しながら以下説明する。
なお、第1実施形態と同様の部分については、詳細な説明を省略する。
第2実施形態の句構造解析装置2000では、3つのRNNを用いて第2スコアscr_RNN(ai(j))を取得する。
句構造解析装置2000では、第1RNN部41で用いられるRNNと、第2RNN部42で用いられるRNNと、第3RNN部43で用いられるRNNとは、異なるモデルにより構築されている。つまり、文の構造データをアクションのシーケンスとして取得するための線形化手法が、第1RNN部41で用いられるRNNと、第2RNN部42で用いられるRNNと、第3RNN部43で用いられるRNNとで異なる。
本実施形態では、第2RNN部42に入力されるアクションは、第1RNN部41に入力されるアクションに付加情報を追加したものである。
具体的には、第2RNN部42に入力されるアクションは、第1RNN部41に入力されるアクションに子ノードの情報を付加したものである。
つまり、第1RNN部41に入力されるアクションである(1)SHIFT、(2)REDUCE-L/R-X、(3)UNARY-X、(4)FINISH、(5)IDLEのうち、(2)REDUCE-L/R-X、(3)UNARY-Xについて、子ノードの情報を付与する。例えば、子ノードが句である場合、当該句を表すラベルを付加し、子ノードが語である場合、その語の品詞にかかわらずシンボル「LEAF」を付加する。
なお、アクションに子ノードの情報を付加する処理は、第1変換部44で実行される。
本実施形態では、第3RNN部43に入力されるアクションは、(1)SHIFT、(2)REDUCE-X、(3)UNARY-X、(4)FINISH、(5)IDLEである。つまり、第3RNN部43に入力されるアクションは、第1RNN部41に入力されるアクションである(2)REDUCE-L/R-Xの代わりに「REDUCE-X」を用いる。このアクション「REDUCE-X」は、スタックMsからトップのN個のデータを取り出し(POP動作をN回行い)、取り出したN個のデータを結合しラベルXを付し、新たなデータとしてスタックMsに戻す。つまり、第3RNN部43で用いられるRNNは、文の構造データをアクションのシーケンス(アクションの系列)として取得するための線形化手法として2分木データを前提としていない。すなわち、第3RNN部43で用いられるRNNを最適化したときに使用したデータ(学習データ)は、2分木データを前提としていない線形化手法により生成されたアクションのシーケンス(アクションの系列のデータ)である。
アクション「REDUCE-X」は、例えば、子ノードの数が「2」である場合、「REDUCE-X-2」と表記して、ラベルXが付されたノードの子ノードが2つであることを示す。
なお、アクションに子ノードの情報を付加する処理は、第2変換部45で実行される。
句構造解析装置2000の動作では、第1実施形態の句構造解析装置1000の動作を示すフローチャート(図4)においてステップS6の処理が異なる。
句構造解析装置2000では、第1実施形態の句構造解析装置1000がステップS6において、第1RNN部41が取得した第2スコアscr_RNN(ai(j))を使用するのに対し、句構造解析装置2000では、第1RNN部41が取得した第1RNNスコアscr_RNN1(ai(j))、第2RNN部42が取得した第2RNNスコアscr_RNN2(ai(j))、および、第3RNN部43が取得した第3RNNスコアscr_RNN3(ai(j))を統合して取得した第2スコアscr_RNN(ai(j))を使用する点が異なる。
以下、句構造解析装置2000が動作するときのステップS6の処理について説明する。
(ステップS6):
第1RNN部41の動作は、第1実施形態と同様であるので説明を省略する。
第1RNN部41の動作は、第1実施形態と同様であるので説明を省略する。
第1変換部44は、入力されたアクションai(j)が子ノードの情報を拡張すべきアクションであるか否かを判定する。第1変換部44は、子ノードの情報を拡張すべきアクションであると判定した場合、子ノードの情報を拡張したアクションai(j)’を取得し、第2RNN部42に出力する。第1変換部44は、子ノードの情報を拡張すべきアクションではないと判定した場合、アクションai(j)をアクションai(j)’として第2RNN部に出力する。
第2RNN部42は、第2RNNスコアを取得する処理を実行する。
第2RNN部42の入力層421は、入力されたアクションai(j)’、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、例えば、LUT(ルックアップテーブル)によりデータxi(j)’を取得し、隠れ層422に出力する。
隠れ層422は、入力層421から出力されるデータxi(j)’と、保持部423から出力されるデータyi−1’とを入力する。なお、最初のアクションが実行されるとき、データyi−1’は、データが存在しない状態(全ての要素が「0」の状態)である。
隠れ層422は、下記に相当する処理を行い、データyi’を取得する。
yi(j)’=f(H’×xi(j)’+R’×yi−1’+BH’)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H’:|yi(j)’|×|xi(j)’|の行列
R’:|yi(j)’|×|yi−1’|の行列
BH’:|yi(j)’|×1の行列
隠れ層422は、上記のようにして取得したデータyi(j)’を保持部423および出力層425に出力する。
yi(j)’=f(H’×xi(j)’+R’×yi−1’+BH’)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H’:|yi(j)’|×|xi(j)’|の行列
R’:|yi(j)’|×|yi−1’|の行列
BH’:|yi(j)’|×1の行列
隠れ層422は、上記のようにして取得したデータyi(j)’を保持部423および出力層425に出力する。
保持部423は、隠れ層422から出力されるデータyi(j)’を入力し保持する。そして、保持部423は、隠れ層422にアクションai(j)に対応するデータxi(j)’が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1’から取得したデータyi−1’を隠れ層422に出力する。
また、保持部423は、隠れ層422の現在の出力状態を示す情報を含む信号をHL現状態保持部424に出力する。
HL現状態保持部424は、当該隠れ層422の現在の出力状態を示す情報を保持する。
出力層425は、隠れ層422から出力されるデータyi(j)’を入力する。出力層425は、以下の処理により第2RNNスコアscr_RNN2(ai(j))を取得する。
scr_RNN2(ai(j))=O’×yi(j)’+BO’
O’:1×|yi(j)’|の行列
BO’:バイアス項
出力層425は、上記処理により取得した第2RNNスコアscr_RNN2(ai(j))を第2スコア統合部46に出力する。
scr_RNN2(ai(j))=O’×yi(j)’+BO’
O’:1×|yi(j)’|の行列
BO’:バイアス項
出力層425は、上記処理により取得した第2RNNスコアscr_RNN2(ai(j))を第2スコア統合部46に出力する。
なお、行列H’、R’、BH’、O’、BO’は、学習データ(例えば、品詞付き文章のデータとその構文構造の対の集合)を用いて、各アクションを実行させて学習させて取得されたパラメータにより決定される値を行列の要素としている。行列H’、R’、BH’、O’、BO’を取得するために用いたアクションは、(1)SHIFT、(2)REDUCE-L/R-X、(3)UNARY-X、(4)FINISH、(5)IDLEであり、このうち、(2)REDUCE-L/R-X、(3)UNARY-Xは、子ノードの情報を付与したアクションである。
第2変換部45は、入力されたアクションai(j)を必要に応じて変換する。第2変換部45は、入力されたアクションai(j)が(1)SHIFT、(3)UNARY-X、(4)FINISH、(5)IDLEのいずれかである場合、アクションai(j)をアクションai(j)’’として第3RNN部に出力する。
第2変換部45は、入力されたアクションai(j)が「REDUCE-R-X」である場合、「REDUCE-X-k」(k:子ノードの数)に拡張して、拡張した当該アクション「REDUCE-X-k」をアクションai(j)’’として第3RNN部に出力する。
第2変換部45は、入力されたアクションai(j)が「REDUCE-L-X」である場合、対応するアクションが存在しないため「IDLE」をアクションai(j)’’として第3RNN部に出力する。
第3RNN部43は、第3RNNスコアを取得する処理を実行する。
第3RNN部43の入力層431は、入力されたアクションai(j)’’、スタックMsのデータD2_stack、および、キューMqのデータD2_queueに基づいて、例えば、LUT(ルックアップテーブル)によりデータxi(j)’’を取得し、隠れ層432に出力する。
隠れ層432は、入力層431から出力されるデータxi(j)’’と、保持部433から出力されるデータyi−1’’とを入力する。なお、最初のアクションが実行されるとき、データyi−1’’は、データが存在しない状態(全ての要素が「0」の状態)である。
隠れ層432は、下記に相当する処理を行い、データyi’’を取得する。
yi(j)’’=f(H’’×xi(j)’’+R’’×yi−1’’+BH’’)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H’’:|yi(j)’’|×|xi(j)’’|の行列
R’’:|yi(j)’’|×|yi−1’’|の行列
BH’’:|yi(j)’’|×1の行列
隠れ層432は、上記のようにして取得したデータyi(j)’’を保持部433および出力層435に出力する。
yi(j)’’=f(H’’×xi(j)’’+R’’×yi−1’’+BH’’)
f():活性化関数(例えば、シグモイド関数やSoftmax関数)
H’’:|yi(j)’’|×|xi(j)’’|の行列
R’’:|yi(j)’’|×|yi−1’’|の行列
BH’’:|yi(j)’’|×1の行列
隠れ層432は、上記のようにして取得したデータyi(j)’’を保持部433および出力層435に出力する。
保持部433は、隠れ層432から出力されるデータyi(j)’’を入力し保持する。そして、保持部433は、隠れ層432にアクションai(j)に対応するデータxi(j)’’が入力されるときに、i−1番目(1つ前のアクション)のアクションai−1(=ai−1_det)に対応するデータxi−1’’から取得したデータyi−1’’を隠れ層432に出力する。
また、保持部433は、隠れ層432の現在の出力状態を示す情報を含む信号をHL現状態保持部434に出力する。
HL現状態保持部434は、当該隠れ層432の現在の出力状態を示す情報を保持する。
出力層435は、隠れ層432から出力されるデータyi(j)’’を入力する。出力層435は、以下の処理により第3RNNスコアscr_RNN3(ai(j))を取得する。
scr_RNN3(ai(j))=O’’×yi(j)’’+BO’’
O’’:1×|yi(j)’|の行列
BO’’:バイアス項
出力層435は、上記処理により取得した第3RNNスコアscr_RNN3(ai(j))を第2スコア統合部46に出力する。
scr_RNN3(ai(j))=O’’×yi(j)’’+BO’’
O’’:1×|yi(j)’|の行列
BO’’:バイアス項
出力層435は、上記処理により取得した第3RNNスコアscr_RNN3(ai(j))を第2スコア統合部46に出力する。
なお、行列Hd’’、Rd’’、Bd H’’、O’’、BO’’は、学習データ(例えば、品詞付き文章のデータとその構文構造の対の集合)を用いて、各アクションを実行させて学習させて取得されたパラメータにより決定される値を行列の要素としている。行列Hd’’、Rd’’、Bd H’’、O’’、BO’’を取得するために用いたアクションは、(1)SHIFT、(2)REDUCE-X、(3)UNARY-X、(4)FINISH、(5)IDLEであり、このうち、(2)REDUCE-Xは、子ノードの数の情報を付与したアクションである。
第2スコア統合部46は、第1RNNスコアscr_RNN1(ai(j))、第2RNNスコアscr_RNN2(ai(j))および第3RNNスコアscr_RNN3(ai(j))に対して統合処理を行い、第2スコアscr_RNN(ai(j))を取得する。例えば、第2スコア統合部46は、
scr_RNN(ai(j))=λ1×scr_RNN1(ai(j))+
λ2×scr_RNN2(ai(j))+
λ3×scr_RNN3(ai(j))
λ1、λ2、λ3:係数
により第2スコアscr_RNN(ai(j))を取得する。
scr_RNN(ai(j))=λ1×scr_RNN1(ai(j))+
λ2×scr_RNN2(ai(j))+
λ3×scr_RNN3(ai(j))
λ1、λ2、λ3:係数
により第2スコアscr_RNN(ai(j))を取得する。
第2スコア統合部46は、取得した第2スコアscr_RNN(ai(j))をスコア統合部5に出力する。
以降の処理は、第1実施形態と同様である。
図11は、句構造解析装置2000で句構造解析処理を実行したときのスタックMsおよびキューMqの状態と、決定アクションai_detに対応するアクションであって第2RNN部42に入力されたアクションとを模式的に示す図である。
図12は、句構造解析装置2000で句構造解析処理を実行したときのスタックMsおよびキューMqの状態と、決定アクションai_detに対応するアクションであって第3RNN部43に入力されたアクションとを模式的に示す図である。
図11、図12から分かるように、句構造解析装置2000では、入力データDin(「John:N has:VB a:DT dog:N .」)の文の構造を示すデータ(句構造解析結果データ)が正確に取得されている。つまり、図11のスタック状態を解析することで、図6に示す木構造の解析結果が取得されていることが分かり、図12のスタック状態を解析することで、図13に示す木構造の解析結果が取得されていることが分かる。なお、図13では、2分木を前提としない線形化手法によるRNNを用いた解析結果から取得した句構造解析結果であるため、ルートノードの子ノードが3つ存在している。
以上のように、句構造解析装置2000では、素性テンプレートを用いて取得した第1スコアと、3つのRNNにより取得した第2スコアとを統合した統合スコアを用いて、句構造解析のために最適なアクションを決定することができる。句構造解析装置2000では、第1RNN部41、第2RNN部42、第3RNN部43の各隠れ層に、句構造解析の各段階において選択された決定アクションai_det(過去の全ての決定アクションai_det)を反映しているデータyi−1、yi−1’およびyi−1’’が入力されている。例えば、図5の場合において、i=11のとき、i=1〜10までの全ての決定アクションai_detを反映しているデータyi−1、yi−1’およびyi−1’’が第1RNN部41、第2RNN部42、第3RNN部43の各隠れ層に入力される。
従って、句構造解析装置2000では、過去の全ての決定アクションai_det(過去の全ての解析履歴)を考慮した第2スコア(第1RNNスコア、第2RNNスコアおよび第3RNNスコアを統合したスコア)を取得することができる。このように、句構造解析装置2000では、人手により決定された素性テンプレートを用いて取得するだけでは取得することができない過去の全ての解析履歴を考慮した第2スコアを取得でき、第2スコアを用いて、各段階の最適なアクションを決定することができる。
その結果、句構造解析装置2000では、人手により決定された素性テンプレートを用いたスコアのみにより句構造解析の各段階の最適アクションを決定する場合に比べて、高精度に最適アクションを決定することができる。つまり、句構造解析装置2000では、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる。
さらに、句構造解析装置2000では、異なるアクション系列データにより学習し最適化した複数のRNNを用いて、各アクションの評価を行うことができる。各RNNを多様な句構造解析に応じて最適化させることで、句構造解析装置2000では、多様な文のデータに対しても最適なアクション系列を高精度に取得し、その結果、高精度の句構造解析を実現することができる。
[他の実施形態]
上記実施形態の句構造解析装置では、第1RNN部、第2RNN部、第3RNN部では、隠れ層が1つである場合について説明したが、これに限定されることはなく隠れ層の数は「2」以上であってもよい。
上記実施形態の句構造解析装置では、第1RNN部、第2RNN部、第3RNN部では、隠れ層が1つである場合について説明したが、これに限定されることはなく隠れ層の数は「2」以上であってもよい。
また、上記実施形態の句構造解析装置では、RNNを含む機能部が3つである場合について説明したが、これに限定されることはなく、第2スコア取得部がN個(N:自然数)のRNN部を含むものであってもよい。N個のRNN部を含む場合、句構造解析装置において、第1RNN部、第2RNN部、第3RNN部、・・・、第kRNN部、・・・、第NRNN部が設けられる構成とすればよい。なお、「第2〜第NRNN部」という表記は、第2番目のRNN部(第2RNN部)から第N番目のRNN部(第NRNN部)の合計(N−1)個のRNN部を表している。
また、上記実施形態において、スコア統合部5が第1スコアscr_fr(ai(j))および第2スコアscr_RNN(ai(j))を統合する処理は上記実施形態の例に限定されることなく、例えば、内分処理、外分処理等により、第1スコアscr_fr(ai(j))および第2スコアscr_RNN(ai(j))を統合するようにしてもよい。
句構造解析装置1000、2000を構成する各機能部は、例えばネットワークを介して接続されるものであってもよい。
また上記実施形態の句構造解析装置1000、2000は、複数の装置により実現されるものであってもよい。
また上記実施形態で説明した句構造解析装置1000、2000において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部または全部を含むように1チップ化されても良い。
なおここではLSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
また上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらにソフトウェアおよびハードウェアの混在処理により実現しても良い。
例えば上記実施形態の各機能部をソフトウェアにより実現する場合、図14に示したハードウェア構成(例えばCPU、ROM、RAM、入力部、出力部、通信部、記憶部(例えば、HDD、SSD等により実現される記憶部)、外部メディア用ドライブ等をバスBusにより接続したハードウェア構成)を用いて各機能部をソフトウェア処理により実現するようにしてもよい。
また上記実施形態の各機能部をソフトウェアにより実現する場合、当該ソフトウェアは、図14に示したハードウェア構成を有する単独のコンピュータを用いて実現されるものであってもよいし、複数のコンピュータを用いて分散処理により実現されるものであってもよい。
また上記実施形態における処理方法の実行順序は、必ずしも上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
前述した方法をコンピュータに実行させるコンピュータプログラム、及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここでコンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限らず、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
なお本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
本発明によれば、解析履歴全体に基づく素性を考慮した高精度な文の構文構造を解析することができる句構造解析装置およびプログラムを実現することができる。このため本発明は、自然言語処理関連産業分野において有用であり、当該分野において実施することができる。
1000、2000 句構造解析装置
Ms スタックメモリ
Mq キューメモリ
1 アクション設定部
3 第1スコア取得部
4 第2スコア取得部
5 スコア統合部
7 アクション決定部
8 解析結果出力部
Ms スタックメモリ
Mq キューメモリ
1 アクション設定部
3 第1スコア取得部
4 第2スコア取得部
5 スコア統合部
7 アクション決定部
8 解析結果出力部
Claims (5)
- アクションを時系列に実行することで文章の句構造を解析する句構造解析装置であって、
文章の句構造を解析するためのアクションを設定するアクション設定部と、
文章についてのデータである文データを入力し保持するキューメモリと、
前記キューメモリから出力されるデータを保持するスタックメモリと、
前記アクション設定部により設定されたアクションが実行されたとき、前記キューメモリに保持されているデータと前記スタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得し、取得した前記素性ベクトルに基づいて、第1スコアを取得する第1スコア取得部と、
入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを有する第1RNN部を含み、再帰型ニューラルネットワークを用いて取得した第2スコアを取得する第2スコア取得部と、
前記第1スコアと前記第2スコアとを統合することで統合スコアを取得するスコア統合部と、
前記統合スコアに基づいて、文章の句構造の解析の各段階のアクションを決定するアクション決定部と、
を備え、
前記第1RNN部の入力層は、前記アクション設定部により設定されたアクションの情報と、前記アクションが実行されたときの前記キューメモリに保持されているデータおよび前記アクションが実行されたときの前記スタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから前記第1RNN部の前記隠れ層に出力するためのデータを取得し、
前記第1RNN部の隠れ層は、前記第1RNN部の前記入力層により取得されたデータと前記保持部により保持されているデータとに基づいて、前記第1RNN部の前記出力層に出力するためのデータを取得し、
前記第1RNN部の出力層は、前記第1RNN部の前記隠れ層により取得されたデータに基づいて、第2スコアを取得する、
句構造解析装置。 - 前記第1スコア取得部は、さらに、
前記文データの素性を評価するための素性ベクトルを取得するために参照する素性テンプレートを保持する素性テンプレート格納部と、
前記アクション設定部により設定されたアクションが実行されたとき、前記素性テンプレートに基づいて、前記キューメモリに保持されているデータと前記スタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得する素性ベクトル取得部と、
前記素性テンプレートに基づいて、文データを用いて機械学習することで取得した素性ベクトル用のパラメータを保持するパラメータ保持部と、
前記素性ベクトルと前記パラメータとを用いて第1スコアを算出する第1スコア算出部と、
を備える、
請求項1に記載の句構造解析装置。 - 前記第2スコア取得部は、
第2〜第NRNN部と、第2スコア統合部と、をさらに備え、
第kRNN部(k:自然数、1≦k≦N)は、入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを有し、
前記第kRNN部の入力層は、前記アクション設定部により設定されたアクションの情報と、前記アクションが実行されたときの前記キューメモリに保持されているデータおよび前記アクションが実行されたときの前記スタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから前記第kRNN部の前記隠れ層に出力するためのデータを取得し、
前記第kRNN部の隠れ層は、前記第kRNN部の前記入力層により取得されたデータと前記保持部により保持されているデータとに基づいて、前記第kRNN部の前記出力層に出力するためのデータを取得し、
前記第kRNN部の出力層は、前記第kRNN部の前記隠れ層により取得されたデータに基づいて、第kRNNスコアを取得し、
前記第2スコア統合部は、
前記アクションをアクションai(j)とし、アクションai(j)が実行されたときに前記第kRNN部の出力層により取得される第kRNNスコアをscr_RNNk(ai(j))とし、scr_RNNk(ai(j))の重み付け係数をλkとし、前記第2スコアをscr_RNN(ai(j))とすると、
により、前記第2スコアscr_RNN(ai(j))を取得する、
請求項2に記載の句構造解析装置。 - 文章についてのデータである文データを入力し保持するキューメモリと、
前記キューメモリから出力されるデータを保持するスタックメモリと、
前記文データの素性を評価するための素性ベクトルを取得するために参照する素性テンプレートを保持する素性テンプレート格納部と、
を備える句構造解析装置に用いられ、
アクションを時系列に実行することで文章の句構造を解析する句構造解析方法をコンピュータに実行させるためのプログラムであって、
文章の句構造を解析するためのアクションを設定するアクション設定ステップと、
前記アクション設定ステップにより設定されたアクションが実行されたとき、前記素性テンプレートに基づいて、前記キューメモリに保持されているデータと前記スタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得し、取得した前記素性ベクトルに基づいて、第1スコアを取得する第1スコア取得ステップと、
入力層用処理ステップと、隠れ層用処理ステップと、出力層用処理ステップと、隠れ層用処理ステップの出力を保持する保持ステップと、を含む再帰型ニューラルネットワーク用処理を実行する第1RNNステップを含み、前記再帰型ニューラルネットワーク用処理を実行して取得した第2スコアを取得する第2スコア取得ステップと、
前記第1スコアと前記第2スコアとを統合することで統合スコアを取得するスコア統合ステップと、
前記統合スコアに基づいて、文章の句構造の解析の各段階のアクションを決定するアクション決定ステップと、
を備え、
前記第1RNNステップの入力層用処理ステップでは、前記アクション設定ステップにより設定されたアクションの情報と、前記アクションが実行されたときの前記キューメモリに保持されているデータおよび前記アクションが実行されたときの前記スタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから前記第1RNNステップの前記隠れ層用処理ステップで使用するためのデータを取得し、
前記第1RNNステップの隠れ層用処理ステップでは、前記第1RNNステップの前記入力層用処理ステップにより取得されたデータと前記保持ステップにより保持されているデータとに基づいて、前記第1RNNステップの前記出力層用処理ステップで使用するためのデータを取得し、
前記第1RNNステップの出力層用処理ステップでは、前記第1RNNステップの前記隠れ層処理用ステップにより取得されたデータに基づいて、第2スコアを取得する、
句構造解析方法をコンピュータに実行させるためのプログラム。 - 前記第1スコア取得ステップは、さらに、
前記アクション設定ステップにより設定されたアクションが実行されたとき、前記素性テンプレートに基づいて、前記キューメモリに保持されているデータと前記スタックメモリに保持されているデータとを参照し、所定の素性についての評価値を取得することで素性ベクトルを取得する素性ベクトル取得ステップと、
前記素性テンプレートに基づいて、文データを用いて機械学習することで取得した素性ベクトル用のパラメータを保持するパラメータ保持ステップと、
前記素性ベクトルと前記パラメータとを用いて第1スコアを算出する第1スコア算出ステップと、
を備え、
前記第2スコア取得ステップは、
第2〜第NRNNステップと、第2スコア統合ステップと、をさらに備え、
第kRNNステップ(k:自然数、1≦k≦N)は、入力層と、隠れ層と、出力層と、隠れ層の出力を保持する保持部と、を含む再帰型ニューラルネットワークを用いた処理を実行し、
前記第kRNNステップの入力層での処理は、前記アクション設定ステップにより設定されたアクションの情報と、前記アクションが実行されたときの前記キューメモリに保持されているデータおよび前記アクションが実行されたときの前記スタックに保持されているデータの少なくとも1つと、を入力とし、入力されたデータから前記第kRNNステップの前記隠れ層に出力するためのデータを取得する処理であり、
前記第kRNNステップの隠れ層での処理は、前記第kRNNステップの前記入力層の処理により取得されたデータと前記保持部により保持されているデータとに基づいて、前記第kRNNステップの前記出力層に出力するためのデータを取得する処理であり、
前記第kRNNステップの出力層での処理は、前記第kRNNステップの前記隠れ層の処理により取得されたデータに基づいて、第kRNNスコアを取得する処理であり、
前記第2スコア統合ステップは、
前記アクションをアクションai(j)とし、アクションai(j)が実行されたときに前記第kRNNステップの出力層での処理により取得される第kRNNスコアをscr_RNNk(ai(j))とし、scr_RNNk(ai(j))の重み付け係数をλkとし、前記第2スコアをscr_RNN(ai(j))とすると、
により、前記第2スコアscr_RNN(ai(j))を取得する、
請求項4に記載の句構造解析方法をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017000112A JP2018109862A (ja) | 2017-01-04 | 2017-01-04 | 句構造解析装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017000112A JP2018109862A (ja) | 2017-01-04 | 2017-01-04 | 句構造解析装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018109862A true JP2018109862A (ja) | 2018-07-12 |
Family
ID=62844880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017000112A Pending JP2018109862A (ja) | 2017-01-04 | 2017-01-04 | 句構造解析装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018109862A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019235325A1 (ja) | 2018-06-07 | 2019-12-12 | キヤノン株式会社 | 光学系、それを備える撮像装置及び撮像システム |
CN117973946A (zh) * | 2024-03-29 | 2024-05-03 | 云南与同加科技有限公司 | 一种面向教学的数据处理方法及系统 |
-
2017
- 2017-01-04 JP JP2017000112A patent/JP2018109862A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019235325A1 (ja) | 2018-06-07 | 2019-12-12 | キヤノン株式会社 | 光学系、それを備える撮像装置及び撮像システム |
CN117973946A (zh) * | 2024-03-29 | 2024-05-03 | 云南与同加科技有限公司 | 一种面向教学的数据处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210342699A1 (en) | Cooperative execution of a genetic algorithm with an efficient training algorithm for data-driven model creation | |
JP6910012B2 (ja) | 文章評価装置、及び文章評価方法 | |
US11604956B2 (en) | Sequence-to-sequence prediction using a neural network model | |
JP7110240B2 (ja) | ニューラルネットワーク分類 | |
JP6839342B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
US11531824B2 (en) | Cross-lingual information retrieval and information extraction | |
US20210035556A1 (en) | Fine-tuning language models for supervised learning tasks via dataset preprocessing | |
US10860800B2 (en) | Information processing method, information processing apparatus, and program for solving a specific task using a model of a dialogue system | |
JP2010044637A (ja) | データ処理装置、方法、及びプログラム | |
JP7113474B2 (ja) | データ・セグメンテーション装置 | |
US20230394369A1 (en) | Tracking provenance in data science scripts | |
KR102496030B1 (ko) | 데이터 분류를 위한 강화 학습 장치 및 방법 | |
WO2014073206A1 (ja) | 情報処理装置、及び、情報処理方法 | |
Almagro Armenteros et al. | Language modelling for biological sequences–curated datasets and baselines | |
KR20210114256A (ko) | 지식 그래프를 이용한 상황 인지형 다중 문장 관계 추출 방법 및 장치 | |
TWI570554B (zh) | 軟體測試裝置、軟體測試方法及其電腦程式產品 | |
Xue et al. | Automatic generation and recommendation for API mashups | |
JP6743942B2 (ja) | 語彙テーブルの選択方法、装置およびコンピュータ読み取り可能な記憶媒体 | |
JP2023552048A (ja) | ハードウェアアクセラレータのためのニューラルアーキテクチャスケーリング | |
JP2018109862A (ja) | 句構造解析装置およびプログラム | |
WO2020218246A1 (ja) | 最適化装置、最適化方法、及びプログラム | |
US11829719B2 (en) | Data processing device, data processing method, and data processing program | |
JP6389776B2 (ja) | 言語識別モデル学習装置、言語識別装置、言語識別方法、およびプログラム | |
JP6509391B1 (ja) | 計算機システム | |
JP6547345B2 (ja) | テストケース生成プログラム、テストケース生成方法およびテストケース生成装置 |