白猫のメモ帳

JavaとかC#とかJavaScriptとかHTMLとか機械学習とか。

fastTextをインストールしてみる

こんばんは。

寒さに負けて早くもムートンブーツを出してしまったのですが、
もっと寒くなったらどんな格好をすれば良いのでしょうか。

さて、今日はFacebookの公開している自然言語処理ライブラリ「fastText」を使ってみたいので、
その環境構築をしてみます。

インストールするぞ

とりあえず調べたらコマンドライン実行のための構築手順と、
pythonライブラリのための構築手順がごっちゃになってヒットしたのでしょっぱなから混乱します。
どどどういうことなの・・・私はpythonは書けないのでコマンド実行が良いのですが・・・。

ググる

とりあえず、わかったことはWindows環境よりもLinux環境の方が良さそうということ。
というわけで、MacOSにDockerコンテナを立てて試してみることにします。
こういう時にDockerはミスったらやり直しができるので便利ですね。

というわけで余談ですが、珍しくMacで記事も書いているのでなんだかわたわたします。

とりあえずDockerコンテナを立てよう

Dockerのインストールは良い・・・ですよね?

Docker For Mac | Dockerから落としてきて、
言われた通りに操作すればあら簡単という感じですぐにインストールできます。
Bash On Windows(名前変わるんでしたっけ?)でも同じようなもんだと思います。試してないけど。

まずはイメージの確認。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

当然何もありません。
じゃあまずは空っぽのCentOSのイメージを探して来て・・・とか思いますが、
Dockerさんはrunする時にイメージがなければちゃんと取って来てくれる賢い子なので気にしないことにします。

$ docker run -it --name fasttext centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
85432449fd0f: Pull complete 
Digest: sha256:3b1a65e9a05f0a77b5e8a698d3359459904c2a354dc3b25ae2e2f5c95f0b3667
Status: Downloaded newer image for centos:latest
[root@596e34b5ca1f /]# 

素晴らしく簡単。-itオプションは起動したコンテナにそのままアタッチする呪文です。
あ、そうでした。Dockerがメインじゃないんでした。

Let's 環境構築

プレーンなCentOSコンテナでコマンド実行用のfastTextを使うのに必要なのは以下。

これらをyumで取って来ます。

# yum install -y git make gcc gcc-c++
(なんかいっぱい出る)

あ、コンテナ内は「#」つけますね。

で、cloneしてmake。
コンテナ内だからルートで良いやという適当さ。

# git clone https://github.com/facebookresearch/fastText.git
(なんかちょっと出る)
# cd fastText
# make
(なんかちょっと出る)

これだけでおしまい。簡単。
一応インストールできているかちょっと確認。

# ./fasttext     
usage: fasttext <command> <args>

The commands supported by fasttext are:

  supervised              train a supervised classifier
  quantize                quantize a model to reduce the memory usage
  test                    evaluate a supervised classifier
  predict                 predict most likely labels
  predict-prob            predict most likely labels with probabilities
  skipgram                train a skipgram model
  cbow                    train a cbow model
  print-word-vectors      print word vectors given a trained model
  print-sentence-vectors  print sentence vectors given a trained model
  print-ngrams            print ngrams given a trained model and word
  nn                      query for nearest neighbors
  analogies               query for analogies

大丈夫そうですね。

最小構成がわかるまでに余計なものを色々インストールしてコンテナ作りなおしたのは秘密。

今回はこれでおしまい。
次回はfastTextを使ってみます。