Contents
概要
東北大学がhuggingface/transformersに公開している日本語BERTモデルを使った感情分析のサンプルコードを実行しようとしたのですが、qiitaの記事をそのまま動かしたところエラーが出て詰まったのでやり方をメモしておきます
感情分析
センチメント分析とは、ブログやSNSなどWeb上で収集できるデータを使って、個人の感情について分析することです。それぞれの文書がポジティブかネガティブかをクラス分けし、それらを膨大に集めることで、利用者が持っている商品に対する感情を知ることができます。
センチメント分析は、Hugging FaceのTransformersライブラリで試せるので、その方法を説明します。以降では、Google Colabを想定しています。
日本語BERTモデルによる感情分析のサンプルコード
以下からはPythonで日本語BERTモデルによる感情分析のサンプルコードの実装方法を紹介します
requirements.txtは以下の通りです。
tensorboard transformers mecab-python3 fugashi ipadic
fugashiとipadicは2023年12月現在colabにはデフォルトでインストールされていないのでPIPでインストールします
<モジュールのインストール>
!pip install fugashi !pip install ipadic !pip install unidic-lite
日本を扱うにはその他に、modelとtokenizerを渡す必要があります。
tokenizerとは
推論モデルに入力するデータは意味ごとに分割された文字列(=トークン)である必要があります。英語であれば、単語間に空白があるので、空白で分割して入力するだけですが、日本語の場合は単語間に空白が無いので、なんらかの仕組みを使ってトークン化する必要があります。
例えば、「明日は晴れです」は「明日/は/晴れ/です」のように分割する必要があるのです。そして、トークン化の際は専用のライブラリを使うことで実現でき、日本語のトークン化ではMeCabと呼ばれるライブラリが一般的に使用されます。
<ソースコード>
from transformers import pipeline, AutoModelForSequenceClassification, BertJapaneseTokenizer,BertTokenizer, BertForSequenceClassification # パイプラインの準備 model = AutoModelForSequenceClassification.from_pretrained('llm-book/bert-base-japanese-v3-wrime-sentiment') tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking') classifier = pipeline("sentiment-analysis",model=model,tokenizer=tokenizer) result = classifier("自然言語処理の勉強はとても楽しい")[0] print(f"label: {result['label']}, with score: {round(result['score'], 4)}") result = classifier("わからないことが多くて、時々挫折しそうになる")[0] print(f"label: {result['label']}, with score: {round(result['score'], 4)}")
<実行結果>
label: positive, with score: 0.9719 label: negative, with score: 0.9988
ソースコード:https://colab.research.google.com/drive/1sywlX9cd2DVS7KNBnYM9iQiJnD-gE_ho?usp=sharing
エラー
エラー内容(fugashiの不足)
ModuleNotFoundError: No module named 'fugashi'
解決方法
使っている日本語BERTモデルに必要なモジュールがないって怒られたのでそれを入れる必要がありました。
$ pip install fugashi
エラー (ipadicの不足)
ModuleNotFoundError: The ipadic dictionary is not installed. See https://github.com/polm/ipadic-py for installation.
解決方法
こちらもモジュールをインストールするだけです。
$ pip install ipadic
エラー (モデルの読み込み失敗)
OSError: daigo/bert-base-japanese-sentiment is not a local folder and is not a valid model
日本語での感情分析を試すには、modelとtokenizerとして、”daigo/bert-base-japanese-sentiment“を指定している解説記事が多く見受けられますが、https://huggingface.co/daigo/bert-base-japanese-sentimentがリンク切れになっていてエラーになっていたので別の感情分析モデル(‘llm-book/bert-base-japanese-v3-wrime-sentiment’)を使用しています。
上記のリンクが切れている場合はhttps://huggingface.co/から「bert-base-japanese-sentiment」で検索すると代わりのものが見つかると思います
終わり
本記事ではhuggingface/transformersで簡単に感情分析を行うコードを紹介しました。特に”daigo/bert-base-japanese-sentiment“の読み込みエラーが詰まっている方の参考になれば幸いです。
関連記事:【Python】PymlaskでML-ASK感情分析をやってみた話
関連記事:自然言語処理が簡単にできる「nlplot」でツイートデータを可視化・分析する
関連記事:【Python】Googleの「NaturalLanguage API」を使って形態素解析をやってみた
コメント