MacPortsでword2vec:マルチスレッド改善のC実装+Python3対応のgensim
深層学習手法で用いられる単語のベクトル表現を求めて、構文的もしくは内容的な意味の演算が高い精度でできるword2vecは、実装が公開されて様々なテキストに対して手軽に試せることもあって大変注目を集めています。公開されているコードはLinux用ですが、少しバッチをあてることでMacでもビルドできます。さらに、マルチスレッドで効率的に学習するためのパッチも公開されています:
Word2vecの並列実行時の学習速度の改善
word2vecはMacPortsになっているので、インストールしてサンプルを試すことができます:
$ sudo port selfupdate $ sudo port install word2vec $ /opt/local/libexec/word2vec/demo-word.sh Enter word or sentence (EXIT to break): japan Word: japan Position in vocabulary: 582 Word Cosine distance ------------------------------------------------------------------------ china 0.672656 korea 0.595309 taiwan 0.591563 paekche 0.549183 japanese 0.534286 cambodia 0.529780 singapore 0.527291 india 0.524282 thailand 0.521931 malaysia 0.499453 germany 0.490402 russia 0.485997 canada 0.482687 prc 0.480759 mongolia 0.476699 taipei 0.476232 tokyo 0.475686 mainland 0.470766 chinese 0.468477 indonesia 0.466051 nepal 0.465414 australia 0.459817 philippines 0.459496 kazakhstan 0.459167 brazil 0.454301 jpy 0.453095 eas 0.451895 baekje 0.451650 laos 0.451343 grenada 0.434702 burma 0.434447 pakistan 0.432753 kyrgyzstan 0.432098 manchuria 0.430930 france 0.430890 jamaica 0.429333 kong 0.427525 macau 0.426827 hong 0.426736 asian 0.426563 Enter word or sentence (EXIT to break):
実行ファイルやデモスクリプトは、/opt/local/libexec/word2vec/にインストールされます。
また、Pythonで実装されたgensimパッケージでword2vecを使うこともできます。gensimのバージョン0.10.0からはPython2だけではなくPython3にも対応しています。このときCythonもインストールしておくと学習処理が格段に高速化されます:
$ sudo port install py34-gensim py34-cython