Pythonを使用した感情分析の始め方

感情分析は、テキストデータを極性(通常はポジティブ、ネガティブ、またはニュートラル)によってタグ付けする自動化プロセスであり、企業が大規模にデータを分析し、ビジネスプロセスを自動化することを可能にします。Hugging Face Hubとtransformersライブラリを活用することで、開発者は最小限のコードと機械学習の経験なしで、最先端の感情分析を実装できるようになりました。

学習済みモデルを使用した感情分析の実装

開発者は、transformersライブラリのpipelineクラスを使用して、Pythonアプリケーションに感情分析を統合できます。このアプローチにより、Hugging Face Hubでホストされているデフォルトまたは特定のモデルを使用して、即座に予測を行うことができます。

クイック実装

デフォルトの感情分析モデルを統合するには、わずか5行のコードが必要です。

pip install -q transformers
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["I love you", "I hate you"]
sentiment_pipeline(data)

推奨モデル

ユースケースに応じて、Hubから異なるモデルがより適切である場合があります。

  • Twitter-roberta-base-sentiment: 約5,800万件のツイートでトレーニングされたroBERTaモデル。
  • Bert-base-multilingual-uncased-sentiment: 6つの言語(英語、オランダ語、ドイツ語、フランス語、スペイン語、イタリア語)にわたる製品レビュー用に微調整されたモデル。
  • Distilbert-base-uncased-emotion: 喜び、悲しみ、愛、怒り、恐怖、驚きなどの特定の感情を検出するように設計されたモデル。

カスタム感情分析モデルの構築

学習済みモデルは強力な出発点となりますが、ドメイン固有のデータでモデルを微調整(fine-tuning)することで、精度を向上させることができます。Hugging Faceは、カスタマイズのための2つの主要なパスを提供しています。開発者向けのTrainer APIと、ノーコード・ソリューションを求める方向けのAutoNLPです。

Trainer APIによる微調整

Trainer APIを使用すると、開発者は学習済みモデルを取得し、追加のトレーニングデータを使用して調整することができます。例えば、性能の95%以上を維持しながらBERTよりも40%小さく60%高速なDistilBERTモデルを、IMDBデータセットで微調整する場合、以下の手順が含まれます。

  1. 前処理: AutoTokenizerを使用してテキスト入力を準備し、DataCollatorWithPaddingを使用してサンプルをPyTorchテンソルに変換します。
  2. モデル構成: AutoModelForSequenceClassificationを使用して、DistilBERTの事前学習ヘッドを分類ヘッドに置き換えます。
  3. トレーニング: Trainerクラスを利用して、トレーニングループ、学習率、および評価指標(精度やF1スコアなど)を管理します。

IMDBデータセットから3,000個のサンプルを使用した提供された例では、このプロセスにより、GPU上で約10分間で88%の精度と89%のF1スコアを達成しました。

AutoNLPによるノーコード・トレーニング

AutoNLPは、コードを必要とせずにNLPモデルを自動的にトレーニング、評価、およびデプロイするツールです。ユーザーはデータセットをアップロードし、テキストとターゲットの列をマッピングし、AutoNLPがハイパーパラメータのチューニングとモデルの選択を行います。

Sentiment140データセットの3,000個のサンプルを使用したテストケースでは、AutoNLPは77.87%の精度を持つモデルを生成しました。

実践的な応用: ソーシャルメディアデータの分析

感情分析は、Twitterのようなリアルタイムのデータストリームに適用して、ビジネスの洞察を得ることができます。ツイートを分析するための実践的なワークフローは以下の通りです。

  1. データ収集: Tweepyライブラリを使用してTwitter APIと連携し、特定のハッシュタグ(例:#NFTs)に基づいてツイートを抽出します。
  2. 推論: pipelineクラスを介して、finiteautomata/bertweet-base-sentiment-analysisのようなHubモデルを適用し、各ツイートにラベルを付けていきます。
  3. 可視化: データの整理にはpandasを使用し、感情の分布と主要な用語をmatplotlibまたはwordcloudを使用して可視化します。

NFTに関する1,000件のツイートのサンプル分析では、結果は会話の56.1%がポジティブであり、ネガティブはわずか2.0%であったことを示しました。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch