🧪 開発・試作メモ

第7回|感情分析②:感情の波をグラフで見える化してみた!

第7回|感情分析②:感情の波をグラフで見える化してみた!

🏄 はじめに

前回の記事で、コーチングセッションの会話をひとことずつAIに読ませて、

「この発言はポジティブ?ネガティブ?それともニュートラル?」を数値で付けてもらいました。

無事に session_emotion.json という、感情スコア付きのファイルも作れましたね。

でも!

数字だけだと、いまいちピンと来ない…

どのあたりで気持ちが上がって、どこで下がってるのか、流れで見たいじゃないですか。

というわけで今回は、このスコアをグラフにして「気持ちの波」を丸見えにします!

やることはシンプル

棒グラフと折れ線グラフの2種類を作ってPNGで保存するだけ。

これでWebポータルに埋め込めば、あとから見返してニヤニヤできます。

さあ、感情の波サーフィンに出発しましょう!🌊

🗂 用意するもの

今回使う道具はとってもシンプルです。

1️⃣ session_emotion.json
前回(第6回)で作った「発言ごとの感情スコア入りのJSONファイル」です。
忘れた方は前回の記事を復習して、PCやGoogle Driveに用意しておいてください。

2️⃣ Google Colab
いつもの作業場所です。
まだColabの基本が不安な方はこちらの記事をどうぞ👇
🔗 Colabの使い方まとめ

3️⃣ やってみる勇気と好奇心!
これが一番大事です。失敗してもJSONがあれば何度でもやり直せます。

準備ができたら、いよいよグラフを作っていきましょう!

📈 感情の波グラフを作ってみよう!

準備ができたら、さっそく session_emotion.json を使って、感情スコアをグラフにしてみましょう!

今回は「棒グラフ」と「推移グラフ」の2種類を作って、会話の気持ちの動きをパッと見で分かるようにします✨

ステップ1:Colabで環境準備

まずは Google Colab を開いて、新しいノートブックを作りましょう。

今回のグラフでは、日本語が豆腐(□)にならないようにjapanize-matplotlib を使います!

これがあれば面倒なフォント設定は一発で解決です。

以下のコードを、最初のセルにコピペして実行してください👇

# 日本語フォントを入れておく(念のため)
!apt-get -y install fonts-noto-cjk

# 日本語グラフを簡単にする便利パッケージ
!pip install japanize-matplotlib

# 必要なライブラリ
import json
import matplotlib.pyplot as plt
import japanize_matplotlib  # ← これがポイント!

これで準備OK!

次は、前回作った session_emotion.json を読み込んでいきます。

ステップ2:JSONを読み込む

japanize-matplotlib の準備ができたら、前回作った session_emotion.json を Colab にアップロードして読み込みます。

以下のコードを新しいセルにコピペして実行してください👇

from google.colab import files
import json

# ファイルをアップロードする
uploaded = files.upload()

# アップロードしたファイル名を取得
filename = list(uploaded.keys())[0]

# JSONを読み込む
with open(filename, 'r', encoding='utf-8') as f:
    data = json.load(f)

# スコアだけ取り出す
scores = [item['score'] for item in data]

# 確認
print("スコア一覧:", scores)

アップロード画面が出てくるので、session_emotion.json を選んでポイッと入れればOKです。

スコアのリストが表示されたら準備完了!

次はグラフ用のデータを整形していきましょう✨

ステップ3:データを整形

アップロードした JSON から感情スコアだけを取り出したので、次はグラフ用の X軸(発言番号)Y軸(スコア) を準備します。

以下のコードを新しいセルにコピペして実行してください👇

# X軸:発言番号(1から順番)
x = list(range(1, len(scores) + 1))

# Y軸:感情スコア(すでに取り出したやつ)
y = scores

# 確認
print("発言番号:", x)
print("スコア:", y)

これで発言順とスコアのペアが完成です!

あとはこのデータをグラフに流し込むだけ 🎉

次は、いよいよ棒グラフを作っていきましょう!

ステップ4:棒グラフを作る

整形したデータを使って、まずは 発言ごとの感情スコアを棒グラフに してみましょう!

どの発言がポジティブ・ネガティブなのか、一目でわかります✨

以下のコードを新しいセルにコピペして実行してください👇

# 棒グラフを作る
plt.figure(figsize=(12, 6))
plt.bar(x, y)
plt.xlabel('発言番号')
plt.ylabel('感情スコア')
plt.title('発言ごとの感情スコア(棒グラフ)')
plt.grid(axis='y')

# 画像として保存
plt.savefig('graph_bar.png')
plt.show()

これで棒グラフが表示され、同時に graph_bar.png という画像ファイルが保存されます。

棒グラフで発言ごとの感情の強さをチェックしたら、次は会話全体の「感情の波」を折れ線グラフで見ていきましょう🌊

ステップ5:推移グラフを作る

棒グラフで発言ごとの感情スコアをチェックしたら、次は会話全体の 「気持ちの波」を折れ線グラフで可視化 してみましょう!

今回は 累積なし で、発言ごとのスコアの上下をそのままつないで、感情のうねりをリアルに見ます。

以下のコードを新しいセルにコピペして実行してください👇

# 累積なし、スコアそのままの推移グラフ
plt.figure(figsize=(12, 6))
plt.plot(x, scores, marker='o')
plt.xlabel('発言番号')
plt.ylabel('感情スコア')
plt.title('感情の波(スコア推移グラフ)')
plt.grid()
plt.savefig('graph_wave_raw.png')
plt.show()

# 画像として保存
plt.savefig('graph_wave.png')
plt.show()

これで スコア推移グラフ が表示され、同時に graph_wave_raw.png という画像ファイルが保存されます。

ステップ6:グラフの画像をダウンロードする

以下のコードを実行すればパソコンにダウンロードできます。👇(折れ線グラフと棒グラフ)

from google.colab import files

# 棒グラフの画像をダウンロード
files.download('graph_bar.png')

# 波形グラフの画像をダウンロード
files.download('graph_wave.png')

最後、レポートを表示する時に使うので、分かりやすい場所に保存しておいてください。

🗒 おさらいと次回

今回は、前回作った session_emotion.json を使って、

発言ごとの感情スコアを棒グラフ にして、どの発言がポジティブかネガティブかを一目でチェック!

感情スコアの波を折れ線グラフ にして、会話の流れの中で気持ちのアップダウンを丸見えに!

✅ どちらのグラフも PNG画像として保存 しておいたので、あとからいつでもWebポータルに埋め込んで表示できます✨

これで「感情の波をデータで眺める準備」は完了!

次回はさらに一歩進んで、この感情の流れや話題の傾向から、GPTに“気づき”を引き出してもらいます!

🚀 次回のテーマ

第8回|感情分析③:“気づき”を引き出すレポートをつくろう

  • 各発言に 「話題タグ」 を自動で付ける
    (例:雑談/学習/振り返り/ネガティブ思考 など)
  • 感情の波と話題の流れをもとに、
    GPTに 「今回の気づき・感想・次に意識したいこと」 を文章化してもらう
  • 出来上がった“気づきレポート”を report.jsoninsight フィールド に保存
  • ポータルで 300〜500文字程度のまとまった形で表示できるようにする

🧩 次回のアウトプット

「気づきレポート」が自動生成され、ポータルに載せられる!

これで「感情を可視化するだけ」で終わらず、次のアクションにつながる“学び”まで自動化できます。


お楽しみに!🚀✨

🔗 関連リンク|AI秘書ツール制作シリーズ

💡 迷ったらこちらも

  • この記事を書いた人

SHIRAN

「コードは知らない。でも作れる。」AIとツールで便利を生む非エンジニア。挫折も経験しながら、今は作る楽しさを発信中。詳しくはこちら

-🧪 開発・試作メモ
-, ,