(ここから追記)
この記事に関して,こちら に追加情報を書いてます
(ここまで追記)
最近,word2vec や fastText などの語彙のベクトル化に興味あります.それらの説明はまたいつかとして,語彙を意味のあるベクトルデータに変換して,
king - man + women = queenの加算計算をやってしまうとは,素直にすごいの一言です.
個人的にfastTextでWikipediaの全データを使って,学習させて,
ザク + 赤い = シャア専用ザクの計算ができたのは,本当に感動しました.
ただ,加算だけでは満足できませんよね.他のサービスと連携させたいですよね.やっぱり,いまはPythonですよね.ということで,fastTextをPythonで動かす方法を色々調べました.
fasttext 0.8.3
現在,「fasttext python」で検索したらトップに表示される,各種技術ブログ等でも紹介されている,おそらく誰もがこれを使おうと思うでしょう.しかしながら,fasttext 0.8.3 と本家fastTextとバージョンが異なるようで,うまく動作しません.その fasttext 0.8.3 で学習や推論をすれば問題ないですが,最新のfastTextは使いたいですよね.ブランチ内で0.9.0が公開されているのですが,これも上手く動きません.
gensim
これは本家fastTextで学習したモデルを読むことができます.しかしながら,なぜかベクトル化した数値や類似した語句の結果が本家と異なります.gensimの学習は本家fastTextをコマンドラインで実行しており,学習したものと推論で異なってしまってはつかえません.
Pythonからコマンドラインを呼び出して無理に連携してしまおうかと思いましたが,現時点で利用可能なライブラリがありました.
pyfasttext 0.4.0
本家fastTextで学習したモデルの読み込みも可能で.本家と同じ結果を出力することができました.インストールもコマンド1つですみます.
pip install pyfasttextただ私の環境では一発では入れられなかったので,ちょっと右往左往しました.しかし,本家と同じ結果を出すことができるので,pythonでfastTextを操作したいなら,このライブラリを使うのがオススメです.