arrow_back

Python ノートブックを使用して Gemini で購入者レビューを分析する

ログイン 参加
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

Python ノートブックを使用して Gemini で購入者レビューを分析する

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 中級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう
done
700 を超えるハンズオンラボ、スキルバッジ、コースへのアクセス

GSP1249

Google Cloud セルフペース ラボ

概要

このラボでは、BigQuery ML とリモートモデル(Gemini Pro)を使用して、キーワードを抽出し、購入者レビューのお客様の感情を評価する方法について学習します。

BigQuery は、データから最大限の価値を引き出すのに役立つフルマネージドの AI 対応データ分析プラットフォームであり、マルチエンジン、マルチフォーマット、マルチクラウド向けに設計されています。BigQuery の主な機能の一つが、BigQuery ML です。BigQuery ML を使用すると、SQL クエリまたは Colab Enterprise ノートブックを使用して ML モデルを作成および実行できます。

Gemini は、Google の DeepMind が開発した、生成 AI モデルのファミリーであり、マルチモーダル ユースケース用に設計されています。Gemini API を使用すると、Gemini Pro、Gemini Pro Vision、Gemini Flash モデルにアクセスできます。

このラボの最後では、BigQuery 内の Colab Enterprise ノートブックで Python ベースのカスタマー サービス アプリケーションをビルドし、Gemini Flash モデルを使用して音声ベースの購入者レビューに返信します。

目標

このラボでは、次の方法について学びます。

  • Colab Enterprise を使用して BigQuery に Python ノートブックを作成する。
  • BigQuery でクラウド リソース接続を作成する。
  • BigQuery でデータセットとテーブルを作成する。
  • BigQuery で Gemini リモートモデルを作成する。
  • テキストベースの購入者レビューのキーワードや感情(肯定的または否定的)を分析するよう Gemini に指示する。
  • 肯定的なレビューと否定的なレビューの件数に関するレポートを生成する。
  • 購入者レビューへの返信を大規模に行う。
  • カスタマー サービス担当者が音声ベースの購入者レビューに返信するためのアプリケーションを作成する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。

    ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] パネルでも [ユーザー名] を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] パネルでも [パスワード] を確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。ナビゲーション メニュー アイコン

タスク 1. BigQuery Python ノートブックを作成し、ランタイムに接続する

このタスクでは、BigQuery Python ノートブックを作成し、そのノートブックをランタイムに接続します。

BigQuery Python ノートブックを作成する

  1. Google Cloud コンソールのナビゲーション メニューで、[BigQuery] をクリックします。

  2. 表示されるポップアップ画面で [完了] をクリックします。

  3. [PYTHON ノートブック] をクリックします。

  4. [リージョン] で [] を選択します。

  5. [選択] をクリックします。

    プロジェクトのエクスプローラのノートブック セクションに Python ノートブックが追加されたことも確認できます。

  6. 各セルにカーソルを合わせたときに表示されるゴミ箱アイコンをクリックして、ノートブック内のすべてのセルを削除します。

完了するとノートブックは空になり、次のステップに進むことができます。

ランタイムに接続する

  1. [接続] をクリックします。

  2. Qwiklabs の受講者 ID をクリックします。

    しばらくお待ちください。ランタイムに接続するには最長で 3 分かかる場合があります。

    ある時点で、ブラウザ ウィンドウの下部にある接続ステータスの表示が更新されて、[接続済み] になります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 BigQuery Python ノートブックを作成し、ランタイムに接続する

タスク 2. クラウド リソース接続を作成し、IAM ロールを付与する

BigQuery でクラウド リソース接続を作成する

このタスクでは、BigQuery でクラウド リソース接続を作成し、Gemini Pro および Gemini Flash モデルで作業できるようにします。また、ロールを通じてクラウド リソース接続のサービス アカウントに IAM 権限を付与し、Vertex AI サービスにアクセスできるようにします。

リソース接続を作成するには、Python SDK と Google Cloud CLI を使用します。ただし、最初に Python ライブラリをインポートし、project_id 変数と region 変数を設定する必要があります。

  1. 以下のコードを使用して新しいコードセルを作成します。

    # Python ライブラリをインポートする import vertexai from vertexai.generative_models import GenerativeModel, Part from google.cloud import bigquery from google.cloud import storage import json import io import matplotlib.pyplot as plt from IPython.display import HTML, display from IPython.display import Audio from pprint import pprint

    このコードによって Python ライブラリがインポートされます。

  2. このセルを実行します。ライブラリが読み込まれ、使用する準備ができました。

  3. 以下のコードを使用して新しいコードセルを作成します。

    # project_id と region の Python 変数を設定する project_id = "{{{project_0.project_id|Project ID}}}" region = " {{{ project_0.default_region | "REGION" }}}" 注: project_id と region は、SQL 変数ではなく Python 変数として保存されるため、セル内で参照できるのは SQL コードではなく Python コードを使用した場合のみです。
  4. このセルを実行します。project_id と region の変数が設定されます。

  5. 以下のコードを使用して新しいコードセルを作成します。

    # リソース接続を作成する !bq mk --connection \ --connection_type=CLOUD_RESOURCE \ --location=US \ gemini_conn

    このコードは、Google Cloud CLI コマンド bq mk --conection を使用してリソース接続を作成します。

  6. このセルを実行します。これでリソース接続が作成されました。

  7. [エクスプローラ] でプロジェクト ID の横にあるアクションを表示ボタンをクリックします。

  8. [コンテンツを更新] を選択します。

  9. [外部接続] を開きます。外部接続として us.gemini_conn が表示されていることがわかります。

  10. [us.gemini_conn] をクリックします。

  11. [接続情報] ペインで、サービス アカウント ID をテキスト ファイルにコピーして、次のタスクで使用できるようにします。

接続のサービス アカウントに Vertex AI ユーザーロールを付与する

  1. コンソールのナビゲーション メニューで、[IAM と管理] をクリックします。

  2. [アクセス権を付与] をクリックします。

  3. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。

  4. [ロールを選択] フィールドで、[Vertex AI]、[Vertex AI ユーザー] ロールの順に選択します。

  5. [保存] をクリックします。

    これにより、サービス アカウントに Vertex AI ユーザーロールが含まれるようになります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 クラウド リソース接続を作成し、IAM ロールを付与する

タスク 3. 音声ファイルとデータセットを確認し、サービス アカウントに IAM ロールを付与する

このタスクでは、データセットと音声ファイルを確認し、クラウド リソース接続のサービス アカウントに IAM 権限を付与します。

Cloud Storage 上の音声ファイル、画像ファイル、購入者レビューのデータセットを確認する

このタスクでリソース接続のサービス アカウントに権限を付与する前に、データセットと画像ファイルを確認してください。

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー アイコン)で [Cloud Storage] を選択します。

  2. -bucket バケットをクリックします。

  3. バケットに含まれている gsp1249 フォルダを開きます。次の 5 つの項目が表示されます。

    • audio フォルダには、分析するすべての音声ファイルが含まれています。このフォルダに自由にアクセスして、音声ファイルを確認できます。
    • customer_reviews.csv ファイルは、テキストベースの購入者レビューが含まれるデータセットです。
    • images フォルダには、このラボの後半で使用する画像ファイルが含まれています。このフォルダに自由にアクセスして、フォルダに含まれる画像ファイルを表示できます。
    • notebook.ipynb は、このラボで作成するノートブックのコピーです。必要に応じて確認してください。
    注: 認証済み URL を使用して、各項目をダウンロードおよび確認できます。

接続のサービス アカウントに IAM ストレージ オブジェクト管理者ロールを付与する

BigQuery で作業を開始する前に、リソース接続のサービス アカウントに IAM 権限を付与すると、クエリの実行時にアクセス拒否エラーが発生しなくなります。

  1. バケットのルートに戻ります。

  2. [権限] をクリックします。

  3. [アクセス権を付与] をクリックします。

  4. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。

  5. [ロールを選択] フィールドで、[Storage オブジェクト] を入力し、[Storage オブジェクト管理者] ロールを選択します。

  6. [保存] をクリックします。

    これにより、サービス アカウントに Storage オブジェクト管理者ロールが含まれるようになります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 画像とデータセットを確認し、サービス アカウントに IAM ロールを付与する

タスク 4. BigQuery でデータセットと購入者レビューのテーブルを作成する

このタスクでは、プロジェクトのデータセットである、購入者レビューのテーブルを作成します。

データセットを作成する

データセットでは次のプロパティを使用します。

フィールド
データセット ID gemini_demo
ロケーション タイプ [マルチリージョン] を選択
マルチリージョン [US(米国の複数のリージョン)] を選択
  1. BigQuery の Python ノートブックに戻ります。

  2. 以下のコードを使用して新しいコードセルを作成します。

    # データセットを作成する %%bigquery CREATE SCHEMA IF NOT EXISTS `{{{project_0.project_id|Project ID}}}.gemini_demo` OPTIONS(location="US");

    コードは %%bigquery で始まっています。これは、このステートメントの直後のコードが SQL コードになることを Python に伝えるためです。

  3. このセルを実行します。

    SQL コードによって、BigQuery の [エクスプローラ] のプロジェクトの下に表示される US リージョンにあるプロジェクトに gemini_demo データセットが作成されます。

サンプルデータを使用して購入者レビューのテーブルを作成する

購入者レビューのテーブルを作成するには、SQL クエリを使用します。

  1. 以下のコードを使用して新しいコードセルを作成します。

    # 購入者レビューのテーブルを作成する %%bigquery LOAD DATA OVERWRITE gemini_demo.customer_reviews (customer_review_id INT64, customer_id INT64, location_id INT64, review_datetime DATETIME, review_text STRING, social_media_source STRING, social_media_handle STRING) FROM FILES ( format = 'CSV', uris = ['gs://{{{project_0.project_id|Project ID}}}-bucket/gsp1249/customer_reviews.csv']);
  2. このセルを実行します。

    これにより、データセット内の各レビューの customer_review_idcustomer_idlocation_idreview_datetimereview_textsocial_media_sourcesocial_media_handle などの購入者レビューのサンプルデータを含む customer_reviews テーブルが作成されます。

  3. [エクスプローラ] で customer_reviews テーブルをクリックし、スキーマと詳細を確認します。

  4. 以下のコードを使用して新しいコードセルを作成し、テーブルをクエリしてレコードを確認します。

    # 購入者レビューのテーブルを作成する %%bigquery SELECT * FROM `gemini_demo.customer_reviews` ORDER BY review_datetime
  5. このセルを実行します。

    これにより、すべての列が含まれたテーブルからレコードが表示されるようになります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 BigQuery でデータセットと購入者レビューのテーブルを作成する

タスク 5. BigQuery で Gemini Pro モデルを作成する

テーブルが作成されたため、テーブルの操作を開始できます。このタスクでは、BigQuery で Gemini Pro モデルを作成します。

  1. Python ノートブックに戻ります。

  2. 以下のコードを使用して新しいコードセルを作成します。

    # 購入者レビューのテーブルを作成する %%bigquery CREATE OR REPLACE MODEL `gemini_demo.gemini_pro` REMOTE WITH CONNECTION `us.gemini_conn` OPTIONS (endpoint = 'gemini-pro')
  3. このセルを実行します。

    これにより、gemini_pro モデルが作成され、モデル セクションの gemini_demo データセットに追加されます。

  4. [エクスプローラ] で gemini_pro モデルをクリックし、スキーマと詳細を確認します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 BigQuery で Gemini Pro モデルを作成する

タスク 6. 購入者レビューのキーワードや感情を分析するよう Gemini に指示する

このタスクでは、Gemini Pro モデルを使用して、各購入者レビューの感情(肯定的または否定的)を分析します。

購入者レビューの感情(肯定的または否定的)を分析する

  1. 以下のコードを使用して新しいコードセルを作成します。

    # 感情分析テーブルを作成する %%bigquery CREATE OR REPLACE TABLE `gemini_demo.customer_reviews_analysis` AS ( SELECT ml_generate_text_llm_result, social_media_source, review_text, customer_id, location_id, review_datetime FROM ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_pro`, ( SELECT social_media_source, customer_id, location_id, review_text, review_datetime, CONCAT( 'Classify the sentiment of the following text as positive or negative.', review_text, "In your response don't include the sentiment explanation. Remove all extraneous information from your response, it should be a boolean response either positive or negative.") AS prompt FROM `gemini_demo.customer_reviews` ), STRUCT( 0.2 AS temperature, TRUE AS flatten_json_output)));
  2. このセルを実行します。

    このクエリは、customer_reviews テーブルから購入者レビューを取得し、gemini_pro モデルが各レビューの感情を分類するためのプロンプトを構築します。結果は、後でさらに詳しい分析に使用できるよう、新しいテーブル customer_reviews_analysis に保存されます。

    しばらくお待ちください。モデルによって購入者レビューのレコードが処理されるまでに約 30 秒かかります。

    モデルが完了すると、customer_reviews_analysis テーブルが作成されます。

  3. [エクスプローラ] で customer_reviews_analysis テーブルをクリックし、スキーマと詳細を確認します。

  4. 以下のコードを使用して新しいコードセルを作成します。

    # customer_reviews_analysis テーブルから最初の 100 件のレコードを pull する %%bigquery SELECT * FROM `gemini_demo.customer_reviews_analysis` ORDER BY review_datetime
  5. このセルを実行します。

    これにより、ml_generate_text_llm_result 列(感情分析を含む)、購入者レビュー テキスト、お客様 ID、ロケーション ID が行に含まれるようになります。

    レコードを見てみましょう。結果(肯定的または否定的)の一部が、ピリオドや余分なスペースなどの不要な文字によって正しくフォーマットされていない場合があります。以下のビューを使用してレコードをサニタイズできます。

レコードをサニタイズするためのビューを作成する

  1. 以下のコードを使用して新しいコードセルを作成します。

    # 新しいビュー内のレコードをサニタイズする %%bigquery CREATE OR REPLACE VIEW gemini_demo.cleaned_data_view AS SELECT REPLACE(REPLACE(LOWER(ml_generate_text_llm_result), '.', ''), ' ', '') AS sentiment, REGEXP_REPLACE( REGEXP_REPLACE( REGEXP_REPLACE(social_media_source, r'Google(\+|\sReviews|\sLocal|\sMy\sBusiness|\sreviews|\sMaps)?', 'Google'), 'YELP', 'Yelp' ), r'SocialMedia1?', 'Social Media' ) AS social_media_source, review_text, customer_id, location_id, review_datetime FROM `gemini_demo.customer_reviews_analysis`;
  2. このセルを実行します。

    このコードによって cleaned_data_view ビューが作成されます。ビューには、感情の結果、レビュー テキスト、お客様 ID、ロケーション ID が含まれます。次に、感情の結果(肯定的または否定的)を取得します。その際、すべての文字が小文字に変換され、余分なスペースやピリオドなどの不要な文字が削除されます。サニタイズされた結果のビューにより、このラボの後のステップで詳細な分析を行うことが容易になります。

  3. 以下のコードを使用して新しいコードセルを作成します。

    # cleaned_data_view ビューから最初の 100 件のレコードを pull する %%bigquery SELECT * FROM `gemini_demo.cleaned_data_view` ORDER BY review_datetime
  4. このセルを実行します。

    sentiment 列に肯定的なレビューと否定的なレビューのクリーンな値が含まれていることを確認できます。このビューは、後のステップでレポートの作成に使用できます。

肯定的なレビューおよび否定的なレビューの件数に関するレポートを作成する

Python と Matplotlib ライブラリを使用して、肯定的なレビューと否定的なレビューの件数に関する棒グラフレポートを作成できます。

  1. 新しいコードセルを作成し、BigQuery クライアントを使用して cleaned_data_view にクエリを実行することで肯定的レビューと否定的レビューを取得し、感情別にグループ化して結果を DataFrame に保存します。

    # タスク 6.5 - BigQuery クライアントを作成し、cleaned_data_view に対して肯定的レビューと否定的レビューをクエリし、結果を DataFrame に保存して、最初の 10 件のレコードを表示する client = bigquery.Client() query = "SELECT sentiment, COUNT(*) AS count FROM `gemini_demo.cleaned_data_view` WHERE sentiment IN ('positive', 'negative') GROUP BY sentiment;" query_job = client.query(query) results = query_job.result().to_dataframe() results.head(10)
  2. このセルを実行します。

    セルを実行すると、肯定的なレビューと否定的なレビューの合計件数を含むテーブルが出力されます。

  3. レポートの変数を定義するために新しいセルを作成します。

    # レポートの変数を定義する sentiment = results["sentiment"].tolist() count = results["count"].tolist()
  4. このセルを実行します。出力はありません。

  5. レポートを作成するために新しいセルを作成します。

    # タスク 6.7 - レポートを作成する plt.bar(sentiment, count, color='skyblue') plt.xlabel("Sentiment") plt.ylabel("Total Count") plt.title("Bar Chart from BigQuery Data") plt.show()
  6. このセルを実行します。

    これにより、肯定的なレビューと否定的なレビューの件数に関する棒グラフが作成されます。

  7. また、以下のコードを使用して、否定的な感情と肯定的な感情の件数を色分けしたシンプルなレポートを作成することもできます。

    # 否定的な感情と肯定的な感情の件数に関する HTML テーブルを作成し、結果を色分けする html_counts = f"""
    否定的 肯定的
    {count[0]} {count[1]}
    """ # HTML テーブルを表示する display(HTML(html_counts))

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 購入者レビューのキーワードや感情を分析するよう Gemini に指示する

タスク 7. 購入者レビューに返信する

Data Beans は、画像と音声録音を使用した購入者レビューを試したいと考えています。ノートブックのこのセクションでは、Cloud Storage、BigQuery、Gemini Flash、Python を使用して、画像や音声ファイルとして Data Beans に提供された購入者レビューの感情分析を実行します。また、レビューへの感謝を伝える、レビューに対するコーヒーハウスの対応をお客様に説明するなど、分析結果に応じたカスタマー サービスの返信を生成します。

これを大規模に実行した後、1 つの画像ファイルや音声ファイルを使用して実行することで、カスタマー サービス担当者向けの概念実証アプリケーションを作成する方法について学習します。これにより、お客様のフィードバック プロセスにおいて「人間参加型」の戦略が実現し、カスタマー サービス担当者がお客様と各コーヒーハウスの両方に対して対応できるようになります。

JSON レスポンスを使用して大規模な音声ファイル処理を行う

  1. 音声ファイルの感情分析を実行し、お客様に返信するための新しいセルを作成します。

    # 音声ファイルに対して感情分析を実施し、お客様に返信する vertexai.init(project="{{{project_0.project_id|Project ID}}}", location="{{{project_0.default_region|region}}}") model = GenerativeModel(model_name="gemini-1.5-flash") prompt = """ Please provide a transcript for the audio. Then provide a summary for the audio. Then identify the keywords in the transcript. Be concise and short. Do not make up any information that is not part of the audio and do not be verbose. Then determine the sentiment of the audio: positive, neutral or negative. Also, you are a customr service representative. How would you respond to this customer review? From the customer reviews provide actions that the location can take to improve. The response and the actions should be simple, and to the point. Do not include any extraneous characters in your response. Answer in JSON format with five keys: transcript, summary, keywords, sentiment, response and actions. Transcript should be a string, summary should be a sting, keywords should be a list, sentiment should be a string, customer response should be a string and actions should be string. """ bucket_name = "{{{project_0.project_id|Project ID}}}-bucket" folder_name = 'gsp1249/audio' # 末尾の '/' を含める def list_mp3_files(bucket_name, folder_name): storage_client = storage.Client() bucket = storage_client.bucket(bucket_name) print('Accessing ', bucket, ' with ', storage_client) blobs = bucket.list_blobs(prefix=folder_name) mp3_files = [] for blob in blobs: if blob.name.endswith('.mp3'): mp3_files.append(blob.name) return mp3_files file_names = list_mp3_files(bucket_name, folder_name) if file_names: print("MP3 files found:") print(file_names) for file_name in file_names: audio_file_uri = f"gs://{bucket_name}/{file_name}" print('Processing file at ', audio_file_uri) audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg") contents = [audio_file, prompt] response = model.generate_content(contents) print(response.text) else: print("No MP3 files found in the specified folder.")

    このセルに関していくつか重要なポイントがあります。

    • 最初の行ではプロジェクト ID とリージョンを使用して Vertex AI を初期化するため、これらの値を入力する必要があります。
    • 次の行は、Gemini Flash モデルに基づいて、BigQuery に model という名前のモデルを作成します。
    • その後、Gemini Flash モデルで使用されるプロンプトを定義します。プロンプトは、音声ファイルを効果的にテキストに変換し、テキストの感情を分析します。分析が完了すると、各ファイルにおけるお客様への返信を作成します。
    • バケットを bucket_name 文字列変数として設定する必要があります。注: folder_name は gsp1249/audio サブフォルダにも使用されるため、変更しないでください。
    • バケット内のすべての mp3 ファイルを識別するために、list_mp3_files という関数が作成されます。 その後、これらのファイルは if ステートメント内で Gemini Flash モデルによって処理されます。
  2. このセルを実行します。

    これにより、5 つの音声ファイルすべてが分析され、分析の出力が JSON レスポンスとして提供されます。JSON レスポンスは適宜解析されたあと、適切なアプリケーションに転送され、改善のためのアクションとともにお客様やロケーションに返信されます。

カスタマー サービス担当者向けのアプリケーションを作成する

ラボのこのセクションでは、否定的なレビューの分析に基づいてカスタマー サービス アプリケーションを作成する方法について学習します。次のことを行います。

  • 前のセルと同じプロンプトを使用して、1 件の否定的なレビューを分析します。
  • 否定的なレビューの音声ファイルから文字起こしを生成し、適切な形式でモデル出力から JSON オブジェクトを作成します。作成した JSON オブジェクトの特定の部分を Python 変数として保存し、アプリケーションの一部として HTML で使用できるようにします。
  • HTML テーブルを生成し、お客様がレビュー用にアップロードした画像を読み込み、音声ファイルをプレーヤーに読み込みます。
  • 画像と音声ファイルのプレーヤーを含む HTML テーブルを表示します。
  1. 新しいセルを作成し、次のコードを入力すると、否定的なレビューの音声ファイルから文字起こしを生成し、JSON オブジェクトと関連する変数を作成できます。

    # 否定的なレビューの音声ファイルから文字起こしを生成し、JSON オブジェクトおよび関連する変数を作成する audio_file_uri = f"gs://{bucket_name}/{folder_name}/data-beans_review_7061.mp3" print(audio_file_uri) audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg") contents = [audio_file, prompt] response = model.generate_content(contents) print('Generating Transcript...') #print(response.text) results = response.text # print("your results are", results, type(results)) print('Transcript created...') print('Transcript ready for analysis...') json_data = results.replace('```json', '') json_data = json_data.replace('```', '') jason_data = '"""' + results + '"""' # print(json_data, type(json_data)) data = json.loads(json_data) # print(data) transcript = data["transcript"] summary = data["summary"] sentiment = data["sentiment"] keywords = data["keywords"] response = data["response"] actions = data["actions"]

    このセルに関していくつか重要なポイントがあります。

    • セル内のコードは Cloud Storage から特定の音声ファイル(data-beans_review_7061.mp3)を選択します。
    • 次に、Gemini Flash モデルによって処理されるよう、ファイルを「タスク 7.1」というラベルの付いた前のセルのプロンプトに送信します。
    • モデルの返信は JSON 形式で抽出されます。
    • 次に、JSON データが解析され、文字起こし、要約、感情、キーワード、お客様への返信、アクションの Python 変数が保存されます。
  2. セルを実行します。

    出力は最小限で、処理された音声ファイルの URI と処理メッセージのみです。

  3. 選択した値から HTML ベースのテーブルを作成し、否定的なレビューを含む音声ファイルをプレーヤーに読み込みます。

    # 選択した値から HTML テーブル(画像を含む)を作成する html_string = f"""
    customer_id: 7061 - @coffee_lover789  
    {transcript} {sentiment} feedback
     
    {keywords[0]}
    {keywords[1]}
    {keywords[2]}
    {keywords[3]}
    お客様についての要約:{summary}
    推奨されるアクション:{actions}
    提案される返信:{response}
    """ print('The table has been created.')

    このセルに関していくつか重要なポイントがあります。

    • セル内のコードは HTML テーブル文字列を構築します。
    • 次に、文字起こし、感情、キーワード、画像、要約、アクション、返信の値をテーブルセルに挿入します。
    • このコードはテーブル要素にもスタイルを適用します。
    • セルが実行されると、セルの出力にテーブルの作成日時が示されます。
  4. {summary} 出力が含まれる <td style="padding:10px;"> タグを見つけ、このタグの前に新しいコード行を追加します。

  5. この新しいコード行に <td rowspan="3" style="padding: 10px;"><img src="<authenticated url here>" alt="Customer Image" style="max-width: 300px;"></td> を貼り付けます。

  6. image_7061.png ファイルの認証済み URL を見つけます。Cloud Storage に移動し、そこにある唯一のバケットである画像フォルダを選択して、画像をクリックします。

  7. 表示されたページで、画像の認証済み URL をコピーします。

  8. BigQuery の Python ノートブックに戻ります。<authenticated url here> を、貼り付けたコード内の実際の認証済み URL に置き換えます。

  9. セルを実行します。

    繰り返しになりますが、出力は最小限で、各ステップが完了したことを示す処理メッセージのみです。

  10. 以下のコードを使用して、音声ファイルをダウンロードしてプレーヤーに読み込むための新しいセルを作成します。

    # Google Cloud Storage から音声ファイルをダウンロードし、プレーヤーに読み込む storage_client = storage.Client() bucket = storage_client.bucket(bucket_name) blob = bucket.blob(f"{folder_name}/data-beans_review_7061.mp3") audio_bytes = io.BytesIO(blob.download_as_bytes()) # サンプルレートを 44100 Hz(MP3 ファイルでは一般的)と仮定 sample_rate = 44100 print('The audio file is loaded in the player.')

    このセルに関していくつか重要なポイントがあります。

    • セル内のコードは Cloud Storage バケットにアクセスし、特定の音声ファイル(data-beans_review_7061.mp3)を取得します。
    • 次に、ファイルをバイト ストリームとしてダウンロードし、ファイルのサンプルレートを決定して、ノートブック内のプレーヤーで直接再生できるようにします。
    • セルが実行されると、セルの出力は、音声ファイルがプレーヤーに読み込まれ、再生の準備ができていることを示すメッセージになります。
  11. セルを実行します。

  12. 新しいセルを作成し、以下のコードを入力します。

    # タスク 7.5 - セルへの出力としてモックアップをビルドする print('Analysis complete. Review the results below.') display(HTML(html_string)) display(Audio(audio_bytes.read(), rate=sample_rate, autoplay=True))
  13. セルを実行します。

    このセルで魔法が起こります。display メソッドは、プレーヤーに読み込まれた HTML と音声ファイルを表示するために使用されます。セルの出力を確認します。セルの出力は、次の画像と同じになるはずです。

    画像は動作中のアプリケーションを示しています。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 購入者レビューに返信する

お疲れさまでした

BigQuery でクラウド リソース接続を正常に作成できました。また、データセット、テーブル、モデルを作成し、購入者レビューの感情やキーワードを分析するよう Gemini に指示しました。最後に、Gemini を使用して音声ベースの購入者レビューを分析し、カスタマー サービス アプリケーション内で購入者レビューに返信するための要約とキーワードを生成しました。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 7 月 26 日

ラボの最終テスト日: 2024 年 7 月 26 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

このコンテンツは現在ご利用いただけません

We will notify you via email when it becomes available

ありがとうございます。

We will contact you via email if it becomes available