word2vecで単語をマッピングする
何を作ったか?
こんなものを作りました。
http://tkdmah.com/word2cordinates
どんなものか?
word2vecを用いて単語を2次元にマッピングします。
word2vecは、単語を200次元ベクトルに変換するモデルです。
ベクトルは単位ベクトルなので、200次元球面に配置されることになります。
200次元ベクトルを人間が見るのは難しいので、2次元化します。
そのためにまず、4つの単語を用いてX軸とY軸を作成します。
次に、その軸で張られた座標に対して、単語をプロットします。
単語の座標は、以下のように決定されます。
X軸を規定する単語ベクトルをv_x+, v_x-, Y軸を規定する単語ベクトルをv_y+, v_y-とします。
また、プロット対象とする単語ベクトルをv_targetとします。
このとき、v_targetがv_x+, v_x-となす角(θ_x+, θ_x-)がどちらに近いかを[-1,1]にマッピングしたものが、X座標(x_target)となります。
同様に、Y座標はv_y+,v_y-から計算します。
どうやって作ったか?
1. 日本語版Wikipediaのデータをダウンロードする。
2. mecabで分かち書きする。
3. gensim/pythonを用いてword2vecのモデルを作成する。
4. モデルを利用したアプリケーションをgensim, django, d3.jsなどを利用して作成する。
5. webサーバを構築して公開する。
サンプル
- X軸:期待⇔不安、Y軸:幸福⇔不幸としてプロット
- X軸:数学⇔文学、Y軸:科学⇔社会としてプロット
その他におもしろいサンプルができたら教えて下さい^^
今後の課題
- Twitterデータでモデル作るとか
- 可視化の仕方を変えるとか