arrow_back

Análisis de opiniones y entidades 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

Análisis de opiniones y entidades con la API de Natural Language

Lab 45 minutos 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

GSP038

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, aprenderás a usar la API de Natural Language para analizar entidades, opiniones y sintaxis.

Qué aprenderás

  • Cómo crear una solicitud a la API de Natural Language y llamar a la API con curl
  • Cómo extraer entidades y ejecutar un análisis de opiniones en texto con la API de Natural Language
  • Cómo realizar un análisis lingüístico de un texto con la API de Natural Language
  • Cómo crear una solicitud a la API de Natural Language en un idioma diferente

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

Tarea 1. Crea una clave de API

Como usarás curl para enviar una solicitud a la API de Natural Language, deberás generar una clave de API para pasar tu URL de solicitud.

  1. Para crear una clave de API, en la consola de Cloud, selecciona el menú de navegación > APIs y servicios > Credenciales.

  2. Haz clic en Crear credenciales y selecciona Clave de API.

  3. Copia la clave de API que se generó y haz clic en Cerrar.

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una clave de API

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

  1. Haz clic en menú de navegación > Compute Engine. Deberías ver la instancia de Linux que se aprovisionó, linux-instance, en la lista Instancias de VM.

  2. Haz clic en el botón SSH. Se te redireccionará a una shell interactiva.

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

export API_KEY=<YOUR_API_KEY>

Tarea 2. Realiza una solicitud de análisis de entidades

El primer método de la API de Natural Language que usarás es analyzeEntities. Con este método, la API puede extraer entidades (como personas, lugares y eventos) del texto. Para probar el análisis de entidades de la API, utiliza la siguiente oración:

Joanne Rowling, quien escribe bajo el seudónimo J. K. Rowling y Robert Galbraith, es una novelista y guionista británica que escribió la saga de fantasía Harry Potter.

Compila tu solicitud a la API de Natural Language en el archivo request.json.

  1. Crea el archivo request.json con nano (un editor de código):
nano request.json
  1. Escribe o pega el siguiente código en request.json:
{ "document":{ "type":"PLAIN_TEXT", "content":"Joanne Rowling, quien escribe bajo el seudónimo J. K. Rowling y Robert Galbraith, es una novelista y guionista británica que escribió la saga de fantasía Harry Potter." }, "encodingType":"UTF8" }
  1. Presiona CTRL + X para salir de nano, Y para guardar el archivo y, luego, INTRO para confirmar.

En la solicitud, se le informa a la API de Natural Language acerca del texto que se está enviando. Los valores de "type" admitidos son PLAIN_TEXT o HTML. En "content", se pasa el texto que enviaremos a la API de Natural Language para el análisis.

Esta API también admite el envío de archivos almacenados en Cloud Storage para el procesamiento de texto. Si quisieras enviar un archivo de Cloud Storage, tendrías que reemplazar content por gcsContentUri y asignarle el valor del URI del archivo de texto en Cloud Storage.

encodingType informa a la API qué tipo de codificación se debe utilizar cuando procesa el texto. La API utilizará esa información para calcular en qué parte de nuestro texto aparecerán entidades específicas.

Haz clic en Revisar mi progreso para verificar el objetivo.

Hacer una solicitud de análisis de entidades

Tarea 3. Llama a la API de Natural Language

  1. Ahora puedes pasar el cuerpo de tu solicitud, junto con la variable de entorno de la clave de API que guardaste anteriormente, a la API de Natural Language con el siguiente comando curl (todo en una sola línea de comandos):
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json
  1. Para verificar la respuesta, ejecuta el siguiente comando:
cat result.json

Tu respuesta debería comenzar de la siguiente manera:

"content": "Joanne Rowling", "beginOffset": 0 }, "type": "PROPER" }, { "text": { "content": "Rowling", "beginOffset": 53 }, "type": "PROPER" }, { "text": { "content": "novelista", "beginOffset": 96 }, "type": "COMMON" }, { "text": { "content": "Robert Galbraith", "beginOffset": 65 }, "type": "PROPER" } ] }, ... ] }

Para cada entidad de la respuesta, obtienes la entidad type, la dirección URL de Wikipedia asociada (si existe), el valor de salience y los índices que indican dónde aparece esta entidad en el texto. La prominencia ("salience") es un número del rango [0,1] que indica la centralidad de la entidad en el texto completo.

La API de Natural Language también puede reconocer la misma entidad mencionada de diferentes maneras. Observa la lista mentions en la respuesta: ​la API puede indicar que "Joanne Rowling", "Rowling", "novelista" y "Robert Galbriath" corresponden a lo mismo.​

Haz clic en Revisar mi progreso para verificar el objetivo.

Verificar la respuesta del análisis de entidades

Tarea 4. Análisis de opiniones con la API de Natural Language

Además de extraer entidades, la API de Natural Language te permite realizar el análisis de opiniones de un bloque de texto. Esta solicitud JSON incluirá los mismos parámetros que la solicitud anterior, pero esta vez se cambiará el texto para incluir opiniones más sólidas.

  1. Utiliza nano para reemplazar el código de request.json por lo siguiente y, si lo deseas, cambia la información de content que aparece a continuación por tu propio texto:
{ "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter es el mejor libro. Creo que todo el mundo debería leerlo." }, "encodingType": "UTF8" }
  1. Presiona CTRL + X para salir de nano, Y para guardar el archivo y, luego, INTRO para confirmar.

  2. Luego, envía la solicitud al extremo analyzeSentiment de la API:

curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

La respuesta debería verse de la siguiente manera:

{ "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "es", "sentences": [ { "text": { "content": "Harry Potter es el mejor libro.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "Creo que todo el mundo debería leerlo.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } Nota: No te alarmes si tus puntuaciones difieren un poco de la salida del ejemplo.

Ten en cuenta que obtienes dos tipos de valores de opiniones: opiniones para el documento completo y opiniones por cada oración. El método de opiniones devuelve dos valores:

  • score: es un número entre -1.0 y 1.0 que indica qué tan positivo o negativo es el enunciado.
  • magnitude: es un número de 0 a infinito que representa el peso de las opiniones expresadas en el enunciado, independientemente de que sea positivo o negativo.

Los bloques de textos más largos con enunciados de mucho peso tienen valores de mayor magnitud. La puntuación de la primera oración es positiva (0.7), mientras que la puntuación de la segunda es neutral (0.1).

Tarea 5. Cómo analizar opiniones sobre entidades

Además de proporcionar detalles de opiniones sobre el documento de texto completo, la API de Natural Language puede desglosar opiniones por entidades en el texto. Utiliza esta oración como ejemplo:

Me gustó el sushi, pero el servicio fue terrible.

En este caso, obtener una puntuación de opiniones para toda la oración, como lo hizo anteriormente, podría no ser tan útil. Si se tratara de una opinión de un restaurante y hubiera cientos de opiniones para el mismo restaurante, querrías saber exactamente qué aspectos les gustaron o no a las personas en sus opiniones. Afortunadamente, la API de Natural Language tiene un método que te permite obtener las opiniones de cada entidad en el texto, que se denomina analyzeEntitySentiment. Veamos cómo funciona.

  1. Utiliza nano para actualizar request.json con la oración de abajo:
{ "document":{ "type":"PLAIN_TEXT", "content":"Me gustó el sushi, pero el servicio fue terrible." }, "encodingType": "UTF8" }
  1. Presiona CTRL + X para salir de nano, Y para guardar el archivo y, luego, INTRO para confirmar.

  2. Luego, llama al extremo analyzeEntitySentiment con el siguiente comando curl:

curl "https://language.googleapis.com/v1/documents:analyzeEntitySentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

En la respuesta, obtendrás dos objetos de entidad: uno para “sushi” y otro para “servicio”. Esta es la respuesta completa de JSON:

{ "entities": [ { "name": "sushi", "type": "CONSUMER_GOOD", "metadata": {}, "salience": 0.51064336, "mentions": [ { "text": { "content": "sushi", "beginOffset": 12 }, "type": "COMMON", "sentiment": { "magnitude": 0, "score": 0 } } ], "sentiment": { "magnitude": 0, "score": 0 } }, { "name": "servicio", "type": "OTHER", "metadata": {}, "salience": 0.48935664, "mentions": [ { "text": { "content": "servicio", "beginOffset": 26 }, "type": "COMMON", "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "language": "es" }

Puedes ver que la puntuación devuelta para “sushi” fue una neutral de 0, mientras que la de “servicio” fue de -0.7. Genial. También puedes observar que se muestran dos objetos de opiniones para cada entidad. Si cualquiera de estos términos se mencionara más de una vez, la API mostraría una puntuación y una magnitud de opiniones diferentes para cada mención, junto con una opinión agregada para la entidad.

Nota: No te alarmes si tus puntuaciones difieren un poco de la salida del ejemplo.

Tarea 6. Cómo analizar la sintaxis y la categoría gramatical

Utiliza el análisis sintáctico, otro método de la API de Natural Language, para investigar más a fondo los detalles lingüísticos del texto. analyzeSyntax extrae información lingüística y divide un texto específico en una serie de oraciones y tokens (en general, límites de palabras) para proporcionar un análisis más detallado de esos tokens. Para cada palabra en el texto, la API te indicará la categoría gramatical (sustantivo, verbo, adjetivo, etc.) y cómo se relaciona con otras palabras en la oración (¿Es el verbo raíz?, ¿es un modificador?).

Inténtalo con una oración simple. Esta solicitud JSON será similar a las anteriores, pero se agrega una clave de atributos. Esto indicará a la API que realice una anotación sintáctica.

  1. Utiliza nano para reemplazar el código de request.json por la siguiente información:
{ "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling es una novelista, guionista y productora de películas británica." }, "encodingType": "UTF8" }
  1. Presiona CTRL + X para salir de nano, Y para guardar el archivo y, luego, INTRO para confirmar.

  2. Luego, llama al método analyzeSyntax de la API:

curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

La respuesta debería mostrar un objeto como el siguiente para cada token de la oración:

{ "text": { "content": "is", "beginOffset": 15 }, "partOfSpeech": { "tag": "VERB", "aspect": "ASPECT_UNKNOWN", "case": "CASE_UNKNOWN", "form": "FORM_UNKNOWN", "gender": "GENDER_UNKNOWN", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "proper": "PROPER_UNKNOWN", "reciprocity": "RECIPROCITY_UNKNOWN", "tense": "PRESENT", "voice": "VOICE_UNKNOWN" }, "dependencyEdge": { "headTokenIndex": 2, "label": "ROOT" }, "lemma": "be" },

Desglosemos la respuesta:

  • partOfSpeech indica que "Joanne" es un sustantivo.
  • dependencyEdge incluye datos que puedes usar para crear un árbol de análisis de dependencia del texto. Fundamentalmente, este es un diagrama que muestra cómo se relacionan las palabras en una oración. Un árbol de análisis de dependencia de la oración anterior debería ser de la siguiente manera:

Árbol de análisis de dependencia

Nota: Puedes crear tus propios árboles de análisis de dependencia en el navegador con la demostración de Natural Language disponible en la Guía de IA de Natural Language.
  • headTokenIndex es el índice del token que contiene un arco que señala a “Joanne”. Piensa en cada token de la oración como una palabra en un array.
  • headTokenIndex de 1 para “Joanne” se refiere a la palabra “Rowling”, a la que está conectada en el árbol. La etiqueta NN (abreviatura de modificador compuesto del sustantivo) describe la función de la palabra en la oración. “Joanne” modifica a “Rowling”, el sujeto de la oración.
  • lemma es la forma canónica de la palabra. Por ejemplo, las palabras ejecutamos, ejecuta, ejecutó y ejecutando pertenecen al lemma ejecutar. El valor de lemma es útil para hacer el seguimiento de los casos en que una palabra está presente en un fragmento de texto grande a lo largo del tiempo.

Tarea 7. Procesamiento de lenguaje natural multilingüe

La API de Natural Language admite otros idiomas distintos del inglés (la lista completa puedes encontrarla en la Guía de idiomas compatibles).

  1. Modifica el código en request.json con una oración en japonés:
{ "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
  1. Presiona CTRL + X para salir de nano, Y para guardar el archivo y, luego, INTRO para confirmar.

Ten en cuenta que no le indicaste a la API en qué idioma está el texto, pero no te preocupes: ya está programada para detectarlo automáticamente.

  1. Luego, envíalo al extremo analyzeEntities:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Obtendrás la siguiente respuesta:

{ "entities": [ { "name": "日本", "type": "LOCATION", "metadata": { "mid": "/m/03_3d", "wikipedia_url": "https://en.wikipedia.org/wiki/Japan" }, "salience": 0.23854347, "mentions": [ { "text": { "content": "日本", "beginOffset": 0 }, "type": "PROPER" } ] }, { "name": "グーグル", "type": "ORGANIZATION", "metadata": { "mid": "/m/045c7b", "wikipedia_url": "https://en.wikipedia.org/wiki/Google" }, "salience": 0.21155767, "mentions": [ { "text": { "content": "グーグル", "beginOffset": 9 }, "type": "PROPER" } ] }, ... ] "language": "ja" }

Las URLs de Wikipedia también dirigen a las páginas de Wikipedia en japonés. ¡Es genial!

¡Felicitaciones!

Aprendiste cómo realizar un análisis de texto con la API de Cloud Natural Language mediante la extracción de entidades, el análisis de opiniones y la creación de anotaciones sintácticas. Aprendiste a realizar lo siguiente:

  • Cómo crear una solicitud a la API de Natural Language y cómo llamar a la API con curl
  • Cómo extraer entidades y ejecutar un análisis de opiniones en texto con la API de Natural Language
  • Cómo realizar un análisis lingüístico de un texto para crear árboles de análisis de dependencia
  • Cómo crear una solicitud en japonés a la API de Natural Language

Finaliza tu Quest

Este lab de autoaprendizaje es parte de las Quests Intro to ML: Language Processing 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 una 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 otras Quests disponibles.

Realiza tu próximo lab

Prueba otro lab sobre las APIs de aprendizaje automático, como Vertex AI Workbench Notebook: Qwik Start o uno de estos:

Próximos pasos

  • Consulta los instructivos de la API de Natural Language en la documentació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: 19 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.