word2vec:Pythonで単語ベクトルを作成する

まず単語ベクトルとは,単語がN次元のある一点として記述されたもので,図は2次元で記述されています.また意味的に関連が強い単語は距離が近くなります.この単語ベクトルを作成するためのオープンソースを word2vec と言います.また単語ベクトルを駆使することで,レコメンド機能やチャットボットの開発,感情分析などを行うこともできるそうです.

図のような,単語ベクトルの足し算や引き算も可能である.

今回は 10,000語 が登録されている場合を考える.すると,one-hotベクトルの次元数は10,000となる.

本記事では,COBW (Continuous Bag-of-Words) と呼ばれる方法を解説する.この方法では,前後の単語から ? に入る単語の予測を行うという問題を考える.

1回目の重みの足し合わせにおいて,重みは常に1である.つまり,ここではone-hotベクトルの足し合わせを行っている.

ここで得られる10000×200の行列に,10,000個の単語ベクトル (200次元) が格納されている.one-hotベクトル (10,000次元) から単語ベクトル (200次元) ,次元が削減されていることが分かる.

COBW では,ニューラルネットを駆使することで,10,000次元のone-hotベクトルを200次元にまで削減し,各要素の意味の抽象化を行っている.実際には,次元削減後の各要素の意味は分からない.
以上が単語ベクトル作成のアルゴリズムの一例となります.その他のアルゴリズムとして skip-gram などもありますが,COBWの原理が分かっていれば理解は容易かと思います.本記事では,単語ベクトル作成の理論について説明したので,次の記事では gensim と呼ばれる python のライブラリを用いて,単語ベクトル作成を実装していきたいと思います.