オープンデータとプログラミング

Tag Archive for Skip-gramモデル

Windowsにword2vecのpythonインタフェースをインストールする

python

word2vecのpythonインターフェースをWindwos PCに入れようとしてもうまくいきません。

pip install word2vec

と、pipしてもword2vecのコンパイルが失敗します。
これはword2vecのソースコードがLinux用だからです。

word2vec-c\word2vec.c:19:21: fatal error: pthread.h: No such file or directory

実際、こんな感じで「pthread.h」が無いと怒られます。

そこで本記事では、Windows用に移植されたソースを使って無理くりインストールしてみます。インストールにあたっては、make、gcc、gitなどが必要になりますのであらかじめインストールしておいてください。

最初にやることは、word2vecのpythonインターフェースの入手です。githubから入手します。
このとき適当な作業フォルダで作業します(例ではC:\tmp)

C:\tmp>
C:\tmp>git clone https://github.com/danielfrg/word2vec

windwos用のword2vecのソースをgithubから入手します。

C:\tmp>git clone https://github.com/zhangyafeikimi/word2vec-win32

word2vecのpythonインターフェースのフォルダに移動します。
そして、Windows版のソースを格納するための空のフォルダ「word2vec-c」を作成します。

C:\tmp>cd word2vec
C:\tmp\word2vec>mv word2vec-c word2vec-c_bak #適当な名前でバックアップ
C:\tmp\word2vec>mkdir word2vec-c             #word2vec-cフォルダを作成

新しく作成した「word2vec-c」フォルダに、「C:\tmp\word2vec-win32」にあるWindows版ソースコード、Makefile一式をコピーします。

Makefile
compute-accuracy.c
distance.c
win32-port.h
word-analogy.c
word2phrase.c
word2vec.c

次に「C:\tmp\word2vec」にある「setup.py」をエディタで開いて編集します。
42行目をコメントアウトします。

#compile('word2vec-sentence2vec.c', 'word2vec-doc2vec')

続いて53-56行目を以下のように編集します。ポイントは2つのコマンド「word2phrase」・「word2vec-doc2vec」の削除と
コマンド名に拡張子「.exe」を付けることです。

【修正前】

    data_files=[('bin', ['bin/word2vec', 'bin/word2phrase',
                         'bin/word2vec-distance', 'bin/word2vec-word-analogy',
                         'bin/word2vec-compute-accuracy',
                         'bin/word2vec-doc2vec'])],

【修正後】

    data_files=[('bin', ['bin/word2vec.exe', 
                         'bin/word2vec-distance.exe', 'bin/word2vec-word-analogy.exe',
                         'bin/word2vec-compute-accuracy.exe'])],

最後に編集した「setup.py」を実行します。

C:\tmp\word2vec>python setup.py install

最後にpythonを立ち上げてimportできることを確認してみましょう。

C:\tmp\word2vec>python
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import word2vec
>>>

無事、importできました!
機能がオリジナルのLinux版と比べて少ないようですが・・・