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データセットで微調整する場合、以下の手順が含まれます。
- 前処理:
AutoTokenizerを使用してテキスト入力を準備し、DataCollatorWithPaddingを使用してサンプルをPyTorchテンソルに変換します。 - モデル構成:
AutoModelForSequenceClassificationを使用して、DistilBERTの事前学習ヘッドを分類ヘッドに置き換えます。 - トレーニング:
Trainerクラスを利用して、トレーニングループ、学習率、および評価指標(精度やF1スコアなど)を管理します。
IMDBデータセットから3,000個のサンプルを使用した提供された例では、このプロセスにより、GPU上で約10分間で88%の精度と89%のF1スコアを達成しました。
AutoNLPによるノーコード・トレーニング
AutoNLPは、コードを必要とせずにNLPモデルを自動的にトレーニング、評価、およびデプロイするツールです。ユーザーはデータセットをアップロードし、テキストとターゲットの列をマッピングし、AutoNLPがハイパーパラメータのチューニングとモデルの選択を行います。
Sentiment140データセットの3,000個のサンプルを使用したテストケースでは、AutoNLPは77.87%の精度を持つモデルを生成しました。
実践的な応用: ソーシャルメディアデータの分析
感情分析は、Twitterのようなリアルタイムのデータストリームに適用して、ビジネスの洞察を得ることができます。ツイートを分析するための実践的なワークフローは以下の通りです。
- データ収集:
Tweepyライブラリを使用してTwitter APIと連携し、特定のハッシュタグ(例:#NFTs)に基づいてツイートを抽出します。 - 推論:
pipelineクラスを介して、finiteautomata/bertweet-base-sentiment-analysisのようなHubモデルを適用し、各ツイートにラベルを付けていきます。 - 可視化: データの整理には
pandasを使用し、感情の分布と主要な用語をmatplotlibまたはwordcloudを使用して可視化します。
NFTに関する1,000件のツイートのサンプル分析では、結果は会話の56.1%がポジティブであり、ネガティブはわずか2.0%であったことを示しました。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch