2017年10月06日

fastTextをPythonで使いたいならpyfasttext

エモトです.今週末はついにRWBY volume 4の公開.あの3のラストからどう展開するのか楽しみです.2,3は難波まで遠征してましたが,4は地元京都でも上映されるので,テンションあがってます.

(ここから追記)
この記事に関して,こちら に追加情報を書いてます
(ここまで追記)

最近,word2vecfastText などの語彙のベクトル化に興味あります.それらの説明はまたいつかとして,語彙を意味のあるベクトルデータに変換して,
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を操作したいなら,このライブラリを使うのがオススメです.
posted by Seesaa京都スタッフ at 13:00| Comment(0) | 機械学習 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: