使用 ML.UNDERSTAND_TEXT 函数理解文本
本文档介绍了如何将 ML.UNDERSTAND_TEXT
函数与远程模型搭配使用,以对 BigQuery 标准表中的文本执行自然语言文本分析函数。
如需了解 BigQuery ML 中的模型推断,请参阅模型推断概览。
如需了解每种 SQL 语句和函数支持的模型类型,以及每种模型类型支持的所有 SQL 语句和函数,请参阅每个模型的端到端用户体验历程。
所需权限
如需创建连接,您需要拥有以下角色的成员资格:
roles/bigquery.connectionAdmin
如需向连接的服务账号授予权限,您需要以下权限:
resourcemanager.projects.setIamPolicy
如需使用 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
- 表的
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs.
创建连接
创建 Cloud 资源连接并获取连接的服务账号。
从下列选项中选择一项:
控制台
转到 BigQuery 页面。
如需创建连接,请点击
添加,然后点击与外部数据源的连接。在连接类型列表中,选择 Vertex AI 远程模型、远程函数和 BigLake(Cloud 资源)。
在连接 ID 字段中,输入连接的名称。
点击创建连接。
点击转到连接。
在连接信息窗格中,复制服务账号 ID 以在后续步骤中使用。
bq
在命令行环境中,创建连接:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
参数会替换默认项目。替换以下内容:
REGION
:您的连接区域PROJECT_ID
:您的 Google Cloud 项目 IDCONNECTION_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"}
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 {} }
CONNECTION_ID
:您的连接的 IDPROJECT_ID
:您的 Google Cloud 项目 IDREGION
:您的连接区域
向服务账号授予访问权限
从下列选项中选择一项:
控制台
前往 IAM 和管理页面。
点击
Add。系统随即会打开添加主账号对话框。
在新的主账号字段中,输入您之前复制的服务账号 ID。
在选择角色字段中,选择 Service Usage,然后选择 Service Usage Consumer。
点击添加其他角色。
在选择角色字段中,选择 BigQuery,然后选择 BigQuery Connection User。
点击保存。
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_V1
这一 REMOTE_SERVICE_TYPE
创建远程模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION PROJECT_ID.REGION.CONNECTION_ID OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_NATURAL_LANGUAGE_V1');
替换以下内容:
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
。
理解文本
使用 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) );
替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含该模型的数据集的 ID。MODEL_NAME
:模型的名称。TABLE_NAME
:表的名称,该表名为text_content
的列中包含要分析的文本。如果文本位于其他名称的列中,请指定text_content
作为该列的别名。QUERY
:包含名为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 预训练模型进行非结构化数据分析笔记本。