見出し画像

Huggingface Transformers 入門 (15) - 英語のテキスト分類の学習

「Huggingface Transformers」による英語のテキスト分類の学習手順をまとめました。

・Huggingface Transformers 4.1.1
・Huggingface Datasets 1.2

前回

1. 英語のテキスト分類の学習

GLUE」の「SST-2」を使って英語のテキスト分類を学習します。

(1) Huggingface Transformersをソースコードからインストール。

# Huggingface Transformersのインストール
!git clone https://github.com/huggingface/transformers
%cd transformers
!pip install .

(2) 「Huggingface Datasets」のインストール。

# Huggingface Datasetsのインストール
!pip install datasets

(3) run_glue.pyで学習を実行。
「output」フォルダにモデルが出力されます。

%%time

# テキスト分類の学習
!python ./examples/text-classification/run_glue.py \
    --model_name_or_path bert-base-uncased \
    --task_name=sst2 \
    --do_train \
    --do_eval \
    --max_seq_length=128 \
    --per_device_train_batch_size=32 \
    --learning_rate=2e-5 \
    --num_train_epochs=1 \
    --output_dir=output \
    --overwrite_output_dir
***** Eval results sst2 *****
  epoch = 1.0
  eval_accuracy = 0.9174311926605505
  eval_loss = 0.23389126360416412
  eval_runtime = 8.0842
  eval_samples_per_second = 107.865
CPU times: user 3.86 s, sys: 648 ms, total: 4.51 s
Wall time: 26min 29s

2. 英語のテキスト分類の推論

import torch
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification

# 入力テキスト
text = "This movie is very interesting!"

# モデルとトークナイザーの準備
model = AutoModelForSequenceClassification.from_pretrained('output/')    
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') 

# テンソルに変換
tokenized_text = tokenizer.tokenize(text)
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
tokens_tensor = torch.tensor([indexed_tokens])

# 推論の実行
labels = ['NEGATIVE', 'POSITIVE']
model.eval()
with torch.no_grad():
    outputs = model(tokens_tensor)[0]
    print(labels[torch.argmax(outputs)])
POSITIVE

次回



この記事が気に入ったらサポートをしてみませんか?