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