(57)【要約】【課題】多義語の分散表現の精度を向上させることを課題とする。【解決手段】クラスタリング装置は、学習開始段階において、複数の単語それぞれのベクトル空間におけるベクトル値を記録する。クラスタリング装置は、学習後の段階において、複数の単語それぞれのベクトル空間でのベクトル値を記録する。クラスタリング装置は、複数の単語の、学習前後のベクトル値の変化状況に基づき、複数の単語をクラスタリングする。クラスタリング装置は、クラスタリング結果に基づき、複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する。【選択図】図３
2019159918.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル空間における単語の分散表現を生成するクラスタリングプログラムであって、
学習開始段階において、複数の単語それぞれの前記ベクトル空間におけるベクトル値を記録し、
学習後の段階において、前記複数の単語それぞれの前記ベクトル空間でのベクトル値を記録し、
前記複数の単語の、学習前後のベクトル値の変化状況に基づき、前記複数の単語をクラスタリングし、
クラスタリング結果に基づき、前記複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する、
処理をコンピュータに実行させるクラスタリングプログラム。
【請求項２】
複数の文書に含まれる単語について、前記ベクトル空間における起点を設定し、
前記単語を含む前記複数の文書それぞれを入力として、学習によって前記起点から移動した移動後のベクトルを取得し、
前記複数の文書それぞれを入力したときの前記起点と前記移動後のベクトルとの差分を移動ベクトルとして算出し、
前記複数の文書それぞれの移動ベクトル間の距離に基づいて、前記複数の文書をクラスタリングする処理を前記コンピュータに実行させる請求項１に記載のクラスタリングプログラム。
【請求項３】
クラスタリングされた文書に含まれる前記単語について、同一のクラスタリングには同一のラベルであって、異なるクラスタリング間では異なるラベルである、単語ラベルを付与する処理を前記コンピュータに実行させる請求項２に記載のクラスタリングプログラム。
【請求項４】
前記ベクトル空間でランダムに選択したベクトル、すべての要素がゼロであるゼロベクトル、または、予め定めた学習手法で学習して得られたベクトルを前記起点に設定する処理を前記コンピュータに実行させる請求項２に記載のクラスタリングプログラム。
【請求項５】
ベクトル空間における単語の分散表現を生成するクラスタリング方法であって、
学習開始段階において、複数の単語それぞれの前記ベクトル空間におけるベクトル値を記録し、
学習後の段階において、前記複数の単語それぞれの前記ベクトル空間でのベクトル値を記録し、
前記複数の単語の、学習前後のベクトル値の変化状況に基づき、前記複数の単語をクラスタリングし、
クラスタリング結果に基づき、前記複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する、
処理をコンピュータが実行するクラスタリング方法。
【請求項６】
ベクトル空間における単語の分散表現を生成するクラスタリング装置であって、
学習開始段階において、複数の単語それぞれの前記ベクトル空間におけるベクトル値を記録する第１記録部と、
学習後の段階において、前記複数の単語それぞれの前記ベクトル空間でのベクトル値を記録する第２記録部と、
前記複数の単語の、学習前後のベクトル値の変化状況に基づき、前記複数の単語をクラスタリングする分類部と、
クラスタリング結果に基づき、前記複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する生成部と、
を有するクラスタリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタリングプログラム、クラスタリング方法およびクラスタリング装置に関する。
【背景技術】
【０００２】
従来から、文書処理を実現する上で単語の意味を如何に表現するかが重要であることから、one-hot表現を実現するBag  of  Wordsや単語の意味的な距離を考慮した表現であるDistributed  Representationなどが利用されている。近年では、単語間の意味的な関係をベクトルで表現する分散表現が利用されており、単語を分散表現する技術としては、単語の共起関係と次元圧縮を同時に実現した仕組みであるWord2Vecや文中に現れる単語を入力して周囲の単語を予測するSkip-gramモデルなどが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３３１５１５号公報
【特許文献２】国際公開第２０１１／１１８７２３号
【特許文献３】特開２０１３−０２０４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記技術では、多義語の分散表現の精度がよくない。例えば、Word2Vecなどの技術は、単語の意味を考慮しない単語の表記である表層に関する分散表現であるため、多義語については、単語の多義性を考慮しない分散表現が得られる。一方、単語の多義性を考慮し、多義語の表記を書き換えて区別して学習させることにより分散表現を得ることができるが、多義語の分離をどのように進めるかを判断することは難しい。
【０００５】
一つの側面では、多義語の分散表現の精度を向上させることができるクラスタリングプログラム、クラスタリング方法およびクラスタリング装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１の案では、クラスタリングプログラムは、ベクトル空間における単語の分散表現を生成するクラスタリングプログラムであって、学習開始段階において、複数の単語それぞれの前記ベクトル空間におけるベクトル値を記録する処理をコンピュータに実行させる。クラスタリングプログラムは、学習後の段階において、前記複数の単語それぞれの前記ベクトル空間でのベクトル値を記録する処理をコンピュータに実行させる。クラスタリングプログラムは、前記複数の単語の、学習前後のベクトル値の変化状況に基づき、前記複数の単語をクラスタリングする処理をコンピュータに実行させる。クラスタリングプログラムは、クラスタリング結果に基づき、前記複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する処理をコンピュータに実行させる。
【発明の効果】
【０００７】
一つの側面では、多義語の分散表現の精度を向上させることができるクラスタリングプログラム、クラスタリング方法およびクラスタリング装置を提供することを目的とする。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかるクラスタリング装置を説明する図である。
【図２】図２は、実施例１にかかる学習手法を説明する図である。
【図３】図３は、実施例１にかかるクラスタリング装置の機能構成を示す機能ブロック図である。
【図４】図４は、文書ＤＢに記憶される情報の例を示す図である。
【図５】図５は、生成される辞書と対応表の例を示す図である。
【図６】図６は、w1のs1による移動ベクトルの算出例を説明する図である。
【図７】図７は、各文書から算出したw1の移動ベクトルを説明する図である。
【図８】図８は、クラスタリング結果を説明する図である。
【図９】図９は、クラスタリング処理の流れを示すフローチャートである。
【図１０】図１０は、起点が１つの場合の精度劣化を説明する図である。
【図１１】図１１は、ハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示するクラスタリングプログラム、クラスタリング方法およびクラスタリング装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせることもできる。
【実施例１】
【００１０】
［クラスタリング装置の説明］
図１は、実施例１にかかるクラスタリング装置を説明する図である。図１に示すように、クラスタリング装置は、多義性がある単語（多義語）を含む文書から単語を抽出し、各文書を使った単語の分散表現の学習過程で、分散表現の移動ベクトルをクラスタリングするコンピュータ装置の一例である。
【００１１】
一般的に、単語の多義性を考慮したコンテキスト（共起する単語のBag  of  words）のクラスタリングでは、単語の類似性を考慮せずクラスタリングするため、多義性の判別精度が高くない。例えば、単語の多義性や同一性を考慮して、単語の表層自体を書き換え、クラスタリングを行う方法も考えられるが、異なる単語の距離（差異）は類似性を考慮されないので、暖かいと温かい、温かいと寒いなどの距離は一律となる。一方、単語の類似性を考慮するために、一旦Word2Vecや特異値分解を使って分散表現を獲得したのちに、コンテキストのクラスタリングを実行することも考えられるが、この方法で獲得した分散表現は同一単語の多義性を考慮したものとはならない。
【００１２】
このように、多義性と類似性を同時に考慮しつつコンテキストをクラスタリングすることが望まれている。そこで、実施例１にかかるクラスタリング装置は、単語ごとに以下の処理を実行する。クラスタリング装置は、分散表現の空間で起点を決定し、初期状態を使って、学習器のパラメータを設定する。その後、クラスタリング装置は、各単語を入力文書毎に学習を行い、学習前後の分散表現の差異から移動ベクトルを求め、移動ベクトルをクラスタリングする。
【００１３】
例えば、クラスタリング装置は、必要に応じてイテレーションを回し、起点から分散表現を動かす。ここで、クラスタリング装置は、単語Ａが果物と会社の２つの意味を有する場合、学習の過程で果物と会社の２つの方向に移動しながら学習する。すなわち、クラスタリング装置は、分散表現の学習過程における次元圧縮したベクトル空間を使うことで類似性を考慮し、その学習過程で移動する方向に注目することで多義性を考慮する。この結果、クラスタリング装置は、多義語の分散表現の精度を向上させることができる。
【００１４】
次に、クラスタリング装置が実行する学習手法の一例を説明する。クラスタリング装置は、Word2Vecなどの様々な公知の学習手法を採用することができるが、実施例１では、文中に現れる単語を入力して周囲の単語を予測する学習モデルであるSkip-gramモデルを用いる例で説明する。図２は、実施例１にかかる学習手法を説明する図である。図２に示すように、クラスタリング装置の学習器は、Ｖ次元one-hotベクトルをInput  Layerに入力し、それを一旦Ｎ次元（Ｎ＜Ｖ）のHidden  layerに写像したのち、Ｃ個のword（それぞれＶ次元)の単語ベクトルをOutput  Layerから出力する。
【００１５】
ここで、学習器は、想定した出力ベクトルと違っていれば、その差分を学習するように、バックプロパゲーションなどの手法を用いてパラメタフィッティングを行う。そして、各単語の出力されるＶ次元ベクトルのうち最も大きい要素を予測した単語とし、実際に予測したい単語との差異を埋めるように重み（Ｗ）の学習が進み、学習過程を通じて得られた隠れ層のベクトルが入力ベクトルに対応する分散表現となる。なお、図２に示すｘｋは入力ベクトルであり、ｙ１ｊなどは出力ベクトルであり、ＷＶ×Ｎは入力層（Input  Layer）から隠れ層（Hidden  layer）への重みであり、Ｗ´Ｎ×Ｖは隠れ層（Hidden  layer）から出力層（Output  Layer）への重みである。
【００１６】
［機能構成］
図３は、実施例１にかかるクラスタリング装置１０の機能構成を示す機能ブロック図である。図３に示すように、クラスタリング装置１０は、通信部１１、記憶部１２、制御部２０を有する。
【００１７】
通信部１１は、他の装置の間の通信を制御する処理部であり、例えば通信インタフェースなどである。例えば、通信部１１は、管理者端末から処理の開始指示や文書データなどを受信し、クラスタリング結果などを指定端末に送信する。
【００１８】
記憶部１２は、プログラムやデータを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部１２は、文書ＤＢ１３とクラスタリング結果ＤＢ１４を記憶する。
【００１９】
文書ＤＢ１３は、学習用の文書を記憶するデータベースである。具体的には、文書ＤＢ１３は、多義語を含む複数の単語を有する複数の文書を記憶する。図４は、文書ＤＢ１３に記憶される情報の例を示す図である。図４に示すように、文書ＤＢ１３は、文書ＩＤが割当てられた複数の文書を記憶する。図４の例では、文書ＩＤが「s1」の文書は「I  cut  an  apple  in  the  table.」であることを示す。
【００２０】
クラスタリング結果ＤＢ１４は、クラスタリング結果を記憶するデータベースである。具体的には、クラスタリング結果ＤＢ１４は、後述する制御部２０によって生成された、文書のクラスタリングを記憶する。なお、詳細は後述するので、ここでは省略する。
【００２１】
制御部２０は、クラスタリング装置１０全体を司る処理部であり、例えばプロセッサなどである。この制御部２０は、抽出部２１、起点決定部２２、学習部２３、移動ベクトル算出部２４、分類部２５、ベクトル生成部２６を有する。なお、抽出部２１、起点決定部２２、学習部２３、移動ベクトル算出部２４、分類部２５、ベクトル生成部２６は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。なお、起点決定部２２は、第１記録部の一例であり、学習部２３は、第２記録部の一例であり、移動ベクトル算出部２４および分類部２５は、分類部の一例であり、ベクトル生成部２６は、生成部の一例である。
【００２２】
抽出部２１は、文書ＤＢ１３に記憶される各文書から単語を抽出し、単語の辞書と各単語を含む文書の一覧を生成する処理部である。図４に示した例で説明すると、抽出部２１は、各文書を読み出して形態素解析を実行して単語を抽出する。このとき、抽出部２１は、英語文書などの場合、過去形などの変化形を正規形にして抽出する。続いて、抽出部２１は、s1の文書の先頭から参照していき、単語を抽出して、登場する順で単語に識別子（単語ＩＤ）を付与する。
【００２３】
図４の例では、まず、抽出部２１は、s1の「I」を抽出して単語ＩＤ「w1」を付与し、次にs1の「cut」を抽出して単語ＩＤ「w2」を付与し、s1の「an」を抽出して単語ＩＤ「w3」を付与し、s1の「apple」を抽出して単語ＩＤ「w4」を付与し、s1の「on」を抽出して単語ＩＤ「w5」を付与し、s1の「the」を抽出して単語ＩＤ「w6」を付与し、s1の「table」を抽出して単語ＩＤ「w7」を付与する。続いて、抽出部２１は、s2の先頭の「I」を読み出すが既に抽出済みであることから対象外とし、次にs2の「use」を抽出して単語ＩＤ「w8」を付与する。
【００２４】
このようにして、抽出部２１は、各文書で重複する単語は抽出の対象外としつつ、各文書から単語を抽出して辞書を生成する。その後、抽出部２１は、各単語を含む文書の一覧を生成する。例えば、抽出部２１は、単語ＩＤ「w1」の単語「I」がs1、s2、s3の各文書に含まれることから、「w1」と「s1、s2、s3」とを対応付け、単語ＩＤ「w2」の単語「cut」がs1の文書のみに含まれることから、「w2」と「s1」とを対応付ける。
【００２５】
上述した手法で生成された辞書と対応付けを図５に示す。図５は、生成される辞書と対応表の例を示す図である。図５に示すように、抽出部２１は、各文書から抽出した単語の辞書dicとして、「dic＝｛w1：I，w2：cut，w3：an，・・・｝」などを生成する。また、抽出部２１は、各単語と文書との対応表であるword_sentenceとして｛w1：［s1，s2，s3，s4］、w2：［s2］、・・・｝を生成する。そして、抽出部２１は、辞書dicと対応表word_sentenceとを、起点決定部２２等の他の処理部へ出力する。
【００２６】
起点決定部２２は、学習前後のベクトル値の変化状況を示す移動ベクトルを作成する際のベクトル空間の起点を単語ごとに決定する処理部である。具体的には、起点決定部２２は、抽出部２１によって生成された辞書dic内の各単語w1、w2、w3などのそれぞれに対して、学習初期値となる起点を決定する。
【００２７】
例えば、起点決定部２２は、次元数を３とした場合に、すべての要素が０のベクトルであるゼロベクトルを起点とし、それに準ずるＷＶ×ＮとＷ´Ｎ×Ｖを設定する。具体的には、起点決定部２２は、initial_h_w1＝（0.0，0.0，0.0）を起点とし、ＷＶ×Ｎはw1の入力ベクトルｘとの掛け算の結果initial_h_w1になるようにパラメータを設定し、Ｗ´Ｎ×Ｖは隠れ層からの入力ベクトルとの掛け算の結果initial_h_w1になるようにパラメータを設定する。
【００２８】
別の手法としては、起点決定部２２は、ランダムに生成したベクトルを起点とし、それに準ずるＷＶ×ＮとＷ´Ｎ×Ｖを設定することもできる。例えば、起点決定部２２は、ランダムに選択したinitial_h_w1＝（0.13，-0.64，1.55）を起点とし、ＷＶ×Ｎはw1の入力ベクトルｘとの掛け算の結果initial_h_w1になるようにパラメータを設定し、Ｗ´Ｎ×Ｖは隠れ層からの入力ベクトルとの掛け算の結果initial_h_w1になるようにパラメータを設定する。また、別の手法としては、起点決定部２２は、word2vecで学習したベクトルを起点とし、それに準ずるＷＶ×ＮとＷ´Ｎ×Ｖを設定することもできる。
【００２９】
このようにして、起点決定部２２は、各単語について、起点および重みを決定して学習部２３に出力する。なお、実施例１では、単語w1について、ランダムに生成したinitial_h_w1＝（0.13，-0.64，1.55）を起点に設定した例で説明する。
【００３０】
学習部２３は、各単語においてその単語を含む文章を使って起点からその単語の分散表現を移動させる処理部である。すなわち、学習部２３は、起点決定部２２によって決定された起点、文書から生成されるskip-gramのｙベクトル、文書から生成されるskip-gramのｘベクトルを入力として、skip-gramを用いて予め定めた所定回数だけ学習させる。上記例では、学習部２３は、単語w1の分散表現を、文書s1を入力としてskip-gramを使って移動させる。
【００３１】
例えば、学習部２３は、文書s1を用いて単語w1を学習させる場合、起点「initial_h_w1＝（0.13，-0.64，1.55）」、skip-gramのｙベクトル「y_w1＝（0，1，1，1，1，1，1，0，・・・)」、skip-gramのｘベクトル「x_w1＝（1，0，0，0，・・・）」を入力として、skip-gramを用いた学習を３回実行し、単語w1の学習後のベクトル「learned_h_w1_s1：（0.24，-1.56，3.77）」を取得する。そして、学習部２３は、単語w1を文書s1で学習した結果として、起点「initial_h_w1＝（0.13，-0.64，1.55）」と学習結果「learned_h_w1_s1：（0.24，-1.56，3.77）」とを移動ベクトル算出部２４に出力する。
【００３２】
このようにして、学習部２３は、各単語を、当該単語を含む各文書で学習し、その学習前後のベクトルを取得して、移動ベクトル算出部２４に出力する。例えば、図５の対応表を例にして説明すると、学習部２３は、単語w1については、文書s1、s2、s3などのそれぞれで学習して分散表現ｈを取得し、単語w2については、文書s1のみで学習して分散表現ｈを取得する。
【００３３】
移動ベクトル算出部２４は、各単語について、起点のベクトルと学習後のベクトルから、学習前後の分散表現の差異である移動ベクトルを算出する処理部である。図６は、w1のs1による移動ベクトルの算出例を説明する図である。移動ベクトル算出部２４は、単語w1の起点となるベクトル「initial_h_w1＝（0.13，-0.64，1.55）」と、単語w1の学習後のベクトル「learned_h_w1_s1：（0.24，-1.56，3.77）」との差分「0.11，-0.92，2.22」を、単語w1の文書s1による移動ベクトル「diff_h_w1_s1」として算出して、分類部２５に出力する。
【００３４】
このようにして、移動ベクトル算出部２４は、各単語について、当該単語を含む各文書を用いた学習を実行した後に、各文書による各移動ベクトルを算出する。上記単語w1を一例にして説明する。図７は、各文書から算出したw1の移動ベクトルを説明する図である。単語w1は、文書s1、s2、s3、s4それぞれに含まれることから、文書s1、s2、s3、s4それぞれを入力とする学習が行われて、文書s1、s2、s3、s4それぞれに対する移動ベクトルが算出される。このため、図７に示すように、単語w1の移動ベクトルの集合「diff_h_w1」は、文書s1を用いた移動ベクトル［s1：（0.11，-0.92，2.22）］、文書s2を用いた移動ベクトル［s2：（0.21，-1.32，3.22）］、文書s3を用いた移動ベクトル［s3：（0.19，-3.92，1.22）］、文書s4を用いた移動ベクトル［s4：（0.12，-0.93，2.23）］を含むこととなる。
【００３５】
分類部２５は、複数の単語の学習前後のベクトル値の変化状況に基づき、複数の単語をクラスタリングする処理部である。具体的には、分類部２５は、移動ベクトル算出部２４によって算出された各単語の移動ベクトル間の距離を、公知のクラスタリング技術を用いて算出し、距離が閾値以下となる、距離が近い移動ベクトルを同じクラスタに分類する。
【００３６】
図８は、クラスタリング結果を説明する図である。図８の（ａ）は、単語w1の移動ベクトルの集合「diff_h_w1＝｛s1：（0.11，-0.92，2.22）｝、｛s2：（0.21，-1.32，3.22）｝、｛s3：（0.19，-3.92，1.22）｝、｛s4：（0.12，-0.93，2.23）｝」が入力されて、各移動ベクトル間の距離それぞれ距離が閾値以下となった例を示している。この場合、分類部２５は、各移動ベクトルを同じクラスタに分類し、「cluster_h_w1＝｛cluster1：（s1，s2，s3，s4）｝」を生成する。
【００３７】
この例では、分類部２５は、単語w1が１つのクラスタに分類されたので、意味が１つであると推定する。そして、分類部２５は、s1，s2，s3，s4の各文書に登場する単語w1には同じ単語ラベルを付与する。例えば、単語w1が「I」である場合、分類部２５は、s1，s2，s3，s4の各文書に登場する「I」に単語ラベル「w1_1」などを付与する。例を挙げると、「s1：I  cut  an  apple  in  the  table」に対して、「s1：I＿１  cut  an  apple  in  the  table」などと単語ラベルが付与される。
【００３８】
また、図８の（ｂ）は、単語w4のクラスタリング結果「cluster_h_w4＝｛cluster1：（s1，s10，s103）｝、｛cluster2：（s2，s3，s36，s58）｝」を示している。この例では、分類部２５は、単語w4が２つのクラスタに分類されたので、意味が２つであると推定する。そして、分類部２５は、クラスタ１のs1，s10，s103の各文書に登場する単語w4には同じ単語ラベルを付与し、クラスタ２のs2，s3，s36，s58の各文書に登場する単語w4にはクラスタ１とは異なる単語ラベルを付与する。例えば、単語w4が「ｃｕｔ」である場合、分類部２５は、s1，s10，s103の各文書に登場する「cut」に単語ラベル「w4_1」などを付与し、s2，s3，s36，s58の各文書に登場する「cut」に単語ラベル「w4_2」などを付与する。
【００３９】
例を挙げると、上記クラスタ１のs1については「s1：I＿1  cut  an  apple  in  the  table」に対しては、「s1：I＿1  cut＿１  an  apple  in  the  table」などと単語ラベルが付与され、クラスタ２の「s3：AAAcompany  cut  3000  employees.」に対しては、「s3：AAAcompany  cut＿2  3000  employees.」などと単語ラベルが付与される。
【００４０】
ベクトル生成部２６は、クラスタリング結果に基づき、複数の単語に含まれる多義語に対し、語義ごとに分離したベクトルを生成する処理部である。例えば、ベクトル生成部２６は、クラスタに含まれる複数の移動ベクトルによってクラスタの範囲を決定することもできる。上記例で説明すると、ベクトル生成部２６は、「cluster_h_w1＝｛cluster1：（s1，s2，s3，s4）｝」と決定された場合、このクラスタの要素の集合「diff_h_w1＝｛s1：（0.11，-0.92，2.22）｝、｛s2：（0.21，-1.32，3.22）｝、｛s3：（0.19，-3.92，1.22）｝、｛s4：（0.12，-0.93，2.23）｝」の各移動ベクトルで囲まれる範囲を、単語ｗ１の意味の範囲と決定することができる。
【００４１】
また、ベクトル生成部２６は、クラスタに含まれる複数の移動ベクトルから重心を算出して、当該重心に該当するベクトルを単語の意味の平均ベクトルと決定することもできる。上記例で説明すると、ベクトル生成部２６は、「cluster_h_w4＝｛cluster1：（s1，s10，s103）｝、｛cluster2：（s2，s3，s36，s58）｝」と決定された場合、このクラスタ１の要素の集合の各移動ベクトルの重心を算出し、単語ｗ４の第１の意味の基準値と決定するとともに、このクラスタ２の要素の集合の各移動ベクトルの重心を算出し、単語ｗ４の第２の意味の基準値と決定することもできる。
【００４２】
なお、ラベルが付与された文書を用いて、単語の類似性および多義性を考慮した、分散表現の学習を実行することもできる。また、ベクトル生成部２６が生成した各ベクトルを用いて、多義語の分散表現の学習などを実行することもできる。
【００４３】
［処理の流れ］
図９は、クラスタリング処理の流れを示すフローチャートである。図９に示すように、クラスタリング装置１０の抽出部２１は、文書ＤＢ１３に記憶される各文書から単語を抽出し、単語の辞書を生成するとともに（Ｓ１０１）、と各単語を含む文書の一覧である対応表を生成する（Ｓ１０２）。
【００４４】
続いて、起点決定部２２は、単語を１つ選択し（Ｓ１０３）、予め定めた手法を用いて起点を決定する（Ｓ１０４）。その後、学習部２３は、Ｓ１０３で選択された単語を含む文書を１つ選択し（Ｓ１０５）、起点決定部２２は、起点に設定されたベクトルと、それに準ずる重みを生成して、初期分散表現を生成する（Ｓ１０６）。
【００４５】
そして、学習部２３は、起点、文書から生成されるskip-gramのｙベクトル、文書から生成されるskip-gramのｘベクトルを入力として、skip-gramを用いて予め定めた所定回数だけ学習を実行し（Ｓ１０７）、学習後の分散表現を取得する（Ｓ１０８）。
【００４６】
その後、移動ベクトル算出部２４は、学習前後の分散表現を用いて、単語の移動ベクトルを算出する（Ｓ１０９）。そして、Ｓ１０３で選択された単語を含む文書が他にも存在する場合（Ｓ１１０：Ｙｅｓ）、Ｓ１０５以降を繰り返す。
【００４７】
一方、Ｓ１０３で選択された単語を含む文書が他に存在しない場合（Ｓ１１０：Ｎｏ）、分類部２５は、Ｓ１０３で選択された単語を含む全文書分の移動ベクトル、すなわち、各文書を用いて算出された各移動ベクトルを抽出し（Ｓ１１１）、各移動ベクトル間の距離などを用いてクラスタリングを実行する（Ｓ１１２）。
【００４８】
そして、分類部２５は、クラスタリング結果にしたがって、同一クラスタリングでは同じラベルであって、異なるクラスタリングでは異なるラベルである、単語ラベルを生成して各文書に付与する（Ｓ１１３）。
【００４９】
その後、未処理の単語がある場合は（Ｓ１１４：Ｙｅｓ）、Ｓ１０３以降が繰り返され、未処理の単語がない場合は（Ｓ１１４：Ｎｏ）、クラスタリング処理が終了する。
【００５０】
［効果］
上述したように、クラスタリング装置１０は、各文章を使った単語の分散表現の学習過程で、分散表現の移動ベクトルをクラスタリングすることができる。そして、クラスタリング装置１０は、各単語における移動ベクトルをクラスタリングし、意味の数を推定することで、多義語の異なる意味ごとに異なるラベルを付与することができる。したがって、クラスタリング装置１０は、全ての単語において分散表現の学習過程の移動ベクトルをクラスタリングすることで、精度の高い意味表現学習を実行することができ、多義語の分散表現の精度を向上させることができる。
【実施例２】
【００５１】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００５２】
［起点の設定］
上記実施例では、ランダムに設定した一つの起点を用いた例を説明したが、ランダムに起点を決める場合、学習過程の移動方向がはっきりせず、クラスタリングの精度が低下することも考えられる。図１０は、起点が１つの場合の精度劣化を説明する図である。学習の過程で図１０の（ａ）に示すように本来のベクトルを跨ぐように移動すると、意味Ｂを含む文章の移動がはっきりしなくなり、クラスタリングの精度が劣化する。また、図１０の（ｂ）に示すように、学習している単語の意味（意味Ａ、意味Ｂ）が複数あって、それぞれのベクトルの直線上の同じ側に起点が設定されてしまうと、学習による移動方向が同一になるので、各単語が区別できなくなる。
【００５３】
そこで、クラスタリング装置１０は、複数の起点を用意して各起点を用いた学習を実行し、クラスタリングが正常に実行できた結果を使うことで、精度向上を図ることができる。例えば、クラスタリング装置１０は、１つの単語に対してランダムに設定した複数の起点を用意する。そして、クラスタリング装置１０は、起点ごとに実施例１で説明した学習を実行して、起点ごとに移動ベクトルを算出する。
【００５４】
その後、クラスタリング装置１０は、クラスタリングが成功した１つを採用することができる。また、クラスタリング装置１０は、起点ごとの移動ベクトルの平均値を用いてクラスタリングを実行することもでき、クラスタリングが失敗した起点以外の移動ベクトルを用いて平均値を算出することもできる。
【００５５】
また、クラスタリング結果を用いてさらに学習することもできる。例えば、図８の（ｂ）の場合、単語w4について、文書s1、s10、s103に含まれるとして再度学習し、さらに、単語w4について、文書s2、s3、s36、s58に含まれるとして再度学習する。このようにすることで、単語w4の意味を細分化することができる。また、単語w4の意味を細分化できるので、単語w4を含む文書を用いた他の単語についても新たなクラスタリングが期待でき、全体的なクラスタリングの精度の向上が期待できる。
【００５６】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００５７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、アイテムを表示する処理部と、選好を推定する処理部とを別々の筐体で実現することもできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５８】
［ハードウェア］
図１１は、ハードウェア構成例を示す図である。図１１に示すように、クラスタリング装置１０は、ネットワーク接続装置１０ａ、入力装置１０ｂ、ＨＤＤ（Hard  Disk  Drive）１０ｃ、メモリ１０ｄ、プロセッサ１０ｅを有する。また、図１１に示した各部は、バス等で相互に接続される。
【００５９】
ネットワーク接続装置１０ａは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。入力装置１０ｂは、マウスやキーボードなどであり、ユーザから各種指示などを受け付ける。ＨＤＤ１０ｃは、図３に示した機能を動作させるプログラムやＤＢを記憶する。
【００６０】
プロセッサ１０ｅは、図３に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｃ等から読み出してメモリ１０ｄに展開することで、図３等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、クラスタリング装置１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｅは、抽出部２１、起点決定部２２、学習部２３、移動ベクトル算出部２４、分類部２５、ベクトル生成部２６等と同様の機能を有するプログラムをＨＤＤ１０ｃ等から読み出す。そして、プロセッサ１０ｅは、抽出部２１、起点決定部２２、学習部２３、移動ベクトル算出部２４、分類部２５、ベクトル生成部２６等と同様の処理を実行するプロセスを実行する。
【符号の説明】
【００６１】
１０  クラスタリング装置
１１  通信部
１２  記憶部
１３  文書ＤＢ
１４  クラスタリング結果ＤＢ
２０  制御部
２１  抽出部
２２  起点決定部
２３  学習部
２４  移動ベクトル算出部
２５  分類部
２６  ベクトル生成部
【図１】
2019159918.tif 000003
【図２】
2019159918.tif 000004
【図３】
2019159918.tif 000005
【図４】
2019159918.tif 000006
【図５】
2019159918.tif 000007
【図６】
2019159918.tif 000008
【図７】
2019159918.tif 000009
【図８】
2019159918.tif 000010
【図９】
2019159918.tif 000011
【図１０】
2019159918.tif 000012
【図１１】
2019159918.tif 000013