arrow_back

Clasifica texto en categorías con la API de Natural Language

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Clasifica texto en categorías con la API de Natural Language

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP063

Labs de autoaprendizaje de Google Cloud

Descripción general

La API de Cloud Natural Language te permite extraer entidades de textos, realizar análisis de opiniones y sintácticos, y clasificar texto en categorías. En este lab, el enfoque es la clasificación de textos. Esta función de la API facilita la clasificación de conjuntos de datos de texto de gran tamaño a través de una base de datos con más de 700 categorías.

Qué aprenderás

  • Cómo crear una solicitud a la API de Natural Language y cómo llamar a la API con curl
  • Cómo usar la función de clasificación de texto de la API de NL
  • Cómo usar la clasificación de texto para entender un conjunto de datos de artículos de noticia

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1. Habilita la API de Cloud Natural Language

  1. Expande el menú de navegación (Ícono del menú de navegación) en la parte superior izquierda de la pantalla.

  2. Selecciona APIs y servicios > APIs y servicios habilitados.

  1. Haz clic en Habilitar APIs y servicios.
  1. Luego, busca language en el cuadro de búsqueda.

  2. Haz clic en API de Cloud Natural Language:

Si la API no está habilitada, verás el botón Habilitar.

  1. Haz clic en Habilitar para habilitarla.

Cuando la API está habilitada, Google Cloud muestra información sobre ella como sigue:

Detalles de la API, que incluye dos botones: “Administrar” y “Probar esta API”, además de la marca de verificación que indica que se habilitó.

Tarea 2. Crea una clave de API

Dado que estás usando curl para enviar una solicitud a la API de Natural Language, tendrás que generar una clave de API para pasar la URL de la solicitud.

  1. En la consola, haz clic en el menú de navegación > APIs y servicios > Credenciales para crear una clave de API.

  2. Luego, haz clic en Crear credenciales.

  3. En el menú desplegable, selecciona Clave de API.

  4. A continuación, copia la clave que acabas de generar y, luego, haz clic en Cerrar.

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una clave de API

Ahora que tienes una clave de API, guárdala como una variable de entorno para no tener que ingresar el valor de esta clave en cada solicitud.

Para realizar los próximos pasos, conéctate a través de SSH a la instancia que se te aprovisionó.

  1. Abre el menú de navegación y selecciona Compute Engine > Instancias de VM. Debes ver una linux-instance aprovisionada.
  1. Haz clic en el botón SSH. Se te redireccionará a una shell interactiva.

  2. En la línea de comandos, reemplaza <YOUR_API_KEY> por la clave que acabas de copiar:

export API_KEY=<YOUR_API_KEY>

Tarea 3: Clasifica un artículo de noticia

Puedes ordenar datos de texto en distintas categorías con una sola llamada a la API mediante el método classifyText de la API de Natural Language. Este método devuelve una lista de categorías de contenido que corresponden a un documento de texto.

La especificidad de la clasificación es variada, desde categorías generales, como /Computers & Electronics, hasta otras muy específicas, como /Computers & Electronics/Programming/Java (Programming Language). En la página de categorías de contenido, se puede encontrar una lista completa de más de 700 posibles categorías.

Comenzarás por clasificar un solo artículo y, luego, verás cómo puedes usar este método para comprender un corpus de noticias de gran tamaño.

  1. Para empezar, toma este titular y esta descripción de un artículo del New York Times en la sección culinaria:

A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes.

  1. Crea un archivo llamado request.json y agrega el código que se encuentra a continuación. Puedes crear el archivo con uno de tus editores de línea de comandos preferidos (nano, vim o emacs).
{ "document":{ "type":"PLAIN_TEXT", "content":"A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes." } } Crear una solicitud para clasificar un artículo de noticia
  1. Ahora, puedes enviar este texto al método classifyText de la API de Natural Language con el siguiente comando curl:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Mira la respuesta:

{ categories: [ { name: '/Food & Drink/Cooking & Recipes', confidence: 0.85 }, { name: '/Food & Drink/Food/Meat & Seafood', confidence: 0.63 } ] }

Creaste una solicitud a la API de Speech y, luego, llamaste a la API de Speech.

  1. Ejecuta el siguiente comando para guardar la respuesta en un archivo result.json:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json Verificar la respuesta del análisis de entidades

La API devolvió 2 categorías para este texto:

  • /Food & Drink/Cooking & Recipes
  • /Food & Drink/Food/Meat & Seafood

El texto no menciona de manera explícita que se trata de una receta ni que incluye mariscos; sin embargo, la API es capaz de categorizarlo. Clasificar un solo artículo es genial; sin embargo, para que realmente veas el poder de esta función, deberás clasificar muchos datos de texto.

Tarea 4. Clasifica un conjunto de datos de texto de gran tamaño

Para ver cómo el método classifyText puede ayudarte a entender un conjunto de datos con mucho texto, usa este conjunto de datos público de artículos de noticias de la BBC. El conjunto de datos consta de 2,225 artículos de cinco áreas temáticas (negocios, entretenimiento, política, deportes y tecnología) publicados entre 2004 y 2005. Hay un subconjunto de estos artículos ubicado en un bucket público de Cloud Storage. Cada uno de estos artículos está en un archivo .txt.

Para examinar los datos y enviarlos a la API de Natural Language, deberás escribir una secuencia de comandos de Python para leer cada archivo de texto desde Cloud Storage, enviarlo al extremo de classifyText y almacenar los resultados en una tabla de BigQuery. BigQuery es la herramienta de almacén de macrodatos de Google Cloud, que te permite almacenar y analizar conjuntos de datos de gran tamaño fácilmente.

  • Si quieres ver el tipo de texto con el que trabajarás, ejecuta el siguiente comando para ver un artículo (gsutil ofrece una interfaz de línea de comandos para Cloud Storage):
gsutil cat gs://spls/gsp063/bbc_dataset/entertainment/001.txt

A continuación, crearás una tabla de BigQuery para tus datos.

Tarea 5. Crea una tabla de BigQuery para datos de texto categorizados

Antes de enviar el texto a la API de Natural Language, necesitas un lugar para almacenarlo junto con su categoría.

  1. Ve al menú de navegación > BigQuery en la consola.

  2. Haz clic en Listo.

  3. Para crear un conjunto de datos, haz clic en el ícono de Ver acciones junto al ID del proyecto y selecciona Crear conjunto de datos:

La opción “Crear conjunto de datos” destacada en el menú Ver acciones.

  1. Asigna el nombre news_classification_dataset al conjunto de datos y, luego, haz clic en Crear conjunto de datos.

  2. Para crear una tabla, haz clic en el ícono Ver acciones junto al elemento news_classification_dataset y selecciona Crear tabla.

  1. Usa la siguiente configuración para la tabla nueva:
  • Crea una tabla desde: Tabla vacía.
  • Asígnale un nombre a tu tabla: article_data.
  1. En Esquema, haz clic en Agregar campo y agrega los siguientes 3 campos:
Nombre del campo Tipo Modo
article_text STRING NULLABLE
category STRING NULLABLE
confidence FLOAT NULLABLE

Una lista de campos en la sección Esquema de la página “Crear tabla”, incluidos los campos article-text, category y confidence.

  1. Haz clic en Crear tabla.

En este momento, la tabla está vacía. En el siguiente paso, leerás los artículos desde Cloud Storage, los enviarás a la API de Natural Language para clasificarlos y almacenarás el resultado en BigQuery.

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear un conjunto de datos y una tabla nuevos para datos de texto categorizados

Tarea 6. Clasifica datos de noticias y almacena el resultado en BigQuery

Para realizar los pasos siguientes, conéctate a Cloud Shell. Si se te solicita, haz clic en Continuar.

Antes de crear una secuencia de comandos para enviar los datos de noticias a la API de Natural Language, tendrás que crear una cuenta de servicio. Esta se usará para autenticar la API de Natural Language y BigQuery desde la secuencia de comandos de Python.

  1. Exporta el ID de tu proyecto como una variable de entorno:
export PROJECT={{{project_0.project_id | Project ID}}}
  1. Ejecuta los siguientes comandos para crear una cuenta de servicio:
gcloud iam service-accounts create my-account --display-name my-account gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/bigquery.admin gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/serviceusage.serviceUsageConsumer gcloud iam service-accounts keys create key.json --iam-account=my-account@$PROJECT.iam.gserviceaccount.com export GOOGLE_APPLICATION_CREDENTIALS=key.json

Ya tienes todo listo para enviar los datos de texto a la API de Natural Language.

  1. Escribe una secuencia de comandos de Python usando el módulo correspondiente para Google Cloud.

Puedes hacer lo mismo con cualquier lenguaje; hay muchas bibliotecas cliente de Cloud.

  1. Crea un archivo llamado classify-text.py y copia allí el siguiente código. Puedes crear un archivo con uno de tus editores de línea de comandos preferidos (nano, vim o emacs).
from google.cloud import storage, language, bigquery # Set up your GCS, NL, and BigQuery clients storage_client = storage.Client() nl_client = language.LanguageServiceClient() bq_client = bigquery.Client(project='{{{project_0.project_id | Project ID}}}') dataset_ref = bq_client.dataset('news_classification_dataset') dataset = bigquery.Dataset(dataset_ref) table_ref = dataset.table('article_data') table = bq_client.get_table(table_ref) # Send article text to the NL API's classifyText method def classify_text(article): response = nl_client.classify_text( document=language.Document( content=article, type_=language.Document.Type.PLAIN_TEXT ) ) return response rows_for_bq = [] files = storage_client.bucket('qwiklabs-test-bucket-gsp063').list_blobs() print("Got article files from GCS, sending them to the NL API (this will take ~2 minutes)...") # Send files to the NL API and save the result to send to BigQuery for file in files: if file.name.endswith('txt'): article_text = file.download_as_bytes() nl_response = classify_text(article_text) if len(nl_response.categories) > 0: rows_for_bq.append((str(article_text), nl_response.categories[0].name, nl_response.categories[0].confidence)) print("Writing NL API article data to BigQuery...") # Write article text + category data to BQ errors = bq_client.insert_rows(table, rows_for_bq) assert errors == []

Ya tienes todo listo para comenzar la clasificación de artículos y su importación a BigQuery.

  1. Ejecuta la siguiente secuencia de comandos:
python3 classify-text.py

La secuencia de comandos demora dos minutos en completarse, por lo que mientras se ejecuta, puedes leer sobre lo que ocurre.

Usas la biblioteca cliente de Python de Google Cloud para acceder a Cloud Storage, la API de Natural Language y BigQuery. Primero, se crea un cliente para cada servicio. Luego, se crean referencias a la tabla de BigQuery. files es una referencia a cada archivo del conjunto de datos de la BBC incluido en el bucket público. Se revisan los archivos, se descargan los artículos como cadenas y, luego, cada uno se envía a la API de Natural Language en la función classify_text. Cuando la API de Natural Language devuelve una categoría, el artículo y los datos de su categoría se guardan en la lista rows_for_bq. Una vez que se completa la clasificación de cada artículo, los datos se insertan en BigQuery con insert_rows().

Nota: La API de Natural Language puede devolver más de una categoría para un documento; sin embargo, para este lab, solo almacenarás la primera categoría para evitar complicaciones.

Cuando se haya terminado de ejecutar la secuencia de comandos, habrá que verificar si los datos del artículo se guardaron en BigQuery.

  1. En BigQuery, navega a la tabla article_data en la pestaña Explorador y haz clic en Consulta > En una pestaña nueva para consultar la tabla:

La opción “En una pestaña nueva” destacada en el menú desplegable Consulta.

  1. Edita los resultados en el cuadro Consulta no guardada y agrega un asterisco entre SELECT y FROM:
SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data`
  1. Ahora haz clic en Ejecutar.

Verás tus datos cuando se complete la consulta.

  1. Desplázate hacia la derecha para ver la columna de categoría.

La columna de categoría tiene el nombre de la primera categoría que la API de Natural Language devolvió para el artículo, mientras que la confianza es un valor entre 0 y 1 que indica el grado de seguridad con el que la API categorizó el artículo correctamente.

Aprenderás cómo realizar consultas más complejas sobre los datos en el siguiente paso.

Tarea 7. Analiza los datos de noticias categorizados en BigQuery

Primero, ve qué categorías fueron las más comunes en el conjunto de datos.

  1. En la consola de BigQuery, haz clic en + Redactar consulta nueva.

  2. Ingresa la siguiente consulta:

SELECT category, COUNT(*) c FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` GROUP BY category ORDER BY c DESC
  1. Ahora haz clic en Ejecutar.

En los resultados de la consulta, deberías ver algo como esto:

Los resultados de la consulta, en la que se enumeran varias categorías, incluidas /News/Politics y /Business & Industrial.

Si quisieras buscar el artículo que se devolvió para una categoría más específica, como /Arts & Entertainment/Music & Audio/Classical Music, podrías escribir la siguiente consulta:

SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"

Otra opción sería obtener únicamente los artículos en los que la API de Natural Language devolvió un puntaje de confianza superior al 90%:

SELECT article_text, category FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE cast(confidence as float64) > 0.9

Para realizar más consultas sobre tus datos, revisa la documentación de BigQuery. BigQuery también se integra en varias herramientas de visualización. Para crear visualizaciones de tus datos de noticias categorizados, consulta la guía de inicio rápido de Data Studio para BigQuery.

¡Felicitaciones!

Aprendiste cómo usar el método de clasificación de texto de la API de Natural Language para clasificar artículos de noticia. Comenzaste por clasificar un artículo y, luego, clasificaste y analizaste un conjunto de datos de noticias de gran tamaño a través de la API de NL con BigQuery.

Temas abordados

  • Cómo crear una solicitud de classifyText para la API de Natural Language y llamar a la API con curl
  • Cómo usar el módulo de Python de Google Cloud para analizar un conjunto de datos de noticias de gran tamaño
  • Cómo importar y analizar datos en BigQuery

Finaliza la Quest

Este lab de autoaprendizaje es parte de las Quests Machine Learning APIs, Data Engineering y Language, Speech, Text, & Translation with Google Cloud APIs. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Predice las compras de visitantes con un modelo de clasificación en BQML o intenta aplicar una de estas sugerencias:

Próximos pasos y más información

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Actualización más reciente del manual: 20 de septiembre de 2023

Prueba más reciente del lab: 13 de octubre de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.