大規模言語モデルを扱うライブラリtransformersを使って文章の感情分析をしてみた

本投稿は TECOTEC Advent Calendar 2023 の11日目の記事です。

こんにちは、次世代デジタル基盤開発事業部の武田幸多朗です。 最近、『大規模言語モデル入門』という本を読む機会がありました。その中から特に印象に残った、文章の感情分析について少し紹介したいと思います。

はじめに

まず大規模言語モデルとはChatGPTにも利用されており、様々なシーンで注目されている深層学習のモデルの一つです。大量の文章データを使用し、その文章に登場する文法や知識、感情まで学習することができます。学習したモデルを利用することで、文章を入力するとその文章から感情を読み取り検出することが可能です。

自分が入力した文章から感情が読み取れるなんて、なんだかワクワクしてきませんか?

大規模言語モデルを扱うためのライブラリであるtransformersを利用すると、とても簡単にテキストの感情分析ができるため本記事では、transformersを使用したいと思います。

テキストの感情分析

さて、実際に手を動かして動作させてみましょう!

本記事の内容基になった『大規模言語モデル入門』でも紹介されている、ブラウザ上でPythonの記述・実行ができるGoogle Colaboratoryを使用します。まずは、transformersのインストールと簡単に扱うための機能を整えるため、以下を実行してください。

!pip install transformers[ja,sentencepiece,torch]

from transformers import pipeline

次に、大量の文章データを基に学習したモデルを設定します。本記事では、通販サイトのレビューを基に学習されたモデルを使用します。このモデルは、入力された文章が肯定的、もしくは否定的な内容かを予測する感情分析ができます。

実際に、以下に設定されているモデルは『大規模言語モデル入門』の第5章でモデル自体を構築できます。モデルをどのように学習させ、評価し性能を高めたかが手を動かしながらわかるため興味のある方は一読されることをお勧めします!

text_classification_pipeline = pipeline(
    model="llm-book/bert-base-japanese-v3-marc_ja"
)

以上で準備終わりです。

実際に、感情分析させてみましょう!

text = "私はここのアンパンが一番好きです。"
# textの感情を予測
print(text_classification_pipeline(text)[0])
{'label': 'positive', 'score': 0.9995725750923157}

textに「私はここのアンパンが一番好きです。」という文章を入力し、text_classification_pipeline(text)[0]でtextを分析しています。その結果、textの内容は99%以上の確率で肯定的(positive)な内容であると予測されています。対して、textに「私はここのアンパンが好きではありません。」と入力すると

text = "私はここのアンパンが好きではありません。"
# textの感情を予測
print(text_classification_pipeline(text)[0])
{'label': 'negative', 'score': 0.9794561266899109}

このように、約98%の確率で否定的(negative)な内容であると予測されています。

他にも試してみると、negativeな内容であるのにpositiveと予測されてしまうことがありますが、textに少し肯定的な単語など含まれていると勘違いすることがあるみたいです。例えば、

text = "私はここのアンパンが好きではありません。星3つです。"
# textの感情を予測
print(text_classification_pipeline(text)[0])
{'label': 'positive', 'score': 0.999229907989502}

このようにtextを変えると、一見否定的な内容の文章でもpositiveと予測されてしまいます。一つ前に試行したtextに「星3つです。」と追記しただけですが、その部分がpositiveと捉えられてしまったと考えられます。今回のモデルは通販サイトのレビューを基に学習したモデルとなっており、モデルの学習の際に、星の数で感情分析のラベル分類をする傾向があったためこのように否定的な文章をtextに代入してもpositiveと予測されてしまいました。

この問題を解決するために、感情分析の際に「星XXです。」といったフレーズを除外して評価する必要があります。星の数によって感情分析の予測がほとんど決定するような関係にあるのは、本質的な文章の感情分析とは言い難いです。そのため、「星XXです。」といったフレーズを除外して評価するなどの対策をするとより精度の高いものとなりそうですね。

まとめ

今回は大規模言語モデルを用いて、文章の感情分析を行う方法を紹介しました。 文章を肯定的・否定的の分類に加え、「スポーツ」や「IT」などトピックを分類することで、世間の流行りや評判を解析するなど様々応用ができるタスクとなっています。

導入まで意外と簡単にできるため、少し触って遊んでみてはいかがでしょうか?

参考文献

  • 山田育矢,鈴木正敏,山田康輔,李凌寒.『大規模言語モデル入門』.技術評論社,2023.

テコテックの採用活動について

テコテックでは新卒採用、中途採用共に積極的に募集をしています。
採用サイトにて会社の雰囲気や福利厚生、募集内容をご確認いただけます。
ご興味を持っていただけましたら是非ご覧ください。 tecotec.co.jp