Entiende texto con la función ML.UNDERSTAND_TEXT
En este documento, se describe cómo usar la función ML.UNDERSTAND_TEXT
con un modelo remoto para realizar una función de análisis de texto de lenguaje natural en texto de una tabla estándar de BigQuery.
Para obtener información sobre la inferencia de modelos en BigQuery ML, consulta Descripción general de la inferencia de modelos.
Para obtener información sobre los tipos de modelos compatibles de cada instrucción y función de SQL, y todas las instrucciones y funciones de SQL admitidas en cada tipo de modelo, consulta Recorrido del usuario de extremo a extremo para cada modelo.
Permisos necesarios
Para crear una conexión, necesitas membresía en la siguiente función
roles/bigquery.connectionAdmin
Para otorgar permisos a la cuenta de servicio de la conexión, necesitas el siguiente permiso:
resourcemanager.projects.setIamPolicy
Para crear el modelo con BigQuery AA, necesitas los siguientes permisos:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.tables.getData
en la tablabigquery.models.getData
en el modelobigquery.jobs.create
Antes de comenzar
- 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.
-
Make sure that billing is enabled for your 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Cloud Natural Language API APIs.
Crear una conexión
Crea una conexión de recurso en la nube y obtén la cuenta de servicio de la conexión.
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
Para crear una conexión, haz clic en
Agregar y, luego, en Conexiones a fuentes de datos externas.En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, escribe un nombre para tu conexión.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, crea una conexión:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
El parámetro
--project_id
anula el proyecto predeterminado.Reemplaza lo siguiente:
REGION
: tu región de conexiónPROJECT_ID
: El ID del proyecto de Google Cloud.CONNECTION_ID
: Es un ID para tu conexión.
Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.
Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
El resultado es similar al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Agrega la siguiente sección a tu archivo 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
: Es un ID para tu conexión.PROJECT_ID
: El ID del proyecto de Google Cloud.REGION
: tu región de conexión
Otorga acceso a la cuenta de servicio
Elige una de las opciones siguientes:
Console
Ir a la página IAM y administración
Haga clic en
Agregar.Se abre el cuadro de diálogo Agregar principales.
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Seleccionar una función, selecciona Service Usage y, luego, Consumidor de Service Usage.
Haz clic en Agregar otra función.
En el campo Seleccionar una función, selecciona BigQuery y, luego, Usuario de conexión de BigQuery.
Haz clic en Guardar.
gcloud
Usa el comando 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
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto.MEMBER
: Es el ID de la cuenta de servicio que copiaste antes.
Si no se otorga el permiso, se produce un error.
Crea un modelo
Crea un modelo remoto con un REMOTE_SERVICE_TYPE
de CLOUD_AI_NATURAL_LANGUAGE_V1
:
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');
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.MODEL_NAME
: el nombre del modeloREGION
: Es la región que usa la conexión.CONNECTION_ID
: el ID de conexión, por ejemplo,myconnection
.Cuando ves los detalles de conexión en la consola de Google Cloud, el ID de conexión es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo
projects/myproject/locations/connection_location/connections/myconnection
.
Interpretar texto
Comprende texto con la función 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) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modeloTABLE_NAME
: Es el nombre de la tabla que contiene el texto que se analizará en una columna llamadatext_content
. Si el texto está en una columna con un nombre diferente, especificatext_content
como alias para esa columna.QUERY
: una consulta que contiene el texto que se describirá en una columna llamadatext_content
. Si el texto está en una columna con un nombre diferente, especificatext_content
como alias para esa columna.FEATURE_NAME
: Es el nombre de una función de la API de Natural Language compatible.
Ejemplo 1
En el siguiente ejemplo, se inspecciona el texto en la columna text_content
de la tabla y se identifica la opinión emocional predominante dentro del texto:
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `mydataset.mynlpmodel`, TABLE mydataset.mytable, STRUCT('analyze_sentiment' AS nlu_option) );
Ejemplo 2
En el siguiente ejemplo, se inspecciona el texto en la columna comment
de la tabla y se proporciona información sintáctica sobre él:
SELECT * FROM ML.UNDERSTAND_TEXT( MODEL `mydataset.mynlpmodel`, (SELECT comment AS text_content from mydataset.mytable), STRUCT('analyze_syntax' AS nlu_option) );
¿Qué sigue?
Prueba el notebook Estadísticas de datos no estructurados con BigQuery ML y modelos previamente entrenados de Vertex AI.