【Python】日本語による感情分析をTransformersで行う

【Python】日本語による感情分析をTransformersで行う データ分析

「日本語による感情分析を試したい」
「それも、できるだけ簡単に試したい」

こう思う人には、この記事は参考になります。

本記事の内容

  • 日本語による感情分析
  • Transformers
  • fugashi
  • IPAdic(IPA辞書)
  • 動作確認

それでは、上記に沿って解説していきます。

日本語による感情分析

日本語による感情分析は、若干面倒です。
でも、簡単にできるので安心してください。

まずは、必要となるモノを確認しておきます。
日本語による感情分析に必要となるモノは、以下。

  • Transformers
  • fugashi
  • IPAdic(IPA辞書)

これらに関して、下記で説明していきます。

Transformers

感情分析は、BERTにより行います。
BERTは、自然言語処理の機械学習手法(モデル)の一つです。

このBERTを利用するために、Transformersが必要となります。
Transformersについては、次の記事で説明しています。

Transformersの動作確認までは、済ませておきます。
そして、日本語を扱う上で必要になるのがfugashiです。

fugashi

fugashiは、Transformers上で形態素解析を行うために利用します。
日本語を扱うために、形態素解析が必要となります。

英語の感情分析であれば、形態素解析は不要です。
そして、fugashiも必要ありません。

fugashiについては、次の記事で説明しています。

fugashiの動作確認までは、済ませておきます。

IPAdic(IPA辞書)

形態素解析を行うためには、辞書が必要です。
そして、辞書にはいろいろなモノが存在します。

fugashiは、Unidicを利用することが推奨されています。
しかし、 Transformers(BertJapaneseTokenizer)では、 IPAdicがデフォルトで設定されています。

そのため、IPAdic(IPA辞書) を利用できるようにする必要があります。
もちろん、辞書の指定は可能です。

ただ、今回は「簡単に」がテーマです。
そのため、素直にIPAdicを利用するようにします。

動作確認

準備が整ったら、実際に日本語による感情分析を行いましょう。
サンプルコードは、以下。

from transformers import pipeline 
from transformers import AutoModelForSequenceClassification 
from transformers import BertJapaneseTokenizer 

TARGET_TEXT = "誰でもできる感情分析です。簡単であるので、気軽に試してみましょう。"

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

print(nlp(TARGET_TEXT))

上記を実行した結果は、以下。

[{'label': 'ポジティブ', 'score': 0.9750074148178101}]

テキストの内容は、各自でいろいろと変更してみてください。
なお、エラーが出る場合は何かが足りない可能性があります。

fugashiがインストールされていない場合

ModuleNotFoundError: You need to install fugashi to use MecabTokenizer. See https://pypi.org/project/fugashi/ for installation.

IPAdicがインストールされていない場合

ModuleNotFoundError: You need to install fugashi to use MecabTokenizer. See https://pypi.org/project/fugashi/ for installation.
タイトルとURLをコピーしました