Databricks Free Edition 30分ハンズオンシナリオ
ハンズオン概要
テーマ: 顧客レビューデータの感情分析と可視化
時間: 30分
前提: Databricks Free Editionアカウント作成済み
ゴール: AIアシスタントを活用してデータ分析を実践
タイムテーブル
準備フェーズ(3分)
環境確認とデータ準備
-
Databricks Free Editionにログイン
- ワークスペースの確認
- 新規ノートブックの作成
- ノートブック名:
AI_Review_Analysis_Demo
-
サンプルデータの作成
以下のプロンプトでDatabricksアシスタントに依頼します。ECサイトの商品レビューの日本語サンプルデータを作成してください。20件程度で、評価、評価に対応した100字程度のレビューテキスト、日付を含めてください。customer_reviewsという一時ビューに格納してください。
期待される出力
import pandas as pd
from datetime import datetime, timedelta
# サンプルレビューデータ
reviews = [
{"product_id": "P001", "customer_name": "田中太郎", "rating": 5,
"review_text": "素晴らしい商品です!期待以上の品質で大満足。配送も早くて助かりました。",
"review_date": "2025-01-20"},
{"product_id": "P001", "customer_name": "佐藤花子", "rating": 2,
"review_text": "思っていたより品質が悪く、がっかりしました。価格に見合わない商品だと思います。",
"review_date": "2025-01-19"},
# ... 他8件
]
df = spark.createDataFrame(reviews)
df.createOrReplaceTempView("customer_reviews")
display(df)
基礎演習(10分)
Databricksアシスタントでの基本分析
-
データの基本確認(2分)
以下のプロンプトでDatabricksアシスタントに依頼します。customer_reviewsテーブルのデータをSQLで確認して、基本的な統計情報を教えてください。
-
SQLでの簡単な集計(3分)
-- アシスタントが生成するSQL例 SELECT rating, COUNT(*) as review_count, AVG(LENGTH(review_text)) as avg_review_length FROM customer_reviews GROUP BY rating ORDER BY rating DESC
-
評価の分布を可視化(5分)
アシスタントへの質問:評価の分布をplotlyの棒グラフで可視化してください
AI関数を使った感情分析
-
感情分析の実行
アシスタントへの質問:各レビューの感情を「SELECT ai_analyze_sentiment('I am happy');」のようにai_analyze_sentimentを用いたコードを作成してください。判定対象はreview_textです。
期待される出力
# Analyze sentiment of each review_text using ai_analyze_sentiment function
sentiment_df = spark.sql("""
SELECT
*,
ai_analyze_sentiment(review_text) AS sentiment
FROM customer_reviews
""")
display(sentiment_df)
実践演習(12分)
インサイト抽出と可視化
-
統合ダッシュボードの作成(7分)
アシスタントへの質問:
以下を含むダッシュボードを作成してください:
- 感情分析の結果(円グラフ)
- 評価と感情の相関(棒グラフ)
期待される出力
import matplotlib.pyplot as plt
import seaborn as sns
# データの準備
pdf = df_final.toPandas()
# 3つのグラフを並べて表示
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 1. 感情分析の円グラフ
sentiment_counts = pdf['sentiment'].value_counts()
axes[0].pie(sentiment_counts.values, labels=sentiment_counts.index, autopct='%1.1f%%')
axes[0].set_title('感情分析結果')
# 2. 評価と感情の相関
sentiment_rating = pdf.groupby(['rating', 'sentiment']).size().unstack(fill_value=0)
sentiment_rating.plot(kind='bar', ax=axes[1])
axes[1].set_title('評価と感情の相関')
axes[1].set_xlabel('評価')
axes[1].set_ylabel('件数')
plt.tight_layout()
plt.show()
簡易レポート生成
-
自動レポート作成(5分)
アシスタントへの質問:
分析結果をまとめた簡単な日本語のレポートをMarkdown形式で生成して現在のディレクトリに保存してください。
期待される出力
sentiment_summary = sentiment_count_pd.set_index('sentiment')['count'].to_dict()
total = sum(sentiment_summary.values())
sentiment_percent = {k: f"{v/total:.1%}" for k, v in sentiment_summary.items()}
report_md = f"""# 感情分析レポート
## 1. 感情分析の結果
- ポジティブ: {sentiment_summary.get('positive', 0)}件 ({sentiment_percent.get('positive', '0%')})
- ネガティブ: {sentiment_summary.get('negative', 0)}件 ({sentiment_percent.get('negative', '0%')})
- ニュートラル: {sentiment_summary.get('neutral', 0)}件 ({sentiment_percent.get('neutral', '0%')})
## 2. 評価と感情の相関
評価ごとの感情分布は以下の通りです。
| 評価 | ポジティブ | ニュートラル | ネガティブ |
|------|------------|--------------|------------|
"""
for rating in sorted(rating_sentiment_count_pd['rating'].unique()):
row = []
for sentiment in ['positive', 'neutral', 'negative']:
count = rating_sentiment_count_pd[
(rating_sentiment_count_pd['rating'] == rating) &
(rating_sentiment_count_pd['sentiment'] == sentiment)
]['count']
row.append(str(int(count.values[0])) if not count.empty else "0")
report_md += f"| {rating} | {row[0]} | {row[1]} | {row[2]} |\n"
report_md += """
## 3. 考察
- ポジティブな感情が最も多く、全体の傾向として好意的な評価が多いことが分かります。
- 評価が高いほどポジティブな感情が多く、評価が低いほどネガティブな感情が多い傾向が見られます。
"""
with open("analysis_report.md", "w", encoding="utf-8") as f:
f.write(report_md)
まとめフェーズ(5分)
振り返りと次のステップ
-
本日学んだこと
- Databricksアシスタントでの自然言語分析
- データから簡易的な感情分析
- 可視化とレポート自動生成
-
実務での応用例
- 商品レビューの定期分析
- 顧客問い合わせの分類
- SNSモニタリング
-
追加課題の提示
発展課題: 1. より高度な感情分析(外部APIの活用) 2. 時系列での感情推移分析 3. 商品カテゴリ別の分析
ハンズオンの工夫点
レベル別対応
- 初心者: アシスタントへの質問をコピー&ペーストで実行
- 中級者: 生成されたコードを理解し、カスタマイズ
- 上級者: より効率的な実装方法を探索
トラブルシューティング
よくあるエラーと対処法:
1. "テーブルが見つかりません"
→ セル1のデータ作成を再実行
2. "ライブラリがインポートできません"
→ Databricksには主要ライブラリがプリインストール済み
3. "表示がおかしい"
→ display()関数を使用
配布資料
クイックリファレンス
# Databricksアシスタント活用パターン
## データ確認
「〇〇テーブルの構造を教えて」
「データの基本統計を表示して」
## 分析依頼
「〇〇でグループ化して集計して」
「〇〇の分布を可視化して」
## コード生成
「〇〇を抽出する関数を作って」
「結果をレポート形式でまとめて」
サンプルプロンプト集
- データ品質チェック
- 異常値検出
- トレンド分析
- 予測モデル作成
成功のポイント
段階的な難易度上昇
- 最初は単純なSQL
- 次にPythonでの処理
- 最後に統合的な分析
実用性の重視
- 実際のビジネスシーンを想定
- すぐに応用できるコード
- 成果物(レポート)の生成
全員が成功体験
- 必ず動くサンプルデータ
- エラーが出にくい構成
- 視覚的な成果物
このハンズオンにより、参加者はDatabricksアシスタントを使った実践的なデータ分析を体験し、自社データでの活用イメージを持つことができます。