使用 ML.Translate 函数翻译文本
本文档介绍了如何将 ML.TRANSLATE
函数与远程模型搭配使用来翻译 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 Translation 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 Translation 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。
点击添加其他角色。
在选择角色字段中,选择 Cloud Translation,然后选择 Cloud Translation API 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 gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/cloudtranslate.user' --condition=None
替换以下内容:
PROJECT_NUMBER
:您的项目编号。MEMBER
:您之前复制的服务账号 ID。
未能授予权限会导致错误。
创建模型
使用 CLOUD_AI_TRANSLATE_V3
这一 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_TRANSLATE_V3');
替换以下内容:
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.TRANSLATE
函数翻译文本:
SELECT * FROM ML.TRANSLATE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, { TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (QUERY) }, STRUCT('MODE' AS translate_mode, ['LANGUAGE' AS target_language_code]) );
替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含该模型的数据集的 ID。MODEL_NAME
:模型的名称。TABLE_NAME
:包含名为text_content
的列中要翻译文本的表的名称。如果文本位于其他名称的列中,请指定text_content
作为该列的别名。QUERY
:包含名为text_content
的列中要翻译的文本的查询。如果文本位于其他名称的列中,请指定text_content
作为该列的别名。MODE
:支持的翻译模式的名称。LANGUAGE
:支持的语言代码的名称。仅当您使用TRANSLATE_TEXT
翻译模式时才需要此参数。
示例 1
以下示例将表的 text_content
列中的文本翻译为印地语:
SELECT * FROM ML.TRANSLATE( MODEL `mydataset.mytranslatemodel`, TABLE mydataset.mytable, STRUCT('translate_text' AS translate_mode, 'hi' AS target_language_code)) );
示例 2
以下示例检测表的 comment
列中文本的语言:
SELECT * FROM ML.TRANSLATE( MODEL `mydataset.mytranslatemodel`, (SELECT comment AS text_content from mydataset.mytable), STRUCT('detect_language' AS translate_mode) );
后续步骤
试用使用 BigQuery ML 和 Vertex AI 预训练模型进行非结构化数据分析笔记本。