Cargando…
No se encontraron resultados.

Aplica tus habilidades en la consola de Google Cloud

Smart Analytics, Machine Learning, and AI on Google Cloud - Español

Obtén acceso a más de 700 labs y cursos

Cómo usar la API de Natural Language para clasificar texto no estructurado

Lab 1 hora universal_currency_alt 5 créditos show_chart Avanzado
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Resumen

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, nos enfocaremos en la clasificación de texto. 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 periodísticos

Qué necesitarás

  • Un proyecto de Google Cloud Platform
  • Un navegador, como Chrome o Firefox

Configuración y requisitos

Configuración del lab

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Activa Google Cloud Shell

Google 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.

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Tarea 1: Confirma que la API de Cloud Natural Language esté habilitada

  1. Haz clic en el ícono del 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.

  3. Haz clic en + HABILITAR LAS APIS Y LOS SERVICIOS.

  4. Luego, busca language en el cuadro de búsqueda. Haz clic en API de Cloud Natural Language.

  5. Si la API no está habilitada, verás el botón HABILITAR. Haz clic en HABILITAR para habilitarla:

Cuando la API esté habilitada, verás el botón ADMINISTRAR en la tarjeta API de Cloud Natural Language.

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 generada. Haz clic en CERRAR.

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

  1. En Cloud Shell, ejecuta lo siguiente. Asegúrate de reemplazar <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 muestra 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 guía de categorías de contenido, se puede encontrar una lista completa de más de 700 posibles categorías.

Comenzaremos por clasificar un solo artículo y veremos cómo podemos usar este método en el análisis de un corpus periodístico más amplio. Tomemos el título y la descripción de un artículo del New York Times en la sección de gastronomía:

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. En tu entorno de Cloud Shell, crea un archivo request.json con el siguiente código. Puedes crear el archivo a través de tu editor de línea de comandos preferido (nano, vim, emacs) o usar el editor de código de Cloud Shell:

Botón Abrir editor de Cloud Shell

  1. Crea un nuevo archivo llamado request.json y agrega lo siguiente:
{ "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." } }
  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:

Resultado:

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

La API mostró 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 trate 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 realmente ver el poder de esta función, clasifiquemos 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 ayudarnos 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 Google 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:

    gcloud storage cat gs://cloud-training-demos-text/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 los datos de texto categorizados

Antes de enviar el texto a la API de Natural Language, necesitas un lugar para almacenar el texto y la categoría de cada artículo.

  1. En la consola de Google Cloud, haz clic en el menú de navegación (Ícono del menú de navegación) > BigQuery.

  2. Haz clic en Listo para el aviso de bienvenida cuando inicies BigQuery.

  3. En el panel izquierdo, haz clic en el ícono Ver acciones (Ícono para ver acciones) junto al nombre de tu proyecto y, luego, haz clic en Crear conjunto de datos.

  4. Para ID de conjunto de datos, escribe news_classification_dataset

  5. Haz clic en Crear conjunto de datos.

  6. Haz clic en el ícono Ver acciones junto al nombre de tu conjunto de datos y, luego, en Crear tabla. Usa la siguiente configuración para la tabla nueva:

  • Crear tabla desde: Tabla vacía.
  • Asígnale el nombre article_data.
  • Haz clic en Agregar campo (+) debajo de Esquema y agrega los siguientes 3 campos: article_text con el tipo STRING, category con el tipo STRING y confidence con el tipo FLOAT.
  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.

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

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. En Cloud Shell, exporta el nombre de tu proyecto de Cloud como una variable de entorno. Reemplaza <your_project_name> por el ID del proyecto de GCP que se encuentra en el panel Detalles del lab de este lab:
export PROJECT=<your_project_name>
  1. A continuación, ejecuta los siguientes comandos desde Cloud Shell 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.

Para hacerlo, escribe una secuencia de comandos de Python con el módulo de Python 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í lo siguiente. Reemplaza YOUR_PROJECT por tu ID del proyecto de GCP.
Nota: Deja las comillas simples del valor de ID del proyecto en su lugar. from google.cloud import storage, language_v1, bigquery # Set up our GCS, NL, and BigQuery clients storage_client = storage.Client() nl_client = language_v1.LanguageServiceClient() # TODO: replace YOUR_PROJECT with your project id below bq_client = bigquery.Client(project='YOUR_PROJECT') dataset_ref = bq_client.dataset('news_classification_dataset') dataset = bigquery.Dataset(dataset_ref) table_ref = dataset.table('article_data') # Update this if you used a different table name 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_v1.types.Document( content=article, type_='PLAIN_TEXT' ) ) return response rows_for_bq = [] files = storage_client.bucket('cloud-training-demos-text').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), str(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 tarda aproximadamente dos minutos en completarse, así que analicemos lo que sucede mientras se ejecuta.

Nota: Si recibes un error mientas ejecutas python3 classify-text.py, es posible que Cloud Shell se desconecte. Para solucionarlo, ejecuta los siguientes comandos para exportar tus variables de entorno y, luego, vuelve a ejecutar el comando python3 classify-text.py.

  • export PROJECT= (ID DEL PROYECTO de GCP)
  • export GOOGLE_APPLICATION_CREDENTIALS=key.json

Usamos 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. Iteramos estos archivos, descargamos los artículos como strings y enviamos cada uno a la API de Natural Language en nuestra función classify_text. Cuando la API de Natural Language muestra 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 mostrar más de una categoría para un documento; sin embargo, a los fines de este lab, solo almacenaremos 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:

tabla article_data

  1. Edita los resultados en el cuadro Sin título y agrega un asterisco entre SELECT y FROM:
SELECT * FROM `news_classification_dataset.article_data`
  1. Ahora haz clic en EJECUTAR.

Verás tus datos cuando se complete la consulta. 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 mostró 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 `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:

BQ query results.png

  1. 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 ejecutar la siguiente consulta:
SELECT * FROM `news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"
  1. Para obtener únicamente los artículos en los que la API de Natural Language devolvió una puntuación de confianza superior al 90%, ejecuta la siguiente consulta:
SELECT article_text, category FROM `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

Copyright 2020 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.

Anterior Siguiente

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el 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.
Vista previa