
⚠️ この記事では、非エンジニアの方でも体験できるように、最低限のプロンプト例だけを載せています。実際の運用では、より高品質化した最適プロンプト&自動化フローを使用しています!詳しく知りたい方はお気軽にご相談ください 。
🎯 今回のゴール
今回のテーマはズバリ、「会話の感情を一つずつ数値化してみよう!」 です。
これまでのAI秘書ツールでは、文字起こし → 要点抽出 → レポート化 までを自動でやってきましたが、正直、話し合いって言葉だけじゃなくて 気持ちの波 が大事ですよね。
だから今回は、セッション中にどこがポジティブで、どこがちょっとネガティブだったのか
を1発言ずつ ChatGPT に教えてもらって、「感情のゆらぎ」を可視化する第一歩 を踏み出します。
これをやっておくと、
- 振り返りが感情込みで深まる
- 次回のフォローのヒントになる
- 「いつもポジティブに見えてた人が、実は後半疲れてる…!」とか分かる
などなど、コーチも生徒も ちょっと幸せになる分析 ができます。
🔑 この記事で手に入るもの
- 1発言ごとの 感情スコア付きリスト(+1 / 0 / -1)
- すぐ試せる最低限の Colab コード
- ちょっとニヤける「気持ちの波」の見える化
🧰 使うもの
今回の感情分析を動かすために必要なのは、これだけです👇
✅ 必須アイテム
- Google Colab
おなじみのノーインストールPython環境!
まだ触ったことない人はColabの使い方記事をどうぞ。 - ChatGPT APIキー
文字起こしや要点抽出のときと同じ。
まだ持ってない人はAPIキーの取り方を先にやっておいてください。 - 文字起こしファイル(session_transcript.txt)
前回までで作ったセッション文字起こしを使います!
1発言ずつ分割済みの状態が理想です。
👉 今回の記事でやらないこと
- バッチ処理(まとめて一気に分析)はやりません!
→ 正確さ重視で1発言ずつやります。 - 高度なグラフ化は次回!
→ まずはスコアを付けて保存するところまで。
これで誰でも迷わず準備できるはず!
🔍 セッションを発言ごとに分割する
まず、前回の続きで手元にあるのはsession_transcript.txt
だと思います。
この中身は、たとえば👇みたいに、ただの文章 or 改行区切りの連続テキストになってるはず。
こんにちは、よろしくお願いします!
今日は英語の発音を見直しましょう。
わかりました!
🛠️ やること
このテキストを、1発言ずつのリストに変換して session_transcript.json
として保存 します!
まずは session_transcript.txt
をアップロードしましょう👇
from google.colab import files
# ファイルをアップロードする
uploaded = files.upload()
これを実行すると、ブラウザに「ファイル選択」が出るので、PCにある session_transcript.txt
を選んでアップロード!
🟢 1発言ずつのリストに変換して session_transcript.json
として保存
アップロードが終わったら、すぐ下のコードを再実行すればOKです!
# Google Colabで実行するよ!
import json
# ① テキストファイルを読み込む
with open("session_transcript.txt", "r") as f:
lines = f.readlines()
# ② 改行を取り除いて、空行を除去
lines = [line.strip() for line in lines if line.strip()]
# ③ JSONに保存
with open("session_transcript.json", "w") as f:
json.dump(lines, f, ensure_ascii=False, indent=2)
print("✅ JSONファイルができました!")
🔑 大事なコツ
Colab はPCからファイルを毎回「アップロード」しないと認識できません!
(仮想マシンなので、開くたびに記憶がリセットされます)
🗂️ 1発言ずつ感情を付ける
ここが今回のメイン!
作った session_transcript.json
を読み込んで、ChatGPT に 1発言ずつ送って「+1」「0」「-1」 の感情スコアを付けてもらいます!
✅ どうして1件ずつ?
- バッチ処理(まとめて一気に)は楽だけど、精度がブレやすい
- 1発言ずつだと文脈がズレないので、確実に丁寧な分析ができる
だから今回は手間より質を優先です!
💡 プロンプト(汎用版)
あなたは優秀な感情分析エージェントです。
以下の日本語テキストの感情を +1(ポジティブ)/ 0(ニュートラル)/ -1(ネガティブ)で評価し、数字だけを返してください。
テキスト: 「{発言テキスト}」
🧑💻 Colabコード例
from openai import OpenAI
import json
# ✅ OpenAIクライアント作成
client = OpenAI()
# ✅ 発言リスト読み込み
with open("session_transcript.json", "r") as f:
segments = json.load(f)
emotion_list = []
# ✅ 1件ずつChatGPTで感情を判定
for text in segments:
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": "あなたは優秀な感情分析エージェントです。"
},
{
"role": "user",
"content": f"以下のテキストの感情を +1 / 0 / -1 で評価し、数字だけを返してください。\n\nテキスト: 「{text}」"
}
]
)
score = int(response.choices[0].message.content.strip())
emotion_list.append({"text": text, "score": score})
print(f"{text} -> {score}")
print("✅ 全発言の感情付けが終わりました!")
これで、感情スコア付きリストが完成です!
⚡ ポイント
gpt-4o
はお好みでgpt-4-turbo
でもOKscore
は必ずint()
で数値化しておくと便利- 途中で止まっても
emotion_list
に残ってる分は手動で保存可
int()
で数値化する理由
ChatGPTが返す結果は「文字列(例:"1"
)」です。
このままだと +
計算やグラフ化ができないので、int()
を使って ちゃんと「数字」として扱えるように しておきます!
つまり → ✅ int("1")
→ 1
← これで計算OK!
途中で止まっても安心な理由
もしAPI呼び出しが途中で止まっても、emotion_list
には それまでに取得できたスコア付きデータが残ってます。
だから
- 必要なら
print()
で途中の結果を確認する emotion_list
をすぐJSON
に保存して、続きから再開できる
例:
with open("backup_emotion.json", "w") as f:
json.dump(emotion_list, f, ensure_ascii=False, indent=2)
これでバックアップ完成!
📑 感情付きリストを保存する
ChatGPTで1発言ずつ感情スコアを付け終わったら、その結果を JSONファイル にして手元に保存しておきます。
✅ 1. JSONファイルに保存しよう
感情スコア付きのデータは、最終的にこんな形でまとめます👇
[
{
"text": "こんにちは。今日も来てくださってありがとうございます。",
"score": 1
},
{
"text": "最近どうですか?英語以外でも何か面白いことありましたか?",
"score": 0
},
...
]
これをColabでファイル化するコードがこちら👇
import json
# ✅ ChatGPTで作った感情リスト
# (ここでは例として emotion_list を使う)
# emotion_list = [{"text": "...", "score": 1}, {...}]
# JSONファイルに保存
with open("session_emotion.json", "w") as f:
json.dump(emotion_list, f, ensure_ascii=False, indent=2)
print("✅ session_emotion.json ができました!")
これで session_emotion.json
が完成!
これがあれば、後でグラフ化などに使えます。
✅ 2. Google Drive にアップロードする
Colabに作ったファイルは、PCに一度ダウンロードして、Google Drive に入れるのが手っ取り早いです。
Colabからダウンロードするコード👇
from google.colab import files
# ダウンロード
files.download("session_emotion.json")
これを実行すると、ブラウザから session_emotion.json
をPCに保存できます。
その後は自分のGoogle Driveの好きなフォルダにポイっと入れればOK!
(Drive自動アップロードは、後の回で n8n で自動化予定!)
🔑 これで準備完了!
- 感情スコア付きの会話データ が手元に!
- Drive管理 で紛失ゼロ!
- 後でグラフ化・ポータル化にすぐ使える!
🎁 サンプル結果
実際に ChatGPT で分析した後のスコア付き JSON はこんな感じになります👇
[
{
"text": "こんにちは。今日も来てくださってありがとうございます。",
"score": 1
},
{
"text": "最近どうですか?英語以外でも何か面白いことありましたか?",
"score": 0
},
{
"text": "最近ちょっとだけ海外ドラマを見るようにしてて、ネットフリックスで「フレンズ」を英語字幕で見てるんですけど、ほぼ何言ってるかわからなくて。",
"score": -1
}
]
👀 こんな感じで感情の波がわかる!
- 【1】→ ポジティブ
- 【0】→ ニュートラル
- 【-1】→ ちょっとネガティブ
こんなふうに、会話の流れが気持ちの起伏込みで見える ので、振り返りの質がぐっと上がります!
📝 おさらいと次回
今回は、「セッションの発言に1つずつ感情スコアをつける」っていう大事な一歩をクリアしました!👏
これで、ただの文字起こしじゃなくて、「どこがポジティブだったか、どこがちょっと凹んでたか」がハッキリ分かるようになりましたね。
🔜 次回のテーマ
次は、このスコアを グラフにして感情の波を目で見る回!
数字だけじゃピンと来なかった微妙な感情のゆらぎを、「一目でわかる波グラフ」 にして、もっと面白く、もっと便利にしていきます!
お楽しみに!📈
🔗 関連リンク|AI秘書ツール制作シリーズ
- 1️⃣ 第1回|文字起こし①:Whisperを動かす準備だけしよう!
- 2️⃣ 第2回|文字起こし②:録音ファイルをポイッと、Whisperで文字起こし!
- 3️⃣ 第3回|要点抽出①:ChatGPTで要点だけ抜き出してみた!
- 4️⃣ 第4回|要点抽出②:抽出結果をToDo形式に整えてみた
- 5️⃣ 第5回|要点抽出③:提出用レポートに仕上げてみよう!
- 6️⃣ 第6回|感情分析①:発言ごとの感情をAIで数値化してみた!←(今ここ)
- 7️⃣ 第7回|感情分析②:感情の波をグラフで見える化してみた!
- 8️⃣ 第8回|感情分析③:“気づき”を引き出すレポートをつくろう
- 9️⃣ 第9回|感情分析④:発話のバランスから見えてくること(比率分析編)
- 🔟 第10回|感情分析⑤:感情のゆらぎから“気づき”を拾ってみよう!
- 🏁 【第11回|完結】これが完成形!ポータルに載せる「report.json」をColabで作ろう
💡 迷ったらこちらも