(57)【要約】【課題】単語の出現位置毎のコンテキスト情報を効率的に生成する。【解決手段】記憶部１１は、文書１３と、単語ｗ１〜ｗ３に対応して算出された分散表現の単語ベクトル１４−１〜１４−３とを記憶する。処理部１２は、単語ｗ１が出現する１つの出現位置から所定範囲内にある周辺単語ｗ２，ｗ３を文書１３から抽出し、周辺単語ｗ２，ｗ３に対応する単語ベクトル１４−２，１４−３を合算した合算ベクトル１５を算出する。処理部１２は、機械学習モデル１７を用いて合算ベクトル１５とパラメータ１６とから周辺単語ｗ２，ｗ３が推定されるように、パラメータ１６を決定する。処理部１２は、単語ｗ１に対応する単語ベクトル１４−１と対応付けて、上記の出現位置におけるコンテキスト情報１８としてパラメータ１６を記憶する。【選択図】図１
2020060970.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
複数の単語を用いて記載された文を含む文書と、前記複数の単語に対応して算出された分散表現の複数の単語ベクトルとを取得し、
前記複数の単語のうちの１つの単語が出現する１つの出現位置から所定範囲内にある２以上の周辺単語を前記文書から抽出し、前記２以上の周辺単語に対応する２以上の単語ベクトルを合算した合算ベクトルを算出し、
周辺単語を推定する所定の機械学習モデルを用いて前記合算ベクトルとパラメータとから前記２以上の周辺単語が推定されるように、前記パラメータを決定し、
前記１つの単語に対応する単語ベクトルと対応付けて、前記１つの出現位置におけるコンテキスト情報として前記パラメータを記憶する、
コンテキスト情報生成方法。
【請求項２】
前記パラメータは、前記合算ベクトルを前記所定の機械学習モデルに入力される入力ベクトルに変換する変換フィルタである、
請求項１記載のコンテキスト情報生成方法。
【請求項３】
前記コンピュータが更に、
前記１つの単語に対応する単語ベクトルと対応付けて、前記１つの単語が出現する他の１つの出現位置における他のコンテキスト情報を記憶し、
前記１つの単語に対応する単語ベクトルに加えて、前記コンテキスト情報および前記他のコンテキスト情報を用いて、前記１つの単語を含む文を絞り込む検索処理を行う、
請求項１記載のコンテキスト情報生成方法。
【請求項４】
前記コンピュータが更に、
前記１つの単語に対応する単語ベクトルと対応付けて、前記１つの単語が出現する他の１つの出現位置における他のコンテキスト情報を記憶し、
前記コンテキスト情報および前記他のコンテキスト情報に基づいて、前記１つの単語の語義を区別するラベルを前記１つの出現位置および前記他の１つの出現位置に付与する、
請求項１記載のコンテキスト情報生成方法。
【請求項５】
前記コンピュータが更に、
他の１つの単語に対応する単語ベクトルと対応付けて、前記他の１つの単語が出現する他の１つの出現位置における他のコンテキスト情報を記憶し、
前記コンテキスト情報と前記他のコンテキスト情報との距離が閾値以下である場合、前記１つの単語を含む文の検索結果に、前記他の１つの出現位置を含む文を追加する、
請求項１記載のコンテキスト情報生成方法。
【請求項６】
複数の単語を用いて記載された文を含む文書と、前記複数の単語に対応して算出された分散表現の複数の単語ベクトルとを記憶する記憶部と、
前記複数の単語のうちの１つの単語が出現する１つの出現位置から所定範囲内にある２以上の周辺単語を前記文書から抽出し、前記２以上の周辺単語に対応する２以上の単語ベクトルを合算した合算ベクトルを算出し、周辺単語を推定する所定の機械学習モデルを用いて前記合算ベクトルとパラメータとから前記２以上の周辺単語が推定されるように、前記パラメータを決定し、前記１つの単語に対応する単語ベクトルと対応付けて、前記１つの出現位置におけるコンテキスト情報として前記パラメータを記憶する処理部と、
を有するコンテキスト情報生成装置。
【請求項７】
コンピュータに、
複数の単語を用いて記載された文を含む文書と、前記複数の単語に対応して算出された分散表現の複数の単語ベクトルとを取得し、
前記複数の単語のうちの１つの単語が出現する１つの出現位置から所定範囲内にある２以上の周辺単語を前記文書から抽出し、前記２以上の周辺単語に対応する２以上の単語ベクトルを合算した合算ベクトルを算出し、
周辺単語を推定する所定の機械学習モデルを用いて前記合算ベクトルとパラメータとから前記２以上の周辺単語が推定されるように、前記パラメータを決定し、
前記１つの単語に対応する単語ベクトルと対応付けて、前記１つの出現位置におけるコンテキスト情報として前記パラメータを記憶する、
処理を実行させるコンテキスト情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンテキスト情報生成方法、コンテキスト情報生成装置およびコンテキスト情報生成プログラムに関する。
【背景技術】
【０００２】
自然言語で記載された文書を処理する自然言語処理の分野では、単語の特徴を表す特徴情報として分散表現のベクトルが使用されることがある。分散表現は単語の意味（語義）を反映しており、語義の近い単語には類似するベクトルが割り当てられるという性質をもつ。分散表現のベクトルを用いることで、ある文と類似する文を効率的に検索することができ、機械翻訳や対話システムなどの各種の自然言語処理サービスを実現し得る。
【０００３】
分散表現のベクトルは、例えば、次のように生成することができる。複数の単語それぞれについて、訓練用文書内で当該単語の周辺に出現する周辺単語を抽出し、特定の単語から当該特定の単語の周辺単語を推定するニューラルネットワークなどの機械学習モデルを学習する。この機械学習モデルの学習は、訓練用文書に対して教師ラベルを付与しなくてよい教師なし学習である。そして、複数の単語それぞれについて、当該単語を機械学習モデルに入力したときに機械学習モデルの内部で算出されるベクトルを抽出し、分散表現のベクトルとして当該単語に対して割り当てる。異なる単語であっても、同様の周辺単語が出現することが多い単語に対しては類似するベクトルが算出される。
【０００４】
なお、複数の語義をもつ単語が文書の中で何れの語義として使用されているか判定する語義曖昧性解消装置が提案されている。提案の語義曖昧性解消装置は、注目単語の語義を示す教師ラベルが予め付与された訓練用文書を読み込み、注目単語と周辺単語の共起頻度などの統計情報を複数の語義について区別して学習する。語義曖昧性解消装置は、判定対象の入力文書を読み込み、入力文書に含まれる注目単語の周辺にある周辺単語と、予め学習した語義毎の統計情報とから、入力文書における注目単語の語義を判定する。また、３個の単語について分散表現のベクトルを抽出し、抽出した３個のベクトルの間の角度を当該３個の単語の関連性の指標として算出する判定装置が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−１７１８０６号公報
【特許文献２】特開２０１７−１６７９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、単語に対して分散表現のベクトルを割り当てる従来技術では、１つの単語表記に対して１つのベクトルが割り当てられる。単語表記とベクトルの関係が硬直的であるため、語義が近い単語には類似するベクトルが割り当てられているという期待が満たされないことがあり、類似する文の検索精度が低くなることがあるという問題がある。
【０００７】
例えば、複数の語義をもつ単語に対しては、語義を示す教師ラベルが訓練用文書に付与されていない場合には文脈（コンテキスト）に関係なく同一単語とみなされてしまい、それら複数の語義が区別されない平均化されたベクトルが算出されてしまう。また、例えば、訓練用文書の中に誤記や表記揺れが存在する場合、異なる単語表記は異なる単語とみなされてしまう。このとき、出現頻度の低い方の単語表記については算出されるベクトルがぶれやすいなどの統計処理の都合上、誤記や表記揺れに起因する異なる単語表記に対して類似しないベクトルが算出されてしまうことがある。このように、従来の分散表現では、単語の出現位置それぞれのコンテキストの取り扱いが難しいという問題がある。
【０００８】
コンテキストを扱う方法としては、再起型ニューラルネットワーク（ＲＮＮ：Recurrent Neural Network）やＬＳＴＭ（Long Short-Term Memory）などの機械学習モデルを利用して、連続する複数の単語の列に対して１つのベクトルを割り当てる方法も考えられる。しかし、この方法は計算量が膨大になってしまう。また、周辺単語の並び方の情報は、コンテキストの同一性を判断するための情報としては過剰である。
【０００９】
１つの側面では、本発明は、単語の出現位置毎のコンテキスト情報を効率的に生成することができるコンテキスト情報生成方法、コンテキスト情報生成装置およびコンテキスト情報生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、コンピュータが実行するコンテキスト情報生成方法が提供される。複数の単語を用いて記載された文を含む文書と、複数の単語に対応して算出された分散表現の複数の単語ベクトルとを取得する。複数の単語のうちの１つの単語が出現する１つの出現位置から所定範囲内にある２以上の周辺単語を文書から抽出し、２以上の周辺単語に対応する２以上の単語ベクトルを合算した合算ベクトルを算出する。周辺単語を推定する所定の機械学習モデルを用いて合算ベクトルとパラメータとから２以上の周辺単語が推定されるように、パラメータを決定する。１つの単語に対応する単語ベクトルと対応付けて、１つの出現位置におけるコンテキスト情報としてパラメータを記憶する。
【００１１】
また、１つの態様では、コンテキスト情報生成装置が提供される。また、１つの態様では、コンピュータに実行させるコンテキスト情報生成プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、単語の出現位置毎のコンテキスト情報を効率的に生成できる。
【図面の簡単な説明】
【００１３】
【図１】コンテキスト情報生成装置の例を説明する図である。
【図２】機械学習装置のハードウェア例を示すブロック図である。
【図３】機械学習装置の機能例を示すブロック図である。
【図４】ニューラルネットワークの例を示す図である。
【図５】分散表現の単語ベクトルの算出例を示す図である。
【図６】分散表現の単語ベクトルの算出例を示す図（続き）である。
【図７】拡張ベクトル付き文書の例を示す図である。
【図８】コンテキストフィルタの生成方法の例を示す図である。
【図９】コンテキストフィルタの第１の生成例を示す図である。
【図１０】コンテキストフィルタの第１の生成例を示す図（続き）である。
【図１１】コンテキストフィルタの第２の生成例を示す図である。
【図１２】単語ベクトル生成の手順例を示すフローチャートである。
【図１３】コンテキスト情報生成の手順例を示すフローチャートである。
【図１４】語義判定方法の第１の例を示す図である。
【図１５】語義判定方法の第２の例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１５】
図１は、コンテキスト情報生成装置の例を説明する図である。
第１の実施の形態のコンテキスト情報生成装置１０は、自然言語で記載された文書を分析し、類似する文の検索などの自然言語処理を促進する。コンテキスト情報生成装置１０は、機械翻訳や対話システムなどの各種の自然言語処理サービスに用いられてもよい。コンテキスト情報生成装置１０は、コンピュータや情報処理装置と言うこともできる。コンテキスト情報生成装置１０は、ユーザが操作するクライアント装置でもよいしネットワークを介してアクセスされるサーバ装置でもよい。
【００１６】
コンテキスト情報生成装置１０は、記憶部１１および処理部１２を有する。記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性の半導体メモリでもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性ストレージでもよい。処理部１２は、例えば、ＣＰＵ（Central Processing Unit）、ＧＰＵ（Graphics Processing Unit）、ＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００１７】
記憶部１１は、単語ｗ１，ｗ２，ｗ３などの複数の単語を用いて記載された文を含む文書１３を記憶する。２以上の単語を時系列に並べることで１つの文が形成される。ここで言う「単語」は、特定の表記をもつ単語の種類を表す。１つの単語の１回の出現は「単語インスタンス」や「出現単語」などと言うことがある。文書１３において、同一の単語が異なる２以上の出現位置に出現することがある。
【００１８】
また、記憶部１１は、文書１３に出現し得る複数の単語に対応して算出された分散表現の複数の単語ベクトルを記憶する。分散表現の単語ベクトルはそれぞれ、２次元以上の所定次元（例えば、２００次元）をもつベクトルである。例えば、記憶部１１は、単語ｗ１に対応する単語ベクトル１４−１、単語ｗ２に対応する単語ベクトル１４−２および単語ｗ３に対応する単語ベクトル１４−３を記憶する。分散表現は単語の語義を反映しており、語義の近い単語には類似する単語ベクトルが算出されるという性質をもつ。分散表現の単語ベクトルは、例えば、Ｗｏｒｄ２ｖｅｃやＧｌｏＶｅなどを用いて算出することができる。単語ベクトルは、文書１３から算出してもよいし他の文書から算出してもよい。
【００１９】
処理部１２は、文書１３において１つの単語が出現する１つの出現位置に対して、当該１つの出現位置における文脈（コンテキスト）を示すコンテキスト情報を生成する。分散表現は１つの単語表記に対して１つの単語ベクトルを割り当てる。よって、２以上の語義をもつ単語については、単語ベクトルだけではそれら２以上の語義が区別されない。また、誤記や表記揺れによって複数通りの単語表記が存在する場合、単語ベクトルだけではそれら複数通りの単語表記の間の関連性を把握することが難しい。そこで、処理部１２は、単語ベクトルに加えて、単語の出現位置に対するコンテキスト（その単語がどのような文意や前後関係のもとで使用されているかを示すもの）を示す情報を用意する。
【００２０】
具体的には、処理部１２は、１つの単語が出現する１つの出現位置を基準として、その出現位置から所定範囲内にある２以上の周辺単語を文書１３から抽出する。所定範囲は、例えば、基準となる出現位置と同じ文に属する範囲であって、基準となる出現位置の前後の単語（単語数は高々ｎ×２個）の範囲とする。この範囲は基準となる出現位置の前方にある高々ｎ個の単語および後方にある高々ｎ個の単語の範囲であり、ｎは所定の自然数である。ただし、基準となる出現位置の前方にあるｎ個の単語のみを所定範囲とすることも可能であり、基準となる出現位置の後方にあるｎ個の単語のみを所定範囲とすることも可能である。例えば、処理部１２は、単語ｗ１が出現する１つの出現位置を基準として、その前後にある周辺単語ｗ２，ｗ３を文書１３から抽出する。
【００２１】
処理部１２は、記憶部１１に記憶された複数の単語ベクトルのうち、抽出した２以上の周辺単語に対応する２以上の単語ベクトルを合算した合算ベクトル１５を算出する。例えば、処理部１２は、周辺単語ｗ２，ｗ３に対応する単語ベクトル１４−２，１４−３を合算して合算ベクトル１５を算出する。２以上の単語ベクトルの合算は、２以上の単語ベクトル同士で同一次元の値を合計することで行う。よって、２以上の単語ベクトルの次元数と合算ベクトル１５の次元数とは同一である。
【００２２】
ただし、文に含まれる単語の数や着目する単語の出現位置によっては、上記の所定範囲に属する周辺単語が１つのみである場合もある。その場合、抽出した１つの周辺単語に対応する１つの単語ベクトルを合算ベクトル１５とすればよい。また、着目する単語の出現位置が文頭である場合、仮想的なｋ個（ｋはｎ以上の自然数）のダミー単語を文頭に挿入して抽出処理を行い、合算ベクトル１５の算出ではダミー単語を無視してもよい。同様に、着目する単語の出現位置が文末である場合、仮想的なｋ個のダミー単語を文末に挿入して抽出処理を行い、合算ベクトル１５の算出ではダミー単語を無視してもよい。これにより、周辺単語の抽出処理を簡潔に定義することができる。
【００２３】
処理部１２は、所定の機械学習モデル１７を用いて合算ベクトル１５とパラメータ１６から上記の２以上の周辺単語が推定されるように、パラメータ１６を決定する。機械学習モデル１７は、入力ベクトルを受け付けて周辺単語の推定結果を出力する機械学習モデルである。機械学習モデル１７は、ニューラルネットワークでもよく、分散表現の単語ベクトルの算出に使用した機械学習モデルを流用してもよい。
【００２４】
パラメータ１６は、合算ベクトル１５を機械学習モデル１７の入力ベクトルに変換する変換フィルタであってもよい。例えば、処理部１２は、合算ベクトル１５の各次元の値に、当該次元に対応するパラメータ１６の値を乗算する。パラメータ１６は、合算ベクトル１５と同じ次元数のベクトルでもよいし、合算ベクトル１５より少ない次元数のベクトルでもよい。後者の場合、処理部１２は、合算ベクトル１５の隣接する所定個の次元に、パラメータ１６の１つの次元を対応付ければよい。例えば、合算ベクトル１５の隣接する４つの次元にパラメータ１６の１つの次元を対応付けることで、合算ベクトル１５を次元数２００のベクトルとし、パラメータ１６を次元数５０のベクトルとすることができる。
【００２５】
処理部１２は、機械学習モデル１７が出力する周辺単語の推定結果が、上記で文書１３から抽出した２以上の周辺単語に近付くように、パラメータ１６を調整する。例えば、処理部１２は、合算ベクトル１５にパラメータ１６を適用して入力ベクトルを生成し、入力ベクトルを機械学習モデル１７に入力して周辺単語の推定結果を取得し、正解の周辺単語と推定結果とを比較してパラメータ１６を更新することを繰り返す。
【００２６】
そして、処理部１２は、基準となる出現位置の単語に対応する単語ベクトルと対応付けて、当該出現位置におけるコンテキストを示すコンテキスト情報１８としてパラメータ１６を記憶する。例えば、処理部１２は、単語ｗ１の１つの出現位置に対して、単語ｗ１に対応する単語ベクトル１４−１と対応付けてコンテキスト情報１８を記憶する。パラメータ１６が変換フィルタである場合、コンテキスト情報１８を「コンテキストフィルタ」と言うこともできる。コンテキスト情報１８は、単語ｗ１の単語ベクトル１４−１と分離して記憶してもよい。また、単語ベクトル１４−１とコンテキスト情報１８とを連結した拡張ベクトルを生成し、当該出現位置に対して拡張ベクトルを記憶してもよい。
【００２７】
同じ単語の異なる出現位置に対して異なるコンテキスト情報が生成されることがある。特に、２以上の語義をもつ単語については、異なる出現位置に対して類似しないコンテキスト情報が生成されることがある。一方、誤記や表記揺れにより形式上別単語として扱われているものに対しては、類似するコンテキスト情報が生成されることがある。
【００２８】
第１の実施の形態のコンテキスト情報生成装置１０によれば、１つの単語の１つの出現位置に対して、周辺単語の単語ベクトルを合算した合算ベクトル１５が算出され、合算ベクトル１５から機械学習モデル１７を用いて周辺単語が正しく推定されるようにパラメータ１６が決定される。決定されたパラメータ１６が、当該１つの出現位置におけるコンテキストを示すコンテキスト情報１８として記憶される。
【００２９】
これにより、単語の出現位置毎のコンテキストをコンパクトに表現することができる。また、周辺単語の単語ベクトルを合算した合算ベクトル１５そのものは、意図しない異なる周辺単語の組み合わせから偶然に類似するベクトルが算出されてしまう曖昧さをもつおそれがある。これに対してパラメータ１６をコンテキスト情報１８として使用することで、異なるコンテキストを区別することができる。また、周辺単語の単語ベクトルを連結せずに合算するため、ベクトルの次元数を抑制することができる。よって、周辺単語の並び順を考慮する機械学習アルゴリズムと比べて、機械学習の複雑性を低減することができ、コンテキストの区別に十分な情報を効率的に生成することができる。
【００３０】
また、２以上の語義をもつ単語に対しては、出現位置によって類似しないコンテキスト情報が生成されることがある。そこで、例えば、単語ベクトルに加えてコンテキスト情報も用いて文を絞り込む検索処理を行うことで、類似する文の検索精度を向上させることができる。また、コンテキスト情報に基づいて、語義を区別するラベルを出現位置毎に付与することで、その後の自然言語処理の精度を向上させることができる。また、誤記や表記揺れに起因する異なる単語表記に対して、類似するコンテキスト情報が生成されることがある。そこで、例えば、コンテキスト情報を用いて検索処理を行うことで、誤記や表記揺れの可能性がある単語表記を検出することができる。
【００３１】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
第２の実施の形態の機械学習装置１００は、ニューラルネットワークを用いた機械学習により、自然言語で記載された文書を分析する自然言語処理装置である。機械学習装置１００は、分析結果に基づいて、ある文に類似する文を検索することができる。機械学習装置１００は、機械翻訳、リコメンデーションシステム、質問回答（Ｑ＆Ａ）システムなど、自然言語を扱う各種サービスに利用することができる。機械学習装置１００は、コンピュータや情報処理装置と言うこともできる。機械学習装置１００は、ユーザが操作するクライアント装置でもよいしネットワークを介してアクセスされるサーバ装置でもよい。
【００３２】
図２は、機械学習装置のハードウェア例を示すブロック図である。
機械学習装置１００は、バスに接続されたＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。機械学習装置１００は、第１の実施の形態のコンテキスト情報生成装置１０に対応する。ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００３３】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、機械学習装置１００は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００３４】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に使用するデータを一時的に記憶する揮発性の半導体メモリである。なお、機械学習装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
【００３５】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、機械学習装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）など他の種類の記憶装置を備えてもよく、複数の記憶装置を備えてもよい。
【００３６】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、機械学習装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを使用することができる。
【００３７】
入力信号処理部１０５は、機械学習装置１００に接続された入力デバイス１１２から入力信号を受信する。入力デバイス１１２として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用できる。また、機械学習装置１００に複数の種類の入力デバイスが接続されてもよい。
【００３８】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３９】
通信インタフェース１０７は、ネットワーク１１４に接続され、ネットワーク１１４を介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース１０７は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントに接続される無線通信インタフェースでもよい。
【００４０】
図３は、機械学習装置の機能例を示すブロック図である。
機械学習装置１００は、文書記憶部１２１、ベクトル記憶部１２２、教師データ記憶部１２３、単語ベクトル生成部１２４、コンテキスト情報生成部１２５、検索部１２６および語義判定部１２７を有する。文書記憶部１２１、ベクトル記憶部１２２および教師データ記憶部１２３は、例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域を用いて実装される。単語ベクトル生成部１２４、コンテキスト情報生成部１２５、検索部１２６および語義判定部１２７は、例えば、ＣＰＵ１０１が実行するプログラムを用いて実装される。
【００４１】
文書記憶部１２１は、自然言語で記載された文書を記憶する。文書は２以上の文に分割することができ、文は２以上の単語の列に分割することができる。単語は、文法上で一定の意味的まとまりをもつ文字列の単位である。第２の実施の形態では、「単語」は特定の文字列によって表記される単位を示しており、「単語インスタンス」は文の中で特定の単語が使用される具体的な出現位置を示している。文書では同一の単語が複数回使用されることがあるため、同一の単語に関する複数の単語インスタンスが出現し得る。
【００４２】
ベクトル記憶部１２２は、文書を分析することで単語それぞれに対して割り当てられた分散表現の単語ベクトルを記憶する。分散表現は単語の語義を反映しており、語義の近い単語には類似する単語ベクトルが割り当てられる。単語ベクトルは、例えば、実数値をとる２００次元のベクトルである。単語ベクトルは単語毎に算出されるため、同一の単語に関する複数の単語インスタンスは同一の単語ベクトルを共有する。
【００４３】
また、ベクトル記憶部１２２は、単語インスタンスそれぞれに対して割り当てられた拡張ベクトルを記憶する。拡張ベクトルは、単語インスタンスに対応するコンテキストフィルタを単語ベクトルに付加したものである。コンテキストフィルタは、単語インスタンスの出現位置におけるコンテキストを示すコンテキスト情報である。コンテキストは、単語が当該出現位置においてどのような文意や前後関係のもとで使用されているかを示す。コンテキストフィルタは、例えば、実数値をとる５０次元のベクトルである。同一の単語に関する複数の単語インスタンスの間でコンテキストフィルタが異なることがある。
【００４４】
教師データ記憶部１２３は、２以上の語義をもつ単語に関する単語インスタンスの曖昧さを解消するための教師データを記憶する。２以上の語義をもつ単語に関する単語インスタンスのうちの一部の単語インスタンスに対して、正解の語義を示す教師ラベルが人手により教師データとして付与されている。後述するように、教師ラベルとコンテキストフィルタに基づいて、語義を示すラベルが他の単語インスタンスに自動的に付与される。
【００４５】
単語ベクトル生成部１２４は、文書記憶部１２１に記憶された文書を分析し、教師なし学習により単語それぞれに分散表現の単語ベクトルを割り当てる。単語ベクトルの生成では、単語ベクトル生成部１２４は、文書から単語とその周辺単語との間の対応関係を抽出し、単語から周辺単語を推定するニューラルネットワークを学習する。単語ベクトル生成部１２４は、ある単語をニューラルネットワークに入力したときに中間層で算出されるベクトルを、当該単語に対応する単語ベクトルとして抽出する。
【００４６】
コンテキスト情報生成部１２５は、単語ベクトル生成部１２４が生成した単語ベクトルを用いて、単語インスタンスそれぞれに対してコンテキスト情報としてコンテキストフィルタを算出する。コンテキストフィルタの算出には、単語ベクトル生成部１２４で学習されたニューラルネットワークと、単語インスタンスの周辺にある周辺単語とが使用される。コンテキスト情報生成部１２５は、単語ベクトルの末尾にコンテキストフィルタを付加した拡張ベクトルを生成し、単語インスタンスに拡張ベクトルを割り当てる。
【００４７】
検索部１２６は、ベクトル記憶部１２２に記憶された拡張ベクトルの利用方法の１つとして、ある入力文に類似する文を文書の中から検索する検索処理を行う。
例えば、検索部１２６は、コンテキスト情報生成部１２５と同様にして、入力文に含まれる単語インスタンスに対してコンテキストフィルタを算出し、単語ベクトルにコンテキストフィルタを連結して拡張ベクトルを算出する。検索部１２６は、ベクトル記憶部１２２に記憶された拡張ベクトルと入力文の拡張ベクトルとの間で、コンテキストフィルタの部分も含めてコサイン類似度などの類似度の指標値（または、距離の指標値）を算出する。検索部１２６は、類似度が閾値を超える拡張ベクトル（または、距離が閾値未満である拡張ベクトル）をもつ文を抽出する。単語ベクトルが同じであってもコンテキストフィルタが類似しない単語インスタンスを含む文は抽出されない可能性がある。よって、コンテキストの類似度を考慮して文を絞り込むことができる。
【００４８】
また、例えば、検索部１２６は、拡張ベクトルのうちコンテキストフィルタ部分のみを用いた検索処理を行い、コンテキストフィルタが類似する単語インスタンスを含む文を検索する。具体的には、検索部１２６は、あるコンテキストフィルタと他のコンテキストフィルタの間でコサイン類似度などの類似度の指標値（または、距離の指標値）を算出する。検索部１２６は、類似度が閾値を超える場合（または、距離が閾値未満である場合）、それらコンテキストフィルタをもつ文を検索結果に追加する。
【００４９】
単語ベクトルが異なるもののコンテキストフィルタが類似する単語インスタンスは、誤記や表記揺れにより別単語として扱われたものである可能性がある。そこで、検索部１２６は、誤記や表記揺れの可能性がある単語インスタンスを含む文を提示してユーザに検討させる。検索部１２６は、単語表記の修正をユーザに促してもよい。また、検索部１２６は、誤記や表記揺れの可能性が高い単語表記を自動的に修正してもよい。単語表記が修正された場合、単語ベクトル生成部１２４は、修正後の文書に基づいて分散表現の単語ベクトルを再学習してもよい。また、コンテキスト情報生成部１２５は、修正後の文書に基づいて各単語インスタンスのコンテキストフィルタを再学習してもよい。
【００５０】
語義判定部１２７は、ベクトル記憶部１２２に記憶された拡張ベクトルの利用方法の１つとして、単語がもつ２以上の語義のうち各単語インスタンスが何れの語義として使用されているかを判定する語義判定処理を行う。語義判定処理には、教師データ記憶部１２３に記憶された教師ラベルが用いられる。語義判定部１２７は、教師ラベルが付与されている単語インスタンスのコンテキストフィルタと当該教師ラベルが示す正解の語義との関係を用いて、他の単語インスタンスの語義を自動的に判定してラベルを付与する。
【００５１】
次に、分散表現の単語ベクトルについて説明する。
図４は、ニューラルネットワークの例を示す図である。
分散表現の単語ベクトルの算出にはニューラルネットワーク１３０が用いられる。ニューラルネットワーク１３０は、多層ニューラルネットワークである。ニューラルネットワーク１３０は、ニューロンに相当する複数のノードと、シナプスに相当するノード間のエッジとを含む。隣接する層のノードがシナプスで結合される。シナプスには重みが割り当てられ、前の層のノードの値に重みをかけて次の層のノードの値が算出される。ニューラルネットワーク１３０の学習を通じてシナプスの重みが決定される。
【００５２】
ニューラルネットワーク１３０は、入力層１３１、中間層１３２〜１３４および出力層１３５を含む。図４では３つの中間層を示しているが、中間層の数を変更してもよい。
入力層１３１は、文書に出現し得る複数の単語に対応する複数のノードを含む。入力層１３１の１つのノードは１つの単語に対応している。基準となる１つの単語が選択されると、当該１つの単語に対応するノードに「１」が入力され、他のノードに「０」が入力される。中間層１３２は、入力層１３１の次の層であり入力層１３１より少ないノードを含む。中間層１３３は、中間層１３２の次の層であり中間層１３２より少ないノードを含む。中間層１３３はニューラルネットワーク１３０の中で最も次元数が少ない。
【００５３】
中間層１３４は、中間層１３３の次の層であり中間層１３３より多いノードを含む。出力層１３５は、文書に出現し得る複数の単語に対応する複数のノードを含む。出力層１３５の１つのノードは１つの単語に対応している。入力層１３１の次元数と出力層１３５の次元数は同じである。出力層１３５の各ノードは、入力層１３１への入力が示す基準となる単語の周辺に、当該ノードに対応する単語が周辺単語として出現する確率に応じた推定値を出力する。出力される推定値が大きいほど単語の出現確率が高いことを意味する。
【００５４】
文書からは単語と周辺単語の組み合わせを複数抽出することができる。よって、それら組み合わせを訓練データとして用いて、周辺単語の推定結果と実際の周辺単語との間の差異を示すロスが小さくなるようにシナプスの重みを決定すればよい。ニューラルネットワーク１３０の学習が完了すると、単語ベクトル生成部１２４は、入力層１３１に単語を１つ入力し、次元数が最も少ない中間層１３３のノードが保持している値を列挙したベクトルを抽出する。単語ベクトル生成部１２４は、抽出したベクトルを当該入力した単語の単語ベクトルとして採用する。これを文書に出現し得る各単語について行うことで、各単語の単語ベクトルを確定することができる。
【００５５】
図５は、分散表現の単語ベクトルの算出例を示す図である。
文書１４１は、文書記憶部１２１に記憶された文書の一例である。単語ベクトル生成部１２４は、文書１４１を文に分割し、文を単語に分割する。文書１４１から文へは、例えば、日本語の句点を基準にして分割することができる。文から単語へは、例えば、日本語の形態素解析により分割することができる。単語ベクトル生成部１２４は、文書１４１から単語インスタンスを抽出する。抽出される単語インスタンスからは、助詞など重要性の低い汎用的な単語の単語インスタンスは除外される。
【００５６】
単語ベクトル生成部１２４は、抽出した単語インスタンスそれぞれに対して前後ｎ個の周辺単語を抽出する。前後ｎ個の周辺単語の範囲は、当該単語インスタンスと同一の文の範囲であり、かつ、当該単語インスタンスの前方に並ぶ高々ｎ個の単語および当該単語インスタンスの後方に並ぶ高々ｎ個の単語の範囲である。ｎは所定の自然数であり、予めユーザが決めておくことができるパラメータである。これにより、文書１４１からは、単語と周辺単語の組み合わせが複数通り抽出される。単語ベクトル生成部１２４は、周辺単語テーブル１４２を生成する。周辺単語テーブル１４２は、単語と周辺単語の組み合わせを示す。ある単語インスタンスに対して２以上の周辺単語が抽出されることもある。
【００５７】
例えば、文書１４１は、「考えが甘い。」、「りんごが甘い。」、「意義を唱える。」、「異議を唱える。」、「行くことに意義がある。」という文を含む。ただし、３番目の文に含まれる単語「意義」は誤記である。単語ベクトル生成部１２４は、１番目の文から、単語「考え」と周辺単語「甘い」の組を抽出し、単語「甘い」と周辺単語「考え」の組を抽出する。また、単語ベクトル生成部１２４は、２番目の文から、単語「りんご」と周辺単語「甘い」の組を抽出し、単語「甘い」と周辺単語「りんご」の組を抽出する。
【００５８】
また、単語ベクトル生成部１２４は、３番目の文から、単語「意義」と周辺単語「唱える」の組を抽出し、単語「唱える」と周辺単語「意義」の組を抽出する。また、単語ベクトル生成部１２４は、４番目の文から、単語「異議」と周辺単語「唱える」の組を抽出し、単語「唱える」と周辺単語「異議」の組を抽出する。また、単語ベクトル生成部１２４は、５番目の文から、単語「行く」と周辺単語「こと」、「意義」、「ある」の組を抽出し、単語「こと」と周辺単語「行く」、「意義」、「ある」の組を抽出する。更に、単語ベクトル生成部１２４は、単語「意義」と周辺単語「行く」、「こと」、「ある」の組を抽出し、単語「ある」と周辺単語「行く」、「こと」、「意義」の組を抽出する。
【００５９】
図６は、分散表現の単語ベクトルの算出例を示す図（続き）である。
単語ベクトル生成部１２４は、周辺単語テーブル１４２が示す単語と周辺単語の対応関係を用いて、前述のニューラルネットワーク１３０を学習する。そして、単語ベクトル生成部１２４は、「考え」、「甘い」、「りんご」、「意義」、「唱える」、「異議」、「行く」、「こと」、「ある」などの単語を１つずつニューラルネットワーク１３０に入力し、これら単語それぞれの単語ベクトルを算出する。
【００６０】
単語ベクトル生成部１２４は、単語ベクトルテーブル１４３を生成する。単語ベクトルテーブル１４３は、単語と単語ベクトルとを対応付ける。単語ベクトルテーブル１４３はベクトル記憶部１２２に記憶される。第２の実施の形態では、一例として、ニューラルネットワーク１３０の中間層１３３が２００次元であり、単語ベクトルは２００次元のベクトルである。ただし、次元数は３００次元など変更することもできる。単語ベクトルの各次元の値は実数である。図６では説明を簡単にするため、各単語ベクトルの先頭６次元の数値例を示している。例えば、単語「考え」の単語ベクトルは（１．３８，０．０２，０．３８，０．００１，０．００７，０．０１３，…）である。
【００６１】
次に、コンテキストフィルタについて説明する。
図７は、拡張ベクトル付き文書の例を示す図である。
文書１４１の単語インスタンスそれぞれに対しては、各種の自然言語処理を容易にするために拡張ベクトルが付与される。拡張ベクトルは単語ベクトルとコンテキストフィルタを連結したベクトルである。第２の実施の形態では、単語ベクトルが２００次元でありコンテキストフィルタが５０次元であるため、拡張ベクトルは２５０次元である。
【００６２】
１つの単語に１つの単語ベクトルが割り当てられるため、同一の単語を示す複数の単語インスタンスの拡張ベクトルは同一の単語ベクトルを含む。一方、コンテキストは単語の出現位置毎に異なるため、異なる単語インスタンスの拡張ベクトルは原則として異なるコンテキストフィルタを含む。２以上の語義をもつ単語について、異なる語義として用いられている単語インスタンスの拡張ベクトルは、類似しないコンテキストフィルタを含むことが期待される。一方、誤記や表記揺れにより異なる単語として扱われているものについて、単語インスタンスの拡張ベクトルは、異なる単語ベクトルを含むものの類似するコンテキストフィルタを含んでいることが期待される。
【００６３】
単語ベクトル生成部１２４は、文書１４１から拡張ベクトル付き文書１５０を生成する。拡張ベクトル付き文書１５０はベクトル記憶部１２２に記憶される。例えば、文書１４１からは「考え」、「甘い」、「りんご」、「甘い」、「意義」、「唱える」、「異議」、「唱える」などの単語インスタンスが抽出される。
【００６４】
１番目の単語インスタンス「考え」には拡張ベクトル１５１が付与される。２番目の単語インスタンス「甘い」には拡張ベクトル１５２が付与される。３番目の単語インスタンス「りんご」には拡張ベクトル１５３が付与される。４番目の単語インスタンス「甘い」には拡張ベクトル１５４が付与される。５番目の単語インスタンス「意義」には拡張ベクトル１５５が付与される。６番目の単語インスタンス「唱える」には拡張ベクトル１５６が付与される。７番目の単語インスタンス「異議」には拡張ベクトル１５７が付与される。８番目の単語インスタンス「唱える」には拡張ベクトル１５８が付与される。
【００６５】
単語「甘い」は異なる語義をもっており、２番目の単語インスタンス「甘い」と４番目の単語インスタンス「甘い」は異なる語義として使用されている。よって、拡張ベクトル１５２，１５４の単語ベクトルは同一であるもののコンテキストフィルタは類似しない。また、５番目の単語インスタンス「意義」は「異議」の誤記である。よって、拡張ベクトル１５５，１５７の単語ベクトルは異なるもののコンテキストフィルタは類似する。
【００６６】
コンテキストフィルタは以下のようにして生成される。
図８は、コンテキストフィルタの生成方法の例を示す図である。
コンテキスト情報生成部１２５は、単語インスタンス１６１を選択する。コンテキスト情報生成部１２５は、単語インスタンス１６１の前後ｎ個の単語を周辺単語として抽出する。周辺単語の範囲は、単語ベクトル生成部１２４が分散表現の単語ベクトルを算出するときの範囲と同じでよい。すなわち、単語インスタンス１６１と同一の文の範囲であり、かつ、単語インスタンス１６１の前方に並ぶ高々ｎ個の単語および単語インスタンス１６１の後方に並ぶ高々ｎ個の単語の範囲である。よって、単語ベクトル生成部１２４が生成した周辺単語テーブル１４２を流用することが可能である。
【００６７】
ここでは、周辺単語１６２−１〜１６２−３が抽出されたとする。すると、コンテキスト情報生成部１２５は、周辺単語１６２−１に対応する単語ベクトル１６３−１、周辺単語１６２−２に対応する単語ベクトル１６３−２、および、周辺単語１６２−３に対応する単語ベクトル１６３−３を取得する。コンテキスト情報生成部１２５は、これら単語ベクトル１６３−１〜１６３−３を合算して文脈ベクトル１６４を算出する。単語ベクトル１６３−１〜１６３−３の合算は、単語ベクトル１６３−１〜１６３−３の同じ次元同士の値を加算する演算である。よって、単語ベクトル１６３−１〜１６３−３と文脈ベクトル１６４の次元数は、共に２００次元であり同一となる。
【００６８】
コンテキスト情報生成部１２５は、文脈ベクトル１６４にコンテキストフィルタ１６５を適用してフィルタ後ベクトル１６６を算出する。単語インスタンス１６１に対するコンテキストフィルタ１６５の算出を開始するときに、コンテキストフィルタ１６５は初期化される。コンテキストフィルタ１６５の初期値は、所定値でもよいし単語インスタンス毎にランダムに決めてもよい。コンテキストフィルタ１６５は、文脈ベクトル１６４よりも次元数が少ないベクトルである。第２の実施の形態では、コンテキストフィルタ１６５の次元数は文脈ベクトル１６４の次元数の４分の１である。
【００６９】
コンテキスト情報生成部１２５は、文脈ベクトル１６４の各次元の値に対して、それに対応するコンテキストフィルタ１６５の次元の値を乗算する。文脈ベクトル１６４とフィルタ後ベクトル１６６の次元数は、共に２００次元であり同一となる。コンテキストフィルタ１６５の次元数が文脈ベクトル１６４の次元数の４分の１であるため、文脈ベクトル１６４の連続する４つの次元に対して、コンテキストフィルタ１６５の１つの次元が対応付けられる。例えば、文脈ベクトル１６４の１次元目から４次元目の値に対して、コンテキストフィルタ１６５の１次元目の値がそれぞれ乗算される。
【００７０】
コンテキスト情報生成部１２５は、フィルタ後ベクトル１６６をニューラルネットワーク１６７に入力する。ニューラルネットワーク１６７は、入力されたベクトルから周辺単語を推定する機械学習モデルである。ニューラルネットワーク１６７として、分散表現の単語ベクトルの生成時に学習されたニューラルネットワーク１３０を流用することができる。その場合、中間層１３３にフィルタ後ベクトル１６６を入力すればよい。ニューラルネットワーク１６７は、推定周辺単語１６８−１〜１６８−３を出力する。
【００７１】
コンテキスト情報生成部１２５は、推定周辺単語１６８−１〜１６８−３と正解である周辺単語１６２−１〜１６２−３の間の差異を示すロス１６９（推定ロス）を算出する。ニューラルネットワーク１６７は、文書に出現し得る単語の数に相当する長さのベクトルであって、各単語が周辺単語である確率に応じた数値を列挙したベクトルを推定結果として出力することがある。その場合、例えば、正解のベクトルと推定結果のベクトルの間で、次元毎に差の絶対値を算出して合計したものをロス１６９とすることができる。
【００７２】
コンテキスト情報生成部１２５は、ロス１６９が小さくなるようにコンテキストフィルタ１６５を更新する。コンテキストフィルタ１６５の更新には、様々な探索アルゴリズムを利用することができる。以上を繰り返すことで、単語インスタンス１６１に対応するコンテキストフィルタ１６５を算出することができる。
【００７３】
ここで、周辺単語１６２−１〜１６２−３の単語ベクトル１６３−１〜１６３−３を合算した文脈ベクトル１６４は、他の周辺単語の組み合わせパターンからも同じ値が再現されることがあり、意図しないコンテキストを表してしまう可能性がある。また、単語ベクトル１６３−１〜１６３−３を連結したベクトルは、次元数が大きく冗長である。これに対して、コンテキストフィルタ１６５は、コンテキストを区別する上で文脈ベクトル１６４の各次元がどの程度重要であるかを示している。コンテキストフィルタ１６５は、コンテキストの区別に十分な情報をコンパクトにまとめた情報であると言うことができる。
【００７４】
図９は、コンテキストフィルタの第１の生成例を示す図である。
ここでは、図５に示した文書１４１の３番目の文に含まれる単語インスタンス「意義」についてコンテキストフィルタを生成する場合を考える。
【００７５】
コンテキスト情報生成部１２５は、単語インスタンス「意義」の周辺単語「唱える」を抽出し、単語ベクトルテーブル１４３から「唱える」の単語ベクトル１７１を選択する。ここでは周辺単語は１つのみであるため、単語ベクトル１７１が文脈ベクトル１７２になる。また、コンテキスト情報生成部１２５は、ランダムな値で初期化したコンテキストフィルタ１７３を生成する。コンテキスト情報生成部１２５は、文脈ベクトル１７２にコンテキストフィルタ１７３を適用してフィルタ後ベクトル１７４を算出する。
【００７６】
ここでは説明を簡単にするため、文脈ベクトル１７２とコンテキストフィルタ１７３の次元数が同じであると仮定している。例えば、文脈ベクトル１７２の１次元目が０．０５であり、コンテキストフィルタ１７３の１次元目が０．５０である場合、フィルタ後ベクトル１７４の１次元目は０．０５×０．５０＝０．０２５と算出される。
【００７７】
コンテキスト情報生成部１２５は、フィルタ後ベクトル１７４をニューラルネットワーク１３０の中間層１３３に入力することで、ニューラルネットワーク１３０の出力層１３５から推定結果１７５を取得する。推定結果１７５は、文書に出現し得る単語それぞれが周辺単語である確率（信頼度）に応じた値を列挙したベクトルである。コンテキスト情報生成部１２５は、推定結果１７５と正解情報１７６とを比較してロスを算出する。正解情報１７６は、正解の周辺単語を示すベクトルであり、周辺単語である単語に対応する値を「１」とし、周辺単語でない単語に対応する値を「０」としたものである。
【００７８】
ロスは、単語毎の推定結果１７５と正解情報１７６の差の絶対値を合算した数値である。例えば、単語「考え」の推定結果が０．１０、単語「りんご」の推定結果が０．１５、単語「唱える」の推定結果が０．０１、単語「行く」の推定結果が０．０３、単語「こと」の推定結果が０．０２、単語「ある」の推定結果が０．０１であるとする。正解の周辺単語は「唱える」のみである。よって、０．１０＋０．１５＋（１．０−０．０１）＋０．０３＋０．０２＋０．０１＋…がロスとして算出される。
【００７９】
コンテキスト情報生成部１２５は、算出したロスが小さくなるようにコンテキストフィルタ１７３をコンテキストフィルタ１７７に更新する。例えば、１次元目が０．５０から０．６０に更新され、２次元目が０．１０から０．３０に更新され、３次元目が０．０１から０．８０に更新され、４次元目が−０．３０から０．２０に更新され、５次元目が−１．００から−０．４０に更新され、６次元目が−０．１０から０．８０に更新される。
【００８０】
図１０は、コンテキストフィルタの第１の生成例を示す図（続き）である。
コンテキスト情報生成部１２５は、周辺単語「唱える」に対応する単語ベクトル１７１から算出された文脈ベクトル１７２に、更新後のコンテキストフィルタ１７７を適用してフィルタ後ベクトル１７８を算出する。例えば、文脈ベクトル１７２の１次元目が０．０５であり、コンテキストフィルタ１７７の１次元目が０．６０である場合、フィルタ後ベクトル１７８の１次元目は０．０５×０．６０＝０．０３と算出される。
【００８１】
コンテキスト情報生成部１２５は、フィルタ後ベクトル１７８をニューラルネットワーク１３０の中間層１３３に入力することで、ニューラルネットワーク１３０の出力層１３５から推定結果１７９を取得する。コンテキスト情報生成部１２５は、推定結果１７９と正解情報１７６とを比較してロスを算出する。例えば、単語「考え」の推定結果が０．１０、単語「りんご」の推定結果が０．１８、単語「唱える」の推定結果が０．７５、単語「行く」の推定結果が０．０３、単語「こと」の推定結果が０．０１、単語「ある」の推定結果が０．０２であるとする。この場合、０．１０＋０．１８＋（１．０−０．７５）＋０．０３＋０．０１＋０．０２＋…がロスとして算出される。
【００８２】
このように、コンテキスト情報生成部１２５は、周辺単語の推定とコンテキストフィルタの更新とを所定回数繰り返してコンテキストフィルタを確定する。図５に示した文書１４１の４番目の文に含まれる単語インスタンス「異議」に対しても、周辺単語が上記の「意義」と同一であるため同一のコンテキストフィルタが生成される。よって、図７の拡張ベクトル１５５，１５７は、単語ベクトルが異なりコンテキストフィルタが同一になる。
【００８３】
図１１は、コンテキストフィルタの第２の生成例を示す図である。
ここでは、図５に示した文書１４１の５番目の文に含まれる単語インスタンス「意義」についてコンテキストフィルタを生成する場合を考える。
【００８４】
コンテキスト情報生成部１２５は、単語インスタンス「意義」の周辺単語「行く」、「こと」、「ある」を抽出し、単語ベクトルテーブル１４３から「行く」、「こと」、「ある」の単語ベクトル１８１〜１８３を選択する。コンテキスト情報生成部１２５は、単語ベクトル１８１〜１８３を合算して文脈ベクトル１８４を算出する。例えば、単語ベクトル１８１の１次元目が−０．０１であり、単語ベクトル１８２の１次元目が０．１０であり、単語ベクトル１８３の１次元目が０．１３である場合、文脈ベクトル１８４の１次元目は−０．０１＋０．１０＋０．１３＝０．２２と算出される。
【００８５】
また、コンテキスト情報生成部１２５は、ランダムな値で初期化したコンテキストフィルタ１８５を生成する。コンテキスト情報生成部１２５は、文脈ベクトル１８４にコンテキストフィルタ１８５を適用してフィルタ後ベクトル１８６を算出する。例えば、コンテキストフィルタ１８５の１次元目が０．５０である場合、フィルタ後ベクトル１８６の１次元目は０．２２×０．５０＝０．１１と算出される。
【００８６】
コンテキスト情報生成部１２５は、フィルタ後ベクトル１８６をニューラルネットワーク１３０の中間層１３３に入力することで、ニューラルネットワーク１３０の出力層１３５から推定結果１８７を取得する。コンテキスト情報生成部１２５は、推定結果１８７と正解情報１８８とを比較してロスを算出する。例えば、単語「考え」の推定結果が０．２０、単語「りんご」の推定結果が０．３１、単語「唱える」の推定結果が０．０１、単語「行く」の推定結果が０．３５、単語「こと」の推定結果が０．２０、単語「ある」の推定結果が０．２０であるとする。正解の周辺単語は「行く」、「こと」、「ある」である。よって、０．２０＋０．３１＋０．０１＋（１．０−０．３５）＋（１．０−０．２０）＋（１．０−０．２０）＋…がロスとして算出される。コンテキスト情報生成部１２５は、算出したロスが小さくなるようにコンテキストフィルタ１８５を更新する。
【００８７】
上記の図９，１０の例と図１１の例は、同一の単語「意義」についてのコンテキストフィルタを算出している。しかし、図９，１０の単語インスタンスと図１１の単語インスタンスとでは周辺単語が全く異なるため、類似しないコンテキストフィルタが生成される。
【００８８】
次に、コンテキストフィルタを利用した検索処理の例を説明する。
「考えが甘い。」という文と「りんごが甘い。」という文があるとする。この２つの文は同一の単語「甘い」を含んでいるものの、異なる語義として単語「甘い」を使用している。このため、機械翻訳を行う場合は２つの文の「甘い」に対して同一の訳語を割り当てるべきでない。検索部１２６は、単語「甘い」を含む文のうち前者の語義をもつ文を検索したいときには、コンテキストフィルタを含む拡張ベクトル全体を用いて類似度を計算することで、検索される文を適切に絞り込むことが可能となる。
【００８９】
また、文書の中に単語「service」と単語「sevice」があるとする。後者は前者の誤記である。単語「service」の単語ベクトルと単語「sevice」の単語ベクトルは類似しないことがある。一方、単語インスタンス「service」のコンテキストフィルタと単語インスタンス「sevice」のコンテキストフィルタは類似する可能性が高い。そこで、検索部１２６は、単語「service」を含む文を検索するときに、類似するコンテキストフィルタをもつ単語インスタンスを含む文を更に検索することで、単語「sevice」を含む文を検索結果に含めることができる。これにより、検索漏れを低減することができる。このとき、単語「sevice」の誤記を自動的に修正してもよいしユーザに修正を促してもよい。前述の単語「異議」と「意義」の誤記についても同様に処理することができる。
【００９０】
また、文書の中に空白を含まない「servicepack」という表記と空白を含む「service pack」という表記が混在しているとする。前者の表記からは単語「servicepack」が抽出され、後者の表記からは単語「service」が抽出される。単語「servicepack」と単語「service」には異なる単語ベクトルが割り当てられる。
【００９１】
一方、「servicepack」と同じコンテキストで「service」が使用されている文では、単語インスタンス「service」のコンテキストフィルタは単語インスタンス「servicepack」のコンテキストフィルタと類似する。そこで、検索部１２６は、コンテキストフィルタを用いた検索により「servicepack」を含む文に加えて「service pack」を含む文を検索することが可能となる。また、「servicepack」と異なるコンテキストで「service」が使用されている文では、単語インスタンス「service」のコンテキストフィルタは単語インスタンス「servicepack」のコンテキストフィルタと類似しない。そこで、検索部１２６は、コンテキストフィルタを用いた検索により「service」の後に「pack」以外の単語が続く文などコンテキストの異なる文を除外することが可能となる。
【００９２】
次に、機械学習装置１００の処理手順について説明する。
図１２は、単語ベクトル生成の手順例を示すフローチャートである。
（Ｓ１０）単語ベクトル生成部１２４は、文書を文に分割し、文を単語に分割する。
【００９３】
（Ｓ１１）単語ベクトル生成部１２４は、文書に含まれる単語インスタンス（単語の１つの出現位置）毎に、同一文内の前後ｎ単語など所定範囲内の周辺単語を抽出し、単語と周辺単語の対応関係を示す周辺単語テーブル１４２を生成する。
【００９４】
（Ｓ１２）単語ベクトル生成部１２４は、周辺単語テーブル１４２を用いてニューラルネットワーク１３０を学習する。ニューラルネットワーク１３０の学習では、単語ベクトル生成部１２４は、単語を入力層１３１に入力したときに出力層１３５から出力される推定周辺単語と実際の周辺単語とを比較し、ロスが小さくなるように重みを更新する。
【００９５】
（Ｓ１３）単語ベクトル生成部１２４は、ニューラルネットワーク１３０の学習が完了すると、各単語をニューラルネットワーク１３０の入力層１３１に入力し、中間層１３３のノードの値を列挙したベクトルを当該単語の単語ベクトルとして算出する。単語ベクトル生成部１２４は、単語ベクトルを単語ベクトルテーブル１４３に記録する。
【００９６】
図１３は、コンテキスト情報生成の手順例を示すフローチャートである。
（Ｓ２０）コンテキスト情報生成部１２５は、文書に含まれる各単語インスタンスにコンテキストフィルタを割り当て、各コンテキストフィルタを初期化する。
【００９７】
（Ｓ２１）コンテキスト情報生成部１２５は、文書の先頭を参照する。
（Ｓ２２）コンテキスト情報生成部１２５は、文書に含まれる複数の単語インスタンスのうち、現在の参照位置から次の単語インスタンスを選択する。
【００９８】
（Ｓ２３）コンテキスト情報生成部１２５は、ステップＳ２２で選択した単語インスタンスから所定範囲内にある周辺単語を検索する。周辺単語は前述の周辺単語テーブル１４２から検索してもよい。コンテキスト情報生成部１２５は、周辺単語に対応する単語ベクトルを単語ベクトルテーブル１４３から検索する。コンテキスト情報生成部１２５は、周辺単語の単語ベクトルを合算して文脈ベクトルを算出する。
【００９９】
（Ｓ２４）コンテキスト情報生成部１２５は、ステップＳ２３で算出した文脈ベクトルに、当該単語インスタンスに対応するコンテキストフィルタを適用する。コンテキストフィルタの適用は、単語ベクトルの各次元の値にコンテキストフィルタの値を乗算するものである。これにより、フィルタ後ベクトルが算出される。
【０１００】
（Ｓ２５）コンテキスト情報生成部１２５は、ステップＳ２４で算出したフィルタ後ベクトルを、単語ベクトル生成で学習したニューラルネットワーク１３０の中間層１３３に代入する。コンテキスト情報生成部１２５は、ニューラルネットワーク１３０の出力層１３５から周辺単語の推定結果を取得する。ただし、ニューラルネットワーク１３０に代えて、入力ベクトルから周辺単語を推定可能な他の機械学習モデルを使用してもよい。
【０１０１】
（Ｓ２６）コンテキスト情報生成部１２５は、ステップＳ２３で検索した実際の周辺単語とステップＳ２５で取得した周辺単語の推定結果とを比較してロスを算出する。
（Ｓ２７）コンテキスト情報生成部１２５は、ステップＳ２６で算出したロスに基づいて、ロスが小さくなるようにコンテキストフィルタを更新する。
【０１０２】
（Ｓ２８）コンテキスト情報生成部１２５は、参照位置が文書の末尾に到達したか、すなわち、現在選択している単語インスタンスが文書中の最後の単語インスタンスであるか判断する。文書の末尾に到達した場合はステップＳ２９に進み、文書の末尾に到達していない場合はステップＳ２２に進んで次の単語インスタンスを選択する。
【０１０３】
（Ｓ２９）コンテキスト情報生成部１２５は、ステップＳ２１〜Ｓ２８の反復回数が所定の閾値に到達したか、すなわち、文書を先頭から末尾までスキャンした回数が閾値に到達したか判断する。反復回数が閾値に到達した場合はステップＳ３０に進み、反復回数が閾値未満である場合はステップＳ２１に進んで文書の先頭に戻る。
【０１０４】
（Ｓ３０）コンテキスト情報生成部１２５は、文書に含まれる各単語インスタンスについて、当該単語インスタンスに関する単語ベクトルにコンテキストフィルタを付加して拡張ベクトルを生成する。コンテキスト情報生成部１２５は、生成した拡張ベクトルを単語インスタンスに対応付けて出力する。拡張ベクトルはインデックスとして使用される。例えば、コンテキスト情報生成部１２５は、拡張ベクトル付き文書１５０を生成する。
【０１０５】
次に、コンテキストフィルタを利用した語義判定について説明する。
図１４は、語義判定方法の第１の例を示す図である。
語義判定部１２７は、２以上の語義をもつ単語について、一部の単語インスタンスに付与された教師ラベルを用いた教師あり学習により、ラベルがまだ付与されていない単語インスタンスの語義を判定して自動的にラベルを付与する。
【０１０６】
教師データ記憶部１２３は、同一の単語について、単語インスタンス２１２−１に付与された教師ラベル２１１−１と、単語インスタンス２１２−２に付与された教師ラベル２１１−２とを記憶する。教師ラベル２１１−１，２１１−２は、ある単語がもつ２以上の語義のうち異なる語義を示す教師データである。人が単語インスタンス２１２−１，２１２−２の語義を判定して教師ラベル２１１−１，２１１−２を作成している。
【０１０７】
語義判定部１２７は、単語インスタンス２１２−１の周辺単語の単語ベクトルを合算して文脈ベクトルを算出し、対応するコンテキストフィルタ２１３−１を文脈ベクトルに適用してフィルタ後ベクトルを算出する。語義判定部１２７は、フィルタ後ベクトルをニューラルネットワーク２１４に入力して推定周辺単語２１５−１を求める。同様に、語義判定部１２７は、単語インスタンス２１２−２の周辺単語の単語ベクトルを合算して文脈ベクトルを算出し、対応するコンテキストフィルタ２１３−２を文脈ベクトルに適用してフィルタ後ベクトルを算出する。語義判定部１２７は、フィルタ後ベクトルをニューラルネットワーク２１４に入力して推定周辺単語２１５−２を求める。
【０１０８】
ニューラルネットワーク２１４は、フィルタ後ベクトルから周辺単語を推定する機械学習モデルであり、前述のニューラルネットワーク１３０を用いることができる。一方、第１の語義判定方法では、ニューラルネットワーク２１４とは異なるニューラルネットワーク２１６を学習する。ニューラルネットワーク２１６は、１以上の周辺単語の入力を受け付け、語義の推定結果を出力する機械学習モデルである。ニューラルネットワーク２１６は、例えば、単語毎に学習するようにする。
【０１０９】
語義判定部１２７は、推定周辺単語２１５−１をニューラルネットワーク２１６に入力し、単語インスタンス２１２−１に対応する推定語義２１７−１を取得する。また、語義判定部１２７は、推定周辺単語２１５−２をニューラルネットワーク２１６に入力し、単語インスタンス２１２−２に対応する推定語義２１７−２を取得する。
【０１１０】
ニューラルネットワーク２１６の入力は、複数の単語それぞれが推定周辺単語であるか否かを示すベクトルである。推定周辺単語である単語の入力値は「１」とし、推定周辺単語でない単語の入力値は「０」とする。ニューラルネットワーク２１４の出力をニューラルネットワーク２１６に入力するにあたり、ニューラルネットワーク２１４の出力を二値化する。ある単語の数値としてニューラルネットワーク２１４が閾値（例えば、０．５）を超える値を出力した場合、例えば、語義判定部１２７は、当該単語について「１」をニューラルネットワーク２１６に入力する。ある単語の数値としてニューラルネットワーク２１４が閾値以下の値を出力した場合、例えば、語義判定部１２７は、当該単語について「０」をニューラルネットワーク２１６に入力する。
【０１１１】
語義判定部１２７は、推定語義２１７−１と教師ラベル２１１−１とを比較し、推定語義２１７−２と教師ラベル２１１−２とを比較する。語義判定部１２７は、推定語義２１７−１，２１７−２と教師ラベル２１１−１，２１１−２が示す語義とのずれが小さくなるように、ニューラルネットワーク２１６の重みを更新する。
【０１１２】
ニューラルネットワーク２１６の学習が完了すると、語義判定部１２７は、語義が判定されておらずラベルが付与されていない単語インスタンス２１２−３を選択する。語義判定部１２７は、単語インスタンス２１２−３の周辺単語の単語ベクトルを合算して文脈ベクトルを算出し、対応するコンテキストフィルタ２１３−３を文脈ベクトルに適用してフィルタ後ベクトルを算出する。語義判定部１２７は、フィルタ後ベクトルをニューラルネットワーク２１４に入力して推定周辺単語２１５−３を求める。
【０１１３】
語義判定部１２７は、推定周辺単語２１５−３をニューラルネットワーク２１６に入力して単語インスタンス２１２−３の語義を推定し、推定した語義を示す自動ラベル２１８を生成して単語インスタンス２１２−３に付与する。このように、語義判定部１２７は、教師データを用いて推定周辺単語と語義の関係を学習し、学習した関係を用いて、未判定の単語インスタンスの語義を判定することができる。
【０１１４】
次に、語義判定の他の例を説明する。
図１５は、語義判定方法の第２の例を示すフローチャートである。
（Ｓ４０）語義判定部１２７は、判定対象の単語インスタンスを含む文を取得する。
【０１１５】
（Ｓ４１）語義判定部１２７は、ステップＳ４０で取得した文から、単語インスタンスから所定範囲内にある周辺単語を抽出し、周辺単語に対応する単語ベクトルを検索する。語義判定部１２７は、検索した単語ベクトルを合算して文脈ベクトルを算出する。
【０１１６】
（Ｓ４２）語義判定部１２７は、異なる語義を示す教師ラベルが付与された２以上の単語インスタンスに対応付けられている２以上のコンテキストフィルタを取得する。
（Ｓ４３）語義判定部１２７は、ステップＳ４１で算出した文脈ベクトルに、ステップＳ４２で取得した２以上のコンテキストフィルタをそれぞれ適用する。これにより、異なる教師ラベルに対応する２以上のフィルタ後ベクトルが算出される。
【０１１７】
（Ｓ４４）語義判定部１２７は、ステップＳ４３で算出した２以上のフィルタ後ベクトルをそれぞれニューラルネットワークに代入する。このニューラルネットワークは、入力ベクトルから周辺単語を推定するものであり、前述のニューラルネットワーク１３０やニューラルネットワーク２１４に対応する。これにより、語義判定部１２７は、異なる教師ラベルに対応する異なる推定周辺単語の集合を取得する。
【０１１８】
（Ｓ４５）語義判定部１２７は、ステップＳ４４で取得した推定周辺単語の集合それぞれに対して、ステップＳ４１で抽出した実際の周辺単語の集合と比較しロスを算出する。
（Ｓ４６）語義判定部１２７は、２以上の教師ラベルのうちステップＳ４５で算出したロスが最小の教師ラベルを選択する。語義判定部１２７は、判定対象の単語インスタンスの語義が、選択した教師ラベルが示す語義であると判定する。語義判定部１２７は、判定対象の単語インスタンスに、判定した語義を示すラベルを付与する。
【０１１９】
第２の実施の形態の機械学習装置１００によれば、単語の１回の出現である単語インスタンス毎に、コンテキスト情報としてコンテキストフィルタが算出される。そして、分散表現の単語ベクトルにコンテキストフィルタが連結されて拡張ベクトルが生成され、単語インスタンスに対して拡張ベクトルが付与される。
【０１２０】
これにより、単語の出現位置毎のコンテキストをコンパクトに表現することができる。また、周辺単語の単語ベクトルを合算した文脈ベクトルは、意図しないコンテキストを含んでしまう可能性があるという曖昧さをもつ。これに対して、文脈ベクトルのうち当該コンテキストの識別にとって重要な次元を示すコンテキストフィルタをコンテキスト情報として使用することで、異なるコンテキストを区別することができる。また、周辺単語の単語ベクトルを連結せずに合算するため、ベクトルの次元数を抑制することができる。よって、周辺単語の並び順を考慮する機械学習アルゴリズムと比べて、機械学習の複雑性を低減することができ、コンテキストの区別に十分な情報を効率的に生成することができる。
【０１２１】
また、２以上の語義をもつ単語に対しては、単語インスタンスによって類似しないコンテキストフィルタが生成されることがある。そこで、コンテキストフィルタも含めて拡張ベクトル全体を用いて検索処理を行うことで、類似する文の検索精度を向上させることができる。また、コンテキストフィルタに基づいて、語義を示すラベルを単語インスタンスに付与することで、その後の自然言語処理の精度を向上させることができる。また、誤記や表記揺れに起因する異なる単語表記に対して、類似するコンテキストフィルタが生成されることがある。そこで、コンテキストフィルタを用いて検索処理を行うことで、誤記や表記揺れの可能性がある単語表記を検出することができる。このように、コンテキストフィルタを用いて、分散表現の単語ベクトルを補完して自然言語処理を効率化できる。
【符号の説明】
【０１２２】
１０  コンテキスト情報生成装置
１１  記憶部
１２  処理部
１３  文書
１４−１，１４−２，１４−３  単語ベクトル
１５  合算ベクトル
１６  パラメータ
１７  機械学習モデル
１８  コンテキスト情報
【図１】
2020060970.tif 000003
【図２】
2020060970.tif 000004
【図３】
2020060970.tif 000005
【図４】
2020060970.tif 000006
【図５】
2020060970.tif 000007
【図６】
2020060970.tif 000008
【図７】
2020060970.tif 000009
【図８】
2020060970.tif 000010
【図９】
2020060970.tif 000011
【図１０】
2020060970.tif 000012
【図１１】
2020060970.tif 000013
【図１２】
2020060970.tif 000014
【図１３】
2020060970.tif 000015
【図１４】
2020060970.tif 000016
【図１５】
2020060970.tif 000017