ML.UNDERSTAND_TEXT 関数を使用してテキストを理解する
このドキュメントでは、リモートモデルで ML.UNDERSTAND_TEXT 関数を使用して、BigQuery 標準テーブルのテキスト上で自然言語のテキスト分析関数を実行する方法について説明します。
必要なロール
リモートモデルを作成してテキストを分析するには、プロジェクト レベルで次の Identity and Access Management(IAM)ロールが必要です。
- BigQuery データセット、テーブル、モデルの作成と使用: BigQuery データ編集者(roles/bigquery.dataEditor)
- BigQuery 接続の作成、委任、使用: BigQuery 接続管理者( - roles/bigquery.connectionsAdmin)- デフォルト接続が構成されていない場合は、 - CREATE MODELステートメントの実行時に作成して設定できます。これを行うには、プロジェクトに対する BigQuery 管理者(- roles/bigquery.admin)が必要です。詳細については、デフォルト接続を構成するをご覧ください。
- 接続のサービス アカウントに権限を付与する: Project IAM 管理者( - roles/resourcemanager.projectIamAdmin)。
- BigQuery ジョブを作成する: BigQuery ジョブユーザー( - roles/bigquery.jobUser)
これらの事前定義ロールには、このドキュメントのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
- データセットを作成する: bigquery.datasets.create
- 接続を作成、委任、使用する: bigquery.connections.*
- サービス アカウントの権限を設定する: resourcemanager.projects.getIamPolicyとresourcemanager.projects.setIamPolicy
- モデルを作成して推論を実行する。
    - bigquery.jobs.create
- bigquery.models.create
- bigquery.models.getData
- bigquery.models.updateData
- bigquery.models.updateMetadata
 
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- Google Cloud コンソールで、[BigQuery] ページに移動します。 
- 左側のペインで、 [エクスプローラ] をクリックします。  - 左側のペインが表示されていない場合は、 左側のペインを開くをクリックしてペインを開きます。 
- [エクスプローラ] ペインで、プロジェクト名をクリックします。 
- [アクションを表示] > [データセットを作成] をクリックします。 
- [データセットを作成する] ページで、次の操作を行います。 - [データセット ID] に、データセットの名前を入力します。 
- [ロケーション タイプ] で、[リージョン] または [マルチリージョン] を選択します。 - [リージョン] を選択した場合は、[リージョン] リストからロケーションを選択します。
- [マルチリージョン] を選択した場合は、[マルチリージョン] リストから [US] または [ヨーロッパ] を選択します。
 
- [データセットを作成] をクリックします。 
 
- [BigQuery] ページに移動します。 
- [エクスプローラ] ペインで、[ データを追加] をクリックします。 ![[データを追加] の UI 要素。](https://cloud.google.com/static/bigquery/images/add-data.png?authuser=09&hl=ja)  - [データを追加] ダイアログが開きます。 
- [フィルタ条件] ペインの [データソースのタイプ] セクションで、[ビジネス アプリケーション] を選択します。 - または、[データソースを検索] フィールドに「 - Vertex AI」と入力します。
- [特徴量データソース] セクションで、[Vertex AI] をクリックします。 
- [Vertex AI モデル: BigQuery フェデレーション] ソリューション カードをクリックします。 
- [接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)] を選択します。 
- [接続 ID] フィールドに接続の名前を入力します。 
- [接続を作成] をクリックします。 
- [接続へ移動] をクリックします。 
- [接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーします。 
- コマンドライン環境で接続を作成します。 - bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID - --project_idパラメータは、デフォルト プロジェクトをオーバーライドします。- 次のように置き換えます。 - REGION: 接続のリージョン
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- CONNECTION_ID: 接続の ID
 - 接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。 - トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。 - Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of... 
- 後の手順で使用するため、サービス アカウント ID を取得してコピーします。 - bq show --connection PROJECT_ID.REGION.CONNECTION_ID - 出力は次のようになります。 - name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
- Cloud Shell を起動します。
- 
    Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。 このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。 export GOOGLE_CLOUD_PROJECT=PROJECT_ID Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。 
- 
    Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tfにする必要があります(例:main.tf)。このチュートリアルでは、このファイルをmain.tfとします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf 
- 
    チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。 新しく作成した main.tfにサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。 
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
- 
    Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。terraform init 最新バージョンの Google プロバイダを使用する場合は、 -upgradeオプションを使用します。terraform init -upgrade 
- 
    構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。terraform plan 必要に応じて構成を修正します。 
- 
    次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。terraform apply Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。 
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
- [IAM と管理] ページに移動します。 
- [追加] をクリックします。 - [プリンシパルを追加] ダイアログが開きます。 
- [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。 
- [ロールを選択] フィールドで、[Service Usage] を選択し、[Service Usage コンシューマ] を選択します。 
- [別のロールを追加] をクリックします。 
- [ロールを選択] フィールドで、[BigQuery] を選択し、[BigQuery Connection ユーザー] を選択します。 
- [保存] をクリックします。 
- PROJECT_NUMBER: プロジェクトの番号。
- MEMBER: 先ほどコピーしたサービス アカウント ID。
- PROJECT_ID: プロジェクト ID。
- DATASET_ID: モデルを格納するデータセットの ID。このデータセットは、使用している接続と同じロケーションに存在している必要があります。
- MODEL_NAME: モデルの名前。
- REGION: 接続で使用されるリージョン。
- CONNECTION_ID: 接続 ID(例:- myconnection)。- Google Cloud コンソールで接続の詳細を表示する場合、接続 ID は [接続 ID] に表示される完全修飾接続 ID の最後のセクションの値です(例: - projects/myproject/locations/connection_location/connections/myconnection)。
- PROJECT_ID: プロジェクト ID。
- DATASET_ID: モデルを格納するデータセットの ID。
- MODEL_NAME: モデルの名前。
- TABLE_NAME:- text_contentという名前の列に分析対象のテキストが含まれているテーブルの名前。異なる名前の列にテキストがある場合は、- text_contentをその列のエイリアスとして指定します。
- QUERY:- text_contentという名前の列に記述対象のテキストがあるクエリ。異なる名前の列にテキストがある場合は、- text_contentをその列のエイリアスとして指定します。
- FEATURE_NAME: サポートされている Natural Language API 機能の名前。
- FLATTEN_JSON_OUTPUT: 関数から返された JSON コンテンツを別の列に解析するかどうかを決定する- BOOL値です。
- ENCODING_TYPE:- beginOffset値などのエンコード依存情報を Cloud Natural Language API が決定するために使用するエンコードを指定する- STRING値。詳細については、- EncodingTypeをご覧ください。
- BigQuery ML でのモデルの推論の詳細については、モデルの推論の概要をご覧ください。
- 生成 AI モデルでサポートされている SQL ステートメントと関数の詳細については、生成 AI モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。
- BigQuery ML と Vertex AI の事前トレーニング済みモデルを使用した非構造化データの分析ノートブックを試す。
データセットを作成する
リソースを格納する BigQuery データセットを作成します。
コンソール
bq
接続を作成する
デフォルトの接続が構成されているか、BigQuery 管理者ロールが付与されている場合は、この手順をスキップできます。
リモートモデルが使用する Cloud リソース接続を作成し、接続のサービス アカウントを取得します。前の手順で作成したデータセットと同じロケーションに接続を作成します。
次のオプションのいずれかを選択します。
コンソール
bq
Terraform
google_bigquery_connection リソースを使用します。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。
次の例では、US リージョンに my_cloud_resource_connection という名前の Cloud リソース接続を作成します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
変更を適用する
サービス アカウントへのアクセスを許可する
次のオプションのいずれかを選択します。
コンソール
gcloud
gcloud projects add-iam-policy-binding コマンドを実行します。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/serviceusage.serviceUsageConsumer' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/bigquery.connectionUser' --condition=None
次のように置き換えます。
権限を付与しないと、エラーが発生します。
モデルを作成する
CLOUD_AI_NATURAL_LANGUAGE_V1 の REMOTE_SERVICE_TYPE を使用してリモートモデルを作成します。
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_NATURAL_LANGUAGE_V1');
次のように置き換えます。
テキストを理解する
ML.UNDERSTAND_TEXT 関数を使用してテキストを理解します。
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, { TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (QUERY) }, STRUCT('FEATURE_NAME' AS nlu_option [, 'FLATTEN_JSON_OUTPUT' AS flatten_json_output] [, ENCODING_TYPE AS encoding_type]) );
次のように置き換えます。
例 1
次の例では、テーブルの text_content 列のテキストを検査し、テキスト内の感情的傾向を特定します。
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `mydataset.mynlpmodel`, TABLE mydataset.mytable, STRUCT('analyze_sentiment' AS nlu_option) );
例 2
次の例では、テーブルの comment 列のテキストを検査し、テキストの構文情報を提供します。
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `mydataset.mynlpmodel`, (SELECT comment AS text_content from mydataset.mytable), STRUCT('analyze_syntax' AS nlu_option) );