LoginSignup
1
2

More than 3 years have passed since last update.

とにかくすぐに自然言語の分類を行う[simpletransformer , transformer]

Last updated at Posted at 2020-08-21

とにかく最低ラインの自然言語(text)の分類を行いたい

前処理や単語のベクトル化等を行わずに学習および推論を行う方法の紹介、精度はそこまで高くない場合が多いです。

simpletransformer

pythonのパッケージで自然言語系のあれこれを簡単にできるように実装されています。

インストール

pandas等の基本的なものは入っている前提で書いています、またcondaでもpipでも両方行うことができます。

pytorchのインストール

pytorchが既に入っている場合には以下の手順は飛ばしてください。
gpuの場合

pip install pytorch>=1.6 cudatoolkit=10.2 -c pytorch

cpuのみ

pip install pytorch cpuonly -c pytorch

simpletransformersのインストール

simpletransformersはcondaではできないと思います。

pip install simpletransformers

オプション(wandb)のインストール(任意)

web上で学習の可視化を行う用のwandbのインストールです、なくても動くのでいらない人は飛ばしてください。使い方等は記述しません。

pip install wandb

使用方法

使用にはpandasのdataframeにテキストとそれに対応するラベルが格納されているという想定で行います。

pandasのtextが書かれているcolumnの名前を”text”、labelが書かれているcolumnの名前を”label”に変更。

各paramの設定

params = {
    "output_dir": "out_models/bert_model/",
    "max_seq_length": 256,
    "train_batch_size": 128,
    "eval_batch_size": 128,
    "num_train_epochs": 10,
    "learning_rate": 1e-4,
}

output_dirには任意のディレクトリを指定してください。学習した際に作成したされたモデルの保存先ディレクトリとなります。

学習に使用するコード

from simpletransformers.classification import ClassificationModel

model = ClassificationModel(bert, bert-base-cased,num_labels=10, args=params, use_cuda=True)

model.train_model(train_df)

“bert”には使いたいモデルの各名前、”bert-base-cased”には使いたい事前学習済みのモデルの名前を入れます。学習済みモデルと各名前はこちらで参照してください。
num_labelsはラベルの数ですラベルは0からスタートする様に整形してください。
train_dfは”text”と”label”のcolumnsで作成されているdataframeです。

推論方法

学習用のdataframeと同じ形式をとっているtest用のdataframeがあること前提です。

pred, _ = model.predict(test_df['text'])

predに予測されたラベルが出力されます。

まとめ

simpletransformersのドキュメントはこちらになります。他にも機能が多くあるようなので使用してみてください。前処理、後処理などは重要なものなので今回に無視するとあまり精度が期待できないことを忘れないでください

1
2
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
2