(57)【特許請求の範囲】
【請求項１】
文書データに基づいて、単語の各々について、当該単語の特徴を表す単語ベクトルを学習する単語ベクトル学習装置であって、
前記単語ベクトルの何れかの次元を順番に対象次元とし、単語の文脈情報と、前記単語ベクトルとに基づいた前記対象次元に関する目的関数であって、前記単語ベクトル中の当該対象次元を除く各次元の値を定数とみなすことで定まる前記目的関数を最適化するように、当該対象次元の値を推定する処理を、前記単語ベクトル中の各次元について繰り返す反復最適化部
を含む単語ベクトル学習装置。
【請求項２】
前記反復最適化部は、前記単語ベクトル中の各次元について、小さい次元から順番に当該対象次元の値を推定する処理を繰り返す請求項１に記載の単語ベクトル学習装置。
【請求項３】
前記反復最適化部は、前記単語ベクトルの何れかの次元を順番に対象次元ｄとし、さらに前記単語ベクトルに対応する単語が他の単語の文脈として出現することを表す文脈ベクトルであって前記単語ベクトルと同じ次元数の文脈ベクトルの次元ｄを対象次元とし、単語の文脈情報と、前記単語ベクトルと、前記文脈ベクトルとに基づいた前記対象次元ｄに関する目的関数であって、前記単語ベクトル中、又は前記文脈ベクトル中の当該対象次元ｄを除く、前記単語ベクトル及び前記文脈ベクトルの各次元の値を定数とみなすことで定まる前記目的関数を最適化するように、当該対象次元の値を推定する処理を、前記単語ベクトル中の各次元について繰り返す請求項１又は請求項２に記載の単語ベクトル学習装置。
【請求項４】
前記反復最適化部は、
前記単語の各々についての単語ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び前記文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての文脈ベクトルの対象次元の値を推定する文脈ベクトル最適化部と、
前記単語の各々についての文脈ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトルの対象次元の値を推定する単語ベクトル最適化部と、
予め定められた反復終了条件を満たすまで、前記文脈ベクトル最適化部による推定、及び前記単語ベクトル最適化部による推定を交互に繰り返し行う反復判定部と、を含み、
前記単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、前記文脈ベクトル最適化部、前記単語ベクトル最適化部、及び前記反復判定部による処理を繰り返す請求項３に記載の単語ベクトル学習装置。
【請求項５】
次元数の更新情報に基づいて前記単語ベクトルの次元数を増加する次元数増加部を更に含み、
前記反復最適化部は、学習された前記単語ベクトルに対して次元数を増やして前記単語ベクトルを学習する場合、前記単語ベクトル中の前記増加した分の各次元を順番に対象次元とし、前記推定する処理を繰り返す請求項１〜請求項４の何れか１項に記載の単語ベクトル学習装置。
【請求項６】
入力された入力文書に対して、請求項１〜請求項５の何れか１項記載の単語ベクトル学習装置で学習された各単語の前記単語ベクトルを用いて、前記単語ベクトルに基づく単語間の意味的な類似度に基づく自然言語処理を行う自然言語処理部
を含む自然言語処理装置。
【請求項７】
入力文書に基づき、単語の各々について、当該単語の特徴を表す単語ベクトルの学習を行い、学習された各単語の単語ベクトルを用いて、前記入力文書に対し、前記単語ベクトルに基づく単語間の意味的な類似度に基づく自然言語処理を行う自然言語処理装置であって、
前記学習は、前記単語ベクトルの何れかの次元を順番に対象次元とし、前記入力文書から得られる単語の文脈情報と、前記単語ベクトルとに基づいた前記対象次元に関する目的関数であって、前記単語ベクトル中の当該対象次元を除く各次元の値を定数とみなすことで定まる前記目的関数を最適化するように、当該対象次元の値を推定する処理を、前記単語ベクトル中の各次元について繰り返すことを特徴とする自然言語処理装置。
【請求項８】
文書データに基づいて、単語の各々について、当該単語の特徴を表す単語ベクトルを学習する単語ベクトル学習装置における単語ベクトル学習方法であって、
反復最適化部が、前記単語ベクトルの何れかの次元を順番に対象次元とし、単語の文脈情報と、前記単語ベクトルとに基づいた前記対象次元に関する目的関数であって、前記単語ベクトル中の当該対象次元を除く各次元の値を定数とみなすことで定まる前記目的関数を最適化するように、当該対象次元の値を推定する処理を、前記単語ベクトル中の各次元について繰り返すステップ
を含む単語ベクトル学習方法。
【請求項９】
コンピュータを、請求項１〜請求項５の何れか１項に記載の単語ベクトル学習装置を構成する各部として機能させるためのプログラム。
【請求項１０】
コンピュータを、請求項６又は請求項７に記載の自然言語処理装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単語ベクトル学習装置、自然言語処理装置、方法、及びプログラムに係り、特に、単語に関する単語ベクトルを学習する単語ベクトル学習装置、自然言語処理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
個々の単語は離散シンボルであり、かつ物理現象などに基づくものでもないことから、単語間の類似度を定量的に表現するのはそれほど単純ではない。比較として、例えば音声は、計算機上では一般的に周波数の時系列データとして捉えられる。よって、任意の音声区間同士の類似度は、周波数から算出できる様々な特徴量（連続値）をベクトル化したものの間で距離を計算することで、ある程度計測することができる。同様に、画像間の類似度も画素情報を特徴量としてベクトル化したものの間で距離を計算することである程度容易に計算できる。このように、波形であったり色彩であったり物理的な現象を基とするものの間の類似度は、計算機上でも比較的自然に扱うことが可能であるが、言語のような離散的なシンボルで記述された物理現象にも則さないものの間の類似度は、計算機上で単純には扱えない。
【０００３】
このような背景から、単語のような離散シンボル間の類似度を計算するために、これまで様々な方法論が考案されている。そのひとつに分散意味表現という方法がある。これは、音声や画像と同様に、各単語に一つのベクトルを割り振り、そのベクトル間の距離をもって単語間の意味的な類似度を表現しようと試みる方法である．ベクトル空間内の距離計算で単語間の意味的な近さを表現するので、計算機にとっては非常に親和性が高い方法と言える。
【０００４】
図９に分散意味表現による単語間の類似度の概要を示す。
【０００５】
ここでは、ｉ番目の単語をｗｉと表す。また、ｉ番目の単語ｗｉに割り当てられたベクトルをｒ´ｉで表す。なお、ベクトルを表す記号には、記号の後ろに「´」を付して表現する。
以降、単語に割り振られたベクトルのことを特別に「単語ベクトル」と呼ぶこととする。つまり、単語ｗｉの単語ベクトルはｒ´ｉである。この時、計算機上の計算としては、以下（１）式において表すように、二つの単語ｗｉとｗｊと間の類似度は、ｗｉと、ｗｊとの単語ベクトル間の内積、あるいは、コサイン距離により定義するのが一般的である。
【０００６】
【数１】
0006517537.tif 000002
【０００７】
この場合、内積あるいはコサイン距離の値が大きければ大きいほど単語ｗｉとｗｊは似ているということを意味する。これによって、翻訳、対話、文書要約、又は文書校正といった言語処理の様々なアプリケーションの中で意味的に類似性がある単語を処理の中で扱えるようになる利点がある。結果として、単語間の意味的な近さを用いない処理方式より良い結果が得られることが示されている。ここで、各単語の単語ベクトルの獲得方法には、これまで多くの方法が提案されている。基本的な方法論としては、まず文章内の各単語に対して、その単語の文脈情報を定義する。文脈情報に特に規定はなく様々な情報を用いることができるが、最も単純には各単語の周辺に出現する単語を文脈情報として扱う場合がほとんどである。文脈の定義を変更しても、単語ベクトルの推定アルゴリズムそのものにはあまり影響を与えない。よって、以降の議論では、単語の文脈情報としては、周辺に出現する単語とする。
【０００８】
近年では、ｗｅｂから得られるような大規模なデータにも対応できるほど高速に処理可能な方法が主流となっている（非特許文献１及び非特許文献２参照）。大規模データが扱える手法が主流な理由は、データが多ければ多いほど、言語事象を的確に捉えることが可能となるため、類似度の推定精度が向上することが理論的にも期待できるからである。ここでは従来方式の代表として、非特許文献２に即した単語ベクトルの獲得方法を述べる。
【０００９】
非特許文献２の方式では、単語がある他の単語の文脈として出現した場合を表現するために、各単語に単語ベクトルとは別のもう一つのベクトルを割り当てる。これを単語ベクトルと対比して便宜上「文脈ベクトル」と呼ぶ。つまり、ｉ番目の単語ｗｉは、単語ベクトルｒ´ｉと文脈ベクトルｃ´jの二つのベクトルを持つ。
【００１０】
単語がＮ単語あるとする。この時に、（ｒ´ｉ）ｉ＝１Ｎを全ての単語ベクトルをｉ＝１からＮまで順番に並べたベクトルのリストとする。同様に、（ｃ´ｊ）ｊ＝１Ｎを全ての文脈ベクトルのｊについて１からＮまで順番に並べたベクトルのリストとする。また、ｉ番目の単語に対してｊ番目の単語が文脈となった回数をＸｉ，ｊとする。この時、非特許文献２に即した分散意味表現の獲得には以下（３）の目的関数を最小化する問題として、以下（２）式により定式化できる。
【００１１】
【数２】
0006517537.tif 000003
【００１２】
ただし、＾ｒ´ｉ及び＾ｃ´ｊは，単語ベクトル及び文脈ベクトルの推定結果である。
【００１３】
最終的に得られた＾ｒ´ｉがｉ番目の単語の単語ベクトルである。これが、（１）式の類似度計算などで用いられる単語ベクトルとなる。また、翻訳、又は文書校正等の自然言語処理の応用アプリケーションで利用される。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, Efficient Estimation of Word Representations in Vector Space. Proceedings of Workshop at ICLR, 2013.
【非特許文献２】Jeffrey Pennington, Richard Socher, and Christopher Manning, Glove: Global Vectors for Word Representation. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP),2014.
【発明の概要】
【発明が解決しようとする課題】
【００１５】
前述の非特許文献２のような現在主流に用いられている方法の課題は、学習を行う前に扱う「単語数」、出力となるベクトル空間の「次元数」を明示的に決定しなくてはいけない点である。議論を明確にするために、以降単語数をＮ、出力ベクトル空間の次元数をＤと記述することとする。つまり、分散意味表現の学習を始める前に単語数Ｎと次元数Ｄを決めて学習を始めることを意味する。
【００１６】
一般的に分散意味表現を構築する状況を考えると、学習に用いることが可能なデータは日々増加、更新する場合がほとんどであり、理想的には学習データの更新分に合わせて逐次学習していきたいという状況が発生する。また単語ベクトルの適切な次元数は、取り扱う学習データ量によって異なると考えられるため、例えば、学習データ量が増加した際にベクトルの次元数を増やすといった処理を違和感なく扱える枠組みであることが望ましい。更に、これらの理由がなかったとしても、分散意味表現の学習は基本的に非凸最適化問題であり局所最適解が複数あるため、同じデータを用いていて同じ目的関数を使っても、学習時の初期値や手順の違いによって、得られる単語ベクトルが大きく異なることがあるという性質を持つ。このため、少し学習データが増加した状況で、再学習前後の単語ベクトルの間に関係性が全くないとすると、分散意味表現を再学習するたびに、それを利用したシステムのシステムパラメタも再推定しなくてはいけないというデメリットが生じる。
【００１７】
本発明は、上記問題点を解決するために成されたものであり、効率よく、単語ベクトルを学習するごとができる単語ベクトル学習装置、方法、及びプログラムを提供することを目的とする。
【００１８】
また、学習された単語ベクトルを用いて、単語の意味的な類似度に基づく自然言語処理を行う自然言語処理装置、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、第１の発明に係る単語ベクトル学習装置は、文書データに基づいて、単語の各々について、前記単語に関する単語ベクトル、及び前記単語が他の単語の文脈として出現することを表す文脈ベクトルを学習する単語ベクトル学習装置であって、前記単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返す反復最適化部、を含んで構成されている。
【００２０】
また、第１の発明に係る単語ベクトル学習装置において、前記反復最適化部は、前記単語の各々についての単語ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての文脈ベクトルの対象次元の値を推定する文脈ベクトル最適化部と、前記単語の各々についての文脈ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトルの対象次元の値を推定する単語ベクトル最適化部と、予め定められた反復終了条件を満たすまで、前記文脈ベクトル最適化部による推定、及び前記単語ベクトル最適化部による推定を交互に繰り返し行う反復判定部と、を含み、前記単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、前記文脈ベクトル最適化部、前記単語ベクトル最適化部、及び前記反復判定部による処理を繰り返すようにしてもよい。
【００２１】
また、第１の発明に係る単語ベクトル学習装置において、前記反復最適化部は、学習された前記単語ベクトル及び文脈ベクトルに対して次元数を増やして前記単語ベクトル及び文脈ベクトルを学習する場合、前記単語ベクトル及び文脈ベクトルの学習されていない何れかの次元を順番に対象次元とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返すようにしてもよい。
【００２２】
また、第１の発明に係る単語ベクトル学習装置において、前記反復最適化部は、以下（５）式により表される、対象次元ｄに関する前記目的関数を、以下（４）式に従って最適化するように、単語ｉの各々についての単語ベクトルｒ´ｉ及び単語ｊの各々についての文脈ベクトルｃ´ｊの対象次元ｄの値を推定することを繰り返すようにしてもよい。
【数３】
0006517537.tif 000004
【００２３】
ただし、ｒｉ，ｄは単語ｉの単語ベクトルｒ´ｉの次元ｄの要素、ｃｊ，ｄは単語ｊの文脈ベクトルｃ´jの次元ｄの要素を表し、＾ｒｉ，ｄはｒｉ，ｄの、＾ｃｊ，ｄはｃｊ，ｄの推定結果を表し、ｂｉ，ｊ，ｄ＝−ｒ´ｉ（ｄ）・ｃ´ｊ（ｄ）＋ｌｏｇ（Ｘｉ，ｊ）であり、ｒ´ｉ（ｄ）は、単語ｉの単語ベクトルｒ´ｉの次元ｄの要素を０に置き換えた単語ベクトルを表し、ｃ´ｊ（ｄ）は、単語ｊの単語ベクトルｃ´ｊの次元ｄの要素を０に置き換えた文脈ベクトルを表し、Ｘｉ，ｊは単語ｉに対して単語ｊが文脈として出現した回数を表す。
【００２４】
第２の発明に係る自然言語処理装置は、入力された入力文書に対して、上記の単語ベクトル学習装置で学習された各単語の前記単語ベクトルを用いて、前記単語ベクトルに基づく単語間の意味的な類似度に基づく自然言語処理を行う自然言語処理部、を含んで構成されている。
【００２５】
第３の発明に係る単語ベクトル学習方法は、文書データに基づいて、単語の各々について、前記単語に関する単語ベクトル、及び前記単語が他の単語の文脈として出現することを表す文脈ベクトルを学習する単語ベクトル学習装置における単語ベクトル学習方法であって、反復最適化部が、前記単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返すステップ、を含んで実行することを特徴とする。
【００２６】
第３の発明に係る単語ベクトル学習方法において、前記反復最適化部が推定することを繰り返すステップは、文脈ベクトル最適化部が、前記単語の各々についての単語ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての文脈ベクトルの対象次元の値を推定するステップと、単語ベクトル最適化部が、前記単語の各々についての文脈ベクトルの対象次元の値を固定とし、前記単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、前記対象次元に関する目的関数を最適化するように、前記単語の各々についての単語ベクトルの対象次元の値を推定するステップと、反復判定部が、予め定められた反復終了条件を満たすまで、前記文脈ベクトル最適化部による推定、及び前記単語ベクトル最適化部による推定を交互に繰り返し行うステップと、を含み、前記単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、前記文脈ベクトル最適化部が推定するステップ、前記単語ベクトル最適化部が推定するステップ、及び前記反復判定部によって処理を繰り返すことを特徴とする。
【００２７】
第４の発明に係るプログラムは、コンピュータを、上記の単語ベクトル学習装置、又は自然言語処理装置を構成する各部として機能させるためのプログラムである。
【発明の効果】
【００２８】
本発明の単語ベクトル学習装置、方法、及びプログラムによれば、単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、対象次元に関する目的関数を最適化するように、単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返すことにより、効率よく、単語ベクトルを学習するごとができる、という効果が得られる。
【００２９】
また、本発明の自然言語処理装置、及びプログラムによれば、学習された単語ベクトルを用いて、単語の意味的な類似度に基づく自然言語処理を行うことができる、という効果が得られる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係る単語ベクトル学習装置の構成を示すブロック図である。
【図２】単語リスト及び文脈の共起情報の例を示す図である。
【図３】一次元の単語ベクトルの例を示す図である。
【図４】次元数を増やした二次元の単語ベクトルの例を示す図である。
【図５】１０次元の単語ベクトルの例を示す図である。
【図６】本発明の実施の形態に係る自然言語処理装置の構成を示すブロック図である。
【図７】本発明の実施の形態に係る単語ベクトル学習装置における単語ベクトル学習処理ルーチンを示すフローチャートである。
【図８】本発明の実施の形態に係る自然言語処理装置における自然言語処理ルーチンを示すフローチャートである。
【図９】分散意味表現による単語間の類似度の概要を示す図である。
【発明を実施するための形態】
【００３１】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００３２】
＜本発明の実施の形態に係る概要＞
【００３３】
まず、本発明の実施の形態における概要を説明する。本発明の実施の形態では、現実の環境で分散意味表現を利用する際に起こりえる状況に即して、単語数Ｎと次元数Ｄの更新という観点から、逐次追加可能で継続的に学習が行え、かつ、得られる結果は前回の結果を極力保持したような振る舞いとなる単語の分散意味表現獲得方法の枠組みを提案する。本実施の形態でも従来法と同様に、上記（２）式で示した最適化問題を基本的に踏襲して単語ベクトルを獲得する。ただし、前述の単語数Ｎと次元数Ｄが逐次増加するような状況でも継続的に学習を行えるような枠組みへ変更する。
【００３４】
まず、全ての単語ベクトルｒ´ｉと文脈ベクトルｃ´ｊはＤ次元のベクトルからなるものとする。ただし、Ｄ≧１である。このとき任意の対象次元ｄに対して、全ての単語ベクトルの次元ｄの要素のみを最適化変数とし、それ以外（次元ｄ以外）の要素の値を定数とみなす。ただし、１≦ｄ≦Ｄである。この設定で、上記（２）式の最適化問題を解くことを考えると、各単語について１変数の最適化問題を解く問題とみなせる。このとき当たり前の話であるが、各ベクトルの次元ｄの要素のみを最適化変数と決定したので、最適化後に変更される単語ベクトルの要素は選択した次元ｄの要素のみである。対象次元ｄでの学習が終了した後に、対象次元ｄの選択を適宜変更し同様の学習を繰り返す、という処理へ変更する。このように変更しても、単に各次元毎の最適化を繰り返すことで元の最適化問題の解を得ようという最適化アルゴリズムを用いていると解釈できるので、基本的には同じ問題を、ある特定の方法で解いているという解釈ができる。
【００３５】
本実施の形態では、まず、基本的に学習は永続的に行われるという状況において、学習環境の設定でおこなう。ただし、実際に処理が発生するのは、（１）文書データが更新された場合、（２）単語ベクトルの次元数を増加したいとき、の２パターンの事象が発生した場合に限られる。学習にはある程度の時間を必要とするが、上記２パターンの事象の発生より学習時間の方が短ければ、処理としては停止した状態で待機するような形式となる。
【００３６】
また、学習の開始時は単語ベクトルの数はＮ＝０、ベクトルの次元はＤ＝１に設定されていることとする。このように、本実施の形態においては、最初は必ず単語数や次元数が最小の状態から始めることができる。
【００３７】
主な処理の流れは、以下の処理１〜処理４のようになる。
【００３８】
（処理１）：待機
文書データ更新のシグナルを受信したら処理２Ａへ移行する。
単語ベクトルの次元数増加のシグナルを受信したら処理２Ｂへ移行する。
【００３９】
（処理２Ａ）：文書データの更新
文書データを読み込み、単語と文脈単語の共起情報を更新する。
文書データに出現した単語数に従って単語数Ｎの値を更新する。
対象次元ｄをｄ＝１とセットする。
【００４０】
（処理２Ｂ）：ベクトルに対する次元の追加
単語ベクトル及び文脈ベクトルの要素を末尾に一つ増やし初期化する。
次元数ＤをＤ＝Ｄ＋１とする。
ｄの初期値をｄ＝Ｄとセットする。
【００４１】
（処理３）
後述する（６）式に従って対象次元ｄに関する最適化問題を解き、単語ベクトルの対象次元ｄの値を更新する。
【００４２】
（処理４）
ｄがｄ＝Ｄならば処理１へ戻る。
ｄがｄ＝Ｄ以外であればｄ＝ｄ＋１として処理３へ戻る。
【００４３】
本発明の実施の形態では、上記の処理１〜処理４を、ｗｅｂ上に存在する自然言語で記述された電子化文書を使って、単語の分散意味表現を獲得する問題を題材として適用した単語ベクトル学習装置を例に説明する。
【００４４】
＜本発明の実施の形態に係る単語ベクトル学習装置の構成＞
【００４５】
次に、本発明の実施の形態に係る単語ベクトル学習装置の構成について説明する。図１に示すように、本発明の実施の形態に係る単語ベクトル学習装置１００は、ＣＰＵと、ＲＡＭと、後述する単語ベクトル学習処理ルーチンを実行するためのプログラムや各種データを記憶したＲＯＭと、を含むコンピュータで構成することが出来る。この単語ベクトル学習装置１００は、機能的には図１に示すように入力部１０と、演算部２０と、出力部５０とを備えている。また、単語ベクトル学習装置１００は、初期状態は、何も学習していない状態であると仮定する。よって単語数ＮはＮ＝０、次元数ＤはＤ＝１に設定されている。
【００４６】
入力部１０は、文書データ及び文書データ更新のシグナル、又は次元数増加のシグナルを受け付ける。文書データとしては、本実施の形態では、ある一日のＳＮＳサイト等へ投稿される一般ユーザが生成する文書データを用いる。
【００４７】
演算部２０は、文書データ更新部２６と、次元数増加部２８と、反復最適化部３０と、ベクトル記憶部４０とを含んで構成されている。
【００４８】
文書データ更新部２６は、以下に説明するように、入力部１０から文書データ更新のシグナルを受け取った場合に、文書データの更新に伴い、単語リストと、単語の文脈の共起情報を更新すると共に、新たに追加された単語の単語ベクトル及び文脈ベクトルを準備する。
【００４９】
文書データ更新部２６は、まず、受け付けた文書データに基づいて、単語リストと、単語の文脈の共起情報とを更新する。ここで得られた単語リスト内の単語数に基づいてＮを設定する。本実施の形態では、単語リストに用いる単語数は、受け付けた文書データに出現する全単語とする。例えば、単語数が１万単語であれば、Ｎ＝１０，０００である。あるいは、ある頻度以上出現した単語としてもよい。
【００５０】
次に、文書データ更新部２６は、単語と、当該単語の文脈から抽出された単語とのペアをまとめ、共起情報を得る。例えば、各単語の文脈情報として、対象となる単語の前後２単語を抽出する。ただし、前後何単語を実際に使うかは任意に定めればよく、いくつでもよい。その際に出現数（共起頻度）も併せて記録する。このペアと頻度が統計情報として事前に獲得されるものである。
【００５１】
図２に単語リスト及び文脈の共起情報の例を示す。なお、ここで示す例では簡単のため、単語区切りなどは、一般的によく用いられるツール等を用いて容易に獲得可能であることを前提とする。日本語の場合は、フリーで利用できるツールが存在するし、英語であれば、空白区切りを単語の区切りとして利用すれば良い。また、本実施の形態では日本語の例として説明するが、英語に適用してもよい。また、本実施の形態では、処理を簡便化、高速化するため、事前に単語と文脈の共起情報を文書データから取得しておく。
【００５２】
次に、文書データ更新部２６は、文書データの更新により新たに追加された単語については、当該単語の単語ベクトル及び文脈ベクトルを、ベクトル記憶部４０に記憶されている単語ベクトル及び文脈ベクトルに追加する。初期状態では、次元数ＤがＤ＝１なので、文書データ更新部２６は、各単語に対して、全て１次元の単語ベクトル及び文脈ベクトルを準備し、ベクトル記憶部４０に記憶する。
【００５３】
次元数増加部２８は、入力部１０から次元数増加のシグナルを受け取った場合に処理を実行する。次元数の増加に対応するため、全ての単語ベクトル及び文脈ベクトルの各々について、次元を一つ追加し、追加した次元の要素を任意の値で初期化する。次に、次元数ＤをＤ＝Ｄ＋１と更新する。
【００５４】
反復最適化部３０は、文脈ベクトル最適化部３２と、単語ベクトル最適化部３４と、反復判定部３６とを含んで構成されている。
【００５５】
まず、反復最適化部３０の原理について説明する。
【００５６】
反復最適化部３０は、単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、単語の各々についての単語ベクトル及び文脈ベクトルの対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、対象次元に関する目的関数を最適化するように、単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返す。
【００５７】
反復最適化部３０は、具体的には、以下の処理を行う。まず、入力として、文書データ更新部２６から単語リストと文脈の共起頻度とを受け付ける。そして、処理対象の次元数を表す変数ｄの初期値を１と設定する。記述を簡単にするために、ｉ番目の単語の単語ベクトルｒ´ｉに対して、次元ｄの要素をｒｉ，ｄとする。次に、単語ベクトルｒ´ｉの次元ｄの要素を０に固定したベクトルをｒ´ｉ（ｄ）とする。同様に、文脈ベクトルｃ´ｊの次元ｄの要素を０に固定したベクトルをｃ´ｊ（ｄ）とする。このとき、最適化に用いる変数は、全ての単語ｉに対するｒｉ，ｄ及び全ての単語ｊに対するｃｊ，ｄのみとし、全てのｒ´ｉ（ｄ）及びｃ´ｊ（ｄ）は定数とする。更に記述を簡単にするため、最適化中に定数となる項をまとめてｂｉ，ｊ，ｄ＝−ｒ´ｉ（ｄ）・ｃ´ｊ（ｄ）＋ｌｏｇ（Ｘｉ，ｊ）とおく。
【００５８】
このとき、以下（６）式に示す、対象次元ｄに関する最適化問題を解く。
【００５９】
【数４】
0006517537.tif 000005
【００６０】
上記（６）式は、上記（２）式と比較して、単純に全ての単語ベクトル及び文脈ベクトルの次元ｄの要素のみが最適化変数となり、それ以外の次元の要素は全て固定された状態で最適化を行うことを意味している。よって、Ｄ＝１であるならば、（２）式と（６）式は完全に等価であることを意味する。
【００６１】
上記（６）式の最適化時には、全ての単語ｉに対してｒｉ，ｄを固定し、全ての単語ｊに関して変数ｃｊ，ｄを最適化する。逆に、全ての単語ｊに対してｃｊ，ｄを固定し、全ての単語ｉに関して変数ｒｉ，ｄを最適化する、という処理を交互に繰り返して最終的に（６）式の最適化問題の解を得る。このように、それぞれの問題は、それぞれの変数に対して解析解が求めるので正確な解が求まる。以下、反復最適化部３０における、文脈ベクトル最適化部３２、単語ベクトル最適化部３４、及び反復判定部３６の各部の処理について説明する。
【００６２】
文脈ベクトル最適化部３２は、全ての単語ｉについての単語ベクトルｒ´ｉの対象次元ｄの値を、ベクトル記憶部４０に記憶されているｒｉ，ｄに固定し、各単語ｉについての単語ベクトルｒ´ｉ及び各単語ｊについての文脈ベクトルｃ´ｊの、対象次元と異なる各次元の値と、単語ペアについて一方の単語ｉが他方の単語ｊの文脈として出現した回数Ｘｉ,ｊとに基づいて、対象次元ｄに関する上記（７）式に示す目的関数を最適化するように、各単語ｊについての文脈ベクトルｃ´ｊの対象次元ｄの値を推定して、ベクトル記憶部４０に記憶する。ここで、文脈ベクトル最適化部３２は、全ての単語ｉについての単語ベクトルｒ´ｉの対象次元ｄの値ｒｉ，ｄを固定して、各単語ｊに関して文脈ベクトルｃ´ｊの対象次元ｄの要素ｃｊ，ｄを最適化する場合は、以下（８）式のように、全ての単語ｊに対して各要素ｃｊ，ｄの偏微分が０になる値を求めればよい。
【００６３】
【数５】
0006517537.tif 000006
【００６４】
単語ベクトル最適化部３４は、全ての単語ｊについての文脈ベクトルｃ´ｊの対象次元ｄの値をベクトル記憶部４０に記憶されているｃｊ，ｄに固定し、各単語ｉ、ｊについての単語ベクトルｒ´ｉ及び文脈ベクトルｃ´ｊの対象次元と異なる各次元の値と、単語ペアについて一方の単語ｉが他方の単語ｊの文脈として出現した回数Ｘｉ,ｊとに基づいて、対象次元ｄに関する上記（７）式に示す目的関数を最適化するように、各単語ｉについての単語ベクトルｒ´ｉの対象次元ｄの値を推定して、ベクトル記憶部４０に記憶する。ここで、単語ベクトル最適化部３４は、全ての単語ｊについての単語ベクトルｃ´ｊの対象次元ｄの値ｃj，ｄを固定して、各単語ｉに関して単語ベクトルｒ´ｉの対象次元ｄの要素ｒｉ，ｄを最適化する場合は、以下（９）式のように、全ての単語ｉに対して各要素ｒｉ，ｄの偏微分が０になる値を求めればよい。
【００６５】
【数６】
0006517537.tif 000007
【００６６】
反復判定部３６は、予め定められた反復終了条件を満たすまで、文脈ベクトル最適化部３２による推定、及び単語ベクトル最適化部３４による推定を交互に繰り返し行う。反復終了条件としては、例えば、上記（８）式と（９）式とを交互に計算すると、上記（７）式の目的関数の値は必ず同じか、小さくなるため、目的関数の値が変化しなくなるか、ほとんど変化がなくなるまで処理を繰り返す。そして、対象次元ｄがｄ＝Ｄであれば、次の学習データ更新のシグナル又は次元数増加のシグナルが届くまで待機する。一方、対象次元ｄがｄ≠Ｄであれば、ｄ＝ｄ＋１として対象次元を変更し、次の対象次元において、文脈ベクトル最適化部３２、及び単語ベクトル最適化部３４の処理を繰り返す。例えば、評判分析等に利用するため、単語ベクトルを１０次元程度まで拡充したいという要求があったと仮定した場合、次元数増加のシグナルを受け付ける。この時、本実施の形態に係る単語ベクトル学習装置は必ず１次元ずつしか増やさないため、次元数増加部２８、文脈ベクトル最適化部３２、及び単語ベクトル最適化部３４の一連の処理を１０回繰り返す。
【００６７】
図３に反復最適化部３０による推定により得られた一次元の単語ベクトルの例を示し、図４及び図５に、次元数を増やして、反復最適化部３０による推定を繰り返して得た単語ベクトルの例を示す。
【００６８】
＜本発明の実施の形態に係る自然言語処理装置の構成＞
【００６９】
次に、本発明の実施の形態に係る自然言語処理装置の構成について説明する。図６に示すように、本発明の実施の形態に係る自然言語処理装置２００は、ＣＰＵと、ＲＡＭと、後述する自然言語処理ルーチンを実行するためのプログラムや各種データを記憶したＲＯＭと、を含むコンピュータで構成することが出来る。この自然言語処理装置２００は、機能的には図６に示すように入力部２１０と、演算部２２０と、出力部２５０とを備えている。本実施の形態では、自然言語処理装置２００では、単語ベクトル学習装置１００により学習された単語ベクトルに基づいて、未知の単語を類似度の高い単語に置き換えて翻訳を行う場合を例に説明するが、これに限定されるものではなく、置き換えた単語を用いて要約、文書校正などを行ってもよい。
【００７０】
入力部２１０は、翻訳対象のテキストを受け付ける。
【００７１】
演算部２２０は、自然言語処理部２３０と、ベクトル記憶部２４０とを備えている。
【００７２】
ベクトル記憶部２４０には、ベクトル記憶部４０と同じものが記憶されている。
【００７３】
自然言語処理部２３０は、置換部２３２と、翻訳部２３４とを備えている。
【００７４】
置換部２３２は、入力部２１０で受け付けたテキストの単語のうち、単語を格納した既存の辞書（図示省略）にない未知の単語を抽出し、ベクトル記憶部４０に記憶されている単語に対する文脈ベクトルに基づいて、未知の単語に対して最も類似度が高い、辞書中の単語を推定する。そして、未知の単語を、推定された辞書中の単語に置き換えたテキストを生成する。
【００７５】
翻訳部２３４は、置換部２３２により単語が置き換えられたテキストを既存の手法により翻訳し、出力部２５０に出力して処理を終了する。
【００７６】
なお、自然言語処理装置２００において、他の自然言語処理を行う際に、特定の文書中に出現する単語と類似する単語を辞書から抽出して、処理対象に含めることで、情報を増やして精度を向上させることが可能である。この際、出現した各単語に対して、上記（１）式を計算して類似度が高い単語を処理に含めるといったことを行う。
【００７７】
＜本発明の実施の形態に係る単語ベクトル学習装置の作用＞
【００７８】
次に、本発明の実施の形態に係る単語ベクトル学習装置１００の作用について説明する。入力部１０において文書データ及び文書データ更新のシグナル、又は次元数増加のシグナルを受け付けると、単語ベクトル学習装置１００は、図７に示す単語ベクトル学習処理ルーチンを実行する。
【００７９】
まず、ステップＳ１００では、入力部１０において受け付けたシグナルが、文書データ更新のシグナル、又は次元数増加のシグナルのいずれのシグナルであるかを判定し、文書データ更新のシグナルであれば、ステップＳ１０２へ移行し、次元数増加のシグナルであれば、ステップＳ１０８へ移行する。
【００８０】
ステップＳ１０２では、入力部１０で受け付けた文書データに基づいて、単語リストと、単語の文脈の共起情報を更新する。
【００８１】
ステップＳ１０４では、入力部１０で受け付けた文書データにより新たに単語が追加されているかを判定し、追加されていればステップＳ１０６へ移行し、追加されていなければステップＳ１１０へ移行する。
【００８２】
ステップＳ１０６では、入力部１０で受け付けた文書データにより追加された単語については、当該単語のベクトル及び文脈ベクトルを、ベクトル記憶部４０に記憶されている単語ベクトル及び文脈ベクトルに追加する。そして、ステップＳ１０７において、対象次元ｄを１にセットして、ステップＳ１１４へ移行する。
【００８３】
ステップＳ１０８では、入力部１０で受け付けた次元数増加のシグナルに基づいて、ベクトル記憶部４０に記憶されている全ての単語の単語ベクトル及び文脈ベクトルの各々について、次元を一つ追加し、追加した次元の要素を任意の値で初期化する。
【００８４】
ステップＳ１１０では、次元数ＤをＤ＋１に更新する。
【００８５】
ステップＳ１１２では、学習されていない次元を学習対象とするため、対象次元ｄをＤに設定する。
【００８６】
ステップＳ１１４では、ベクトル記憶部４０に記憶されている全ての単語の単語ベクトル及び文脈ベクトルに基づいて、上記（８）式に従って、各単語の文脈ベクトルの対象次元ｄの要素ｃｊ，ｄを最適化し、ベクトル記憶部４０に記憶されている各単語の文脈ベクトルを更新する。
【００８７】
ステップＳ１１６では、ベクトル記憶部４０に記憶されている全ての単語の単語ベクトル及び文脈ベクトルに基づいて、上記（９）式に従って、各単語の単語ベクトルの対象次元ｄの要素ｒｉ，ｄを最適化し、ベクトル記憶部４０に記憶されている各単語の単語ベクトルを更新する。
【００８８】
ステップＳ１１８では、ステップＳ１１４及びステップＳ１１６の最適化により、上記（７）式の目的関数の値が、上記（６）式に従って定められた反復終了条件を満たすかを判定し、満たしていればステップＳ１２０へ移行し、満たしていなければステップＳ１１４へ戻ってステップＳ１１４及びステップＳ１１６の最適化の処理を繰り返す。
【００８９】
ステップＳ１２０では、ｄ＝Ｄであるかを判定し、ｄ＝Ｄであれば、ステップＳ１２２へ移行し、ｄ＝ＤでなければステップＳ１１８へ移行する。
【００９０】
ステップＳ１２２では、ｄ＝ｄ＋１として対象次元を変更し、ステップＳ１１４へ移行してステップＳ１１４〜ステップＳ１１６の最適化の処理を繰り返す。
【００９１】
ステップＳ１２４では、ステップＳ１１４〜ステップＳ１１８の処理で得られた単語ベクトル及び文脈ベクトルを出力して単語ベクトル学習処理ルーチンを終了し、次のシグナルを受け付けるまで待機する。
【００９２】
以上説明したように、本発明の実施の形態に係る単語ベクトル学習装置によれば、単語ベクトル及び文脈ベクトルの何れかの次元を順番に対象次元とし、対象次元と異なる各次元の値と、単語ペアについて一方の単語が他方の単語の文脈として出現した回数とに基づいて、対象次元に関する上記（７）式の目的関数を最適化するように、単語の各々についての単語ベクトル及び文脈ベクトルの対象次元の値を推定することを繰り返すことにより、効率よく、単語ベクトルを学習するごとができる。
【００９３】
＜本発明の実施の形態に係る自然言語処理装置の作用＞
【００９４】
次に、本発明の実施の形態に係る自然言語処理装置２００の作用について説明する。入力部２１０において翻訳対象のテキストを受け付けると、自然言語処理装置２００は、図８に示す自然言語処理ルーチンを実行する。
【００９５】
ステップＳ２００では、入力部２１０で受け付けた翻訳対象のテキストから未知の単語を抽出する。
【００９６】
ステップＳ２０２では、ベクトル記憶部２４０に記憶されている各単語の単語ベクトルに基づいて、ステップＳ２００で抽出された未知の単語に対して最も類似度が高い、辞書中の単語を推定し、翻訳対象のテキストについて、未知の単語を、推定された辞書中の単語に置き換えたテキストを生成する。
【００９７】
ステップＳ２０４では、ステップＳ２０２で生成されたテキストに基づいて翻訳し、出力部２５０に出力して処理を終了する。
【００９８】
以上説明したように、本発明の実施の形態に係る自然言語処理装置によれば、学習された単語ベクトルを用いて、単語の意味的な類似度に基づく翻訳処理を行うことができる。
【００９９】
また、本発明の実施の形態に係る単語ベクトル学習装置によれば、ベクトルの各次元に意味を持たせるために、ｄ＝１からｄ＝Ｄまで順番に最適化を行っている。これは、このように１番目の次元から順番に処理することで、各ベクトルの１番目の要素が最も強い類似度を表現し、以下２番目、３番目と大きくなるにしたがって、それまで学習した類似度を前提条件として、これまで捉えきれなかった更に詳細な類似度を学習していくという仕組みを得ることができるからである。
【０１００】
また、学習済みの単語ベクトルに対して、文書データが増加するか、あるいは更新された際に再学習する場合、学習済み単語ベクトルを初期値として学習を継続することで、差分情報を各次元毎に追加していく形式で学習が行える。よって、再学習前と後の単語ベクトルの変更分は、差分情報から得られた値の変化となる。これは、仮にデータの差分に影響を受けなかった場合は値も変化しないことを意味する。この性質により、従来のように、文書データが増加した際に初めから再学習する場合と比較して、再学習前後の単語ベクトルが文書データの差分情報により更新され、以前の情報を保持し続けるといったメリットを得ることができる。
【０１０１】
また、単語ベクトルの次元数を増加したい場合でも、処理を各次元毎の最適化に分解していることから、容易に対応可能である、後付けの形で、ベクトルの次元数をＤからＤ＋１へ増加し、ｄ＝Ｄと設定し、逐次次元を増やしながら学習ということも容易に行える。更に、全く単語ベクトルが存在しない状態から学習を始める場合には、Ｄ＝１と設定し１次元のベクトルから処理を始めればよく、特に事前に単語ベクトルの次元数を決定しなくても、学習を開始することが可能である。
【０１０２】
このように、本発明を用いることで従来法と異なり、単語数や次元数が継続的に増加するような状況下でも分散意味表現の学習が可能となる。また、得られた単語ベクトルの前回からの差分には依存関係が保持することが可能である。これによって、分散意味表現を利用したシステムの再構築を行う際に、システムパラメタ等を最初から全て再推定しなくてもよくなり、システムメンテナンスのコストを大幅に下げられるという利点がある。
【０１０３】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０１０４】
例えば、上述した実施の形態では、次元数増加のシグナルを受け付けて次元数ＤをＤ＋１に更新して、増加させた次元を対象次元として単語ベクトル及び文脈ベクトルを学習する場合を例に説明したが、これに限定されるものではなく、次元数を任意の二以上の数だけに増加させるシグナルを受け付けて、増加させた分の次元を順番に対象次元として単語ベクトル及び文脈ベクトルを学習するようにしてもよい。
【符号の説明】
【０１０５】
１０、２１０  入力部
２０、２２０  演算部
２６   文書データ更新部
２８   次元数増加部
３０   反復最適化部
３２   文脈ベクトル最適化部
３４   単語ベクトル最適化部
３６   反復判定部
４０   ベクトル記憶部
５０、２５０  出力部
１００ 単語ベクトル学習装置
２００ 自然言語処理装置
２３０ 自然言語処理部
２３２ 置換部
２３４ 翻訳部
２４０ ベクトル記憶部
【図１】
0006517537.tif 000008
【図２】
0006517537.tif 000009
【図３】
0006517537.tif 000010
【図４】
0006517537.tif 000011
【図５】
0006517537.tif 000012
【図６】
0006517537.tif 000013
【図７】
0006517537.tif 000014
【図８】
0006517537.tif 000015
【図９】
0006517537.tif 000016