9_2:Word2vecとは? ml5.js JavaScript

Word2vecとは、グーグルの研究者であるトマス・ミコロフ氏らが提案した、単語の意味をベクトルで表現する方法で、自然言語処理と呼ばれる技術分野に属します。

そもそも「単語の意味をベクトルで表現する」というのが理解に苦しむところですが、「ml5-examples/p5js/Word2Vec」サンプルのdataフォルダにあるJSONファイルを開くと、具体的に見ることができます。

“in”:の右にある配列に注目してください。この配列には0.052956,0.065460,0.066195,0.047072,…といった小さな数値が300個含まれています。これらが”in”という単語の意味を表す数値です。

ではもっと簡易的な(適切ではないかも知れない)例で、「単語の意味をベクトルで表現する」を見ていきましょう。

たとえば、横軸に性別、縦軸に年齢を取り、「old woman」という単語を[1,1]で表したとします(ベクトルなので、実際には[0,0]->[1,1]への直線になります)。すると、同じ女性でそれより少し若い「aunt」は[1, 0.75]といった数値で表すことができます。同様にさらに若い「girl」は[1, 0.2]で表すことができます。

性別を男性(-1)にすると、[-1, 1]で「old man」を、[-1, 0.75]で「uncle」を、[-1, 0.2]で「boy」を表すこともできそうです。

これをグラフにすると次のようになります。性別と年齢という2つの特徴だけではありますが、「old woman」や「aunt」などの単語の意味を、原点からの直線(ベクトル)で表しています。

これと同じように、最初に見たJSONファイルの”in”は、その意味を300個の特徴で、もっともっと詳しく表しているのです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA