LoginSignup
1
4

More than 5 years have passed since last update.

今更fastTextを触って感動する

Posted at

文章分類タスクをやってみようと思いfastTextを試したところ、1日もかからずにモデルがつくれたので感動しました。

fastTextを動かす環境を作成

自分はDockerを使ってサクッと用意しました。

docker-compose.yml

version: '3'
services:
  fasttext:
      command: /bin/bash
      image: xebxeb/fasttext-docker
      volumes:
       - ./fasttext/data/train:/data 
       - ./fasttext/data/result:/results
       - ./fasttext/data/test:/mytests

以下のコマンドを打つと、image内にログインにして

$ docker-compose run fasttext

fasttextのコマンドは以下から利用できます。

$ /fasttext

利用したイメージの詳細は下記から
https://hub.docker.com/r/xebxeb/fasttext-docker/

学習データ作成

結論からいえば、下記のようなデータが作成できれば準備完了です。

__label__ラベル, 分かち書きした文章

例:データのイメージ

__label__男性が書いた文章, 私 は ガンダム が 好きだ\n
__label__男性が書いた文章, 私 は ザク が 好きだ\n
__label__男性が書いた文章, 私 は ケンプファー が 好きだ\n
__label__男性が書いた文章, 私 は サザビー が 好きだ\n
__label__女性が書いた文章, 私 は コウ・ウラキ が 好きだ\n

ちなみに私は分かち書きをするために、mecabを利用しました。

モデル作成

さきほどつくった学習データを利用。

$ /fasttext supervised -input 学習したい内容がはいったテキストファイル -output 出力先のディレクトリ -dim 50 -lr 1.0 -epoch 25

学習時に指定できる-dimなど他のパラメータはfastTextの公式Githubページ?に書いてあるのでチューニングはここから。

学習が終わると以下の表示がされます。

Read 7M words
Number of words:  144197
Number of labels: 2
Progress:  100.0% words/s:   6276258 lr:  0.000000 loss:  0.216902 eta:   0h 0m

そして-outputパラメータで指定したディレクトリに、.binファイルと.vecファイルができあがります。

予測

予測したいテキストを用意します

私は ニナ・パープルトン が 嫌いだ
$ /fasttext predict-prob outputで指定したディレクトリ/.bin テキストファイル

これを実行すると予測結果が帰ってきます。

__label__女性が書いた文章, 0.9965

感想

早い。楽ちん。

参考にさせていただいた記事、サイト

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4