今回は、PythonとOpenAIのAPIを使って、ユーザーの入力から文章の「感情」を判定するミニアプリを作成します。AIを活用した自然言語処理(NLP)の基礎として、業務改善やデータ分析に応用可能な内容です。
1. 感情分析とは
感情分析(Sentiment Analysis)は、ある文章がポジティブ・ネガティブ・ニュートラルのどれに分類されるかを判断する手法です。マーケティング、SNS分析、カスタマーサポートなどに広く利用されています。
2. OpenAI APIの準備
事前にOpenAIのアカウントを作成し、APIキーを取得しておきましょう。
2-1. ライブラリのインストール
# OpenAIライブラリをインストール
!pip install openai
2-2. APIキーの設定
import openai
# OpenAIのAPIキーを設定
openai.api_key = "sk-あなたのAPIキー"
3. 感情分析関数の作成
# 感情分析用の関数
def analyze_sentiment(text):
"""
入力テキストに対して感情を判定し、結果を返す関数。
"""
prompt = f\"\"\"以下の文の感情をポジティブ、ネガティブ、ニュートラルのいずれかで答えてください:
---
{text}
\"\"\"
# ChatGPTに問い合わせ
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 使用モデル
messages=[{"role": "user", "content": prompt}],
max_tokens=10 # 短い返答で十分
)
# 応答から感情のみを抽出
result = response["choices"][0]["message"]["content"].strip()
return result
# テスト実行
sample = "サービスの対応がとても丁寧で安心しました。"
print(analyze_sentiment(sample))
4. 複数文の一括分析機能(応用)
# 複数の文章をリストで渡して一括分析
def batch_sentiment_analysis(text_list):
"""
文章リストを受け取り、感情分析結果を一覧で返す。
"""
results = []
for text in text_list:
sentiment = analyze_sentiment(text)
results.append({"text": text, "sentiment": sentiment})
return results
# テスト文
texts = [
"この商品は本当に気に入っています!",
"対応が遅くて残念でした。",
"普通でした。特に印象はありません。"
]
# 一括実行
for r in batch_sentiment_analysis(texts):
print(f"文章: {r['text']} → 感情: {r['sentiment']}")
5. まとめと今後の応用
今回は、PythonとOpenAI APIを活用したシンプルな感情分析アプリを構築しました。このスクリプトを拡張すれば、次のような応用も可能です:
- CSVファイルやデータベースから読み込んで一括分析
- Flaskなどと組み合わせてWebアプリ化
- リアルタイムのSNSモニタリングツールへ発展
「感情を理解するAI」の基本として、業務改善やサービス向上にお役立てください。
コメント