Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

La palabra escrita es algo poderoso. Los antiguos sumerios inventaron el primer lenguaje escrito, y la introducción de la imprenta de Gutenberg permitió que la palabra escrita difundiera el conocimiento y la ilustración por todo el mundo. De hecho, el lenguaje es tan importante para el pensamiento humano que los antropólogos afirman que nuestra capacidad de razonamiento complejo evolucionó al mismo tiempo que desarrollamos el lenguaje. El lenguaje representado en forma de texto capta la mayor parte del pensamiento, los hechos y las acciones humanas, y nuestra vida está cada vez más dominada por él. Nos comunicamos con nuestros colegas por correo electrónico, con nuestros amigos y familiares por mensajería y con otras personas que comparten nuestras pasiones a través de las redes sociales. Los líderes inspiran a enormes poblaciones mediante discursos (y tweets) que se registran como texto, los investigadores más destacados comunican sus hallazgos mediante artículos de investigación publicados, y las empresas comunican su salud mediante informes trimestrales. Incluso este libro utiliza texto para difundir conocimientos. Analizar y comprender el texto nos da la capacidad de adquirir conocimientos y tomar decisiones. La analítica de textos consiste en escribir programas informáticos que puedan analizar grandes cantidades de información disponible en forma de texto. Antes de comprar un producto o visitar un restaurante, leemos las opiniones de los clientes. Una empresa podría utilizar esas mismas reseñas para mejorar su producto o servicio. Una editorial podría analizar los debates en Internet para estimar la demanda de un determinado lenguaje de programación antes de encargar un libro sobre él.

Para un ordenador es mucho más difícil comprender un texto que otros tipos de datos. Aunque existen reglas gramaticales y pautas para formar frases, a menudo no se siguen estrictamente y dependen en gran medida del contexto. Incluso con la gramática correcta, es difícil para una máquina interpretar el texto correctamente. Las palabras que elige una persona al tuitear serían muy distintas de las que utiliza al escribir un correo electrónico para expresar el mismo pensamiento. Se han producido avances recientes en las técnicas estadísticas y los algoritmos de aprendizaje automático que nos permiten superar muchos de estos obstáculos para obtener valor de los datos de texto. Los nuevos modelos son capaces de captar el significado semántico del texto mejor que los enfoques anteriores basados únicamente en las frecuencias de las palabras. Pero también hay muchas tareas empresariales en las que estos modelos sencillos funcionan sorprendentemente bien.

En uno de los proyectos de nuestros clientes, por ejemplo, un fabricante de electrodomésticos pudo comprender los temas clave que afectaban a las compras de los clientes analizando las reseñas de los productos y ajustar su mensaje de marketing para centrarse en estos aspectos. En otro caso, un minorista de comercio electrónico utilizó una red neuronal profunda para clasificar las consultas de los clientes y dirigirlas al departamento correcto para una resolución más rápida. Analizar resúmenes de revistas científicas ha permitido a una empresa de I+D detectar tendencias en nuevos materiales y ajustar su investigación en consecuencia. Una empresa de moda identificó megatópicos en su grupo de clientes echando un vistazo a las publicaciones en las redes sociales. Con este libro hemos intentado trasladar nuestras experiencias de estos y otros muchos proyectos a planos que puedas reutilizar fácilmente en tus propios proyectos.

Enfoque del Libro

Este libro pretende servir de apoyo a los científicos de datos y desarrolladores para que puedan introducirse rápidamente en el ámbito del análisis de textos y el procesamiento del lenguaje natural. Por ello, nos centramos en el desarrollo de soluciones prácticas que puedan servir de modelo en tu trabajo diario. Un modelo, según nuestra definición, es una solución de buenas prácticas para un problema común. Es una plantilla que puedes copiar y adaptar fácilmente para reutilizarla. Para estos modelos utilizamos marcos de Python listos para la producción para el análisis de datos, el procesamiento del lenguaje natural y el aprendizaje automático. No obstante, también presentamos los modelos y algoritmos subyacentes.

No esperamos ningún conocimiento previo en el campo del procesamiento del lenguaje natural, sino que te proporcionamos los conocimientos previos necesarios para que puedas empezar rápidamente. En cada capítulo, explicamos y debatimos distintos enfoques de solución para las tareas respectivas, con sus posibles puntos fuertes y débiles. Así, no sólo adquirirás conocimientos sobre cómo resolver un determinado tipo de problema, sino que también obtendrás un conjunto de planos listos para usar que podrás tomar y adaptar a tus datos y requisitos.

Cada uno de los 13 capítulos de incluye un caso de uso autónomo para un aspecto concreto del análisis de textos (véase la Tabla P-1). Basándonos en un conjunto de datos de ejemplo, desarrollamos y explicamos los planos paso a paso.

Tabla P-1. Resumen de los capítulos
Capítulo Conjunto de datos Bibliotecas

Capítulo 1, Obtención de las primeras percepciones a partir de datos textuales

Iniciarse en la exploración estadística de datos textuales

Debates Generales de la ONU

Pandas, Regex

Capítulo 2, Extraer información textual con las API

Utilizar diferentes módulos de Python para extraer datos de APIs populares

API de GitHub, Twitter y Wikipedia

Peticiones, Tweepy

Capítulo 3, Raspado de sitios web y extracción de datos

Utilizar bibliotecas Python para descargar páginas web y extraer contenidos

Sitio web de Reuters

Peticiones, Beautiful Soup, Readability-lxml, Scrapy

Capítulo 4, Preparación de datos textuales para la estadística y el aprendizaje automático

Introducción a la limpieza de datos y al tratamiento lingüístico

Reddit Selfposts

Regex, spaCy

Capítulo 5, Ingeniería de rasgos y similitud sintáctica

Introducción a las funciones y a la vectorización

1 millón de titulares de ABC News

scikit-learn, NumPy

Capítulo 6, Algoritmos de clasificación de textos. Algoritmos de clasificación de textos

Utilizar algoritmos de aprendizaje automático para clasificar los fallos del software

Informes de errores de las Herramientas de Desarrollo Java

scikit-learn

Capítulo 7, Cómo explicar un clasificador de texto

Explicar los modelos y los resultados de la clasificación

Informes de errores de las Herramientas de Desarrollo Java

scikit-learn, Lime, Anchor, ELI5

Capítulo 8, Métodos no supervisados: Modelización de temas y agrupación

Utilizar métodos no supervisados para obtener una visión imparcial del texto

Debates Generales de la ONU

scikit-learn, Gensim

Capítulo 9, Resumir un texto

Creación de resúmenes breves de artículos de noticias e hilos de foros utilizando enfoques basados en reglas y aprendizaje automático

Artículos de noticias de Reuters, hilos del Foro de viajes

Sumy, scikit-learn

Capítulo 10, Explorar relaciones semánticas con incrustaciones de palabras

Utilizar incrustaciones de palabras para explorar y visualizar similitudes semánticas en un conjunto de datos específico

Reddit Selfposts

Gensim

Capítulo 11, Realizar un Análisis de Sentimiento con Datos de Texto

Identificar el sentimiento del cliente en las reseñas de productos de Amazon

Reseñas de productos en Amazon

Transformadores, scikit-learn, NLTK

Capítulo 12, Construir un grafo de conocimiento

Cómo extraer entidades con nombre y sus relaciones utilizando modelos preentrenados y reglas personalizadas

Noticias de Reuters sobre fusiones y adquisiciones

spaCia

Capítulo 13, Utilizar el análisis de textos en la producción

Implementación y ampliación del modelo de análisis de sentimientos como API en Google Cloud Platform

FastAPI, Docker, conda, Kubernetes, gcloud

La elección de los temas refleja los tipos de problemas más habituales en nuestro trabajo diario de análisis de textos. Las tareas típicas incluyen la adquisición de datos, la exploración estadística de datos y el uso del aprendizaje automático supervisado y no supervisado. Las cuestiones de negocio van desde el análisis de contenido ("¿De qué habla la gente?") hasta la categorización automática de textos .

Requisitos previos

En este libro aprenderás a resolver problemas de análisis de texto de forma eficaz con el ecosistema Python. Explicaremos en detalle todos los conceptos específicos de la analítica de textos y el aprendizaje automático, pero asumiremos que ya tienes conocimientos básicos de Python, incluidas bibliotecas fundamentales como Pandas. También deberías estar familiarizado con los cuadernos Jupyter para poder experimentar con el código mientras lees el libro. Si no es así, consulta los tutoriales en learnpython.org, docs.python.org o DataCamp.

Aunque explicamos las ideas generales de los algoritmos utilizados, no entraremos demasiado en los detalles. Deberías poder seguir los ejemplos y reutilizar el código sin entender completamente las matemáticas que hay detrás. No obstante, es útil tener conocimientos universitarios de álgebra lineal y estadística.

Algunas bibliotecas importantes que debes conocer

Todo proyecto de análisis de datos comienza con la exploración y el procesamiento de datos. La biblioteca de Python más popular de para esas tareas es sin duda Pandas. Ofrece una rica funcionalidad para acceder, transformar, analizar y visualizar datos. Si nunca has trabajado con este framework, te recomendamos que consultes la introducción oficial, 10 minutos a Pandas, o alguno de los otros tutoriales gratuitos disponibles en Internet antes de leer el libro.

Durante años, scikit-learn ha sido el conjunto de herramientas de aprendizaje automático para Python. Implementa una gran variedad de algoritmos de aprendizaje automático supervisado y no supervisado, así como muchas funciones para el preprocesamiento de datos. Utilizamos scikit-learn en varios de los capítulos para transformar texto en vectores numéricos y para la clasificación de textos.

Sin embargo, cuando se trata de modelos neuronales profundos, marcos como PyTorch o TensorFlow son claramente superiores a scikit-learn. En lugar de utilizar esas bibliotecas directamente, utilizamos la biblioteca Transformers de Hugging Face en el Capítulo 11 para el análisis de sentimientos. Desde la publicación de BERT,1 los modelos basados en transformadores superan a los enfoques anteriores en tareas que requieren una comprensión del significado del texto, y la biblioteca Transformers proporciona un fácil acceso a muchos modelos preentrenados.

Nuestra biblioteca favorita para el procesamiento del lenguaje natural es spaCy. Desde su primer lanzamiento en 2016, spaCy goza de una base de usuarios en constante crecimiento. Aunque es de código abierto, está desarrollada principalmente por la empresa Explosion. Dispone de modelos lingüísticos neuronales preentrenados para el etiquetado de partes del discurso, el análisis sintáctico de dependencias y el reconocimiento de entidades con nombre para muchos idiomas. Hemos utilizado la versión 2.3.2 de spaCy para la elaboración de este libro, especialmente para la preparación de datos(Capítulo 4) y la extracción de conocimiento(Capítulo 12). En el momento de la publicación, spaCy 3.0 estará disponible con modelos completamente nuevos basados en transformadores, compatibilidad con modelos personalizados en PyTorch y TensorFlow, y plantillas para definir flujos de trabajo integrales.

Otra biblioteca de PNL que utilizamos es Gensim, mantenida por Radim Řehůřek. Gensim se centra en el análisis semántico y proporciona todo lo necesario para aprender modelos temáticos(Capítulo 8) e incrustaciones de palabras(Capítulo 10).

Hay muchas otras bibliotecas para el procesamiento del lenguaje natural que pueden ser útiles, pero que no se mencionan en el libro o sólo se mencionan brevemente. Entre ellas se incluyen NLTK (abuelo de bibliotecas Python NLP repleto de funciones), TextBlob (fácil de empezar), Stanza y CoreNLP de Stanford, así como Flair (modelos de última generación para tareas avanzadas). Nuestro objetivo no era dar una visión general de todo lo que hay, sino elegir y explicar las bibliotecas que mejor funcionaron en nuestros proyectos.

Libros para leer

Como nos centramos en soluciones prácticas para nuestros casos de uso, puede que quieras consultar algunos libros adicionales para obtener más detalles o sobre temas que no hemos tratado. A continuación encontrarás algunas recomendaciones de libros para leer junto a éste:

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Nota

Este elemento indica un plano.

Utilizar ejemplos de código

El único propósito de un plano es ser copiado. Por ello, proporcionamos todo el código desarrollado en este libro en nuestro repositorio de GitHub.

Para cada capítulo, encontrarás un cuaderno Jupyter ejecutable con el código del libro y posiblemente algunas funciones adicionales o planos que se han omitido. El repositorio también contiene los conjuntos de datos necesarios y alguna información adicional.

La forma más sencilla de ejecutar los cuadernos en es en Google Colab, la plataforma pública en la nube de Google para el aprendizaje automático. Ni siquiera tienes que instalar Python en tu ordenador local; basta con que hagas clic en el enlace Colab del capítulo correspondiente en GitHub (se requiere una cuenta de Google). Sin embargo, también hemos añadido instrucciones para configurar tu propio entorno (virtual) de Python en el repositorio de GitHub. Hemos diseñado los cuadernos Jupyter de forma que puedas ejecutarlos tanto localmente como en Google Colab.

Las bibliotecas, los datos y los sitios web están sujetos a cambios continuos. Por lo tanto, puede ocurrir fácilmente que el código literal del libro no funcione correctamente en el futuro. Para evitarlo, mantendremos actualizado el repositorio. Si descubres algún problema técnico o tienes recomendaciones sobre cómo mejorar el código, no dudes en crear una incidencia en el repositorio o enviarnos un pull request.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico En caso de problemas técnicos, te recomendamos crear una incidencia en el repositorio de GitHub y consultar la página de erratas de O'Reilly para consultar los errores del libro.

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Puedes utilizar nuestro código libremente en tus propios proyectos sin pedir permiso. Especialmente si vuelves a publicar públicamente nuestro código, te agradecemos que lo atribuyas. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Blueprints for Text Analytics Using Python por Jens Albrecht, Sidharth Ramachandran y Christian Winkler (O'Reilly, 2021), 978-1-492-07408-3".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/text-analytics-with-python.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://youtube.com/oreillymedia

Agradecimientos

Escribir un libro es un reto, no sólo para los autores, sino también para sus familias y amigos. Todos esperábamos que nos llevaría mucho tiempo, pero aun así nos sorprendió el tiempo que necesitábamos para desarrollar las historias de cada uno de los capítulos. Como todos trabajamos a jornada completa, el tiempo para discutir, codificar, escribir y reescribir tuvimos que quitárselo a nuestras familias.

Trabajar con O'Reilly ha sido un gran placer para todos nosotros. Desde la propuesta original, durante el tiempo de redacción y en la fase de producción, disfrutamos trabajando con profesionales y nos beneficiamos enormemente de sus consejos y sugerencias. El momento más intenso para nosotros fue la redacción de los capítulos individuales. Durante eso, contamos con el apoyo perfecto de nuestra editora de desarrollo, Amelia Blevins. Sin su ayuda y sus mejoras, el libro se habría quedado estancado en un estado poco legible.

También queremos expresar nuestra gratitud a nuestros revisores, Oliver Zeigermann, Benjamin Bock, Alexander Schneider y Darren Cook. Utilizaron su experiencia y gran parte de su tiempo para hacer excelentes sugerencias y mejoras, y también para encontrar errores en el texto y en los cuadernos.

Como utilizábamos funciones punteras de las bibliotecas, a veces nos encontrábamos con problemas o incompatibilidades. Con spaCy como componente central de nuestro pipeline analítico, trabajar con el equipo súper receptivo de Explosion (Ines Montani, Sofie Van Landeghem y Adriane Boyd) fue un gran placer. Sus comentarios sobre las secciones que cubren spaCy han sido extremadamente útiles. Gracias también a Burton DeWilde, el desarrollador detrás de textacy, por revisar partes del código.

1 Devlin, Jacob, y otros, "BERT: Preentrenamiento de transformadores bidireccionales profundos para la comprensión del lenguaje". 2018. https://arxiv.org/abs/1810.04805.

Get Planos para el análisis de textos con Python now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.