
WEB+DB PRESS Vol.100(技術評論社)の「word2vecを用いた単語のベクトル化」(P.42)をやってみました。word2vecを使用して、「パリ」-「フランス」+「日本」を計算してみるところです。
- 記事の内容や、操作を理解するための概念などは、このページには書きません。上のリンクから雑誌を購入してご覧ください。
この記事は、以下の記事の続きです。本質はあまり関係ないのですが、以下の記事で作成したデータを、この記事で使用しています。
WEB+DB PRESS (ウェブDBプレス) Vol.100「トピックモデルによる教師なし学習」(P.37)をやってみた
word2vecを用いた単語のベクトル化
Windows PowerShellを起動し、以下の記事で準備したDockerコンテナに接続して操作します。ここでは、Dockerコンテナに接続するまでの操作は省略します。
Wikipediaのデータでword2vecを実行
- 「cd /webdb100/04」と入力して、Enterキーを押します。
- 「cp ../03/wikipedia_lowcorpus.txt .」と入力して、Enterキーを押します。
- 雑誌記事(P.44)の「word2vec.pyの実行」のコマンドを入力し、Enterキーを押します。
学習済みモデルが作成されるまで、手元では6816秒(1.9時間)かかりました。 - 雑誌記事(P.45)の「query_tokyo.pyの実行」のコマンドを入力し、Enterキーを押します。
「東京」、「日本国内」、「日本人」などが表示されます。
「東京」は正解と言えるでしょう。「日本国内」「日本人」はもう一歩でしょうか。 - 雑誌記事(P.45)の「query_einstein.pyの実行」のコマンドを入力し、Enterキーを押します。
「ピアニスト」、「ピアノ」、「ハイフェッツ」などが表示されます。
「ピアニスト」や「ピアノ」はNGでしょうね。「ハイフェッツ」は「ヤッシャ・ハイフェッツ」(ヴァイオリニスト。ユダヤ人)のことだと思います。 - 雑誌記事(P.45)の「showvector.pyの実行」のコマンドの「showquery.py」を「showvector.py」に書き替えて入力し、Enterキーを押します。
「技術評論社」を表す400次元のベクトルが表示されます。
(長いので途中を省略)
雑誌記事と少し結果が異なるのは、乱数を使用しているためだそうです。Wikipediaの記事が更新されていることも原因の一つではないでしょうか。