LoginSignup
14
14

More than 3 years have passed since last update.

huggingface/transformersの学習済みモデルとpipelineによる感情分析

Last updated at Posted at 2020-09-29

概要

huggingface/transformersのpipelineクラスを用いて数行のコードで推論を行います。2つBERTベースのモデルを用いて推論を行う方法を紹介します。

コード

pipelineクラスを用いることで、分類タスクやQAタスクなどを事前学習済みモデルとそのtokenizerを用いて簡単に推論することができるようになります。今回は文がポジティブかネガティブかを判別する文書分類タスクである感情分析を行います。
私の実行環境は、AWSが提供しているSageMakerのml.t2.medium、カーネルはconda_python3です。
requirements.txtは以下の通りです。

tensorboard
transformers
mecab-python3
fugashi
ipadic

日本語(汎用)BERT

こちらは東北大学が公開しているBERTを用いて感情分析をするコードです。
他のpipelineのタスクも解くことができます。


from transformers import pipeline
from transformers import BertForSequenceClassification
from transformers.tokenization_bert_japanese import BertJapaneseTokenizer

model = BertForSequenceClassification.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
tokenizer = BertJapaneseTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-whole-word-masking")
nlp = pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)

print(nlp("この商品を買ってよかったです"))

上記のモデルからLABEL_0(ポジティブ)LABEL_1(ネガティブ)のどちらかの値が出力されます。
上記の例の出力結果は、{'label': 'LABEL_0', 'score': 0.5814786553382874}でした。

日本語の感情分析に特化したBERTベースモデル

huggingface/transformersには日本語の感情分析に特化したBERTベースモデルが提供されていました。huggingface/transformersではコントリビューターがモデルの提供を積極的に行っているみたいです。


from transformers import pipeline
nlp = pipeline("sentiment-analysis",model="daigo/bert-base-japanese-sentiment",tokenizer="daigo/bert-base-japanese-sentiment")
print(nlp("この商品を買ってよかったです"))

上記のモデルからポジティブまたはネガティブのどちらかの値が出力されます。
例の出力結果は、{'label': 'ポジティブ', 'score': 0.9867748022079468}でした。

まとめ

本投稿ではhuggingface/transformersで簡単に推論する方法を紹介しました!
2つ目の紹介したモデルのほうが、感情分析に特化されたモデルになっているため、精度が高いです。
今後も様々なモデルが簡単に使える様になると思います!

14
14
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
14
14