ML.UNDERSTAND_TEXT 関数を使用してテキストを理解する

このドキュメントでは、リモートモデルML.UNDERSTAND_TEXT 関数を使用して、BigQuery 標準テーブルのテキスト上で自然言語のテキスト分析関数を実行する方法について説明します。

BigQuery ML でのモデルの推論については、モデルの推論の概要をご覧ください。

各 SQL ステートメントと関数でサポートされているモデルタイプと、各モデルタイプでサポートされているすべての SQL ステートメントと関数については、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。

必要な権限

  • 接続を作成するには、次のロールのメンバーシップが必要です。

    • roles/bigquery.connectionAdmin
  • BigQuery ML を使用してモデルを作成するには、次の権限が必要です。

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • 推論を実行するには、次の権限が必要です。

    • テーブルに対する bigquery.tables.getData
    • モデルに対する bigquery.models.getData
    • bigquery.jobs.create

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. BigQuery, BigQuery Connection API, and Cloud Natural Language API API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. BigQuery, BigQuery Connection API, and Cloud Natural Language API API を有効にします。

    API を有効にする

接続を作成する

クラウド リソース接続を作成し、接続のサービス アカウントを取得します。

次のオプションのいずれかを選択します。

コンソール

  1. BigQuery ページに移動します。

    [BigQuery] に移動

  2. 接続を作成するには、[データを追加] をクリックし、続いて [外部データソースへの接続] をクリックします。

  3. [接続タイプ] リストで、[BigLake とリモート関数(クラウド リソース)] を選択します。

  4. [接続 ID] フィールドに接続の名前を入力します。

  5. [接続を作成] をクリックします。

  6. [接続へ移動] をクリックします。

  7. [接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーします。

bq

  1. コマンドライン環境で接続を作成します。

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    --project_id パラメータは、デフォルト プロジェクトをオーバーライドします。

    次のように置き換えます。

    接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。

  2. 後の手順で必要になるため、サービス アカウント 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"}
    

Terraform

main.tf ファイルに次のセクションを追加します。

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
次のように置き換えます。

次の接続エラーが発生した場合は、Google Cloud SDK を更新します。

Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...

サービス アカウントへのアクセスを許可する

次のオプションのいずれかを選択します。

コンソール

  1. [IAM と管理] ページに移動します。

    [IAM と管理] に移動

  2. [追加] をクリックします。

    [プリンシパルを追加] ダイアログが開きます。

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

  4. [ロールを選択] フィールドで、[Service Usage] を選択し、[Service Usage コンシューマ] を選択します。

  5. [別のロールを追加] をクリックします。

  6. [ロールを選択] フィールドで、[BigQuery] を選択し、[BigQuery Connection ユーザー] を選択します。

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

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

次のように置き換えます。

  • PROJECT_NUMBER: プロジェクトの番号。
  • MEMBER: 先ほどコピーしたサービス アカウント ID。

権限を付与しないと、エラーが発生します。

モデルを作成する

CLOUD_AI_NATURAL_LANGUAGE_V1REMOTE_SERVICE_TYPE を使用してリモートモデルを作成します。

CREATE OR REPLACE MODEL
PROJECT_ID.DATASET_ID.MODEL_NAME
REMOTE WITH CONNECTION PROJECT_ID.REGION.CONNECTION_NAME
OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_NATURAL_LANGUAGE_V1');

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • DATASET_ID: モデルを格納するデータセットの ID。
  • MODEL_NAME: モデルの名前。
  • REGION: 接続で使用されるリージョン。
  • CONNECTION_NAME: 接続の名前。

テキストを理解する

ML.UNDERSTAND_TEXT 関数を使用してテキストを理解します。

SELECT *
FROM ML.UNDERSTAND_TEXT(
  MODEL PROJECT_ID.DATASET_ID.MODEL_NAME,
  TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
  STRUCT('FEATURE_NAME' AS nlu_option)
);

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • DATASET_ID: モデルを格納するデータセットの ID。
  • MODEL_NAME: モデルの名前。
  • TABLE_NAME: text_content という名前の列に分析対象のテキストが含まれているテーブルの名前。異なるの名前の列にテキストがある場合は、text_content をその列のエイリアスとして指定します。
  • FEATURE_NAME: サポートされている Natural Language API 機能の名前。

例 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)
);

次のステップ

BigQuery ML と Vertex AI の事前トレーニング済みモデルを使用した非構造化データの分析ノートブックを試す。