BigQueryで生成AI!?ユーザー像を推測しよう

BigQuery

サマリー

  • 近年、生成AIは目覚ましい進化を遂げており、様々な分野で活用され始めています。
  • Google CloudのデータウェアハウスであるBigQueryでも、生成AIを活用することで、これまでにないインサイトの獲得や業務効率化を実現できます。
  • マーケター向けにBigQueryと生成AIを掛け合わせた事例を紹介します。

BigQueryでの生成AI活用例:ユーザーの呟きからのユーザー像推測

  • 今回は、BigQueryの生成AI機能を用いて、ユーザーの日常的な呟きデータから、ユーザー像を推測し、自社商品をレコメンドする例をご紹介します。

▼ 今回の構築イメージ

ユーザーのコメントと自社商品マスターの情報を使ってペルソナ推定商品レコメンドを行います。

目次

  1. 達成したいこと
    • 今回の分析に使用するデータについて解説します。
    • ユーザーのIDと日々の呟きを含むテーブルを使用します。
  2. データの準備
    • BigQueryで生成AIを使うための準備について解説します。
  3. BigQueryで生成AIを使うための準備
    • 生成AIを使用するためのコネクションの作成方法を解説します。
    • BigQueryからGeminiを呼び出すためのモデルについて説明します。
  4. BigQueryでのクエリ実行
    • 実際のSQLクエリを示し、生成AIを呼び出す方法を解説します。
    • ML.GENERATE_TEXT関数について解説します。
  5. 結果の解釈と活用
    • 生成AIによって得られたユーザー像の出力結果を解釈する方法を解説します。
    • ユーザー像に基づいたマーケティング施策など、具体的な活用例を紹介します。
  6. まとめ
    • 今回の内容をまとめ、BigQueryでの生成AI活用の可能性について再確認します。

1. 達成したいこと

今回はユーザーのコメントをもとにペルソナを推定し、レコメンド商品をピックアップする仕組みを作りたいと思います。

もちろん、Google Analytics4(GA4)の行動データをつかってペルソナを推定することも可能です。今回はわかりやすさのためにコメント情報を使用してますが、気が向いたらGA4の行動データからペルソナ推定する流れも書いていきたいと思います。

2. データの準備

ユーザーのコメントデータのダミーを作成してください。

例としては以下のようなデータになります。

ユーザーID 日時 コメント
1 2001-01-02 13:00:00 今日は昼からサウナに行ってきました。

3. BigQueryで生成AIを使うための準備

BigQueryから生成AIを呼び出すための下準備です。

  1. コネクションを作成します。
  2. gemini用のモデルを作成します。

詳細はこちらの公式ドキュメントを参考にしてください。

※connection作成時のendpointはgemini-1.5-flashを使ってください。

4. BigQueryでのクエリ実行

Gemini Flashを使った生成AIを利用したクエリを説明します。

-- ↓↓データの調整
WITH base as (
  SELECT 
    1 as id,
    datetime("2001-01-02 13:00:00") as created_at,
    "今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと" as comment 
UNION ALL
  SELECT 
    1 as id,
    datetime("2001-01-05 17:00:00") as created_at,
    "明日の朝はジョギングします。決意のランニング。" as comment 
UNION ALL
  SELECT 
    2 as id,
    datetime("2001-01-07 03:00:00") as created_at,
    "日経平均株価が気になるなぁ。4時から出社して市場を確認だ。" as comment 
)
, agg as (
  SELECT 
    id,
    STRING_AGG("コメント日時: "||created_at||" "||comment, "\n") as comments,
    array_to_string(["くつ","ぬいぐるみ","アクセサリー","高級別荘"],', ') as items -- 商品マスタの代わり
  FROM base
  GROUP BY id
)
SELECT 
  *
FROM
  ML.GENERATE_TEXT(
    -- 1. ここは読者が作成したモデルに置き換えてください。
    MODEL `PROJECT.generativeai_models.remote_model_gemini_flash`,
    (SELECT *,
   -- 2. promptというカラムを作る
    """
    以下はユーザーのコメントとコメントを投稿した日付です。
    コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
    その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
    ###コメント###
    """ 
    || comments
    || "###商品マスタ###\n"
    || items
    as prompt
     FROM agg),
    STRUCT(
   -- 3. 返答内容を微調整するときはここでパラメータ調整をしてください。
      0.2 AS temperature,
      1000 AS max_output_tokens,
      TRUE AS flatten_json_output
    )
  )
 重要な個所は3点で
1. Modelは3で作成した生成AI用のモデルを使うこと
  – 今回はPROJECT.generativeai_models.remote_model_gemini_flashという名前で保存したModelを使っています。
2. 最終的に投げるデータにはpromptというカラムを設けること
  – 上の例では
    """
    以下はユーザーのコメントとコメントを投稿した日付です。
    コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
    その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
    ###コメント###
    """ 
    || comments
    || "###商品マスタ###\n"
    || items
という形でpromptを作成しています。
3. パラメータの調整を行う
回答の厳密さ(temperature)  や回答の長さの制限(max_output_tokens)はSTRUCT型で第3引数に入れます。

5. 結果の解釈と活用

実際の実行結果を見てみましょう。

回答の中身は長いので詳細を見たい方は以下より確認してください。

Geminiの回答を見る

ml_generate_text_llm_result ml_generate_text_rai_result ml_generate_text_status id comments items prompt
## ユーザーペルソナ予測

このユーザーは、**健康志向でアクティブなライフスタイルを送る人**と考えられます。

* **サウナに行く**、**ジョギングをする**など、健康的な活動を楽しんでいます。
* **ドラマ鑑賞**も楽しむことから、リフレッシュや休息も大切にするタイプと考えられます。
* **決意のランニング**という表現から、目標に向かって努力するタイプであることも推測できます。

## 商品推薦

**商品マスタから「くつ」を推薦します。**

**理由:**

* ユーザーはジョギングをするため、ランニングシューズなどの**運動に適した靴**が必要と考えられます。
* 健康志向であることから、機能性や快適性を重視した靴を選ぶ可能性が高いです。
* 「決意のランニング」という表現から、モチベーションを高めるようなデザインや機能を持つ靴が好まれそうです。

**具体的な推薦文例:**

「決意のランニング、素晴らしいですね!快適なランニングをサポートする、高機能ランニングシューズはいかがでしょうか?通気性抜群で、足への負担を軽減する機能も充実しています。ぜひお試しください!」

[{“category”:1,”probability”:1,”probability_score”:0.14199379,”severity”:1,”severity_score”:0.091058284},{“category”:2,”probability”:1,”probability_score”:0.064300053,”severity”:1,”severity_score”:0.099820659},{“category”:3,”probability”:1,”probability_score”:0.11397348,”severity”:1,”severity_score”:0.092196196},{“category”:4,”probability”:1,”probability_score”:0.038975071,”severity”:1,”severity_score”:0.031321116}]
1 コメント日時: 2001-01-02 13:00:00 今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと
コメント日時: 2001-01-05 17:00:00 明日の朝はジョギングします。決意のランニング。
くつ, ぬいぐるみ, アクセサリー, 高級別荘
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
###コメント###
コメント日時: 2001-01-02 13:00:00 今日は昼からサウナに行ってきました。家に帰ったら溜まってたドラマを消化しよーっと
コメント日時: 2001-01-05 17:00:00 明日の朝はジョギングします。決意のランニング。###商品マスタ###くつ, ぬいぐるみ, アクセサリー, 高級別荘
## ユーザーペルソナ予測

**ユーザー名:** (名前は不明)

**年齢:** 30代後半~50代前半

**職業:** 会社員(サラリーマン)

**ライフスタイル:** 早朝出勤、仕事熱心、経済ニュースに敏感

**興味関心:** 株式市場、経済、ビジネス

**性格:** 勤勉、責任感強い、情報収集好き

**推測根拠:**

* コメントが早朝4時前に投稿されていることから、早朝出勤することが推測されます。
* 日経平均株価への関心から、経済やビジネスに関心が高いことがわかります。
* 仕事熱心で、市場の動向をいち早く把握しようとしている様子がうかがえます。

## 商品推薦

**商品:** **高級別荘**

**理由:**

* ユーザーは経済的に余裕があり、仕事熱心なことから、休暇を充実させたいと考えている可能性があります。
* 高級別荘は、仕事から離れてリラックスできる空間を提供し、リフレッシュに役立ちます。
* 株式投資など、経済活動に疲れたユーザーにとって、自然に囲まれた別荘での休暇は、心身のリフレッシュに最適です。

**推薦文例:**

「日々の経済ニュースに疲れていませんか?\
早朝出勤で市場の動向を常にチェックされているあなたに、\
自然に囲まれた高級別荘でのリフレッシュをお勧めします。\
仕事から離れて、心身を休ませ、新たな活力を取り戻しませんか?」

[{“category”:1,”probability”:1,”probability_score”:0.10356715,”severity”:1,”severity_score”:0.079782002},{“category”:2,”probability”:1,”probability_score”:0.035277549,”severity”:1,”severity_score”:0.13660839},{“category”:3,”probability”:1,”probability_score”:0.13195425,”severity”:1,”severity_score”:0.1041124},{“category”:4,”probability”:1,”probability_score”:0.083890386,”severity”:1,”severity_score”:0.13443464}]
2 コメント日時: 2001-01-07 03:00:00 日経平均株価が気になるなぁ。4時から出社して市場を確認だ。 くつ, ぬいぐるみ, アクセサリー, 高級別荘
以下はユーザーのコメントとコメントを投稿した日付です。
コメントを行った時間帯とその内容に注目しユーザーのペルソナを予測してください。
その後商品マスタから1点選んで、その商品をユーザーに勧めてください。
###コメント###
コメント日時: 2001-01-07 03:00:00 日経平均株価が気になるなぁ。4時から出社して市場を確認だ。###商品マスタ###くつ, ぬいぐるみ, アクセサリー, 高級別荘

 

promptでより構造的に回答するように指示を出すと、その後の分析で使いやすい形で返答を得ることも可能です。

 

6.まとめ

いかがだったでしょうか。生成AIとBigQueryを掛け合わせることでデータに合わせた個別の回答を大量に生成することができます。今回は私が用意した簡単なデータを使いましたが、例えば

  • (不動産・コールセンター) お問い合わせのカテゴライズ、データの表記ゆれの解消
  • (小売・EC) メルマガの見出し作成によるパーソナライゼーション
  • (メーカー) サイト来訪ユーザーのユーザー属性推定

など、様々な用途で活躍が期待できます。

気になる点がある方はお問い合わせフォームよりご連絡ください。

慣れ親しんだBigQueryからSQL利用者が簡単に生成AIを使えるのはGoogle Cloudの良いところですね。やはりデータを使うとなるとGCPが一番です(個人的な感想)。

コメント

タイトルとURLをコピーしました